{
    "contractName": "TestRelayWorkerContract",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "contract IRelayHub",
                    "name": "hub",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "maxAcceptanceBudget",
                    "type": "uint256"
                },
                {
                    "components": [
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "from",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "to",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "value",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "gas",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "nonce",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "validUntilTime",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct IForwarder.ForwardRequest",
                            "name": "request",
                            "type": "tuple"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "uint256",
                                    "name": "maxFeePerGas",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxPriorityFeePerGas",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "transactionCalldataGasUsed",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "relayWorker",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "paymaster",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "forwarder",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "paymasterData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "clientId",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct GsnTypes.RelayData",
                            "name": "relayData",
                            "type": "tuple"
                        }
                    ],
                    "internalType": "struct GsnTypes.RelayRequest",
                    "name": "relayRequest",
                    "type": "tuple"
                },
                {
                    "internalType": "bytes",
                    "name": "signature",
                    "type": "bytes"
                }
            ],
            "name": "relayCall",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IRelayHub\",\"name\":\"hub\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptanceBudget\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"validUntilTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IForwarder.ForwardRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transactionCalldataGasUsed\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"clientId\",\"type\":\"uint256\"}],\"internalType\":\"struct GsnTypes.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"internalType\":\"struct GsnTypes.RelayRequest\",\"name\":\"relayRequest\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"relayCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/alexf/gsn2/packages/contracts/solpp/test/TestRelayWorkerContract.sol\":\"TestRelayWorkerContract\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/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/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/TestRelayWorkerContract.sol\":{\"keccak256\":\"0xc6921a2b75b44930083915600953b50cbfac7b79f0b2847cddce0001f92474ca\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://a0479b55b717df313538c22aec1cf4fba91713c5ecbd443fb1a9229d41d33917\",\"dweb:/ipfs/QmR7MarsMudkmrdU6tzoXGidqEeYnvRtY4N2ig2fUhQVxq\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/GsnTypes.sol\":{\"keccak256\":\"0xfc3ed2bbd925e24facf0c3bb96d57dd7fc5bcc4a684b5473f04e8d209b758805\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://cb57b5b38d3e588f119ae45174891f2049d1d0de160a12b81a20335cd8bf731b\",\"dweb:/ipfs/Qmf6xfbdLbTKEpnzxwnSaRy1YZJtLYTZh8URqry86oyoSU\"]},\"@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/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}",
    "bytecode": "0x608060405234801561001057600080fd5b506106dc806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636a3fa6fc14610030575b600080fd5b61004361003e366004610290565b610045565b005b604051633654317160e11b81526001600160a01b03851690636ca862e2906100759086908690869060040161047f565b600060405180830381600087803b15801561008f57600080fd5b505af11580156100a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526100cb91908101906101df565b5050505050505050565b80356100e08161068e565b919050565b600082601f8301126100f657600080fd5b813561010961010482610620565b6105ef565b81815284602083860101111561011e57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610100828403121561014e57600080fd5b61015661057f565b905081358152602082013560208201526040820135604082015261017c606083016100d5565b606082015261018d608083016100d5565b608082015261019e60a083016100d5565b60a082015260c082013567ffffffffffffffff8111156101bd57600080fd5b6101c9848285016100e5565b60c08301525060e082013560e082015292915050565b600080600080608085870312156101f557600080fd5b8451801515811461020557600080fd5b6020860151604087015191955093506007811061022157600080fd5b606086015190925067ffffffffffffffff81111561023e57600080fd5b8501601f8101871361024f57600080fd5b805161025d61010482610620565b81815288602083850101111561027257600080fd5b610283826020830160208601610648565b9598949750929550505050565b600080600080608085870312156102a657600080fd5b84356102b18161068e565b935060208501359250604085013567ffffffffffffffff808211156102d557600080fd5b90860190604082890312156102e957600080fd5b6102f16105a9565b82358281111561030057600080fd5b830160e0818b03121561031257600080fd5b61031a6105cc565b610323826100d5565b8152610331602083016100d5565b602082015260408201356040820152606082013560608201526080820135608082015260a08201358481111561036657600080fd5b6103728c8285016100e5565b60a08301525060c082013560c0820152808352505060208301358281111561039957600080fd5b6103a58a82860161013b565b602083015250935060608701359150808211156103c157600080fd5b506103ce878288016100e5565b91505092959194509250565b600081518084526103f2816020860160208601610648565b601f01601f19169290920160200192915050565b6000610100825184526020830151602085015260408301516040850152606083015160018060a01b0380821660608701528060808601511660808701528060a08601511660a0870152505060c08301518160c0860152610468828601826103da565b91505060e083015160e08501528091505092915050565b60a08152601760a08201527f47534e2052656c61796564205472616e73616374696f6e00000000000000000060c082015283602082015260e0604082015260008351604060e084015260018060a01b038082511661012085015280602083015116610140850152506040810151610160840152606081015161018084015260808101516101a084015260a081015160e06101c08501526105236102008501826103da565b60c092909201516101e085015250602085015183820360df19016101008501529061054e8183610406565b915050828103606084015261056381856103da565b8381036080850152600081529050602081019695505050505050565b604051610100810167ffffffffffffffff811182821017156105a3576105a3610678565b60405290565b6040805190810167ffffffffffffffff811182821017156105a3576105a3610678565b60405160e0810167ffffffffffffffff811182821017156105a3576105a3610678565b604051601f8201601f1916810167ffffffffffffffff8111828210171561061857610618610678565b604052919050565b600067ffffffffffffffff82111561063a5761063a610678565b50601f01601f191660200190565b60005b8381101561066357818101518382015260200161064b565b83811115610672576000848401525b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146106a357600080fd5b5056fea264697066735822122009210eae6c2d0efc49bc419d6cc071c482c6dd62b0f942e51488a2fb01c19c0864736f6c63430008070033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636a3fa6fc14610030575b600080fd5b61004361003e366004610290565b610045565b005b604051633654317160e11b81526001600160a01b03851690636ca862e2906100759086908690869060040161047f565b600060405180830381600087803b15801561008f57600080fd5b505af11580156100a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526100cb91908101906101df565b5050505050505050565b80356100e08161068e565b919050565b600082601f8301126100f657600080fd5b813561010961010482610620565b6105ef565b81815284602083860101111561011e57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610100828403121561014e57600080fd5b61015661057f565b905081358152602082013560208201526040820135604082015261017c606083016100d5565b606082015261018d608083016100d5565b608082015261019e60a083016100d5565b60a082015260c082013567ffffffffffffffff8111156101bd57600080fd5b6101c9848285016100e5565b60c08301525060e082013560e082015292915050565b600080600080608085870312156101f557600080fd5b8451801515811461020557600080fd5b6020860151604087015191955093506007811061022157600080fd5b606086015190925067ffffffffffffffff81111561023e57600080fd5b8501601f8101871361024f57600080fd5b805161025d61010482610620565b81815288602083850101111561027257600080fd5b610283826020830160208601610648565b9598949750929550505050565b600080600080608085870312156102a657600080fd5b84356102b18161068e565b935060208501359250604085013567ffffffffffffffff808211156102d557600080fd5b90860190604082890312156102e957600080fd5b6102f16105a9565b82358281111561030057600080fd5b830160e0818b03121561031257600080fd5b61031a6105cc565b610323826100d5565b8152610331602083016100d5565b602082015260408201356040820152606082013560608201526080820135608082015260a08201358481111561036657600080fd5b6103728c8285016100e5565b60a08301525060c082013560c0820152808352505060208301358281111561039957600080fd5b6103a58a82860161013b565b602083015250935060608701359150808211156103c157600080fd5b506103ce878288016100e5565b91505092959194509250565b600081518084526103f2816020860160208601610648565b601f01601f19169290920160200192915050565b6000610100825184526020830151602085015260408301516040850152606083015160018060a01b0380821660608701528060808601511660808701528060a08601511660a0870152505060c08301518160c0860152610468828601826103da565b91505060e083015160e08501528091505092915050565b60a08152601760a08201527f47534e2052656c61796564205472616e73616374696f6e00000000000000000060c082015283602082015260e0604082015260008351604060e084015260018060a01b038082511661012085015280602083015116610140850152506040810151610160840152606081015161018084015260808101516101a084015260a081015160e06101c08501526105236102008501826103da565b60c092909201516101e085015250602085015183820360df19016101008501529061054e8183610406565b915050828103606084015261056381856103da565b8381036080850152600081529050602081019695505050505050565b604051610100810167ffffffffffffffff811182821017156105a3576105a3610678565b60405290565b6040805190810167ffffffffffffffff811182821017156105a3576105a3610678565b60405160e0810167ffffffffffffffff811182821017156105a3576105a3610678565b604051601f8201601f1916810167ffffffffffffffff8111828210171561061857610618610678565b604052919050565b600067ffffffffffffffff82111561063a5761063a610678565b50601f01601f191660200190565b60005b8381101561066357818101518382015260200161064b565b83811115610672576000848401525b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146106a357600080fd5b5056fea264697066735822122009210eae6c2d0efc49bc419d6cc071c482c6dd62b0f942e51488a2fb01c19c0864736f6c63430008070033",
    "immutableReferences": {},
    "sourceMap": "164:327:34:-:0;;;;;;;;;;;;;;;;;;;",
    "deployedSourceMap": "164:327:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;204:285;;;;;;:::i;:::-;;:::i;:::-;;;392:90;;-1:-1:-1;;;392:90:34;;-1:-1:-1;;;;;392:13:34;;;;;:90;;433:19;;454:12;;468:9;;392:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;392:90:34;;;;;;;;;;;;:::i;:::-;;;;;204:285;;;;:::o;14:134:63:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:462::-;195:5;248:3;241:4;233:6;229:17;225:27;215:55;;266:1;263;256:12;215:55;302:6;289:20;333:48;349:31;377:2;349:31;:::i;:::-;333:48;:::i;:::-;406:2;397:7;390:19;452:3;445:4;440:2;432:6;428:15;424:26;421:35;418:55;;;469:1;466;459:12;418:55;534:2;527:4;519:6;515:17;508:4;499:7;495:18;482:55;582:1;557:16;;;575:4;553:27;546:38;;;;561:7;153:462;-1:-1:-1;;;153:462:63:o;620:829::-;676:5;724:6;712:9;707:3;703:19;699:32;696:52;;;744:1;741;734:12;696:52;766:22;;:::i;:::-;757:31;;824:9;811:23;804:5;797:38;895:2;884:9;880:18;867:32;862:2;855:5;851:14;844:56;960:2;949:9;945:18;932:32;927:2;920:5;916:14;909:56;997:38;1031:2;1020:9;1016:18;997:38;:::i;:::-;992:2;985:5;981:14;974:62;1069:39;1103:3;1092:9;1088:19;1069:39;:::i;:::-;1063:3;1056:5;1052:15;1045:64;1142:39;1176:3;1165:9;1161:19;1142:39;:::i;:::-;1136:3;1129:5;1125:15;1118:64;1233:3;1222:9;1218:19;1205:33;1261:18;1253:6;1250:30;1247:50;;;1293:1;1290;1283:12;1247:50;1330:45;1371:3;1362:6;1351:9;1347:22;1330:45;:::i;:::-;1324:3;1317:5;1313:15;1306:70;;1437:3;1426:9;1422:19;1409:33;1403:3;1396:5;1392:15;1385:58;620:829;;;;:::o;1454:1013::-;1577:6;1585;1593;1601;1654:3;1642:9;1633:7;1629:23;1625:33;1622:53;;;1671:1;1668;1661:12;1622:53;1703:9;1697:16;1756:5;1749:13;1742:21;1735:5;1732:32;1722:60;;1778:1;1775;1768:12;1722:60;1846:2;1831:18;;1825:25;1895:2;1880:18;;1874:25;1801:5;;-1:-1:-1;1825:25:63;-1:-1:-1;1930:1:63;1918:14;;1908:42;;1946:1;1943;1936:12;1908:42;2020:2;2005:18;;1999:25;1969:7;;-1:-1:-1;2047:18:63;2036:30;;2033:50;;;2079:1;2076;2069:12;2033:50;2102:22;;2155:4;2147:13;;2143:27;-1:-1:-1;2133:55:63;;2184:1;2181;2174:12;2133:55;2213:2;2207:9;2238:48;2254:31;2282:2;2254:31;:::i;2238:48::-;2309:2;2302:5;2295:17;2349:7;2344:2;2339;2335;2331:11;2327:20;2324:33;2321:53;;;2370:1;2367;2360:12;2321:53;2383:54;2434:2;2429;2422:5;2418:14;2413:2;2409;2405:11;2383:54;:::i;:::-;1454:1013;;;;-1:-1:-1;1454:1013:63;;-1:-1:-1;;;;1454:1013:63:o;2472:1857::-;2615:6;2623;2631;2639;2692:3;2680:9;2671:7;2667:23;2663:33;2660:53;;;2709:1;2706;2699:12;2660:53;2748:9;2735:23;2767:31;2792:5;2767:31;:::i;:::-;2817:5;-1:-1:-1;2869:2:63;2854:18;;2841:32;;-1:-1:-1;2924:2:63;2909:18;;2896:32;2947:18;2977:14;;;2974:34;;;3004:1;3001;2994:12;2974:34;3027:22;;;;3083:2;3065:16;;;3061:25;3058:45;;;3099:1;3096;3089:12;3058:45;3127:22;;:::i;:::-;3187:2;3174:16;3215:2;3205:8;3202:16;3199:36;;;3231:1;3228;3221:12;3199:36;3254:17;;3305:4;3287:16;;;3283:27;3280:47;;;3323:1;3320;3313:12;3280:47;3351:22;;:::i;:::-;3398;3417:2;3398:22;:::i;:::-;3389:7;3382:39;3455:31;3482:2;3478;3474:11;3455:31;:::i;:::-;3450:2;3441:7;3437:16;3430:57;3542:2;3538;3534:11;3521:25;3516:2;3507:7;3503:16;3496:51;3602:2;3598;3594:11;3581:25;3576:2;3567:7;3563:16;3556:51;3663:3;3659:2;3655:12;3642:26;3636:3;3627:7;3623:17;3616:53;3715:3;3711:2;3707:12;3694:26;3745:2;3735:8;3732:16;3729:36;;;3761:1;3758;3751:12;3729:36;3800:44;3836:7;3825:8;3821:2;3817:17;3800:44;:::i;:::-;3794:3;3785:7;3781:17;3774:71;;3901:3;3897:2;3893:12;3880:26;3874:3;3865:7;3861:17;3854:53;3932:7;3923;3916:24;;;3986:2;3982;3978:11;3965:25;4015:2;4005:8;4002:16;3999:36;;;4031:1;4028;4021:12;3999:36;4069:55;4116:7;4105:8;4101:2;4097:17;4069:55;:::i;:::-;4064:2;4051:16;;4044:81;-1:-1:-1;4055:7:63;-1:-1:-1;4204:2:63;4189:18;;4176:32;;-1:-1:-1;4220:16:63;;;4217:36;;;4249:1;4246;4239:12;4217:36;;4272:51;4315:7;4304:8;4293:9;4289:24;4272:51;:::i;:::-;4262:61;;;2472:1857;;;;;;;:::o;4334:257::-;4375:3;4413:5;4407:12;4440:6;4435:3;4428:19;4456:63;4512:6;4505:4;4500:3;4496:14;4489:4;4482:5;4478:16;4456:63;:::i;:::-;4573:2;4552:15;-1:-1:-1;;4548:29:63;4539:39;;;;4580:4;4535:50;;4334:257;-1:-1:-1;;4334:257:63:o;4596:744::-;4648:3;4676:6;4709:5;4703:12;4698:3;4691:25;4765:4;4758:5;4754:16;4748:23;4741:4;4736:3;4732:14;4725:47;4821:4;4814:5;4810:16;4804:23;4797:4;4792:3;4788:14;4781:47;4874:4;4867:5;4863:16;4857:23;4916:1;4912;4907:3;4903:11;4899:19;4968:2;4954:12;4950:21;4943:4;4938:3;4934:14;4927:45;5033:2;5025:4;5018:5;5014:16;5008:23;5004:32;4997:4;4992:3;4988:14;4981:56;5098:2;5090:4;5083:5;5079:16;5073:23;5069:32;5062:4;5057:3;5053:14;5046:56;;;5150:4;5143:5;5139:16;5133:23;5188:2;5181:4;5176:3;5172:14;5165:26;5212:46;5254:2;5249:3;5245:12;5229:14;5212:46;:::i;:::-;5200:58;;;5307:4;5300:5;5296:16;5290:23;5283:4;5278:3;5274:14;5267:47;5330:4;5323:11;;;4596:744;;;;:::o;5345:1802::-;5809:3;5798:9;5791:22;5850:2;5844:3;5833:9;5829:19;5822:31;5890:25;5884:3;5873:9;5869:19;5862:54;5954:6;5947:4;5936:9;5932:20;5925:36;5997:3;5992:2;5981:9;5977:18;5970:31;5772:4;6036:6;6030:13;6080:2;6074:3;6063:9;6059:19;6052:31;6119:1;6115;6110:3;6106:11;6102:19;6183:2;6168:12;6162:19;6158:28;6152:3;6141:9;6137:19;6130:57;6260:2;6252:4;6238:12;6234:23;6228:30;6224:39;6218:3;6207:9;6203:19;6196:68;;6325:2;6311:12;6307:21;6301:28;6295:3;6284:9;6280:19;6273:57;6391:4;6377:12;6373:23;6367:30;6361:3;6350:9;6346:19;6339:59;6459:4;6445:12;6441:23;6435:30;6429:3;6418:9;6414:19;6407:59;6521:3;6507:12;6503:22;6497:29;6563:3;6557;6546:9;6542:19;6535:32;6590:53;6638:3;6627:9;6623:19;6607:14;6590:53;:::i;:::-;6704:3;6686:22;;;;6680:29;6674:3;6659:19;;6652:58;-1:-1:-1;6759:4:63;6747:17;;6741:24;6806:22;;;-1:-1:-1;;6802:37:63;6796:3;6781:19;;6774:66;6741:24;6860:51;6576:67;6741:24;6860:51;:::i;:::-;6849:62;;;6958:9;6953:3;6949:19;6942:4;6931:9;6927:20;6920:49;6992:29;7017:3;7009:6;6992:29;:::i;:::-;7059:22;;;7052:4;7037:20;;7030:52;8487:1;8475:14;;6978:43;-1:-1:-1;8522:4:63;8513:14;;7091:50;5345:1802;-1:-1:-1;;;;;;5345:1802:63:o;7152:255::-;7224:2;7218:9;7266:6;7254:19;;7303:18;7288:34;;7324:22;;;7285:62;7282:88;;;7350:18;;:::i;:::-;7386:2;7379:22;7152:255;:::o;7412:251::-;7484:2;7478:9;;;7514:15;;7559:18;7544:34;;7580:22;;;7541:62;7538:88;;;7606:18;;:::i;7668:253::-;7740:2;7734:9;7782:4;7770:17;;7817:18;7802:34;;7838:22;;;7799:62;7796:88;;;7864:18;;:::i;7926:275::-;7997:2;7991:9;8062:2;8043:13;;-1:-1:-1;;8039:27:63;8027:40;;8097:18;8082:34;;8118:22;;;8079:62;8076:88;;;8144:18;;:::i;:::-;8180:2;8173:22;7926:275;;-1:-1:-1;7926:275:63:o;8206:186::-;8254:4;8287:18;8279:6;8276:30;8273:56;;;8309:18;;:::i;:::-;-1:-1:-1;8375:2:63;8354:15;-1:-1:-1;;8350:29:63;8381:4;8346:40;;8206:186::o;8538:258::-;8610:1;8620:113;8634:6;8631:1;8628:13;8620:113;;;8710:11;;;8704:18;8691:11;;;8684:39;8656:2;8649:10;8620:113;;;8751:6;8748:1;8745:13;8742:48;;;8786:1;8777:6;8772:3;8768:16;8761:27;8742:48;;8538:258;;;:::o;8801:127::-;8862:10;8857:3;8853:20;8850:1;8843:31;8893:4;8890:1;8883:15;8917:4;8914:1;8907:15;8933:131;-1:-1:-1;;;;;9008:31:63;;8998:42;;8988:70;;9054:1;9051;9044:12;8988:70;8933:131;:::o",
    "source": "pragma solidity ^0.8.0;\npragma abicoder v2;\n\n/* solhint-disable avoid-tx-origin */\n// SPDX-License-Identifier: GPL-3.0-only\n\nimport \"../interfaces/IRelayHub.sol\";\n\ncontract TestRelayWorkerContract {\n\n    function relayCall(\n        IRelayHub hub,\n        uint256 maxAcceptanceBudget,\n        GsnTypes.RelayRequest memory relayRequest,\n        bytes memory signature)\n    public\n    {\n        hub.relayCall(\"GSN Relayed Transaction\", maxAcceptanceBudget, relayRequest, signature, \"\");\n    }\n}",
    "sourcePath": "/Users/alexf/gsn2/packages/contracts/solpp/test/TestRelayWorkerContract.sol",
    "ast": {
        "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/test/TestRelayWorkerContract.sol",
        "exportedSymbols": {
            "ERC165": [
                12146
            ],
            "GsnTypes": [
                8492
            ],
            "IERC165": [
                12352
            ],
            "IERC20": [
                10849
            ],
            "IForwarder": [
                5129
            ],
            "IRelayHub": [
                5896
            ],
            "IStakeManager": [
                6284
            ],
            "TestRelayWorkerContract": [
                7787
            ]
        },
        "id": 7788,
        "license": "GPL-3.0-only",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 7760,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "0:23:34"
            },
            {
                "id": 7761,
                "literals": [
                    "abicoder",
                    "v2"
                ],
                "nodeType": "PragmaDirective",
                "src": "24:19:34"
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayHub.sol",
                "file": "../interfaces/IRelayHub.sol",
                "id": 7762,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 7788,
                "sourceUnit": 5897,
                "src": "125:37:34",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [],
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 7787,
                "linearizedBaseContracts": [
                    7787
                ],
                "name": "TestRelayWorkerContract",
                "nameLocation": "173:23:34",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "body": {
                            "id": 7785,
                            "nodeType": "Block",
                            "src": "382:107:34",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "hexValue": "47534e2052656c61796564205472616e73616374696f6e",
                                                "id": 7778,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "406:25:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_9647bda542dcf6621898cb1d03b22adb04c620d77e0bc6e67edb695f5f57777e",
                                                    "typeString": "literal_string \"GSN Relayed Transaction\""
                                                },
                                                "value": "GSN Relayed Transaction"
                                            },
                                            {
                                                "id": 7779,
                                                "name": "maxAcceptanceBudget",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7767,
                                                "src": "433:19:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 7780,
                                                "name": "relayRequest",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7770,
                                                "src": "454:12:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayRequest_$8491_memory_ptr",
                                                    "typeString": "struct GsnTypes.RelayRequest memory"
                                                }
                                            },
                                            {
                                                "id": 7781,
                                                "name": "signature",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7772,
                                                "src": "468:9:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            {
                                                "hexValue": "",
                                                "id": 7782,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "479:2:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                    "typeString": "literal_string \"\""
                                                },
                                                "value": ""
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_9647bda542dcf6621898cb1d03b22adb04c620d77e0bc6e67edb695f5f57777e",
                                                    "typeString": "literal_string \"GSN Relayed Transaction\""
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_struct$_RelayRequest_$8491_memory_ptr",
                                                    "typeString": "struct GsnTypes.RelayRequest memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                    "typeString": "literal_string \"\""
                                                }
                                            ],
                                            "expression": {
                                                "id": 7775,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7765,
                                                "src": "392:3:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            },
                                            "id": 7777,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "relayCall",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5729,
                                            "src": "392:13:34",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_struct$_RelayRequest_$8491_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_uint256_$_t_enum$_RelayCallStatus_$5668_$_t_bytes_memory_ptr_$",
                                                "typeString": "function (string memory,uint256,struct GsnTypes.RelayRequest memory,bytes memory,bytes memory) external returns (bool,uint256,enum IRelayHub.RelayCallStatus,bytes memory)"
                                            }
                                        },
                                        "id": 7783,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "392:90:34",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$_t_enum$_RelayCallStatus_$5668_$_t_bytes_memory_ptr_$",
                                            "typeString": "tuple(bool,uint256,enum IRelayHub.RelayCallStatus,bytes memory)"
                                        }
                                    },
                                    "id": 7784,
                                    "nodeType": "ExpressionStatement",
                                    "src": "392:90:34"
                                }
                            ]
                        },
                        "functionSelector": "6a3fa6fc",
                        "id": 7786,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "relayCall",
                        "nameLocation": "213:9:34",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7773,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7765,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "242:3:34",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7786,
                                    "src": "232:13:34",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 7764,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 7763,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "232:9:34"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "232:9:34",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7767,
                                    "mutability": "mutable",
                                    "name": "maxAcceptanceBudget",
                                    "nameLocation": "263:19:34",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7786,
                                    "src": "255:27:34",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7766,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "255:7:34",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7770,
                                    "mutability": "mutable",
                                    "name": "relayRequest",
                                    "nameLocation": "321:12:34",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7786,
                                    "src": "292:41:34",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RelayRequest_$8491_memory_ptr",
                                        "typeString": "struct GsnTypes.RelayRequest"
                                    },
                                    "typeName": {
                                        "id": 7769,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 7768,
                                            "name": "GsnTypes.RelayRequest",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 8491,
                                            "src": "292:21:34"
                                        },
                                        "referencedDeclaration": 8491,
                                        "src": "292:21:34",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayRequest_$8491_storage_ptr",
                                            "typeString": "struct GsnTypes.RelayRequest"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7772,
                                    "mutability": "mutable",
                                    "name": "signature",
                                    "nameLocation": "356:9:34",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7786,
                                    "src": "343:22:34",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 7771,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "343:5:34",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "222:144:34"
                        },
                        "returnParameters": {
                            "id": 7774,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "382:0:34"
                        },
                        "scope": 7787,
                        "src": "204:285:34",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 7788,
                "src": "164:327:34",
                "usedErrors": []
            }
        ],
        "src": "0:491:34"
    },
    "legacyAST": {
        "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/test/TestRelayWorkerContract.sol",
        "exportedSymbols": {
            "ERC165": [
                12146
            ],
            "GsnTypes": [
                8492
            ],
            "IERC165": [
                12352
            ],
            "IERC20": [
                10849
            ],
            "IForwarder": [
                5129
            ],
            "IRelayHub": [
                5896
            ],
            "IStakeManager": [
                6284
            ],
            "TestRelayWorkerContract": [
                7787
            ]
        },
        "id": 7788,
        "license": "GPL-3.0-only",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 7760,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "0:23:34"
            },
            {
                "id": 7761,
                "literals": [
                    "abicoder",
                    "v2"
                ],
                "nodeType": "PragmaDirective",
                "src": "24:19:34"
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayHub.sol",
                "file": "../interfaces/IRelayHub.sol",
                "id": 7762,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 7788,
                "sourceUnit": 5897,
                "src": "125:37:34",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [],
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 7787,
                "linearizedBaseContracts": [
                    7787
                ],
                "name": "TestRelayWorkerContract",
                "nameLocation": "173:23:34",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "body": {
                            "id": 7785,
                            "nodeType": "Block",
                            "src": "382:107:34",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "hexValue": "47534e2052656c61796564205472616e73616374696f6e",
                                                "id": 7778,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "406:25:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_9647bda542dcf6621898cb1d03b22adb04c620d77e0bc6e67edb695f5f57777e",
                                                    "typeString": "literal_string \"GSN Relayed Transaction\""
                                                },
                                                "value": "GSN Relayed Transaction"
                                            },
                                            {
                                                "id": 7779,
                                                "name": "maxAcceptanceBudget",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7767,
                                                "src": "433:19:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 7780,
                                                "name": "relayRequest",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7770,
                                                "src": "454:12:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayRequest_$8491_memory_ptr",
                                                    "typeString": "struct GsnTypes.RelayRequest memory"
                                                }
                                            },
                                            {
                                                "id": 7781,
                                                "name": "signature",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7772,
                                                "src": "468:9:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            {
                                                "hexValue": "",
                                                "id": 7782,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "479:2:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                    "typeString": "literal_string \"\""
                                                },
                                                "value": ""
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_9647bda542dcf6621898cb1d03b22adb04c620d77e0bc6e67edb695f5f57777e",
                                                    "typeString": "literal_string \"GSN Relayed Transaction\""
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_struct$_RelayRequest_$8491_memory_ptr",
                                                    "typeString": "struct GsnTypes.RelayRequest memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                    "typeString": "literal_string \"\""
                                                }
                                            ],
                                            "expression": {
                                                "id": 7775,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7765,
                                                "src": "392:3:34",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            },
                                            "id": 7777,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "relayCall",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5729,
                                            "src": "392:13:34",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_struct$_RelayRequest_$8491_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_uint256_$_t_enum$_RelayCallStatus_$5668_$_t_bytes_memory_ptr_$",
                                                "typeString": "function (string memory,uint256,struct GsnTypes.RelayRequest memory,bytes memory,bytes memory) external returns (bool,uint256,enum IRelayHub.RelayCallStatus,bytes memory)"
                                            }
                                        },
                                        "id": 7783,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "392:90:34",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$_t_enum$_RelayCallStatus_$5668_$_t_bytes_memory_ptr_$",
                                            "typeString": "tuple(bool,uint256,enum IRelayHub.RelayCallStatus,bytes memory)"
                                        }
                                    },
                                    "id": 7784,
                                    "nodeType": "ExpressionStatement",
                                    "src": "392:90:34"
                                }
                            ]
                        },
                        "functionSelector": "6a3fa6fc",
                        "id": 7786,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "relayCall",
                        "nameLocation": "213:9:34",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7773,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7765,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "242:3:34",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7786,
                                    "src": "232:13:34",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 7764,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 7763,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "232:9:34"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "232:9:34",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7767,
                                    "mutability": "mutable",
                                    "name": "maxAcceptanceBudget",
                                    "nameLocation": "263:19:34",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7786,
                                    "src": "255:27:34",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7766,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "255:7:34",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7770,
                                    "mutability": "mutable",
                                    "name": "relayRequest",
                                    "nameLocation": "321:12:34",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7786,
                                    "src": "292:41:34",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RelayRequest_$8491_memory_ptr",
                                        "typeString": "struct GsnTypes.RelayRequest"
                                    },
                                    "typeName": {
                                        "id": 7769,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 7768,
                                            "name": "GsnTypes.RelayRequest",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 8491,
                                            "src": "292:21:34"
                                        },
                                        "referencedDeclaration": 8491,
                                        "src": "292:21:34",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayRequest_$8491_storage_ptr",
                                            "typeString": "struct GsnTypes.RelayRequest"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7772,
                                    "mutability": "mutable",
                                    "name": "signature",
                                    "nameLocation": "356:9:34",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7786,
                                    "src": "343:22:34",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 7771,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "343:5:34",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "222:144:34"
                        },
                        "returnParameters": {
                            "id": 7774,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "382:0:34"
                        },
                        "scope": 7787,
                        "src": "204:285:34",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 7788,
                "src": "164:327:34",
                "usedErrors": []
            }
        ],
        "src": "0:491:34"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.7+commit.e28d00a7.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.1.0",
    "updatedAt": "2023-03-16T16:54:15.237Z",
    "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
