{
  "contractName": "GnosisSafeProxyFactory",
  "sourceName": "@gnosis.pm/safe-contracts/contracts/proxies/GnosisSafeProxyFactory.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract GnosisSafeProxy",
          "name": "proxy",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "singleton",
          "type": "address"
        }
      ],
      "name": "ProxyCreation",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_singleton",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "initializer",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "saltNonce",
          "type": "uint256"
        }
      ],
      "name": "calculateCreateProxyWithNonceAddress",
      "outputs": [
        {
          "internalType": "contract GnosisSafeProxy",
          "name": "proxy",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "singleton",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "createProxy",
      "outputs": [
        {
          "internalType": "contract GnosisSafeProxy",
          "name": "proxy",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_singleton",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "initializer",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "saltNonce",
          "type": "uint256"
        },
        {
          "internalType": "contract IProxyCreationCallback",
          "name": "callback",
          "type": "address"
        }
      ],
      "name": "createProxyWithCallback",
      "outputs": [
        {
          "internalType": "contract GnosisSafeProxy",
          "name": "proxy",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_singleton",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "initializer",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "saltNonce",
          "type": "uint256"
        }
      ],
      "name": "createProxyWithNonce",
      "outputs": [
        {
          "internalType": "contract GnosisSafeProxy",
          "name": "proxy",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxyCreationCode",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxyRuntimeCode",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610a17806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80631688f0b9146100675780632500510e1461009757806353e5d935146100aa57806361b69abd146100bf578063addacc0f146100d2578063d18af54d146100da575b600080fd5b61007a61007536600461057d565b6100ed565b6040516001600160a01b0390911681526020015b60405180910390f35b61007a6100a53660046105d6565b610169565b6100b26101fe565b60405161008e91906106bd565b61007a6100cd3660046106d7565b610228565b6100b26102d2565b61007a6100e8366004610727565b6102e4565b60006100fa8484846103ba565b83519091501561011f5760008060008551602087016000865af1141561011f57600080fd5b604080516001600160a01b038084168252861660208201527f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e235910160405180910390a19392505050565b60006101ad8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506103ba915050565b6040516bffffffffffffffffffffffff19606083901b16602082015290915060340160408051601f198184030181529082905262461bcd60e51b82526101f5916004016106bd565b60405180910390fd5b606060405180602001610210906104a9565b601f1982820381018352601f90910116604052919050565b600082604051610237906104a9565b6001600160a01b039091168152602001604051809103906000f080158015610263573d6000803e3d6000fd5b508251909150156102895760008060008451602086016000865af1141561028957600080fd5b604080516001600160a01b038084168252851660208201527f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e235910160405180910390a192915050565b606060405180602001610210906104b6565b600080838360405160200161031592919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b6040516020818303038152906040528051906020012060001c905061033b8686836100ed565b91506001600160a01b038316156103b1576040516303ca56a360e31b81526001600160a01b03841690631e52b5189061037e9085908a908a908a90600401610793565b600060405180830381600087803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b505050505b50949350505050565b6000808380519060200120836040516020016103e0929190918252602082015260400190565b60405160208183030381529060405280519060200120905060006040518060200161040a906104a9565b601f1982820381018352601f90910116604081905261043791906001600160a01b038916906020016107d0565b6040516020818303038152906040529050818151826020016000f592506001600160a01b0383166104a05760405162461bcd60e51b815260206004820152601360248201527210dc99585d194c8818d85b1b0819985a5b1959606a1b60448201526064016101f5565b50509392505050565b610173806107f383390190565b607c8061096683390190565b6001600160a01b03811681146104d757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261050157600080fd5b813567ffffffffffffffff8082111561051c5761051c6104da565b604051601f8301601f19908116603f01168101908282118183101715610544576105446104da565b8160405283815286602085880101111561055d57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561059257600080fd5b833561059d816104c2565b9250602084013567ffffffffffffffff8111156105b957600080fd5b6105c5868287016104f0565b925050604084013590509250925092565b600080600080606085870312156105ec57600080fd5b84356105f7816104c2565b9350602085013567ffffffffffffffff8082111561061457600080fd5b818701915087601f83011261062857600080fd5b81358181111561063757600080fd5b88602082850101111561064957600080fd5b95986020929092019750949560400135945092505050565b60005b8381101561067c578181015183820152602001610664565b8381111561068b576000848401525b50505050565b600081518084526106a9816020860160208601610661565b601f01601f19169290920160200192915050565b6020815260006106d06020830184610691565b9392505050565b600080604083850312156106ea57600080fd5b82356106f5816104c2565b9150602083013567ffffffffffffffff81111561071157600080fd5b61071d858286016104f0565b9150509250929050565b6000806000806080858703121561073d57600080fd5b8435610748816104c2565b9350602085013567ffffffffffffffff81111561076457600080fd5b610770878288016104f0565b935050604085013591506060850135610788816104c2565b939692955090935050565b6001600160a01b038581168252841660208201526080604082018190526000906107bf90830185610691565b905082606083015295945050505050565b600083516107e2818460208801610661565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161017338038061017383398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b607c806100f76000396000f3fe6080604052600080546001600160a01b0316813563530ca43760e11b1415602857808252602082f35b3682833781823684845af490503d82833e806041573d82fd5b503d81f3fea26469706673582212205de501b8a76b0ec88692df4fe3cf0a2a23b5b488f5c9ce08c24a1c543d6e357864736f6c634300080a00336080604052600080546001600160a01b0316813563530ca43760e11b1415602857808252602082f35b3682833781823684845af490503d82833e806041573d82fd5b503d81f3fea26469706673582212205de501b8a76b0ec88692df4fe3cf0a2a23b5b488f5c9ce08c24a1c543d6e357864736f6c634300080a0033a2646970667358221220f286ddcb40372b7457ad58ddd3e19915c1bdf96ae3e6f5f455260328a6094af264736f6c634300080a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80631688f0b9146100675780632500510e1461009757806353e5d935146100aa57806361b69abd146100bf578063addacc0f146100d2578063d18af54d146100da575b600080fd5b61007a61007536600461057d565b6100ed565b6040516001600160a01b0390911681526020015b60405180910390f35b61007a6100a53660046105d6565b610169565b6100b26101fe565b60405161008e91906106bd565b61007a6100cd3660046106d7565b610228565b6100b26102d2565b61007a6100e8366004610727565b6102e4565b60006100fa8484846103ba565b83519091501561011f5760008060008551602087016000865af1141561011f57600080fd5b604080516001600160a01b038084168252861660208201527f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e235910160405180910390a19392505050565b60006101ad8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506103ba915050565b6040516bffffffffffffffffffffffff19606083901b16602082015290915060340160408051601f198184030181529082905262461bcd60e51b82526101f5916004016106bd565b60405180910390fd5b606060405180602001610210906104a9565b601f1982820381018352601f90910116604052919050565b600082604051610237906104a9565b6001600160a01b039091168152602001604051809103906000f080158015610263573d6000803e3d6000fd5b508251909150156102895760008060008451602086016000865af1141561028957600080fd5b604080516001600160a01b038084168252851660208201527f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e235910160405180910390a192915050565b606060405180602001610210906104b6565b600080838360405160200161031592919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b6040516020818303038152906040528051906020012060001c905061033b8686836100ed565b91506001600160a01b038316156103b1576040516303ca56a360e31b81526001600160a01b03841690631e52b5189061037e9085908a908a908a90600401610793565b600060405180830381600087803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b505050505b50949350505050565b6000808380519060200120836040516020016103e0929190918252602082015260400190565b60405160208183030381529060405280519060200120905060006040518060200161040a906104a9565b601f1982820381018352601f90910116604081905261043791906001600160a01b038916906020016107d0565b6040516020818303038152906040529050818151826020016000f592506001600160a01b0383166104a05760405162461bcd60e51b815260206004820152601360248201527210dc99585d194c8818d85b1b0819985a5b1959606a1b60448201526064016101f5565b50509392505050565b610173806107f383390190565b607c8061096683390190565b6001600160a01b03811681146104d757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261050157600080fd5b813567ffffffffffffffff8082111561051c5761051c6104da565b604051601f8301601f19908116603f01168101908282118183101715610544576105446104da565b8160405283815286602085880101111561055d57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561059257600080fd5b833561059d816104c2565b9250602084013567ffffffffffffffff8111156105b957600080fd5b6105c5868287016104f0565b925050604084013590509250925092565b600080600080606085870312156105ec57600080fd5b84356105f7816104c2565b9350602085013567ffffffffffffffff8082111561061457600080fd5b818701915087601f83011261062857600080fd5b81358181111561063757600080fd5b88602082850101111561064957600080fd5b95986020929092019750949560400135945092505050565b60005b8381101561067c578181015183820152602001610664565b8381111561068b576000848401525b50505050565b600081518084526106a9816020860160208601610661565b601f01601f19169290920160200192915050565b6020815260006106d06020830184610691565b9392505050565b600080604083850312156106ea57600080fd5b82356106f5816104c2565b9150602083013567ffffffffffffffff81111561071157600080fd5b61071d858286016104f0565b9150509250929050565b6000806000806080858703121561073d57600080fd5b8435610748816104c2565b9350602085013567ffffffffffffffff81111561076457600080fd5b610770878288016104f0565b935050604085013591506060850135610788816104c2565b939692955090935050565b6001600160a01b038581168252841660208201526080604082018190526000906107bf90830185610691565b905082606083015295945050505050565b600083516107e2818460208801610661565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161017338038061017383398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b607c806100f76000396000f3fe6080604052600080546001600160a01b0316813563530ca43760e11b1415602857808252602082f35b3682833781823684845af490503d82833e806041573d82fd5b503d81f3fea26469706673582212205de501b8a76b0ec88692df4fe3cf0a2a23b5b488f5c9ce08c24a1c543d6e357864736f6c634300080a00336080604052600080546001600160a01b0316813563530ca43760e11b1415602857808252602082f35b3682833781823684845af490503d82833e806041573d82fd5b503d81f3fea26469706673582212205de501b8a76b0ec88692df4fe3cf0a2a23b5b488f5c9ce08c24a1c543d6e357864736f6c634300080a0033a2646970667358221220f286ddcb40372b7457ad58ddd3e19915c1bdf96ae3e6f5f455260328a6094af264736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "devdoc": {
    "author": "Stefan George - <stefan@gnosis.pm>",
    "kind": "dev",
    "methods": {
      "calculateCreateProxyWithNonceAddress(address,bytes,uint256)": {
        "details": "Allows to get the address for a new proxy contact created via `createProxyWithNonce`      This method is only meant for address calculation purpose when you use an initializer that would revert,      therefore the response is returned with a revert. When calling this method set `from` to the address of the proxy factory.",
        "params": {
          "_singleton": "Address of singleton contract.",
          "initializer": "Payload for message call sent to new proxy contract.",
          "saltNonce": "Nonce that will be used to generate the salt to calculate the address of the new proxy contract."
        }
      },
      "createProxy(address,bytes)": {
        "details": "Allows to create new proxy contact and execute a message call to the new proxy within one transaction.",
        "params": {
          "data": "Payload for message call sent to new proxy contract.",
          "singleton": "Address of singleton contract."
        }
      },
      "createProxyWithCallback(address,bytes,uint256,address)": {
        "details": "Allows to create new proxy contact, execute a message call to the new proxy and call a specified callback within one transaction",
        "params": {
          "_singleton": "Address of singleton contract.",
          "callback": "Callback that will be invoced after the new proxy contract has been successfully deployed and initialized.",
          "initializer": "Payload for message call sent to new proxy contract.",
          "saltNonce": "Nonce that will be used to generate the salt to calculate the address of the new proxy contract."
        }
      },
      "createProxyWithNonce(address,bytes,uint256)": {
        "details": "Allows to create new proxy contact and execute a message call to the new proxy within one transaction.",
        "params": {
          "_singleton": "Address of singleton contract.",
          "initializer": "Payload for message call sent to new proxy contract.",
          "saltNonce": "Nonce that will be used to generate the salt to calculate the address of the new proxy contract."
        }
      },
      "proxyCreationCode()": {
        "details": "Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address."
      },
      "proxyRuntimeCode()": {
        "details": "Allows to retrieve the runtime code of a deployed Proxy. This can be used to check that the expected Proxy was deployed."
      }
    },
    "title": "Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.",
    "version": 1
  },
  "evm": {
    "bytecode": {
      "functionDebugData": {},
      "generatedSources": [],
      "linkReferences": {},
      "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA17 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1688F0B9 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x2500510E EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x53E5D935 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x61B69ABD EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0xADDACC0F EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xD18AF54D EQ PUSH2 0xDA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH2 0x75 CALLDATASIZE PUSH1 0x4 PUSH2 0x57D JUMP JUMPDEST PUSH2 0xED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7A PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x169 JUMP JUMPDEST PUSH2 0xB2 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8E SWAP2 SWAP1 PUSH2 0x6BD JUMP JUMPDEST PUSH2 0x7A PUSH2 0xCD CALLDATASIZE PUSH1 0x4 PUSH2 0x6D7 JUMP JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0xB2 PUSH2 0x2D2 JUMP JUMPDEST PUSH2 0x7A PUSH2 0xE8 CALLDATASIZE PUSH1 0x4 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFA DUP5 DUP5 DUP5 PUSH2 0x3BA JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 MLOAD PUSH1 0x20 DUP8 ADD PUSH1 0x0 DUP7 GAS CALL EQ ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x4F51FAF6C4561FF95F067657E43439F0F856D97C04D9EC9070A6199AD418E235 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AD DUP6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP8 SWAP3 POP PUSH2 0x3BA SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x34 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH2 0x1F5 SWAP2 PUSH1 0x4 ADD PUSH2 0x6BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x210 SWAP1 PUSH2 0x4A9 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH2 0x237 SWAP1 PUSH2 0x4A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x263 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH1 0x0 DUP7 GAS CALL EQ ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x4F51FAF6C4561FF95F067657E43439F0F856D97C04D9EC9070A6199AD418E235 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x210 SWAP1 PUSH2 0x4B6 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x315 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x60 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x34 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH2 0x33B DUP7 DUP7 DUP4 PUSH2 0xED JUMP JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3CA56A3 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x1E52B518 SWAP1 PUSH2 0x37E SWAP1 DUP6 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x793 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3E0 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x40A SWAP1 PUSH2 0x4A9 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x437 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH1 0x20 ADD PUSH2 0x7D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP DUP2 DUP2 MLOAD DUP3 PUSH1 0x20 ADD PUSH1 0x0 CREATE2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x4A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x10DC99585D194C8818D85B1B0819985A5B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F5 JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x173 DUP1 PUSH2 0x7F3 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x7C DUP1 PUSH2 0x966 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x51C JUMPI PUSH2 0x51C PUSH2 0x4DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x544 JUMPI PUSH2 0x544 PUSH2 0x4DA JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x55D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x592 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x59D DUP2 PUSH2 0x4C2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5C5 DUP7 DUP3 DUP8 ADD PUSH2 0x4F0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5F7 DUP2 PUSH2 0x4C2 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 SWAP9 PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x67C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x664 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x68B JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x6A9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x661 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x6D0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x691 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x6F5 DUP2 PUSH2 0x4C2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x71D DUP6 DUP3 DUP7 ADD PUSH2 0x4F0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x748 DUP2 PUSH2 0x4C2 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x770 DUP8 DUP3 DUP9 ADD PUSH2 0x4F0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x788 DUP2 PUSH2 0x4C2 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x7BF SWAP1 DUP4 ADD DUP6 PUSH2 0x691 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x60 DUP4 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x7E2 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x661 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x20 ADD SWAP2 SWAP1 POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x173 CODESIZE SUB DUP1 PUSH2 0x173 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x94 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C69642073696E676C65746F6E20616464726573732070726F766964 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x1959 PUSH1 0xF2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xE9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x7C DUP1 PUSH2 0xF7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 CALLDATALOAD PUSH4 0x530CA437 PUSH1 0xE1 SHL EQ ISZERO PUSH1 0x28 JUMPI DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 RETURN JUMPDEST CALLDATASIZE DUP3 DUP4 CALLDATACOPY DUP2 DUP3 CALLDATASIZE DUP5 DUP5 GAS DELEGATECALL SWAP1 POP RETURNDATASIZE DUP3 DUP4 RETURNDATACOPY DUP1 PUSH1 0x41 JUMPI RETURNDATASIZE DUP3 REVERT JUMPDEST POP RETURNDATASIZE DUP2 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D 0xE5 ADD 0xB8 0xA7 PUSH12 0xEC88692DF4FE3CF0A2A23B5 0xB4 DUP9 CREATE2 0xC9 0xCE ADDMOD 0xC2 0x4A SHR SLOAD RETURNDATASIZE PUSH15 0x357864736F6C634300080A00336080 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 CALLDATALOAD PUSH4 0x530CA437 PUSH1 0xE1 SHL EQ ISZERO PUSH1 0x28 JUMPI DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 RETURN JUMPDEST CALLDATASIZE DUP3 DUP4 CALLDATACOPY DUP2 DUP3 CALLDATASIZE DUP5 DUP5 GAS DELEGATECALL SWAP1 POP RETURNDATASIZE DUP3 DUP4 RETURNDATACOPY DUP1 PUSH1 0x41 JUMPI RETURNDATASIZE DUP3 REVERT JUMPDEST POP RETURNDATASIZE DUP2 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D 0xE5 ADD 0xB8 0xA7 PUSH12 0xEC88692DF4FE3CF0A2A23B5 0xB4 DUP9 CREATE2 0xC9 0xCE ADDMOD 0xC2 0x4A SHR SLOAD RETURNDATASIZE PUSH15 0x357864736F6C634300080A0033A264 PUSH10 0x70667358221220F286DD 0xCB BLOCKHASH CALLDATACOPY 0x2B PUSH21 0x57AD58DDD3E19915C1BDF96AE3E6F5F455260328A6 MULMOD 0x4A CALLCODE PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ",
      "sourceMap": "324:5502:25:-:0;;;;;;;;;;;;;;;;;;;"
    },
    "deployedBytecode": {
      "functionDebugData": {
        "@calculateCreateProxyWithNonceAddress_3162": {
          "entryPoint": 361,
          "id": 3162,
          "parameterSlots": 4,
          "returnSlots": 1
        },
        "@createProxyWithCallback_3130": {
          "entryPoint": 740,
          "id": 3130,
          "parameterSlots": 4,
          "returnSlots": 1
        },
        "@createProxyWithNonce_3073": {
          "entryPoint": 237,
          "id": 3073,
          "parameterSlots": 3,
          "returnSlots": 1
        },
        "@createProxy_2959": {
          "entryPoint": 552,
          "id": 2959,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "@deployProxyWithNonce_3040": {
          "entryPoint": 954,
          "id": 3040,
          "parameterSlots": 3,
          "returnSlots": 1
        },
        "@proxyCreationCode_2983": {
          "entryPoint": 510,
          "id": 2983,
          "parameterSlots": 0,
          "returnSlots": 1
        },
        "@proxyRuntimeCode_2971": {
          "entryPoint": 722,
          "id": 2971,
          "parameterSlots": 0,
          "returnSlots": 1
        },
        "abi_decode_bytes": {
          "entryPoint": 1264,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint256": {
          "entryPoint": 1494,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 4
        },
        "abi_decode_tuple_t_addresst_bytes_memory_ptr": {
          "entryPoint": 1751,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 2
        },
        "abi_decode_tuple_t_addresst_bytes_memory_ptrt_uint256": {
          "entryPoint": 1405,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 3
        },
        "abi_decode_tuple_t_addresst_bytes_memory_ptrt_uint256t_contract$_IProxyCreationCallback_$3179": {
          "entryPoint": 1831,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 4
        },
        "abi_encode_bytes": {
          "entryPoint": 1681,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 3,
          "returnSlots": 1
        },
        "abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256__to_t_bytes_memory_ptr_t_uint256__nonPadded_inplace_fromStack_reversed": {
          "entryPoint": 2000,
          "id": null,
          "parameterSlots": 3,
          "returnSlots": 1
        },
        "abi_encode_tuple_packed_t_contract$_GnosisSafeProxy_$2916__to_t_address_payable__nonPadded_inplace_fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_packed_t_uint256_t_contract$_IProxyCreationCallback_$3179__to_t_uint256_t_address__nonPadded_inplace_fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 3,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
          "entryPoint": 1725,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_contract$_GnosisSafeProxy_$2916__to_t_address_payable__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_contract$_GnosisSafeProxy_$2916_t_address__to_t_address_payable_t_address__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 3,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_contract$_GnosisSafeProxy_$2916_t_address_t_bytes_memory_ptr_t_uint256__to_t_address_payable_t_address_t_bytes_memory_ptr_t_uint256__fromStack_reversed": {
          "entryPoint": 1939,
          "id": null,
          "parameterSlots": 5,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_stringliteral_d7c71a0bdd2eb2834ad042153c811dd478e4ee2324e3003b9522e03e7b3735dc__to_t_string_memory_ptr__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        },
        "copy_memory_to_memory": {
          "entryPoint": 1633,
          "id": null,
          "parameterSlots": 3,
          "returnSlots": 0
        },
        "panic_error_0x41": {
          "entryPoint": 1242,
          "id": null,
          "parameterSlots": 0,
          "returnSlots": 0
        },
        "validator_revert_address": {
          "entryPoint": 1218,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 0
        }
      },
      "generatedSources": [
        {
          "ast": {
            "nodeType": "YulBlock",
            "src": "0:7346:86",
            "statements": [
              {
                "nodeType": "YulBlock",
                "src": "6:3:86",
                "statements": []
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "59:86:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "123:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "132:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "135:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "125:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "125:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "125:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "82:5:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "93:5:86"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "108:3:86",
                                            "type": "",
                                            "value": "160"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "113:1:86",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "104:3:86"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "104:11:86"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "117:1:86",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:19:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "89:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "89:31:86"
                              }
                            ],
                            "functionName": {
                              "name": "eq",
                              "nodeType": "YulIdentifier",
                              "src": "79:2:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "79:42:86"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "72:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "72:50:86"
                      },
                      "nodeType": "YulIf",
                      "src": "69:70:86"
                    }
                  ]
                },
                "name": "validator_revert_address",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "value",
                    "nodeType": "YulTypedName",
                    "src": "48:5:86",
                    "type": ""
                  }
                ],
                "src": "14:131:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "182:95:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "199:1:86",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "206:3:86",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "211:10:86",
                                "type": "",
                                "value": "0x4e487b71"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "202:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "202:20:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "192:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "192:31:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "192:31:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "239:1:86",
                            "type": "",
                            "value": "4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "242:4:86",
                            "type": "",
                            "value": "0x41"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "232:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "232:15:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "232:15:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "263:1:86",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "266:4:86",
                            "type": "",
                            "value": "0x24"
                          }
                        ],
                        "functionName": {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "256:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "256:15:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "256:15:86"
                    }
                  ]
                },
                "name": "panic_error_0x41",
                "nodeType": "YulFunctionDefinition",
                "src": "150:127:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "334:666:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "383:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "392:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "395:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "385:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "385:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "385:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "362:6:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "370:4:86",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "358:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "358:17:86"
                              },
                              {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "377:3:86"
                              }
                            ],
                            "functionName": {
                              "name": "slt",
                              "nodeType": "YulIdentifier",
                              "src": "354:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "354:27:86"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "347:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "347:35:86"
                      },
                      "nodeType": "YulIf",
                      "src": "344:55:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "408:30:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "431:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "418:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "418:20:86"
                      },
                      "variables": [
                        {
                          "name": "_1",
                          "nodeType": "YulTypedName",
                          "src": "412:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "447:28:86",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "457:18:86",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      },
                      "variables": [
                        {
                          "name": "_2",
                          "nodeType": "YulTypedName",
                          "src": "451:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "498:22:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "panic_error_0x41",
                                "nodeType": "YulIdentifier",
                                "src": "500:16:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "500:18:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "500:18:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "490:2:86"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "494:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "487:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "487:10:86"
                      },
                      "nodeType": "YulIf",
                      "src": "484:36:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "529:17:86",
                      "value": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "543:2:86",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "539:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "539:7:86"
                      },
                      "variables": [
                        {
                          "name": "_3",
                          "nodeType": "YulTypedName",
                          "src": "533:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "555:23:86",
                      "value": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "575:2:86",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "569:5:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "569:9:86"
                      },
                      "variables": [
                        {
                          "name": "memPtr",
                          "nodeType": "YulTypedName",
                          "src": "559:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "587:71:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "609:6:86"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "633:2:86"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "637:4:86",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "629:3:86"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "629:13:86"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "644:2:86"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "625:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "625:22:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "649:2:86",
                                    "type": "",
                                    "value": "63"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "621:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "621:31:86"
                              },
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "654:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "617:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "617:40:86"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "605:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "605:53:86"
                      },
                      "variables": [
                        {
                          "name": "newFreePtr",
                          "nodeType": "YulTypedName",
                          "src": "591:10:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "717:22:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "panic_error_0x41",
                                "nodeType": "YulIdentifier",
                                "src": "719:16:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "719:18:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "719:18:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "newFreePtr",
                                "nodeType": "YulIdentifier",
                                "src": "676:10:86"
                              },
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "688:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "gt",
                              "nodeType": "YulIdentifier",
                              "src": "673:2:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "673:18:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "newFreePtr",
                                "nodeType": "YulIdentifier",
                                "src": "696:10:86"
                              },
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "708:6:86"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nodeType": "YulIdentifier",
                              "src": "693:2:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "693:22:86"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nodeType": "YulIdentifier",
                          "src": "670:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "670:46:86"
                      },
                      "nodeType": "YulIf",
                      "src": "667:72:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "755:2:86",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "759:10:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "748:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "748:22:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "748:22:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "786:6:86"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "794:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "779:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "779:18:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "779:18:86"
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "845:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "854:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "857:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "847:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "847:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "847:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "820:6:86"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "828:2:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "816:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "816:15:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "833:4:86",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "812:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "812:26:86"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "840:3:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "809:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "809:35:86"
                      },
                      "nodeType": "YulIf",
                      "src": "806:55:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "887:6:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "895:4:86",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "883:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "883:17:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "906:6:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "914:4:86",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "902:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "902:17:86"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "921:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldatacopy",
                          "nodeType": "YulIdentifier",
                          "src": "870:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "870:54:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "870:54:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "948:6:86"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "956:2:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "944:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "944:15:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "961:4:86",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "940:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "940:26:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "968:1:86",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "933:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "933:37:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "933:37:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "979:15:86",
                      "value": {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "988:6:86"
                      },
                      "variableNames": [
                        {
                          "name": "array",
                          "nodeType": "YulIdentifier",
                          "src": "979:5:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_bytes",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "offset",
                    "nodeType": "YulTypedName",
                    "src": "308:6:86",
                    "type": ""
                  },
                  {
                    "name": "end",
                    "nodeType": "YulTypedName",
                    "src": "316:3:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "array",
                    "nodeType": "YulTypedName",
                    "src": "324:5:86",
                    "type": ""
                  }
                ],
                "src": "282:718:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "1118:410:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "1164:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1173:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1176:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "1166:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1166:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1166:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "1139:7:86"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1148:9:86"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "1135:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1135:23:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1160:2:86",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "1131:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1131:32:86"
                      },
                      "nodeType": "YulIf",
                      "src": "1128:52:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1189:36:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1215:9:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "1202:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1202:23:86"
                      },
                      "variables": [
                        {
                          "name": "value",
                          "nodeType": "YulTypedName",
                          "src": "1193:5:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1259:5:86"
                          }
                        ],
                        "functionName": {
                          "name": "validator_revert_address",
                          "nodeType": "YulIdentifier",
                          "src": "1234:24:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1234:31:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1234:31:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1274:15:86",
                      "value": {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1284:5:86"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "1274:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1298:46:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1329:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1340:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1325:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1325:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "1312:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1312:32:86"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1302:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "1387:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1396:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1399:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "1389:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1389:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1389:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1359:6:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1367:18:86",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "1356:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1356:30:86"
                      },
                      "nodeType": "YulIf",
                      "src": "1353:50:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1412:59:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1443:9:86"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1454:6:86"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1439:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1439:22:86"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1463:7:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "1422:16:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1422:49:86"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "1412:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1480:42:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1507:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1518:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1503:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1503:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "1490:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1490:32:86"
                      },
                      "variableNames": [
                        {
                          "name": "value2",
                          "nodeType": "YulIdentifier",
                          "src": "1480:6:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_addresst_bytes_memory_ptrt_uint256",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "1068:9:86",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "1079:7:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "1091:6:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "1099:6:86",
                    "type": ""
                  },
                  {
                    "name": "value2",
                    "nodeType": "YulTypedName",
                    "src": "1107:6:86",
                    "type": ""
                  }
                ],
                "src": "1005:523:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "1666:102:86",
                  "statements": [
                    {
                      "nodeType": "YulAssignment",
                      "src": "1676:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1688:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1699:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1684:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1684:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "1676:4:86"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1718:9:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "1733:6:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1749:3:86",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1754:1:86",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1745:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1745:11:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1758:1:86",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1741:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1741:19:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1729:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1729:32:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "1711:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1711:51:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1711:51:86"
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_contract$_GnosisSafeProxy_$2916__to_t_address_payable__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "1635:9:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "1646:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "1657:4:86",
                    "type": ""
                  }
                ],
                "src": "1533:235:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "1896:671:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "1942:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1951:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1954:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "1944:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1944:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1944:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "1917:7:86"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1926:9:86"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "1913:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1913:23:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1938:2:86",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "1909:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1909:32:86"
                      },
                      "nodeType": "YulIf",
                      "src": "1906:52:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1967:36:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1993:9:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "1980:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1980:23:86"
                      },
                      "variables": [
                        {
                          "name": "value",
                          "nodeType": "YulTypedName",
                          "src": "1971:5:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2037:5:86"
                          }
                        ],
                        "functionName": {
                          "name": "validator_revert_address",
                          "nodeType": "YulIdentifier",
                          "src": "2012:24:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2012:31:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "2012:31:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2052:15:86",
                      "value": {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2062:5:86"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "2052:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2076:46:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2107:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2118:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2103:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2103:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "2090:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2090:32:86"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "2080:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2131:28:86",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2141:18:86",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      },
                      "variables": [
                        {
                          "name": "_1",
                          "nodeType": "YulTypedName",
                          "src": "2135:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2186:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2195:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2198:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "2188:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2188:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "2188:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2174:6:86"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "2182:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "2171:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2171:14:86"
                      },
                      "nodeType": "YulIf",
                      "src": "2168:34:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2211:32:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2225:9:86"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2236:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2221:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2221:22:86"
                      },
                      "variables": [
                        {
                          "name": "_2",
                          "nodeType": "YulTypedName",
                          "src": "2215:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2291:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2300:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2303:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "2293:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2293:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "2293:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2270:2:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2274:4:86",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2266:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2266:13:86"
                              },
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "2281:7:86"
                              }
                            ],
                            "functionName": {
                              "name": "slt",
                              "nodeType": "YulIdentifier",
                              "src": "2262:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2262:27:86"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "2255:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2255:35:86"
                      },
                      "nodeType": "YulIf",
                      "src": "2252:55:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2316:30:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "2343:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "2330:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2330:16:86"
                      },
                      "variables": [
                        {
                          "name": "length",
                          "nodeType": "YulTypedName",
                          "src": "2320:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2373:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2382:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2385:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "2375:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2375:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "2375:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2361:6:86"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "2369:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "2358:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2358:14:86"
                      },
                      "nodeType": "YulIf",
                      "src": "2355:34:86"
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2439:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2448:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2451:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "2441:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2441:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "2441:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2412:2:86"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2416:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2408:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2408:15:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2425:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2404:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2404:24:86"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2430:7:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "2401:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2401:37:86"
                      },
                      "nodeType": "YulIf",
                      "src": "2398:57:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2464:21:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "2478:2:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2482:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2474:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2474:11:86"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "2464:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2494:16:86",
                      "value": {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2504:6:86"
                      },
                      "variableNames": [
                        {
                          "name": "value2",
                          "nodeType": "YulIdentifier",
                          "src": "2494:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2519:42:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2546:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2557:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2542:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2542:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "2529:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2529:32:86"
                      },
                      "variableNames": [
                        {
                          "name": "value3",
                          "nodeType": "YulIdentifier",
                          "src": "2519:6:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint256",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "1838:9:86",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "1849:7:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "1861:6:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "1869:6:86",
                    "type": ""
                  },
                  {
                    "name": "value2",
                    "nodeType": "YulTypedName",
                    "src": "1877:6:86",
                    "type": ""
                  },
                  {
                    "name": "value3",
                    "nodeType": "YulTypedName",
                    "src": "1885:6:86",
                    "type": ""
                  }
                ],
                "src": "1773:794:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "2625:205:86",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2635:10:86",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2644:1:86",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "i",
                          "nodeType": "YulTypedName",
                          "src": "2639:1:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2704:63:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "dst",
                                      "nodeType": "YulIdentifier",
                                      "src": "2729:3:86"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "2734:1:86"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "2725:3:86"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2725:11:86"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "2748:3:86"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2753:1:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2744:3:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2744:11:86"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "2738:5:86"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2738:18:86"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "2718:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2718:39:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "2718:39:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "2665:1:86"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2668:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "2662:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2662:13:86"
                      },
                      "nodeType": "YulForLoop",
                      "post": {
                        "nodeType": "YulBlock",
                        "src": "2676:19:86",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "2678:15:86",
                            "value": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "2687:1:86"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2690:2:86",
                                  "type": "",
                                  "value": "32"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "2683:3:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2683:10:86"
                            },
                            "variableNames": [
                              {
                                "name": "i",
                                "nodeType": "YulIdentifier",
                                "src": "2678:1:86"
                              }
                            ]
                          }
                        ]
                      },
                      "pre": {
                        "nodeType": "YulBlock",
                        "src": "2658:3:86",
                        "statements": []
                      },
                      "src": "2654:113:86"
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2793:31:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "dst",
                                      "nodeType": "YulIdentifier",
                                      "src": "2806:3:86"
                                    },
                                    {
                                      "name": "length",
                                      "nodeType": "YulIdentifier",
                                      "src": "2811:6:86"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "2802:3:86"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2802:16:86"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2820:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "2795:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2795:27:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "2795:27:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "2782:1:86"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2785:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "2779:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2779:13:86"
                      },
                      "nodeType": "YulIf",
                      "src": "2776:48:86"
                    }
                  ]
                },
                "name": "copy_memory_to_memory",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "src",
                    "nodeType": "YulTypedName",
                    "src": "2603:3:86",
                    "type": ""
                  },
                  {
                    "name": "dst",
                    "nodeType": "YulTypedName",
                    "src": "2608:3:86",
                    "type": ""
                  },
                  {
                    "name": "length",
                    "nodeType": "YulTypedName",
                    "src": "2613:6:86",
                    "type": ""
                  }
                ],
                "src": "2572:258:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "2884:208:86",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2894:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2914:5:86"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "2908:5:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2908:12:86"
                      },
                      "variables": [
                        {
                          "name": "length",
                          "nodeType": "YulTypedName",
                          "src": "2898:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "2936:3:86"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2941:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "2929:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2929:19:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "2929:19:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2983:5:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2990:4:86",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2979:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2979:16:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "3001:3:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3006:4:86",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2997:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2997:14:86"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "3013:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "copy_memory_to_memory",
                          "nodeType": "YulIdentifier",
                          "src": "2957:21:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2957:63:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "2957:63:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3029:57:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "3044:3:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "3057:6:86"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3065:2:86",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3053:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3053:15:86"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:2:86",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "3070:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3070:7:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "3049:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3049:29:86"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3040:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3040:39:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3081:4:86",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3036:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3036:50:86"
                      },
                      "variableNames": [
                        {
                          "name": "end",
                          "nodeType": "YulIdentifier",
                          "src": "3029:3:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_bytes",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "value",
                    "nodeType": "YulTypedName",
                    "src": "2861:5:86",
                    "type": ""
                  },
                  {
                    "name": "pos",
                    "nodeType": "YulTypedName",
                    "src": "2868:3:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "end",
                    "nodeType": "YulTypedName",
                    "src": "2876:3:86",
                    "type": ""
                  }
                ],
                "src": "2835:257:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "3216:98:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3233:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3244:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "3226:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3226:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "3226:21:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3256:52:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "3281:6:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3293:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3304:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3289:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3289:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "3264:16:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3264:44:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "3256:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "3185:9:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "3196:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "3207:4:86",
                    "type": ""
                  }
                ],
                "src": "3097:217:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "3415:359:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "3461:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3470:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3473:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "3463:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3463:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "3463:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "3436:7:86"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3445:9:86"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "3432:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3432:23:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3457:2:86",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "3428:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3428:32:86"
                      },
                      "nodeType": "YulIf",
                      "src": "3425:52:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3486:36:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3512:9:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "3499:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3499:23:86"
                      },
                      "variables": [
                        {
                          "name": "value",
                          "nodeType": "YulTypedName",
                          "src": "3490:5:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "3556:5:86"
                          }
                        ],
                        "functionName": {
                          "name": "validator_revert_address",
                          "nodeType": "YulIdentifier",
                          "src": "3531:24:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3531:31:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "3531:31:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3571:15:86",
                      "value": {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3581:5:86"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "3571:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3595:46:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3626:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3637:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3622:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3622:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "3609:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3609:32:86"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "3599:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "3684:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3693:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3696:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "3686:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3686:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "3686:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3656:6:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3664:18:86",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "3653:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3653:30:86"
                      },
                      "nodeType": "YulIf",
                      "src": "3650:50:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3709:59:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3740:9:86"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3751:6:86"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3736:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3736:22:86"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3760:7:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "3719:16:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3719:49:86"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "3709:6:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "3373:9:86",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "3384:7:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "3396:6:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "3404:6:86",
                    "type": ""
                  }
                ],
                "src": "3319:455:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "3940:535:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "3987:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3996:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3999:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "3989:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3989:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "3989:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "3961:7:86"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3970:9:86"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "3957:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3957:23:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3982:3:86",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "3953:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3953:33:86"
                      },
                      "nodeType": "YulIf",
                      "src": "3950:53:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "4012:36:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4038:9:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "4025:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4025:23:86"
                      },
                      "variables": [
                        {
                          "name": "value",
                          "nodeType": "YulTypedName",
                          "src": "4016:5:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "4082:5:86"
                          }
                        ],
                        "functionName": {
                          "name": "validator_revert_address",
                          "nodeType": "YulIdentifier",
                          "src": "4057:24:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4057:31:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4057:31:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "4097:15:86",
                      "value": {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4107:5:86"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "4097:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "4121:46:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4152:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4163:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4148:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4148:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "4135:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4135:32:86"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "4125:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "4210:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "4219:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "4222:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "4212:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4212:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "4212:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "4182:6:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4190:18:86",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "4179:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4179:30:86"
                      },
                      "nodeType": "YulIf",
                      "src": "4176:50:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "4235:59:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4266:9:86"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "4277:6:86"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4262:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4262:22:86"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4286:7:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "4245:16:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4245:49:86"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "4235:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "4303:42:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4330:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4341:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4326:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4326:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "4313:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4313:32:86"
                      },
                      "variableNames": [
                        {
                          "name": "value2",
                          "nodeType": "YulIdentifier",
                          "src": "4303:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "4354:47:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4386:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4397:2:86",
                                "type": "",
                                "value": "96"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4382:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4382:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "4369:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4369:32:86"
                      },
                      "variables": [
                        {
                          "name": "value_1",
                          "nodeType": "YulTypedName",
                          "src": "4358:7:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "value_1",
                            "nodeType": "YulIdentifier",
                            "src": "4435:7:86"
                          }
                        ],
                        "functionName": {
                          "name": "validator_revert_address",
                          "nodeType": "YulIdentifier",
                          "src": "4410:24:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4410:33:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4410:33:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "4452:17:86",
                      "value": {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "4462:7:86"
                      },
                      "variableNames": [
                        {
                          "name": "value3",
                          "nodeType": "YulIdentifier",
                          "src": "4452:6:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_addresst_bytes_memory_ptrt_uint256t_contract$_IProxyCreationCallback_$3179",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "3882:9:86",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "3893:7:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "3905:6:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "3913:6:86",
                    "type": ""
                  },
                  {
                    "name": "value2",
                    "nodeType": "YulTypedName",
                    "src": "3921:6:86",
                    "type": ""
                  },
                  {
                    "name": "value3",
                    "nodeType": "YulTypedName",
                    "src": "3929:6:86",
                    "type": ""
                  }
                ],
                "src": "3779:696:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "4641:175:86",
                  "statements": [
                    {
                      "nodeType": "YulAssignment",
                      "src": "4651:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4663:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4674:2:86",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4659:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4659:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "4651:4:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "4686:29:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4704:3:86",
                                "type": "",
                                "value": "160"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4709:1:86",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "4700:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4700:11:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4713:1:86",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4696:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4696:19:86"
                      },
                      "variables": [
                        {
                          "name": "_1",
                          "nodeType": "YulTypedName",
                          "src": "4690:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4731:9:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "4746:6:86"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "4754:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "4742:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4742:15:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4724:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4724:34:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4724:34:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4778:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4789:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4774:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4774:18:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value1",
                                "nodeType": "YulIdentifier",
                                "src": "4798:6:86"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "4806:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "4794:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4794:15:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4767:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4767:43:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4767:43:86"
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_contract$_GnosisSafeProxy_$2916_t_address__to_t_address_payable_t_address__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "4602:9:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "4613:6:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "4621:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "4632:4:86",
                    "type": ""
                  }
                ],
                "src": "4480:336:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "4972:110:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "4989:3:86"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5002:2:86",
                                    "type": "",
                                    "value": "96"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5006:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "4998:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4998:15:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5019:26:86",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "5015:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5015:31:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "4994:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4994:53:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4982:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4982:66:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4982:66:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "5057:19:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "5068:3:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5073:2:86",
                            "type": "",
                            "value": "20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5064:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5064:12:86"
                      },
                      "variableNames": [
                        {
                          "name": "end",
                          "nodeType": "YulIdentifier",
                          "src": "5057:3:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_packed_t_contract$_GnosisSafeProxy_$2916__to_t_address_payable__nonPadded_inplace_fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "pos",
                    "nodeType": "YulTypedName",
                    "src": "4948:3:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "4953:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "end",
                    "nodeType": "YulTypedName",
                    "src": "4964:3:86",
                    "type": ""
                  }
                ],
                "src": "4821:261:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "5208:98:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5225:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5236:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5218:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5218:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5218:21:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "5248:52:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "5273:6:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "5285:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5296:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "5281:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5281:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "5256:16:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5256:44:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "5248:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "5177:9:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "5188:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "5199:4:86",
                    "type": ""
                  }
                ],
                "src": "5087:219:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "5412:102:86",
                  "statements": [
                    {
                      "nodeType": "YulAssignment",
                      "src": "5422:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5434:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5445:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5430:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5430:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "5422:4:86"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5464:9:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "5479:6:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5495:3:86",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5500:1:86",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "5491:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5491:11:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5504:1:86",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "5487:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5487:19:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "5475:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5475:32:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5457:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5457:51:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5457:51:86"
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "5381:9:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "5392:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "5403:4:86",
                    "type": ""
                  }
                ],
                "src": "5311:203:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "5697:147:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "5714:3:86"
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "5719:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5707:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5707:19:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5707:19:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "5746:3:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5751:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "5742:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5742:12:86"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5764:2:86",
                                    "type": "",
                                    "value": "96"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5768:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "5760:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5760:15:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5781:26:86",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "5777:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5777:31:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "5756:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5756:53:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5735:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5735:75:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5735:75:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "5819:19:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "5830:3:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5835:2:86",
                            "type": "",
                            "value": "52"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5826:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5826:12:86"
                      },
                      "variableNames": [
                        {
                          "name": "end",
                          "nodeType": "YulIdentifier",
                          "src": "5819:3:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_packed_t_uint256_t_contract$_IProxyCreationCallback_$3179__to_t_uint256_t_address__nonPadded_inplace_fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "pos",
                    "nodeType": "YulTypedName",
                    "src": "5665:3:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "5670:6:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "5678:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "end",
                    "nodeType": "YulTypedName",
                    "src": "5689:3:86",
                    "type": ""
                  }
                ],
                "src": "5519:325:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "6084:285:86",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "6094:29:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6112:3:86",
                                "type": "",
                                "value": "160"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6117:1:86",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "6108:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6108:11:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6121:1:86",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6104:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6104:19:86"
                      },
                      "variables": [
                        {
                          "name": "_1",
                          "nodeType": "YulTypedName",
                          "src": "6098:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6139:9:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "6154:6:86"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "6162:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "6150:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6150:15:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "6132:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6132:34:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6132:34:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "6186:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6197:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6182:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6182:18:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value1",
                                "nodeType": "YulIdentifier",
                                "src": "6206:6:86"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "6214:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "6202:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6202:15:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "6175:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6175:43:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6175:43:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "6238:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6249:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6234:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6234:18:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6254:3:86",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "6227:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6227:31:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6227:31:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "6267:53:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "value2",
                            "nodeType": "YulIdentifier",
                            "src": "6292:6:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "6304:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6315:3:86",
                                "type": "",
                                "value": "128"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6300:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6300:19:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "6275:16:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6275:45:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "6267:4:86"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "6340:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6351:2:86",
                                "type": "",
                                "value": "96"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6336:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6336:18:86"
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulIdentifier",
                            "src": "6356:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "6329:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6329:34:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6329:34:86"
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_contract$_GnosisSafeProxy_$2916_t_address_t_bytes_memory_ptr_t_uint256__to_t_address_payable_t_address_t_bytes_memory_ptr_t_uint256__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "6029:9:86",
                    "type": ""
                  },
                  {
                    "name": "value3",
                    "nodeType": "YulTypedName",
                    "src": "6040:6:86",
                    "type": ""
                  },
                  {
                    "name": "value2",
                    "nodeType": "YulTypedName",
                    "src": "6048:6:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "6056:6:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "6064:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "6075:4:86",
                    "type": ""
                  }
                ],
                "src": "5849:520:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "6521:100:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "6538:3:86"
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "6543:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "6531:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6531:19:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6531:19:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "6570:3:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6575:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6566:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6566:12:86"
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "6580:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "6559:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6559:28:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6559:28:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "6596:19:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "6607:3:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6612:2:86",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6603:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6603:12:86"
                      },
                      "variableNames": [
                        {
                          "name": "end",
                          "nodeType": "YulIdentifier",
                          "src": "6596:3:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "pos",
                    "nodeType": "YulTypedName",
                    "src": "6489:3:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "6494:6:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "6502:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "end",
                    "nodeType": "YulTypedName",
                    "src": "6513:3:86",
                    "type": ""
                  }
                ],
                "src": "6374:247:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "6791:205:86",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "6801:27:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "6821:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "6815:5:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6815:13:86"
                      },
                      "variables": [
                        {
                          "name": "length",
                          "nodeType": "YulTypedName",
                          "src": "6805:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "6863:6:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6871:4:86",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6859:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6859:17:86"
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "6878:3:86"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "6883:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "copy_memory_to_memory",
                          "nodeType": "YulIdentifier",
                          "src": "6837:21:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6837:53:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6837:53:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "6899:29:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "6916:3:86"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "6921:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6912:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6912:16:86"
                      },
                      "variables": [
                        {
                          "name": "end_1",
                          "nodeType": "YulTypedName",
                          "src": "6903:5:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "end_1",
                            "nodeType": "YulIdentifier",
                            "src": "6944:5:86"
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "6951:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "6937:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6937:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6937:21:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "6967:23:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "end_1",
                            "nodeType": "YulIdentifier",
                            "src": "6978:5:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6985:4:86",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6974:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6974:16:86"
                      },
                      "variableNames": [
                        {
                          "name": "end",
                          "nodeType": "YulIdentifier",
                          "src": "6967:3:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256__to_t_bytes_memory_ptr_t_uint256__nonPadded_inplace_fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "pos",
                    "nodeType": "YulTypedName",
                    "src": "6759:3:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "6764:6:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "6772:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "end",
                    "nodeType": "YulTypedName",
                    "src": "6783:3:86",
                    "type": ""
                  }
                ],
                "src": "6626:370:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "7175:169:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7192:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7203:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "7185:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7185:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "7185:21:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "7226:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7237:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "7222:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7222:18:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7242:2:86",
                            "type": "",
                            "value": "19"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "7215:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7215:30:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "7215:30:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "7265:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7276:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "7261:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7261:18:86"
                          },
                          {
                            "hexValue": "437265617465322063616c6c206661696c6564",
                            "kind": "string",
                            "nodeType": "YulLiteral",
                            "src": "7281:21:86",
                            "type": "",
                            "value": "Create2 call failed"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "7254:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7254:49:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "7254:49:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "7312:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7324:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7335:2:86",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7320:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7320:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "7312:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_stringliteral_d7c71a0bdd2eb2834ad042153c811dd478e4ee2324e3003b9522e03e7b3735dc__to_t_string_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "7152:9:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "7166:4:86",
                    "type": ""
                  }
                ],
                "src": "7001:343:86"
              }
            ]
          },
          "contents": "{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0xffffffffffffffff\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_contract$_GnosisSafeProxy_$2916__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value1 := add(_2, 32)\n        value2 := length\n        value3 := calldataload(add(headStart, 64))\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptrt_uint256t_contract$_IProxyCreationCallback_$3179(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        value2 := calldataload(add(headStart, 64))\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_address(value_1)\n        value3 := value_1\n    }\n    function abi_encode_tuple_t_contract$_GnosisSafeProxy_$2916_t_address__to_t_address_payable_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_packed_t_contract$_GnosisSafeProxy_$2916__to_t_address_payable__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, and(shl(96, value0), not(0xffffffffffffffffffffffff)))\n        end := add(pos, 20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_uint256_t_contract$_IProxyCreationCallback_$3179__to_t_uint256_t_address__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        end := add(pos, 52)\n    }\n    function abi_encode_tuple_t_contract$_GnosisSafeProxy_$2916_t_address_t_bytes_memory_ptr_t_uint256__to_t_address_payable_t_address_t_bytes_memory_ptr_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 128)\n        tail := abi_encode_bytes(value2, add(headStart, 128))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256__to_t_bytes_memory_ptr_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        mstore(end_1, value1)\n        end := add(end_1, 0x20)\n    }\n    function abi_encode_tuple_t_stringliteral_d7c71a0bdd2eb2834ad042153c811dd478e4ee2324e3003b9522e03e7b3735dc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Create2 call failed\")\n        tail := add(headStart, 96)\n    }\n}",
          "id": 86,
          "language": "Yul",
          "name": "#utility.yul"
        }
      ],
      "immutableReferences": {},
      "linkReferences": {},
      "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1688F0B9 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x2500510E EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x53E5D935 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x61B69ABD EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0xADDACC0F EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xD18AF54D EQ PUSH2 0xDA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH2 0x75 CALLDATASIZE PUSH1 0x4 PUSH2 0x57D JUMP JUMPDEST PUSH2 0xED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7A PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x169 JUMP JUMPDEST PUSH2 0xB2 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8E SWAP2 SWAP1 PUSH2 0x6BD JUMP JUMPDEST PUSH2 0x7A PUSH2 0xCD CALLDATASIZE PUSH1 0x4 PUSH2 0x6D7 JUMP JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0xB2 PUSH2 0x2D2 JUMP JUMPDEST PUSH2 0x7A PUSH2 0xE8 CALLDATASIZE PUSH1 0x4 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFA DUP5 DUP5 DUP5 PUSH2 0x3BA JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 MLOAD PUSH1 0x20 DUP8 ADD PUSH1 0x0 DUP7 GAS CALL EQ ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x4F51FAF6C4561FF95F067657E43439F0F856D97C04D9EC9070A6199AD418E235 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AD DUP6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP8 SWAP3 POP PUSH2 0x3BA SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x34 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH2 0x1F5 SWAP2 PUSH1 0x4 ADD PUSH2 0x6BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x210 SWAP1 PUSH2 0x4A9 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH2 0x237 SWAP1 PUSH2 0x4A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x263 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH1 0x0 DUP7 GAS CALL EQ ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x4F51FAF6C4561FF95F067657E43439F0F856D97C04D9EC9070A6199AD418E235 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x210 SWAP1 PUSH2 0x4B6 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x315 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x60 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x34 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH2 0x33B DUP7 DUP7 DUP4 PUSH2 0xED JUMP JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3CA56A3 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x1E52B518 SWAP1 PUSH2 0x37E SWAP1 DUP6 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x793 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3E0 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x40A SWAP1 PUSH2 0x4A9 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x437 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH1 0x20 ADD PUSH2 0x7D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP DUP2 DUP2 MLOAD DUP3 PUSH1 0x20 ADD PUSH1 0x0 CREATE2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x4A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x10DC99585D194C8818D85B1B0819985A5B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F5 JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x173 DUP1 PUSH2 0x7F3 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x7C DUP1 PUSH2 0x966 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x51C JUMPI PUSH2 0x51C PUSH2 0x4DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x544 JUMPI PUSH2 0x544 PUSH2 0x4DA JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x55D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x592 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x59D DUP2 PUSH2 0x4C2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5C5 DUP7 DUP3 DUP8 ADD PUSH2 0x4F0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5F7 DUP2 PUSH2 0x4C2 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 SWAP9 PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x67C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x664 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x68B JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x6A9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x661 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x6D0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x691 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x6F5 DUP2 PUSH2 0x4C2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x71D DUP6 DUP3 DUP7 ADD PUSH2 0x4F0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x748 DUP2 PUSH2 0x4C2 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x770 DUP8 DUP3 DUP9 ADD PUSH2 0x4F0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x788 DUP2 PUSH2 0x4C2 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x7BF SWAP1 DUP4 ADD DUP6 PUSH2 0x691 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x60 DUP4 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x7E2 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x661 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x20 ADD SWAP2 SWAP1 POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x173 CODESIZE SUB DUP1 PUSH2 0x173 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x94 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C69642073696E676C65746F6E20616464726573732070726F766964 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x1959 PUSH1 0xF2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xE9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x7C DUP1 PUSH2 0xF7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 CALLDATALOAD PUSH4 0x530CA437 PUSH1 0xE1 SHL EQ ISZERO PUSH1 0x28 JUMPI DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 RETURN JUMPDEST CALLDATASIZE DUP3 DUP4 CALLDATACOPY DUP2 DUP3 CALLDATASIZE DUP5 DUP5 GAS DELEGATECALL SWAP1 POP RETURNDATASIZE DUP3 DUP4 RETURNDATACOPY DUP1 PUSH1 0x41 JUMPI RETURNDATASIZE DUP3 REVERT JUMPDEST POP RETURNDATASIZE DUP2 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D 0xE5 ADD 0xB8 0xA7 PUSH12 0xEC88692DF4FE3CF0A2A23B5 0xB4 DUP9 CREATE2 0xC9 0xCE ADDMOD 0xC2 0x4A SHR SLOAD RETURNDATASIZE PUSH15 0x357864736F6C634300080A00336080 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 CALLDATALOAD PUSH4 0x530CA437 PUSH1 0xE1 SHL EQ ISZERO PUSH1 0x28 JUMPI DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 RETURN JUMPDEST CALLDATASIZE DUP3 DUP4 CALLDATACOPY DUP2 DUP3 CALLDATASIZE DUP5 DUP5 GAS DELEGATECALL SWAP1 POP RETURNDATASIZE DUP3 DUP4 RETURNDATACOPY DUP1 PUSH1 0x41 JUMPI RETURNDATASIZE DUP3 REVERT JUMPDEST POP RETURNDATASIZE DUP2 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D 0xE5 ADD 0xB8 0xA7 PUSH12 0xEC88692DF4FE3CF0A2A23B5 0xB4 DUP9 CREATE2 0xC9 0xCE ADDMOD 0xC2 0x4A SHR SLOAD RETURNDATASIZE PUSH15 0x357864736F6C634300080A0033A264 PUSH10 0x70667358221220F286DD 0xCB BLOCKHASH CALLDATACOPY 0x2B PUSH21 0x57AD58DDD3E19915C1BDF96AE3E6F5F455260328A6 MULMOD 0x4A CALLCODE PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ",
      "sourceMap": "324:5502:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3268:576;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1729:32:86;;;1711:51;;1699:2;1684:18;3268:576:25;;;;;;;;5510:314;;;;;;:::i;:::-;;:::i;1548:122::-;;;:::i;:::-;;;;;;;:::i;675:462::-;;;;;;:::i;:::-;;:::i;1277:120::-;;;:::i;4382:511::-;;;;;;:::i;:::-;;:::i;3268:576::-;3409:21;3450:56;3471:10;3483:11;3496:9;3450:20;:56::i;:::-;3520:18;;3442:64;;-1:-1:-1;3520:22:25;3516:275;;3722:1;3718;3715;3701:11;3695:18;3688:4;3675:11;3671:22;3668:1;3661:5;3654;3649:71;3646:78;3643:134;;;3757:1;3754;3747:12;3643:134;3805:32;;;-1:-1:-1;;;;;4742:15:86;;;4724:34;;4794:15;;4789:2;4774:18;;4767:43;3805:32:25;;4659:18:86;3805:32:25;;;;;;;3268:576;;;;;:::o;5510:314::-;5671:21;5712:56;5733:10;5745:11;;5712:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5758:9:25;;-1:-1:-1;5712:20:25;;-1:-1:-1;;5712:56:25:i;:::-;5792:23;;-1:-1:-1;;5002:2:86;4998:15;;;4994:53;5792:23:25;;;4982:66:86;5704:64:25;;-1:-1:-1;5064:12:86;;5792:23:25;;;-1:-1:-1;;5792:23:25;;;;;;;;;;-1:-1:-1;;;5778:39:25;;;;;;;:::i;:::-;;;;;;;;1548:122;1598:12;1629:34;;;;;;;;:::i;:::-;-1:-1:-1;;1629:34:25;;;;;;;;;;;;;;;1548:122;-1:-1:-1;1548:122:25:o;675:462::-;750:21;811:9;791:30;;;;;:::i;:::-;-1:-1:-1;;;;;1729:32:86;;;1711:51;;1699:2;1684:18;791:30:25;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;835:11:25;;783:38;;-1:-1:-1;835:15:25;831:254;;1016:1;1012;1009;1002:4;996:11;989:4;983;979:15;976:1;969:5;962;957:57;954:64;951:120;;;1051:1;1048;1041:12;951:120;1099:31;;;-1:-1:-1;;;;;4742:15:86;;;4724:34;;4794:15;;4789:2;4774:18;;4767:43;1099:31:25;;4659:18:86;1099:31:25;;;;;;;675:462;;;;:::o;1277:120::-;1326:12;1357:33;;;;;;;;:::i;4382:511::-;4567:21;4600:29;4667:9;4678:8;4650:37;;;;;;;;5707:19:86;;;5764:2;5760:15;-1:-1:-1;;5756:53:86;5751:2;5742:12;;5735:75;5835:2;5826:12;;5519:325;4650:37:25;;;;;;;;;;;;;4640:48;;;;;;4632:57;;4600:89;;4707:68;4728:10;4740:11;4753:21;4707:20;:68::i;:::-;4699:76;-1:-1:-1;;;;;;4789:31:25;;;4785:101;;4822:64;;-1:-1:-1;;;4822:64:25;;-1:-1:-1;;;;;4822:21:25;;;;;:64;;4844:5;;4851:10;;4863:11;;4876:9;;4822:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4785:101;4590:303;4382:511;;;;;;:::o;2118:769::-;2261:21;2436:12;2488:11;2478:22;;;;;;2502:9;2461:51;;;;;;;;6531:19:86;;;6575:2;6566:12;;6559:28;6612:2;6603:12;;6374:247;2461:51:25;;;;;;;;;;;;;2451:62;;;;;;2436:77;;2523:27;2570:34;;;;;;;;:::i;:::-;-1:-1:-1;;2570:34:25;;;;;;;;;;;;;;;;2553:82;;2570:34;-1:-1:-1;;;;;2606:28:25;;;2570:34;2553:82;;:::i;:::-;;;;;;;;;;;;;2523:112;;2796:4;2779:14;2773:21;2756:14;2750:4;2746:25;2741:3;2733:68;2724:77;-1:-1:-1;;;;;;2828:28:25;;2820:60;;;;-1:-1:-1;;;2820:60:25;;7203:2:86;2820:60:25;;;7185:21:86;7242:2;7222:18;;;7215:30;-1:-1:-1;;;7261:18:86;;;7254:49;7320:18;;2820:60:25;7001:343:86;2820:60:25;2284:603;;2118:769;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:131:86:-;-1:-1:-1;;;;;89:31:86;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:127::-;211:10;206:3;202:20;199:1;192:31;242:4;239:1;232:15;266:4;263:1;256:15;282:718;324:5;377:3;370:4;362:6;358:17;354:27;344:55;;395:1;392;385:12;344:55;431:6;418:20;457:18;494:2;490;487:10;484:36;;;500:18;;:::i;:::-;575:2;569:9;543:2;629:13;;-1:-1:-1;;625:22:86;;;649:2;621:31;617:40;605:53;;;673:18;;;693:22;;;670:46;667:72;;;719:18;;:::i;:::-;759:10;755:2;748:22;794:2;786:6;779:18;840:3;833:4;828:2;820:6;816:15;812:26;809:35;806:55;;;857:1;854;847:12;806:55;921:2;914:4;906:6;902:17;895:4;887:6;883:17;870:54;968:1;961:4;956:2;948:6;944:15;940:26;933:37;988:6;979:15;;;;;;282:718;;;;:::o;1005:523::-;1091:6;1099;1107;1160:2;1148:9;1139:7;1135:23;1131:32;1128:52;;;1176:1;1173;1166:12;1128:52;1215:9;1202:23;1234:31;1259:5;1234:31;:::i;:::-;1284:5;-1:-1:-1;1340:2:86;1325:18;;1312:32;1367:18;1356:30;;1353:50;;;1399:1;1396;1389:12;1353:50;1422:49;1463:7;1454:6;1443:9;1439:22;1422:49;:::i;:::-;1412:59;;;1518:2;1507:9;1503:18;1490:32;1480:42;;1005:523;;;;;:::o;1773:794::-;1861:6;1869;1877;1885;1938:2;1926:9;1917:7;1913:23;1909:32;1906:52;;;1954:1;1951;1944:12;1906:52;1993:9;1980:23;2012:31;2037:5;2012:31;:::i;:::-;2062:5;-1:-1:-1;2118:2:86;2103:18;;2090:32;2141:18;2171:14;;;2168:34;;;2198:1;2195;2188:12;2168:34;2236:6;2225:9;2221:22;2211:32;;2281:7;2274:4;2270:2;2266:13;2262:27;2252:55;;2303:1;2300;2293:12;2252:55;2343:2;2330:16;2369:2;2361:6;2358:14;2355:34;;;2385:1;2382;2375:12;2355:34;2430:7;2425:2;2416:6;2412:2;2408:15;2404:24;2401:37;2398:57;;;2451:1;2448;2441:12;2398:57;1773:794;;2482:2;2474:11;;;;;-1:-1:-1;2504:6:86;;2557:2;2542:18;2529:32;;-1:-1:-1;1773:794:86;-1:-1:-1;;;1773:794:86:o;2572:258::-;2644:1;2654:113;2668:6;2665:1;2662:13;2654:113;;;2744:11;;;2738:18;2725:11;;;2718:39;2690:2;2683:10;2654:113;;;2785:6;2782:1;2779:13;2776:48;;;2820:1;2811:6;2806:3;2802:16;2795:27;2776:48;;2572:258;;;:::o;2835:257::-;2876:3;2914:5;2908:12;2941:6;2936:3;2929:19;2957:63;3013:6;3006:4;3001:3;2997:14;2990:4;2983:5;2979:16;2957:63;:::i;:::-;3074:2;3053:15;-1:-1:-1;;3049:29:86;3040:39;;;;3081:4;3036:50;;2835:257;-1:-1:-1;;2835:257:86:o;3097:217::-;3244:2;3233:9;3226:21;3207:4;3264:44;3304:2;3293:9;3289:18;3281:6;3264:44;:::i;:::-;3256:52;3097:217;-1:-1:-1;;;3097:217:86:o;3319:455::-;3396:6;3404;3457:2;3445:9;3436:7;3432:23;3428:32;3425:52;;;3473:1;3470;3463:12;3425:52;3512:9;3499:23;3531:31;3556:5;3531:31;:::i;:::-;3581:5;-1:-1:-1;3637:2:86;3622:18;;3609:32;3664:18;3653:30;;3650:50;;;3696:1;3693;3686:12;3650:50;3719:49;3760:7;3751:6;3740:9;3736:22;3719:49;:::i;:::-;3709:59;;;3319:455;;;;;:::o;3779:696::-;3905:6;3913;3921;3929;3982:3;3970:9;3961:7;3957:23;3953:33;3950:53;;;3999:1;3996;3989:12;3950:53;4038:9;4025:23;4057:31;4082:5;4057:31;:::i;:::-;4107:5;-1:-1:-1;4163:2:86;4148:18;;4135:32;4190:18;4179:30;;4176:50;;;4222:1;4219;4212:12;4176:50;4245:49;4286:7;4277:6;4266:9;4262:22;4245:49;:::i;:::-;4235:59;;;4341:2;4330:9;4326:18;4313:32;4303:42;;4397:2;4386:9;4382:18;4369:32;4410:33;4435:7;4410:33;:::i;:::-;3779:696;;;;-1:-1:-1;3779:696:86;;-1:-1:-1;;3779:696:86:o;5849:520::-;-1:-1:-1;;;;;6150:15:86;;;6132:34;;6202:15;;6197:2;6182:18;;6175:43;6254:3;6249:2;6234:18;;6227:31;;;6075:4;;6275:45;;6300:19;;6292:6;6275:45;:::i;:::-;6267:53;;6356:6;6351:2;6340:9;6336:18;6329:34;5849:520;;;;;;;:::o;6626:370::-;6783:3;6821:6;6815:13;6837:53;6883:6;6878:3;6871:4;6863:6;6859:17;6837:53;:::i;:::-;6912:16;;;;6937:21;;;-1:-1:-1;6985:4:86;6974:16;;6626:370;-1:-1:-1;6626:370:86:o"
    },
    "gasEstimates": {
      "creation": {
        "codeDepositCost": "516600",
        "executionCost": "549",
        "totalCost": "517149"
      },
      "external": {
        "calculateCreateProxyWithNonceAddress(address,bytes,uint256)": "infinite",
        "createProxy(address,bytes)": "infinite",
        "createProxyWithCallback(address,bytes,uint256,address)": "infinite",
        "createProxyWithNonce(address,bytes,uint256)": "infinite",
        "proxyCreationCode()": "infinite",
        "proxyRuntimeCode()": "infinite"
      },
      "internal": {
        "deployProxyWithNonce(address,bytes memory,uint256)": "infinite"
      }
    },
    "methodIdentifiers": {
      "calculateCreateProxyWithNonceAddress(address,bytes,uint256)": "2500510e",
      "createProxy(address,bytes)": "61b69abd",
      "createProxyWithCallback(address,bytes,uint256,address)": "d18af54d",
      "createProxyWithNonce(address,bytes,uint256)": "1688f0b9",
      "proxyCreationCode()": "53e5d935",
      "proxyRuntimeCode()": "addacc0f"
    }
  },
  "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract GnosisSafeProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"singleton\",\"type\":\"address\"}],\"name\":\"ProxyCreation\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"}],\"name\":\"calculateCreateProxyWithNonceAddress\",\"outputs\":[{\"internalType\":\"contract GnosisSafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"createProxy\",\"outputs\":[{\"internalType\":\"contract GnosisSafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"},{\"internalType\":\"contract IProxyCreationCallback\",\"name\":\"callback\",\"type\":\"address\"}],\"name\":\"createProxyWithCallback\",\"outputs\":[{\"internalType\":\"contract GnosisSafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"}],\"name\":\"createProxyWithNonce\",\"outputs\":[{\"internalType\":\"contract GnosisSafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxyCreationCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxyRuntimeCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan@gnosis.pm>\",\"kind\":\"dev\",\"methods\":{\"calculateCreateProxyWithNonceAddress(address,bytes,uint256)\":{\"details\":\"Allows to get the address for a new proxy contact created via `createProxyWithNonce`      This method is only meant for address calculation purpose when you use an initializer that would revert,      therefore the response is returned with a revert. When calling this method set `from` to the address of the proxy factory.\",\"params\":{\"_singleton\":\"Address of singleton contract.\",\"initializer\":\"Payload for message call sent to new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"createProxy(address,bytes)\":{\"details\":\"Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\",\"params\":{\"data\":\"Payload for message call sent to new proxy contract.\",\"singleton\":\"Address of singleton contract.\"}},\"createProxyWithCallback(address,bytes,uint256,address)\":{\"details\":\"Allows to create new proxy contact, execute a message call to the new proxy and call a specified callback within one transaction\",\"params\":{\"_singleton\":\"Address of singleton contract.\",\"callback\":\"Callback that will be invoced after the new proxy contract has been successfully deployed and initialized.\",\"initializer\":\"Payload for message call sent to new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"createProxyWithNonce(address,bytes,uint256)\":{\"details\":\"Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\",\"params\":{\"_singleton\":\"Address of singleton contract.\",\"initializer\":\"Payload for message call sent to new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"proxyCreationCode()\":{\"details\":\"Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address.\"},\"proxyRuntimeCode()\":{\"details\":\"Allows to retrieve the runtime code of a deployed Proxy. This can be used to check that the expected Proxy was deployed.\"}},\"title\":\"Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@gnosis.pm/safe-contracts/contracts/proxies/GnosisSafeProxyFactory.sol\":\"GnosisSafeProxyFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@gnosis.pm/safe-contracts/contracts/proxies/GnosisSafeProxy.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.7.0 <0.9.0;\\n\\n/// @title IProxy - Helper interface to access masterCopy of the Proxy on-chain\\n/// @author Richard Meissner - <richard@gnosis.io>\\ninterface IProxy {\\n    function masterCopy() external view returns (address);\\n}\\n\\n/// @title GnosisSafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\\n/// @author Stefan George - <stefan@gnosis.io>\\n/// @author Richard Meissner - <richard@gnosis.io>\\ncontract GnosisSafeProxy {\\n    // singleton always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\\n    // To reduce deployment costs this variable is internal and needs to be retrieved via `getStorageAt`\\n    address internal singleton;\\n\\n    /// @dev Constructor function sets address of singleton contract.\\n    /// @param _singleton Singleton address.\\n    constructor(address _singleton) {\\n        require(_singleton != address(0), \\\"Invalid singleton address provided\\\");\\n        singleton = _singleton;\\n    }\\n\\n    /// @dev Fallback function forwards all transactions and returns all received return data.\\n    fallback() external payable {\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            let _singleton := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\\n            // 0xa619486e == keccak(\\\"masterCopy()\\\"). The value is right padded to 32-bytes with 0s\\n            if eq(calldataload(0), 0xa619486e00000000000000000000000000000000000000000000000000000000) {\\n                mstore(0, _singleton)\\n                return(0, 0x20)\\n            }\\n            calldatacopy(0, 0, calldatasize())\\n            let success := delegatecall(gas(), _singleton, 0, calldatasize(), 0, 0)\\n            returndatacopy(0, 0, returndatasize())\\n            if eq(success, 0) {\\n                revert(0, returndatasize())\\n            }\\n            return(0, returndatasize())\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3bfdd453d9f896f7029d15bcafd11886957b320ad1764309d9f74fa059715249\",\"license\":\"LGPL-3.0-only\"},\"@gnosis.pm/safe-contracts/contracts/proxies/GnosisSafeProxyFactory.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.7.0 <0.9.0;\\n\\nimport \\\"./GnosisSafeProxy.sol\\\";\\nimport \\\"./IProxyCreationCallback.sol\\\";\\n\\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\\n/// @author Stefan George - <stefan@gnosis.pm>\\ncontract GnosisSafeProxyFactory {\\n    event ProxyCreation(GnosisSafeProxy proxy, address singleton);\\n\\n    /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\\n    /// @param singleton Address of singleton contract.\\n    /// @param data Payload for message call sent to new proxy contract.\\n    function createProxy(address singleton, bytes memory data) public returns (GnosisSafeProxy proxy) {\\n        proxy = new GnosisSafeProxy(singleton);\\n        if (data.length > 0)\\n            // solhint-disable-next-line no-inline-assembly\\n            assembly {\\n                if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) {\\n                    revert(0, 0)\\n                }\\n            }\\n        emit ProxyCreation(proxy, singleton);\\n    }\\n\\n    /// @dev Allows to retrieve the runtime code of a deployed Proxy. This can be used to check that the expected Proxy was deployed.\\n    function proxyRuntimeCode() public pure returns (bytes memory) {\\n        return type(GnosisSafeProxy).runtimeCode;\\n    }\\n\\n    /// @dev Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address.\\n    function proxyCreationCode() public pure returns (bytes memory) {\\n        return type(GnosisSafeProxy).creationCode;\\n    }\\n\\n    /// @dev Allows to create new proxy contact using CREATE2 but it doesn't run the initializer.\\n    ///      This method is only meant as an utility to be called from other methods\\n    /// @param _singleton Address of singleton contract.\\n    /// @param initializer Payload for message call sent to new proxy contract.\\n    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\\n    function deployProxyWithNonce(\\n        address _singleton,\\n        bytes memory initializer,\\n        uint256 saltNonce\\n    ) internal returns (GnosisSafeProxy proxy) {\\n        // If the initializer changes the proxy address should change too. Hashing the initializer data is cheaper than just concatinating it\\n        bytes32 salt = keccak256(abi.encodePacked(keccak256(initializer), saltNonce));\\n        bytes memory deploymentData = abi.encodePacked(type(GnosisSafeProxy).creationCode, uint256(uint160(_singleton)));\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            proxy := create2(0x0, add(0x20, deploymentData), mload(deploymentData), salt)\\n        }\\n        require(address(proxy) != address(0), \\\"Create2 call failed\\\");\\n    }\\n\\n    /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\\n    /// @param _singleton Address of singleton contract.\\n    /// @param initializer Payload for message call sent to new proxy contract.\\n    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\\n    function createProxyWithNonce(\\n        address _singleton,\\n        bytes memory initializer,\\n        uint256 saltNonce\\n    ) public returns (GnosisSafeProxy proxy) {\\n        proxy = deployProxyWithNonce(_singleton, initializer, saltNonce);\\n        if (initializer.length > 0)\\n            // solhint-disable-next-line no-inline-assembly\\n            assembly {\\n                if eq(call(gas(), proxy, 0, add(initializer, 0x20), mload(initializer), 0, 0), 0) {\\n                    revert(0, 0)\\n                }\\n            }\\n        emit ProxyCreation(proxy, _singleton);\\n    }\\n\\n    /// @dev Allows to create new proxy contact, execute a message call to the new proxy and call a specified callback within one transaction\\n    /// @param _singleton Address of singleton contract.\\n    /// @param initializer Payload for message call sent to new proxy contract.\\n    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\\n    /// @param callback Callback that will be invoced after the new proxy contract has been successfully deployed and initialized.\\n    function createProxyWithCallback(\\n        address _singleton,\\n        bytes memory initializer,\\n        uint256 saltNonce,\\n        IProxyCreationCallback callback\\n    ) public returns (GnosisSafeProxy proxy) {\\n        uint256 saltNonceWithCallback = uint256(keccak256(abi.encodePacked(saltNonce, callback)));\\n        proxy = createProxyWithNonce(_singleton, initializer, saltNonceWithCallback);\\n        if (address(callback) != address(0)) callback.proxyCreated(proxy, _singleton, initializer, saltNonce);\\n    }\\n\\n    /// @dev Allows to get the address for a new proxy contact created via `createProxyWithNonce`\\n    ///      This method is only meant for address calculation purpose when you use an initializer that would revert,\\n    ///      therefore the response is returned with a revert. When calling this method set `from` to the address of the proxy factory.\\n    /// @param _singleton Address of singleton contract.\\n    /// @param initializer Payload for message call sent to new proxy contract.\\n    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\\n    function calculateCreateProxyWithNonceAddress(\\n        address _singleton,\\n        bytes calldata initializer,\\n        uint256 saltNonce\\n    ) external returns (GnosisSafeProxy proxy) {\\n        proxy = deployProxyWithNonce(_singleton, initializer, saltNonce);\\n        revert(string(abi.encodePacked(proxy)));\\n    }\\n}\\n\",\"keccak256\":\"0x187c6f84c71b432da6721c1b81cebfbb9c37c0cc15ebd8de5a14ff7ec6db2d9e\",\"license\":\"LGPL-3.0-only\"},\"@gnosis.pm/safe-contracts/contracts/proxies/IProxyCreationCallback.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.7.0 <0.9.0;\\nimport \\\"./GnosisSafeProxy.sol\\\";\\n\\ninterface IProxyCreationCallback {\\n    function proxyCreated(\\n        GnosisSafeProxy proxy,\\n        address _singleton,\\n        bytes calldata initializer,\\n        uint256 saltNonce\\n    ) external;\\n}\\n\",\"keccak256\":\"0x51a9ce914a6a943651c803541e44218a7ed0a2f98a94d55df66b173b5a11e365\",\"license\":\"LGPL-3.0-only\"}},\"version\":1}",
  "storageLayout": {
    "storage": [],
    "types": null
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}