{
    "contractName": "TestRecipient",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "forwarder",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "message",
                    "type": "string"
                }
            ],
            "name": "Reverting",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "message",
                    "type": "string"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "realSender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "msgSender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "origin",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "msgValue",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "gasLeft",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "balance",
                    "type": "uint256"
                }
            ],
            "name": "SampleRecipientEmitted",
            "type": "event"
        },
        {
            "stateMutability": "payable",
            "type": "fallback"
        },
        {
            "inputs": [],
            "name": "getTrustedForwarder",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "forwarder",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "forwarder",
                    "type": "address"
                }
            ],
            "name": "isTrustedForwarder",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "paymaster",
            "outputs": [
                {
                    "internalType": "address payable",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "stateMutability": "payable",
            "type": "receive"
        },
        {
            "inputs": [],
            "name": "testRevert",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address payable",
                    "name": "_paymaster",
                    "type": "address"
                }
            ],
            "name": "setWithdrawDuringRelayedCall",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "recipientRevert",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "message",
                    "type": "string"
                }
            ],
            "name": "emitMessage",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "payable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "withdrawAllBalance",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "message",
                    "type": "string"
                }
            ],
            "name": "dontEmitMessage",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "emitMessageNoParams",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "len",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "doRevert",
                    "type": "bool"
                }
            ],
            "name": "checkReturnValues",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bool",
                    "name": "doRevert",
                    "type": "bool"
                }
            ],
            "name": "checkNoReturnValues",
            "outputs": [],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"Reverting\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"realSender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLeft\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"SampleRecipientEmitted\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"doRevert\",\"type\":\"bool\"}],\"name\":\"checkNoReturnValues\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"doRevert\",\"type\":\"bool\"}],\"name\":\"checkReturnValues\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"dontEmitMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"emitMessage\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emitMessageNoParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTrustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymaster\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recipientRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_paymaster\",\"type\":\"address\"}],\"name\":\"setWithdrawDuringRelayedCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawAllBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getTrustedForwarder()\":{\"returns\":{\"forwarder\":\"The address of the Forwarder contract that is being used.\"}},\"isTrustedForwarder(address)\":{\"params\":{\"forwarder\":\"The address of the Forwarder contract that is being used.\"},\"returns\":{\"_0\":\"isTrustedForwarder `true` if the Forwarder is trusted to forward relayed transactions by this Recipient.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getTrustedForwarder()\":{\"notice\":\":warning: **Warning** :warning: The Forwarder can have a full control over your Recipient. Only trust verified Forwarder.Method is not a required method to allow Recipients to trust multiple Forwarders. Not recommended yet.\"},\"isTrustedForwarder(address)\":{\"notice\":\":warning: **Warning** :warning: The Forwarder can have a full control over your Recipient. Only trust verified Forwarder.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/alexf/gsn2/packages/contracts/solpp/test/TestRecipient.sol\":\"TestRecipient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/alexf/gsn2/packages/contracts/solpp/BasePaymaster.sol\":{\"keccak256\":\"0x89c669597c94431753f0e043015677d0a2261121d8dee5db04baa9e0bd60506e\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://195cad8f002b5fd930f007f6f582a8d2193574422c74d65fc556ae58d4227f76\",\"dweb:/ipfs/QmPxDaWYdZfB1kwKCxVMFw92h59RarKXkyadcVT5LT5avd\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/ERC2771Recipient.sol\":{\"keccak256\":\"0x59c3b1808d8e9cdfe652be6e4855e399536b7431d9b2725f8a7ba7ff5cd1d9cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1505389e12708d3de0252d9da1bc9c7fc03f39273bdfb0deb667adb23082e6b\",\"dweb:/ipfs/QmXdWyNCnef8jjELUed3SZEZoUKHVT6yzVr9wqi6fZ2X1E\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/forwarder/IForwarder.sol\":{\"keccak256\":\"0xef3d770001c3245db4408cdd0afdfc622695ccfe31f28b74571d05158bbf83f8\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://08949174ed05b596d89c8f1eeedfeb254993b84054bbc1ff6081ad926f5db406\",\"dweb:/ipfs/QmNQtKzHpie4Esocxuc9YrPtGQyA928a1a5TWbVc7cPoqk\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0x92a3665ec2fc3d2ab78cf8a08451b2ab6466dc7fae3c215150be2132500406fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://364eee344363535733b4cc1a7748e1fc8b10786f6df6c0e2bc0082bcb2477e0e\",\"dweb:/ipfs/QmfCwWAxFqU4woSqu3g5BFPASEA7eCSwcwUSHM9EoYhYdu\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x205617108fad6f3543fc12773e9d25998e944852e8ed9d71f79cb799ae299246\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://4903018f63b15211f2714edcf1c56f5c0bee6fea07efaaf908d3a78d07fb6d84\",\"dweb:/ipfs/Qmezexeh6GszFUHW2dgTGWTfb613Ni3tfjLqAtdAYAxCpQ\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayHub.sol\":{\"keccak256\":\"0x19dcbf5e1bfaa413b6800ad84ffedd2989b401cede299f009ff62c33e03ccfae\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://bb5cb7bee7de97770e374b4cad1265c636a740dc7a2013d686a89d9398ba3098\",\"dweb:/ipfs/QmSqhNkFwDtS1EnupbQWduDm78N6s8c1zqXf5aLqZF69Xx\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IStakeManager.sol\":{\"keccak256\":\"0x27535f3677a2c373862d8672725632fdcabdf5d0e784f80c158063f55be68b5a\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://904ad156bf1cac29f9e13619ee0ee41e602b6cf1fafedea0a1d3be7a7accc654\",\"dweb:/ipfs/QmXVy5gfYXSWYFrkmL2u9jctZDXupiNWbif5tFVpVZMPww\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/test/TestPaymasterConfigurableMisbehavior.sol\":{\"keccak256\":\"0xb383ff5807d66eaba645b63fa718f63b351cd134ec7b1a897ec9dc7ee4d81b3e\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://c3c1db889cad142731dad08fd76cbb7585aed967f47cd7c785b76bd7530180f3\",\"dweb:/ipfs/QmZfefyFmWeDZ8mNSrz6Atzq6sVMbqTkmCM7wf1PGwZ7xg\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/test/TestPaymasterEverythingAccepted.sol\":{\"keccak256\":\"0xd21014ab3a4ada1c21486db36c971e30be61451e519eaa61f3f074908247c607\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://2956d687a5691de930f698a22a1ff62b151792fbfd4e4a928a5cf6d982e03921\",\"dweb:/ipfs/QmNgkGYL4vqUu6jHHHsRfdCFLnvRQ7WTatkVVJoW2YwJtX\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/test/TestRecipient.sol\":{\"keccak256\":\"0x24d55c9cee16f05f2ee14c9211b7d579b62c509295189d5a254d3f0837167c12\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://cf7c815536709391f095309d44af89067c67898d72122cc46e5d2105940c60ba\",\"dweb:/ipfs/QmVnpmudnkgaXokzaZjhedY6xAKjDv5gF6m8JWBeaAAZTR\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/GsnEip712Library.sol\":{\"keccak256\":\"0xc35980f371cab5d9af3e1ead06f82b2afb705a8dbb2a5f53793f0179c485c274\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://dd7732d690c7959df567ee3e4863b0045583506fbae3c87b684b6173fd126968\",\"dweb:/ipfs/QmUbcUAqxKZTQS5ZwwPVnfNAtCmas4pPWQhRWXXwWQEeef\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/GsnTypes.sol\":{\"keccak256\":\"0xfc3ed2bbd925e24facf0c3bb96d57dd7fc5bcc4a684b5473f04e8d209b758805\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://cb57b5b38d3e588f119ae45174891f2049d1d0de160a12b81a20335cd8bf731b\",\"dweb:/ipfs/Qmf6xfbdLbTKEpnzxwnSaRy1YZJtLYTZh8URqry86oyoSU\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/GsnUtils.sol\":{\"keccak256\":\"0x8616968305b6127f4cb43209502e074c3964230a66c703e6b8623b03e5ec6442\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://2b1f1163fee75613024b38c25e17649933919f4a47a5ba5e8c3ea046023eb1ad\",\"dweb:/ipfs/QmNWReZE8BQ82eXahdKjnNjQWHuH9L9wcTcnKgyV5ypKCa\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/MinLibBytes.sol\":{\"keccak256\":\"0xa61a3d8fcd89182975d0bd17b86c22b6affd2f7bf26db66b1ddb2ee396f122ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e0bc21e2c8c2f483aee9d5bc003fa77dc7afddbaa7cc99560581a416cfdef11\",\"dweb:/ipfs/QmbwLE7AJpoH2LVeeHxewq3tf1vXhLNUdYsubWxzDGKfTr\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xd04b0f06e0666f29cf7cccc82894de541e19bb30a765b107b1e40bb7fe5f7d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b652499d098e88d8d878374616bb58434301061cae2253298b3f374044e0ddb\",\"dweb:/ipfs/QmbhAzctqo5jrSKU6idHdVyqfmzCcDbNUPvmx4GiXxfA6q\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461\",\"dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}",
    "bytecode": "0x608060405234801561001057600080fd5b506040516109e13803806109e183398101604081905261002f91610050565b600080546001600160a01b0319166001600160a01b03831617905550610080565b60006020828403121561006257600080fd5b81516001600160a01b038116811461007957600080fd5b9392505050565b6109528061008f6000396000f3fe6080604052600436106100ab5760003560e01c8063b51fab0a11610064578063b51fab0a146101c9578063b973c5a6146101e8578063c095ad3c146101fd578063ce1b815f1461021d578063dc59c90f1461023b578063de6e56f614610250576100b2565b806316e4cbf9146100c45780632ac0df26146101015780633b17eadc14610121578063572b6c05146101385780638db93e3d14610177578063a26388bb146101b4576100b2565b366100b257005b60001960018190556002819055600355005b3480156100d057600080fd5b506004546100e4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61011461010f3660046106be565b610270565b6040516100f89190610801565b34801561012d57600080fd5b50610136610316565b005b34801561014457600080fd5b5061016761015336600461060d565b6000546001600160a01b0391821691161490565b60405190151581526020016100f8565b34801561018357600080fd5b5061013661019236600461060d565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b3480156101c057600080fd5b50610136610395565b3480156101d557600080fd5b506101366101e436600461064c565b5050565b3480156101f457600080fd5b5061013661043d565b34801561020957600080fd5b50610136610218366004610631565b610485565b34801561022957600080fd5b506000546001600160a01b03166100e4565b34801561024757600080fd5b50610136610490565b34801561025c57600080fd5b5061011461026b366004610788565b610530565b606060005a6004549091506001600160a01b03161561029157610291610316565b7f757e1fd4f3cac236f4594151fa8cb2b3f650fe76098389e524823b76ccbaaf41836102bb6105c4565b33323486476040516102d39796959493929190610814565b60405180910390a1505060408051808201909152601881527f656d69744d6573736167652072657475726e2076616c756500000000000000006020820152919050565b6004805460408051630ec5fab760e21b815290516001600160a01b0390921692633b17eadc9282820192602092908290030181600087803b15801561035a57600080fd5b505af115801561036e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610392919061076f565b50565b30156103d65760405162461bcd60e51b815260206004820152600b60248201526a185b1dd85e5cc819985a5b60aa1b60448201526064015b60405180910390fd5b7f3f110cf99894407239c5fa1bf0523ea12b54ef6eb3e88be600b6a7f0ff76eb0e604051610433906020808252818101527f696620796f7520736565207468697320726576657274206661696c65642e2e2e604082015260600190565b60405180910390a1565b60405162461bcd60e51b815260206004820181905260248201527f74686973206d6574686f64207265766572747320636f6e73697374656e746c7960448201526064016103cd565b801561039257600080fd5b7f757e1fd4f3cac236f4594151fa8cb2b3f650fe76098389e524823b76ccbaaf416104b96105c4565b333260005a6040805160e08082526019908201527f4d6574686f642077697468206e6f20706172616d6574657273000000000000006101008201526001600160a01b03968716602082015294861690850152939091166060830152608082015260a08101919091524760c082015261012001610433565b606060006040518060c00160405280608f815260200161088e608f9139905083815110156105995760405162461bcd60e51b8152602060048201526016602482015275696e76616c6964206c656e3a20746f6f206c6172676560501b60448201526064016103cd565b8381528083156105bc5760405162461bcd60e51b81526004016103cd9190610801565b509392505050565b6000601436108015906105e157506000546001600160a01b031633145b156105f3575060131936013560601c90565b503390565b8035801515811461060857600080fd5b919050565b60006020828403121561061f57600080fd5b813561062a81610878565b9392505050565b60006020828403121561064357600080fd5b61062a826105f8565b6000806020838503121561065f57600080fd5b823567ffffffffffffffff8082111561067757600080fd5b818501915085601f83011261068b57600080fd5b81358181111561069a57600080fd5b8660208285010111156106ac57600080fd5b60209290920196919550909350505050565b6000602082840312156106d057600080fd5b813567ffffffffffffffff808211156106e857600080fd5b818401915084601f8301126106fc57600080fd5b81358181111561070e5761070e610862565b604051601f8201601f19908116603f0116810190838211818310171561073657610736610862565b8160405282815287602084870101111561074f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561078157600080fd5b5051919050565b6000806040838503121561079b57600080fd5b823591506107ab602084016105f8565b90509250929050565b6000815180845260005b818110156107da576020818501810151868301820152016107be565b818111156107ec576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061062a60208301846107b4565b60e08152600061082760e083018a6107b4565b6001600160a01b039889166020840152968816604083015250939095166060840152608083019190915260a082015260c00191909152919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461039257600080fdfe746869732069732061206c6f6e67206d65737361676520746861742077652061726520676f696e6720746f2072657475726e206120736d616c6c20706172742066726f6d2e20776520646f6e2774207573652061206c6f6f702073696e63652077652077616e74206120666978656420676173207573616765206f6620746865206d6574686f6420697473656c662ea264697066735822122030ba41b8081b874a8398062a140f4137fd53411550a15b0120a0c99ce1d4154364736f6c63430008070033",
    "deployedBytecode": "0x6080604052600436106100ab5760003560e01c8063b51fab0a11610064578063b51fab0a146101c9578063b973c5a6146101e8578063c095ad3c146101fd578063ce1b815f1461021d578063dc59c90f1461023b578063de6e56f614610250576100b2565b806316e4cbf9146100c45780632ac0df26146101015780633b17eadc14610121578063572b6c05146101385780638db93e3d14610177578063a26388bb146101b4576100b2565b366100b257005b60001960018190556002819055600355005b3480156100d057600080fd5b506004546100e4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61011461010f3660046106be565b610270565b6040516100f89190610801565b34801561012d57600080fd5b50610136610316565b005b34801561014457600080fd5b5061016761015336600461060d565b6000546001600160a01b0391821691161490565b60405190151581526020016100f8565b34801561018357600080fd5b5061013661019236600461060d565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b3480156101c057600080fd5b50610136610395565b3480156101d557600080fd5b506101366101e436600461064c565b5050565b3480156101f457600080fd5b5061013661043d565b34801561020957600080fd5b50610136610218366004610631565b610485565b34801561022957600080fd5b506000546001600160a01b03166100e4565b34801561024757600080fd5b50610136610490565b34801561025c57600080fd5b5061011461026b366004610788565b610530565b606060005a6004549091506001600160a01b03161561029157610291610316565b7f757e1fd4f3cac236f4594151fa8cb2b3f650fe76098389e524823b76ccbaaf41836102bb6105c4565b33323486476040516102d39796959493929190610814565b60405180910390a1505060408051808201909152601881527f656d69744d6573736167652072657475726e2076616c756500000000000000006020820152919050565b6004805460408051630ec5fab760e21b815290516001600160a01b0390921692633b17eadc9282820192602092908290030181600087803b15801561035a57600080fd5b505af115801561036e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610392919061076f565b50565b30156103d65760405162461bcd60e51b815260206004820152600b60248201526a185b1dd85e5cc819985a5b60aa1b60448201526064015b60405180910390fd5b7f3f110cf99894407239c5fa1bf0523ea12b54ef6eb3e88be600b6a7f0ff76eb0e604051610433906020808252818101527f696620796f7520736565207468697320726576657274206661696c65642e2e2e604082015260600190565b60405180910390a1565b60405162461bcd60e51b815260206004820181905260248201527f74686973206d6574686f64207265766572747320636f6e73697374656e746c7960448201526064016103cd565b801561039257600080fd5b7f757e1fd4f3cac236f4594151fa8cb2b3f650fe76098389e524823b76ccbaaf416104b96105c4565b333260005a6040805160e08082526019908201527f4d6574686f642077697468206e6f20706172616d6574657273000000000000006101008201526001600160a01b03968716602082015294861690850152939091166060830152608082015260a08101919091524760c082015261012001610433565b606060006040518060c00160405280608f815260200161088e608f9139905083815110156105995760405162461bcd60e51b8152602060048201526016602482015275696e76616c6964206c656e3a20746f6f206c6172676560501b60448201526064016103cd565b8381528083156105bc5760405162461bcd60e51b81526004016103cd9190610801565b509392505050565b6000601436108015906105e157506000546001600160a01b031633145b156105f3575060131936013560601c90565b503390565b8035801515811461060857600080fd5b919050565b60006020828403121561061f57600080fd5b813561062a81610878565b9392505050565b60006020828403121561064357600080fd5b61062a826105f8565b6000806020838503121561065f57600080fd5b823567ffffffffffffffff8082111561067757600080fd5b818501915085601f83011261068b57600080fd5b81358181111561069a57600080fd5b8660208285010111156106ac57600080fd5b60209290920196919550909350505050565b6000602082840312156106d057600080fd5b813567ffffffffffffffff808211156106e857600080fd5b818401915084601f8301126106fc57600080fd5b81358181111561070e5761070e610862565b604051601f8201601f19908116603f0116810190838211818310171561073657610736610862565b8160405282815287602084870101111561074f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561078157600080fd5b5051919050565b6000806040838503121561079b57600080fd5b823591506107ab602084016105f8565b90509250929050565b6000815180845260005b818110156107da576020818501810151868301820152016107be565b818111156107ec576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061062a60208301846107b4565b60e08152600061082760e083018a6107b4565b6001600160a01b039889166020840152968816604083015250939095166060840152608083019190915260a082015260c00191909152919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461039257600080fdfe746869732069732061206c6f6e67206d65737361676520746861742077652061726520676f696e6720746f2072657475726e206120736d616c6c20706172742066726f6d2e20776520646f6e2774207573652061206c6f6f702073696e63652077652077616e74206120666978656420676173207573616765206f6620746865206d6574686f6420697473656c662ea264697066735822122030ba41b8081b874a8398062a140f4137fd53411550a15b0120a0c99ce1d4154364736f6c63430008070033",
    "immutableReferences": {},
    "sourceMap": "225:2817:29:-:0;;;275:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1213:17:1;:30;;-1:-1:-1;;;;;;1213:30:1;-1:-1:-1;;;;;1213:30:1;;;;;275:79:29;225:2817;;14:290:63;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:63;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:63:o;:::-;225:2817:29;;;;;;",
    "deployedSourceMap": "225:2817:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;582:8:29;:28;;;620:8;:28;;;658:8;:28;225:2817;900:32;;;;;;;;;;-1:-1:-1;900:32:29;;;;-1:-1:-1;;;;;900:32:29;;;;;;-1:-1:-1;;;;;3483:32:63;;;3465:51;;3453:2;3438:18;900:32:29;;;;;;;;1398:380;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1784:122::-;;;;;;;;;;;;;:::i;:::-;;1294:144:1;;;;;;;;;;-1:-1:-1;1294:144:1;;;;;:::i;:::-;1378:4;1414:17;-1:-1:-1;;;;;1401:30:1;;;1414:17;;1401:30;;1294:144;;;;3916:14:63;;3909:22;3891:41;;3879:2;3864:18;1294:144:1;3751:187:63;939:112:29;;;;;;;;;;-1:-1:-1;939:112:29;;;;;:::i;:::-;1022:9;:22;;-1:-1:-1;;;;;;1022:22:29;-1:-1:-1;;;;;1022:22:29;;;;;;;;;;939:112;737:157;;;;;;;;;;;;;:::i;1961:59::-;;;;;;;;;;-1:-1:-1;1961:59:29;;;;;:::i;:::-;;;;1299:93;;;;;;;;;;;;;:::i;2889:150::-;;;;;;;;;;-1:-1:-1;2889:150:29;;;;;:::i;:::-;;:::i;1019:119:1:-;;;;;;;;;;-1:-1:-1;1079:17:1;1114;-1:-1:-1;;;;;1114:17:1;1019:119;;2026:185:29;;;;;;;;;;;;;:::i;2276:540::-;;;;;;;;;;-1:-1:-1;2276:540:29;;;;;:::i;:::-;;:::i;1398:380::-;1466:13;1491:15;1509:9;1532;;1491:27;;-1:-1:-1;;;;;;1532:9:29;:23;1528:74;;1571:20;:18;:20::i;:::-;1617:111;1640:7;1649:12;:10;:12::i;:::-;1663:10;1675:9;1686;1697:7;1706:21;1617:111;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;1738:33:29;;;;;;;;;;;;;;;;;;1398:380;-1:-1:-1;1398:380:29:o;1784:122::-;1868:9;;;1831:68;;;-1:-1:-1;;;1831:68:29;;;;-1:-1:-1;;;;;1868:9:29;;;;1831:66;;:68;;;;;;;;;;;;1868:9;;1831:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1784:122::o;737:157::-;792:4;784:27;776:51;;;;-1:-1:-1;;;776:51:29;;7026:2:63;776:51:29;;;7008:21:63;7065:2;7045:18;;;7038:30;-1:-1:-1;;;7084:18:63;;;7077:41;7135:18;;776:51:29;;;;;;;;;842:45;;;;;5091:2:63;5073:21;;;5110:18;;;5103:30;5169:34;5164:2;5149:18;;5142:62;5236:2;5221:18;;4889:356;842:45:29;;;;;;;;737:157::o;1299:93::-;1343:42;;-1:-1:-1;;;1343:42:29;;5452:2:63;1343:42:29;;;5434:21:63;;;5471:18;;;5464:30;5530:34;5510:18;;;5503:62;5582:18;;1343:42:29;5250:356:63;2889:150:29;3023:8;3022:9;3014:18;;;;;2026:185;2079:125;2131:12;:10;:12::i;:::-;2145:10;2157:9;2168:1;2171:9;2079:125;;;6340:3:63;6322:22;;;6381:2;6360:19;;;6353:31;6421:27;6415:3;6400:19;;6393:56;-1:-1:-1;;;;;6561:15:63;;;6554:4;6539:20;;6532:45;6613:15;;;6593:18;;;6586:43;6665:15;;;;6660:2;6645:18;;6638:43;-1:-1:-1;6697:19:63;;6690:35;-1:-1:-1;6741:19:63;;6734:35;;;;2182:21:29;-1:-1:-1;6785:19:63;;6778:35;6481:3;6466:19;2079:125:29;5962:857:63;2276:540:29;2352:13;2393:18;:166;;;;;;;;;;;;;;;;;;;2598:3;2584:4;2578:18;:23;;2569:59;;;;-1:-1:-1;;;2569:59:29;;5813:2:63;2569:59:29;;;5795:21:63;5852:2;5832:18;;;5825:30;-1:-1:-1;;;5871:18:63;;;5864:52;5933:18;;2569:59:29;5611:346:63;2569:59:29;2736:17;;;2743:4;2772:9;;2764:24;;;;-1:-1:-1;;;2764:24:29;;;;;;;;:::i;:::-;-1:-1:-1;2805:4:29;2276:540;-1:-1:-1;;;2276:540:29:o;1482:547:1:-;1544:11;1590:2;1571:8;:21;;;;:55;;-1:-1:-1;1378:4:1;1414:17;-1:-1:-1;;;;;1414:17:1;1615:10;1401:30;1596;1567:456;;;-1:-1:-1;;;1932:14:1;1928:22;1915:36;1912:2;1908:44;1482:547;:::o;1567:456::-;-1:-1:-1;2002:10:1;1482:547;:::o;14:160:63:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;:::-;415:5;179:247;-1:-1:-1;;;179:247:63:o;691:180::-;747:6;800:2;788:9;779:7;775:23;771:32;768:52;;;816:1;813;806:12;768:52;839:26;855:9;839:26;:::i;876:592::-;947:6;955;1008:2;996:9;987:7;983:23;979:32;976:52;;;1024:1;1021;1014:12;976:52;1064:9;1051:23;1093:18;1134:2;1126:6;1123:14;1120:34;;;1150:1;1147;1140:12;1120:34;1188:6;1177:9;1173:22;1163:32;;1233:7;1226:4;1222:2;1218:13;1214:27;1204:55;;1255:1;1252;1245:12;1204:55;1295:2;1282:16;1321:2;1313:6;1310:14;1307:34;;;1337:1;1334;1327:12;1307:34;1382:7;1377:2;1368:6;1364:2;1360:15;1356:24;1353:37;1350:57;;;1403:1;1400;1393:12;1350:57;1434:2;1426:11;;;;;1456:6;;-1:-1:-1;876:592:63;;-1:-1:-1;;;;876:592:63:o;1473:922::-;1542:6;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1651:9;1638:23;1680:18;1721:2;1713:6;1710:14;1707:34;;;1737:1;1734;1727:12;1707:34;1775:6;1764:9;1760:22;1750:32;;1820:7;1813:4;1809:2;1805:13;1801:27;1791:55;;1842:1;1839;1832:12;1791:55;1878:2;1865:16;1900:2;1896;1893:10;1890:36;;;1906:18;;:::i;:::-;1981:2;1975:9;1949:2;2035:13;;-1:-1:-1;;2031:22:63;;;2055:2;2027:31;2023:40;2011:53;;;2079:18;;;2099:22;;;2076:46;2073:72;;;2125:18;;:::i;:::-;2165:10;2161:2;2154:22;2200:2;2192:6;2185:18;2240:7;2235:2;2230;2226;2222:11;2218:20;2215:33;2212:53;;;2261:1;2258;2251:12;2212:53;2317:2;2312;2308;2304:11;2299:2;2291:6;2287:15;2274:46;2362:1;2340:15;;;2357:2;2336:24;2329:35;;;;-1:-1:-1;2344:6:63;1473:922;-1:-1:-1;;;;;1473:922:63:o;2400:184::-;2470:6;2523:2;2511:9;2502:7;2498:23;2494:32;2491:52;;;2539:1;2536;2529:12;2491:52;-1:-1:-1;2562:16:63;;2400:184;-1:-1:-1;2400:184:63:o;2589:248::-;2654:6;2662;2715:2;2703:9;2694:7;2690:23;2686:32;2683:52;;;2731:1;2728;2721:12;2683:52;2767:9;2754:23;2744:33;;2796:35;2827:2;2816:9;2812:18;2796:35;:::i;:::-;2786:45;;2589:248;;;;;:::o;2842:472::-;2884:3;2922:5;2916:12;2949:6;2944:3;2937:19;2974:1;2984:162;2998:6;2995:1;2992:13;2984:162;;;3060:4;3116:13;;;3112:22;;3106:29;3088:11;;;3084:20;;3077:59;3013:12;2984:162;;;3164:6;3161:1;3158:13;3155:87;;;3230:1;3223:4;3214:6;3209:3;3205:16;3201:27;3194:38;3155:87;-1:-1:-1;3296:2:63;3275:15;-1:-1:-1;;3271:29:63;3262:39;;;;3303:4;3258:50;;2842:472;-1:-1:-1;;2842:472:63:o;3943:220::-;4092:2;4081:9;4074:21;4055:4;4112:45;4153:2;4142:9;4138:18;4130:6;4112:45;:::i;4168:716::-;4485:3;4474:9;4467:22;4448:4;4506:46;4547:3;4536:9;4532:19;4524:6;4506:46;:::i;:::-;-1:-1:-1;;;;;4626:15:63;;;4621:2;4606:18;;4599:43;4678:15;;;4673:2;4658:18;;4651:43;-1:-1:-1;4730:15:63;;;;4725:2;4710:18;;4703:43;4777:3;4762:19;;4755:35;;;;4579:3;4806:19;;4799:35;4865:3;4850:19;4843:35;;;;4498:54;4168:716;-1:-1:-1;4168:716:63:o;7164:127::-;7225:10;7220:3;7216:20;7213:1;7206:31;7256:4;7253:1;7246:15;7280:4;7277:1;7270:15;7296:131;-1:-1:-1;;;;;7371:31:63;;7361:42;;7351:70;;7417:1;7414;7407:12",
    "source": "pragma solidity ^0.8.0;\n\n/* solhint-disable avoid-tx-origin */\n// SPDX-License-Identifier: GPL-3.0-only\n\nimport \"../utils/GsnUtils.sol\";\nimport \"../ERC2771Recipient.sol\";\nimport \"./TestPaymasterConfigurableMisbehavior.sol\";\n\ncontract TestRecipient is ERC2771Recipient {\n\n    constructor(address forwarder) {\n        _setTrustedForwarder(forwarder);\n    }\n\n    // testing inner call gas estimation\n    uint256 private nothing1;\n    uint256 private nothing2;\n    uint256 private nothing3;\n    // solhint-disable-next-line no-complex-fallback\n    fallback() external payable {\n        nothing1 = type(uint256).max;\n        nothing2 = type(uint256).max;\n        nothing3 = type(uint256).max;\n    }\n\n    event Reverting(string message);\n\n    function testRevert() public {\n        require(address(this) == address(0), \"always fail\");\n        emit Reverting(\"if you see this revert failed...\");\n    }\n\n    address payable public paymaster;\n\n    function setWithdrawDuringRelayedCall(address payable _paymaster) public {\n        paymaster = _paymaster;\n    }\n\n    // solhint-disable-next-line no-empty-blocks\n    receive() external payable {}\n\n    event SampleRecipientEmitted(string message, address realSender, address msgSender, address origin, uint256 msgValue, uint256 gasLeft, uint256 balance);\n\n    function recipientRevert() public {\n        revert(\"this method reverts consistently\");\n    }\n\n    function emitMessage(string memory message) public payable returns (string memory) {\n        uint256 gasLeft = gasleft();\n        if (paymaster != address(0)) {\n            withdrawAllBalance();\n        }\n\n        emit SampleRecipientEmitted(message, _msgSender(), msg.sender, tx.origin, msg.value, gasLeft, address(this).balance);\n        return \"emitMessage return value\";\n    }\n\n    function withdrawAllBalance() public {\n        TestPaymasterConfigurableMisbehavior(paymaster).withdrawAllBalance();\n    }\n\n    // solhint-disable-next-line no-empty-blocks\n    function dontEmitMessage(string calldata message) public {}\n\n    function emitMessageNoParams() public {\n        emit SampleRecipientEmitted(\"Method with no parameters\", _msgSender(), msg.sender, tx.origin, 0, gasleft(), address(this).balance);\n    }\n\n    //return (or revert) with a string in the given length\n    function checkReturnValues(uint256 len, bool doRevert) public view returns (string memory) {\n        (this);\n        string memory mesg = \"this is a long message that we are going to return a small part from. we don't use a loop since we want a fixed gas usage of the method itself.\";\n        require( bytes(mesg).length>=len, \"invalid len: too large\");\n\n        /* solhint-disable no-inline-assembly */\n        //cut the msg at that length\n        assembly { mstore(mesg, len) }\n        require(!doRevert, mesg);\n        return mesg;\n    }\n\n    //function with no return value (also test revert with no msg.\n    function checkNoReturnValues(bool doRevert) public view {\n        (this);\n        /* solhint-disable reason-string*/\n        require(!doRevert);\n    }\n\n}",
    "sourcePath": "/Users/alexf/gsn2/packages/contracts/solpp/test/TestRecipient.sol",
    "ast": {
        "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/test/TestRecipient.sol",
        "exportedSymbols": {
            "BasePaymaster": [
                397
            ],
            "Context": [
                11508
            ],
            "ERC165": [
                12146
            ],
            "ERC165Checker": [
                12340
            ],
            "ERC2771Recipient": [
                500
            ],
            "GsnEip712Library": [
                8464
            ],
            "GsnTypes": [
                8492
            ],
            "GsnUtils": [
                8572
            ],
            "IERC165": [
                12352
            ],
            "IERC20": [
                10849
            ],
            "IERC2771Recipient": [
                5374
            ],
            "IForwarder": [
                5129
            ],
            "IPaymaster": [
                5447
            ],
            "IRelayHub": [
                5896
            ],
            "IStakeManager": [
                6284
            ],
            "MinLibBytes": [
                8687
            ],
            "Ownable": [
                10182
            ],
            "TestPaymasterConfigurableMisbehavior": [
                6866
            ],
            "TestPaymasterEverythingAccepted": [
                7006
            ],
            "TestRecipient": [
                7578
            ]
        },
        "id": 7579,
        "license": "GPL-3.0-only",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 7330,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "0:23:29"
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/utils/GsnUtils.sol",
                "file": "../utils/GsnUtils.sol",
                "id": 7331,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 7579,
                "sourceUnit": 8573,
                "src": "105:31:29",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/ERC2771Recipient.sol",
                "file": "../ERC2771Recipient.sol",
                "id": 7332,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 7579,
                "sourceUnit": 501,
                "src": "137:33:29",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/test/TestPaymasterConfigurableMisbehavior.sol",
                "file": "./TestPaymasterConfigurableMisbehavior.sol",
                "id": 7333,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 7579,
                "sourceUnit": 6867,
                "src": "171:52:29",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 7334,
                            "name": "ERC2771Recipient",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 500,
                            "src": "251:16:29"
                        },
                        "id": 7335,
                        "nodeType": "InheritanceSpecifier",
                        "src": "251:16:29"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 7578,
                "linearizedBaseContracts": [
                    7578,
                    500,
                    5374
                ],
                "name": "TestRecipient",
                "nameLocation": "234:13:29",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "body": {
                            "id": 7344,
                            "nodeType": "Block",
                            "src": "306:48:29",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 7341,
                                                "name": "forwarder",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7337,
                                                "src": "337:9:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 7340,
                                            "name": "_setTrustedForwarder",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 424,
                                            "src": "316:20:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 7342,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "316:31:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7343,
                                    "nodeType": "ExpressionStatement",
                                    "src": "316:31:29"
                                }
                            ]
                        },
                        "id": 7345,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7338,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7337,
                                    "mutability": "mutable",
                                    "name": "forwarder",
                                    "nameLocation": "295:9:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7345,
                                    "src": "287:17:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7336,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "287:7:29",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "286:19:29"
                        },
                        "returnParameters": {
                            "id": 7339,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "306:0:29"
                        },
                        "scope": 7578,
                        "src": "275:79:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "id": 7347,
                        "mutability": "mutable",
                        "name": "nothing1",
                        "nameLocation": "417:8:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 7578,
                        "src": "401:24:29",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 7346,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "401:7:29",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 7349,
                        "mutability": "mutable",
                        "name": "nothing2",
                        "nameLocation": "447:8:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 7578,
                        "src": "431:24:29",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 7348,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "431:7:29",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 7351,
                        "mutability": "mutable",
                        "name": "nothing3",
                        "nameLocation": "477:8:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 7578,
                        "src": "461:24:29",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 7350,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "461:7:29",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 7378,
                            "nodeType": "Block",
                            "src": "572:121:29",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 7360,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 7354,
                                            "name": "nothing1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7347,
                                            "src": "582:8:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 7357,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "598:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        },
                                                        "typeName": {
                                                            "id": 7356,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "598:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        }
                                                    ],
                                                    "id": 7355,
                                                    "name": "type",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967269,
                                                    "src": "593:4:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                        "typeString": "function () pure"
                                                    }
                                                },
                                                "id": 7358,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "593:13:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_meta_type_t_uint256",
                                                    "typeString": "type(uint256)"
                                                }
                                            },
                                            "id": 7359,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "max",
                                            "nodeType": "MemberAccess",
                                            "src": "593:17:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "582:28:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 7361,
                                    "nodeType": "ExpressionStatement",
                                    "src": "582:28:29"
                                },
                                {
                                    "expression": {
                                        "id": 7368,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 7362,
                                            "name": "nothing2",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7349,
                                            "src": "620:8:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 7365,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "636:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        },
                                                        "typeName": {
                                                            "id": 7364,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "636:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        }
                                                    ],
                                                    "id": 7363,
                                                    "name": "type",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967269,
                                                    "src": "631:4:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                        "typeString": "function () pure"
                                                    }
                                                },
                                                "id": 7366,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "631:13:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_meta_type_t_uint256",
                                                    "typeString": "type(uint256)"
                                                }
                                            },
                                            "id": 7367,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "max",
                                            "nodeType": "MemberAccess",
                                            "src": "631:17:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "620:28:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 7369,
                                    "nodeType": "ExpressionStatement",
                                    "src": "620:28:29"
                                },
                                {
                                    "expression": {
                                        "id": 7376,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 7370,
                                            "name": "nothing3",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7351,
                                            "src": "658:8:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 7373,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "674:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        },
                                                        "typeName": {
                                                            "id": 7372,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "674:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        }
                                                    ],
                                                    "id": 7371,
                                                    "name": "type",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967269,
                                                    "src": "669:4:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                        "typeString": "function () pure"
                                                    }
                                                },
                                                "id": 7374,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "669:13:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_meta_type_t_uint256",
                                                    "typeString": "type(uint256)"
                                                }
                                            },
                                            "id": 7375,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "max",
                                            "nodeType": "MemberAccess",
                                            "src": "669:17:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "658:28:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 7377,
                                    "nodeType": "ExpressionStatement",
                                    "src": "658:28:29"
                                }
                            ]
                        },
                        "id": 7379,
                        "implemented": true,
                        "kind": "fallback",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7352,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "552:2:29"
                        },
                        "returnParameters": {
                            "id": 7353,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "572:0:29"
                        },
                        "scope": 7578,
                        "src": "544:149:29",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "anonymous": false,
                        "id": 7383,
                        "name": "Reverting",
                        "nameLocation": "705:9:29",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 7382,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7381,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "message",
                                    "nameLocation": "722:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7383,
                                    "src": "715:14:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7380,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "715:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "714:16:29"
                        },
                        "src": "699:32:29"
                    },
                    {
                        "body": {
                            "id": 7403,
                            "nodeType": "Block",
                            "src": "766:128:29",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 7395,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7389,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967268,
                                                            "src": "792:4:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        ],
                                                        "id": 7388,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "784:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 7387,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "784:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 7390,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "784:13:29",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 7393,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "809:1:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 7392,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "801:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 7391,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "801:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 7394,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "801:10:29",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "784:27:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "616c77617973206661696c",
                                                "id": 7396,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "813:13:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_bee1cf1f7d056e0353bed67574c7940047b661dff255a2207ffca4827603a4b3",
                                                    "typeString": "literal_string \"always fail\""
                                                },
                                                "value": "always fail"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_bee1cf1f7d056e0353bed67574c7940047b661dff255a2207ffca4827603a4b3",
                                                    "typeString": "literal_string \"always fail\""
                                                }
                                            ],
                                            "id": 7386,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "776:7:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7397,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "776:51:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7398,
                                    "nodeType": "ExpressionStatement",
                                    "src": "776:51:29"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "hexValue": "696620796f7520736565207468697320726576657274206661696c65642e2e2e",
                                                "id": 7400,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "852:34:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_12be86633e0e7784ea53f89fba7d26deacab661ef43c51d4ee479d1860c88685",
                                                    "typeString": "literal_string \"if you see this revert failed...\""
                                                },
                                                "value": "if you see this revert failed..."
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_12be86633e0e7784ea53f89fba7d26deacab661ef43c51d4ee479d1860c88685",
                                                    "typeString": "literal_string \"if you see this revert failed...\""
                                                }
                                            ],
                                            "id": 7399,
                                            "name": "Reverting",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7383,
                                            "src": "842:9:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (string memory)"
                                            }
                                        },
                                        "id": 7401,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "842:45:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7402,
                                    "nodeType": "EmitStatement",
                                    "src": "837:50:29"
                                }
                            ]
                        },
                        "functionSelector": "a26388bb",
                        "id": 7404,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "testRevert",
                        "nameLocation": "746:10:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7384,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "756:2:29"
                        },
                        "returnParameters": {
                            "id": 7385,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "766:0:29"
                        },
                        "scope": 7578,
                        "src": "737:157:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "16e4cbf9",
                        "id": 7406,
                        "mutability": "mutable",
                        "name": "paymaster",
                        "nameLocation": "923:9:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 7578,
                        "src": "900:32:29",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                        },
                        "typeName": {
                            "id": 7405,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "900:15:29",
                            "stateMutability": "payable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7415,
                            "nodeType": "Block",
                            "src": "1012:39:29",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 7413,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 7411,
                                            "name": "paymaster",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7406,
                                            "src": "1022:9:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 7412,
                                            "name": "_paymaster",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7408,
                                            "src": "1034:10:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "1022:22:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "id": 7414,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1022:22:29"
                                }
                            ]
                        },
                        "functionSelector": "8db93e3d",
                        "id": 7416,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "setWithdrawDuringRelayedCall",
                        "nameLocation": "948:28:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7409,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7408,
                                    "mutability": "mutable",
                                    "name": "_paymaster",
                                    "nameLocation": "993:10:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7416,
                                    "src": "977:26:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                    },
                                    "typeName": {
                                        "id": 7407,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "977:15:29",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "976:28:29"
                        },
                        "returnParameters": {
                            "id": 7410,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1012:0:29"
                        },
                        "scope": 7578,
                        "src": "939:112:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7419,
                            "nodeType": "Block",
                            "src": "1133:2:29",
                            "statements": []
                        },
                        "id": 7420,
                        "implemented": true,
                        "kind": "receive",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7417,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1113:2:29"
                        },
                        "returnParameters": {
                            "id": 7418,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1133:0:29"
                        },
                        "scope": 7578,
                        "src": "1106:29:29",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "anonymous": false,
                        "id": 7436,
                        "name": "SampleRecipientEmitted",
                        "nameLocation": "1147:22:29",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 7435,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7422,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "message",
                                    "nameLocation": "1177:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1170:14:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7421,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1170:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7424,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "realSender",
                                    "nameLocation": "1194:10:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1186:18:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7423,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1186:7:29",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7426,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "msgSender",
                                    "nameLocation": "1214:9:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1206:17:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7425,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1206:7:29",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7428,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "origin",
                                    "nameLocation": "1233:6:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1225:14:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7427,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1225:7:29",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7430,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "msgValue",
                                    "nameLocation": "1249:8:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1241:16:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7429,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1241:7:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7432,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "gasLeft",
                                    "nameLocation": "1267:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1259:15:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7431,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1259:7:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7434,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "balance",
                                    "nameLocation": "1284:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1276:15:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7433,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1276:7:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1169:123:29"
                        },
                        "src": "1141:152:29"
                    },
                    {
                        "body": {
                            "id": 7443,
                            "nodeType": "Block",
                            "src": "1333:59:29",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "hexValue": "74686973206d6574686f64207265766572747320636f6e73697374656e746c79",
                                                "id": 7440,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1350:34:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_40d0f44567ef358d7388ba152bbac96158195611ce3f6916c64aea06d67672b6",
                                                    "typeString": "literal_string \"this method reverts consistently\""
                                                },
                                                "value": "this method reverts consistently"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_40d0f44567ef358d7388ba152bbac96158195611ce3f6916c64aea06d67672b6",
                                                    "typeString": "literal_string \"this method reverts consistently\""
                                                }
                                            ],
                                            "id": 7439,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967277,
                                                4294967277
                                            ],
                                            "referencedDeclaration": 4294967277,
                                            "src": "1343:6:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (string memory) pure"
                                            }
                                        },
                                        "id": 7441,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1343:42:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7442,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1343:42:29"
                                }
                            ]
                        },
                        "functionSelector": "b973c5a6",
                        "id": 7444,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "recipientRevert",
                        "nameLocation": "1308:15:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7437,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1323:2:29"
                        },
                        "returnParameters": {
                            "id": 7438,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1333:0:29"
                        },
                        "scope": 7578,
                        "src": "1299:93:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7487,
                            "nodeType": "Block",
                            "src": "1481:297:29",
                            "statements": [
                                {
                                    "assignments": [
                                        7452
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7452,
                                            "mutability": "mutable",
                                            "name": "gasLeft",
                                            "nameLocation": "1499:7:29",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7487,
                                            "src": "1491:15:29",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7451,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1491:7:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7455,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "id": 7453,
                                            "name": "gasleft",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967289,
                                            "src": "1509:7:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view returns (uint256)"
                                            }
                                        },
                                        "id": 7454,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1509:9:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1491:27:29"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 7461,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 7456,
                                            "name": "paymaster",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7406,
                                            "src": "1532:9:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "30",
                                                    "id": 7459,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1553:1:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 7458,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "1545:7:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 7457,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1545:7:29",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 7460,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1545:10:29",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "1532:23:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 7466,
                                    "nodeType": "IfStatement",
                                    "src": "1528:74:29",
                                    "trueBody": {
                                        "id": 7465,
                                        "nodeType": "Block",
                                        "src": "1557:45:29",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 7462,
                                                        "name": "withdrawAllBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7498,
                                                        "src": "1571:18:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 7463,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1571:20:29",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7464,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1571:20:29"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 7468,
                                                "name": "message",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7446,
                                                "src": "1640:7:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            },
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 7469,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [
                                                        465
                                                    ],
                                                    "referencedDeclaration": 465,
                                                    "src": "1649:10:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                        "typeString": "function () view returns (address)"
                                                    }
                                                },
                                                "id": 7470,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1649:12:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 7471,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "1663:3:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 7472,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "1663:10:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 7473,
                                                    "name": "tx",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967270,
                                                    "src": "1675:2:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_transaction",
                                                        "typeString": "tx"
                                                    }
                                                },
                                                "id": 7474,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "origin",
                                                "nodeType": "MemberAccess",
                                                "src": "1675:9:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 7475,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "1686:3:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 7476,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "value",
                                                "nodeType": "MemberAccess",
                                                "src": "1686:9:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 7477,
                                                "name": "gasLeft",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7452,
                                                "src": "1697:7:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7480,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967268,
                                                            "src": "1714:4:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        ],
                                                        "id": 7479,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "1706:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 7478,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1706:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 7481,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1706:13:29",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 7482,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "balance",
                                                "nodeType": "MemberAccess",
                                                "src": "1706:21:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 7467,
                                            "name": "SampleRecipientEmitted",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7436,
                                            "src": "1617:22:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (string memory,address,address,address,uint256,uint256,uint256)"
                                            }
                                        },
                                        "id": 7483,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1617:111:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7484,
                                    "nodeType": "EmitStatement",
                                    "src": "1612:116:29"
                                },
                                {
                                    "expression": {
                                        "hexValue": "656d69744d6573736167652072657475726e2076616c7565",
                                        "id": 7485,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1745:26:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_def31267c019e8be12303ecd3cd63edeb54bc1c7f57edd6a6b5b11e90c8dc87c",
                                            "typeString": "literal_string \"emitMessage return value\""
                                        },
                                        "value": "emitMessage return value"
                                    },
                                    "functionReturnParameters": 7450,
                                    "id": 7486,
                                    "nodeType": "Return",
                                    "src": "1738:33:29"
                                }
                            ]
                        },
                        "functionSelector": "2ac0df26",
                        "id": 7488,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "emitMessage",
                        "nameLocation": "1407:11:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7447,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7446,
                                    "mutability": "mutable",
                                    "name": "message",
                                    "nameLocation": "1433:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7488,
                                    "src": "1419:21:29",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7445,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1419:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1418:23:29"
                        },
                        "returnParameters": {
                            "id": 7450,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7449,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7488,
                                    "src": "1466:13:29",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7448,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1466:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1465:15:29"
                        },
                        "scope": 7578,
                        "src": "1398:380:29",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7497,
                            "nodeType": "Block",
                            "src": "1821:85:29",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 7492,
                                                        "name": "paymaster",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7406,
                                                        "src": "1868:9:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        }
                                                    ],
                                                    "id": 7491,
                                                    "name": "TestPaymasterConfigurableMisbehavior",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6866,
                                                    "src": "1831:36:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_TestPaymasterConfigurableMisbehavior_$6866_$",
                                                        "typeString": "type(contract TestPaymasterConfigurableMisbehavior)"
                                                    }
                                                },
                                                "id": 7493,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1831:47:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_TestPaymasterConfigurableMisbehavior_$6866",
                                                    "typeString": "contract TestPaymasterConfigurableMisbehavior"
                                                }
                                            },
                                            "id": 7494,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "withdrawAllBalance",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6768,
                                            "src": "1831:66:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                                                "typeString": "function () external returns (uint256)"
                                            }
                                        },
                                        "id": 7495,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1831:68:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 7496,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1831:68:29"
                                }
                            ]
                        },
                        "functionSelector": "3b17eadc",
                        "id": 7498,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "withdrawAllBalance",
                        "nameLocation": "1793:18:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7489,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1811:2:29"
                        },
                        "returnParameters": {
                            "id": 7490,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1821:0:29"
                        },
                        "scope": 7578,
                        "src": "1784:122:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7503,
                            "nodeType": "Block",
                            "src": "2018:2:29",
                            "statements": []
                        },
                        "functionSelector": "b51fab0a",
                        "id": 7504,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "dontEmitMessage",
                        "nameLocation": "1970:15:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7501,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7500,
                                    "mutability": "mutable",
                                    "name": "message",
                                    "nameLocation": "2002:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7504,
                                    "src": "1986:23:29",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7499,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1986:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1985:25:29"
                        },
                        "returnParameters": {
                            "id": 7502,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2018:0:29"
                        },
                        "scope": 7578,
                        "src": "1961:59:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7525,
                            "nodeType": "Block",
                            "src": "2064:147:29",
                            "statements": [
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "hexValue": "4d6574686f642077697468206e6f20706172616d6574657273",
                                                "id": 7508,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2102:27:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_b57b13d85aea0b5c58c593a9fe7cb02c1b802c102b944a028964994c364f149b",
                                                    "typeString": "literal_string \"Method with no parameters\""
                                                },
                                                "value": "Method with no parameters"
                                            },
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 7509,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [
                                                        465
                                                    ],
                                                    "referencedDeclaration": 465,
                                                    "src": "2131:10:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                        "typeString": "function () view returns (address)"
                                                    }
                                                },
                                                "id": 7510,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2131:12:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 7511,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "2145:3:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 7512,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "2145:10:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 7513,
                                                    "name": "tx",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967270,
                                                    "src": "2157:2:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_transaction",
                                                        "typeString": "tx"
                                                    }
                                                },
                                                "id": 7514,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "origin",
                                                "nodeType": "MemberAccess",
                                                "src": "2157:9:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "hexValue": "30",
                                                "id": 7515,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2168:1:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 7516,
                                                    "name": "gasleft",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967289,
                                                    "src": "2171:7:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                                        "typeString": "function () view returns (uint256)"
                                                    }
                                                },
                                                "id": 7517,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2171:9:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7520,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967268,
                                                            "src": "2190:4:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        ],
                                                        "id": 7519,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "2182:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 7518,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2182:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 7521,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2182:13:29",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 7522,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "balance",
                                                "nodeType": "MemberAccess",
                                                "src": "2182:21:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_b57b13d85aea0b5c58c593a9fe7cb02c1b802c102b944a028964994c364f149b",
                                                    "typeString": "literal_string \"Method with no parameters\""
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 7507,
                                            "name": "SampleRecipientEmitted",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7436,
                                            "src": "2079:22:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (string memory,address,address,address,uint256,uint256,uint256)"
                                            }
                                        },
                                        "id": 7523,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2079:125:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7524,
                                    "nodeType": "EmitStatement",
                                    "src": "2074:130:29"
                                }
                            ]
                        },
                        "functionSelector": "dc59c90f",
                        "id": 7526,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "emitMessageNoParams",
                        "nameLocation": "2035:19:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7505,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2054:2:29"
                        },
                        "returnParameters": {
                            "id": 7506,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2064:0:29"
                        },
                        "scope": 7578,
                        "src": "2026:185:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7562,
                            "nodeType": "Block",
                            "src": "2367:449:29",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "id": 7535,
                                                "name": "this",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967268,
                                                "src": "2378:4:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                    "typeString": "contract TestRecipient"
                                                }
                                            }
                                        ],
                                        "id": 7536,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2377:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                            "typeString": "contract TestRecipient"
                                        }
                                    },
                                    "id": 7537,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2377:6:29"
                                },
                                {
                                    "assignments": [
                                        7539
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7539,
                                            "mutability": "mutable",
                                            "name": "mesg",
                                            "nameLocation": "2407:4:29",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7562,
                                            "src": "2393:18:29",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string"
                                            },
                                            "typeName": {
                                                "id": 7538,
                                                "name": "string",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2393:6:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_storage_ptr",
                                                    "typeString": "string"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7541,
                                    "initialValue": {
                                        "hexValue": "746869732069732061206c6f6e67206d65737361676520746861742077652061726520676f696e6720746f2072657475726e206120736d616c6c20706172742066726f6d2e20776520646f6e2774207573652061206c6f6f702073696e63652077652077616e74206120666978656420676173207573616765206f6620746865206d6574686f6420697473656c662e",
                                        "id": 7540,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2414:145:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_fb67145e64702b9bfd73c61ddd38a8c0c691691c249258c7f7ddfd04521e7a39",
                                            "typeString": "literal_string \"this is a long message that we are going to return a small part from. we don't use a loop since we want a fixed gas usage of the method itself.\""
                                        },
                                        "value": "this is a long message that we are going to return a small part from. we don't use a loop since we want a fixed gas usage of the method itself."
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2393:166:29"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 7549,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 7545,
                                                                "name": "mesg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7539,
                                                                "src": "2584:4:29",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                    "typeString": "string memory"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                    "typeString": "string memory"
                                                                }
                                                            ],
                                                            "id": 7544,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "2578:5:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                                "typeString": "type(bytes storage pointer)"
                                                            },
                                                            "typeName": {
                                                                "id": 7543,
                                                                "name": "bytes",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "2578:5:29",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 7546,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "2578:11:29",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    },
                                                    "id": 7547,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "length",
                                                    "nodeType": "MemberAccess",
                                                    "src": "2578:18:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">=",
                                                "rightExpression": {
                                                    "id": 7548,
                                                    "name": "len",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7528,
                                                    "src": "2598:3:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "2578:23:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "696e76616c6964206c656e3a20746f6f206c61726765",
                                                "id": 7550,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2603:24:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_58fef79624f80911a04e61008327f391fe1df79178b9c9d8a5deb40eea739a71",
                                                    "typeString": "literal_string \"invalid len: too large\""
                                                },
                                                "value": "invalid len: too large"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_58fef79624f80911a04e61008327f391fe1df79178b9c9d8a5deb40eea739a71",
                                                    "typeString": "literal_string \"invalid len: too large\""
                                                }
                                            ],
                                            "id": 7542,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "2569:7:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7551,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2569:59:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7552,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2569:59:29"
                                },
                                {
                                    "AST": {
                                        "nodeType": "YulBlock",
                                        "src": "2734:21:29",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "mesg",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2743:4:29"
                                                        },
                                                        {
                                                            "name": "len",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2749:3:29"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2736:6:29"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2736:17:29"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2736:17:29"
                                            }
                                        ]
                                    },
                                    "evmVersion": "london",
                                    "externalReferences": [
                                        {
                                            "declaration": 7528,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "2749:3:29",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 7539,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "2743:4:29",
                                            "valueSize": 1
                                        }
                                    ],
                                    "id": 7553,
                                    "nodeType": "InlineAssembly",
                                    "src": "2725:30:29"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 7556,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "UnaryOperation",
                                                "operator": "!",
                                                "prefix": true,
                                                "src": "2772:9:29",
                                                "subExpression": {
                                                    "id": 7555,
                                                    "name": "doRevert",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7530,
                                                    "src": "2773:8:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "id": 7557,
                                                "name": "mesg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7539,
                                                "src": "2783:4:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            ],
                                            "id": 7554,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "2764:7:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7558,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2764:24:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7559,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2764:24:29"
                                },
                                {
                                    "expression": {
                                        "id": 7560,
                                        "name": "mesg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7539,
                                        "src": "2805:4:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                        }
                                    },
                                    "functionReturnParameters": 7534,
                                    "id": 7561,
                                    "nodeType": "Return",
                                    "src": "2798:11:29"
                                }
                            ]
                        },
                        "functionSelector": "de6e56f6",
                        "id": 7563,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "checkReturnValues",
                        "nameLocation": "2285:17:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7531,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7528,
                                    "mutability": "mutable",
                                    "name": "len",
                                    "nameLocation": "2311:3:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7563,
                                    "src": "2303:11:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7527,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2303:7:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7530,
                                    "mutability": "mutable",
                                    "name": "doRevert",
                                    "nameLocation": "2321:8:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7563,
                                    "src": "2316:13:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 7529,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2316:4:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2302:28:29"
                        },
                        "returnParameters": {
                            "id": 7534,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7533,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7563,
                                    "src": "2352:13:29",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7532,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2352:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2351:15:29"
                        },
                        "scope": 7578,
                        "src": "2276:540:29",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7576,
                            "nodeType": "Block",
                            "src": "2945:94:29",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "id": 7568,
                                                "name": "this",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967268,
                                                "src": "2956:4:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                    "typeString": "contract TestRecipient"
                                                }
                                            }
                                        ],
                                        "id": 7569,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2955:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                            "typeString": "contract TestRecipient"
                                        }
                                    },
                                    "id": 7570,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2955:6:29"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 7573,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "UnaryOperation",
                                                "operator": "!",
                                                "prefix": true,
                                                "src": "3022:9:29",
                                                "subExpression": {
                                                    "id": 7572,
                                                    "name": "doRevert",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7565,
                                                    "src": "3023:8:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            ],
                                            "id": 7571,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "3014:7:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                "typeString": "function (bool) pure"
                                            }
                                        },
                                        "id": 7574,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3014:18:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7575,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3014:18:29"
                                }
                            ]
                        },
                        "functionSelector": "c095ad3c",
                        "id": 7577,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "checkNoReturnValues",
                        "nameLocation": "2898:19:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7566,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7565,
                                    "mutability": "mutable",
                                    "name": "doRevert",
                                    "nameLocation": "2923:8:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7577,
                                    "src": "2918:13:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 7564,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2918:4:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2917:15:29"
                        },
                        "returnParameters": {
                            "id": 7567,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2945:0:29"
                        },
                        "scope": 7578,
                        "src": "2889:150:29",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 7579,
                "src": "225:2817:29",
                "usedErrors": []
            }
        ],
        "src": "0:3042:29"
    },
    "legacyAST": {
        "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/test/TestRecipient.sol",
        "exportedSymbols": {
            "BasePaymaster": [
                397
            ],
            "Context": [
                11508
            ],
            "ERC165": [
                12146
            ],
            "ERC165Checker": [
                12340
            ],
            "ERC2771Recipient": [
                500
            ],
            "GsnEip712Library": [
                8464
            ],
            "GsnTypes": [
                8492
            ],
            "GsnUtils": [
                8572
            ],
            "IERC165": [
                12352
            ],
            "IERC20": [
                10849
            ],
            "IERC2771Recipient": [
                5374
            ],
            "IForwarder": [
                5129
            ],
            "IPaymaster": [
                5447
            ],
            "IRelayHub": [
                5896
            ],
            "IStakeManager": [
                6284
            ],
            "MinLibBytes": [
                8687
            ],
            "Ownable": [
                10182
            ],
            "TestPaymasterConfigurableMisbehavior": [
                6866
            ],
            "TestPaymasterEverythingAccepted": [
                7006
            ],
            "TestRecipient": [
                7578
            ]
        },
        "id": 7579,
        "license": "GPL-3.0-only",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 7330,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "0:23:29"
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/utils/GsnUtils.sol",
                "file": "../utils/GsnUtils.sol",
                "id": 7331,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 7579,
                "sourceUnit": 8573,
                "src": "105:31:29",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/ERC2771Recipient.sol",
                "file": "../ERC2771Recipient.sol",
                "id": 7332,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 7579,
                "sourceUnit": 501,
                "src": "137:33:29",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/test/TestPaymasterConfigurableMisbehavior.sol",
                "file": "./TestPaymasterConfigurableMisbehavior.sol",
                "id": 7333,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 7579,
                "sourceUnit": 6867,
                "src": "171:52:29",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 7334,
                            "name": "ERC2771Recipient",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 500,
                            "src": "251:16:29"
                        },
                        "id": 7335,
                        "nodeType": "InheritanceSpecifier",
                        "src": "251:16:29"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 7578,
                "linearizedBaseContracts": [
                    7578,
                    500,
                    5374
                ],
                "name": "TestRecipient",
                "nameLocation": "234:13:29",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "body": {
                            "id": 7344,
                            "nodeType": "Block",
                            "src": "306:48:29",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 7341,
                                                "name": "forwarder",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7337,
                                                "src": "337:9:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 7340,
                                            "name": "_setTrustedForwarder",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 424,
                                            "src": "316:20:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 7342,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "316:31:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7343,
                                    "nodeType": "ExpressionStatement",
                                    "src": "316:31:29"
                                }
                            ]
                        },
                        "id": 7345,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7338,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7337,
                                    "mutability": "mutable",
                                    "name": "forwarder",
                                    "nameLocation": "295:9:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7345,
                                    "src": "287:17:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7336,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "287:7:29",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "286:19:29"
                        },
                        "returnParameters": {
                            "id": 7339,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "306:0:29"
                        },
                        "scope": 7578,
                        "src": "275:79:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "id": 7347,
                        "mutability": "mutable",
                        "name": "nothing1",
                        "nameLocation": "417:8:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 7578,
                        "src": "401:24:29",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 7346,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "401:7:29",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 7349,
                        "mutability": "mutable",
                        "name": "nothing2",
                        "nameLocation": "447:8:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 7578,
                        "src": "431:24:29",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 7348,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "431:7:29",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 7351,
                        "mutability": "mutable",
                        "name": "nothing3",
                        "nameLocation": "477:8:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 7578,
                        "src": "461:24:29",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 7350,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "461:7:29",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 7378,
                            "nodeType": "Block",
                            "src": "572:121:29",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 7360,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 7354,
                                            "name": "nothing1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7347,
                                            "src": "582:8:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 7357,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "598:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        },
                                                        "typeName": {
                                                            "id": 7356,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "598:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        }
                                                    ],
                                                    "id": 7355,
                                                    "name": "type",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967269,
                                                    "src": "593:4:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                        "typeString": "function () pure"
                                                    }
                                                },
                                                "id": 7358,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "593:13:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_meta_type_t_uint256",
                                                    "typeString": "type(uint256)"
                                                }
                                            },
                                            "id": 7359,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "max",
                                            "nodeType": "MemberAccess",
                                            "src": "593:17:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "582:28:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 7361,
                                    "nodeType": "ExpressionStatement",
                                    "src": "582:28:29"
                                },
                                {
                                    "expression": {
                                        "id": 7368,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 7362,
                                            "name": "nothing2",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7349,
                                            "src": "620:8:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 7365,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "636:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        },
                                                        "typeName": {
                                                            "id": 7364,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "636:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        }
                                                    ],
                                                    "id": 7363,
                                                    "name": "type",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967269,
                                                    "src": "631:4:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                        "typeString": "function () pure"
                                                    }
                                                },
                                                "id": 7366,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "631:13:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_meta_type_t_uint256",
                                                    "typeString": "type(uint256)"
                                                }
                                            },
                                            "id": 7367,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "max",
                                            "nodeType": "MemberAccess",
                                            "src": "631:17:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "620:28:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 7369,
                                    "nodeType": "ExpressionStatement",
                                    "src": "620:28:29"
                                },
                                {
                                    "expression": {
                                        "id": 7376,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 7370,
                                            "name": "nothing3",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7351,
                                            "src": "658:8:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 7373,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "674:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        },
                                                        "typeName": {
                                                            "id": 7372,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "674:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        }
                                                    ],
                                                    "id": 7371,
                                                    "name": "type",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967269,
                                                    "src": "669:4:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                        "typeString": "function () pure"
                                                    }
                                                },
                                                "id": 7374,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "669:13:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_meta_type_t_uint256",
                                                    "typeString": "type(uint256)"
                                                }
                                            },
                                            "id": 7375,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "max",
                                            "nodeType": "MemberAccess",
                                            "src": "669:17:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "658:28:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 7377,
                                    "nodeType": "ExpressionStatement",
                                    "src": "658:28:29"
                                }
                            ]
                        },
                        "id": 7379,
                        "implemented": true,
                        "kind": "fallback",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7352,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "552:2:29"
                        },
                        "returnParameters": {
                            "id": 7353,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "572:0:29"
                        },
                        "scope": 7578,
                        "src": "544:149:29",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "anonymous": false,
                        "id": 7383,
                        "name": "Reverting",
                        "nameLocation": "705:9:29",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 7382,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7381,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "message",
                                    "nameLocation": "722:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7383,
                                    "src": "715:14:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7380,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "715:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "714:16:29"
                        },
                        "src": "699:32:29"
                    },
                    {
                        "body": {
                            "id": 7403,
                            "nodeType": "Block",
                            "src": "766:128:29",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 7395,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7389,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967268,
                                                            "src": "792:4:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        ],
                                                        "id": 7388,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "784:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 7387,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "784:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 7390,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "784:13:29",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 7393,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "809:1:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 7392,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "801:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 7391,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "801:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 7394,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "801:10:29",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "784:27:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "616c77617973206661696c",
                                                "id": 7396,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "813:13:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_bee1cf1f7d056e0353bed67574c7940047b661dff255a2207ffca4827603a4b3",
                                                    "typeString": "literal_string \"always fail\""
                                                },
                                                "value": "always fail"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_bee1cf1f7d056e0353bed67574c7940047b661dff255a2207ffca4827603a4b3",
                                                    "typeString": "literal_string \"always fail\""
                                                }
                                            ],
                                            "id": 7386,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "776:7:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7397,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "776:51:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7398,
                                    "nodeType": "ExpressionStatement",
                                    "src": "776:51:29"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "hexValue": "696620796f7520736565207468697320726576657274206661696c65642e2e2e",
                                                "id": 7400,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "852:34:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_12be86633e0e7784ea53f89fba7d26deacab661ef43c51d4ee479d1860c88685",
                                                    "typeString": "literal_string \"if you see this revert failed...\""
                                                },
                                                "value": "if you see this revert failed..."
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_12be86633e0e7784ea53f89fba7d26deacab661ef43c51d4ee479d1860c88685",
                                                    "typeString": "literal_string \"if you see this revert failed...\""
                                                }
                                            ],
                                            "id": 7399,
                                            "name": "Reverting",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7383,
                                            "src": "842:9:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (string memory)"
                                            }
                                        },
                                        "id": 7401,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "842:45:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7402,
                                    "nodeType": "EmitStatement",
                                    "src": "837:50:29"
                                }
                            ]
                        },
                        "functionSelector": "a26388bb",
                        "id": 7404,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "testRevert",
                        "nameLocation": "746:10:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7384,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "756:2:29"
                        },
                        "returnParameters": {
                            "id": 7385,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "766:0:29"
                        },
                        "scope": 7578,
                        "src": "737:157:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "16e4cbf9",
                        "id": 7406,
                        "mutability": "mutable",
                        "name": "paymaster",
                        "nameLocation": "923:9:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 7578,
                        "src": "900:32:29",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                        },
                        "typeName": {
                            "id": 7405,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "900:15:29",
                            "stateMutability": "payable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7415,
                            "nodeType": "Block",
                            "src": "1012:39:29",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 7413,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 7411,
                                            "name": "paymaster",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7406,
                                            "src": "1022:9:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 7412,
                                            "name": "_paymaster",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7408,
                                            "src": "1034:10:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "1022:22:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "id": 7414,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1022:22:29"
                                }
                            ]
                        },
                        "functionSelector": "8db93e3d",
                        "id": 7416,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "setWithdrawDuringRelayedCall",
                        "nameLocation": "948:28:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7409,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7408,
                                    "mutability": "mutable",
                                    "name": "_paymaster",
                                    "nameLocation": "993:10:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7416,
                                    "src": "977:26:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                    },
                                    "typeName": {
                                        "id": 7407,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "977:15:29",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "976:28:29"
                        },
                        "returnParameters": {
                            "id": 7410,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1012:0:29"
                        },
                        "scope": 7578,
                        "src": "939:112:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7419,
                            "nodeType": "Block",
                            "src": "1133:2:29",
                            "statements": []
                        },
                        "id": 7420,
                        "implemented": true,
                        "kind": "receive",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7417,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1113:2:29"
                        },
                        "returnParameters": {
                            "id": 7418,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1133:0:29"
                        },
                        "scope": 7578,
                        "src": "1106:29:29",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "anonymous": false,
                        "id": 7436,
                        "name": "SampleRecipientEmitted",
                        "nameLocation": "1147:22:29",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 7435,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7422,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "message",
                                    "nameLocation": "1177:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1170:14:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7421,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1170:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7424,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "realSender",
                                    "nameLocation": "1194:10:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1186:18:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7423,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1186:7:29",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7426,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "msgSender",
                                    "nameLocation": "1214:9:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1206:17:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7425,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1206:7:29",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7428,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "origin",
                                    "nameLocation": "1233:6:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1225:14:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7427,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1225:7:29",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7430,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "msgValue",
                                    "nameLocation": "1249:8:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1241:16:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7429,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1241:7:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7432,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "gasLeft",
                                    "nameLocation": "1267:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1259:15:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7431,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1259:7:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7434,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "balance",
                                    "nameLocation": "1284:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7436,
                                    "src": "1276:15:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7433,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1276:7:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1169:123:29"
                        },
                        "src": "1141:152:29"
                    },
                    {
                        "body": {
                            "id": 7443,
                            "nodeType": "Block",
                            "src": "1333:59:29",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "hexValue": "74686973206d6574686f64207265766572747320636f6e73697374656e746c79",
                                                "id": 7440,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1350:34:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_40d0f44567ef358d7388ba152bbac96158195611ce3f6916c64aea06d67672b6",
                                                    "typeString": "literal_string \"this method reverts consistently\""
                                                },
                                                "value": "this method reverts consistently"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_40d0f44567ef358d7388ba152bbac96158195611ce3f6916c64aea06d67672b6",
                                                    "typeString": "literal_string \"this method reverts consistently\""
                                                }
                                            ],
                                            "id": 7439,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967277,
                                                4294967277
                                            ],
                                            "referencedDeclaration": 4294967277,
                                            "src": "1343:6:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (string memory) pure"
                                            }
                                        },
                                        "id": 7441,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1343:42:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7442,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1343:42:29"
                                }
                            ]
                        },
                        "functionSelector": "b973c5a6",
                        "id": 7444,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "recipientRevert",
                        "nameLocation": "1308:15:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7437,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1323:2:29"
                        },
                        "returnParameters": {
                            "id": 7438,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1333:0:29"
                        },
                        "scope": 7578,
                        "src": "1299:93:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7487,
                            "nodeType": "Block",
                            "src": "1481:297:29",
                            "statements": [
                                {
                                    "assignments": [
                                        7452
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7452,
                                            "mutability": "mutable",
                                            "name": "gasLeft",
                                            "nameLocation": "1499:7:29",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7487,
                                            "src": "1491:15:29",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7451,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1491:7:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7455,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "id": 7453,
                                            "name": "gasleft",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967289,
                                            "src": "1509:7:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view returns (uint256)"
                                            }
                                        },
                                        "id": 7454,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1509:9:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1491:27:29"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 7461,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 7456,
                                            "name": "paymaster",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7406,
                                            "src": "1532:9:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "30",
                                                    "id": 7459,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1553:1:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 7458,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "1545:7:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 7457,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1545:7:29",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 7460,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1545:10:29",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "1532:23:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 7466,
                                    "nodeType": "IfStatement",
                                    "src": "1528:74:29",
                                    "trueBody": {
                                        "id": 7465,
                                        "nodeType": "Block",
                                        "src": "1557:45:29",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 7462,
                                                        "name": "withdrawAllBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7498,
                                                        "src": "1571:18:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 7463,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1571:20:29",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7464,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1571:20:29"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 7468,
                                                "name": "message",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7446,
                                                "src": "1640:7:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            },
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 7469,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [
                                                        465
                                                    ],
                                                    "referencedDeclaration": 465,
                                                    "src": "1649:10:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                        "typeString": "function () view returns (address)"
                                                    }
                                                },
                                                "id": 7470,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1649:12:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 7471,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "1663:3:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 7472,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "1663:10:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 7473,
                                                    "name": "tx",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967270,
                                                    "src": "1675:2:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_transaction",
                                                        "typeString": "tx"
                                                    }
                                                },
                                                "id": 7474,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "origin",
                                                "nodeType": "MemberAccess",
                                                "src": "1675:9:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 7475,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "1686:3:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 7476,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "value",
                                                "nodeType": "MemberAccess",
                                                "src": "1686:9:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 7477,
                                                "name": "gasLeft",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7452,
                                                "src": "1697:7:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7480,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967268,
                                                            "src": "1714:4:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        ],
                                                        "id": 7479,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "1706:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 7478,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1706:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 7481,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1706:13:29",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 7482,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "balance",
                                                "nodeType": "MemberAccess",
                                                "src": "1706:21:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 7467,
                                            "name": "SampleRecipientEmitted",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7436,
                                            "src": "1617:22:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (string memory,address,address,address,uint256,uint256,uint256)"
                                            }
                                        },
                                        "id": 7483,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1617:111:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7484,
                                    "nodeType": "EmitStatement",
                                    "src": "1612:116:29"
                                },
                                {
                                    "expression": {
                                        "hexValue": "656d69744d6573736167652072657475726e2076616c7565",
                                        "id": 7485,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1745:26:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_def31267c019e8be12303ecd3cd63edeb54bc1c7f57edd6a6b5b11e90c8dc87c",
                                            "typeString": "literal_string \"emitMessage return value\""
                                        },
                                        "value": "emitMessage return value"
                                    },
                                    "functionReturnParameters": 7450,
                                    "id": 7486,
                                    "nodeType": "Return",
                                    "src": "1738:33:29"
                                }
                            ]
                        },
                        "functionSelector": "2ac0df26",
                        "id": 7488,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "emitMessage",
                        "nameLocation": "1407:11:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7447,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7446,
                                    "mutability": "mutable",
                                    "name": "message",
                                    "nameLocation": "1433:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7488,
                                    "src": "1419:21:29",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7445,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1419:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1418:23:29"
                        },
                        "returnParameters": {
                            "id": 7450,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7449,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7488,
                                    "src": "1466:13:29",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7448,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1466:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1465:15:29"
                        },
                        "scope": 7578,
                        "src": "1398:380:29",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7497,
                            "nodeType": "Block",
                            "src": "1821:85:29",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 7492,
                                                        "name": "paymaster",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7406,
                                                        "src": "1868:9:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        }
                                                    ],
                                                    "id": 7491,
                                                    "name": "TestPaymasterConfigurableMisbehavior",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6866,
                                                    "src": "1831:36:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_TestPaymasterConfigurableMisbehavior_$6866_$",
                                                        "typeString": "type(contract TestPaymasterConfigurableMisbehavior)"
                                                    }
                                                },
                                                "id": 7493,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1831:47:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_TestPaymasterConfigurableMisbehavior_$6866",
                                                    "typeString": "contract TestPaymasterConfigurableMisbehavior"
                                                }
                                            },
                                            "id": 7494,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "withdrawAllBalance",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6768,
                                            "src": "1831:66:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                                                "typeString": "function () external returns (uint256)"
                                            }
                                        },
                                        "id": 7495,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1831:68:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 7496,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1831:68:29"
                                }
                            ]
                        },
                        "functionSelector": "3b17eadc",
                        "id": 7498,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "withdrawAllBalance",
                        "nameLocation": "1793:18:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7489,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1811:2:29"
                        },
                        "returnParameters": {
                            "id": 7490,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1821:0:29"
                        },
                        "scope": 7578,
                        "src": "1784:122:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7503,
                            "nodeType": "Block",
                            "src": "2018:2:29",
                            "statements": []
                        },
                        "functionSelector": "b51fab0a",
                        "id": 7504,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "dontEmitMessage",
                        "nameLocation": "1970:15:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7501,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7500,
                                    "mutability": "mutable",
                                    "name": "message",
                                    "nameLocation": "2002:7:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7504,
                                    "src": "1986:23:29",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7499,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1986:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1985:25:29"
                        },
                        "returnParameters": {
                            "id": 7502,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2018:0:29"
                        },
                        "scope": 7578,
                        "src": "1961:59:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7525,
                            "nodeType": "Block",
                            "src": "2064:147:29",
                            "statements": [
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "hexValue": "4d6574686f642077697468206e6f20706172616d6574657273",
                                                "id": 7508,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2102:27:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_b57b13d85aea0b5c58c593a9fe7cb02c1b802c102b944a028964994c364f149b",
                                                    "typeString": "literal_string \"Method with no parameters\""
                                                },
                                                "value": "Method with no parameters"
                                            },
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 7509,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [
                                                        465
                                                    ],
                                                    "referencedDeclaration": 465,
                                                    "src": "2131:10:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                        "typeString": "function () view returns (address)"
                                                    }
                                                },
                                                "id": 7510,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2131:12:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 7511,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "2145:3:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 7512,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "2145:10:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 7513,
                                                    "name": "tx",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967270,
                                                    "src": "2157:2:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_transaction",
                                                        "typeString": "tx"
                                                    }
                                                },
                                                "id": 7514,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "origin",
                                                "nodeType": "MemberAccess",
                                                "src": "2157:9:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "hexValue": "30",
                                                "id": 7515,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2168:1:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 7516,
                                                    "name": "gasleft",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967289,
                                                    "src": "2171:7:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                                        "typeString": "function () view returns (uint256)"
                                                    }
                                                },
                                                "id": 7517,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2171:9:29",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7520,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967268,
                                                            "src": "2190:4:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                                "typeString": "contract TestRecipient"
                                                            }
                                                        ],
                                                        "id": 7519,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "2182:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 7518,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2182:7:29",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 7521,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2182:13:29",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 7522,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "balance",
                                                "nodeType": "MemberAccess",
                                                "src": "2182:21:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_b57b13d85aea0b5c58c593a9fe7cb02c1b802c102b944a028964994c364f149b",
                                                    "typeString": "literal_string \"Method with no parameters\""
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 7507,
                                            "name": "SampleRecipientEmitted",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7436,
                                            "src": "2079:22:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (string memory,address,address,address,uint256,uint256,uint256)"
                                            }
                                        },
                                        "id": 7523,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2079:125:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7524,
                                    "nodeType": "EmitStatement",
                                    "src": "2074:130:29"
                                }
                            ]
                        },
                        "functionSelector": "dc59c90f",
                        "id": 7526,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "emitMessageNoParams",
                        "nameLocation": "2035:19:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7505,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2054:2:29"
                        },
                        "returnParameters": {
                            "id": 7506,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2064:0:29"
                        },
                        "scope": 7578,
                        "src": "2026:185:29",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7562,
                            "nodeType": "Block",
                            "src": "2367:449:29",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "id": 7535,
                                                "name": "this",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967268,
                                                "src": "2378:4:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                    "typeString": "contract TestRecipient"
                                                }
                                            }
                                        ],
                                        "id": 7536,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2377:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                            "typeString": "contract TestRecipient"
                                        }
                                    },
                                    "id": 7537,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2377:6:29"
                                },
                                {
                                    "assignments": [
                                        7539
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7539,
                                            "mutability": "mutable",
                                            "name": "mesg",
                                            "nameLocation": "2407:4:29",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7562,
                                            "src": "2393:18:29",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string"
                                            },
                                            "typeName": {
                                                "id": 7538,
                                                "name": "string",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2393:6:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_storage_ptr",
                                                    "typeString": "string"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7541,
                                    "initialValue": {
                                        "hexValue": "746869732069732061206c6f6e67206d65737361676520746861742077652061726520676f696e6720746f2072657475726e206120736d616c6c20706172742066726f6d2e20776520646f6e2774207573652061206c6f6f702073696e63652077652077616e74206120666978656420676173207573616765206f6620746865206d6574686f6420697473656c662e",
                                        "id": 7540,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2414:145:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_fb67145e64702b9bfd73c61ddd38a8c0c691691c249258c7f7ddfd04521e7a39",
                                            "typeString": "literal_string \"this is a long message that we are going to return a small part from. we don't use a loop since we want a fixed gas usage of the method itself.\""
                                        },
                                        "value": "this is a long message that we are going to return a small part from. we don't use a loop since we want a fixed gas usage of the method itself."
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2393:166:29"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 7549,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 7545,
                                                                "name": "mesg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7539,
                                                                "src": "2584:4:29",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                    "typeString": "string memory"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                    "typeString": "string memory"
                                                                }
                                                            ],
                                                            "id": 7544,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "2578:5:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                                "typeString": "type(bytes storage pointer)"
                                                            },
                                                            "typeName": {
                                                                "id": 7543,
                                                                "name": "bytes",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "2578:5:29",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 7546,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "2578:11:29",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    },
                                                    "id": 7547,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "length",
                                                    "nodeType": "MemberAccess",
                                                    "src": "2578:18:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">=",
                                                "rightExpression": {
                                                    "id": 7548,
                                                    "name": "len",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7528,
                                                    "src": "2598:3:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "2578:23:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "696e76616c6964206c656e3a20746f6f206c61726765",
                                                "id": 7550,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2603:24:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_58fef79624f80911a04e61008327f391fe1df79178b9c9d8a5deb40eea739a71",
                                                    "typeString": "literal_string \"invalid len: too large\""
                                                },
                                                "value": "invalid len: too large"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_58fef79624f80911a04e61008327f391fe1df79178b9c9d8a5deb40eea739a71",
                                                    "typeString": "literal_string \"invalid len: too large\""
                                                }
                                            ],
                                            "id": 7542,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "2569:7:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7551,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2569:59:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7552,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2569:59:29"
                                },
                                {
                                    "AST": {
                                        "nodeType": "YulBlock",
                                        "src": "2734:21:29",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "mesg",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2743:4:29"
                                                        },
                                                        {
                                                            "name": "len",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2749:3:29"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2736:6:29"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2736:17:29"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2736:17:29"
                                            }
                                        ]
                                    },
                                    "evmVersion": "london",
                                    "externalReferences": [
                                        {
                                            "declaration": 7528,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "2749:3:29",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 7539,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "2743:4:29",
                                            "valueSize": 1
                                        }
                                    ],
                                    "id": 7553,
                                    "nodeType": "InlineAssembly",
                                    "src": "2725:30:29"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 7556,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "UnaryOperation",
                                                "operator": "!",
                                                "prefix": true,
                                                "src": "2772:9:29",
                                                "subExpression": {
                                                    "id": 7555,
                                                    "name": "doRevert",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7530,
                                                    "src": "2773:8:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "id": 7557,
                                                "name": "mesg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7539,
                                                "src": "2783:4:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            ],
                                            "id": 7554,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "2764:7:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7558,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2764:24:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7559,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2764:24:29"
                                },
                                {
                                    "expression": {
                                        "id": 7560,
                                        "name": "mesg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7539,
                                        "src": "2805:4:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                        }
                                    },
                                    "functionReturnParameters": 7534,
                                    "id": 7561,
                                    "nodeType": "Return",
                                    "src": "2798:11:29"
                                }
                            ]
                        },
                        "functionSelector": "de6e56f6",
                        "id": 7563,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "checkReturnValues",
                        "nameLocation": "2285:17:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7531,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7528,
                                    "mutability": "mutable",
                                    "name": "len",
                                    "nameLocation": "2311:3:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7563,
                                    "src": "2303:11:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7527,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2303:7:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7530,
                                    "mutability": "mutable",
                                    "name": "doRevert",
                                    "nameLocation": "2321:8:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7563,
                                    "src": "2316:13:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 7529,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2316:4:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2302:28:29"
                        },
                        "returnParameters": {
                            "id": 7534,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7533,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7563,
                                    "src": "2352:13:29",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 7532,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2352:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2351:15:29"
                        },
                        "scope": 7578,
                        "src": "2276:540:29",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7576,
                            "nodeType": "Block",
                            "src": "2945:94:29",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "id": 7568,
                                                "name": "this",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967268,
                                                "src": "2956:4:29",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                                    "typeString": "contract TestRecipient"
                                                }
                                            }
                                        ],
                                        "id": 7569,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2955:6:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_TestRecipient_$7578",
                                            "typeString": "contract TestRecipient"
                                        }
                                    },
                                    "id": 7570,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2955:6:29"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 7573,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "UnaryOperation",
                                                "operator": "!",
                                                "prefix": true,
                                                "src": "3022:9:29",
                                                "subExpression": {
                                                    "id": 7572,
                                                    "name": "doRevert",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7565,
                                                    "src": "3023:8:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            ],
                                            "id": 7571,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "3014:7:29",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                "typeString": "function (bool) pure"
                                            }
                                        },
                                        "id": 7574,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3014:18:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7575,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3014:18:29"
                                }
                            ]
                        },
                        "functionSelector": "c095ad3c",
                        "id": 7577,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "checkNoReturnValues",
                        "nameLocation": "2898:19:29",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7566,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7565,
                                    "mutability": "mutable",
                                    "name": "doRevert",
                                    "nameLocation": "2923:8:29",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7577,
                                    "src": "2918:13:29",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 7564,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2918:4:29",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2917:15:29"
                        },
                        "returnParameters": {
                            "id": 7567,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2945:0:29"
                        },
                        "scope": 7578,
                        "src": "2889:150:29",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 7579,
                "src": "225:2817:29",
                "usedErrors": []
            }
        ],
        "src": "0:3042:29"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.7+commit.e28d00a7.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.1.0",
    "updatedAt": "2023-03-16T16:54:15.229Z",
    "devdoc": {
        "kind": "dev",
        "methods": {
            "getTrustedForwarder()": {
                "returns": {
                    "forwarder": "The address of the Forwarder contract that is being used."
                }
            },
            "isTrustedForwarder(address)": {
                "params": {
                    "forwarder": "The address of the Forwarder contract that is being used."
                },
                "returns": {
                    "_0": "isTrustedForwarder `true` if the Forwarder is trusted to forward relayed transactions by this Recipient."
                }
            }
        },
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {
            "getTrustedForwarder()": {
                "notice": ":warning: **Warning** :warning: The Forwarder can have a full control over your Recipient. Only trust verified Forwarder.Method is not a required method to allow Recipients to trust multiple Forwarders. Not recommended yet."
            },
            "isTrustedForwarder(address)": {
                "notice": ":warning: **Warning** :warning: The Forwarder can have a full control over your Recipient. Only trust verified Forwarder."
            }
        },
        "version": 1
    }
}
