{"contractName":"MultiSend","abi":[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[{"internalType":"bytes","name":"transactions","type":"bytes"}],"name":"multiSend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5060405180807f6d756c746973656e642e67756172642e627974657333320000000000000000008152506017019050604051809103902060008190555061026c8061005c6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80638d80ff0a14610030575b600080fd5b6100e96004803603602081101561004657600080fd5b810190808035906020019064010000000081111561006357600080fd5b82018360208201111561007557600080fd5b8035906020019184600183028401116401000000008311171561009757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506100eb565b005b60405180807f6d756c746973656e642e67756172642e6279746573333200000000000000000081525060170190506040518091039020600054141561017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806102086030913960400191505060405180910390fd5b805160205b81811015610202578083015160f81c6001820184015160601c6015830185015160358401860151605585018701600085600081146101c557600181146101d5576101e0565b6000808585888a5af191506101e0565b6000808585895af491505b5060008114156101ef57600080fd5b8260550187019650505050505050610180565b50505056fe4d756c746953656e642073686f756c64206f6e6c792062652063616c6c6564207669612064656c656761746563616c6ca265627a7a7231582050eeeb7a860e1610748dad75f8de6a5ab32bc4eba1075a7f3b4e59a8b9eb241364736f6c634300050e0032","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80638d80ff0a14610030575b600080fd5b6100e96004803603602081101561004657600080fd5b810190808035906020019064010000000081111561006357600080fd5b82018360208201111561007557600080fd5b8035906020019184600183028401116401000000008311171561009757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506100eb565b005b60405180807f6d756c746973656e642e67756172642e6279746573333200000000000000000081525060170190506040518091039020600054141561017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806102086030913960400191505060405180910390fd5b805160205b81811015610202578083015160f81c6001820184015160601c6015830185015160358401860151605585018701600085600081146101c557600181146101d5576101e0565b6000808585888a5af191506101e0565b6000808585895af491505b5060008114156101ef57600080fd5b8260550187019650505050505050610180565b50505056fe4d756c746953656e642073686f756c64206f6e6c792062652063616c6c6564207669612064656c656761746563616c6ca265627a7a7231582050eeeb7a860e1610748dad75f8de6a5ab32bc4eba1075a7f3b4e59a8b9eb241364736f6c634300050e0032","sourceMap":"312:2694:21:-;;;440:57;8:9:-1;5:2;;;30:1;27;20:12;5:2;440:57:21;377:36;;;;;;;;;;;;;;;;;;;471:5;:19;;;;312:2694;;;;;;","deployedSourceMap":"312:2694:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;312:2694:21;;;;;;;;;;;;;;;;;;;1098:1906;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1098:1906:21;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1098:1906:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1098:1906:21;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1098:1906:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1098:1906:21;;;;;;;;;;;;;;;:::i;:::-;;;377:36;;;;;;;;;;;;;;;;;;;1181:5;;:20;;1173:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1371:12;1365:19;1406:4;1423:1565;1437:6;1434:1;1431:13;1423:1565;;;1758:1;1744:12;1740:20;1734:27;1728:4;1724:38;2032:4;2029:1;2025:12;2011;2007:31;2001:38;1995:4;1991:49;2194:4;2191:1;2187:12;2173;2169:31;2163:38;2377:4;2374:1;2370:12;2356;2352:31;2346:38;2571:4;2568:1;2564:12;2550;2546:31;2609:1;2634:9;2665:1;2660:66;;;;2748:1;2743:67;;;;2627:183;;2660:66;2722:1;2719;2707:10;2701:4;2694:5;2690:2;2685:3;2680:44;2669:55;;2660:66;;2743:67;2806:1;2803;2791:10;2785:4;2781:2;2776:3;2763:45;2752:56;;2627:183;;2842:1;2833:7;2830:14;2827:2;;;2857:1;2854;2847:12;2827:2;2962:10;2956:4;2952:21;2949:1;2945:29;2940:34;;1449:1539;;;;;;1423:1565;;;1337:1661;;;:::o","source":"pragma solidity >=0.5.0 <0.7.0;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - <nick.dodson@consensys.net>\n/// @author Gonçalo Sá - <goncalo.sa@consensys.net>\n/// @author Stefan George - <stefan@gnosis.io>\n/// @author Richard Meissner - <richard@gnosis.io>\ncontract MultiSend {\n\n    bytes32 constant private GUARD_VALUE = keccak256(\"multisend.guard.bytes32\");\n\n    bytes32 guard;\n\n    constructor() public {\n        guard = GUARD_VALUE;\n    }\n\n    /// @dev Sends multiple transactions and reverts all if one fails.\n    /// @param transactions Encoded transactions. Each transaction is encoded as a packed bytes of\n    ///                     operation as a uint8 with 0 for a call or 1 for a delegatecall (=> 1 byte),\n    ///                     to as a address (=> 20 bytes),\n    ///                     value as a uint256 (=> 32 bytes),\n    ///                     data length as a uint256 (=> 32 bytes),\n    ///                     data as bytes.\n    ///                     see abi.encodePacked for more information on packed encoding\n    function multiSend(bytes memory transactions)\n        public\n    {\n        require(guard != GUARD_VALUE, \"MultiSend should only be called via delegatecall\");\n        // solium-disable-next-line security/no-inline-assembly\n        assembly {\n            let length := mload(transactions)\n            let i := 0x20\n            for { } lt(i, length) { } {\n                // First byte of the data is the operation.\n                // We shift by 248 bits (256 - 8 [operation byte]) it right since mload will always load 32 bytes (a word).\n                // This will also zero out unused data.\n                let operation := shr(0xf8, mload(add(transactions, i)))\n                // We offset the load address by 1 byte (operation byte)\n                // We shift it right by 96 bits (256 - 160 [20 address bytes]) to right-align the data and zero out unused data.\n                let to := shr(0x60, mload(add(transactions, add(i, 0x01))))\n                // We offset the load address by 21 byte (operation byte + 20 address bytes)\n                let value := mload(add(transactions, add(i, 0x15)))\n                // We offset the load address by 53 byte (operation byte + 20 address bytes + 32 value bytes)\n                let dataLength := mload(add(transactions, add(i, 0x35)))\n                // We offset the load address by 85 byte (operation byte + 20 address bytes + 32 value bytes + 32 data length bytes)\n                let data := add(transactions, add(i, 0x55))\n                let success := 0\n                switch operation\n                case 0 { success := call(gas, to, value, data, dataLength, 0, 0) }\n                case 1 { success := delegatecall(gas, to, data, dataLength, 0, 0) }\n                if eq(success, 0) { revert(0, 0) }\n                // Next entry starts at 85 byte + data length\n                i := add(i, add(0x55, dataLength))\n            }\n        }\n    }\n}\n","compiler":{"name":"solc","version":"0.5.14+commit.01f1aaa4.Emscripten.clang"},"networks":{"1":{"links":{},"events":{},"address":"0x8D29bE29923b68abfDD21e541b9374737B49cdAD","updated_at":1668154855234},"4":{"links":{},"events":{},"address":"0x8D29bE29923b68abfDD21e541b9374737B49cdAD","updated_at":1668154855270},"5":{"links":{},"events":{},"address":"0x8D29bE29923b68abfDD21e541b9374737B49cdAD","updated_at":1668154855329},"42":{"links":{},"events":{},"address":"0x8D29bE29923b68abfDD21e541b9374737B49cdAD","updated_at":1668154855299},"100":{"links":{},"events":{},"address":"0x8D29bE29923b68abfDD21e541b9374737B49cdAD","updated_at":1668154855358}},"schemaVersion":"2.0.3","updatedAt":"2022-11-11T08:20:54.744Z"}