{
	"id": "4904bce280be9ee373c2755e7359b1c3",
	"_format": "hh-sol-build-info-1",
	"solcVersion": "0.8.13",
	"solcLongVersion": "0.8.13+commit.abaa5c0e",
	"input": {
		"language": "Solidity",
		"sources": {
			"contracts/Inheritance.sol": {
				"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\n/* \n\n- Function that is going to be overridden by a child contract must be declared as virtual\n- Function that is going to override a parent function must use the keyword override\n- Order of inheritance is important\n- You have to list the parent contracts in the order from “most base-like” to “most derived”\n\nGraph of inheritance\n    A\n   / \\\n  B   C\n / \\ /\nF  D,E\n\n*/\n\ncontract A {\n    function foo() public pure virtual returns (string memory) {\n        return \"A\";\n    }\n}\n\n// Contracts inherit other contracts by using the keyword 'is'.\ncontract B is A {\n    // Override A.foo()\n    function foo() public pure virtual override returns (string memory) {\n        return \"B\";\n    }\n}\n\ncontract C is A {\n    // Override A.foo()\n    function foo() public pure virtual override returns (string memory) {\n        return \"C\";\n    }\n}\n\n// Contracts can inherit from multiple parent contracts.\n// When a function is called that is defined multiple times in\n// different contracts, parent contracts are searched from\n// right to left, and in depth-first manner.\n\ncontract D is B, C {\n    // D.foo() returns \"C\"\n    function foo() public pure override(B, C) returns (string memory) {\n        return super.foo();\n    }\n}\n\ncontract E is C, B {\n    // E.foo() returns \"B\"\n    function foo() public pure override(C, B) returns (string memory) {\n        return super.foo();\n    }\n}\n\n// Inheritance must be ordered from “most base-like” to “most derived”.\n// Swapping the order of A and B will throw a compilation error.\ncontract F is A, B {\n    function foo() public pure override(A, B) returns (string memory) {\n        return super.foo();\n    }\n}"
			}
		},
		"settings": {
			"optimizer": {
				"enabled": true,
				"runs": 200
			},
			"outputSelection": {
				"*": {
					"": [
						"ast"
					],
					"*": [
						"abi",
						"metadata",
						"devdoc",
						"userdoc",
						"storageLayout",
						"evm.legacyAssembly",
						"evm.bytecode",
						"evm.deployedBytecode",
						"evm.methodIdentifiers",
						"evm.gasEstimates",
						"evm.assembly"
					]
				}
			}
		}
	},
	"output": {
		"contracts": {
			"contracts/Inheritance.sol": {
				"A": {
					"abi": [
						{
							"inputs": [],
							"name": "foo",
							"outputs": [
								{
									"internalType": "string",
									"name": "",
									"type": "string"
								}
							],
							"stateMutability": "pure",
							"type": "function"
						}
					],
					"devdoc": {
						"kind": "dev",
						"methods": {},
						"version": 1
					},
					"evm": {
						"assembly": "    /* \"contracts/Inheritance.sol\":437:542  contract A {... */\n  mstore(0x40, 0x80)\n  callvalue\n  dup1\n  iszero\n  tag_1\n  jumpi\n  0x00\n  dup1\n  revert\ntag_1:\n  pop\n  dataSize(sub_0)\n  dup1\n  dataOffset(sub_0)\n  0x00\n  codecopy\n  0x00\n  return\nstop\n\nsub_0: assembly {\n        /* \"contracts/Inheritance.sol\":437:542  contract A {... */\n      mstore(0x40, 0x80)\n      callvalue\n      dup1\n      iszero\n      tag_1\n      jumpi\n      0x00\n      dup1\n      revert\n    tag_1:\n      pop\n      jumpi(tag_2, lt(calldatasize, 0x04))\n      shr(0xe0, calldataload(0x00))\n      dup1\n      0xc2985578\n      eq\n      tag_3\n      jumpi\n    tag_2:\n      0x00\n      dup1\n      revert\n        /* \"contracts/Inheritance.sol\":454:540  function foo() public pure virtual returns (string memory) {... */\n    tag_3:\n        /* \"contracts/Inheritance.sol\":523:533  return \"A\" */\n      0x40\n      dup1\n      mload\n      dup1\n      dup3\n      add\n      dup3\n      mstore\n      0x01\n      dup2\n      mstore\n      shl(0xf8, 0x41)\n      0x20\n      dup3\n      add\n      mstore\n        /* \"contracts/Inheritance.sol\":454:540  function foo() public pure virtual returns (string memory) {... */\n      swap1\n      mload\n      tag_6\n      swap2\n        /* \"contracts/Inheritance.sol\":523:533  return \"A\" */\n      swap1\n        /* \"contracts/Inheritance.sol\":454:540  function foo() public pure virtual returns (string memory) {... */\n      tag_7\n      jump\t// in\n    tag_6:\n      mload(0x40)\n      dup1\n      swap2\n      sub\n      swap1\n      return\n        /* \"#utility.yul\":14:611   */\n    tag_7:\n        /* \"#utility.yul\":126:130   */\n      0x00\n        /* \"#utility.yul\":155:157   */\n      0x20\n        /* \"#utility.yul\":184:186   */\n      dup1\n        /* \"#utility.yul\":173:182   */\n      dup4\n        /* \"#utility.yul\":166:187   */\n      mstore\n        /* \"#utility.yul\":216:222   */\n      dup4\n        /* \"#utility.yul\":210:223   */\n      mload\n        /* \"#utility.yul\":259:265   */\n      dup1\n        /* \"#utility.yul\":254:256   */\n      dup3\n        /* \"#utility.yul\":243:252   */\n      dup6\n        /* \"#utility.yul\":239:257   */\n      add\n        /* \"#utility.yul\":232:266   */\n      mstore\n        /* \"#utility.yul\":284:285   */\n      0x00\n        /* \"#utility.yul\":294:434   */\n    tag_11:\n        /* \"#utility.yul\":308:314   */\n      dup2\n        /* \"#utility.yul\":305:306   */\n      dup2\n        /* \"#utility.yul\":302:315   */\n      lt\n        /* \"#utility.yul\":294:434   */\n      iszero\n      tag_13\n      jumpi\n        /* \"#utility.yul\":403:417   */\n      dup6\n      dup2\n      add\n        /* \"#utility.yul\":399:422   */\n      dup4\n      add\n        /* \"#utility.yul\":393:423   */\n      mload\n        /* \"#utility.yul\":369:386   */\n      dup6\n      dup3\n      add\n        /* \"#utility.yul\":388:390   */\n      0x40\n        /* \"#utility.yul\":365:391   */\n      add\n        /* \"#utility.yul\":358:424   */\n      mstore\n        /* \"#utility.yul\":323:333   */\n      dup3\n      add\n        /* \"#utility.yul\":294:434   */\n      jump(tag_11)\n    tag_13:\n        /* \"#utility.yul\":452:458   */\n      dup2\n        /* \"#utility.yul\":449:450   */\n      dup2\n        /* \"#utility.yul\":446:459   */\n      gt\n        /* \"#utility.yul\":443:534   */\n      iszero\n      tag_14\n      jumpi\n        /* \"#utility.yul\":522:523   */\n      0x00\n        /* \"#utility.yul\":517:519   */\n      0x40\n        /* \"#utility.yul\":508:514   */\n      dup4\n        /* \"#utility.yul\":497:506   */\n      dup8\n        /* \"#utility.yul\":493:515   */\n      add\n        /* \"#utility.yul\":489:520   */\n      add\n        /* \"#utility.yul\":482:524   */\n      mstore\n        /* \"#utility.yul\":443:534   */\n    tag_14:\n      pop\n        /* \"#utility.yul\":595:597   */\n      0x1f\n        /* \"#utility.yul\":574:589   */\n      add\n      not(0x1f)\n        /* \"#utility.yul\":570:599   */\n      and\n        /* \"#utility.yul\":555:600   */\n      swap3\n      swap1\n      swap3\n      add\n        /* \"#utility.yul\":602:604   */\n      0x40\n        /* \"#utility.yul\":551:605   */\n      add\n      swap4\n        /* \"#utility.yul\":14:611   */\n      swap3\n      pop\n      pop\n      pop\n      jump\t// out\n\n    auxdata: 0xa2646970667358221220b7b6b9a0b6c59b18bb3f91752876fc41bed7f8384ee298871baf1b4788a06c6364736f6c634300080d0033\n}\n",
						"bytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"linkReferences": {},
							"object": "608060405234801561001057600080fd5b5060df8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604160f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b7b6b9a0b6c59b18bb3f91752876fc41bed7f8384ee298871baf1b4788a06c6364736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDF DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x41 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 0xB6 0xB9 LOG0 0xB6 0xC5 SWAP12 XOR 0xBB EXTCODEHASH SWAP2 PUSH22 0x2876FC41BED7F8384EE298871BAF1B4788A06C636473 PUSH16 0x6C634300080D00330000000000000000 ",
							"sourceMap": "437:105:0:-:0;;;;;;;;;;;;;;;;;;;"
						},
						"deployedBytecode": {
							"functionDebugData": {
								"@foo_9": {
									"entryPoint": null,
									"id": 9,
									"parameterSlots": 0,
									"returnSlots": 1
								},
								"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
									"entryPoint": 87,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 1
								}
							},
							"generatedSources": [
								{
									"ast": {
										"nodeType": "YulBlock",
										"src": "0:613:1",
										"statements": [
											{
												"nodeType": "YulBlock",
												"src": "6:3:1",
												"statements": []
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "135:476:1",
													"statements": [
														{
															"nodeType": "YulVariableDeclaration",
															"src": "145:12:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "155:2:1",
																"type": "",
																"value": "32"
															},
															"variables": [
																{
																	"name": "_1",
																	"nodeType": "YulTypedName",
																	"src": "149:2:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "173:9:1"
																	},
																	{
																		"name": "_1",
																		"nodeType": "YulIdentifier",
																		"src": "184:2:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "166:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "166:21:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "166:21:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "196:27:1",
															"value": {
																"arguments": [
																	{
																		"name": "value0",
																		"nodeType": "YulIdentifier",
																		"src": "216:6:1"
																	}
																],
																"functionName": {
																	"name": "mload",
																	"nodeType": "YulIdentifier",
																	"src": "210:5:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "210:13:1"
															},
															"variables": [
																{
																	"name": "length",
																	"nodeType": "YulTypedName",
																	"src": "200:6:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "243:9:1"
																			},
																			{
																				"name": "_1",
																				"nodeType": "YulIdentifier",
																				"src": "254:2:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "239:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "239:18:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "259:6:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "232:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "232:34:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "232:34:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "275:10:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "284:1:1",
																"type": "",
																"value": "0"
															},
															"variables": [
																{
																	"name": "i",
																	"nodeType": "YulTypedName",
																	"src": "279:1:1",
																	"type": ""
																}
															]
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "344:90:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "373:9:1"
																								},
																								{
																									"name": "i",
																									"nodeType": "YulIdentifier",
																									"src": "384:1:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "369:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "369:17:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "388:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "365:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "365:26:1"
																				},
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"arguments": [
																										{
																											"name": "value0",
																											"nodeType": "YulIdentifier",
																											"src": "407:6:1"
																										},
																										{
																											"name": "i",
																											"nodeType": "YulIdentifier",
																											"src": "415:1:1"
																										}
																									],
																									"functionName": {
																										"name": "add",
																										"nodeType": "YulIdentifier",
																										"src": "403:3:1"
																									},
																									"nodeType": "YulFunctionCall",
																									"src": "403:14:1"
																								},
																								{
																									"name": "_1",
																									"nodeType": "YulIdentifier",
																									"src": "419:2:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "399:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "399:23:1"
																						}
																					],
																					"functionName": {
																						"name": "mload",
																						"nodeType": "YulIdentifier",
																						"src": "393:5:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "393:30:1"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "358:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "358:66:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "358:66:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "305:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "308:6:1"
																	}
																],
																"functionName": {
																	"name": "lt",
																	"nodeType": "YulIdentifier",
																	"src": "302:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "302:13:1"
															},
															"nodeType": "YulForLoop",
															"post": {
																"nodeType": "YulBlock",
																"src": "316:19:1",
																"statements": [
																	{
																		"nodeType": "YulAssignment",
																		"src": "318:15:1",
																		"value": {
																			"arguments": [
																				{
																					"name": "i",
																					"nodeType": "YulIdentifier",
																					"src": "327:1:1"
																				},
																				{
																					"name": "_1",
																					"nodeType": "YulIdentifier",
																					"src": "330:2:1"
																				}
																			],
																			"functionName": {
																				"name": "add",
																				"nodeType": "YulIdentifier",
																				"src": "323:3:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "323:10:1"
																		},
																		"variableNames": [
																			{
																				"name": "i",
																				"nodeType": "YulIdentifier",
																				"src": "318:1:1"
																			}
																		]
																	}
																]
															},
															"pre": {
																"nodeType": "YulBlock",
																"src": "298:3:1",
																"statements": []
															},
															"src": "294:140:1"
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "468:66:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "497:9:1"
																								},
																								{
																									"name": "length",
																									"nodeType": "YulIdentifier",
																									"src": "508:6:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "493:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "493:22:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "517:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "489:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "489:31:1"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "522:1:1",
																					"type": "",
																					"value": "0"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "482:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "482:42:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "482:42:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "449:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "452:6:1"
																	}
																],
																"functionName": {
																	"name": "gt",
																	"nodeType": "YulIdentifier",
																	"src": "446:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "446:13:1"
															},
															"nodeType": "YulIf",
															"src": "443:91:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "543:62:1",
															"value": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "559:9:1"
																			},
																			{
																				"arguments": [
																					{
																						"arguments": [
																							{
																								"name": "length",
																								"nodeType": "YulIdentifier",
																								"src": "578:6:1"
																							},
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "586:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "add",
																							"nodeType": "YulIdentifier",
																							"src": "574:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "574:15:1"
																					},
																					{
																						"arguments": [
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "595:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "not",
																							"nodeType": "YulIdentifier",
																							"src": "591:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "591:7:1"
																					}
																				],
																				"functionName": {
																					"name": "and",
																					"nodeType": "YulIdentifier",
																					"src": "570:3:1"
																				},
																				"nodeType": "YulFunctionCall",
																				"src": "570:29:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "555:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "555:45:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "602:2:1",
																		"type": "",
																		"value": "64"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "551:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "551:54:1"
															},
															"variableNames": [
																{
																	"name": "tail",
																	"nodeType": "YulIdentifier",
																	"src": "543:4:1"
																}
															]
														}
													]
												},
												"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "104:9:1",
														"type": ""
													},
													{
														"name": "value0",
														"nodeType": "YulTypedName",
														"src": "115:6:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "tail",
														"nodeType": "YulTypedName",
														"src": "126:4:1",
														"type": ""
													}
												],
												"src": "14:597:1"
											}
										]
									},
									"contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
									"id": 1,
									"language": "Yul",
									"name": "#utility.yul"
								}
							],
							"immutableReferences": {},
							"linkReferences": {},
							"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604160f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b7b6b9a0b6c59b18bb3f91752876fc41bed7f8384ee298871baf1b4788a06c6364736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x41 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 0xB6 0xB9 LOG0 0xB6 0xC5 SWAP12 XOR 0xBB EXTCODEHASH SWAP2 PUSH22 0x2876FC41BED7F8384EE298871BAF1B4788A06C636473 PUSH16 0x6C634300080D00330000000000000000 ",
							"sourceMap": "437:105:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;454:86;523:10;;;;;;;;;;;-1:-1:-1;;;523:10:0;;;;454:86;;;;523:10;454:86;:::i;:::-;;;;;;;;14:597:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "44600",
								"executionCost": "93",
								"totalCost": "44693"
							},
							"external": {
								"foo()": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 437,
									"end": 542,
									"name": "PUSH",
									"source": 0,
									"value": "80"
								},
								{
									"begin": 437,
									"end": 542,
									"name": "PUSH",
									"source": 0,
									"value": "40"
								},
								{
									"begin": 437,
									"end": 542,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 437,
									"end": 542,
									"name": "CALLVALUE",
									"source": 0
								},
								{
									"begin": 437,
									"end": 542,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 437,
									"end": 542,
									"name": "ISZERO",
									"source": 0
								},
								{
									"begin": 437,
									"end": 542,
									"name": "PUSH [tag]",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 437,
									"end": 542,
									"name": "JUMPI",
									"source": 0
								},
								{
									"begin": 437,
									"end": 542,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 437,
									"end": 542,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 437,
									"end": 542,
									"name": "REVERT",
									"source": 0
								},
								{
									"begin": 437,
									"end": 542,
									"name": "tag",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 437,
									"end": 542,
									"name": "JUMPDEST",
									"source": 0
								},
								{
									"begin": 437,
									"end": 542,
									"name": "POP",
									"source": 0
								},
								{
									"begin": 437,
									"end": 542,
									"name": "PUSH #[$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 437,
									"end": 542,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 437,
									"end": 542,
									"name": "PUSH [$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 437,
									"end": 542,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 437,
									"end": 542,
									"name": "CODECOPY",
									"source": 0
								},
								{
									"begin": 437,
									"end": 542,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 437,
									"end": 542,
									"name": "RETURN",
									"source": 0
								}
							],
							".data": {
								"0": {
									".auxdata": "a2646970667358221220b7b6b9a0b6c59b18bb3f91752876fc41bed7f8384ee298871baf1b4788a06c6364736f6c634300080d0033",
									".code": [
										{
											"begin": 437,
											"end": 542,
											"name": "PUSH",
											"source": 0,
											"value": "80"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "CALLVALUE",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "ISZERO",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "tag",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "CALLDATASIZE",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "LT",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "CALLDATALOAD",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "PUSH",
											"source": 0,
											"value": "E0"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "SHR",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "PUSH",
											"source": 0,
											"value": "C2985578"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "EQ",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "tag",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 437,
											"end": 542,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 437,
											"end": 542,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 454,
											"end": 540,
											"name": "tag",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 454,
											"end": 540,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 523,
											"end": 533,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "PUSH",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 523,
											"end": 533,
											"name": "DUP2",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "41"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "F8"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "SHL",
											"source": -1
										},
										{
											"begin": 523,
											"end": 533,
											"name": "PUSH",
											"source": 0,
											"value": "20"
										},
										{
											"begin": 523,
											"end": 533,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 454,
											"end": 540,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 454,
											"end": 540,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 454,
											"end": 540,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 454,
											"end": 540,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 523,
											"end": 533,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 454,
											"end": 540,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "7"
										},
										{
											"begin": 454,
											"end": 540,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 454,
											"end": 540,
											"name": "tag",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 454,
											"end": 540,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 454,
											"end": 540,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 454,
											"end": 540,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 454,
											"end": 540,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 454,
											"end": 540,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 454,
											"end": 540,
											"name": "SUB",
											"source": 0
										},
										{
											"begin": 454,
											"end": 540,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 454,
											"end": 540,
											"name": "RETURN",
											"source": 0
										},
										{
											"begin": 14,
											"end": 611,
											"name": "tag",
											"source": 1,
											"value": "7"
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 126,
											"end": 130,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 155,
											"end": 157,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 184,
											"end": 186,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 173,
											"end": 182,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 166,
											"end": 187,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 216,
											"end": 222,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 210,
											"end": 223,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 259,
											"end": 265,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 254,
											"end": 256,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 243,
											"end": 252,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 239,
											"end": 257,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 232,
											"end": 266,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 284,
											"end": 285,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "11"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 308,
											"end": 314,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 305,
											"end": 306,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 302,
											"end": 315,
											"name": "LT",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "13"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 393,
											"end": 423,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 388,
											"end": 390,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 365,
											"end": 391,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 358,
											"end": 424,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "11"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMP",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "13"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 452,
											"end": 458,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 449,
											"end": 450,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 446,
											"end": 459,
											"name": "GT",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 522,
											"end": 523,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 517,
											"end": 519,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 508,
											"end": 514,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 497,
											"end": 506,
											"name": "DUP8",
											"source": 1
										},
										{
											"begin": 493,
											"end": 515,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 489,
											"end": 520,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 482,
											"end": 524,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "tag",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 595,
											"end": 597,
											"name": "PUSH",
											"source": 1,
											"value": "1F"
										},
										{
											"begin": 574,
											"end": 589,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "1F"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "NOT",
											"source": -1
										},
										{
											"begin": 570,
											"end": 599,
											"name": "AND",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 602,
											"end": 604,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 551,
											"end": 605,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 551,
											"end": 605,
											"name": "SWAP4",
											"source": 1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMP",
											"source": 1,
											"value": "[out]"
										}
									]
								}
							}
						},
						"methodIdentifiers": {
							"foo()": "c2985578"
						}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"A\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"kind": "user",
						"methods": {},
						"version": 1
					}
				},
				"B": {
					"abi": [
						{
							"inputs": [],
							"name": "foo",
							"outputs": [
								{
									"internalType": "string",
									"name": "",
									"type": "string"
								}
							],
							"stateMutability": "pure",
							"type": "function"
						}
					],
					"devdoc": {
						"kind": "dev",
						"methods": {},
						"version": 1
					},
					"evm": {
						"assembly": "    /* \"contracts/Inheritance.sol\":608:751  contract B is A {... */\n  mstore(0x40, 0x80)\n  callvalue\n  dup1\n  iszero\n  tag_1\n  jumpi\n  0x00\n  dup1\n  revert\ntag_1:\n  pop\n  dataSize(sub_0)\n  dup1\n  dataOffset(sub_0)\n  0x00\n  codecopy\n  0x00\n  return\nstop\n\nsub_0: assembly {\n        /* \"contracts/Inheritance.sol\":608:751  contract B is A {... */\n      mstore(0x40, 0x80)\n      callvalue\n      dup1\n      iszero\n      tag_1\n      jumpi\n      0x00\n      dup1\n      revert\n    tag_1:\n      pop\n      jumpi(tag_2, lt(calldatasize, 0x04))\n      shr(0xe0, calldataload(0x00))\n      dup1\n      0xc2985578\n      eq\n      tag_3\n      jumpi\n    tag_2:\n      0x00\n      dup1\n      revert\n        /* \"contracts/Inheritance.sol\":654:749  function foo() public pure virtual override returns (string memory) {... */\n    tag_3:\n        /* \"contracts/Inheritance.sol\":732:742  return \"B\" */\n      0x40\n      dup1\n      mload\n      dup1\n      dup3\n      add\n      dup3\n      mstore\n      0x01\n      dup2\n      mstore\n      shl(0xf9, 0x21)\n      0x20\n      dup3\n      add\n      mstore\n        /* \"contracts/Inheritance.sol\":654:749  function foo() public pure virtual override returns (string memory) {... */\n      swap1\n      mload\n      tag_6\n      swap2\n        /* \"contracts/Inheritance.sol\":732:742  return \"B\" */\n      swap1\n        /* \"contracts/Inheritance.sol\":654:749  function foo() public pure virtual override returns (string memory) {... */\n      tag_7\n      jump\t// in\n    tag_6:\n      mload(0x40)\n      dup1\n      swap2\n      sub\n      swap1\n      return\n        /* \"#utility.yul\":14:611   */\n    tag_7:\n        /* \"#utility.yul\":126:130   */\n      0x00\n        /* \"#utility.yul\":155:157   */\n      0x20\n        /* \"#utility.yul\":184:186   */\n      dup1\n        /* \"#utility.yul\":173:182   */\n      dup4\n        /* \"#utility.yul\":166:187   */\n      mstore\n        /* \"#utility.yul\":216:222   */\n      dup4\n        /* \"#utility.yul\":210:223   */\n      mload\n        /* \"#utility.yul\":259:265   */\n      dup1\n        /* \"#utility.yul\":254:256   */\n      dup3\n        /* \"#utility.yul\":243:252   */\n      dup6\n        /* \"#utility.yul\":239:257   */\n      add\n        /* \"#utility.yul\":232:266   */\n      mstore\n        /* \"#utility.yul\":284:285   */\n      0x00\n        /* \"#utility.yul\":294:434   */\n    tag_11:\n        /* \"#utility.yul\":308:314   */\n      dup2\n        /* \"#utility.yul\":305:306   */\n      dup2\n        /* \"#utility.yul\":302:315   */\n      lt\n        /* \"#utility.yul\":294:434   */\n      iszero\n      tag_13\n      jumpi\n        /* \"#utility.yul\":403:417   */\n      dup6\n      dup2\n      add\n        /* \"#utility.yul\":399:422   */\n      dup4\n      add\n        /* \"#utility.yul\":393:423   */\n      mload\n        /* \"#utility.yul\":369:386   */\n      dup6\n      dup3\n      add\n        /* \"#utility.yul\":388:390   */\n      0x40\n        /* \"#utility.yul\":365:391   */\n      add\n        /* \"#utility.yul\":358:424   */\n      mstore\n        /* \"#utility.yul\":323:333   */\n      dup3\n      add\n        /* \"#utility.yul\":294:434   */\n      jump(tag_11)\n    tag_13:\n        /* \"#utility.yul\":452:458   */\n      dup2\n        /* \"#utility.yul\":449:450   */\n      dup2\n        /* \"#utility.yul\":446:459   */\n      gt\n        /* \"#utility.yul\":443:534   */\n      iszero\n      tag_14\n      jumpi\n        /* \"#utility.yul\":522:523   */\n      0x00\n        /* \"#utility.yul\":517:519   */\n      0x40\n        /* \"#utility.yul\":508:514   */\n      dup4\n        /* \"#utility.yul\":497:506   */\n      dup8\n        /* \"#utility.yul\":493:515   */\n      add\n        /* \"#utility.yul\":489:520   */\n      add\n        /* \"#utility.yul\":482:524   */\n      mstore\n        /* \"#utility.yul\":443:534   */\n    tag_14:\n      pop\n        /* \"#utility.yul\":595:597   */\n      0x1f\n        /* \"#utility.yul\":574:589   */\n      add\n      not(0x1f)\n        /* \"#utility.yul\":570:599   */\n      and\n        /* \"#utility.yul\":555:600   */\n      swap3\n      swap1\n      swap3\n      add\n        /* \"#utility.yul\":602:604   */\n      0x40\n        /* \"#utility.yul\":551:605   */\n      add\n      swap4\n        /* \"#utility.yul\":14:611   */\n      swap3\n      pop\n      pop\n      pop\n      jump\t// out\n\n    auxdata: 0xa264697066735822122054c72abc99057dbf0b5f87e87f4db891c514b8bb919e69f1e14f1c0dd6e940d264736f6c634300080d0033\n}\n",
						"bytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"linkReferences": {},
							"object": "608060405234801561001057600080fd5b5060df8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152602160f91b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122054c72abc99057dbf0b5f87e87f4db891c514b8bb919e69f1e14f1c0dd6e940d264736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDF DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD 0xC7 0x2A 0xBC SWAP10 SDIV PUSH30 0xBF0B5F87E87F4DB891C514B8BB919E69F1E14F1C0DD6E940D264736F6C63 NUMBER STOP ADDMOD 0xD STOP CALLER ",
							"sourceMap": "608:143:0:-:0;;;;;;;;;;;;;;;;;;;"
						},
						"deployedBytecode": {
							"functionDebugData": {
								"@foo_21": {
									"entryPoint": null,
									"id": 21,
									"parameterSlots": 0,
									"returnSlots": 1
								},
								"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
									"entryPoint": 87,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 1
								}
							},
							"generatedSources": [
								{
									"ast": {
										"nodeType": "YulBlock",
										"src": "0:613:1",
										"statements": [
											{
												"nodeType": "YulBlock",
												"src": "6:3:1",
												"statements": []
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "135:476:1",
													"statements": [
														{
															"nodeType": "YulVariableDeclaration",
															"src": "145:12:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "155:2:1",
																"type": "",
																"value": "32"
															},
															"variables": [
																{
																	"name": "_1",
																	"nodeType": "YulTypedName",
																	"src": "149:2:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "173:9:1"
																	},
																	{
																		"name": "_1",
																		"nodeType": "YulIdentifier",
																		"src": "184:2:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "166:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "166:21:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "166:21:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "196:27:1",
															"value": {
																"arguments": [
																	{
																		"name": "value0",
																		"nodeType": "YulIdentifier",
																		"src": "216:6:1"
																	}
																],
																"functionName": {
																	"name": "mload",
																	"nodeType": "YulIdentifier",
																	"src": "210:5:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "210:13:1"
															},
															"variables": [
																{
																	"name": "length",
																	"nodeType": "YulTypedName",
																	"src": "200:6:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "243:9:1"
																			},
																			{
																				"name": "_1",
																				"nodeType": "YulIdentifier",
																				"src": "254:2:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "239:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "239:18:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "259:6:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "232:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "232:34:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "232:34:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "275:10:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "284:1:1",
																"type": "",
																"value": "0"
															},
															"variables": [
																{
																	"name": "i",
																	"nodeType": "YulTypedName",
																	"src": "279:1:1",
																	"type": ""
																}
															]
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "344:90:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "373:9:1"
																								},
																								{
																									"name": "i",
																									"nodeType": "YulIdentifier",
																									"src": "384:1:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "369:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "369:17:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "388:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "365:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "365:26:1"
																				},
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"arguments": [
																										{
																											"name": "value0",
																											"nodeType": "YulIdentifier",
																											"src": "407:6:1"
																										},
																										{
																											"name": "i",
																											"nodeType": "YulIdentifier",
																											"src": "415:1:1"
																										}
																									],
																									"functionName": {
																										"name": "add",
																										"nodeType": "YulIdentifier",
																										"src": "403:3:1"
																									},
																									"nodeType": "YulFunctionCall",
																									"src": "403:14:1"
																								},
																								{
																									"name": "_1",
																									"nodeType": "YulIdentifier",
																									"src": "419:2:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "399:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "399:23:1"
																						}
																					],
																					"functionName": {
																						"name": "mload",
																						"nodeType": "YulIdentifier",
																						"src": "393:5:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "393:30:1"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "358:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "358:66:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "358:66:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "305:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "308:6:1"
																	}
																],
																"functionName": {
																	"name": "lt",
																	"nodeType": "YulIdentifier",
																	"src": "302:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "302:13:1"
															},
															"nodeType": "YulForLoop",
															"post": {
																"nodeType": "YulBlock",
																"src": "316:19:1",
																"statements": [
																	{
																		"nodeType": "YulAssignment",
																		"src": "318:15:1",
																		"value": {
																			"arguments": [
																				{
																					"name": "i",
																					"nodeType": "YulIdentifier",
																					"src": "327:1:1"
																				},
																				{
																					"name": "_1",
																					"nodeType": "YulIdentifier",
																					"src": "330:2:1"
																				}
																			],
																			"functionName": {
																				"name": "add",
																				"nodeType": "YulIdentifier",
																				"src": "323:3:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "323:10:1"
																		},
																		"variableNames": [
																			{
																				"name": "i",
																				"nodeType": "YulIdentifier",
																				"src": "318:1:1"
																			}
																		]
																	}
																]
															},
															"pre": {
																"nodeType": "YulBlock",
																"src": "298:3:1",
																"statements": []
															},
															"src": "294:140:1"
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "468:66:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "497:9:1"
																								},
																								{
																									"name": "length",
																									"nodeType": "YulIdentifier",
																									"src": "508:6:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "493:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "493:22:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "517:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "489:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "489:31:1"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "522:1:1",
																					"type": "",
																					"value": "0"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "482:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "482:42:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "482:42:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "449:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "452:6:1"
																	}
																],
																"functionName": {
																	"name": "gt",
																	"nodeType": "YulIdentifier",
																	"src": "446:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "446:13:1"
															},
															"nodeType": "YulIf",
															"src": "443:91:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "543:62:1",
															"value": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "559:9:1"
																			},
																			{
																				"arguments": [
																					{
																						"arguments": [
																							{
																								"name": "length",
																								"nodeType": "YulIdentifier",
																								"src": "578:6:1"
																							},
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "586:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "add",
																							"nodeType": "YulIdentifier",
																							"src": "574:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "574:15:1"
																					},
																					{
																						"arguments": [
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "595:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "not",
																							"nodeType": "YulIdentifier",
																							"src": "591:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "591:7:1"
																					}
																				],
																				"functionName": {
																					"name": "and",
																					"nodeType": "YulIdentifier",
																					"src": "570:3:1"
																				},
																				"nodeType": "YulFunctionCall",
																				"src": "570:29:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "555:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "555:45:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "602:2:1",
																		"type": "",
																		"value": "64"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "551:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "551:54:1"
															},
															"variableNames": [
																{
																	"name": "tail",
																	"nodeType": "YulIdentifier",
																	"src": "543:4:1"
																}
															]
														}
													]
												},
												"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "104:9:1",
														"type": ""
													},
													{
														"name": "value0",
														"nodeType": "YulTypedName",
														"src": "115:6:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "tail",
														"nodeType": "YulTypedName",
														"src": "126:4:1",
														"type": ""
													}
												],
												"src": "14:597:1"
											}
										]
									},
									"contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
									"id": 1,
									"language": "Yul",
									"name": "#utility.yul"
								}
							],
							"immutableReferences": {},
							"linkReferences": {},
							"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152602160f91b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122054c72abc99057dbf0b5f87e87f4db891c514b8bb919e69f1e14f1c0dd6e940d264736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD 0xC7 0x2A 0xBC SWAP10 SDIV PUSH30 0xBF0B5F87E87F4DB891C514B8BB919E69F1E14F1C0DD6E940D264736F6C63 NUMBER STOP ADDMOD 0xD STOP CALLER ",
							"sourceMap": "608:143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;654:95;732:10;;;;;;;;;;;-1:-1:-1;;;732:10:0;;;;654:95;;;;732:10;654:95;:::i;:::-;;;;;;;;14:597:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "44600",
								"executionCost": "93",
								"totalCost": "44693"
							},
							"external": {
								"foo()": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 608,
									"end": 751,
									"name": "PUSH",
									"source": 0,
									"value": "80"
								},
								{
									"begin": 608,
									"end": 751,
									"name": "PUSH",
									"source": 0,
									"value": "40"
								},
								{
									"begin": 608,
									"end": 751,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 608,
									"end": 751,
									"name": "CALLVALUE",
									"source": 0
								},
								{
									"begin": 608,
									"end": 751,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 608,
									"end": 751,
									"name": "ISZERO",
									"source": 0
								},
								{
									"begin": 608,
									"end": 751,
									"name": "PUSH [tag]",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 608,
									"end": 751,
									"name": "JUMPI",
									"source": 0
								},
								{
									"begin": 608,
									"end": 751,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 608,
									"end": 751,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 608,
									"end": 751,
									"name": "REVERT",
									"source": 0
								},
								{
									"begin": 608,
									"end": 751,
									"name": "tag",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 608,
									"end": 751,
									"name": "JUMPDEST",
									"source": 0
								},
								{
									"begin": 608,
									"end": 751,
									"name": "POP",
									"source": 0
								},
								{
									"begin": 608,
									"end": 751,
									"name": "PUSH #[$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 608,
									"end": 751,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 608,
									"end": 751,
									"name": "PUSH [$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 608,
									"end": 751,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 608,
									"end": 751,
									"name": "CODECOPY",
									"source": 0
								},
								{
									"begin": 608,
									"end": 751,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 608,
									"end": 751,
									"name": "RETURN",
									"source": 0
								}
							],
							".data": {
								"0": {
									".auxdata": "a264697066735822122054c72abc99057dbf0b5f87e87f4db891c514b8bb919e69f1e14f1c0dd6e940d264736f6c634300080d0033",
									".code": [
										{
											"begin": 608,
											"end": 751,
											"name": "PUSH",
											"source": 0,
											"value": "80"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "CALLVALUE",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "ISZERO",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "tag",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "CALLDATASIZE",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "LT",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "CALLDATALOAD",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "PUSH",
											"source": 0,
											"value": "E0"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "SHR",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "PUSH",
											"source": 0,
											"value": "C2985578"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "EQ",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "tag",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 608,
											"end": 751,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 608,
											"end": 751,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "tag",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 654,
											"end": 749,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "PUSH",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP2",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "21"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "F9"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "SHL",
											"source": -1
										},
										{
											"begin": 732,
											"end": 742,
											"name": "PUSH",
											"source": 0,
											"value": "20"
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 654,
											"end": 749,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "7"
										},
										{
											"begin": 654,
											"end": 749,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 654,
											"end": 749,
											"name": "tag",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 654,
											"end": 749,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 654,
											"end": 749,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "SUB",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "RETURN",
											"source": 0
										},
										{
											"begin": 14,
											"end": 611,
											"name": "tag",
											"source": 1,
											"value": "7"
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 126,
											"end": 130,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 155,
											"end": 157,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 184,
											"end": 186,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 173,
											"end": 182,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 166,
											"end": 187,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 216,
											"end": 222,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 210,
											"end": 223,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 259,
											"end": 265,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 254,
											"end": 256,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 243,
											"end": 252,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 239,
											"end": 257,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 232,
											"end": 266,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 284,
											"end": 285,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "11"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 308,
											"end": 314,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 305,
											"end": 306,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 302,
											"end": 315,
											"name": "LT",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "13"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 393,
											"end": 423,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 388,
											"end": 390,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 365,
											"end": 391,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 358,
											"end": 424,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "11"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMP",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "13"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 452,
											"end": 458,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 449,
											"end": 450,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 446,
											"end": 459,
											"name": "GT",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 522,
											"end": 523,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 517,
											"end": 519,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 508,
											"end": 514,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 497,
											"end": 506,
											"name": "DUP8",
											"source": 1
										},
										{
											"begin": 493,
											"end": 515,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 489,
											"end": 520,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 482,
											"end": 524,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "tag",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 595,
											"end": 597,
											"name": "PUSH",
											"source": 1,
											"value": "1F"
										},
										{
											"begin": 574,
											"end": 589,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "1F"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "NOT",
											"source": -1
										},
										{
											"begin": 570,
											"end": 599,
											"name": "AND",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 602,
											"end": 604,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 551,
											"end": 605,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 551,
											"end": 605,
											"name": "SWAP4",
											"source": 1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMP",
											"source": 1,
											"value": "[out]"
										}
									]
								}
							}
						},
						"methodIdentifiers": {
							"foo()": "c2985578"
						}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"B\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"kind": "user",
						"methods": {},
						"version": 1
					}
				},
				"C": {
					"abi": [
						{
							"inputs": [],
							"name": "foo",
							"outputs": [
								{
									"internalType": "string",
									"name": "",
									"type": "string"
								}
							],
							"stateMutability": "pure",
							"type": "function"
						}
					],
					"devdoc": {
						"kind": "dev",
						"methods": {},
						"version": 1
					},
					"evm": {
						"assembly": "    /* \"contracts/Inheritance.sol\":753:896  contract C is A {... */\n  mstore(0x40, 0x80)\n  callvalue\n  dup1\n  iszero\n  tag_1\n  jumpi\n  0x00\n  dup1\n  revert\ntag_1:\n  pop\n  dataSize(sub_0)\n  dup1\n  dataOffset(sub_0)\n  0x00\n  codecopy\n  0x00\n  return\nstop\n\nsub_0: assembly {\n        /* \"contracts/Inheritance.sol\":753:896  contract C is A {... */\n      mstore(0x40, 0x80)\n      callvalue\n      dup1\n      iszero\n      tag_1\n      jumpi\n      0x00\n      dup1\n      revert\n    tag_1:\n      pop\n      jumpi(tag_2, lt(calldatasize, 0x04))\n      shr(0xe0, calldataload(0x00))\n      dup1\n      0xc2985578\n      eq\n      tag_3\n      jumpi\n    tag_2:\n      0x00\n      dup1\n      revert\n        /* \"contracts/Inheritance.sol\":799:894  function foo() public pure virtual override returns (string memory) {... */\n    tag_3:\n        /* \"contracts/Inheritance.sol\":877:887  return \"C\" */\n      0x40\n      dup1\n      mload\n      dup1\n      dup3\n      add\n      dup3\n      mstore\n      0x01\n      dup2\n      mstore\n      shl(0xf8, 0x43)\n      0x20\n      dup3\n      add\n      mstore\n        /* \"contracts/Inheritance.sol\":799:894  function foo() public pure virtual override returns (string memory) {... */\n      swap1\n      mload\n      tag_6\n      swap2\n        /* \"contracts/Inheritance.sol\":877:887  return \"C\" */\n      swap1\n        /* \"contracts/Inheritance.sol\":799:894  function foo() public pure virtual override returns (string memory) {... */\n      tag_7\n      jump\t// in\n    tag_6:\n      mload(0x40)\n      dup1\n      swap2\n      sub\n      swap1\n      return\n        /* \"#utility.yul\":14:611   */\n    tag_7:\n        /* \"#utility.yul\":126:130   */\n      0x00\n        /* \"#utility.yul\":155:157   */\n      0x20\n        /* \"#utility.yul\":184:186   */\n      dup1\n        /* \"#utility.yul\":173:182   */\n      dup4\n        /* \"#utility.yul\":166:187   */\n      mstore\n        /* \"#utility.yul\":216:222   */\n      dup4\n        /* \"#utility.yul\":210:223   */\n      mload\n        /* \"#utility.yul\":259:265   */\n      dup1\n        /* \"#utility.yul\":254:256   */\n      dup3\n        /* \"#utility.yul\":243:252   */\n      dup6\n        /* \"#utility.yul\":239:257   */\n      add\n        /* \"#utility.yul\":232:266   */\n      mstore\n        /* \"#utility.yul\":284:285   */\n      0x00\n        /* \"#utility.yul\":294:434   */\n    tag_11:\n        /* \"#utility.yul\":308:314   */\n      dup2\n        /* \"#utility.yul\":305:306   */\n      dup2\n        /* \"#utility.yul\":302:315   */\n      lt\n        /* \"#utility.yul\":294:434   */\n      iszero\n      tag_13\n      jumpi\n        /* \"#utility.yul\":403:417   */\n      dup6\n      dup2\n      add\n        /* \"#utility.yul\":399:422   */\n      dup4\n      add\n        /* \"#utility.yul\":393:423   */\n      mload\n        /* \"#utility.yul\":369:386   */\n      dup6\n      dup3\n      add\n        /* \"#utility.yul\":388:390   */\n      0x40\n        /* \"#utility.yul\":365:391   */\n      add\n        /* \"#utility.yul\":358:424   */\n      mstore\n        /* \"#utility.yul\":323:333   */\n      dup3\n      add\n        /* \"#utility.yul\":294:434   */\n      jump(tag_11)\n    tag_13:\n        /* \"#utility.yul\":452:458   */\n      dup2\n        /* \"#utility.yul\":449:450   */\n      dup2\n        /* \"#utility.yul\":446:459   */\n      gt\n        /* \"#utility.yul\":443:534   */\n      iszero\n      tag_14\n      jumpi\n        /* \"#utility.yul\":522:523   */\n      0x00\n        /* \"#utility.yul\":517:519   */\n      0x40\n        /* \"#utility.yul\":508:514   */\n      dup4\n        /* \"#utility.yul\":497:506   */\n      dup8\n        /* \"#utility.yul\":493:515   */\n      add\n        /* \"#utility.yul\":489:520   */\n      add\n        /* \"#utility.yul\":482:524   */\n      mstore\n        /* \"#utility.yul\":443:534   */\n    tag_14:\n      pop\n        /* \"#utility.yul\":595:597   */\n      0x1f\n        /* \"#utility.yul\":574:589   */\n      add\n      not(0x1f)\n        /* \"#utility.yul\":570:599   */\n      and\n        /* \"#utility.yul\":555:600   */\n      swap3\n      swap1\n      swap3\n      add\n        /* \"#utility.yul\":602:604   */\n      0x40\n        /* \"#utility.yul\":551:605   */\n      add\n      swap4\n        /* \"#utility.yul\":14:611   */\n      swap3\n      pop\n      pop\n      pop\n      jump\t// out\n\n    auxdata: 0xa264697066735822122018c883ad036c50dc045a4117b024099724ee1ee2658c5e31027cdb956ba919c664736f6c634300080d0033\n}\n",
						"bytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"linkReferences": {},
							"object": "608060405234801561001057600080fd5b5060df8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604360f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122018c883ad036c50dc045a4117b024099724ee1ee2658c5e31027cdb956ba919c664736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDF DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xC8 DUP4 0xAD SUB PUSH13 0x50DC045A4117B024099724EE1E 0xE2 PUSH6 0x8C5E31027CDB SWAP6 PUSH12 0xA919C664736F6C634300080D STOP CALLER ",
							"sourceMap": "753:143:0:-:0;;;;;;;;;;;;;;;;;;;"
						},
						"deployedBytecode": {
							"functionDebugData": {
								"@foo_33": {
									"entryPoint": null,
									"id": 33,
									"parameterSlots": 0,
									"returnSlots": 1
								},
								"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
									"entryPoint": 87,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 1
								}
							},
							"generatedSources": [
								{
									"ast": {
										"nodeType": "YulBlock",
										"src": "0:613:1",
										"statements": [
											{
												"nodeType": "YulBlock",
												"src": "6:3:1",
												"statements": []
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "135:476:1",
													"statements": [
														{
															"nodeType": "YulVariableDeclaration",
															"src": "145:12:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "155:2:1",
																"type": "",
																"value": "32"
															},
															"variables": [
																{
																	"name": "_1",
																	"nodeType": "YulTypedName",
																	"src": "149:2:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "173:9:1"
																	},
																	{
																		"name": "_1",
																		"nodeType": "YulIdentifier",
																		"src": "184:2:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "166:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "166:21:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "166:21:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "196:27:1",
															"value": {
																"arguments": [
																	{
																		"name": "value0",
																		"nodeType": "YulIdentifier",
																		"src": "216:6:1"
																	}
																],
																"functionName": {
																	"name": "mload",
																	"nodeType": "YulIdentifier",
																	"src": "210:5:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "210:13:1"
															},
															"variables": [
																{
																	"name": "length",
																	"nodeType": "YulTypedName",
																	"src": "200:6:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "243:9:1"
																			},
																			{
																				"name": "_1",
																				"nodeType": "YulIdentifier",
																				"src": "254:2:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "239:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "239:18:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "259:6:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "232:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "232:34:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "232:34:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "275:10:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "284:1:1",
																"type": "",
																"value": "0"
															},
															"variables": [
																{
																	"name": "i",
																	"nodeType": "YulTypedName",
																	"src": "279:1:1",
																	"type": ""
																}
															]
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "344:90:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "373:9:1"
																								},
																								{
																									"name": "i",
																									"nodeType": "YulIdentifier",
																									"src": "384:1:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "369:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "369:17:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "388:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "365:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "365:26:1"
																				},
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"arguments": [
																										{
																											"name": "value0",
																											"nodeType": "YulIdentifier",
																											"src": "407:6:1"
																										},
																										{
																											"name": "i",
																											"nodeType": "YulIdentifier",
																											"src": "415:1:1"
																										}
																									],
																									"functionName": {
																										"name": "add",
																										"nodeType": "YulIdentifier",
																										"src": "403:3:1"
																									},
																									"nodeType": "YulFunctionCall",
																									"src": "403:14:1"
																								},
																								{
																									"name": "_1",
																									"nodeType": "YulIdentifier",
																									"src": "419:2:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "399:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "399:23:1"
																						}
																					],
																					"functionName": {
																						"name": "mload",
																						"nodeType": "YulIdentifier",
																						"src": "393:5:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "393:30:1"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "358:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "358:66:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "358:66:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "305:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "308:6:1"
																	}
																],
																"functionName": {
																	"name": "lt",
																	"nodeType": "YulIdentifier",
																	"src": "302:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "302:13:1"
															},
															"nodeType": "YulForLoop",
															"post": {
																"nodeType": "YulBlock",
																"src": "316:19:1",
																"statements": [
																	{
																		"nodeType": "YulAssignment",
																		"src": "318:15:1",
																		"value": {
																			"arguments": [
																				{
																					"name": "i",
																					"nodeType": "YulIdentifier",
																					"src": "327:1:1"
																				},
																				{
																					"name": "_1",
																					"nodeType": "YulIdentifier",
																					"src": "330:2:1"
																				}
																			],
																			"functionName": {
																				"name": "add",
																				"nodeType": "YulIdentifier",
																				"src": "323:3:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "323:10:1"
																		},
																		"variableNames": [
																			{
																				"name": "i",
																				"nodeType": "YulIdentifier",
																				"src": "318:1:1"
																			}
																		]
																	}
																]
															},
															"pre": {
																"nodeType": "YulBlock",
																"src": "298:3:1",
																"statements": []
															},
															"src": "294:140:1"
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "468:66:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "497:9:1"
																								},
																								{
																									"name": "length",
																									"nodeType": "YulIdentifier",
																									"src": "508:6:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "493:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "493:22:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "517:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "489:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "489:31:1"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "522:1:1",
																					"type": "",
																					"value": "0"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "482:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "482:42:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "482:42:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "449:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "452:6:1"
																	}
																],
																"functionName": {
																	"name": "gt",
																	"nodeType": "YulIdentifier",
																	"src": "446:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "446:13:1"
															},
															"nodeType": "YulIf",
															"src": "443:91:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "543:62:1",
															"value": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "559:9:1"
																			},
																			{
																				"arguments": [
																					{
																						"arguments": [
																							{
																								"name": "length",
																								"nodeType": "YulIdentifier",
																								"src": "578:6:1"
																							},
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "586:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "add",
																							"nodeType": "YulIdentifier",
																							"src": "574:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "574:15:1"
																					},
																					{
																						"arguments": [
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "595:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "not",
																							"nodeType": "YulIdentifier",
																							"src": "591:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "591:7:1"
																					}
																				],
																				"functionName": {
																					"name": "and",
																					"nodeType": "YulIdentifier",
																					"src": "570:3:1"
																				},
																				"nodeType": "YulFunctionCall",
																				"src": "570:29:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "555:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "555:45:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "602:2:1",
																		"type": "",
																		"value": "64"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "551:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "551:54:1"
															},
															"variableNames": [
																{
																	"name": "tail",
																	"nodeType": "YulIdentifier",
																	"src": "543:4:1"
																}
															]
														}
													]
												},
												"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "104:9:1",
														"type": ""
													},
													{
														"name": "value0",
														"nodeType": "YulTypedName",
														"src": "115:6:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "tail",
														"nodeType": "YulTypedName",
														"src": "126:4:1",
														"type": ""
													}
												],
												"src": "14:597:1"
											}
										]
									},
									"contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
									"id": 1,
									"language": "Yul",
									"name": "#utility.yul"
								}
							],
							"immutableReferences": {},
							"linkReferences": {},
							"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604360f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122018c883ad036c50dc045a4117b024099724ee1ee2658c5e31027cdb956ba919c664736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xC8 DUP4 0xAD SUB PUSH13 0x50DC045A4117B024099724EE1E 0xE2 PUSH6 0x8C5E31027CDB SWAP6 PUSH12 0xA919C664736F6C634300080D STOP CALLER ",
							"sourceMap": "753:143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;799:95;877:10;;;;;;;;;;;-1:-1:-1;;;877:10:0;;;;799:95;;;;877:10;799:95;:::i;:::-;;;;;;;;14:597:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "44600",
								"executionCost": "93",
								"totalCost": "44693"
							},
							"external": {
								"foo()": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 753,
									"end": 896,
									"name": "PUSH",
									"source": 0,
									"value": "80"
								},
								{
									"begin": 753,
									"end": 896,
									"name": "PUSH",
									"source": 0,
									"value": "40"
								},
								{
									"begin": 753,
									"end": 896,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 753,
									"end": 896,
									"name": "CALLVALUE",
									"source": 0
								},
								{
									"begin": 753,
									"end": 896,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 753,
									"end": 896,
									"name": "ISZERO",
									"source": 0
								},
								{
									"begin": 753,
									"end": 896,
									"name": "PUSH [tag]",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 753,
									"end": 896,
									"name": "JUMPI",
									"source": 0
								},
								{
									"begin": 753,
									"end": 896,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 753,
									"end": 896,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 753,
									"end": 896,
									"name": "REVERT",
									"source": 0
								},
								{
									"begin": 753,
									"end": 896,
									"name": "tag",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 753,
									"end": 896,
									"name": "JUMPDEST",
									"source": 0
								},
								{
									"begin": 753,
									"end": 896,
									"name": "POP",
									"source": 0
								},
								{
									"begin": 753,
									"end": 896,
									"name": "PUSH #[$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 753,
									"end": 896,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 753,
									"end": 896,
									"name": "PUSH [$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 753,
									"end": 896,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 753,
									"end": 896,
									"name": "CODECOPY",
									"source": 0
								},
								{
									"begin": 753,
									"end": 896,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 753,
									"end": 896,
									"name": "RETURN",
									"source": 0
								}
							],
							".data": {
								"0": {
									".auxdata": "a264697066735822122018c883ad036c50dc045a4117b024099724ee1ee2658c5e31027cdb956ba919c664736f6c634300080d0033",
									".code": [
										{
											"begin": 753,
											"end": 896,
											"name": "PUSH",
											"source": 0,
											"value": "80"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "CALLVALUE",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "ISZERO",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "tag",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "CALLDATASIZE",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "LT",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "CALLDATALOAD",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "PUSH",
											"source": 0,
											"value": "E0"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "SHR",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "PUSH",
											"source": 0,
											"value": "C2985578"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "EQ",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "tag",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 753,
											"end": 896,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 753,
											"end": 896,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "tag",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 799,
											"end": 894,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 877,
											"end": 887,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "PUSH",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 877,
											"end": 887,
											"name": "DUP2",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "43"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "F8"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "SHL",
											"source": -1
										},
										{
											"begin": 877,
											"end": 887,
											"name": "PUSH",
											"source": 0,
											"value": "20"
										},
										{
											"begin": 877,
											"end": 887,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 799,
											"end": 894,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "7"
										},
										{
											"begin": 799,
											"end": 894,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 799,
											"end": 894,
											"name": "tag",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 799,
											"end": 894,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 799,
											"end": 894,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "SUB",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "RETURN",
											"source": 0
										},
										{
											"begin": 14,
											"end": 611,
											"name": "tag",
											"source": 1,
											"value": "7"
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 126,
											"end": 130,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 155,
											"end": 157,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 184,
											"end": 186,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 173,
											"end": 182,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 166,
											"end": 187,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 216,
											"end": 222,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 210,
											"end": 223,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 259,
											"end": 265,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 254,
											"end": 256,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 243,
											"end": 252,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 239,
											"end": 257,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 232,
											"end": 266,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 284,
											"end": 285,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "11"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 308,
											"end": 314,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 305,
											"end": 306,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 302,
											"end": 315,
											"name": "LT",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "13"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 393,
											"end": 423,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 388,
											"end": 390,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 365,
											"end": 391,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 358,
											"end": 424,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "11"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMP",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "13"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 452,
											"end": 458,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 449,
											"end": 450,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 446,
											"end": 459,
											"name": "GT",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 522,
											"end": 523,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 517,
											"end": 519,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 508,
											"end": 514,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 497,
											"end": 506,
											"name": "DUP8",
											"source": 1
										},
										{
											"begin": 493,
											"end": 515,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 489,
											"end": 520,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 482,
											"end": 524,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "tag",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 595,
											"end": 597,
											"name": "PUSH",
											"source": 1,
											"value": "1F"
										},
										{
											"begin": 574,
											"end": 589,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "1F"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "NOT",
											"source": -1
										},
										{
											"begin": 570,
											"end": 599,
											"name": "AND",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 602,
											"end": 604,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 551,
											"end": 605,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 551,
											"end": 605,
											"name": "SWAP4",
											"source": 1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMP",
											"source": 1,
											"value": "[out]"
										}
									]
								}
							}
						},
						"methodIdentifiers": {
							"foo()": "c2985578"
						}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"C\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"kind": "user",
						"methods": {},
						"version": 1
					}
				},
				"D": {
					"abi": [
						{
							"inputs": [],
							"name": "foo",
							"outputs": [
								{
									"internalType": "string",
									"name": "",
									"type": "string"
								}
							],
							"stateMutability": "pure",
							"type": "function"
						}
					],
					"devdoc": {
						"kind": "dev",
						"methods": {},
						"version": 1
					},
					"evm": {
						"assembly": "    /* \"contracts/Inheritance.sol\":1123:1278  contract D is B, C {... */\n  mstore(0x40, 0x80)\n  callvalue\n  dup1\n  iszero\n  tag_1\n  jumpi\n  0x00\n  dup1\n  revert\ntag_1:\n  pop\n  dataSize(sub_0)\n  dup1\n  dataOffset(sub_0)\n  0x00\n  codecopy\n  0x00\n  return\nstop\n\nsub_0: assembly {\n        /* \"contracts/Inheritance.sol\":1123:1278  contract D is B, C {... */\n      mstore(0x40, 0x80)\n      callvalue\n      dup1\n      iszero\n      tag_1\n      jumpi\n      0x00\n      dup1\n      revert\n    tag_1:\n      pop\n      jumpi(tag_2, lt(calldatasize, 0x04))\n      shr(0xe0, calldataload(0x00))\n      dup1\n      0xc2985578\n      eq\n      tag_3\n      jumpi\n    tag_2:\n      0x00\n      dup1\n      revert\n        /* \"contracts/Inheritance.sol\":1175:1276  function foo() public pure override(B, C) returns (string memory) {... */\n    tag_3:\n      tag_4\n      tag_5\n      jump\t// in\n    tag_4:\n      mload(0x40)\n      tag_6\n      swap2\n      swap1\n      tag_7\n      jump\t// in\n    tag_6:\n      mload(0x40)\n      dup1\n      swap2\n      sub\n      swap1\n      return\n    tag_5:\n        /* \"contracts/Inheritance.sol\":1226:1239  string memory */\n      0x60\n        /* \"contracts/Inheritance.sol\":1258:1269  super.foo() */\n      tag_9\n        /* \"contracts/Inheritance.sol\":877:887  return \"C\" */\n      0x40\n      dup1\n      mload\n      dup1\n      dup3\n      add\n      swap1\n      swap2\n      mstore\n      0x01\n      dup2\n      mstore\n      shl(0xf8, 0x43)\n      0x20\n      dup3\n      add\n      mstore\n      swap1\n        /* \"contracts/Inheritance.sol\":799:894  function foo() public pure virtual override returns (string memory) {... */\n      jump\n        /* \"contracts/Inheritance.sol\":1258:1269  super.foo() */\n    tag_9:\n        /* \"contracts/Inheritance.sol\":1251:1269  return super.foo() */\n      swap1\n      pop\n        /* \"contracts/Inheritance.sol\":1175:1276  function foo() public pure override(B, C) returns (string memory) {... */\n      swap1\n      jump\t// out\n        /* \"#utility.yul\":14:611   */\n    tag_7:\n        /* \"#utility.yul\":126:130   */\n      0x00\n        /* \"#utility.yul\":155:157   */\n      0x20\n        /* \"#utility.yul\":184:186   */\n      dup1\n        /* \"#utility.yul\":173:182   */\n      dup4\n        /* \"#utility.yul\":166:187   */\n      mstore\n        /* \"#utility.yul\":216:222   */\n      dup4\n        /* \"#utility.yul\":210:223   */\n      mload\n        /* \"#utility.yul\":259:265   */\n      dup1\n        /* \"#utility.yul\":254:256   */\n      dup3\n        /* \"#utility.yul\":243:252   */\n      dup6\n        /* \"#utility.yul\":239:257   */\n      add\n        /* \"#utility.yul\":232:266   */\n      mstore\n        /* \"#utility.yul\":284:285   */\n      0x00\n        /* \"#utility.yul\":294:434   */\n    tag_14:\n        /* \"#utility.yul\":308:314   */\n      dup2\n        /* \"#utility.yul\":305:306   */\n      dup2\n        /* \"#utility.yul\":302:315   */\n      lt\n        /* \"#utility.yul\":294:434   */\n      iszero\n      tag_16\n      jumpi\n        /* \"#utility.yul\":403:417   */\n      dup6\n      dup2\n      add\n        /* \"#utility.yul\":399:422   */\n      dup4\n      add\n        /* \"#utility.yul\":393:423   */\n      mload\n        /* \"#utility.yul\":369:386   */\n      dup6\n      dup3\n      add\n        /* \"#utility.yul\":388:390   */\n      0x40\n        /* \"#utility.yul\":365:391   */\n      add\n        /* \"#utility.yul\":358:424   */\n      mstore\n        /* \"#utility.yul\":323:333   */\n      dup3\n      add\n        /* \"#utility.yul\":294:434   */\n      jump(tag_14)\n    tag_16:\n        /* \"#utility.yul\":452:458   */\n      dup2\n        /* \"#utility.yul\":449:450   */\n      dup2\n        /* \"#utility.yul\":446:459   */\n      gt\n        /* \"#utility.yul\":443:534   */\n      iszero\n      tag_17\n      jumpi\n        /* \"#utility.yul\":522:523   */\n      0x00\n        /* \"#utility.yul\":517:519   */\n      0x40\n        /* \"#utility.yul\":508:514   */\n      dup4\n        /* \"#utility.yul\":497:506   */\n      dup8\n        /* \"#utility.yul\":493:515   */\n      add\n        /* \"#utility.yul\":489:520   */\n      add\n        /* \"#utility.yul\":482:524   */\n      mstore\n        /* \"#utility.yul\":443:534   */\n    tag_17:\n      pop\n        /* \"#utility.yul\":595:597   */\n      0x1f\n        /* \"#utility.yul\":574:589   */\n      add\n      not(0x1f)\n        /* \"#utility.yul\":570:599   */\n      and\n        /* \"#utility.yul\":555:600   */\n      swap3\n      swap1\n      swap3\n      add\n        /* \"#utility.yul\":602:604   */\n      0x40\n        /* \"#utility.yul\":551:605   */\n      add\n      swap4\n        /* \"#utility.yul\":14:611   */\n      swap3\n      pop\n      pop\n      pop\n      jump\t// out\n\n    auxdata: 0xa2646970667358221220bbb77db611505e8e5787bd43d465ca74c449dc7526518e1b8ed9923cd67029f964736f6c634300080d0033\n}\n",
						"bytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"linkReferences": {},
							"object": "608060405234801561001057600080fd5b5060f38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152604360f81b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220bbb77db611505e8e5787bd43d465ca74c449dc7526518e1b8ed9923cd67029f964736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF3 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0xB7 PUSH30 0xB611505E8E5787BD43D465CA74C449DC7526518E1B8ED9923CD67029F964 PUSH20 0x6F6C634300080D00330000000000000000000000 ",
							"sourceMap": "1123:155:0:-:0;;;;;;;;;;;;;;;;;;;"
						},
						"deployedBytecode": {
							"functionDebugData": {
								"@foo_33": {
									"entryPoint": null,
									"id": 33,
									"parameterSlots": 0,
									"returnSlots": 1
								},
								"@foo_51": {
									"entryPoint": 71,
									"id": 51,
									"parameterSlots": 0,
									"returnSlots": 1
								},
								"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
									"entryPoint": 107,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 1
								}
							},
							"generatedSources": [
								{
									"ast": {
										"nodeType": "YulBlock",
										"src": "0:613:1",
										"statements": [
											{
												"nodeType": "YulBlock",
												"src": "6:3:1",
												"statements": []
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "135:476:1",
													"statements": [
														{
															"nodeType": "YulVariableDeclaration",
															"src": "145:12:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "155:2:1",
																"type": "",
																"value": "32"
															},
															"variables": [
																{
																	"name": "_1",
																	"nodeType": "YulTypedName",
																	"src": "149:2:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "173:9:1"
																	},
																	{
																		"name": "_1",
																		"nodeType": "YulIdentifier",
																		"src": "184:2:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "166:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "166:21:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "166:21:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "196:27:1",
															"value": {
																"arguments": [
																	{
																		"name": "value0",
																		"nodeType": "YulIdentifier",
																		"src": "216:6:1"
																	}
																],
																"functionName": {
																	"name": "mload",
																	"nodeType": "YulIdentifier",
																	"src": "210:5:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "210:13:1"
															},
															"variables": [
																{
																	"name": "length",
																	"nodeType": "YulTypedName",
																	"src": "200:6:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "243:9:1"
																			},
																			{
																				"name": "_1",
																				"nodeType": "YulIdentifier",
																				"src": "254:2:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "239:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "239:18:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "259:6:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "232:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "232:34:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "232:34:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "275:10:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "284:1:1",
																"type": "",
																"value": "0"
															},
															"variables": [
																{
																	"name": "i",
																	"nodeType": "YulTypedName",
																	"src": "279:1:1",
																	"type": ""
																}
															]
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "344:90:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "373:9:1"
																								},
																								{
																									"name": "i",
																									"nodeType": "YulIdentifier",
																									"src": "384:1:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "369:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "369:17:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "388:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "365:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "365:26:1"
																				},
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"arguments": [
																										{
																											"name": "value0",
																											"nodeType": "YulIdentifier",
																											"src": "407:6:1"
																										},
																										{
																											"name": "i",
																											"nodeType": "YulIdentifier",
																											"src": "415:1:1"
																										}
																									],
																									"functionName": {
																										"name": "add",
																										"nodeType": "YulIdentifier",
																										"src": "403:3:1"
																									},
																									"nodeType": "YulFunctionCall",
																									"src": "403:14:1"
																								},
																								{
																									"name": "_1",
																									"nodeType": "YulIdentifier",
																									"src": "419:2:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "399:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "399:23:1"
																						}
																					],
																					"functionName": {
																						"name": "mload",
																						"nodeType": "YulIdentifier",
																						"src": "393:5:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "393:30:1"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "358:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "358:66:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "358:66:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "305:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "308:6:1"
																	}
																],
																"functionName": {
																	"name": "lt",
																	"nodeType": "YulIdentifier",
																	"src": "302:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "302:13:1"
															},
															"nodeType": "YulForLoop",
															"post": {
																"nodeType": "YulBlock",
																"src": "316:19:1",
																"statements": [
																	{
																		"nodeType": "YulAssignment",
																		"src": "318:15:1",
																		"value": {
																			"arguments": [
																				{
																					"name": "i",
																					"nodeType": "YulIdentifier",
																					"src": "327:1:1"
																				},
																				{
																					"name": "_1",
																					"nodeType": "YulIdentifier",
																					"src": "330:2:1"
																				}
																			],
																			"functionName": {
																				"name": "add",
																				"nodeType": "YulIdentifier",
																				"src": "323:3:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "323:10:1"
																		},
																		"variableNames": [
																			{
																				"name": "i",
																				"nodeType": "YulIdentifier",
																				"src": "318:1:1"
																			}
																		]
																	}
																]
															},
															"pre": {
																"nodeType": "YulBlock",
																"src": "298:3:1",
																"statements": []
															},
															"src": "294:140:1"
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "468:66:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "497:9:1"
																								},
																								{
																									"name": "length",
																									"nodeType": "YulIdentifier",
																									"src": "508:6:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "493:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "493:22:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "517:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "489:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "489:31:1"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "522:1:1",
																					"type": "",
																					"value": "0"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "482:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "482:42:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "482:42:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "449:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "452:6:1"
																	}
																],
																"functionName": {
																	"name": "gt",
																	"nodeType": "YulIdentifier",
																	"src": "446:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "446:13:1"
															},
															"nodeType": "YulIf",
															"src": "443:91:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "543:62:1",
															"value": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "559:9:1"
																			},
																			{
																				"arguments": [
																					{
																						"arguments": [
																							{
																								"name": "length",
																								"nodeType": "YulIdentifier",
																								"src": "578:6:1"
																							},
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "586:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "add",
																							"nodeType": "YulIdentifier",
																							"src": "574:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "574:15:1"
																					},
																					{
																						"arguments": [
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "595:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "not",
																							"nodeType": "YulIdentifier",
																							"src": "591:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "591:7:1"
																					}
																				],
																				"functionName": {
																					"name": "and",
																					"nodeType": "YulIdentifier",
																					"src": "570:3:1"
																				},
																				"nodeType": "YulFunctionCall",
																				"src": "570:29:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "555:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "555:45:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "602:2:1",
																		"type": "",
																		"value": "64"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "551:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "551:54:1"
															},
															"variableNames": [
																{
																	"name": "tail",
																	"nodeType": "YulIdentifier",
																	"src": "543:4:1"
																}
															]
														}
													]
												},
												"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "104:9:1",
														"type": ""
													},
													{
														"name": "value0",
														"nodeType": "YulTypedName",
														"src": "115:6:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "tail",
														"nodeType": "YulTypedName",
														"src": "126:4:1",
														"type": ""
													}
												],
												"src": "14:597:1"
											}
										]
									},
									"contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
									"id": 1,
									"language": "Yul",
									"name": "#utility.yul"
								}
							],
							"immutableReferences": {},
							"linkReferences": {},
							"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152604360f81b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220bbb77db611505e8e5787bd43d465ca74c449dc7526518e1b8ed9923cd67029f964736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0xB7 PUSH30 0xB611505E8E5787BD43D465CA74C449DC7526518E1B8ED9923CD67029F964 PUSH20 0x6F6C634300080D00330000000000000000000000 ",
							"sourceMap": "1123:155:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1226:13;1258:11;877:10;;;;;;;;;;;;-1:-1:-1;;;877:10:0;;;;;799:95;1258:11;1251:18;;1175:101;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "48600",
								"executionCost": "99",
								"totalCost": "48699"
							},
							"external": {
								"foo()": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 1123,
									"end": 1278,
									"name": "PUSH",
									"source": 0,
									"value": "80"
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "PUSH",
									"source": 0,
									"value": "40"
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "CALLVALUE",
									"source": 0
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "ISZERO",
									"source": 0
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "PUSH [tag]",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "JUMPI",
									"source": 0
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "REVERT",
									"source": 0
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "tag",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "JUMPDEST",
									"source": 0
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "POP",
									"source": 0
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "PUSH #[$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "PUSH [$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "CODECOPY",
									"source": 0
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 1123,
									"end": 1278,
									"name": "RETURN",
									"source": 0
								}
							],
							".data": {
								"0": {
									".auxdata": "a2646970667358221220bbb77db611505e8e5787bd43d465ca74c449dc7526518e1b8ed9923cd67029f964736f6c634300080d0033",
									".code": [
										{
											"begin": 1123,
											"end": 1278,
											"name": "PUSH",
											"source": 0,
											"value": "80"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "CALLVALUE",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "ISZERO",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "tag",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "CALLDATASIZE",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "LT",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "CALLDATALOAD",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "PUSH",
											"source": 0,
											"value": "E0"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "SHR",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "PUSH",
											"source": 0,
											"value": "C2985578"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "EQ",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "tag",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1123,
											"end": 1278,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "tag",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "5"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "tag",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "7"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "tag",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "SUB",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "RETURN",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "tag",
											"source": 0,
											"value": "5"
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1226,
											"end": 1239,
											"name": "PUSH",
											"source": 0,
											"value": "60"
										},
										{
											"begin": 1258,
											"end": 1269,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "9"
										},
										{
											"begin": 877,
											"end": 887,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 877,
											"end": 887,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "PUSH",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 877,
											"end": 887,
											"name": "DUP2",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "43"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "F8"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "SHL",
											"source": -1
										},
										{
											"begin": 877,
											"end": 887,
											"name": "PUSH",
											"source": 0,
											"value": "20"
										},
										{
											"begin": 877,
											"end": 887,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 877,
											"end": 887,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 799,
											"end": 894,
											"name": "JUMP",
											"source": 0
										},
										{
											"begin": 1258,
											"end": 1269,
											"name": "tag",
											"source": 0,
											"value": "9"
										},
										{
											"begin": 1258,
											"end": 1269,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1251,
											"end": 1269,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1251,
											"end": 1269,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1175,
											"end": 1276,
											"name": "JUMP",
											"source": 0,
											"value": "[out]"
										},
										{
											"begin": 14,
											"end": 611,
											"name": "tag",
											"source": 1,
											"value": "7"
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 126,
											"end": 130,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 155,
											"end": 157,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 184,
											"end": 186,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 173,
											"end": 182,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 166,
											"end": 187,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 216,
											"end": 222,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 210,
											"end": 223,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 259,
											"end": 265,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 254,
											"end": 256,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 243,
											"end": 252,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 239,
											"end": 257,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 232,
											"end": 266,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 284,
											"end": 285,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 308,
											"end": 314,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 305,
											"end": 306,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 302,
											"end": 315,
											"name": "LT",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "16"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 393,
											"end": 423,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 388,
											"end": 390,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 365,
											"end": 391,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 358,
											"end": 424,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMP",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "16"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 452,
											"end": 458,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 449,
											"end": 450,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 446,
											"end": 459,
											"name": "GT",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "17"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 522,
											"end": 523,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 517,
											"end": 519,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 508,
											"end": 514,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 497,
											"end": 506,
											"name": "DUP8",
											"source": 1
										},
										{
											"begin": 493,
											"end": 515,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 489,
											"end": 520,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 482,
											"end": 524,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "tag",
											"source": 1,
											"value": "17"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 595,
											"end": 597,
											"name": "PUSH",
											"source": 1,
											"value": "1F"
										},
										{
											"begin": 574,
											"end": 589,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "1F"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "NOT",
											"source": -1
										},
										{
											"begin": 570,
											"end": 599,
											"name": "AND",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 602,
											"end": 604,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 551,
											"end": 605,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 551,
											"end": 605,
											"name": "SWAP4",
											"source": 1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMP",
											"source": 1,
											"value": "[out]"
										}
									]
								}
							}
						},
						"methodIdentifiers": {
							"foo()": "c2985578"
						}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"D\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"kind": "user",
						"methods": {},
						"version": 1
					}
				},
				"E": {
					"abi": [
						{
							"inputs": [],
							"name": "foo",
							"outputs": [
								{
									"internalType": "string",
									"name": "",
									"type": "string"
								}
							],
							"stateMutability": "pure",
							"type": "function"
						}
					],
					"devdoc": {
						"kind": "dev",
						"methods": {},
						"version": 1
					},
					"evm": {
						"assembly": "    /* \"contracts/Inheritance.sol\":1280:1435  contract E is C, B {... */\n  mstore(0x40, 0x80)\n  callvalue\n  dup1\n  iszero\n  tag_1\n  jumpi\n  0x00\n  dup1\n  revert\ntag_1:\n  pop\n  dataSize(sub_0)\n  dup1\n  dataOffset(sub_0)\n  0x00\n  codecopy\n  0x00\n  return\nstop\n\nsub_0: assembly {\n        /* \"contracts/Inheritance.sol\":1280:1435  contract E is C, B {... */\n      mstore(0x40, 0x80)\n      callvalue\n      dup1\n      iszero\n      tag_1\n      jumpi\n      0x00\n      dup1\n      revert\n    tag_1:\n      pop\n      jumpi(tag_2, lt(calldatasize, 0x04))\n      shr(0xe0, calldataload(0x00))\n      dup1\n      0xc2985578\n      eq\n      tag_3\n      jumpi\n    tag_2:\n      0x00\n      dup1\n      revert\n        /* \"contracts/Inheritance.sol\":1332:1433  function foo() public pure override(C, B) returns (string memory) {... */\n    tag_3:\n      tag_4\n      tag_5\n      jump\t// in\n    tag_4:\n      mload(0x40)\n      tag_6\n      swap2\n      swap1\n      tag_7\n      jump\t// in\n    tag_6:\n      mload(0x40)\n      dup1\n      swap2\n      sub\n      swap1\n      return\n    tag_5:\n        /* \"contracts/Inheritance.sol\":1383:1396  string memory */\n      0x60\n        /* \"contracts/Inheritance.sol\":1415:1426  super.foo() */\n      tag_9\n        /* \"contracts/Inheritance.sol\":732:742  return \"B\" */\n      0x40\n      dup1\n      mload\n      dup1\n      dup3\n      add\n      swap1\n      swap2\n      mstore\n      0x01\n      dup2\n      mstore\n      shl(0xf9, 0x21)\n      0x20\n      dup3\n      add\n      mstore\n      swap1\n        /* \"contracts/Inheritance.sol\":654:749  function foo() public pure virtual override returns (string memory) {... */\n      jump\n        /* \"contracts/Inheritance.sol\":1415:1426  super.foo() */\n    tag_9:\n        /* \"contracts/Inheritance.sol\":1408:1426  return super.foo() */\n      swap1\n      pop\n        /* \"contracts/Inheritance.sol\":1332:1433  function foo() public pure override(C, B) returns (string memory) {... */\n      swap1\n      jump\t// out\n        /* \"#utility.yul\":14:611   */\n    tag_7:\n        /* \"#utility.yul\":126:130   */\n      0x00\n        /* \"#utility.yul\":155:157   */\n      0x20\n        /* \"#utility.yul\":184:186   */\n      dup1\n        /* \"#utility.yul\":173:182   */\n      dup4\n        /* \"#utility.yul\":166:187   */\n      mstore\n        /* \"#utility.yul\":216:222   */\n      dup4\n        /* \"#utility.yul\":210:223   */\n      mload\n        /* \"#utility.yul\":259:265   */\n      dup1\n        /* \"#utility.yul\":254:256   */\n      dup3\n        /* \"#utility.yul\":243:252   */\n      dup6\n        /* \"#utility.yul\":239:257   */\n      add\n        /* \"#utility.yul\":232:266   */\n      mstore\n        /* \"#utility.yul\":284:285   */\n      0x00\n        /* \"#utility.yul\":294:434   */\n    tag_14:\n        /* \"#utility.yul\":308:314   */\n      dup2\n        /* \"#utility.yul\":305:306   */\n      dup2\n        /* \"#utility.yul\":302:315   */\n      lt\n        /* \"#utility.yul\":294:434   */\n      iszero\n      tag_16\n      jumpi\n        /* \"#utility.yul\":403:417   */\n      dup6\n      dup2\n      add\n        /* \"#utility.yul\":399:422   */\n      dup4\n      add\n        /* \"#utility.yul\":393:423   */\n      mload\n        /* \"#utility.yul\":369:386   */\n      dup6\n      dup3\n      add\n        /* \"#utility.yul\":388:390   */\n      0x40\n        /* \"#utility.yul\":365:391   */\n      add\n        /* \"#utility.yul\":358:424   */\n      mstore\n        /* \"#utility.yul\":323:333   */\n      dup3\n      add\n        /* \"#utility.yul\":294:434   */\n      jump(tag_14)\n    tag_16:\n        /* \"#utility.yul\":452:458   */\n      dup2\n        /* \"#utility.yul\":449:450   */\n      dup2\n        /* \"#utility.yul\":446:459   */\n      gt\n        /* \"#utility.yul\":443:534   */\n      iszero\n      tag_17\n      jumpi\n        /* \"#utility.yul\":522:523   */\n      0x00\n        /* \"#utility.yul\":517:519   */\n      0x40\n        /* \"#utility.yul\":508:514   */\n      dup4\n        /* \"#utility.yul\":497:506   */\n      dup8\n        /* \"#utility.yul\":493:515   */\n      add\n        /* \"#utility.yul\":489:520   */\n      add\n        /* \"#utility.yul\":482:524   */\n      mstore\n        /* \"#utility.yul\":443:534   */\n    tag_17:\n      pop\n        /* \"#utility.yul\":595:597   */\n      0x1f\n        /* \"#utility.yul\":574:589   */\n      add\n      not(0x1f)\n        /* \"#utility.yul\":570:599   */\n      and\n        /* \"#utility.yul\":555:600   */\n      swap3\n      swap1\n      swap3\n      add\n        /* \"#utility.yul\":602:604   */\n      0x40\n        /* \"#utility.yul\":551:605   */\n      add\n      swap4\n        /* \"#utility.yul\":14:611   */\n      swap3\n      pop\n      pop\n      pop\n      jump\t// out\n\n    auxdata: 0xa2646970667358221220b668d1af5da48db52aadaf28686c130a63df607dc250985e0f09ec3c6e5f0a9964736f6c634300080d0033\n}\n",
						"bytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"linkReferences": {},
							"object": "608060405234801561001057600080fd5b5060f38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b668d1af5da48db52aadaf28686c130a63df607dc250985e0f09ec3c6e5f0a9964736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF3 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 PUSH9 0xD1AF5DA48DB52AADAF 0x28 PUSH9 0x6C130A63DF607DC250 SWAP9 0x5E 0xF MULMOD 0xEC EXTCODECOPY PUSH15 0x5F0A9964736F6C634300080D003300 ",
							"sourceMap": "1280:155:0:-:0;;;;;;;;;;;;;;;;;;;"
						},
						"deployedBytecode": {
							"functionDebugData": {
								"@foo_21": {
									"entryPoint": null,
									"id": 21,
									"parameterSlots": 0,
									"returnSlots": 1
								},
								"@foo_69": {
									"entryPoint": 71,
									"id": 69,
									"parameterSlots": 0,
									"returnSlots": 1
								},
								"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
									"entryPoint": 107,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 1
								}
							},
							"generatedSources": [
								{
									"ast": {
										"nodeType": "YulBlock",
										"src": "0:613:1",
										"statements": [
											{
												"nodeType": "YulBlock",
												"src": "6:3:1",
												"statements": []
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "135:476:1",
													"statements": [
														{
															"nodeType": "YulVariableDeclaration",
															"src": "145:12:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "155:2:1",
																"type": "",
																"value": "32"
															},
															"variables": [
																{
																	"name": "_1",
																	"nodeType": "YulTypedName",
																	"src": "149:2:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "173:9:1"
																	},
																	{
																		"name": "_1",
																		"nodeType": "YulIdentifier",
																		"src": "184:2:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "166:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "166:21:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "166:21:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "196:27:1",
															"value": {
																"arguments": [
																	{
																		"name": "value0",
																		"nodeType": "YulIdentifier",
																		"src": "216:6:1"
																	}
																],
																"functionName": {
																	"name": "mload",
																	"nodeType": "YulIdentifier",
																	"src": "210:5:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "210:13:1"
															},
															"variables": [
																{
																	"name": "length",
																	"nodeType": "YulTypedName",
																	"src": "200:6:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "243:9:1"
																			},
																			{
																				"name": "_1",
																				"nodeType": "YulIdentifier",
																				"src": "254:2:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "239:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "239:18:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "259:6:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "232:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "232:34:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "232:34:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "275:10:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "284:1:1",
																"type": "",
																"value": "0"
															},
															"variables": [
																{
																	"name": "i",
																	"nodeType": "YulTypedName",
																	"src": "279:1:1",
																	"type": ""
																}
															]
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "344:90:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "373:9:1"
																								},
																								{
																									"name": "i",
																									"nodeType": "YulIdentifier",
																									"src": "384:1:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "369:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "369:17:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "388:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "365:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "365:26:1"
																				},
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"arguments": [
																										{
																											"name": "value0",
																											"nodeType": "YulIdentifier",
																											"src": "407:6:1"
																										},
																										{
																											"name": "i",
																											"nodeType": "YulIdentifier",
																											"src": "415:1:1"
																										}
																									],
																									"functionName": {
																										"name": "add",
																										"nodeType": "YulIdentifier",
																										"src": "403:3:1"
																									},
																									"nodeType": "YulFunctionCall",
																									"src": "403:14:1"
																								},
																								{
																									"name": "_1",
																									"nodeType": "YulIdentifier",
																									"src": "419:2:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "399:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "399:23:1"
																						}
																					],
																					"functionName": {
																						"name": "mload",
																						"nodeType": "YulIdentifier",
																						"src": "393:5:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "393:30:1"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "358:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "358:66:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "358:66:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "305:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "308:6:1"
																	}
																],
																"functionName": {
																	"name": "lt",
																	"nodeType": "YulIdentifier",
																	"src": "302:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "302:13:1"
															},
															"nodeType": "YulForLoop",
															"post": {
																"nodeType": "YulBlock",
																"src": "316:19:1",
																"statements": [
																	{
																		"nodeType": "YulAssignment",
																		"src": "318:15:1",
																		"value": {
																			"arguments": [
																				{
																					"name": "i",
																					"nodeType": "YulIdentifier",
																					"src": "327:1:1"
																				},
																				{
																					"name": "_1",
																					"nodeType": "YulIdentifier",
																					"src": "330:2:1"
																				}
																			],
																			"functionName": {
																				"name": "add",
																				"nodeType": "YulIdentifier",
																				"src": "323:3:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "323:10:1"
																		},
																		"variableNames": [
																			{
																				"name": "i",
																				"nodeType": "YulIdentifier",
																				"src": "318:1:1"
																			}
																		]
																	}
																]
															},
															"pre": {
																"nodeType": "YulBlock",
																"src": "298:3:1",
																"statements": []
															},
															"src": "294:140:1"
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "468:66:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "497:9:1"
																								},
																								{
																									"name": "length",
																									"nodeType": "YulIdentifier",
																									"src": "508:6:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "493:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "493:22:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "517:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "489:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "489:31:1"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "522:1:1",
																					"type": "",
																					"value": "0"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "482:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "482:42:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "482:42:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "449:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "452:6:1"
																	}
																],
																"functionName": {
																	"name": "gt",
																	"nodeType": "YulIdentifier",
																	"src": "446:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "446:13:1"
															},
															"nodeType": "YulIf",
															"src": "443:91:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "543:62:1",
															"value": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "559:9:1"
																			},
																			{
																				"arguments": [
																					{
																						"arguments": [
																							{
																								"name": "length",
																								"nodeType": "YulIdentifier",
																								"src": "578:6:1"
																							},
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "586:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "add",
																							"nodeType": "YulIdentifier",
																							"src": "574:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "574:15:1"
																					},
																					{
																						"arguments": [
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "595:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "not",
																							"nodeType": "YulIdentifier",
																							"src": "591:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "591:7:1"
																					}
																				],
																				"functionName": {
																					"name": "and",
																					"nodeType": "YulIdentifier",
																					"src": "570:3:1"
																				},
																				"nodeType": "YulFunctionCall",
																				"src": "570:29:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "555:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "555:45:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "602:2:1",
																		"type": "",
																		"value": "64"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "551:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "551:54:1"
															},
															"variableNames": [
																{
																	"name": "tail",
																	"nodeType": "YulIdentifier",
																	"src": "543:4:1"
																}
															]
														}
													]
												},
												"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "104:9:1",
														"type": ""
													},
													{
														"name": "value0",
														"nodeType": "YulTypedName",
														"src": "115:6:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "tail",
														"nodeType": "YulTypedName",
														"src": "126:4:1",
														"type": ""
													}
												],
												"src": "14:597:1"
											}
										]
									},
									"contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
									"id": 1,
									"language": "Yul",
									"name": "#utility.yul"
								}
							],
							"immutableReferences": {},
							"linkReferences": {},
							"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b668d1af5da48db52aadaf28686c130a63df607dc250985e0f09ec3c6e5f0a9964736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 PUSH9 0xD1AF5DA48DB52AADAF 0x28 PUSH9 0x6C130A63DF607DC250 SWAP9 0x5E 0xF MULMOD 0xEC EXTCODECOPY PUSH15 0x5F0A9964736F6C634300080D003300 ",
							"sourceMap": "1280:155:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1332:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1383:13;1415:11;732:10;;;;;;;;;;;;-1:-1:-1;;;732:10:0;;;;;654:95;1415:11;1408:18;;1332:101;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "48600",
								"executionCost": "99",
								"totalCost": "48699"
							},
							"external": {
								"foo()": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 1280,
									"end": 1435,
									"name": "PUSH",
									"source": 0,
									"value": "80"
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "PUSH",
									"source": 0,
									"value": "40"
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "CALLVALUE",
									"source": 0
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "ISZERO",
									"source": 0
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "PUSH [tag]",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "JUMPI",
									"source": 0
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "REVERT",
									"source": 0
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "tag",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "JUMPDEST",
									"source": 0
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "POP",
									"source": 0
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "PUSH #[$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "PUSH [$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "CODECOPY",
									"source": 0
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 1280,
									"end": 1435,
									"name": "RETURN",
									"source": 0
								}
							],
							".data": {
								"0": {
									".auxdata": "a2646970667358221220b668d1af5da48db52aadaf28686c130a63df607dc250985e0f09ec3c6e5f0a9964736f6c634300080d0033",
									".code": [
										{
											"begin": 1280,
											"end": 1435,
											"name": "PUSH",
											"source": 0,
											"value": "80"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "CALLVALUE",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "ISZERO",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "tag",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "CALLDATASIZE",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "LT",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "CALLDATALOAD",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "PUSH",
											"source": 0,
											"value": "E0"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "SHR",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "PUSH",
											"source": 0,
											"value": "C2985578"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "EQ",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "tag",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1280,
											"end": 1435,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "tag",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "5"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "tag",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "7"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "tag",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "SUB",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "RETURN",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "tag",
											"source": 0,
											"value": "5"
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1383,
											"end": 1396,
											"name": "PUSH",
											"source": 0,
											"value": "60"
										},
										{
											"begin": 1415,
											"end": 1426,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "9"
										},
										{
											"begin": 732,
											"end": 742,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "PUSH",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP2",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "21"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "F9"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "SHL",
											"source": -1
										},
										{
											"begin": 732,
											"end": 742,
											"name": "PUSH",
											"source": 0,
											"value": "20"
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "JUMP",
											"source": 0
										},
										{
											"begin": 1415,
											"end": 1426,
											"name": "tag",
											"source": 0,
											"value": "9"
										},
										{
											"begin": 1415,
											"end": 1426,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1408,
											"end": 1426,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1408,
											"end": 1426,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1332,
											"end": 1433,
											"name": "JUMP",
											"source": 0,
											"value": "[out]"
										},
										{
											"begin": 14,
											"end": 611,
											"name": "tag",
											"source": 1,
											"value": "7"
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 126,
											"end": 130,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 155,
											"end": 157,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 184,
											"end": 186,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 173,
											"end": 182,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 166,
											"end": 187,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 216,
											"end": 222,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 210,
											"end": 223,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 259,
											"end": 265,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 254,
											"end": 256,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 243,
											"end": 252,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 239,
											"end": 257,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 232,
											"end": 266,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 284,
											"end": 285,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 308,
											"end": 314,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 305,
											"end": 306,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 302,
											"end": 315,
											"name": "LT",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "16"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 393,
											"end": 423,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 388,
											"end": 390,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 365,
											"end": 391,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 358,
											"end": 424,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMP",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "16"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 452,
											"end": 458,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 449,
											"end": 450,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 446,
											"end": 459,
											"name": "GT",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "17"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 522,
											"end": 523,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 517,
											"end": 519,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 508,
											"end": 514,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 497,
											"end": 506,
											"name": "DUP8",
											"source": 1
										},
										{
											"begin": 493,
											"end": 515,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 489,
											"end": 520,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 482,
											"end": 524,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "tag",
											"source": 1,
											"value": "17"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 595,
											"end": 597,
											"name": "PUSH",
											"source": 1,
											"value": "1F"
										},
										{
											"begin": 574,
											"end": 589,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "1F"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "NOT",
											"source": -1
										},
										{
											"begin": 570,
											"end": 599,
											"name": "AND",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 602,
											"end": 604,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 551,
											"end": 605,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 551,
											"end": 605,
											"name": "SWAP4",
											"source": 1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMP",
											"source": 1,
											"value": "[out]"
										}
									]
								}
							}
						},
						"methodIdentifiers": {
							"foo()": "c2985578"
						}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"E\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"kind": "user",
						"methods": {},
						"version": 1
					}
				},
				"F": {
					"abi": [
						{
							"inputs": [],
							"name": "foo",
							"outputs": [
								{
									"internalType": "string",
									"name": "",
									"type": "string"
								}
							],
							"stateMutability": "pure",
							"type": "function"
						}
					],
					"devdoc": {
						"kind": "dev",
						"methods": {},
						"version": 1
					},
					"evm": {
						"assembly": "    /* \"contracts/Inheritance.sol\":1582:1710  contract F is A, B {... */\n  mstore(0x40, 0x80)\n  callvalue\n  dup1\n  iszero\n  tag_1\n  jumpi\n  0x00\n  dup1\n  revert\ntag_1:\n  pop\n  dataSize(sub_0)\n  dup1\n  dataOffset(sub_0)\n  0x00\n  codecopy\n  0x00\n  return\nstop\n\nsub_0: assembly {\n        /* \"contracts/Inheritance.sol\":1582:1710  contract F is A, B {... */\n      mstore(0x40, 0x80)\n      callvalue\n      dup1\n      iszero\n      tag_1\n      jumpi\n      0x00\n      dup1\n      revert\n    tag_1:\n      pop\n      jumpi(tag_2, lt(calldatasize, 0x04))\n      shr(0xe0, calldataload(0x00))\n      dup1\n      0xc2985578\n      eq\n      tag_3\n      jumpi\n    tag_2:\n      0x00\n      dup1\n      revert\n        /* \"contracts/Inheritance.sol\":1607:1708  function foo() public pure override(A, B) returns (string memory) {... */\n    tag_3:\n      tag_4\n      tag_5\n      jump\t// in\n    tag_4:\n      mload(0x40)\n      tag_6\n      swap2\n      swap1\n      tag_7\n      jump\t// in\n    tag_6:\n      mload(0x40)\n      dup1\n      swap2\n      sub\n      swap1\n      return\n    tag_5:\n        /* \"contracts/Inheritance.sol\":1658:1671  string memory */\n      0x60\n        /* \"contracts/Inheritance.sol\":1690:1701  super.foo() */\n      tag_9\n        /* \"contracts/Inheritance.sol\":732:742  return \"B\" */\n      0x40\n      dup1\n      mload\n      dup1\n      dup3\n      add\n      swap1\n      swap2\n      mstore\n      0x01\n      dup2\n      mstore\n      shl(0xf9, 0x21)\n      0x20\n      dup3\n      add\n      mstore\n      swap1\n        /* \"contracts/Inheritance.sol\":654:749  function foo() public pure virtual override returns (string memory) {... */\n      jump\n        /* \"contracts/Inheritance.sol\":1690:1701  super.foo() */\n    tag_9:\n        /* \"contracts/Inheritance.sol\":1683:1701  return super.foo() */\n      swap1\n      pop\n        /* \"contracts/Inheritance.sol\":1607:1708  function foo() public pure override(A, B) returns (string memory) {... */\n      swap1\n      jump\t// out\n        /* \"#utility.yul\":14:611   */\n    tag_7:\n        /* \"#utility.yul\":126:130   */\n      0x00\n        /* \"#utility.yul\":155:157   */\n      0x20\n        /* \"#utility.yul\":184:186   */\n      dup1\n        /* \"#utility.yul\":173:182   */\n      dup4\n        /* \"#utility.yul\":166:187   */\n      mstore\n        /* \"#utility.yul\":216:222   */\n      dup4\n        /* \"#utility.yul\":210:223   */\n      mload\n        /* \"#utility.yul\":259:265   */\n      dup1\n        /* \"#utility.yul\":254:256   */\n      dup3\n        /* \"#utility.yul\":243:252   */\n      dup6\n        /* \"#utility.yul\":239:257   */\n      add\n        /* \"#utility.yul\":232:266   */\n      mstore\n        /* \"#utility.yul\":284:285   */\n      0x00\n        /* \"#utility.yul\":294:434   */\n    tag_14:\n        /* \"#utility.yul\":308:314   */\n      dup2\n        /* \"#utility.yul\":305:306   */\n      dup2\n        /* \"#utility.yul\":302:315   */\n      lt\n        /* \"#utility.yul\":294:434   */\n      iszero\n      tag_16\n      jumpi\n        /* \"#utility.yul\":403:417   */\n      dup6\n      dup2\n      add\n        /* \"#utility.yul\":399:422   */\n      dup4\n      add\n        /* \"#utility.yul\":393:423   */\n      mload\n        /* \"#utility.yul\":369:386   */\n      dup6\n      dup3\n      add\n        /* \"#utility.yul\":388:390   */\n      0x40\n        /* \"#utility.yul\":365:391   */\n      add\n        /* \"#utility.yul\":358:424   */\n      mstore\n        /* \"#utility.yul\":323:333   */\n      dup3\n      add\n        /* \"#utility.yul\":294:434   */\n      jump(tag_14)\n    tag_16:\n        /* \"#utility.yul\":452:458   */\n      dup2\n        /* \"#utility.yul\":449:450   */\n      dup2\n        /* \"#utility.yul\":446:459   */\n      gt\n        /* \"#utility.yul\":443:534   */\n      iszero\n      tag_17\n      jumpi\n        /* \"#utility.yul\":522:523   */\n      0x00\n        /* \"#utility.yul\":517:519   */\n      0x40\n        /* \"#utility.yul\":508:514   */\n      dup4\n        /* \"#utility.yul\":497:506   */\n      dup8\n        /* \"#utility.yul\":493:515   */\n      add\n        /* \"#utility.yul\":489:520   */\n      add\n        /* \"#utility.yul\":482:524   */\n      mstore\n        /* \"#utility.yul\":443:534   */\n    tag_17:\n      pop\n        /* \"#utility.yul\":595:597   */\n      0x1f\n        /* \"#utility.yul\":574:589   */\n      add\n      not(0x1f)\n        /* \"#utility.yul\":570:599   */\n      and\n        /* \"#utility.yul\":555:600   */\n      swap3\n      swap1\n      swap3\n      add\n        /* \"#utility.yul\":602:604   */\n      0x40\n        /* \"#utility.yul\":551:605   */\n      add\n      swap4\n        /* \"#utility.yul\":14:611   */\n      swap3\n      pop\n      pop\n      pop\n      jump\t// out\n\n    auxdata: 0xa264697066735822122060e70e2c1a1f990a5a4eee875d88589e58cf90c3df05bd99c98d2848bc6d208b64736f6c634300080d0033\n}\n",
						"bytecode": {
							"functionDebugData": {},
							"generatedSources": [],
							"linkReferences": {},
							"object": "608060405234801561001057600080fd5b5060f38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122060e70e2c1a1f990a5a4eee875d88589e58cf90c3df05bd99c98d2848bc6d208b64736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF3 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0xE7 0xE 0x2C BYTE 0x1F SWAP10 EXP GAS 0x4E 0xEE DUP8 0x5D DUP9 PC SWAP15 PC 0xCF SWAP1 0xC3 0xDF SDIV 0xBD SWAP10 0xC9 DUP14 0x28 BASEFEE 0xBC PUSH14 0x208B64736F6C634300080D003300 ",
							"sourceMap": "1582:128:0:-:0;;;;;;;;;;;;;;;;;;;"
						},
						"deployedBytecode": {
							"functionDebugData": {
								"@foo_21": {
									"entryPoint": null,
									"id": 21,
									"parameterSlots": 0,
									"returnSlots": 1
								},
								"@foo_87": {
									"entryPoint": 71,
									"id": 87,
									"parameterSlots": 0,
									"returnSlots": 1
								},
								"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
									"entryPoint": 107,
									"id": null,
									"parameterSlots": 2,
									"returnSlots": 1
								}
							},
							"generatedSources": [
								{
									"ast": {
										"nodeType": "YulBlock",
										"src": "0:613:1",
										"statements": [
											{
												"nodeType": "YulBlock",
												"src": "6:3:1",
												"statements": []
											},
											{
												"body": {
													"nodeType": "YulBlock",
													"src": "135:476:1",
													"statements": [
														{
															"nodeType": "YulVariableDeclaration",
															"src": "145:12:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "155:2:1",
																"type": "",
																"value": "32"
															},
															"variables": [
																{
																	"name": "_1",
																	"nodeType": "YulTypedName",
																	"src": "149:2:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "173:9:1"
																	},
																	{
																		"name": "_1",
																		"nodeType": "YulIdentifier",
																		"src": "184:2:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "166:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "166:21:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "166:21:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "196:27:1",
															"value": {
																"arguments": [
																	{
																		"name": "value0",
																		"nodeType": "YulIdentifier",
																		"src": "216:6:1"
																	}
																],
																"functionName": {
																	"name": "mload",
																	"nodeType": "YulIdentifier",
																	"src": "210:5:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "210:13:1"
															},
															"variables": [
																{
																	"name": "length",
																	"nodeType": "YulTypedName",
																	"src": "200:6:1",
																	"type": ""
																}
															]
														},
														{
															"expression": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "243:9:1"
																			},
																			{
																				"name": "_1",
																				"nodeType": "YulIdentifier",
																				"src": "254:2:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "239:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "239:18:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "259:6:1"
																	}
																],
																"functionName": {
																	"name": "mstore",
																	"nodeType": "YulIdentifier",
																	"src": "232:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "232:34:1"
															},
															"nodeType": "YulExpressionStatement",
															"src": "232:34:1"
														},
														{
															"nodeType": "YulVariableDeclaration",
															"src": "275:10:1",
															"value": {
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "284:1:1",
																"type": "",
																"value": "0"
															},
															"variables": [
																{
																	"name": "i",
																	"nodeType": "YulTypedName",
																	"src": "279:1:1",
																	"type": ""
																}
															]
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "344:90:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "373:9:1"
																								},
																								{
																									"name": "i",
																									"nodeType": "YulIdentifier",
																									"src": "384:1:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "369:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "369:17:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "388:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "365:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "365:26:1"
																				},
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"arguments": [
																										{
																											"name": "value0",
																											"nodeType": "YulIdentifier",
																											"src": "407:6:1"
																										},
																										{
																											"name": "i",
																											"nodeType": "YulIdentifier",
																											"src": "415:1:1"
																										}
																									],
																									"functionName": {
																										"name": "add",
																										"nodeType": "YulIdentifier",
																										"src": "403:3:1"
																									},
																									"nodeType": "YulFunctionCall",
																									"src": "403:14:1"
																								},
																								{
																									"name": "_1",
																									"nodeType": "YulIdentifier",
																									"src": "419:2:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "399:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "399:23:1"
																						}
																					],
																					"functionName": {
																						"name": "mload",
																						"nodeType": "YulIdentifier",
																						"src": "393:5:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "393:30:1"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "358:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "358:66:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "358:66:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "305:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "308:6:1"
																	}
																],
																"functionName": {
																	"name": "lt",
																	"nodeType": "YulIdentifier",
																	"src": "302:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "302:13:1"
															},
															"nodeType": "YulForLoop",
															"post": {
																"nodeType": "YulBlock",
																"src": "316:19:1",
																"statements": [
																	{
																		"nodeType": "YulAssignment",
																		"src": "318:15:1",
																		"value": {
																			"arguments": [
																				{
																					"name": "i",
																					"nodeType": "YulIdentifier",
																					"src": "327:1:1"
																				},
																				{
																					"name": "_1",
																					"nodeType": "YulIdentifier",
																					"src": "330:2:1"
																				}
																			],
																			"functionName": {
																				"name": "add",
																				"nodeType": "YulIdentifier",
																				"src": "323:3:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "323:10:1"
																		},
																		"variableNames": [
																			{
																				"name": "i",
																				"nodeType": "YulIdentifier",
																				"src": "318:1:1"
																			}
																		]
																	}
																]
															},
															"pre": {
																"nodeType": "YulBlock",
																"src": "298:3:1",
																"statements": []
															},
															"src": "294:140:1"
														},
														{
															"body": {
																"nodeType": "YulBlock",
																"src": "468:66:1",
																"statements": [
																	{
																		"expression": {
																			"arguments": [
																				{
																					"arguments": [
																						{
																							"arguments": [
																								{
																									"name": "headStart",
																									"nodeType": "YulIdentifier",
																									"src": "497:9:1"
																								},
																								{
																									"name": "length",
																									"nodeType": "YulIdentifier",
																									"src": "508:6:1"
																								}
																							],
																							"functionName": {
																								"name": "add",
																								"nodeType": "YulIdentifier",
																								"src": "493:3:1"
																							},
																							"nodeType": "YulFunctionCall",
																							"src": "493:22:1"
																						},
																						{
																							"kind": "number",
																							"nodeType": "YulLiteral",
																							"src": "517:2:1",
																							"type": "",
																							"value": "64"
																						}
																					],
																					"functionName": {
																						"name": "add",
																						"nodeType": "YulIdentifier",
																						"src": "489:3:1"
																					},
																					"nodeType": "YulFunctionCall",
																					"src": "489:31:1"
																				},
																				{
																					"kind": "number",
																					"nodeType": "YulLiteral",
																					"src": "522:1:1",
																					"type": "",
																					"value": "0"
																				}
																			],
																			"functionName": {
																				"name": "mstore",
																				"nodeType": "YulIdentifier",
																				"src": "482:6:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "482:42:1"
																		},
																		"nodeType": "YulExpressionStatement",
																		"src": "482:42:1"
																	}
																]
															},
															"condition": {
																"arguments": [
																	{
																		"name": "i",
																		"nodeType": "YulIdentifier",
																		"src": "449:1:1"
																	},
																	{
																		"name": "length",
																		"nodeType": "YulIdentifier",
																		"src": "452:6:1"
																	}
																],
																"functionName": {
																	"name": "gt",
																	"nodeType": "YulIdentifier",
																	"src": "446:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "446:13:1"
															},
															"nodeType": "YulIf",
															"src": "443:91:1"
														},
														{
															"nodeType": "YulAssignment",
															"src": "543:62:1",
															"value": {
																"arguments": [
																	{
																		"arguments": [
																			{
																				"name": "headStart",
																				"nodeType": "YulIdentifier",
																				"src": "559:9:1"
																			},
																			{
																				"arguments": [
																					{
																						"arguments": [
																							{
																								"name": "length",
																								"nodeType": "YulIdentifier",
																								"src": "578:6:1"
																							},
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "586:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "add",
																							"nodeType": "YulIdentifier",
																							"src": "574:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "574:15:1"
																					},
																					{
																						"arguments": [
																							{
																								"kind": "number",
																								"nodeType": "YulLiteral",
																								"src": "595:2:1",
																								"type": "",
																								"value": "31"
																							}
																						],
																						"functionName": {
																							"name": "not",
																							"nodeType": "YulIdentifier",
																							"src": "591:3:1"
																						},
																						"nodeType": "YulFunctionCall",
																						"src": "591:7:1"
																					}
																				],
																				"functionName": {
																					"name": "and",
																					"nodeType": "YulIdentifier",
																					"src": "570:3:1"
																				},
																				"nodeType": "YulFunctionCall",
																				"src": "570:29:1"
																			}
																		],
																		"functionName": {
																			"name": "add",
																			"nodeType": "YulIdentifier",
																			"src": "555:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "555:45:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "602:2:1",
																		"type": "",
																		"value": "64"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "551:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "551:54:1"
															},
															"variableNames": [
																{
																	"name": "tail",
																	"nodeType": "YulIdentifier",
																	"src": "543:4:1"
																}
															]
														}
													]
												},
												"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
												"nodeType": "YulFunctionDefinition",
												"parameters": [
													{
														"name": "headStart",
														"nodeType": "YulTypedName",
														"src": "104:9:1",
														"type": ""
													},
													{
														"name": "value0",
														"nodeType": "YulTypedName",
														"src": "115:6:1",
														"type": ""
													}
												],
												"returnVariables": [
													{
														"name": "tail",
														"nodeType": "YulTypedName",
														"src": "126:4:1",
														"type": ""
													}
												],
												"src": "14:597:1"
											}
										]
									},
									"contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
									"id": 1,
									"language": "Yul",
									"name": "#utility.yul"
								}
							],
							"immutableReferences": {},
							"linkReferences": {},
							"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122060e70e2c1a1f990a5a4eee875d88589e58cf90c3df05bd99c98d2848bc6d208b64736f6c634300080d0033",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0xE7 0xE 0x2C BYTE 0x1F SWAP10 EXP GAS 0x4E 0xEE DUP8 0x5D DUP9 PC SWAP15 PC 0xCF SWAP1 0xC3 0xDF SDIV 0xBD SWAP10 0xC9 DUP14 0x28 BASEFEE 0xBC PUSH14 0x208B64736F6C634300080D003300 ",
							"sourceMap": "1582:128:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1607:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1658:13;1690:11;732:10;;;;;;;;;;;;-1:-1:-1;;;732:10:0;;;;;654:95;1690:11;1683:18;;1607:101;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "48600",
								"executionCost": "99",
								"totalCost": "48699"
							},
							"external": {
								"foo()": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 1582,
									"end": 1710,
									"name": "PUSH",
									"source": 0,
									"value": "80"
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "PUSH",
									"source": 0,
									"value": "40"
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "MSTORE",
									"source": 0
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "CALLVALUE",
									"source": 0
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "ISZERO",
									"source": 0
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "PUSH [tag]",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "JUMPI",
									"source": 0
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "REVERT",
									"source": 0
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "tag",
									"source": 0,
									"value": "1"
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "JUMPDEST",
									"source": 0
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "POP",
									"source": 0
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "PUSH #[$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "DUP1",
									"source": 0
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "PUSH [$]",
									"source": 0,
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "CODECOPY",
									"source": 0
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "PUSH",
									"source": 0,
									"value": "0"
								},
								{
									"begin": 1582,
									"end": 1710,
									"name": "RETURN",
									"source": 0
								}
							],
							".data": {
								"0": {
									".auxdata": "a264697066735822122060e70e2c1a1f990a5a4eee875d88589e58cf90c3df05bd99c98d2848bc6d208b64736f6c634300080d0033",
									".code": [
										{
											"begin": 1582,
											"end": 1710,
											"name": "PUSH",
											"source": 0,
											"value": "80"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "CALLVALUE",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "ISZERO",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "tag",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "PUSH",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "CALLDATASIZE",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "LT",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "CALLDATALOAD",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "PUSH",
											"source": 0,
											"value": "E0"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "SHR",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "PUSH",
											"source": 0,
											"value": "C2985578"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "EQ",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "JUMPI",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "tag",
											"source": 0,
											"value": "2"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "PUSH",
											"source": 0,
											"value": "0"
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1582,
											"end": 1710,
											"name": "REVERT",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "tag",
											"source": 0,
											"value": "3"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "5"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "tag",
											"source": 0,
											"value": "4"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "7"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "JUMP",
											"source": 0,
											"value": "[in]"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "tag",
											"source": 0,
											"value": "6"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "SUB",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "RETURN",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "tag",
											"source": 0,
											"value": "5"
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1658,
											"end": 1671,
											"name": "PUSH",
											"source": 0,
											"value": "60"
										},
										{
											"begin": 1690,
											"end": 1701,
											"name": "PUSH [tag]",
											"source": 0,
											"value": "9"
										},
										{
											"begin": 732,
											"end": 742,
											"name": "PUSH",
											"source": 0,
											"value": "40"
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MLOAD",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP1",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "SWAP2",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "PUSH",
											"source": 0,
											"value": "1"
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP2",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "21"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "F9"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "SHL",
											"source": -1
										},
										{
											"begin": 732,
											"end": 742,
											"name": "PUSH",
											"source": 0,
											"value": "20"
										},
										{
											"begin": 732,
											"end": 742,
											"name": "DUP3",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "ADD",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "MSTORE",
											"source": 0
										},
										{
											"begin": 732,
											"end": 742,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 654,
											"end": 749,
											"name": "JUMP",
											"source": 0
										},
										{
											"begin": 1690,
											"end": 1701,
											"name": "tag",
											"source": 0,
											"value": "9"
										},
										{
											"begin": 1690,
											"end": 1701,
											"name": "JUMPDEST",
											"source": 0
										},
										{
											"begin": 1683,
											"end": 1701,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1683,
											"end": 1701,
											"name": "POP",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "SWAP1",
											"source": 0
										},
										{
											"begin": 1607,
											"end": 1708,
											"name": "JUMP",
											"source": 0,
											"value": "[out]"
										},
										{
											"begin": 14,
											"end": 611,
											"name": "tag",
											"source": 1,
											"value": "7"
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 126,
											"end": 130,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 155,
											"end": 157,
											"name": "PUSH",
											"source": 1,
											"value": "20"
										},
										{
											"begin": 184,
											"end": 186,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 173,
											"end": 182,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 166,
											"end": 187,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 216,
											"end": 222,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 210,
											"end": 223,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 259,
											"end": 265,
											"name": "DUP1",
											"source": 1
										},
										{
											"begin": 254,
											"end": 256,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 243,
											"end": 252,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 239,
											"end": 257,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 232,
											"end": 266,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 284,
											"end": 285,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 308,
											"end": 314,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 305,
											"end": 306,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 302,
											"end": 315,
											"name": "LT",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "16"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 403,
											"end": 417,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 399,
											"end": 422,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 393,
											"end": 423,
											"name": "MLOAD",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP6",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 369,
											"end": 386,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 388,
											"end": 390,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 365,
											"end": 391,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 358,
											"end": 424,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "DUP3",
											"source": 1
										},
										{
											"begin": 323,
											"end": 333,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "14"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMP",
											"source": 1
										},
										{
											"begin": 294,
											"end": 434,
											"name": "tag",
											"source": 1,
											"value": "16"
										},
										{
											"begin": 294,
											"end": 434,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": 452,
											"end": 458,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 449,
											"end": 450,
											"name": "DUP2",
											"source": 1
										},
										{
											"begin": 446,
											"end": 459,
											"name": "GT",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "ISZERO",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "PUSH [tag]",
											"source": 1,
											"value": "17"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPI",
											"source": 1
										},
										{
											"begin": 522,
											"end": 523,
											"name": "PUSH",
											"source": 1,
											"value": "0"
										},
										{
											"begin": 517,
											"end": 519,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 508,
											"end": 514,
											"name": "DUP4",
											"source": 1
										},
										{
											"begin": 497,
											"end": 506,
											"name": "DUP8",
											"source": 1
										},
										{
											"begin": 493,
											"end": 515,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 489,
											"end": 520,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 482,
											"end": 524,
											"name": "MSTORE",
											"source": 1
										},
										{
											"begin": 443,
											"end": 534,
											"name": "tag",
											"source": 1,
											"value": "17"
										},
										{
											"begin": 443,
											"end": 534,
											"name": "JUMPDEST",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 595,
											"end": 597,
											"name": "PUSH",
											"source": 1,
											"value": "1F"
										},
										{
											"begin": 574,
											"end": 589,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"source": -1,
											"value": "1F"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "NOT",
											"source": -1
										},
										{
											"begin": 570,
											"end": 599,
											"name": "AND",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP1",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": 555,
											"end": 600,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 602,
											"end": 604,
											"name": "PUSH",
											"source": 1,
											"value": "40"
										},
										{
											"begin": 551,
											"end": 605,
											"name": "ADD",
											"source": 1
										},
										{
											"begin": 551,
											"end": 605,
											"name": "SWAP4",
											"source": 1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "SWAP3",
											"source": 1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP",
											"source": -1
										},
										{
											"begin": 14,
											"end": 611,
											"name": "JUMP",
											"source": 1,
											"value": "[out]"
										}
									]
								}
							}
						},
						"methodIdentifiers": {
							"foo()": "c2985578"
						}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"F\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"kind": "user",
						"methods": {},
						"version": 1
					}
				}
			}
		},
		"sources": {
			"contracts/Inheritance.sol": {
				"ast": {
					"absolutePath": "contracts/Inheritance.sol",
					"exportedSymbols": {
						"A": [
							10
						],
						"B": [
							22
						],
						"C": [
							34
						],
						"D": [
							52
						],
						"E": [
							70
						],
						"F": [
							88
						]
					},
					"id": 89,
					"license": "MIT",
					"nodeType": "SourceUnit",
					"nodes": [
						{
							"id": 1,
							"literals": [
								"solidity",
								"^",
								"0.8",
								".13"
							],
							"nodeType": "PragmaDirective",
							"src": "32:24:0"
						},
						{
							"abstract": false,
							"baseContracts": [],
							"canonicalName": "A",
							"contractDependencies": [],
							"contractKind": "contract",
							"fullyImplemented": true,
							"id": 10,
							"linearizedBaseContracts": [
								10
							],
							"name": "A",
							"nameLocation": "446:1:0",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"body": {
										"id": 8,
										"nodeType": "Block",
										"src": "513:27:0",
										"statements": [
											{
												"expression": {
													"hexValue": "41",
													"id": 6,
													"isConstant": false,
													"isLValue": false,
													"isPure": true,
													"kind": "string",
													"lValueRequested": false,
													"nodeType": "Literal",
													"src": "530:3:0",
													"typeDescriptions": {
														"typeIdentifier": "t_stringliteral_03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760",
														"typeString": "literal_string \"A\""
													},
													"value": "A"
												},
												"functionReturnParameters": 5,
												"id": 7,
												"nodeType": "Return",
												"src": "523:10:0"
											}
										]
									},
									"functionSelector": "c2985578",
									"id": 9,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "foo",
									"nameLocation": "463:3:0",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 2,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "466:2:0"
									},
									"returnParameters": {
										"id": 5,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 4,
												"mutability": "mutable",
												"name": "",
												"nameLocation": "-1:-1:-1",
												"nodeType": "VariableDeclaration",
												"scope": 9,
												"src": "498:13:0",
												"stateVariable": false,
												"storageLocation": "memory",
												"typeDescriptions": {
													"typeIdentifier": "t_string_memory_ptr",
													"typeString": "string"
												},
												"typeName": {
													"id": 3,
													"name": "string",
													"nodeType": "ElementaryTypeName",
													"src": "498:6:0",
													"typeDescriptions": {
														"typeIdentifier": "t_string_storage_ptr",
														"typeString": "string"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "497:15:0"
									},
									"scope": 10,
									"src": "454:86:0",
									"stateMutability": "pure",
									"virtual": true,
									"visibility": "public"
								}
							],
							"scope": 89,
							"src": "437:105:0",
							"usedErrors": []
						},
						{
							"abstract": false,
							"baseContracts": [
								{
									"baseName": {
										"id": 11,
										"name": "A",
										"nodeType": "IdentifierPath",
										"referencedDeclaration": 10,
										"src": "622:1:0"
									},
									"id": 12,
									"nodeType": "InheritanceSpecifier",
									"src": "622:1:0"
								}
							],
							"canonicalName": "B",
							"contractDependencies": [],
							"contractKind": "contract",
							"fullyImplemented": true,
							"id": 22,
							"linearizedBaseContracts": [
								22,
								10
							],
							"name": "B",
							"nameLocation": "617:1:0",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"baseFunctions": [
										9
									],
									"body": {
										"id": 20,
										"nodeType": "Block",
										"src": "722:27:0",
										"statements": [
											{
												"expression": {
													"hexValue": "42",
													"id": 18,
													"isConstant": false,
													"isLValue": false,
													"isPure": true,
													"kind": "string",
													"lValueRequested": false,
													"nodeType": "Literal",
													"src": "739:3:0",
													"typeDescriptions": {
														"typeIdentifier": "t_stringliteral_1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a69111",
														"typeString": "literal_string \"B\""
													},
													"value": "B"
												},
												"functionReturnParameters": 17,
												"id": 19,
												"nodeType": "Return",
												"src": "732:10:0"
											}
										]
									},
									"functionSelector": "c2985578",
									"id": 21,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "foo",
									"nameLocation": "663:3:0",
									"nodeType": "FunctionDefinition",
									"overrides": {
										"id": 14,
										"nodeType": "OverrideSpecifier",
										"overrides": [],
										"src": "689:8:0"
									},
									"parameters": {
										"id": 13,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "666:2:0"
									},
									"returnParameters": {
										"id": 17,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 16,
												"mutability": "mutable",
												"name": "",
												"nameLocation": "-1:-1:-1",
												"nodeType": "VariableDeclaration",
												"scope": 21,
												"src": "707:13:0",
												"stateVariable": false,
												"storageLocation": "memory",
												"typeDescriptions": {
													"typeIdentifier": "t_string_memory_ptr",
													"typeString": "string"
												},
												"typeName": {
													"id": 15,
													"name": "string",
													"nodeType": "ElementaryTypeName",
													"src": "707:6:0",
													"typeDescriptions": {
														"typeIdentifier": "t_string_storage_ptr",
														"typeString": "string"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "706:15:0"
									},
									"scope": 22,
									"src": "654:95:0",
									"stateMutability": "pure",
									"virtual": true,
									"visibility": "public"
								}
							],
							"scope": 89,
							"src": "608:143:0",
							"usedErrors": []
						},
						{
							"abstract": false,
							"baseContracts": [
								{
									"baseName": {
										"id": 23,
										"name": "A",
										"nodeType": "IdentifierPath",
										"referencedDeclaration": 10,
										"src": "767:1:0"
									},
									"id": 24,
									"nodeType": "InheritanceSpecifier",
									"src": "767:1:0"
								}
							],
							"canonicalName": "C",
							"contractDependencies": [],
							"contractKind": "contract",
							"fullyImplemented": true,
							"id": 34,
							"linearizedBaseContracts": [
								34,
								10
							],
							"name": "C",
							"nameLocation": "762:1:0",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"baseFunctions": [
										9
									],
									"body": {
										"id": 32,
										"nodeType": "Block",
										"src": "867:27:0",
										"statements": [
											{
												"expression": {
													"hexValue": "43",
													"id": 30,
													"isConstant": false,
													"isLValue": false,
													"isPure": true,
													"kind": "string",
													"lValueRequested": false,
													"nodeType": "Literal",
													"src": "884:3:0",
													"typeDescriptions": {
														"typeIdentifier": "t_stringliteral_017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f72",
														"typeString": "literal_string \"C\""
													},
													"value": "C"
												},
												"functionReturnParameters": 29,
												"id": 31,
												"nodeType": "Return",
												"src": "877:10:0"
											}
										]
									},
									"functionSelector": "c2985578",
									"id": 33,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "foo",
									"nameLocation": "808:3:0",
									"nodeType": "FunctionDefinition",
									"overrides": {
										"id": 26,
										"nodeType": "OverrideSpecifier",
										"overrides": [],
										"src": "834:8:0"
									},
									"parameters": {
										"id": 25,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "811:2:0"
									},
									"returnParameters": {
										"id": 29,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 28,
												"mutability": "mutable",
												"name": "",
												"nameLocation": "-1:-1:-1",
												"nodeType": "VariableDeclaration",
												"scope": 33,
												"src": "852:13:0",
												"stateVariable": false,
												"storageLocation": "memory",
												"typeDescriptions": {
													"typeIdentifier": "t_string_memory_ptr",
													"typeString": "string"
												},
												"typeName": {
													"id": 27,
													"name": "string",
													"nodeType": "ElementaryTypeName",
													"src": "852:6:0",
													"typeDescriptions": {
														"typeIdentifier": "t_string_storage_ptr",
														"typeString": "string"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "851:15:0"
									},
									"scope": 34,
									"src": "799:95:0",
									"stateMutability": "pure",
									"virtual": true,
									"visibility": "public"
								}
							],
							"scope": 89,
							"src": "753:143:0",
							"usedErrors": []
						},
						{
							"abstract": false,
							"baseContracts": [
								{
									"baseName": {
										"id": 35,
										"name": "B",
										"nodeType": "IdentifierPath",
										"referencedDeclaration": 22,
										"src": "1137:1:0"
									},
									"id": 36,
									"nodeType": "InheritanceSpecifier",
									"src": "1137:1:0"
								},
								{
									"baseName": {
										"id": 37,
										"name": "C",
										"nodeType": "IdentifierPath",
										"referencedDeclaration": 34,
										"src": "1140:1:0"
									},
									"id": 38,
									"nodeType": "InheritanceSpecifier",
									"src": "1140:1:0"
								}
							],
							"canonicalName": "D",
							"contractDependencies": [],
							"contractKind": "contract",
							"fullyImplemented": true,
							"id": 52,
							"linearizedBaseContracts": [
								52,
								34,
								22,
								10
							],
							"name": "D",
							"nameLocation": "1132:1:0",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"baseFunctions": [
										21,
										33
									],
									"body": {
										"id": 50,
										"nodeType": "Block",
										"src": "1241:35:0",
										"statements": [
											{
												"expression": {
													"arguments": [],
													"expression": {
														"argumentTypes": [],
														"expression": {
															"id": 46,
															"name": "super",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 4294967271,
															"src": "1258:5:0",
															"typeDescriptions": {
																"typeIdentifier": "t_type$_t_super$_D_$52_$",
																"typeString": "type(contract super D)"
															}
														},
														"id": 47,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"lValueRequested": false,
														"memberName": "foo",
														"nodeType": "MemberAccess",
														"referencedDeclaration": 33,
														"src": "1258:9:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_internal_pure$__$returns$_t_string_memory_ptr_$",
															"typeString": "function () pure returns (string memory)"
														}
													},
													"id": 48,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "1258:11:0",
													"tryCall": false,
													"typeDescriptions": {
														"typeIdentifier": "t_string_memory_ptr",
														"typeString": "string memory"
													}
												},
												"functionReturnParameters": 45,
												"id": 49,
												"nodeType": "Return",
												"src": "1251:18:0"
											}
										]
									},
									"functionSelector": "c2985578",
									"id": 51,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "foo",
									"nameLocation": "1184:3:0",
									"nodeType": "FunctionDefinition",
									"overrides": {
										"id": 42,
										"nodeType": "OverrideSpecifier",
										"overrides": [
											{
												"id": 40,
												"name": "B",
												"nodeType": "IdentifierPath",
												"referencedDeclaration": 22,
												"src": "1211:1:0"
											},
											{
												"id": 41,
												"name": "C",
												"nodeType": "IdentifierPath",
												"referencedDeclaration": 34,
												"src": "1214:1:0"
											}
										],
										"src": "1202:14:0"
									},
									"parameters": {
										"id": 39,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "1187:2:0"
									},
									"returnParameters": {
										"id": 45,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 44,
												"mutability": "mutable",
												"name": "",
												"nameLocation": "-1:-1:-1",
												"nodeType": "VariableDeclaration",
												"scope": 51,
												"src": "1226:13:0",
												"stateVariable": false,
												"storageLocation": "memory",
												"typeDescriptions": {
													"typeIdentifier": "t_string_memory_ptr",
													"typeString": "string"
												},
												"typeName": {
													"id": 43,
													"name": "string",
													"nodeType": "ElementaryTypeName",
													"src": "1226:6:0",
													"typeDescriptions": {
														"typeIdentifier": "t_string_storage_ptr",
														"typeString": "string"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "1225:15:0"
									},
									"scope": 52,
									"src": "1175:101:0",
									"stateMutability": "pure",
									"virtual": false,
									"visibility": "public"
								}
							],
							"scope": 89,
							"src": "1123:155:0",
							"usedErrors": []
						},
						{
							"abstract": false,
							"baseContracts": [
								{
									"baseName": {
										"id": 53,
										"name": "C",
										"nodeType": "IdentifierPath",
										"referencedDeclaration": 34,
										"src": "1294:1:0"
									},
									"id": 54,
									"nodeType": "InheritanceSpecifier",
									"src": "1294:1:0"
								},
								{
									"baseName": {
										"id": 55,
										"name": "B",
										"nodeType": "IdentifierPath",
										"referencedDeclaration": 22,
										"src": "1297:1:0"
									},
									"id": 56,
									"nodeType": "InheritanceSpecifier",
									"src": "1297:1:0"
								}
							],
							"canonicalName": "E",
							"contractDependencies": [],
							"contractKind": "contract",
							"fullyImplemented": true,
							"id": 70,
							"linearizedBaseContracts": [
								70,
								22,
								34,
								10
							],
							"name": "E",
							"nameLocation": "1289:1:0",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"baseFunctions": [
										21,
										33
									],
									"body": {
										"id": 68,
										"nodeType": "Block",
										"src": "1398:35:0",
										"statements": [
											{
												"expression": {
													"arguments": [],
													"expression": {
														"argumentTypes": [],
														"expression": {
															"id": 64,
															"name": "super",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 4294967271,
															"src": "1415:5:0",
															"typeDescriptions": {
																"typeIdentifier": "t_type$_t_super$_E_$70_$",
																"typeString": "type(contract super E)"
															}
														},
														"id": 65,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"lValueRequested": false,
														"memberName": "foo",
														"nodeType": "MemberAccess",
														"referencedDeclaration": 21,
														"src": "1415:9:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_internal_pure$__$returns$_t_string_memory_ptr_$",
															"typeString": "function () pure returns (string memory)"
														}
													},
													"id": 66,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "1415:11:0",
													"tryCall": false,
													"typeDescriptions": {
														"typeIdentifier": "t_string_memory_ptr",
														"typeString": "string memory"
													}
												},
												"functionReturnParameters": 63,
												"id": 67,
												"nodeType": "Return",
												"src": "1408:18:0"
											}
										]
									},
									"functionSelector": "c2985578",
									"id": 69,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "foo",
									"nameLocation": "1341:3:0",
									"nodeType": "FunctionDefinition",
									"overrides": {
										"id": 60,
										"nodeType": "OverrideSpecifier",
										"overrides": [
											{
												"id": 58,
												"name": "C",
												"nodeType": "IdentifierPath",
												"referencedDeclaration": 34,
												"src": "1368:1:0"
											},
											{
												"id": 59,
												"name": "B",
												"nodeType": "IdentifierPath",
												"referencedDeclaration": 22,
												"src": "1371:1:0"
											}
										],
										"src": "1359:14:0"
									},
									"parameters": {
										"id": 57,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "1344:2:0"
									},
									"returnParameters": {
										"id": 63,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 62,
												"mutability": "mutable",
												"name": "",
												"nameLocation": "-1:-1:-1",
												"nodeType": "VariableDeclaration",
												"scope": 69,
												"src": "1383:13:0",
												"stateVariable": false,
												"storageLocation": "memory",
												"typeDescriptions": {
													"typeIdentifier": "t_string_memory_ptr",
													"typeString": "string"
												},
												"typeName": {
													"id": 61,
													"name": "string",
													"nodeType": "ElementaryTypeName",
													"src": "1383:6:0",
													"typeDescriptions": {
														"typeIdentifier": "t_string_storage_ptr",
														"typeString": "string"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "1382:15:0"
									},
									"scope": 70,
									"src": "1332:101:0",
									"stateMutability": "pure",
									"virtual": false,
									"visibility": "public"
								}
							],
							"scope": 89,
							"src": "1280:155:0",
							"usedErrors": []
						},
						{
							"abstract": false,
							"baseContracts": [
								{
									"baseName": {
										"id": 71,
										"name": "A",
										"nodeType": "IdentifierPath",
										"referencedDeclaration": 10,
										"src": "1596:1:0"
									},
									"id": 72,
									"nodeType": "InheritanceSpecifier",
									"src": "1596:1:0"
								},
								{
									"baseName": {
										"id": 73,
										"name": "B",
										"nodeType": "IdentifierPath",
										"referencedDeclaration": 22,
										"src": "1599:1:0"
									},
									"id": 74,
									"nodeType": "InheritanceSpecifier",
									"src": "1599:1:0"
								}
							],
							"canonicalName": "F",
							"contractDependencies": [],
							"contractKind": "contract",
							"fullyImplemented": true,
							"id": 88,
							"linearizedBaseContracts": [
								88,
								22,
								10
							],
							"name": "F",
							"nameLocation": "1591:1:0",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"baseFunctions": [
										9,
										21
									],
									"body": {
										"id": 86,
										"nodeType": "Block",
										"src": "1673:35:0",
										"statements": [
											{
												"expression": {
													"arguments": [],
													"expression": {
														"argumentTypes": [],
														"expression": {
															"id": 82,
															"name": "super",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 4294967271,
															"src": "1690:5:0",
															"typeDescriptions": {
																"typeIdentifier": "t_type$_t_super$_F_$88_$",
																"typeString": "type(contract super F)"
															}
														},
														"id": 83,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"lValueRequested": false,
														"memberName": "foo",
														"nodeType": "MemberAccess",
														"referencedDeclaration": 21,
														"src": "1690:9:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_internal_pure$__$returns$_t_string_memory_ptr_$",
															"typeString": "function () pure returns (string memory)"
														}
													},
													"id": 84,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "1690:11:0",
													"tryCall": false,
													"typeDescriptions": {
														"typeIdentifier": "t_string_memory_ptr",
														"typeString": "string memory"
													}
												},
												"functionReturnParameters": 81,
												"id": 85,
												"nodeType": "Return",
												"src": "1683:18:0"
											}
										]
									},
									"functionSelector": "c2985578",
									"id": 87,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "foo",
									"nameLocation": "1616:3:0",
									"nodeType": "FunctionDefinition",
									"overrides": {
										"id": 78,
										"nodeType": "OverrideSpecifier",
										"overrides": [
											{
												"id": 76,
												"name": "A",
												"nodeType": "IdentifierPath",
												"referencedDeclaration": 10,
												"src": "1643:1:0"
											},
											{
												"id": 77,
												"name": "B",
												"nodeType": "IdentifierPath",
												"referencedDeclaration": 22,
												"src": "1646:1:0"
											}
										],
										"src": "1634:14:0"
									},
									"parameters": {
										"id": 75,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "1619:2:0"
									},
									"returnParameters": {
										"id": 81,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 80,
												"mutability": "mutable",
												"name": "",
												"nameLocation": "-1:-1:-1",
												"nodeType": "VariableDeclaration",
												"scope": 87,
												"src": "1658:13:0",
												"stateVariable": false,
												"storageLocation": "memory",
												"typeDescriptions": {
													"typeIdentifier": "t_string_memory_ptr",
													"typeString": "string"
												},
												"typeName": {
													"id": 79,
													"name": "string",
													"nodeType": "ElementaryTypeName",
													"src": "1658:6:0",
													"typeDescriptions": {
														"typeIdentifier": "t_string_storage_ptr",
														"typeString": "string"
													}
												},
												"visibility": "internal"
											}
										],
										"src": "1657:15:0"
									},
									"scope": 88,
									"src": "1607:101:0",
									"stateMutability": "pure",
									"virtual": false,
									"visibility": "public"
								}
							],
							"scope": 89,
							"src": "1582:128:0",
							"usedErrors": []
						}
					],
					"src": "32:1678:0"
				},
				"id": 0
			}
		}
	}
}