{
  "contractName": "GmpHandler",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "bridgeAddress",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "actual",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expected",
          "type": "uint256"
        }
      ],
      "name": "UnexpectedValue",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MAX_FEE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "_bridgeAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        }
      ],
      "name": "setResource",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "deposit",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "executeProposal",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"}],\"name\":\"UnexpectedValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MAX_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"bridgeAddress\":\"Contract address of previously deployed Bridge.\"}},\"deposit(bytes32,address,bytes)\":{\"params\":{\"data\":\"Structure should be constructed as follows: maxFee:                       uint256  bytes  0                                                                                           -  32 len(executeFuncSignature):    uint16   bytes  32                                                                                          -  34 executeFuncSignature:         bytes    bytes  34                                                                                          -  34 + len(executeFuncSignature) len(executeContractAddress):  uint8    bytes  34 + len(executeFuncSignature)                                                              -  35 + len(executeFuncSignature) executeContractAddress        bytes    bytes  35 + len(executeFuncSignature)                                                              -  35 + len(executeFuncSignature) + len(executeContractAddress) len(executionDataDepositor):  uint8    bytes  35 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) executionDataDepositor:       bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor) executionData:                bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)  -  END executionData is repacked together with executionDataDepositor address for using it in the target contract. If executionData contains dynamic types then it is necessary to keep the offsets correct. executionData should be encoded together with a 32-byte address and then passed as a parameter without that address. If the target function accepts (address depositor, bytes executionData) then a function like the following one can be used: function prepareDepositData(bytes calldata executionData) view external returns (bytes memory) { bytes memory encoded = abi.encode(address(0), executionData); return this.slice(encoded, 32); } function slice(bytes calldata input, uint256 position) pure public returns (bytes memory) { return input[position:]; } After this, the target contract will get the following: executeFuncSignature(address executionDataDepositor, bytes executionData) Another example: if the target function accepts (address depositor, uint[], address) then a function like the following one can be used: function prepareDepositData(uint[] calldata uintArray, address addr) view external returns (bytes memory) { bytes memory encoded = abi.encode(address(0), uintArray, addr); return this.slice(encoded, 32); } After this, the target contract will get the following: executeFuncSignature(address executionDataDepositor, uint[] uintArray, address addr)\",\"depositor\":\"Address of the account making deposit in the Bridge contract.\",\"resourceID\":\"ResourceID used to find address of contract to be used for deposit.\"}},\"executeProposal(bytes32,bytes)\":{\"params\":{\"data\":\"Structure should be constructed as follows: maxFee:                             uint256  bytes  0                                                             -  32 len(executeFuncSignature):          uint16   bytes  32                                                            -  34 executeFuncSignature:               bytes    bytes  34                                                            -  34 + len(executeFuncSignature) len(executeContractAddress):        uint8    bytes  34 + len(executeFuncSignature)                                -  35 + len(executeFuncSignature) executeContractAddress              bytes    bytes  35 + len(executeFuncSignature)                                -  35 + len(executeFuncSignature) + len(executeContractAddress) len(executionDataDepositor):        uint8    bytes  35 + len(executeFuncSignature) + len(executeContractAddress)  -  36 + len(executeFuncSignature) + len(executeContractAddress) executionDataDepositor:             bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor) executionData:                      bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)  -  END executionData is repacked together with executionDataDepositor address for using it in the target contract. If executionData contains dynamic types then it is necessary to keep the offsets correct. executionData should be encoded together with a 32-byte address and then passed as a parameter without that address. If the target function accepts (address depositor, bytes executionData) then a function like the following one can be used: function prepareDepositData(bytes calldata executionData) view external returns (bytes memory) { bytes memory encoded = abi.encode(address(0), executionData); return this.slice(encoded, 32); } function slice(bytes calldata input, uint256 position) pure public returns (bytes memory) { return input[position:]; } After this, the target contract will get the following: executeFuncSignature(address executionDataDepositor, bytes executionData) Another example: if the target function accepts (address depositor, uint[], address) then a function like the following one can be used: function prepareDepositData(uint[] calldata uintArray, address addr) view external returns (bytes memory) { bytes memory encoded = abi.encode(address(0), uintArray, addr); return this.slice(encoded, 32); } After this, the target contract will get the following: executeFuncSignature(address executionDataDepositor, uint[] uintArray, address addr)\",\"resourceID\":\"ResourceID used to find address of contract to be used for deposit.\"}},\"setResource(bytes32,address,bytes)\":{\"params\":{\"args\":\"Additional data to be passed to specified handler.\",\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}}},\"title\":\"Handles generic deposits and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(bytes32,address,bytes)\":{\"notice\":\"A deposit is initiated by making a deposit in the Bridge contract.\"},\"executeProposal(bytes32,bytes)\":{\"notice\":\"Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\"},\"setResource(bytes32,address,bytes)\":{\"notice\":\"Blank function, required in IHandler.\"}},\"notice\":\"This contract is intended to be used with the Bridge contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/handlers/GmpHandler.sol\":\"GmpHandler\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/handlers/GmpHandler.sol\":{\"keccak256\":\"0x8c82c84196166e6618e809f6ae5078227dfdf56192794d92f212071220eae380\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdf804ff7a12cd5e376b3239c6c1088bc3b189617093d72ed8ade55e81b688ad\",\"dweb:/ipfs/Qmb2PLwgXfcgUG4Pa3YgRZDm9Pvo1kStY4Mx5ThKrnZvdy\"]},\"project:/contracts/interfaces/IHandler.sol\":{\"keccak256\":\"0x6ff2c7a2a169c519a9ebd670069c8dc902e09cf9dccd52ce87a110799d3dfd2e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://73eacb1eaa4de346d24fd3174fb21d2b16f1350b9599813f1bb292eecbce806d\",\"dweb:/ipfs/QmTGT3orocKxkJ3wud312TFB4CSVYJeGiTHGZie8vkNKxM\"]},\"project:/contracts/utils/SanityChecks.sol\":{\"keccak256\":\"0xe0a497950a5f1f9e127a5684c6c562e6fb0fa72dcde056b8c6da933e6bf8afc2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://47e5918856c922f1408cd15660d451062820121bd1ef3057d1dccad9f9785241\",\"dweb:/ipfs/QmZUEfFPEtiRKnfAUGhN6HoWCyLLUs9XgJbmqEq7pbABHq\"]}},\"version\":1}",
  "bytecode": "0x60a060405234801561001057600080fd5b50604051610a47380380610a4783398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516109b661009160003960008181606101526105ba01526109b66000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063318c136e1461005c578063b07e54bb146100a0578063bc063e1a146100c0578063e248cff2146100d8578063fa8675b0146100eb575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b36100ae3660046106a7565b610100565b6040516100979190610767565b6100ca620f424081565b604051908152602001610097565b6100b36100e6366004610781565b61030d565b6100fe6100f93660046106a7565b6105a1565b005b6060604c8210156101505760405162461bcd60e51b8152602060048201526015602482015274092dcc6dee4e4cac6e840c8c2e8c240d8cadccee8d605b1b60448201526064015b60405180910390fd5b600080808080808881896101656020836107cd565b935061017492849291906107f3565b61017d9161081d565b955088818961018d6002836107cd565b935061019c92849291906107f3565b6101a59161083b565b60f01c94506101b485826107cd565b90508881896101c46001836107cd565b93506101d392849291906107f3565b6101dc9161086b565b60f81c93506101eb84826107cd565b90508881896101fb6001836107cd565b935061020a92849291906107f3565b6102139161086b565b60f81c925088818961022586836107cd565b92610232939291906107f3565b61023b91610899565b60601c9150620f424086106102925760405162461bcd60e51b815260206004820152601760248201527f7265717565737465642066656520746f6f206c617267650000000000000000006044820152606401610147565b816001600160a01b03168a6001600160a01b0316146102ff5760405162461bcd60e51b815260206004820152602360248201527f696e636f7272656374206465706f7369746f7220696e206465706f736974206460448201526261746160e81b6064820152608401610147565b505050505050949350505050565b60606103176105af565b60008080808080806060818b818c6103306020836107cd565b935061033f92849291906107f3565b6103489161081d565b98508b818c6103586002836107cd565b935061036792849291906107f3565b6103709161083b565b60f01c9750610380886004610629565b508b818c61039261ffff8c16836107cd565b93506103a192849291906107f3565b6103aa916108cc565b96508b818c6103ba6001836107cd565b93506103c992849291906107f3565b6103d29161086b565b60f81c95506103e2866014610629565b508b818c6103f360ff8a16836107cd565b935061040292849291906107f3565b61040b91610899565b60601c94508b818c61041e6001836107cd565b935061042d92849291906107f3565b6104369161086b565b60f81c9350610446846014610629565b508b818c61045760ff8816836107cd565b935061046692849291906107f3565b61046f91610899565b60601c92506104808b82818f6107f3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516001600160a01b038a16602082015295975090948c94500191506104d59050565b60408051601f19818403018152908290526104f5929186906020016108fa565b6040516020818303038152906040529050600080876001600160a01b03168c846040516105229190610941565b60006040518083038160008787f1925050503d8060008114610560576040519150601f19603f3d011682016040523d82523d6000602084013e610565565b606091505b5091509150818160405160200161057d92919061095d565b6040516020818303038152906040529c505050505050505050505050509392505050565b6105a96105af565b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405162461bcd60e51b815260206004820152601e60248201527f73656e646572206d7573742062652062726964676520636f6e747261637400006044820152606401610147565b565b60008183146106555760405163c230690360e01b81526004810184905260248101839052604401610147565b50815b92915050565b60008083601f84011261067057600080fd5b50813567ffffffffffffffff81111561068857600080fd5b6020830191508360208285010111156106a057600080fd5b9250929050565b600080600080606085870312156106bd57600080fd5b8435935060208501356001600160a01b03811681146106db57600080fd5b9250604085013567ffffffffffffffff8111156106f757600080fd5b6107038782880161065e565b95989497509550505050565b60005b8381101561072a578181015183820152602001610712565b838111156105a95750506000910152565b6000815180845261075381602086016020860161070f565b601f01601f19169290920160200192915050565b60208152600061077a602083018461073b565b9392505050565b60008060006040848603121561079657600080fd5b83359250602084013567ffffffffffffffff8111156107b457600080fd5b6107c08682870161065e565b9497909650939450505050565b600082198211156107ee57634e487b7160e01b600052601160045260246000fd5b500190565b6000808585111561080357600080fd5b8386111561081057600080fd5b5050820193919092039150565b8035602083101561065857600019602084900360031b1b1692915050565b6001600160f01b031981358181169160028510156108635780818660020360031b1b83161692505b505092915050565b6001600160f81b031981358181169160018510156108635760019490940360031b84901b1690921692915050565b6bffffffffffffffffffffffff1981358181169160148510156108635760149490940360031b84901b1690921692915050565b6001600160e01b031981358181169160048510156108635760049490940360031b84901b1690921692915050565b6001600160e01b031984168152825160009061091d81600485016020880161070f565b83519083019061093481600484016020880161070f565b0160040195945050505050565b6000825161095381846020870161070f565b9190910192915050565b8215158152604060208201526000610978604083018461073b565b94935050505056fea264697066735822122020de2fe6a3f0f8d01af2b9ee136cabaad5ade3407ed758c0fd056f646c53d42b64736f6c634300080b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063318c136e1461005c578063b07e54bb146100a0578063bc063e1a146100c0578063e248cff2146100d8578063fa8675b0146100eb575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b36100ae3660046106a7565b610100565b6040516100979190610767565b6100ca620f424081565b604051908152602001610097565b6100b36100e6366004610781565b61030d565b6100fe6100f93660046106a7565b6105a1565b005b6060604c8210156101505760405162461bcd60e51b8152602060048201526015602482015274092dcc6dee4e4cac6e840c8c2e8c240d8cadccee8d605b1b60448201526064015b60405180910390fd5b600080808080808881896101656020836107cd565b935061017492849291906107f3565b61017d9161081d565b955088818961018d6002836107cd565b935061019c92849291906107f3565b6101a59161083b565b60f01c94506101b485826107cd565b90508881896101c46001836107cd565b93506101d392849291906107f3565b6101dc9161086b565b60f81c93506101eb84826107cd565b90508881896101fb6001836107cd565b935061020a92849291906107f3565b6102139161086b565b60f81c925088818961022586836107cd565b92610232939291906107f3565b61023b91610899565b60601c9150620f424086106102925760405162461bcd60e51b815260206004820152601760248201527f7265717565737465642066656520746f6f206c617267650000000000000000006044820152606401610147565b816001600160a01b03168a6001600160a01b0316146102ff5760405162461bcd60e51b815260206004820152602360248201527f696e636f7272656374206465706f7369746f7220696e206465706f736974206460448201526261746160e81b6064820152608401610147565b505050505050949350505050565b60606103176105af565b60008080808080806060818b818c6103306020836107cd565b935061033f92849291906107f3565b6103489161081d565b98508b818c6103586002836107cd565b935061036792849291906107f3565b6103709161083b565b60f01c9750610380886004610629565b508b818c61039261ffff8c16836107cd565b93506103a192849291906107f3565b6103aa916108cc565b96508b818c6103ba6001836107cd565b93506103c992849291906107f3565b6103d29161086b565b60f81c95506103e2866014610629565b508b818c6103f360ff8a16836107cd565b935061040292849291906107f3565b61040b91610899565b60601c94508b818c61041e6001836107cd565b935061042d92849291906107f3565b6104369161086b565b60f81c9350610446846014610629565b508b818c61045760ff8816836107cd565b935061046692849291906107f3565b61046f91610899565b60601c92506104808b82818f6107f3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516001600160a01b038a16602082015295975090948c94500191506104d59050565b60408051601f19818403018152908290526104f5929186906020016108fa565b6040516020818303038152906040529050600080876001600160a01b03168c846040516105229190610941565b60006040518083038160008787f1925050503d8060008114610560576040519150601f19603f3d011682016040523d82523d6000602084013e610565565b606091505b5091509150818160405160200161057d92919061095d565b6040516020818303038152906040529c505050505050505050505050509392505050565b6105a96105af565b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405162461bcd60e51b815260206004820152601e60248201527f73656e646572206d7573742062652062726964676520636f6e747261637400006044820152606401610147565b565b60008183146106555760405163c230690360e01b81526004810184905260248101839052604401610147565b50815b92915050565b60008083601f84011261067057600080fd5b50813567ffffffffffffffff81111561068857600080fd5b6020830191508360208285010111156106a057600080fd5b9250929050565b600080600080606085870312156106bd57600080fd5b8435935060208501356001600160a01b03811681146106db57600080fd5b9250604085013567ffffffffffffffff8111156106f757600080fd5b6107038782880161065e565b95989497509550505050565b60005b8381101561072a578181015183820152602001610712565b838111156105a95750506000910152565b6000815180845261075381602086016020860161070f565b601f01601f19169290920160200192915050565b60208152600061077a602083018461073b565b9392505050565b60008060006040848603121561079657600080fd5b83359250602084013567ffffffffffffffff8111156107b457600080fd5b6107c08682870161065e565b9497909650939450505050565b600082198211156107ee57634e487b7160e01b600052601160045260246000fd5b500190565b6000808585111561080357600080fd5b8386111561081057600080fd5b5050820193919092039150565b8035602083101561065857600019602084900360031b1b1692915050565b6001600160f01b031981358181169160028510156108635780818660020360031b1b83161692505b505092915050565b6001600160f81b031981358181169160018510156108635760019490940360031b84901b1690921692915050565b6bffffffffffffffffffffffff1981358181169160148510156108635760149490940360031b84901b1690921692915050565b6001600160e01b031981358181169160048510156108635760049490940360031b84901b1690921692915050565b6001600160e01b031984168152825160009061091d81600485016020880161070f565b83519083019061093481600484016020880161070f565b0160040195945050505050565b6000825161095381846020870161070f565b9190910192915050565b8215158152604060208201526000610978604083018461073b565b94935050505056fea264697066735822122020de2fe6a3f0f8d01af2b9ee136cabaad5ade3407ed758c0fd056f646c53d42b64736f6c634300080b0033",
  "immutableReferences": {
    "15184": [
      {
        "length": 32,
        "start": 97
      },
      {
        "length": 32,
        "start": 1466
      }
    ]
  },
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:306:105",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:105",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "95:209:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "141:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "150:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "153:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "143:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "143:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "143:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "116:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "125:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "112:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "112:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "137:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "108:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "108:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "105:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "166:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "185:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "179:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "179:16:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "170:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "258:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "267:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "270:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "260:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "260:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "260:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "217:5:105"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "228:5:105"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "243:3:105",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "248:1:105",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "239:3:105"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "239:11:105"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "252:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "235:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "235:19:105"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "224:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "224:31:105"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "214:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "214:42:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "207:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "207:50:105"
                  },
                  "nodeType": "YulIf",
                  "src": "204:70:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "283:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "293:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "283:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "61:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "72:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "84:6:105",
                "type": ""
              }
            ],
            "src": "14:290:105"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
      "id": 105,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:7645:105",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:105",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "115:102:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "125:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "137:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "148:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "133:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "133:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "125:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "167:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "182:6:105"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "198:3:105",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "203:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "194:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "194:11:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "207:1:105",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "190:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "190:19:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "178:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "178:32:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "160:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "160:51:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "160:51:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "84:9:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "95:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "106:4:105",
                "type": ""
              }
            ],
            "src": "14:203:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "294:275:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "343:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "352:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "355:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "345:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "345:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "345:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "322:6:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "330:4:105",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "318:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "318:17:105"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "337:3:105"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "314:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "314:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "307:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "307:35:105"
                  },
                  "nodeType": "YulIf",
                  "src": "304:55:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "368:30:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "391:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "378:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "378:20:105"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "368:6:105"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "441:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "450:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "453:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "443:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "443:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "443:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "413:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "421:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "410:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "410:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "407:50:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "466:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "482:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "490:4:105",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "478:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "478:17:105"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "466:8:105"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "547:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "556:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "559:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "549:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "549:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "549:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "518:6:105"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "526:6:105"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "514:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "514:19:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "535:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "510:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "510:30:105"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "542:3:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "507:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "507:39:105"
                  },
                  "nodeType": "YulIf",
                  "src": "504:59:105"
                }
              ]
            },
            "name": "abi_decode_bytes_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "257:6:105",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "265:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "273:8:105",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "283:6:105",
                "type": ""
              }
            ],
            "src": "222:347:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "697:528:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "743:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "752:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "755:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "745:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "745:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "745:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "718:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "727:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "714:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "714:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "739:2:105",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "710:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "710:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "707:52:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "768:33:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "791:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "778:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "778:23:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "768:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "810:45:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "840:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "851:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "836:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "836:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "823:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "823:32:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "814:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "918:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "927:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "930:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "920:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "920:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "920:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "877:5:105"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "888:5:105"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "903:3:105",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "908:1:105",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "899:3:105"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "899:11:105"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "912:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "895:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "895:19:105"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "884:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "884:31:105"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "874:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "874:42:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "867:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "867:50:105"
                  },
                  "nodeType": "YulIf",
                  "src": "864:70:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "943:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "953:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "943:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "967:46:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "998:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1009:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "994:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "994:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "981:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "981:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "971:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1056:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1065:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1068:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1058:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1058:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1058:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1028:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1036:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1025:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1025:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "1022:50:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1081:84:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1137:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1148:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1133:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1133:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "1157:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "1107:25:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1107:58:105"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "1085:8:105",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "1095:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1174:18:105",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "1184:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "1174:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1201:18:105",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "1211:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "1201:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_addresst_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "639:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "650:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "662:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "670:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "678:6:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "686:6:105",
                "type": ""
              }
            ],
            "src": "574:651:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1283:205:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1293:10:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "1302:1:105",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "1297:1:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1362:63:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1387:3:105"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "1392:1:105"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1383:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1383:11:105"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "1406:3:105"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "1411:1:105"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1402:3:105"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1402:11:105"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "1396:5:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1396:18:105"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1376:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1376:39:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1376:39:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "1323:1:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1326:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "1320:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1320:13:105"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "1334:19:105",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1336:15:105",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "1345:1:105"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1348:2:105",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1341:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1341:10:105"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "1336:1:105"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "1316:3:105",
                    "statements": []
                  },
                  "src": "1312:113:105"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1451:31:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1464:3:105"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1469:6:105"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1460:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1460:16:105"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1478:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1453:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1453:27:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1453:27:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "1440:1:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1443:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1437:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1437:13:105"
                  },
                  "nodeType": "YulIf",
                  "src": "1434:48:105"
                }
              ]
            },
            "name": "copy_memory_to_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "1261:3:105",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "1266:3:105",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1271:6:105",
                "type": ""
              }
            ],
            "src": "1230:258:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1542:208:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1552:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1572:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1566:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1566:12:105"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "1556:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "1594:3:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1599:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1587:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1587:19:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1587:19:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1641:5:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1648:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1637:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1637:16:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "1659:3:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1664:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1655:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1655:14:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1671:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "1615:21:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1615:63:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1615:63:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1687:57:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "1702:3:105"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1715:6:105"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1723:2:105",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1711:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1711:15:105"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1732:2:105",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1728:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1728:7:105"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1707:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1707:29:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1698:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1698:39:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1739:4:105",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1694:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1694:50:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "1687:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1519:5:105",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "1526:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1534:3:105",
                "type": ""
              }
            ],
            "src": "1493:257:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1874:98:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1891:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1902:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1884:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1884:21:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1884:21:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1914:52:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "1939:6:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1951:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1962:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1947:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1947:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "1922:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1922:44:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1914:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1843:9:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1854:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1865:4:105",
                "type": ""
              }
            ],
            "src": "1755:217:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2078:76:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2088:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2100:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2111:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2096:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2096:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "2088:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2130:9:105"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "2141:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2123:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2123:25:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2123:25:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2047:9:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2058:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "2069:4:105",
                "type": ""
              }
            ],
            "src": "1977:177:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2265:371:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2311:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2320:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2323:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2313:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2313:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2313:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2286:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2295:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2282:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2282:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2307:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2278:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2278:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "2275:52:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2336:33:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2359:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2346:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2346:23:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2336:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2378:46:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2409:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2420:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2405:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2405:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2392:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2392:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2382:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2467:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2476:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2479:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2469:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2469:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2469:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2439:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2447:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2436:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2436:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "2433:50:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2492:84:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2548:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2559:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2544:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2544:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "2568:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "2518:25:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2518:58:105"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "2496:8:105",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "2506:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2585:18:105",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "2595:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2585:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2612:18:105",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "2622:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "2612:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2215:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2226:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2238:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2246:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2254:6:105",
                "type": ""
              }
            ],
            "src": "2159:477:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2815:171:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2832:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2843:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2825:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2825:21:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2825:21:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2866:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2877:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2862:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2862:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2882:2:105",
                        "type": "",
                        "value": "21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2855:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2855:30:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2855:30:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2905:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2916:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2901:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2901:18:105"
                      },
                      {
                        "hexValue": "496e636f72726563742064617461206c656e677468",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "2921:23:105",
                        "type": "",
                        "value": "Incorrect data length"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2894:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2894:51:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2894:51:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2954:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2966:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2977:2:105",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2962:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2962:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "2954:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_57915cfdce341f25dca73e4d221a5e2660b449f080238bbc6c61184d87f3c64a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2792:9:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "2806:4:105",
                "type": ""
              }
            ],
            "src": "2641:345:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3039:177:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3074:111:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3095:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3102:3:105",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3107:10:105",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "3098:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3098:20:105"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "3088:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3088:31:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3088:31:105"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3139:1:105",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3142:4:105",
                              "type": "",
                              "value": "0x11"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "3132:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3132:15:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3132:15:105"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3167:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3170:4:105",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3160:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3160:15:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3160:15:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "3055:1:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "y",
                            "nodeType": "YulIdentifier",
                            "src": "3062:1:105"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "3058:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3058:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3052:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3052:13:105"
                  },
                  "nodeType": "YulIf",
                  "src": "3049:136:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3194:16:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "3205:1:105"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "3208:1:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3201:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3201:9:105"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nodeType": "YulIdentifier",
                      "src": "3194:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "3022:1:105",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "3025:1:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nodeType": "YulTypedName",
                "src": "3031:3:105",
                "type": ""
              }
            ],
            "src": "2991:225:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3351:201:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3389:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3398:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3401:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3391:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3391:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3391:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "startIndex",
                        "nodeType": "YulIdentifier",
                        "src": "3367:10:105"
                      },
                      {
                        "name": "endIndex",
                        "nodeType": "YulIdentifier",
                        "src": "3379:8:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3364:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3364:24:105"
                  },
                  "nodeType": "YulIf",
                  "src": "3361:44:105"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3438:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3447:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3450:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3440:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3440:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3440:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "endIndex",
                        "nodeType": "YulIdentifier",
                        "src": "3420:8:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3430:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3417:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3417:20:105"
                  },
                  "nodeType": "YulIf",
                  "src": "3414:40:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3463:36:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3480:6:105"
                      },
                      {
                        "name": "startIndex",
                        "nodeType": "YulIdentifier",
                        "src": "3488:10:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3476:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3476:23:105"
                  },
                  "variableNames": [
                    {
                      "name": "offsetOut",
                      "nodeType": "YulIdentifier",
                      "src": "3463:9:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3508:38:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "endIndex",
                        "nodeType": "YulIdentifier",
                        "src": "3525:8:105"
                      },
                      {
                        "name": "startIndex",
                        "nodeType": "YulIdentifier",
                        "src": "3535:10:105"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "3521:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3521:25:105"
                  },
                  "variableNames": [
                    {
                      "name": "lengthOut",
                      "nodeType": "YulIdentifier",
                      "src": "3508:9:105"
                    }
                  ]
                }
              ]
            },
            "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "3285:6:105",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "3293:6:105",
                "type": ""
              },
              {
                "name": "startIndex",
                "nodeType": "YulTypedName",
                "src": "3301:10:105",
                "type": ""
              },
              {
                "name": "endIndex",
                "nodeType": "YulTypedName",
                "src": "3313:8:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "offsetOut",
                "nodeType": "YulTypedName",
                "src": "3326:9:105",
                "type": ""
              },
              {
                "name": "lengthOut",
                "nodeType": "YulTypedName",
                "src": "3337:9:105",
                "type": ""
              }
            ],
            "src": "3221:331:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3658:154:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3668:28:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "3690:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3677:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3677:19:105"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "3668:5:105"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3728:78:105",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "3742:54:105",
                        "value": {
                          "arguments": [
                            {
                              "name": "value",
                              "nodeType": "YulIdentifier",
                              "src": "3755:5:105"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "3770:1:105",
                                      "type": "",
                                      "value": "3"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3777:2:105",
                                          "type": "",
                                          "value": "32"
                                        },
                                        {
                                          "name": "len",
                                          "nodeType": "YulIdentifier",
                                          "src": "3781:3:105"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sub",
                                        "nodeType": "YulIdentifier",
                                        "src": "3773:3:105"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3773:12:105"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "shl",
                                    "nodeType": "YulIdentifier",
                                    "src": "3766:3:105"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "3766:20:105"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "3792:1:105",
                                      "type": "",
                                      "value": "0"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "3788:3:105"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "3788:6:105"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "3762:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3762:33:105"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "3751:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3751:45:105"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "3742:5:105"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "3711:3:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3716:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "3708:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3708:11:105"
                  },
                  "nodeType": "YulIf",
                  "src": "3705:101:105"
                }
              ]
            },
            "name": "convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "3633:5:105",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "3640:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "3648:5:105",
                "type": ""
              }
            ],
            "src": "3557:255:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3917:218:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3927:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "3950:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3937:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3937:19:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3931:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3965:25:105",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3979:3:105",
                        "type": "",
                        "value": "240"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3984:5:105",
                        "type": "",
                        "value": "65535"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nodeType": "YulIdentifier",
                      "src": "3975:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3975:15:105"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "3969:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3999:20:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4012:2:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "4016:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "4008:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4008:11:105"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "3999:5:105"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4050:79:105",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "4064:55:105",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4081:2:105"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4093:1:105",
                                          "type": "",
                                          "value": "3"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4100:1:105",
                                              "type": "",
                                              "value": "2"
                                            },
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "4103:3:105"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "4096:3:105"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4096:11:105"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "4089:3:105"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4089:19:105"
                                    },
                                    {
                                      "name": "_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "4110:2:105"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "shl",
                                    "nodeType": "YulIdentifier",
                                    "src": "4085:3:105"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "4085:28:105"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "4077:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4077:37:105"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "4116:2:105"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "4073:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4073:46:105"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "4064:5:105"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "4034:3:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4039:1:105",
                        "type": "",
                        "value": "2"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "4031:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4031:10:105"
                  },
                  "nodeType": "YulIf",
                  "src": "4028:101:105"
                }
              ]
            },
            "name": "convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes2",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "3892:5:105",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "3899:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "3907:5:105",
                "type": ""
              }
            ],
            "src": "3817:318:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4240:216:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4250:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "4273:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4260:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4260:19:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "4254:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4288:23:105",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4302:3:105",
                        "type": "",
                        "value": "248"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4307:3:105",
                        "type": "",
                        "value": "255"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nodeType": "YulIdentifier",
                      "src": "4298:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4298:13:105"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "4292:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4320:20:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4333:2:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "4337:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "4329:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4329:11:105"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "4320:5:105"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4371:79:105",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "4385:55:105",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4402:2:105"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4414:1:105",
                                          "type": "",
                                          "value": "3"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4421:1:105",
                                              "type": "",
                                              "value": "1"
                                            },
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "4424:3:105"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "4417:3:105"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4417:11:105"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "4410:3:105"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4410:19:105"
                                    },
                                    {
                                      "name": "_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "4431:2:105"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "shl",
                                    "nodeType": "YulIdentifier",
                                    "src": "4406:3:105"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "4406:28:105"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "4398:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4398:37:105"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "4437:2:105"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "4394:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4394:46:105"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "4385:5:105"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "4355:3:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4360:1:105",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "4352:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4352:10:105"
                  },
                  "nodeType": "YulIf",
                  "src": "4349:101:105"
                }
              ]
            },
            "name": "convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "4215:5:105",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "4222:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "4230:5:105",
                "type": ""
              }
            ],
            "src": "4140:316:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4562:236:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4572:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "4595:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4582:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4582:19:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "4576:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4610:41:105",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4624:26:105",
                        "type": "",
                        "value": "0xffffffffffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "4620:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4620:31:105"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "4614:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4660:20:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4673:2:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "4677:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "4669:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4669:11:105"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "4660:5:105"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4712:80:105",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "4726:56:105",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4743:2:105"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4755:1:105",
                                          "type": "",
                                          "value": "3"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4762:2:105",
                                              "type": "",
                                              "value": "20"
                                            },
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "4766:3:105"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "4758:3:105"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4758:12:105"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "4751:3:105"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4751:20:105"
                                    },
                                    {
                                      "name": "_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "4773:2:105"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "shl",
                                    "nodeType": "YulIdentifier",
                                    "src": "4747:3:105"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "4747:29:105"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "4739:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4739:38:105"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "4779:2:105"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "4735:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4735:47:105"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "4726:5:105"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "4695:3:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4700:2:105",
                        "type": "",
                        "value": "20"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "4692:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4692:11:105"
                  },
                  "nodeType": "YulIf",
                  "src": "4689:103:105"
                }
              ]
            },
            "name": "convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes20",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "4537:5:105",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "4544:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "4552:5:105",
                "type": ""
              }
            ],
            "src": "4461:337:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4977:173:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4994:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5005:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4987:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4987:21:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4987:21:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5028:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5039:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5024:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5024:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5044:2:105",
                        "type": "",
                        "value": "23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5017:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5017:30:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5017:30:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5067:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5078:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5063:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5063:18:105"
                      },
                      {
                        "hexValue": "7265717565737465642066656520746f6f206c61726765",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "5083:25:105",
                        "type": "",
                        "value": "requested fee too large"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5056:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5056:53:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5056:53:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5118:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5130:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5141:2:105",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5126:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5126:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5118:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_48eea2e7835f01385fb99f401d0993f0b384de82e2d0099c16d455a9a9c00b9d__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4954:9:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4968:4:105",
                "type": ""
              }
            ],
            "src": "4803:347:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5329:225:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5346:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5357:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5339:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5339:21:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5339:21:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5380:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5391:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5376:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5376:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5396:2:105",
                        "type": "",
                        "value": "35"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5369:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5369:30:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5369:30:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5419:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5430:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5415:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5415:18:105"
                      },
                      {
                        "hexValue": "696e636f7272656374206465706f7369746f7220696e206465706f7369742064",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "5435:34:105",
                        "type": "",
                        "value": "incorrect depositor in deposit d"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5408:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5408:62:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5408:62:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5490:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5501:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5486:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5486:18:105"
                      },
                      {
                        "hexValue": "617461",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "5506:5:105",
                        "type": "",
                        "value": "ata"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5479:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5479:33:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5479:33:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5521:27:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5533:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5544:3:105",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5529:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5529:19:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5521:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_dec96eeeb75c48ba1a9ba063e01f0196332652b091015273e0adeff7ae747a04__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5306:9:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5320:4:105",
                "type": ""
              }
            ],
            "src": "5155:399:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5659:223:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5669:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "5692:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5679:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5679:19:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5673:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5707:30:105",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5721:3:105",
                        "type": "",
                        "value": "224"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5726:10:105",
                        "type": "",
                        "value": "0xffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nodeType": "YulIdentifier",
                      "src": "5717:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5717:20:105"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "5711:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5746:20:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5759:2:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "5763:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "5755:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5755:11:105"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "5746:5:105"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5797:79:105",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "5811:55:105",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5828:2:105"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5840:1:105",
                                          "type": "",
                                          "value": "3"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5847:1:105",
                                              "type": "",
                                              "value": "4"
                                            },
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "5850:3:105"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "5843:3:105"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5843:11:105"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "5836:3:105"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5836:19:105"
                                    },
                                    {
                                      "name": "_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "5857:2:105"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "shl",
                                    "nodeType": "YulIdentifier",
                                    "src": "5832:3:105"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "5832:28:105"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "5824:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5824:37:105"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "5863:2:105"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "5820:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5820:46:105"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "5811:5:105"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "5781:3:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5786:1:105",
                        "type": "",
                        "value": "4"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "5778:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5778:10:105"
                  },
                  "nodeType": "YulIf",
                  "src": "5775:101:105"
                }
              ]
            },
            "name": "convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "5634:5:105",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "5641:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5649:5:105",
                "type": ""
              }
            ],
            "src": "5559:323:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6096:353:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "6113:3:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "6122:6:105"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6134:3:105",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6139:10:105",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "6130:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6130:20:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "6118:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6118:33:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6106:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6106:46:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6106:46:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6161:27:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "6181:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "6175:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6175:13:105"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "6165:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "6223:6:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6231:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6219:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6219:17:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "6242:3:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6247:1:105",
                            "type": "",
                            "value": "4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6238:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6238:11:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "6251:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "6197:21:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6197:61:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6197:61:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6267:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "6281:3:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "6286:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6277:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6277:16:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "6271:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6302:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "6324:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "6318:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6318:13:105"
                  },
                  "variables": [
                    {
                      "name": "length_1",
                      "nodeType": "YulTypedName",
                      "src": "6306:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nodeType": "YulIdentifier",
                            "src": "6366:6:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6374:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6362:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6362:17:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "6385:2:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6389:1:105",
                            "type": "",
                            "value": "4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6381:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6381:10:105"
                      },
                      {
                        "name": "length_1",
                        "nodeType": "YulIdentifier",
                        "src": "6393:8:105"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "6340:21:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6340:62:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6340:62:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6411:32:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "6426:2:105"
                          },
                          {
                            "name": "length_1",
                            "nodeType": "YulIdentifier",
                            "src": "6430:8:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6422:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6422:17:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6441:1:105",
                        "type": "",
                        "value": "4"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6418:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6418:25:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "6411:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes4_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes4_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "6056:3:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "6061:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6069:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6077:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "6088:3:105",
                "type": ""
              }
            ],
            "src": "5887:562:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6591:137:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6601:27:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "6621:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "6615:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6615:13:105"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "6605:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "6663:6:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6671:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6659:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6659:17:105"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "6678:3:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "6683:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "6637:21:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6637:53:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6637:53:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6699:23:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "6710:3:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "6715:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6706:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6706:16:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "6699:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "6567:3:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6572:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "6583:3:105",
                "type": ""
              }
            ],
            "src": "6454:274:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6874:157:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6891:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "6916:6:105"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "6909:6:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6909:14:105"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "6902:6:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6902:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6884:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6884:41:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6884:41:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6945:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6956:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6941:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6941:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6961:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6934:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6934:30:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6934:30:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6973:52:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "6998:6:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7010:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7021:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7006:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7006:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "6981:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6981:44:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6973:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool_t_bytes_memory_ptr__to_t_bool_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6835:9:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6846:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6854:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6865:4:105",
                "type": ""
              }
            ],
            "src": "6733:298:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7210:180:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7227:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7238:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7220:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7220:21:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7220:21:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7261:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7272:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7257:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7257:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7277:2:105",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7250:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7250:30:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7250:30:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7300:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7311:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7296:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7296:18:105"
                      },
                      {
                        "hexValue": "73656e646572206d7573742062652062726964676520636f6e7472616374",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7316:32:105",
                        "type": "",
                        "value": "sender must be bridge contract"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7289:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7289:60:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7289:60:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7358:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7370:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7381:2:105",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7366:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7366:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7358:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7187:9:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7201:4:105",
                "type": ""
              }
            ],
            "src": "7036:354:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7524:119:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "7534:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7546:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7557:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7542:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7542:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7534:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7576:9:105"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "7587:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7569:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7569:25:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7569:25:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7614:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7625:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7610:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7610:18:105"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "7630:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7603:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7603:34:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7603:34:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7485:9:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7496:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7504:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7515:4:105",
                "type": ""
              }
            ],
            "src": "7395:248:105"
          }
        ]
      },
      "contents": "{\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_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value1 := value\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_stringliteral_57915cfdce341f25dca73e4d221a5e2660b449f080238bbc6c61184d87f3c64a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"Incorrect data length\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32(array, len) -> value\n    {\n        value := calldataload(array)\n        if lt(len, 32)\n        {\n            value := and(value, shl(shl(3, sub(32, len)), not(0)))\n        }\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes2(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        let _2 := shl(240, 65535)\n        value := and(_1, _2)\n        if lt(len, 2)\n        {\n            value := and(and(_1, shl(shl(3, sub(2, len)), _2)), _2)\n        }\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes1(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        let _2 := shl(248, 255)\n        value := and(_1, _2)\n        if lt(len, 1)\n        {\n            value := and(and(_1, shl(shl(3, sub(1, len)), _2)), _2)\n        }\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes20(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        let _2 := not(0xffffffffffffffffffffffff)\n        value := and(_1, _2)\n        if lt(len, 20)\n        {\n            value := and(and(_1, shl(shl(3, sub(20, len)), _2)), _2)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_48eea2e7835f01385fb99f401d0993f0b384de82e2d0099c16d455a9a9c00b9d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"requested fee too large\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dec96eeeb75c48ba1a9ba063e01f0196332652b091015273e0adeff7ae747a04__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"incorrect depositor in deposit d\")\n        mstore(add(headStart, 96), \"ata\")\n        tail := add(headStart, 128)\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        let _2 := shl(224, 0xffffffff)\n        value := and(_1, _2)\n        if lt(len, 4)\n        {\n            value := and(and(_1, shl(shl(3, sub(4, len)), _2)), _2)\n        }\n    }\n    function abi_encode_tuple_packed_t_bytes4_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes4_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(224, 0xffffffff)))\n        let length := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(pos, 4), length)\n        let _1 := add(pos, length)\n        let length_1 := mload(value2)\n        copy_memory_to_memory(add(value2, 0x20), add(_1, 4), length_1)\n        end := add(add(_1, length_1), 4)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_bool_t_bytes_memory_ptr__to_t_bool_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, iszero(iszero(value0)))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_bytes(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__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), \"sender must be bridge contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n}",
      "id": 105,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "354:10658:78:-:0;;;809:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;877:30:78;;;354:10658;;14:290:105;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:105;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:105:o;:::-;354:10658:78;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "354:10658:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;471:39;;;;;;;;-1:-1:-1;;;;;178:32:105;;;160:51;;148:2;133:18;471:39:78;;;;;;;;4862:1183;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;423:41::-;;457:7;423:41;;;;;2123:25:105;;;2111:2;2096:18;423:41:78;1977:177:105;9328:1682:78;;;;;;:::i;:::-;;:::i;1247:139::-;;;;;;:::i;:::-;;:::i;:::-;;4862:1183;4962:12;5009:2;4994:17;;;4986:51;;;;-1:-1:-1;;;4986:51:78;;2843:2:105;4986:51:78;;;2825:21:105;2882:2;2862:18;;;2855:30;-1:-1:-1;;;2901:18:105;;;2894:51;2962:18;;4986:51:78;;;;;;;;;5076:21;;;;;;5385:4;5076:21;5385:4;5391:13;5402:2;5076:21;5391:13;:::i;:::-;;-1:-1:-1;5385:20:78;;5391:13;;5385:20;;;:::i;:::-;5377:29;;;:::i;:::-;5369:38;-1:-1:-1;5468:4:78;5473:7;5468:4;5481:12;5492:1;5473:7;5481:12;:::i;:::-;;-1:-1:-1;5468:26:78;;5481:12;;5468:26;;;:::i;:::-;5461:34;;;:::i;:::-;5454:42;;;-1:-1:-1;5506:34:78;5454:42;5506:34;;:::i;:::-;;-1:-1:-1;5599:4:78;5506:34;5599:4;5612:12;5623:1;5506:34;5612:12;:::i;:::-;;-1:-1:-1;5599:26:78;;5612:12;;5599:26;;;:::i;:::-;5592:34;;;:::i;:::-;5586:41;;;-1:-1:-1;5637:36:78;5586:41;5637:36;;:::i;:::-;;-1:-1:-1;5732:4:78;5637:36;5732:4;5745:12;5756:1;5637:36;5745:12;:::i;:::-;;-1:-1:-1;5732:26:78;;5745:12;;5732:26;;;:::i;:::-;5725:34;;;:::i;:::-;5719:41;;;-1:-1:-1;5830:4:78;5835:7;5830:4;5843:35;5719:41;5835:7;5843:35;:::i;:::-;5830:49;;;;;;;:::i;:::-;5822:58;;;:::i;:::-;5814:67;;5770:112;;457:7;5901:6;:16;5893:52;;;;-1:-1:-1;;;5893:52:78;;5005:2:105;5893:52:78;;;4987:21:105;5044:2;5024:18;;;5017:30;5083:25;5063:18;;;5056:53;5126:18;;5893:52:78;4803:347:105;5893:52:78;5976:22;-1:-1:-1;;;;;5963:35:78;:9;-1:-1:-1;;;;;5963:35:78;;5955:83;;;;-1:-1:-1;;;5955:83:78;;5357:2:105;5955:83:78;;;5339:21:105;5396:2;5376:18;;;5369:30;5435:34;5415:18;;;5408:62;-1:-1:-1;;;5486:18:105;;;5479:33;5529:19;;5955:83:78;5155:399:105;5955:83:78;4976:1069;;;;;;4862:1183;;;;;;:::o;9328:1682::-;9423:12;549:13;:11;:13::i;:::-;9447:21:::1;::::0;;;;;;9765:28:::1;9447:21:::0;9894:4;9447:21;9894:4;9900:13:::1;9911:2;9447:21:::0;9900:13:::1;:::i;:::-;::::0;-1:-1:-1;9894:20:78::1;::::0;9900:13;;9894:20;;::::1;:::i;:::-;9886:29;::::0;::::1;:::i;:::-;9878:38:::0;-1:-1:-1;9977:4:78;9982:7;9977:4;9990:12:::1;10001:1;9982:7:::0;9990:12:::1;:::i;:::-;::::0;-1:-1:-1;9977:26:78::1;::::0;9990:12;;9977:26;;::::1;:::i;:::-;9970:34;::::0;::::1;:::i;:::-;9963:42;;::::0;-1:-1:-1;10015:33:78::1;9963:42:::0;10046:1:::1;10015:30;:33::i;:::-;-1:-1:-1::0;10101:4:78;10106:7;10101:4;10114:34:::1;;::::0;::::1;10106:7:::0;10114:34:::1;:::i;:::-;::::0;-1:-1:-1;10101:48:78::1;::::0;10114:34;;10101:48;;::::1;:::i;:::-;10094:56;::::0;::::1;:::i;:::-;10058:92:::0;-1:-1:-1;10209:4:78;10214:7;10209:4;10222:12:::1;10233:1;10214:7:::0;10222:12:::1;:::i;:::-;::::0;-1:-1:-1;10209:26:78::1;::::0;10222:12;;10209:26;;::::1;:::i;:::-;10202:34;::::0;::::1;:::i;:::-;10196:41;;::::0;-1:-1:-1;10247:36:78::1;10196:41:::0;10280:2:::1;10247:32;:36::i;:::-;-1:-1:-1::0;10353:4:78;10358:7;10353:4;10366:36:::1;;::::0;::::1;10358:7:::0;10366:36:::1;:::i;:::-;::::0;-1:-1:-1;10353:50:78::1;::::0;10366:36;;10353:50;;::::1;:::i;:::-;10345:59;::::0;::::1;:::i;:::-;10337:68;;::::0;-1:-1:-1;10465:4:78;10470:7;10465:4;10478:12:::1;10489:1;10470:7:::0;10478:12:::1;:::i;:::-;::::0;-1:-1:-1;10465:26:78::1;::::0;10478:12;;10465:26;;::::1;:::i;:::-;10458:34;::::0;::::1;:::i;:::-;10452:41;;::::0;-1:-1:-1;10503:36:78::1;10452:41:::0;10536:2:::1;10503:32;:36::i;:::-;-1:-1:-1::0;10609:4:78;10614:7;10609:4;10622:36:::1;;::::0;::::1;10614:7:::0;10622:36:::1;:::i;:::-;::::0;-1:-1:-1;10609:50:78::1;::::0;10622:36;;10609:50;;::::1;:::i;:::-;10601:59;::::0;::::1;:::i;:::-;10593:68;;::::0;-1:-1:-1;10714:14:78::1;:4:::0;10719:7;10714:4;;:14:::1;:::i;:::-;10672:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;10803:34:78::1;::::0;;-1:-1:-1;;;;;178:32:105;;10803:34:78::1;::::0;::::1;160:51:105::0;10672:57:78;;-1:-1:-1;10672:57:78;;10781:20;;-1:-1:-1;133:18:105;;-1:-1:-1;10803:34:78::1;::::0;-1:-1:-1;14:203:105;10803:34:78::1;;::::0;;-1:-1:-1;;10803:34:78;;::::1;::::0;;;;;;;10764:89:::1;::::0;;10839:13;;10803:34:::1;10764:89;;:::i;:::-;;;;;;;;;;;;;10740:113;;10864:12;10878:23:::0;10905:22:::1;-1:-1:-1::0;;;;;10905:27:78::1;10938:6;10946:8;10905:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10863:92;;;;10983:7;10992:10;10972:31;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10965:38;;;;;;;;;;;;;;9328:1682:::0;;;;;:::o;1247:139::-;549:13;:11;:13::i;:::-;1247:139;;;;:::o;586:124::-;640:10;-1:-1:-1;;;;;654:14:78;640:28;;632:71;;;;-1:-1:-1;;;632:71:78;;7238:2:105;632:71:78;;;7220:21:105;7277:2;7257:18;;;7250:30;7316:32;7296:18;;;7289:60;7366:18;;632:71:78;7036:354:105;632:71:78;586:124::o;459:185:101:-;531:7;564:8;554:6;:18;550:64;;581:33;;-1:-1:-1;;;581:33:101;;;;;7569:25:105;;;7610:18;;;7603:34;;;7542:18;;581:33:101;7395:248:105;550:64:101;-1:-1:-1;631:6:101;459:185;;;;;:::o;222:347:105:-;273:8;283:6;337:3;330:4;322:6;318:17;314:27;304:55;;355:1;352;345:12;304:55;-1:-1:-1;378:20:105;;421:18;410:30;;407:50;;;453:1;450;443:12;407:50;490:4;482:6;478:17;466:29;;542:3;535:4;526:6;518;514:19;510:30;507:39;504:59;;;559:1;556;549:12;504:59;222:347;;;;;:::o;574:651::-;662:6;670;678;686;739:2;727:9;718:7;714:23;710:32;707:52;;;755:1;752;745:12;707:52;778:23;;;-1:-1:-1;851:2:105;836:18;;823:32;-1:-1:-1;;;;;884:31:105;;874:42;;864:70;;930:1;927;920:12;864:70;953:5;-1:-1:-1;1009:2:105;994:18;;981:32;1036:18;1025:30;;1022:50;;;1068:1;1065;1058:12;1022:50;1107:58;1157:7;1148:6;1137:9;1133:22;1107:58;:::i;:::-;574:651;;;;-1:-1:-1;1184:8:105;-1:-1:-1;;;;574:651:105:o;1230:258::-;1302:1;1312:113;1326:6;1323:1;1320:13;1312:113;;;1402:11;;;1396:18;1383:11;;;1376:39;1348:2;1341:10;1312:113;;;1443:6;1440:1;1437:13;1434:48;;;-1:-1:-1;;1478:1:105;1460:16;;1453:27;1230:258::o;1493:257::-;1534:3;1572:5;1566:12;1599:6;1594:3;1587:19;1615:63;1671:6;1664:4;1659:3;1655:14;1648:4;1641:5;1637:16;1615:63;:::i;:::-;1732:2;1711:15;-1:-1:-1;;1707:29:105;1698:39;;;;1739:4;1694:50;;1493:257;-1:-1:-1;;1493:257:105:o;1755:217::-;1902:2;1891:9;1884:21;1865:4;1922:44;1962:2;1951:9;1947:18;1939:6;1922:44;:::i;:::-;1914:52;1755:217;-1:-1:-1;;;1755:217:105:o;2159:477::-;2238:6;2246;2254;2307:2;2295:9;2286:7;2282:23;2278:32;2275:52;;;2323:1;2320;2313:12;2275:52;2359:9;2346:23;2336:33;;2420:2;2409:9;2405:18;2392:32;2447:18;2439:6;2436:30;2433:50;;;2479:1;2476;2469:12;2433:50;2518:58;2568:7;2559:6;2548:9;2544:22;2518:58;:::i;:::-;2159:477;;2595:8;;-1:-1:-1;2492:84:105;;-1:-1:-1;;;;2159:477:105:o;2991:225::-;3031:3;3062:1;3058:6;3055:1;3052:13;3049:136;;;3107:10;3102:3;3098:20;3095:1;3088:31;3142:4;3139:1;3132:15;3170:4;3167:1;3160:15;3049:136;-1:-1:-1;3201:9:105;;2991:225::o;3221:331::-;3326:9;3337;3379:8;3367:10;3364:24;3361:44;;;3401:1;3398;3391:12;3361:44;3430:6;3420:8;3417:20;3414:40;;;3450:1;3447;3440:12;3414:40;-1:-1:-1;;3476:23:105;;;3521:25;;;;;-1:-1:-1;3221:331:105:o;3557:255::-;3677:19;;3716:2;3708:11;;3705:101;;;-1:-1:-1;;3777:2:105;3773:12;;;3770:1;3766:20;3762:33;3751:45;3557:255;;;;:::o;3817:318::-;-1:-1:-1;;;;;;3937:19:105;;4008:11;;;;4039:1;4031:10;;4028:101;;;4116:2;4110;4103:3;4100:1;4096:11;4093:1;4089:19;4085:28;4081:2;4077:37;4073:46;4064:55;;4028:101;;;3817:318;;;;:::o;4140:316::-;-1:-1:-1;;;;;;4260:19:105;;4329:11;;;;4360:1;4352:10;;4349:101;;;4421:1;4417:11;;;;4414:1;4410:19;4406:28;;;4398:37;4394:46;;;;4140:316;-1:-1:-1;;4140:316:105:o;4461:337::-;-1:-1:-1;;4582:19:105;;4669:11;;;;4700:2;4692:11;;4689:103;;;4762:2;4758:12;;;;4755:1;4751:20;4747:29;;;4739:38;4735:47;;;;4461:337;-1:-1:-1;;4461:337:105:o;5559:323::-;-1:-1:-1;;;;;;5679:19:105;;5755:11;;;;5786:1;5778:10;;5775:101;;;5847:1;5843:11;;;;5840:1;5836:19;5832:28;;;5824:37;5820:46;;;;5559:323;-1:-1:-1;;5559:323:105:o;5887:562::-;-1:-1:-1;;;;;;6118:33:105;;6106:46;;6175:13;;6088:3;;6197:61;6175:13;6247:1;6238:11;;6231:4;6219:17;;6197:61;:::i;:::-;6318:13;;6277:16;;;;6340:62;6318:13;6389:1;6381:10;;6374:4;6362:17;;6340:62;:::i;:::-;6422:17;6441:1;6418:25;;5887:562;-1:-1:-1;;;;;5887:562:105:o;6454:274::-;6583:3;6621:6;6615:13;6637:53;6683:6;6678:3;6671:4;6663:6;6659:17;6637:53;:::i;:::-;6706:16;;;;;6454:274;-1:-1:-1;;6454:274:105:o;6733:298::-;6916:6;6909:14;6902:22;6891:9;6884:41;6961:2;6956;6945:9;6941:18;6934:30;6865:4;6981:44;7021:2;7010:9;7006:18;6998:6;6981:44;:::i;:::-;6973:52;6733:298;-1:-1:-1;;;;6733:298:105:o",
  "source": "// The Licensed Work is (c) 2022 Sygma\n// SPDX-License-Identifier: LGPL-3.0-only\npragma solidity 0.8.11;\n\nimport \"../interfaces/IHandler.sol\";\nimport \"../utils/SanityChecks.sol\";\n\n/**\n    @title Handles generic deposits and deposit executions.\n    @author ChainSafe Systems.\n    @notice This contract is intended to be used with the Bridge contract.\n */\ncontract GmpHandler is IHandler {\n    using SanityChecks for *;\n\n    uint256 public constant MAX_FEE = 1000000;\n\n    address public immutable _bridgeAddress;\n\n    modifier onlyBridge() {\n        _onlyBridge();\n        _;\n    }\n\n    function _onlyBridge() private view {\n        require(msg.sender == _bridgeAddress, \"sender must be bridge contract\");\n    }\n\n    /**\n        @param bridgeAddress Contract address of previously deployed Bridge.\n     */\n    constructor(\n        address          bridgeAddress\n    ) {\n        _bridgeAddress = bridgeAddress;\n    }\n\n    /**\n        @notice Blank function, required in IHandler.\n        @param resourceID ResourceID to be used when making deposits.\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n        @param args Additional data to be passed to specified handler.\n     */\n    function setResource(\n        bytes32 resourceID,\n        address contractAddress,\n        bytes calldata args\n    ) external onlyBridge {}\n\n    /**\n        @notice A deposit is initiated by making a deposit in the Bridge contract.\n        @param resourceID ResourceID used to find address of contract to be used for deposit.\n        @param depositor Address of the account making deposit in the Bridge contract.\n        @param data Structure should be constructed as follows:\n          maxFee:                       uint256  bytes  0                                                                                           -  32\n          len(executeFuncSignature):    uint16   bytes  32                                                                                          -  34\n          executeFuncSignature:         bytes    bytes  34                                                                                          -  34 + len(executeFuncSignature)\n          len(executeContractAddress):  uint8    bytes  34 + len(executeFuncSignature)                                                              -  35 + len(executeFuncSignature)\n          executeContractAddress        bytes    bytes  35 + len(executeFuncSignature)                                                              -  35 + len(executeFuncSignature) + len(executeContractAddress)\n          len(executionDataDepositor):  uint8    bytes  35 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress)\n          executionDataDepositor:       bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)\n          executionData:                bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)  -  END\n\n          executionData is repacked together with executionDataDepositor address for using it in the target contract.\n          If executionData contains dynamic types then it is necessary to keep the offsets correct.\n          executionData should be encoded together with a 32-byte address and then passed as a parameter without that address.\n          If the target function accepts (address depositor, bytes executionData)\n          then a function like the following one can be used:\n\n            function prepareDepositData(bytes calldata executionData) view external returns (bytes memory) {\n                bytes memory encoded = abi.encode(address(0), executionData);\n                return this.slice(encoded, 32);\n            }\n\n            function slice(bytes calldata input, uint256 position) pure public returns (bytes memory) {\n                return input[position:];\n            }\n          After this, the target contract will get the following:\n          executeFuncSignature(address executionDataDepositor, bytes executionData)\n\n          Another example: if the target function accepts (address depositor, uint[], address)\n          then a function like the following one can be used:\n\n            function prepareDepositData(uint[] calldata uintArray, address addr) view external returns (bytes memory) {\n                bytes memory encoded = abi.encode(address(0), uintArray, addr);\n                return this.slice(encoded, 32);\n            }\n\n          After this, the target contract will get the following:\n          executeFuncSignature(address executionDataDepositor, uint[] uintArray, address addr)\n     */\n    function deposit(bytes32 resourceID, address depositor, bytes calldata data) external view returns (bytes memory) {\n        require(data.length >= 76, \"Incorrect data length\"); // 32 + 2 + 1 + 1 + 20 + 20\n\n        uint256        maxFee;\n        uint16         lenExecuteFuncSignature;\n        uint8          lenExecuteContractAddress;\n        uint8          lenExecutionDataDepositor;\n        address        executionDataDepositor;\n\n        uint256 pointer = 0;\n\n        maxFee                            = uint256(bytes32(data[:pointer += 32])); \n        lenExecuteFuncSignature           = uint16(bytes2(data[pointer:pointer += 2]));\n        pointer += lenExecuteFuncSignature;\n        lenExecuteContractAddress         = uint8(bytes1(data[pointer:pointer += 1]));\n        pointer += lenExecuteContractAddress;\n        lenExecutionDataDepositor         = uint8(bytes1(data[pointer:pointer += 1]));\n        executionDataDepositor            = address(uint160(bytes20(data[pointer:pointer + lenExecutionDataDepositor])));\n\n        require(maxFee < MAX_FEE, 'requested fee too large');\n        require(depositor == executionDataDepositor, 'incorrect depositor in deposit data');\n    }\n\n    /**\n        @notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n        @param resourceID ResourceID used to find address of contract to be used for deposit.\n        @param data Structure should be constructed as follows:\n          maxFee:                             uint256  bytes  0                                                             -  32\n          len(executeFuncSignature):          uint16   bytes  32                                                            -  34\n          executeFuncSignature:               bytes    bytes  34                                                            -  34 + len(executeFuncSignature)\n          len(executeContractAddress):        uint8    bytes  34 + len(executeFuncSignature)                                -  35 + len(executeFuncSignature)\n          executeContractAddress              bytes    bytes  35 + len(executeFuncSignature)                                -  35 + len(executeFuncSignature) + len(executeContractAddress)\n          len(executionDataDepositor):        uint8    bytes  35 + len(executeFuncSignature) + len(executeContractAddress)  -  36 + len(executeFuncSignature) + len(executeContractAddress)\n          executionDataDepositor:             bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)\n          executionData:                      bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)  -  END\n\n          executionData is repacked together with executionDataDepositor address for using it in the target contract.\n          If executionData contains dynamic types then it is necessary to keep the offsets correct.\n          executionData should be encoded together with a 32-byte address and then passed as a parameter without that address.\n          If the target function accepts (address depositor, bytes executionData)\n          then a function like the following one can be used:\n\n            function prepareDepositData(bytes calldata executionData) view external returns (bytes memory) {\n                bytes memory encoded = abi.encode(address(0), executionData);\n                return this.slice(encoded, 32);\n            }\n\n            function slice(bytes calldata input, uint256 position) pure public returns (bytes memory) {\n                return input[position:];\n            }\n\n          After this, the target contract will get the following:\n          executeFuncSignature(address executionDataDepositor, bytes executionData)\n\n          Another example: if the target function accepts (address depositor, uint[], address)\n          then a function like the following one can be used:\n\n            function prepareDepositData(uint[] calldata uintArray, address addr) view external returns (bytes memory) {\n                bytes memory encoded = abi.encode(address(0), uintArray, addr);\n                return this.slice(encoded, 32);\n            }\n\n          After this, the target contract will get the following:\n          executeFuncSignature(address executionDataDepositor, uint[] uintArray, address addr)\n     */\n    function executeProposal(bytes32 resourceID, bytes calldata data) external onlyBridge returns (bytes memory) {\n        uint256        maxFee;\n        uint16         lenExecuteFuncSignature;\n        bytes4         executeFuncSignature;\n        uint8          lenExecuteContractAddress;\n        address        executeContractAddress;\n        uint8          lenExecutionDataDepositor;\n        address        executionDataDepositor;\n        bytes   memory executionData;\n        \n        uint256 pointer = 0;\n\n        maxFee                            = uint256(bytes32(data[:pointer += 32])); \n        lenExecuteFuncSignature           = uint16(bytes2(data[pointer:pointer += 2]));\n        lenExecuteFuncSignature.mustBe(4);\n        executeFuncSignature              = bytes4(data[pointer:pointer += lenExecuteFuncSignature]);\n        lenExecuteContractAddress         = uint8(bytes1(data[pointer:pointer += 1]));\n        lenExecuteContractAddress.mustBe(20);\n        executeContractAddress            = address(uint160(bytes20(data[pointer:pointer += lenExecuteContractAddress])));\n        lenExecutionDataDepositor         = uint8(bytes1(data[pointer:pointer += 1]));\n        lenExecutionDataDepositor.mustBe(20);\n        executionDataDepositor            = address(uint160(bytes20(data[pointer:pointer += lenExecutionDataDepositor])));\n        executionData                     = bytes(data[pointer:]);\n\n        bytes memory callData = abi.encodePacked(executeFuncSignature, abi.encode(executionDataDepositor), executionData);\n        (bool success, bytes memory returndata) = executeContractAddress.call{gas: maxFee}(callData);\n        return abi.encode(success, returndata);\n    }\n}\n",
  "sourcePath": "/home/runner/work/sygma-solidity/sygma-solidity/contracts/handlers/GmpHandler.sol",
  "ast": {
    "absolutePath": "project:/contracts/handlers/GmpHandler.sol",
    "exportedSymbols": {
      "GmpHandler": [
        15571
      ],
      "IHandler": [
        18301
      ],
      "SanityChecks": [
        19158
      ]
    },
    "id": 15572,
    "license": "LGPL-3.0-only",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 15172,
        "literals": [
          "solidity",
          "0.8",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "81:23:78"
      },
      {
        "absolutePath": "project:/contracts/interfaces/IHandler.sol",
        "file": "../interfaces/IHandler.sol",
        "id": 15173,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15572,
        "sourceUnit": 18302,
        "src": "106:36:78",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/utils/SanityChecks.sol",
        "file": "../utils/SanityChecks.sol",
        "id": 15174,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15572,
        "sourceUnit": 19159,
        "src": "143:35:78",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 15176,
              "name": "IHandler",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 18301,
              "src": "377:8:78"
            },
            "id": 15177,
            "nodeType": "InheritanceSpecifier",
            "src": "377:8:78"
          }
        ],
        "canonicalName": "GmpHandler",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 15175,
          "nodeType": "StructuredDocumentation",
          "src": "180:173:78",
          "text": "@title Handles generic deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract."
        },
        "fullyImplemented": true,
        "id": 15571,
        "linearizedBaseContracts": [
          15571,
          18301
        ],
        "name": "GmpHandler",
        "nameLocation": "363:10:78",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 15179,
            "libraryName": {
              "id": 15178,
              "name": "SanityChecks",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 19158,
              "src": "398:12:78"
            },
            "nodeType": "UsingForDirective",
            "src": "392:25:78"
          },
          {
            "constant": true,
            "functionSelector": "bc063e1a",
            "id": 15182,
            "mutability": "constant",
            "name": "MAX_FEE",
            "nameLocation": "447:7:78",
            "nodeType": "VariableDeclaration",
            "scope": 15571,
            "src": "423:41:78",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 15180,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "423:7:78",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "31303030303030",
              "id": 15181,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "457:7:78",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000_by_1",
                "typeString": "int_const 1000000"
              },
              "value": "1000000"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "318c136e",
            "id": 15184,
            "mutability": "immutable",
            "name": "_bridgeAddress",
            "nameLocation": "496:14:78",
            "nodeType": "VariableDeclaration",
            "scope": 15571,
            "src": "471:39:78",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 15183,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "471:7:78",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 15190,
              "nodeType": "Block",
              "src": "539:41:78",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 15186,
                      "name": "_onlyBridge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15203,
                      "src": "549:11:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 15187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "549:13:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15188,
                  "nodeType": "ExpressionStatement",
                  "src": "549:13:78"
                },
                {
                  "id": 15189,
                  "nodeType": "PlaceholderStatement",
                  "src": "572:1:78"
                }
              ]
            },
            "id": 15191,
            "name": "onlyBridge",
            "nameLocation": "526:10:78",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 15185,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "536:2:78"
            },
            "src": "517:63:78",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15202,
              "nodeType": "Block",
              "src": "622:88:78",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 15195,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "640:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 15196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "640:10:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 15197,
                          "name": "_bridgeAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15184,
                          "src": "654:14:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "640:28:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "73656e646572206d7573742062652062726964676520636f6e7472616374",
                        "id": 15199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "670:32:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e",
                          "typeString": "literal_string \"sender must be bridge contract\""
                        },
                        "value": "sender must be bridge contract"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e",
                          "typeString": "literal_string \"sender must be bridge contract\""
                        }
                      ],
                      "id": 15194,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "632:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "632:71:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15201,
                  "nodeType": "ExpressionStatement",
                  "src": "632:71:78"
                }
              ]
            },
            "id": 15203,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_onlyBridge",
            "nameLocation": "595:11:78",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15192,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "606:2:78"
            },
            "returnParameters": {
              "id": 15193,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "622:0:78"
            },
            "scope": 15571,
            "src": "586:124:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 15213,
              "nodeType": "Block",
              "src": "867:47:78",
              "statements": [
                {
                  "expression": {
                    "id": 15211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15209,
                      "name": "_bridgeAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15184,
                      "src": "877:14:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 15210,
                      "name": "bridgeAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15206,
                      "src": "894:13:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "877:30:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15212,
                  "nodeType": "ExpressionStatement",
                  "src": "877:30:78"
                }
              ]
            },
            "documentation": {
              "id": 15204,
              "nodeType": "StructuredDocumentation",
              "src": "716:88:78",
              "text": "@param bridgeAddress Contract address of previously deployed Bridge."
            },
            "id": 15214,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15207,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15206,
                  "mutability": "mutable",
                  "name": "bridgeAddress",
                  "nameLocation": "847:13:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15214,
                  "src": "830:30:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15205,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "830:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "820:46:78"
            },
            "returnParameters": {
              "id": 15208,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "867:0:78"
            },
            "scope": 15571,
            "src": "809:105:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              18300
            ],
            "body": {
              "id": 15226,
              "nodeType": "Block",
              "src": "1384:2:78",
              "statements": []
            },
            "documentation": {
              "id": 15215,
              "nodeType": "StructuredDocumentation",
              "src": "920:322:78",
              "text": "@notice Blank function, required in IHandler.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n@param args Additional data to be passed to specified handler."
            },
            "functionSelector": "fa8675b0",
            "id": 15227,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 15224,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 15223,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 15191,
                  "src": "1373:10:78"
                },
                "nodeType": "ModifierInvocation",
                "src": "1373:10:78"
              }
            ],
            "name": "setResource",
            "nameLocation": "1256:11:78",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15217,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "1285:10:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15227,
                  "src": "1277:18:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 15216,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1277:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15219,
                  "mutability": "mutable",
                  "name": "contractAddress",
                  "nameLocation": "1313:15:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15227,
                  "src": "1305:23:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15218,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15221,
                  "mutability": "mutable",
                  "name": "args",
                  "nameLocation": "1353:4:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15227,
                  "src": "1338:19:78",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15220,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1338:5:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1267:96:78"
            },
            "returnParameters": {
              "id": 15225,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1384:0:78"
            },
            "scope": 15571,
            "src": "1247:139:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              18280
            ],
            "body": {
              "id": 15365,
              "nodeType": "Block",
              "src": "4976:1069:78",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 15243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 15240,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15234,
                            "src": "4994:4:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "id": 15241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4994:11:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "hexValue": "3736",
                          "id": 15242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5009:2:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_76_by_1",
                            "typeString": "int_const 76"
                          },
                          "value": "76"
                        },
                        "src": "4994:17:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e636f72726563742064617461206c656e677468",
                        "id": 15244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5013:23:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_57915cfdce341f25dca73e4d221a5e2660b449f080238bbc6c61184d87f3c64a",
                          "typeString": "literal_string \"Incorrect data length\""
                        },
                        "value": "Incorrect data length"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_57915cfdce341f25dca73e4d221a5e2660b449f080238bbc6c61184d87f3c64a",
                          "typeString": "literal_string \"Incorrect data length\""
                        }
                      ],
                      "id": 15239,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4986:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4986:51:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15246,
                  "nodeType": "ExpressionStatement",
                  "src": "4986:51:78"
                },
                {
                  "assignments": [
                    15248
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15248,
                      "mutability": "mutable",
                      "name": "maxFee",
                      "nameLocation": "5091:6:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5076:21:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 15247,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5076:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15249,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5076:21:78"
                },
                {
                  "assignments": [
                    15251
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15251,
                      "mutability": "mutable",
                      "name": "lenExecuteFuncSignature",
                      "nameLocation": "5122:23:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5107:38:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 15250,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "5107:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15252,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5107:38:78"
                },
                {
                  "assignments": [
                    15254
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15254,
                      "mutability": "mutable",
                      "name": "lenExecuteContractAddress",
                      "nameLocation": "5170:25:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5155:40:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 15253,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5155:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15255,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5155:40:78"
                },
                {
                  "assignments": [
                    15257
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15257,
                      "mutability": "mutable",
                      "name": "lenExecutionDataDepositor",
                      "nameLocation": "5220:25:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5205:40:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 15256,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5205:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15258,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5205:40:78"
                },
                {
                  "assignments": [
                    15260
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15260,
                      "mutability": "mutable",
                      "name": "executionDataDepositor",
                      "nameLocation": "5270:22:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5255:37:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15259,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5255:7:78",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15261,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5255:37:78"
                },
                {
                  "assignments": [
                    15263
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15263,
                      "mutability": "mutable",
                      "name": "pointer",
                      "nameLocation": "5311:7:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5303:15:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 15262,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5303:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15265,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 15264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5321:1:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5303:19:78"
                },
                {
                  "expression": {
                    "id": 15278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15266,
                      "name": "maxFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15248,
                      "src": "5333:6:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15271,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15234,
                                "src": "5385:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15272,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15263,
                                  "src": "5391:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 15273,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5402:2:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "5391:13:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "5385:20:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5377:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 15269,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5377:7:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5377:29:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 15268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5369:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 15267,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5369:7:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15277,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5369:38:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5333:74:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15279,
                  "nodeType": "ExpressionStatement",
                  "src": "5333:74:78"
                },
                {
                  "expression": {
                    "id": 15293,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15280,
                      "name": "lenExecuteFuncSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15251,
                      "src": "5418:23:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15285,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15234,
                                "src": "5468:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15287,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15263,
                                  "src": "5481:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "32",
                                  "id": 15288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5492:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "5481:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "5468:26:78",
                              "startExpression": {
                                "id": 15286,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15263,
                                "src": "5473:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5461:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes2_$",
                              "typeString": "type(bytes2)"
                            },
                            "typeName": {
                              "id": 15283,
                              "name": "bytes2",
                              "nodeType": "ElementaryTypeName",
                              "src": "5461:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5461:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        ],
                        "id": 15282,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5454:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint16_$",
                          "typeString": "type(uint16)"
                        },
                        "typeName": {
                          "id": 15281,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "5454:6:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15292,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5454:42:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "5418:78:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 15294,
                  "nodeType": "ExpressionStatement",
                  "src": "5418:78:78"
                },
                {
                  "expression": {
                    "id": 15297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15295,
                      "name": "pointer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15263,
                      "src": "5506:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 15296,
                      "name": "lenExecuteFuncSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15251,
                      "src": "5517:23:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "5506:34:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15298,
                  "nodeType": "ExpressionStatement",
                  "src": "5506:34:78"
                },
                {
                  "expression": {
                    "id": 15312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15299,
                      "name": "lenExecuteContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15254,
                      "src": "5550:25:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15304,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15234,
                                "src": "5599:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15306,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15263,
                                  "src": "5612:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 15307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5623:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5612:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "5599:26:78",
                              "startExpression": {
                                "id": 15305,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15263,
                                "src": "5604:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5592:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes1_$",
                              "typeString": "type(bytes1)"
                            },
                            "typeName": {
                              "id": 15302,
                              "name": "bytes1",
                              "nodeType": "ElementaryTypeName",
                              "src": "5592:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5592:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 15301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5586:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": {
                          "id": 15300,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5586:5:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15311,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5586:41:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5550:77:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 15313,
                  "nodeType": "ExpressionStatement",
                  "src": "5550:77:78"
                },
                {
                  "expression": {
                    "id": 15316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15314,
                      "name": "pointer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15263,
                      "src": "5637:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 15315,
                      "name": "lenExecuteContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15254,
                      "src": "5648:25:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5637:36:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15317,
                  "nodeType": "ExpressionStatement",
                  "src": "5637:36:78"
                },
                {
                  "expression": {
                    "id": 15331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15318,
                      "name": "lenExecutionDataDepositor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15257,
                      "src": "5683:25:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15323,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15234,
                                "src": "5732:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15325,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15263,
                                  "src": "5745:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 15326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5756:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5745:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "5732:26:78",
                              "startExpression": {
                                "id": 15324,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15263,
                                "src": "5737:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5725:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes1_$",
                              "typeString": "type(bytes1)"
                            },
                            "typeName": {
                              "id": 15321,
                              "name": "bytes1",
                              "nodeType": "ElementaryTypeName",
                              "src": "5725:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5725:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 15320,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5719:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": {
                          "id": 15319,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5719:5:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15330,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5719:41:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5683:77:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 15332,
                  "nodeType": "ExpressionStatement",
                  "src": "5683:77:78"
                },
                {
                  "expression": {
                    "id": 15349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15333,
                      "name": "executionDataDepositor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15260,
                      "src": "5770:22:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 15340,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15234,
                                    "src": "5830:4:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  },
                                  "endExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 15344,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 15342,
                                      "name": "pointer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15263,
                                      "src": "5843:7:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "id": 15343,
                                      "name": "lenExecutionDataDepositor",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15257,
                                      "src": "5853:25:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "5843:35:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 15345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexRangeAccess",
                                  "src": "5830:49:78",
                                  "startExpression": {
                                    "id": 15341,
                                    "name": "pointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15263,
                                    "src": "5835:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                ],
                                "id": 15339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5822:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes20_$",
                                  "typeString": "type(bytes20)"
                                },
                                "typeName": {
                                  "id": 15338,
                                  "name": "bytes20",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5822:7:78",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5822:58:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            ],
                            "id": 15337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5814:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint160_$",
                              "typeString": "type(uint160)"
                            },
                            "typeName": {
                              "id": 15336,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "5814:7:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5814:67:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        ],
                        "id": 15335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5806:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 15334,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5806:7:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15348,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5806:76:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5770:112:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15350,
                  "nodeType": "ExpressionStatement",
                  "src": "5770:112:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 15354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 15352,
                          "name": "maxFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15248,
                          "src": "5901:6:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 15353,
                          "name": "MAX_FEE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15182,
                          "src": "5910:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5901:16:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "7265717565737465642066656520746f6f206c61726765",
                        "id": 15355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5919:25:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_48eea2e7835f01385fb99f401d0993f0b384de82e2d0099c16d455a9a9c00b9d",
                          "typeString": "literal_string \"requested fee too large\""
                        },
                        "value": "requested fee too large"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_48eea2e7835f01385fb99f401d0993f0b384de82e2d0099c16d455a9a9c00b9d",
                          "typeString": "literal_string \"requested fee too large\""
                        }
                      ],
                      "id": 15351,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5893:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5893:52:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15357,
                  "nodeType": "ExpressionStatement",
                  "src": "5893:52:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 15359,
                          "name": "depositor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15232,
                          "src": "5963:9:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 15360,
                          "name": "executionDataDepositor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15260,
                          "src": "5976:22:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5963:35:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "696e636f7272656374206465706f7369746f7220696e206465706f7369742064617461",
                        "id": 15362,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6000:37:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dec96eeeb75c48ba1a9ba063e01f0196332652b091015273e0adeff7ae747a04",
                          "typeString": "literal_string \"incorrect depositor in deposit data\""
                        },
                        "value": "incorrect depositor in deposit data"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dec96eeeb75c48ba1a9ba063e01f0196332652b091015273e0adeff7ae747a04",
                          "typeString": "literal_string \"incorrect depositor in deposit data\""
                        }
                      ],
                      "id": 15358,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5955:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5955:83:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15364,
                  "nodeType": "ExpressionStatement",
                  "src": "5955:83:78"
                }
              ]
            },
            "documentation": {
              "id": 15228,
              "nodeType": "StructuredDocumentation",
              "src": "1392:3465:78",
              "text": "@notice A deposit is initiated by making a deposit in the Bridge contract.\n@param resourceID ResourceID used to find address of contract to be used for deposit.\n@param depositor Address of the account making deposit in the Bridge contract.\n@param data Structure should be constructed as follows:\nmaxFee:                       uint256  bytes  0                                                                                           -  32\nlen(executeFuncSignature):    uint16   bytes  32                                                                                          -  34\nexecuteFuncSignature:         bytes    bytes  34                                                                                          -  34 + len(executeFuncSignature)\nlen(executeContractAddress):  uint8    bytes  34 + len(executeFuncSignature)                                                              -  35 + len(executeFuncSignature)\nexecuteContractAddress        bytes    bytes  35 + len(executeFuncSignature)                                                              -  35 + len(executeFuncSignature) + len(executeContractAddress)\nlen(executionDataDepositor):  uint8    bytes  35 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress)\nexecutionDataDepositor:       bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)\nexecutionData:                bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)  -  END\nexecutionData is repacked together with executionDataDepositor address for using it in the target contract.\nIf executionData contains dynamic types then it is necessary to keep the offsets correct.\nexecutionData should be encoded together with a 32-byte address and then passed as a parameter without that address.\nIf the target function accepts (address depositor, bytes executionData)\nthen a function like the following one can be used:\nfunction prepareDepositData(bytes calldata executionData) view external returns (bytes memory) {\nbytes memory encoded = abi.encode(address(0), executionData);\nreturn this.slice(encoded, 32);\n}\nfunction slice(bytes calldata input, uint256 position) pure public returns (bytes memory) {\nreturn input[position:];\n}\nAfter this, the target contract will get the following:\nexecuteFuncSignature(address executionDataDepositor, bytes executionData)\nAnother example: if the target function accepts (address depositor, uint[], address)\nthen a function like the following one can be used:\nfunction prepareDepositData(uint[] calldata uintArray, address addr) view external returns (bytes memory) {\nbytes memory encoded = abi.encode(address(0), uintArray, addr);\nreturn this.slice(encoded, 32);\n}\nAfter this, the target contract will get the following:\nexecuteFuncSignature(address executionDataDepositor, uint[] uintArray, address addr)"
            },
            "functionSelector": "b07e54bb",
            "id": 15366,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nameLocation": "4871:7:78",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15235,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15230,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "4887:10:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15366,
                  "src": "4879:18:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 15229,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4879:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15232,
                  "mutability": "mutable",
                  "name": "depositor",
                  "nameLocation": "4907:9:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15366,
                  "src": "4899:17:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15231,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4899:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15234,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "4933:4:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15366,
                  "src": "4918:19:78",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15233,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4918:5:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4878:60:78"
            },
            "returnParameters": {
              "id": 15238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15237,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15366,
                  "src": "4962:12:78",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15236,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4962:5:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4961:14:78"
            },
            "scope": 15571,
            "src": "4862:1183:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              18290
            ],
            "body": {
              "id": 15569,
              "nodeType": "Block",
              "src": "9437:1573:78",
              "statements": [
                {
                  "assignments": [
                    15379
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15379,
                      "mutability": "mutable",
                      "name": "maxFee",
                      "nameLocation": "9462:6:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9447:21:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 15378,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9447:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15380,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9447:21:78"
                },
                {
                  "assignments": [
                    15382
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15382,
                      "mutability": "mutable",
                      "name": "lenExecuteFuncSignature",
                      "nameLocation": "9493:23:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9478:38:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 15381,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "9478:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15383,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9478:38:78"
                },
                {
                  "assignments": [
                    15385
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15385,
                      "mutability": "mutable",
                      "name": "executeFuncSignature",
                      "nameLocation": "9541:20:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9526:35:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 15384,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "9526:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15386,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9526:35:78"
                },
                {
                  "assignments": [
                    15388
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15388,
                      "mutability": "mutable",
                      "name": "lenExecuteContractAddress",
                      "nameLocation": "9586:25:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9571:40:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 15387,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "9571:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15389,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9571:40:78"
                },
                {
                  "assignments": [
                    15391
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15391,
                      "mutability": "mutable",
                      "name": "executeContractAddress",
                      "nameLocation": "9636:22:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9621:37:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15390,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9621:7:78",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15392,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9621:37:78"
                },
                {
                  "assignments": [
                    15394
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15394,
                      "mutability": "mutable",
                      "name": "lenExecutionDataDepositor",
                      "nameLocation": "9683:25:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9668:40:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 15393,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "9668:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15395,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9668:40:78"
                },
                {
                  "assignments": [
                    15397
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15397,
                      "mutability": "mutable",
                      "name": "executionDataDepositor",
                      "nameLocation": "9733:22:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9718:37:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15396,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9718:7:78",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15398,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9718:37:78"
                },
                {
                  "assignments": [
                    15400
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15400,
                      "mutability": "mutable",
                      "name": "executionData",
                      "nameLocation": "9780:13:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9765:28:78",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 15399,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "9765:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15401,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9765:28:78"
                },
                {
                  "assignments": [
                    15403
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15403,
                      "mutability": "mutable",
                      "name": "pointer",
                      "nameLocation": "9820:7:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9812:15:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 15402,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9812:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15405,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 15404,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9830:1:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9812:19:78"
                },
                {
                  "expression": {
                    "id": 15418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15406,
                      "name": "maxFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15379,
                      "src": "9842:6:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15411,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15371,
                                "src": "9894:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15414,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15412,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15403,
                                  "src": "9900:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 15413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9911:2:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "9900:13:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "9894:20:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9886:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 15409,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9886:7:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9886:29:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 15408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "9878:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 15407,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9878:7:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15417,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9878:38:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9842:74:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15419,
                  "nodeType": "ExpressionStatement",
                  "src": "9842:74:78"
                },
                {
                  "expression": {
                    "id": 15433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15420,
                      "name": "lenExecuteFuncSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15382,
                      "src": "9927:23:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15425,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15371,
                                "src": "9977:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15427,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15403,
                                  "src": "9990:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "32",
                                  "id": 15428,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10001:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "9990:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "9977:26:78",
                              "startExpression": {
                                "id": 15426,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15403,
                                "src": "9982:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15424,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9970:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes2_$",
                              "typeString": "type(bytes2)"
                            },
                            "typeName": {
                              "id": 15423,
                              "name": "bytes2",
                              "nodeType": "ElementaryTypeName",
                              "src": "9970:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9970:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        ],
                        "id": 15422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "9963:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint16_$",
                          "typeString": "type(uint16)"
                        },
                        "typeName": {
                          "id": 15421,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "9963:6:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9963:42:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "9927:78:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 15434,
                  "nodeType": "ExpressionStatement",
                  "src": "9927:78:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "34",
                        "id": 15438,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10046:1:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "expression": {
                        "id": 15435,
                        "name": "lenExecuteFuncSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15382,
                        "src": "10015:23:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "id": 15437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mustBe",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19157,
                      "src": "10015:30:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 15439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10015:33:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15440,
                  "nodeType": "ExpressionStatement",
                  "src": "10015:33:78"
                },
                {
                  "expression": {
                    "id": 15451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15441,
                      "name": "executeFuncSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15385,
                      "src": "10058:20:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 15444,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15371,
                            "src": "10101:4:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "endExpression": {
                            "id": 15448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 15446,
                              "name": "pointer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15403,
                              "src": "10114:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "id": 15447,
                              "name": "lenExecuteFuncSignature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15382,
                              "src": "10125:23:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "src": "10114:34:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexRangeAccess",
                          "src": "10101:48:78",
                          "startExpression": {
                            "id": 15445,
                            "name": "pointer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15403,
                            "src": "10106:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                            "typeString": "bytes calldata slice"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                            "typeString": "bytes calldata slice"
                          }
                        ],
                        "id": 15443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10094:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes4_$",
                          "typeString": "type(bytes4)"
                        },
                        "typeName": {
                          "id": 15442,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "10094:6:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15450,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10094:56:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "src": "10058:92:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 15452,
                  "nodeType": "ExpressionStatement",
                  "src": "10058:92:78"
                },
                {
                  "expression": {
                    "id": 15466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15453,
                      "name": "lenExecuteContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15388,
                      "src": "10160:25:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15458,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15371,
                                "src": "10209:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15460,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15403,
                                  "src": "10222:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 15461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10233:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "10222:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "10209:26:78",
                              "startExpression": {
                                "id": 15459,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15403,
                                "src": "10214:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10202:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes1_$",
                              "typeString": "type(bytes1)"
                            },
                            "typeName": {
                              "id": 15456,
                              "name": "bytes1",
                              "nodeType": "ElementaryTypeName",
                              "src": "10202:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10202:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 15455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10196:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": {
                          "id": 15454,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "10196:5:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15465,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10196:41:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10160:77:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 15467,
                  "nodeType": "ExpressionStatement",
                  "src": "10160:77:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "3230",
                        "id": 15471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10280:2:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        },
                        "value": "20"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        }
                      ],
                      "expression": {
                        "id": 15468,
                        "name": "lenExecuteContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15388,
                        "src": "10247:25:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 15470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mustBe",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19157,
                      "src": "10247:32:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 15472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10247:36:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15473,
                  "nodeType": "ExpressionStatement",
                  "src": "10247:36:78"
                },
                {
                  "expression": {
                    "id": 15490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15474,
                      "name": "executeContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15391,
                      "src": "10293:22:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 15481,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15371,
                                    "src": "10353:4:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  },
                                  "endExpression": {
                                    "id": 15485,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 15483,
                                      "name": "pointer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15403,
                                      "src": "10366:7:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 15484,
                                      "name": "lenExecuteContractAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15388,
                                      "src": "10377:25:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "10366:36:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 15486,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexRangeAccess",
                                  "src": "10353:50:78",
                                  "startExpression": {
                                    "id": 15482,
                                    "name": "pointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15403,
                                    "src": "10358:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                ],
                                "id": 15480,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10345:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes20_$",
                                  "typeString": "type(bytes20)"
                                },
                                "typeName": {
                                  "id": 15479,
                                  "name": "bytes20",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10345:7:78",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10345:59:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            ],
                            "id": 15478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10337:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint160_$",
                              "typeString": "type(uint160)"
                            },
                            "typeName": {
                              "id": 15477,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "10337:7:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10337:68:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        ],
                        "id": 15476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10329:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 15475,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10329:7:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10329:77:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10293:113:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15491,
                  "nodeType": "ExpressionStatement",
                  "src": "10293:113:78"
                },
                {
                  "expression": {
                    "id": 15505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15492,
                      "name": "lenExecutionDataDepositor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15394,
                      "src": "10416:25:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15497,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15371,
                                "src": "10465:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15499,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15403,
                                  "src": "10478:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 15500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10489:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "10478:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "10465:26:78",
                              "startExpression": {
                                "id": 15498,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15403,
                                "src": "10470:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15496,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10458:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes1_$",
                              "typeString": "type(bytes1)"
                            },
                            "typeName": {
                              "id": 15495,
                              "name": "bytes1",
                              "nodeType": "ElementaryTypeName",
                              "src": "10458:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10458:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 15494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10452:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": {
                          "id": 15493,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "10452:5:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10452:41:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10416:77:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 15506,
                  "nodeType": "ExpressionStatement",
                  "src": "10416:77:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "3230",
                        "id": 15510,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10536:2:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        },
                        "value": "20"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        }
                      ],
                      "expression": {
                        "id": 15507,
                        "name": "lenExecutionDataDepositor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15394,
                        "src": "10503:25:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 15509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mustBe",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19157,
                      "src": "10503:32:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 15511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10503:36:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15512,
                  "nodeType": "ExpressionStatement",
                  "src": "10503:36:78"
                },
                {
                  "expression": {
                    "id": 15529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15513,
                      "name": "executionDataDepositor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15397,
                      "src": "10549:22:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 15520,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15371,
                                    "src": "10609:4:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  },
                                  "endExpression": {
                                    "id": 15524,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 15522,
                                      "name": "pointer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15403,
                                      "src": "10622:7:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 15523,
                                      "name": "lenExecutionDataDepositor",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15394,
                                      "src": "10633:25:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "10622:36:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 15525,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexRangeAccess",
                                  "src": "10609:50:78",
                                  "startExpression": {
                                    "id": 15521,
                                    "name": "pointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15403,
                                    "src": "10614:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                ],
                                "id": 15519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10601:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes20_$",
                                  "typeString": "type(bytes20)"
                                },
                                "typeName": {
                                  "id": 15518,
                                  "name": "bytes20",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10601:7:78",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10601:59:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            ],
                            "id": 15517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10593:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint160_$",
                              "typeString": "type(uint160)"
                            },
                            "typeName": {
                              "id": 15516,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "10593:7:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10593:68:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        ],
                        "id": 15515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10585:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 15514,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10585:7:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15528,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10585:77:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10549:113:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15530,
                  "nodeType": "ExpressionStatement",
                  "src": "10549:113:78"
                },
                {
                  "expression": {
                    "id": 15538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15531,
                      "name": "executionData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15400,
                      "src": "10672:13:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 15534,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15371,
                            "src": "10714:4:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "id": 15536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexRangeAccess",
                          "src": "10714:14:78",
                          "startExpression": {
                            "id": 15535,
                            "name": "pointer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15403,
                            "src": "10719:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                            "typeString": "bytes calldata slice"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                            "typeString": "bytes calldata slice"
                          }
                        ],
                        "id": 15533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10708:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                          "typeString": "type(bytes storage pointer)"
                        },
                        "typeName": {
                          "id": 15532,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10708:5:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15537,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10708:21:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes calldata"
                      }
                    },
                    "src": "10672:57:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 15539,
                  "nodeType": "ExpressionStatement",
                  "src": "10672:57:78"
                },
                {
                  "assignments": [
                    15541
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15541,
                      "mutability": "mutable",
                      "name": "callData",
                      "nameLocation": "10753:8:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "10740:21:78",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 15540,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10740:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15551,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 15544,
                        "name": "executeFuncSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15385,
                        "src": "10781:20:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 15547,
                            "name": "executionDataDepositor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15397,
                            "src": "10814:22:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15545,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "10803:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "10803:10:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 15548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10803:34:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 15549,
                        "name": "executionData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15400,
                        "src": "10839:13:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 15542,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "10764:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 15543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "10764:16:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 15550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10764:89:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10740:113:78"
                },
                {
                  "assignments": [
                    15553,
                    15555
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15553,
                      "mutability": "mutable",
                      "name": "success",
                      "nameLocation": "10869:7:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "10864:12:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 15552,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "10864:4:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15555,
                      "mutability": "mutable",
                      "name": "returndata",
                      "nameLocation": "10891:10:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "10878:23:78",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 15554,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10878:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15562,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 15560,
                        "name": "callData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15541,
                        "src": "10946:8:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "id": 15556,
                          "name": "executeContractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15391,
                          "src": "10905:22:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 15557,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "call",
                        "nodeType": "MemberAccess",
                        "src": "10905:27:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                        }
                      },
                      "id": 15559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "gas"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "id": 15558,
                          "name": "maxFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15379,
                          "src": "10938:6:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "src": "10905:40:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                        "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                      }
                    },
                    "id": 15561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10905:50:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10863:92:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15565,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15553,
                        "src": "10983:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "id": 15566,
                        "name": "returndata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15555,
                        "src": "10992:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 15563,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "10972:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 15564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encode",
                      "nodeType": "MemberAccess",
                      "src": "10972:10:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 15567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10972:31:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 15377,
                  "id": 15568,
                  "nodeType": "Return",
                  "src": "10965:38:78"
                }
              ]
            },
            "documentation": {
              "id": 15367,
              "nodeType": "StructuredDocumentation",
              "src": "6051:3272:78",
              "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n@param resourceID ResourceID used to find address of contract to be used for deposit.\n@param data Structure should be constructed as follows:\nmaxFee:                             uint256  bytes  0                                                             -  32\nlen(executeFuncSignature):          uint16   bytes  32                                                            -  34\nexecuteFuncSignature:               bytes    bytes  34                                                            -  34 + len(executeFuncSignature)\nlen(executeContractAddress):        uint8    bytes  34 + len(executeFuncSignature)                                -  35 + len(executeFuncSignature)\nexecuteContractAddress              bytes    bytes  35 + len(executeFuncSignature)                                -  35 + len(executeFuncSignature) + len(executeContractAddress)\nlen(executionDataDepositor):        uint8    bytes  35 + len(executeFuncSignature) + len(executeContractAddress)  -  36 + len(executeFuncSignature) + len(executeContractAddress)\nexecutionDataDepositor:             bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)\nexecutionData:                      bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)  -  END\nexecutionData is repacked together with executionDataDepositor address for using it in the target contract.\nIf executionData contains dynamic types then it is necessary to keep the offsets correct.\nexecutionData should be encoded together with a 32-byte address and then passed as a parameter without that address.\nIf the target function accepts (address depositor, bytes executionData)\nthen a function like the following one can be used:\nfunction prepareDepositData(bytes calldata executionData) view external returns (bytes memory) {\nbytes memory encoded = abi.encode(address(0), executionData);\nreturn this.slice(encoded, 32);\n}\nfunction slice(bytes calldata input, uint256 position) pure public returns (bytes memory) {\nreturn input[position:];\n}\nAfter this, the target contract will get the following:\nexecuteFuncSignature(address executionDataDepositor, bytes executionData)\nAnother example: if the target function accepts (address depositor, uint[], address)\nthen a function like the following one can be used:\nfunction prepareDepositData(uint[] calldata uintArray, address addr) view external returns (bytes memory) {\nbytes memory encoded = abi.encode(address(0), uintArray, addr);\nreturn this.slice(encoded, 32);\n}\nAfter this, the target contract will get the following:\nexecuteFuncSignature(address executionDataDepositor, uint[] uintArray, address addr)"
            },
            "functionSelector": "e248cff2",
            "id": 15570,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 15374,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 15373,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 15191,
                  "src": "9403:10:78"
                },
                "nodeType": "ModifierInvocation",
                "src": "9403:10:78"
              }
            ],
            "name": "executeProposal",
            "nameLocation": "9337:15:78",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15369,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "9361:10:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15570,
                  "src": "9353:18:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 15368,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9353:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15371,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "9388:4:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15570,
                  "src": "9373:19:78",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15370,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9373:5:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9352:41:78"
            },
            "returnParameters": {
              "id": 15377,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15376,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15570,
                  "src": "9423:12:78",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15375,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9423:5:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9422:14:78"
            },
            "scope": 15571,
            "src": "9328:1682:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 15572,
        "src": "354:10658:78",
        "usedErrors": [
          19116
        ]
      }
    ],
    "src": "81:10932:78"
  },
  "legacyAST": {
    "absolutePath": "project:/contracts/handlers/GmpHandler.sol",
    "exportedSymbols": {
      "GmpHandler": [
        15571
      ],
      "IHandler": [
        18301
      ],
      "SanityChecks": [
        19158
      ]
    },
    "id": 15572,
    "license": "LGPL-3.0-only",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 15172,
        "literals": [
          "solidity",
          "0.8",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "81:23:78"
      },
      {
        "absolutePath": "project:/contracts/interfaces/IHandler.sol",
        "file": "../interfaces/IHandler.sol",
        "id": 15173,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15572,
        "sourceUnit": 18302,
        "src": "106:36:78",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/utils/SanityChecks.sol",
        "file": "../utils/SanityChecks.sol",
        "id": 15174,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15572,
        "sourceUnit": 19159,
        "src": "143:35:78",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 15176,
              "name": "IHandler",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 18301,
              "src": "377:8:78"
            },
            "id": 15177,
            "nodeType": "InheritanceSpecifier",
            "src": "377:8:78"
          }
        ],
        "canonicalName": "GmpHandler",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 15175,
          "nodeType": "StructuredDocumentation",
          "src": "180:173:78",
          "text": "@title Handles generic deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract."
        },
        "fullyImplemented": true,
        "id": 15571,
        "linearizedBaseContracts": [
          15571,
          18301
        ],
        "name": "GmpHandler",
        "nameLocation": "363:10:78",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 15179,
            "libraryName": {
              "id": 15178,
              "name": "SanityChecks",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 19158,
              "src": "398:12:78"
            },
            "nodeType": "UsingForDirective",
            "src": "392:25:78"
          },
          {
            "constant": true,
            "functionSelector": "bc063e1a",
            "id": 15182,
            "mutability": "constant",
            "name": "MAX_FEE",
            "nameLocation": "447:7:78",
            "nodeType": "VariableDeclaration",
            "scope": 15571,
            "src": "423:41:78",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 15180,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "423:7:78",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "31303030303030",
              "id": 15181,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "457:7:78",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000_by_1",
                "typeString": "int_const 1000000"
              },
              "value": "1000000"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "318c136e",
            "id": 15184,
            "mutability": "immutable",
            "name": "_bridgeAddress",
            "nameLocation": "496:14:78",
            "nodeType": "VariableDeclaration",
            "scope": 15571,
            "src": "471:39:78",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 15183,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "471:7:78",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 15190,
              "nodeType": "Block",
              "src": "539:41:78",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 15186,
                      "name": "_onlyBridge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15203,
                      "src": "549:11:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 15187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "549:13:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15188,
                  "nodeType": "ExpressionStatement",
                  "src": "549:13:78"
                },
                {
                  "id": 15189,
                  "nodeType": "PlaceholderStatement",
                  "src": "572:1:78"
                }
              ]
            },
            "id": 15191,
            "name": "onlyBridge",
            "nameLocation": "526:10:78",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 15185,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "536:2:78"
            },
            "src": "517:63:78",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15202,
              "nodeType": "Block",
              "src": "622:88:78",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 15195,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "640:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 15196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "640:10:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 15197,
                          "name": "_bridgeAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15184,
                          "src": "654:14:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "640:28:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "73656e646572206d7573742062652062726964676520636f6e7472616374",
                        "id": 15199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "670:32:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e",
                          "typeString": "literal_string \"sender must be bridge contract\""
                        },
                        "value": "sender must be bridge contract"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e",
                          "typeString": "literal_string \"sender must be bridge contract\""
                        }
                      ],
                      "id": 15194,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "632:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "632:71:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15201,
                  "nodeType": "ExpressionStatement",
                  "src": "632:71:78"
                }
              ]
            },
            "id": 15203,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_onlyBridge",
            "nameLocation": "595:11:78",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15192,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "606:2:78"
            },
            "returnParameters": {
              "id": 15193,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "622:0:78"
            },
            "scope": 15571,
            "src": "586:124:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 15213,
              "nodeType": "Block",
              "src": "867:47:78",
              "statements": [
                {
                  "expression": {
                    "id": 15211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15209,
                      "name": "_bridgeAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15184,
                      "src": "877:14:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 15210,
                      "name": "bridgeAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15206,
                      "src": "894:13:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "877:30:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15212,
                  "nodeType": "ExpressionStatement",
                  "src": "877:30:78"
                }
              ]
            },
            "documentation": {
              "id": 15204,
              "nodeType": "StructuredDocumentation",
              "src": "716:88:78",
              "text": "@param bridgeAddress Contract address of previously deployed Bridge."
            },
            "id": 15214,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15207,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15206,
                  "mutability": "mutable",
                  "name": "bridgeAddress",
                  "nameLocation": "847:13:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15214,
                  "src": "830:30:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15205,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "830:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "820:46:78"
            },
            "returnParameters": {
              "id": 15208,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "867:0:78"
            },
            "scope": 15571,
            "src": "809:105:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              18300
            ],
            "body": {
              "id": 15226,
              "nodeType": "Block",
              "src": "1384:2:78",
              "statements": []
            },
            "documentation": {
              "id": 15215,
              "nodeType": "StructuredDocumentation",
              "src": "920:322:78",
              "text": "@notice Blank function, required in IHandler.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n@param args Additional data to be passed to specified handler."
            },
            "functionSelector": "fa8675b0",
            "id": 15227,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 15224,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 15223,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 15191,
                  "src": "1373:10:78"
                },
                "nodeType": "ModifierInvocation",
                "src": "1373:10:78"
              }
            ],
            "name": "setResource",
            "nameLocation": "1256:11:78",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15217,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "1285:10:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15227,
                  "src": "1277:18:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 15216,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1277:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15219,
                  "mutability": "mutable",
                  "name": "contractAddress",
                  "nameLocation": "1313:15:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15227,
                  "src": "1305:23:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15218,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15221,
                  "mutability": "mutable",
                  "name": "args",
                  "nameLocation": "1353:4:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15227,
                  "src": "1338:19:78",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15220,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1338:5:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1267:96:78"
            },
            "returnParameters": {
              "id": 15225,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1384:0:78"
            },
            "scope": 15571,
            "src": "1247:139:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              18280
            ],
            "body": {
              "id": 15365,
              "nodeType": "Block",
              "src": "4976:1069:78",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 15243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 15240,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15234,
                            "src": "4994:4:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "id": 15241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4994:11:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "hexValue": "3736",
                          "id": 15242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5009:2:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_76_by_1",
                            "typeString": "int_const 76"
                          },
                          "value": "76"
                        },
                        "src": "4994:17:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e636f72726563742064617461206c656e677468",
                        "id": 15244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5013:23:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_57915cfdce341f25dca73e4d221a5e2660b449f080238bbc6c61184d87f3c64a",
                          "typeString": "literal_string \"Incorrect data length\""
                        },
                        "value": "Incorrect data length"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_57915cfdce341f25dca73e4d221a5e2660b449f080238bbc6c61184d87f3c64a",
                          "typeString": "literal_string \"Incorrect data length\""
                        }
                      ],
                      "id": 15239,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4986:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4986:51:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15246,
                  "nodeType": "ExpressionStatement",
                  "src": "4986:51:78"
                },
                {
                  "assignments": [
                    15248
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15248,
                      "mutability": "mutable",
                      "name": "maxFee",
                      "nameLocation": "5091:6:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5076:21:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 15247,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5076:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15249,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5076:21:78"
                },
                {
                  "assignments": [
                    15251
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15251,
                      "mutability": "mutable",
                      "name": "lenExecuteFuncSignature",
                      "nameLocation": "5122:23:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5107:38:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 15250,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "5107:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15252,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5107:38:78"
                },
                {
                  "assignments": [
                    15254
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15254,
                      "mutability": "mutable",
                      "name": "lenExecuteContractAddress",
                      "nameLocation": "5170:25:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5155:40:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 15253,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5155:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15255,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5155:40:78"
                },
                {
                  "assignments": [
                    15257
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15257,
                      "mutability": "mutable",
                      "name": "lenExecutionDataDepositor",
                      "nameLocation": "5220:25:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5205:40:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 15256,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5205:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15258,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5205:40:78"
                },
                {
                  "assignments": [
                    15260
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15260,
                      "mutability": "mutable",
                      "name": "executionDataDepositor",
                      "nameLocation": "5270:22:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5255:37:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15259,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5255:7:78",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15261,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5255:37:78"
                },
                {
                  "assignments": [
                    15263
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15263,
                      "mutability": "mutable",
                      "name": "pointer",
                      "nameLocation": "5311:7:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15365,
                      "src": "5303:15:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 15262,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5303:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15265,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 15264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5321:1:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5303:19:78"
                },
                {
                  "expression": {
                    "id": 15278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15266,
                      "name": "maxFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15248,
                      "src": "5333:6:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15271,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15234,
                                "src": "5385:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15272,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15263,
                                  "src": "5391:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 15273,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5402:2:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "5391:13:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "5385:20:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5377:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 15269,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5377:7:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5377:29:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 15268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5369:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 15267,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5369:7:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15277,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5369:38:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5333:74:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15279,
                  "nodeType": "ExpressionStatement",
                  "src": "5333:74:78"
                },
                {
                  "expression": {
                    "id": 15293,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15280,
                      "name": "lenExecuteFuncSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15251,
                      "src": "5418:23:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15285,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15234,
                                "src": "5468:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15287,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15263,
                                  "src": "5481:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "32",
                                  "id": 15288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5492:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "5481:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "5468:26:78",
                              "startExpression": {
                                "id": 15286,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15263,
                                "src": "5473:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5461:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes2_$",
                              "typeString": "type(bytes2)"
                            },
                            "typeName": {
                              "id": 15283,
                              "name": "bytes2",
                              "nodeType": "ElementaryTypeName",
                              "src": "5461:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5461:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        ],
                        "id": 15282,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5454:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint16_$",
                          "typeString": "type(uint16)"
                        },
                        "typeName": {
                          "id": 15281,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "5454:6:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15292,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5454:42:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "5418:78:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 15294,
                  "nodeType": "ExpressionStatement",
                  "src": "5418:78:78"
                },
                {
                  "expression": {
                    "id": 15297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15295,
                      "name": "pointer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15263,
                      "src": "5506:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 15296,
                      "name": "lenExecuteFuncSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15251,
                      "src": "5517:23:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "5506:34:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15298,
                  "nodeType": "ExpressionStatement",
                  "src": "5506:34:78"
                },
                {
                  "expression": {
                    "id": 15312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15299,
                      "name": "lenExecuteContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15254,
                      "src": "5550:25:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15304,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15234,
                                "src": "5599:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15306,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15263,
                                  "src": "5612:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 15307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5623:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5612:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "5599:26:78",
                              "startExpression": {
                                "id": 15305,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15263,
                                "src": "5604:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5592:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes1_$",
                              "typeString": "type(bytes1)"
                            },
                            "typeName": {
                              "id": 15302,
                              "name": "bytes1",
                              "nodeType": "ElementaryTypeName",
                              "src": "5592:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5592:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 15301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5586:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": {
                          "id": 15300,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5586:5:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15311,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5586:41:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5550:77:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 15313,
                  "nodeType": "ExpressionStatement",
                  "src": "5550:77:78"
                },
                {
                  "expression": {
                    "id": 15316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15314,
                      "name": "pointer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15263,
                      "src": "5637:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 15315,
                      "name": "lenExecuteContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15254,
                      "src": "5648:25:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5637:36:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15317,
                  "nodeType": "ExpressionStatement",
                  "src": "5637:36:78"
                },
                {
                  "expression": {
                    "id": 15331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15318,
                      "name": "lenExecutionDataDepositor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15257,
                      "src": "5683:25:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15323,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15234,
                                "src": "5732:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15325,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15263,
                                  "src": "5745:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 15326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5756:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5745:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "5732:26:78",
                              "startExpression": {
                                "id": 15324,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15263,
                                "src": "5737:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5725:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes1_$",
                              "typeString": "type(bytes1)"
                            },
                            "typeName": {
                              "id": 15321,
                              "name": "bytes1",
                              "nodeType": "ElementaryTypeName",
                              "src": "5725:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5725:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 15320,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5719:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": {
                          "id": 15319,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5719:5:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15330,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5719:41:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5683:77:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 15332,
                  "nodeType": "ExpressionStatement",
                  "src": "5683:77:78"
                },
                {
                  "expression": {
                    "id": 15349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15333,
                      "name": "executionDataDepositor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15260,
                      "src": "5770:22:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 15340,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15234,
                                    "src": "5830:4:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  },
                                  "endExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 15344,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 15342,
                                      "name": "pointer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15263,
                                      "src": "5843:7:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "id": 15343,
                                      "name": "lenExecutionDataDepositor",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15257,
                                      "src": "5853:25:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "5843:35:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 15345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexRangeAccess",
                                  "src": "5830:49:78",
                                  "startExpression": {
                                    "id": 15341,
                                    "name": "pointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15263,
                                    "src": "5835:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                ],
                                "id": 15339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5822:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes20_$",
                                  "typeString": "type(bytes20)"
                                },
                                "typeName": {
                                  "id": 15338,
                                  "name": "bytes20",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5822:7:78",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5822:58:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            ],
                            "id": 15337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5814:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint160_$",
                              "typeString": "type(uint160)"
                            },
                            "typeName": {
                              "id": 15336,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "5814:7:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5814:67:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        ],
                        "id": 15335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5806:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 15334,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5806:7:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15348,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5806:76:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5770:112:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15350,
                  "nodeType": "ExpressionStatement",
                  "src": "5770:112:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 15354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 15352,
                          "name": "maxFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15248,
                          "src": "5901:6:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 15353,
                          "name": "MAX_FEE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15182,
                          "src": "5910:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5901:16:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "7265717565737465642066656520746f6f206c61726765",
                        "id": 15355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5919:25:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_48eea2e7835f01385fb99f401d0993f0b384de82e2d0099c16d455a9a9c00b9d",
                          "typeString": "literal_string \"requested fee too large\""
                        },
                        "value": "requested fee too large"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_48eea2e7835f01385fb99f401d0993f0b384de82e2d0099c16d455a9a9c00b9d",
                          "typeString": "literal_string \"requested fee too large\""
                        }
                      ],
                      "id": 15351,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5893:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5893:52:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15357,
                  "nodeType": "ExpressionStatement",
                  "src": "5893:52:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 15359,
                          "name": "depositor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15232,
                          "src": "5963:9:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 15360,
                          "name": "executionDataDepositor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15260,
                          "src": "5976:22:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5963:35:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "696e636f7272656374206465706f7369746f7220696e206465706f7369742064617461",
                        "id": 15362,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6000:37:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dec96eeeb75c48ba1a9ba063e01f0196332652b091015273e0adeff7ae747a04",
                          "typeString": "literal_string \"incorrect depositor in deposit data\""
                        },
                        "value": "incorrect depositor in deposit data"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dec96eeeb75c48ba1a9ba063e01f0196332652b091015273e0adeff7ae747a04",
                          "typeString": "literal_string \"incorrect depositor in deposit data\""
                        }
                      ],
                      "id": 15358,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5955:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5955:83:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15364,
                  "nodeType": "ExpressionStatement",
                  "src": "5955:83:78"
                }
              ]
            },
            "documentation": {
              "id": 15228,
              "nodeType": "StructuredDocumentation",
              "src": "1392:3465:78",
              "text": "@notice A deposit is initiated by making a deposit in the Bridge contract.\n@param resourceID ResourceID used to find address of contract to be used for deposit.\n@param depositor Address of the account making deposit in the Bridge contract.\n@param data Structure should be constructed as follows:\nmaxFee:                       uint256  bytes  0                                                                                           -  32\nlen(executeFuncSignature):    uint16   bytes  32                                                                                          -  34\nexecuteFuncSignature:         bytes    bytes  34                                                                                          -  34 + len(executeFuncSignature)\nlen(executeContractAddress):  uint8    bytes  34 + len(executeFuncSignature)                                                              -  35 + len(executeFuncSignature)\nexecuteContractAddress        bytes    bytes  35 + len(executeFuncSignature)                                                              -  35 + len(executeFuncSignature) + len(executeContractAddress)\nlen(executionDataDepositor):  uint8    bytes  35 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress)\nexecutionDataDepositor:       bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)\nexecutionData:                bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)  -  END\nexecutionData is repacked together with executionDataDepositor address for using it in the target contract.\nIf executionData contains dynamic types then it is necessary to keep the offsets correct.\nexecutionData should be encoded together with a 32-byte address and then passed as a parameter without that address.\nIf the target function accepts (address depositor, bytes executionData)\nthen a function like the following one can be used:\nfunction prepareDepositData(bytes calldata executionData) view external returns (bytes memory) {\nbytes memory encoded = abi.encode(address(0), executionData);\nreturn this.slice(encoded, 32);\n}\nfunction slice(bytes calldata input, uint256 position) pure public returns (bytes memory) {\nreturn input[position:];\n}\nAfter this, the target contract will get the following:\nexecuteFuncSignature(address executionDataDepositor, bytes executionData)\nAnother example: if the target function accepts (address depositor, uint[], address)\nthen a function like the following one can be used:\nfunction prepareDepositData(uint[] calldata uintArray, address addr) view external returns (bytes memory) {\nbytes memory encoded = abi.encode(address(0), uintArray, addr);\nreturn this.slice(encoded, 32);\n}\nAfter this, the target contract will get the following:\nexecuteFuncSignature(address executionDataDepositor, uint[] uintArray, address addr)"
            },
            "functionSelector": "b07e54bb",
            "id": 15366,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nameLocation": "4871:7:78",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15235,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15230,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "4887:10:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15366,
                  "src": "4879:18:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 15229,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4879:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15232,
                  "mutability": "mutable",
                  "name": "depositor",
                  "nameLocation": "4907:9:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15366,
                  "src": "4899:17:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15231,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4899:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15234,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "4933:4:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15366,
                  "src": "4918:19:78",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15233,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4918:5:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4878:60:78"
            },
            "returnParameters": {
              "id": 15238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15237,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15366,
                  "src": "4962:12:78",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15236,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4962:5:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4961:14:78"
            },
            "scope": 15571,
            "src": "4862:1183:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              18290
            ],
            "body": {
              "id": 15569,
              "nodeType": "Block",
              "src": "9437:1573:78",
              "statements": [
                {
                  "assignments": [
                    15379
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15379,
                      "mutability": "mutable",
                      "name": "maxFee",
                      "nameLocation": "9462:6:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9447:21:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 15378,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9447:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15380,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9447:21:78"
                },
                {
                  "assignments": [
                    15382
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15382,
                      "mutability": "mutable",
                      "name": "lenExecuteFuncSignature",
                      "nameLocation": "9493:23:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9478:38:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 15381,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "9478:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15383,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9478:38:78"
                },
                {
                  "assignments": [
                    15385
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15385,
                      "mutability": "mutable",
                      "name": "executeFuncSignature",
                      "nameLocation": "9541:20:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9526:35:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 15384,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "9526:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15386,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9526:35:78"
                },
                {
                  "assignments": [
                    15388
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15388,
                      "mutability": "mutable",
                      "name": "lenExecuteContractAddress",
                      "nameLocation": "9586:25:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9571:40:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 15387,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "9571:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15389,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9571:40:78"
                },
                {
                  "assignments": [
                    15391
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15391,
                      "mutability": "mutable",
                      "name": "executeContractAddress",
                      "nameLocation": "9636:22:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9621:37:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15390,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9621:7:78",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15392,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9621:37:78"
                },
                {
                  "assignments": [
                    15394
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15394,
                      "mutability": "mutable",
                      "name": "lenExecutionDataDepositor",
                      "nameLocation": "9683:25:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9668:40:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 15393,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "9668:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15395,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9668:40:78"
                },
                {
                  "assignments": [
                    15397
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15397,
                      "mutability": "mutable",
                      "name": "executionDataDepositor",
                      "nameLocation": "9733:22:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9718:37:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15396,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9718:7:78",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15398,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9718:37:78"
                },
                {
                  "assignments": [
                    15400
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15400,
                      "mutability": "mutable",
                      "name": "executionData",
                      "nameLocation": "9780:13:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9765:28:78",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 15399,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "9765:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15401,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9765:28:78"
                },
                {
                  "assignments": [
                    15403
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15403,
                      "mutability": "mutable",
                      "name": "pointer",
                      "nameLocation": "9820:7:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "9812:15:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 15402,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9812:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15405,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 15404,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9830:1:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9812:19:78"
                },
                {
                  "expression": {
                    "id": 15418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15406,
                      "name": "maxFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15379,
                      "src": "9842:6:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15411,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15371,
                                "src": "9894:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15414,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15412,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15403,
                                  "src": "9900:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 15413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9911:2:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "9900:13:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "9894:20:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9886:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 15409,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9886:7:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9886:29:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 15408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "9878:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 15407,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9878:7:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15417,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9878:38:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9842:74:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15419,
                  "nodeType": "ExpressionStatement",
                  "src": "9842:74:78"
                },
                {
                  "expression": {
                    "id": 15433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15420,
                      "name": "lenExecuteFuncSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15382,
                      "src": "9927:23:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15425,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15371,
                                "src": "9977:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15427,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15403,
                                  "src": "9990:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "32",
                                  "id": 15428,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10001:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "9990:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "9977:26:78",
                              "startExpression": {
                                "id": 15426,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15403,
                                "src": "9982:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15424,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9970:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes2_$",
                              "typeString": "type(bytes2)"
                            },
                            "typeName": {
                              "id": 15423,
                              "name": "bytes2",
                              "nodeType": "ElementaryTypeName",
                              "src": "9970:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9970:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        ],
                        "id": 15422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "9963:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint16_$",
                          "typeString": "type(uint16)"
                        },
                        "typeName": {
                          "id": 15421,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "9963:6:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9963:42:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "9927:78:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 15434,
                  "nodeType": "ExpressionStatement",
                  "src": "9927:78:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "34",
                        "id": 15438,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10046:1:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "expression": {
                        "id": 15435,
                        "name": "lenExecuteFuncSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15382,
                        "src": "10015:23:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "id": 15437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mustBe",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19157,
                      "src": "10015:30:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 15439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10015:33:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15440,
                  "nodeType": "ExpressionStatement",
                  "src": "10015:33:78"
                },
                {
                  "expression": {
                    "id": 15451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15441,
                      "name": "executeFuncSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15385,
                      "src": "10058:20:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 15444,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15371,
                            "src": "10101:4:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "endExpression": {
                            "id": 15448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 15446,
                              "name": "pointer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15403,
                              "src": "10114:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "id": 15447,
                              "name": "lenExecuteFuncSignature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15382,
                              "src": "10125:23:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "src": "10114:34:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexRangeAccess",
                          "src": "10101:48:78",
                          "startExpression": {
                            "id": 15445,
                            "name": "pointer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15403,
                            "src": "10106:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                            "typeString": "bytes calldata slice"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                            "typeString": "bytes calldata slice"
                          }
                        ],
                        "id": 15443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10094:6:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes4_$",
                          "typeString": "type(bytes4)"
                        },
                        "typeName": {
                          "id": 15442,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "10094:6:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15450,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10094:56:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "src": "10058:92:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 15452,
                  "nodeType": "ExpressionStatement",
                  "src": "10058:92:78"
                },
                {
                  "expression": {
                    "id": 15466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15453,
                      "name": "lenExecuteContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15388,
                      "src": "10160:25:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15458,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15371,
                                "src": "10209:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15460,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15403,
                                  "src": "10222:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 15461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10233:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "10222:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "10209:26:78",
                              "startExpression": {
                                "id": 15459,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15403,
                                "src": "10214:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10202:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes1_$",
                              "typeString": "type(bytes1)"
                            },
                            "typeName": {
                              "id": 15456,
                              "name": "bytes1",
                              "nodeType": "ElementaryTypeName",
                              "src": "10202:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10202:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 15455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10196:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": {
                          "id": 15454,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "10196:5:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15465,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10196:41:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10160:77:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 15467,
                  "nodeType": "ExpressionStatement",
                  "src": "10160:77:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "3230",
                        "id": 15471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10280:2:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        },
                        "value": "20"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        }
                      ],
                      "expression": {
                        "id": 15468,
                        "name": "lenExecuteContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15388,
                        "src": "10247:25:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 15470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mustBe",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19157,
                      "src": "10247:32:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 15472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10247:36:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15473,
                  "nodeType": "ExpressionStatement",
                  "src": "10247:36:78"
                },
                {
                  "expression": {
                    "id": 15490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15474,
                      "name": "executeContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15391,
                      "src": "10293:22:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 15481,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15371,
                                    "src": "10353:4:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  },
                                  "endExpression": {
                                    "id": 15485,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 15483,
                                      "name": "pointer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15403,
                                      "src": "10366:7:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 15484,
                                      "name": "lenExecuteContractAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15388,
                                      "src": "10377:25:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "10366:36:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 15486,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexRangeAccess",
                                  "src": "10353:50:78",
                                  "startExpression": {
                                    "id": 15482,
                                    "name": "pointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15403,
                                    "src": "10358:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                ],
                                "id": 15480,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10345:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes20_$",
                                  "typeString": "type(bytes20)"
                                },
                                "typeName": {
                                  "id": 15479,
                                  "name": "bytes20",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10345:7:78",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10345:59:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            ],
                            "id": 15478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10337:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint160_$",
                              "typeString": "type(uint160)"
                            },
                            "typeName": {
                              "id": 15477,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "10337:7:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10337:68:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        ],
                        "id": 15476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10329:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 15475,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10329:7:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10329:77:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10293:113:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15491,
                  "nodeType": "ExpressionStatement",
                  "src": "10293:113:78"
                },
                {
                  "expression": {
                    "id": 15505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15492,
                      "name": "lenExecutionDataDepositor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15394,
                      "src": "10416:25:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15497,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15371,
                                "src": "10465:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 15501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15499,
                                  "name": "pointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15403,
                                  "src": "10478:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 15500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10489:1:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "10478:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "10465:26:78",
                              "startExpression": {
                                "id": 15498,
                                "name": "pointer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15403,
                                "src": "10470:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 15496,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10458:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes1_$",
                              "typeString": "type(bytes1)"
                            },
                            "typeName": {
                              "id": 15495,
                              "name": "bytes1",
                              "nodeType": "ElementaryTypeName",
                              "src": "10458:6:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10458:34:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 15494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10452:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": {
                          "id": 15493,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "10452:5:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10452:41:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10416:77:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 15506,
                  "nodeType": "ExpressionStatement",
                  "src": "10416:77:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "3230",
                        "id": 15510,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10536:2:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        },
                        "value": "20"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        }
                      ],
                      "expression": {
                        "id": 15507,
                        "name": "lenExecutionDataDepositor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15394,
                        "src": "10503:25:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 15509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mustBe",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19157,
                      "src": "10503:32:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 15511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10503:36:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15512,
                  "nodeType": "ExpressionStatement",
                  "src": "10503:36:78"
                },
                {
                  "expression": {
                    "id": 15529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15513,
                      "name": "executionDataDepositor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15397,
                      "src": "10549:22:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 15520,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15371,
                                    "src": "10609:4:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  },
                                  "endExpression": {
                                    "id": 15524,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 15522,
                                      "name": "pointer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15403,
                                      "src": "10622:7:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 15523,
                                      "name": "lenExecutionDataDepositor",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15394,
                                      "src": "10633:25:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "10622:36:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 15525,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexRangeAccess",
                                  "src": "10609:50:78",
                                  "startExpression": {
                                    "id": 15521,
                                    "name": "pointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15403,
                                    "src": "10614:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                    "typeString": "bytes calldata slice"
                                  }
                                ],
                                "id": 15519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10601:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes20_$",
                                  "typeString": "type(bytes20)"
                                },
                                "typeName": {
                                  "id": 15518,
                                  "name": "bytes20",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10601:7:78",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10601:59:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            ],
                            "id": 15517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10593:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint160_$",
                              "typeString": "type(uint160)"
                            },
                            "typeName": {
                              "id": 15516,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "10593:7:78",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10593:68:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        ],
                        "id": 15515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10585:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 15514,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10585:7:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15528,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10585:77:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10549:113:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15530,
                  "nodeType": "ExpressionStatement",
                  "src": "10549:113:78"
                },
                {
                  "expression": {
                    "id": 15538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15531,
                      "name": "executionData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15400,
                      "src": "10672:13:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 15534,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15371,
                            "src": "10714:4:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "id": 15536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexRangeAccess",
                          "src": "10714:14:78",
                          "startExpression": {
                            "id": 15535,
                            "name": "pointer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15403,
                            "src": "10719:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                            "typeString": "bytes calldata slice"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                            "typeString": "bytes calldata slice"
                          }
                        ],
                        "id": 15533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10708:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                          "typeString": "type(bytes storage pointer)"
                        },
                        "typeName": {
                          "id": 15532,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10708:5:78",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15537,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10708:21:78",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes calldata"
                      }
                    },
                    "src": "10672:57:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 15539,
                  "nodeType": "ExpressionStatement",
                  "src": "10672:57:78"
                },
                {
                  "assignments": [
                    15541
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15541,
                      "mutability": "mutable",
                      "name": "callData",
                      "nameLocation": "10753:8:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "10740:21:78",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 15540,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10740:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15551,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 15544,
                        "name": "executeFuncSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15385,
                        "src": "10781:20:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 15547,
                            "name": "executionDataDepositor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15397,
                            "src": "10814:22:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15545,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "10803:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "10803:10:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 15548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10803:34:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 15549,
                        "name": "executionData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15400,
                        "src": "10839:13:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 15542,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "10764:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 15543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "10764:16:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 15550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10764:89:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10740:113:78"
                },
                {
                  "assignments": [
                    15553,
                    15555
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15553,
                      "mutability": "mutable",
                      "name": "success",
                      "nameLocation": "10869:7:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "10864:12:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 15552,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "10864:4:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15555,
                      "mutability": "mutable",
                      "name": "returndata",
                      "nameLocation": "10891:10:78",
                      "nodeType": "VariableDeclaration",
                      "scope": 15569,
                      "src": "10878:23:78",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 15554,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10878:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15562,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 15560,
                        "name": "callData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15541,
                        "src": "10946:8:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "id": 15556,
                          "name": "executeContractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15391,
                          "src": "10905:22:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 15557,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "call",
                        "nodeType": "MemberAccess",
                        "src": "10905:27:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                        }
                      },
                      "id": 15559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "gas"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "id": 15558,
                          "name": "maxFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15379,
                          "src": "10938:6:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "src": "10905:40:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                        "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                      }
                    },
                    "id": 15561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10905:50:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10863:92:78"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15565,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15553,
                        "src": "10983:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "id": 15566,
                        "name": "returndata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15555,
                        "src": "10992:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 15563,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "10972:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 15564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encode",
                      "nodeType": "MemberAccess",
                      "src": "10972:10:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 15567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10972:31:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 15377,
                  "id": 15568,
                  "nodeType": "Return",
                  "src": "10965:38:78"
                }
              ]
            },
            "documentation": {
              "id": 15367,
              "nodeType": "StructuredDocumentation",
              "src": "6051:3272:78",
              "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n@param resourceID ResourceID used to find address of contract to be used for deposit.\n@param data Structure should be constructed as follows:\nmaxFee:                             uint256  bytes  0                                                             -  32\nlen(executeFuncSignature):          uint16   bytes  32                                                            -  34\nexecuteFuncSignature:               bytes    bytes  34                                                            -  34 + len(executeFuncSignature)\nlen(executeContractAddress):        uint8    bytes  34 + len(executeFuncSignature)                                -  35 + len(executeFuncSignature)\nexecuteContractAddress              bytes    bytes  35 + len(executeFuncSignature)                                -  35 + len(executeFuncSignature) + len(executeContractAddress)\nlen(executionDataDepositor):        uint8    bytes  35 + len(executeFuncSignature) + len(executeContractAddress)  -  36 + len(executeFuncSignature) + len(executeContractAddress)\nexecutionDataDepositor:             bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)\nexecutionData:                      bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)  -  END\nexecutionData is repacked together with executionDataDepositor address for using it in the target contract.\nIf executionData contains dynamic types then it is necessary to keep the offsets correct.\nexecutionData should be encoded together with a 32-byte address and then passed as a parameter without that address.\nIf the target function accepts (address depositor, bytes executionData)\nthen a function like the following one can be used:\nfunction prepareDepositData(bytes calldata executionData) view external returns (bytes memory) {\nbytes memory encoded = abi.encode(address(0), executionData);\nreturn this.slice(encoded, 32);\n}\nfunction slice(bytes calldata input, uint256 position) pure public returns (bytes memory) {\nreturn input[position:];\n}\nAfter this, the target contract will get the following:\nexecuteFuncSignature(address executionDataDepositor, bytes executionData)\nAnother example: if the target function accepts (address depositor, uint[], address)\nthen a function like the following one can be used:\nfunction prepareDepositData(uint[] calldata uintArray, address addr) view external returns (bytes memory) {\nbytes memory encoded = abi.encode(address(0), uintArray, addr);\nreturn this.slice(encoded, 32);\n}\nAfter this, the target contract will get the following:\nexecuteFuncSignature(address executionDataDepositor, uint[] uintArray, address addr)"
            },
            "functionSelector": "e248cff2",
            "id": 15570,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 15374,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 15373,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 15191,
                  "src": "9403:10:78"
                },
                "nodeType": "ModifierInvocation",
                "src": "9403:10:78"
              }
            ],
            "name": "executeProposal",
            "nameLocation": "9337:15:78",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15369,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "9361:10:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15570,
                  "src": "9353:18:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 15368,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9353:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15371,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "9388:4:78",
                  "nodeType": "VariableDeclaration",
                  "scope": 15570,
                  "src": "9373:19:78",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15370,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9373:5:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9352:41:78"
            },
            "returnParameters": {
              "id": 15377,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15376,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15570,
                  "src": "9423:12:78",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15375,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9423:5:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9422:14:78"
            },
            "scope": 15571,
            "src": "9328:1682:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 15572,
        "src": "354:10658:78",
        "usedErrors": [
          19116
        ]
      }
    ],
    "src": "81:10932:78"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.11+commit.d7f03943.Emscripten.clang"
  },
  "networks": {
    "1727170272871": {
      "events": {},
      "links": {},
      "address": "0x94e9070f0354b69E7FB583134A820949A390D341",
      "transactionHash": "0x22092e7f47a8edc98c5e9f0c7fd08b648c78046ceb03711d5b8cd1df1c342bcf"
    },
    "1727170313921": {
      "events": {},
      "links": {},
      "address": "0x94e9070f0354b69E7FB583134A820949A390D341",
      "transactionHash": "0x6125adfc5341d5f5ef4c09511f1c9ebbef83667d42c06ad67a175cc603efc9bf"
    }
  },
  "schemaVersion": "3.4.6",
  "updatedAt": "2024-09-24T09:32:09.271Z",
  "networkType": "ethereum",
  "devdoc": {
    "author": "ChainSafe Systems.",
    "kind": "dev",
    "methods": {
      "constructor": {
        "params": {
          "bridgeAddress": "Contract address of previously deployed Bridge."
        }
      },
      "deposit(bytes32,address,bytes)": {
        "params": {
          "data": "Structure should be constructed as follows: maxFee:                       uint256  bytes  0                                                                                           -  32 len(executeFuncSignature):    uint16   bytes  32                                                                                          -  34 executeFuncSignature:         bytes    bytes  34                                                                                          -  34 + len(executeFuncSignature) len(executeContractAddress):  uint8    bytes  34 + len(executeFuncSignature)                                                              -  35 + len(executeFuncSignature) executeContractAddress        bytes    bytes  35 + len(executeFuncSignature)                                                              -  35 + len(executeFuncSignature) + len(executeContractAddress) len(executionDataDepositor):  uint8    bytes  35 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) executionDataDepositor:       bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor) executionData:                bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)  -  END executionData is repacked together with executionDataDepositor address for using it in the target contract. If executionData contains dynamic types then it is necessary to keep the offsets correct. executionData should be encoded together with a 32-byte address and then passed as a parameter without that address. If the target function accepts (address depositor, bytes executionData) then a function like the following one can be used: function prepareDepositData(bytes calldata executionData) view external returns (bytes memory) { bytes memory encoded = abi.encode(address(0), executionData); return this.slice(encoded, 32); } function slice(bytes calldata input, uint256 position) pure public returns (bytes memory) { return input[position:]; } After this, the target contract will get the following: executeFuncSignature(address executionDataDepositor, bytes executionData) Another example: if the target function accepts (address depositor, uint[], address) then a function like the following one can be used: function prepareDepositData(uint[] calldata uintArray, address addr) view external returns (bytes memory) { bytes memory encoded = abi.encode(address(0), uintArray, addr); return this.slice(encoded, 32); } After this, the target contract will get the following: executeFuncSignature(address executionDataDepositor, uint[] uintArray, address addr)",
          "depositor": "Address of the account making deposit in the Bridge contract.",
          "resourceID": "ResourceID used to find address of contract to be used for deposit."
        }
      },
      "executeProposal(bytes32,bytes)": {
        "params": {
          "data": "Structure should be constructed as follows: maxFee:                             uint256  bytes  0                                                             -  32 len(executeFuncSignature):          uint16   bytes  32                                                            -  34 executeFuncSignature:               bytes    bytes  34                                                            -  34 + len(executeFuncSignature) len(executeContractAddress):        uint8    bytes  34 + len(executeFuncSignature)                                -  35 + len(executeFuncSignature) executeContractAddress              bytes    bytes  35 + len(executeFuncSignature)                                -  35 + len(executeFuncSignature) + len(executeContractAddress) len(executionDataDepositor):        uint8    bytes  35 + len(executeFuncSignature) + len(executeContractAddress)  -  36 + len(executeFuncSignature) + len(executeContractAddress) executionDataDepositor:             bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress)                                -  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor) executionData:                      bytes    bytes  36 + len(executeFuncSignature) + len(executeContractAddress) + len(executionDataDepositor)  -  END executionData is repacked together with executionDataDepositor address for using it in the target contract. If executionData contains dynamic types then it is necessary to keep the offsets correct. executionData should be encoded together with a 32-byte address and then passed as a parameter without that address. If the target function accepts (address depositor, bytes executionData) then a function like the following one can be used: function prepareDepositData(bytes calldata executionData) view external returns (bytes memory) { bytes memory encoded = abi.encode(address(0), executionData); return this.slice(encoded, 32); } function slice(bytes calldata input, uint256 position) pure public returns (bytes memory) { return input[position:]; } After this, the target contract will get the following: executeFuncSignature(address executionDataDepositor, bytes executionData) Another example: if the target function accepts (address depositor, uint[], address) then a function like the following one can be used: function prepareDepositData(uint[] calldata uintArray, address addr) view external returns (bytes memory) { bytes memory encoded = abi.encode(address(0), uintArray, addr); return this.slice(encoded, 32); } After this, the target contract will get the following: executeFuncSignature(address executionDataDepositor, uint[] uintArray, address addr)",
          "resourceID": "ResourceID used to find address of contract to be used for deposit."
        }
      },
      "setResource(bytes32,address,bytes)": {
        "params": {
          "args": "Additional data to be passed to specified handler.",
          "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.",
          "resourceID": "ResourceID to be used when making deposits."
        }
      }
    },
    "title": "Handles generic deposits and deposit executions.",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "deposit(bytes32,address,bytes)": {
        "notice": "A deposit is initiated by making a deposit in the Bridge contract."
      },
      "executeProposal(bytes32,bytes)": {
        "notice": "Proposal execution should be initiated when a proposal is finalized in the Bridge contract."
      },
      "setResource(bytes32,address,bytes)": {
        "notice": "Blank function, required in IHandler."
      }
    },
    "notice": "This contract is intended to be used with the Bridge contract.",
    "version": 1
  }
}