diff --git a/Changelog.md b/Changelog.md index 2ff704505..5a1cfa9bf 100644 --- a/Changelog.md +++ b/Changelog.md @@ -12,6 +12,7 @@ Compiler Features: * SMTChecker: Support struct constructor. * SMTChecker: Support getters. * SMTChecker: Support early returns in the CHC engine. + * Standard-Json: Properly filter the requested output artifacts. Bugfixes: * Code generator: Do not pad empty string literals with a single 32-byte zero field in the ABI coder v1. diff --git a/libsolidity/interface/StandardCompiler.cpp b/libsolidity/interface/StandardCompiler.cpp index f3ba7db35..d46a01701 100644 --- a/libsolidity/interface/StandardCompiler.cpp +++ b/libsolidity/interface/StandardCompiler.cpp @@ -171,16 +171,21 @@ bool hashMatchesContent(string const& _hash, string const& _content) bool isArtifactRequested(Json::Value const& _outputSelection, string const& _artifact, bool _wildcardMatchesExperimental) { static set experimental{"ir", "irOptimized", "wast", "ewasm", "ewasm.wast"}; - for (auto const& artifact: _outputSelection) - /// @TODO support sub-matching, e.g "evm" matches "evm.assembly" - if (artifact == _artifact) + for (auto const& selectedArtifactJson: _outputSelection) + { + string const& selectedArtifact = selectedArtifactJson.asString(); + if ( + _artifact == selectedArtifact || + boost::algorithm::starts_with(_artifact, selectedArtifact + ".") + ) return true; - else if (artifact == "*") + else if (selectedArtifact == "*") { // "ir", "irOptimized", "wast" and "ewasm.wast" can only be matched by "*" if activated. if (experimental.count(_artifact) == 0 || _wildcardMatchesExperimental) return true; } + } return false; } @@ -370,17 +375,23 @@ Json::Value collectEVMObject( evmasm::LinkerObject const& _object, string const* _sourceMap, Json::Value _generatedSources, - bool _runtimeObject + bool _runtimeObject, + function const& _artifactRequested ) { Json::Value output = Json::objectValue; - output["object"] = _object.toHex(); - output["opcodes"] = evmasm::disassemble(_object.bytecode); - output["sourceMap"] = _sourceMap ? *_sourceMap : ""; - output["linkReferences"] = formatLinkReferences(_object.linkReferences); - if (_runtimeObject) + if (_artifactRequested("object")) + output["object"] = _object.toHex(); + if (_artifactRequested("opcodes")) + output["opcodes"] = evmasm::disassemble(_object.bytecode); + if (_artifactRequested("sourceMap")) + output["sourceMap"] = _sourceMap ? *_sourceMap : ""; + if (_artifactRequested("linkReferences")) + output["linkReferences"] = formatLinkReferences(_object.linkReferences); + if (_runtimeObject && _artifactRequested("immutableReferences")) output["immutableReferences"] = formatImmutableReferences(_object.immutableReferences); - output["generatedSources"] = move(_generatedSources); + if (_artifactRequested("generatedSources")) + output["generatedSources"] = move(_generatedSources); return output; } @@ -1147,7 +1158,14 @@ Json::Value StandardCompiler::compileSolidity(StandardCompiler::InputsAndSetting compilerStack.object(contractName), compilerStack.sourceMapping(contractName), compilerStack.generatedSources(contractName), - false + false, + [&](string const& _element) { return isArtifactRequested( + _inputsAndSettings.outputSelection, + file, + name, + "evm.bytecode." + _element, + wildcardMatchesExperimental + ); } ); if (compilationSuccess && isArtifactRequested( @@ -1161,7 +1179,14 @@ Json::Value StandardCompiler::compileSolidity(StandardCompiler::InputsAndSetting compilerStack.runtimeObject(contractName), compilerStack.runtimeSourceMapping(contractName), compilerStack.generatedSources(contractName, true), - true + true, + [&](string const& _element) { return isArtifactRequested( + _inputsAndSettings.outputSelection, + file, + name, + "evm.deployedBytecode." + _element, + wildcardMatchesExperimental + ); } ); if (!evmData.empty()) @@ -1258,7 +1283,19 @@ Json::Value StandardCompiler::compileYul(InputsAndSettings _inputsAndSettings) MachineAssemblyObject const& o = objectKind == "bytecode" ? object : runtimeObject; if (o.bytecode) output["contracts"][sourceName][contractName]["evm"][objectKind] = - collectEVMObject(*o.bytecode, o.sourceMappings.get(), Json::arrayValue, false); + collectEVMObject( + *o.bytecode, + o.sourceMappings.get(), + Json::arrayValue, + false, + [&](string const& _element) { return isArtifactRequested( + _inputsAndSettings.outputSelection, + sourceName, + contractName, + "evm." + objectKind + "." + _element, + wildcardMatchesExperimental + ); } + ); } if (isArtifactRequested(_inputsAndSettings.outputSelection, sourceName, contractName, "irOptimized", wildcardMatchesExperimental)) diff --git a/test/cmdlineTests/linking_standard_solidity/output.json b/test/cmdlineTests/linking_standard_solidity/output.json index 1cfa37405..acf3bbc00 100644 --- a/test/cmdlineTests/linking_standard_solidity/output.json +++ b/test/cmdlineTests/linking_standard_solidity/output.json @@ -1 +1 @@ -{"contracts":{"A":{"C":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}}},"sources":{"A":{"id":0}}} +{"contracts":{"A":{"C":{"evm":{"bytecode":{"linkReferences":{},"object":""}}}}},"sources":{"A":{"id":0}}} diff --git a/test/cmdlineTests/linking_standard_solidity_quote_in_file_name/output.json b/test/cmdlineTests/linking_standard_solidity_quote_in_file_name/output.json index f04e00b12..370772d7d 100644 --- a/test/cmdlineTests/linking_standard_solidity_quote_in_file_name/output.json +++ b/test/cmdlineTests/linking_standard_solidity_quote_in_file_name/output.json @@ -1 +1 @@ -{"contracts":{"A\"B":{"C":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}}},"sources":{"A\"B":{"id":0}}} +{"contracts":{"A\"B":{"C":{"evm":{"bytecode":{"linkReferences":{},"object":""}}}}},"sources":{"A\"B":{"id":0}}} diff --git a/test/cmdlineTests/linking_standard_solidity_unresolved_references/output.json b/test/cmdlineTests/linking_standard_solidity_unresolved_references/output.json index 620ca820e..65db86584 100644 --- a/test/cmdlineTests/linking_standard_solidity_unresolved_references/output.json +++ b/test/cmdlineTests/linking_standard_solidity_unresolved_references/output.json @@ -1 +1 @@ -{"contracts":{"A":{"C":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{"A":{"L2":[{"length":20,"start":184},{"length":20,"start":368}]}},"object":"__$622b2f540b6a16ff5db7bea656ad8fcf4f$____$622b2f540b6a16ff5db7bea656ad8fcf4f$__","opcodes":"","sourceMap":""}}}}},"sources":{"A":{"id":0}}} +{"contracts":{"A":{"C":{"evm":{"bytecode":{"linkReferences":{"A":{"L2":[{"length":20,"start":184},{"length":20,"start":368}]}},"object":"__$622b2f540b6a16ff5db7bea656ad8fcf4f$____$622b2f540b6a16ff5db7bea656ad8fcf4f$__"}}}}},"sources":{"A":{"id":0}}} diff --git a/test/cmdlineTests/linking_standard_yul/output.json b/test/cmdlineTests/linking_standard_yul/output.json index ec391c66c..7816df4ec 100644 --- a/test/cmdlineTests/linking_standard_yul/output.json +++ b/test/cmdlineTests/linking_standard_yul/output.json @@ -1 +1 @@ -{"contracts":{"A":{"a":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}}},"errors":[{"component":"general","formattedMessage":"Yul is still experimental. Please use the output with care.","message":"Yul is still experimental. Please use the output with care.","severity":"warning","type":"Warning"}]} +{"contracts":{"A":{"a":{"evm":{"bytecode":{"linkReferences":{},"object":""}}}}},"errors":[{"component":"general","formattedMessage":"Yul is still experimental. Please use the output with care.","message":"Yul is still experimental. Please use the output with care.","severity":"warning","type":"Warning"}]} diff --git a/test/cmdlineTests/linking_standard_yul_quote_in_file_name/output.json b/test/cmdlineTests/linking_standard_yul_quote_in_file_name/output.json index ec391c66c..7816df4ec 100644 --- a/test/cmdlineTests/linking_standard_yul_quote_in_file_name/output.json +++ b/test/cmdlineTests/linking_standard_yul_quote_in_file_name/output.json @@ -1 +1 @@ -{"contracts":{"A":{"a":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}}},"errors":[{"component":"general","formattedMessage":"Yul is still experimental. Please use the output with care.","message":"Yul is still experimental. Please use the output with care.","severity":"warning","type":"Warning"}]} +{"contracts":{"A":{"a":{"evm":{"bytecode":{"linkReferences":{},"object":""}}}}},"errors":[{"component":"general","formattedMessage":"Yul is still experimental. Please use the output with care.","message":"Yul is still experimental. Please use the output with care.","severity":"warning","type":"Warning"}]} diff --git a/test/cmdlineTests/linking_standard_yul_unresolved_references/output.json b/test/cmdlineTests/linking_standard_yul_unresolved_references/output.json index a79a5a1cc..4dab68351 100644 --- a/test/cmdlineTests/linking_standard_yul_unresolved_references/output.json +++ b/test/cmdlineTests/linking_standard_yul_unresolved_references/output.json @@ -1 +1 @@ -{"contracts":{"A":{"a":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{"contract/test.sol":{"L2":[{"length":20,"start":22}]}},"object":"__$fb58009a6b1ecea3b9d99bedd645df4ec3$__","opcodes":"","sourceMap":""}}}}},"errors":[{"component":"general","formattedMessage":"Yul is still experimental. Please use the output with care.","message":"Yul is still experimental. Please use the output with care.","severity":"warning","type":"Warning"}]} +{"contracts":{"A":{"a":{"evm":{"bytecode":{"linkReferences":{"contract/test.sol":{"L2":[{"length":20,"start":22}]}},"object":"__$fb58009a6b1ecea3b9d99bedd645df4ec3$__"}}}}},"errors":[{"component":"general","formattedMessage":"Yul is still experimental. Please use the output with care.","message":"Yul is still experimental. Please use the output with care.","severity":"warning","type":"Warning"}]} diff --git a/test/cmdlineTests/output_selection_all_A1/output.json b/test/cmdlineTests/output_selection_all_A1/output.json index 64c0d4e30..c84dee998 100644 --- a/test/cmdlineTests/output_selection_all_A1/output.json +++ b/test/cmdlineTests/output_selection_all_A1/output.json @@ -1,4 +1,4 @@ -{"contracts":{"a.sol":{"A1":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}},"b.sol":{"A1":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! +{"contracts":{"a.sol":{"A1":{"evm":{"bytecode":{"object":""}}}},"b.sol":{"A1":{"evm":{"bytecode":{"object":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"a.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"3420","formattedMessage":"b.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"b.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"b.sol:2:15: Warning: Function state mutability can be restricted to pure contract A1 { function b(uint x) public { assert(x > 0); } } contract B2 { function b(uint x) public pure { assert(x > 0); } } diff --git a/test/cmdlineTests/output_selection_all_A2/output.json b/test/cmdlineTests/output_selection_all_A2/output.json index 29c7ba76d..89f11e115 100644 --- a/test/cmdlineTests/output_selection_all_A2/output.json +++ b/test/cmdlineTests/output_selection_all_A2/output.json @@ -1,4 +1,4 @@ -{"contracts":{"a.sol":{"A2":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! +{"contracts":{"a.sol":{"A2":{"evm":{"bytecode":{"object":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"a.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"3420","formattedMessage":"b.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"b.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"b.sol:2:15: Warning: Function state mutability can be restricted to pure contract A1 { function b(uint x) public { assert(x > 0); } } contract B2 { function b(uint x) public pure { assert(x > 0); } } diff --git a/test/cmdlineTests/output_selection_all_star/output.json b/test/cmdlineTests/output_selection_all_star/output.json index 07a6641a5..23e3674d1 100644 --- a/test/cmdlineTests/output_selection_all_star/output.json +++ b/test/cmdlineTests/output_selection_all_star/output.json @@ -1,4 +1,4 @@ -{"contracts":{"a.sol":{"A1":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}},"A2":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}},"b.sol":{"A1":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}},"B2":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! +{"contracts":{"a.sol":{"A1":{"evm":{"bytecode":{"object":""}}},"A2":{"evm":{"bytecode":{"object":""}}}},"b.sol":{"A1":{"evm":{"bytecode":{"object":""}}},"B2":{"evm":{"bytecode":{"object":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"a.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"3420","formattedMessage":"b.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"b.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"b.sol:2:15: Warning: Function state mutability can be restricted to pure contract A1 { function b(uint x) public { assert(x > 0); } } contract B2 { function b(uint x) public pure { assert(x > 0); } } diff --git a/test/cmdlineTests/output_selection_single_A1/output.json b/test/cmdlineTests/output_selection_single_A1/output.json index 837fd36cd..69d923ad1 100644 --- a/test/cmdlineTests/output_selection_single_A1/output.json +++ b/test/cmdlineTests/output_selection_single_A1/output.json @@ -1,2 +1,2 @@ -{"contracts":{"a.sol":{"A1":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! +{"contracts":{"a.sol":{"A1":{"evm":{"bytecode":{"object":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"a.sol","start":-1},"type":"Warning"}],"sources":{"a.sol":{"id":0},"b.sol":{"id":1}}} diff --git a/test/cmdlineTests/output_selection_single_B1/output.json b/test/cmdlineTests/output_selection_single_B1/output.json index 9ba08193e..b38434823 100644 --- a/test/cmdlineTests/output_selection_single_B1/output.json +++ b/test/cmdlineTests/output_selection_single_B1/output.json @@ -1,4 +1,4 @@ -{"contracts":{"b.sol":{"B2":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"b.sol: Warning: Source file does not specify required compiler version! +{"contracts":{"b.sol":{"B2":{"evm":{"bytecode":{"object":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"b.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"b.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"b.sol:2:15: Warning: Function state mutability can be restricted to pure contract A1 { function b(uint x) public { assert(x > 0); } } contract B2 { function b(uint x) public pure { assert(x > 0); } } ^------------------------------------------^ diff --git a/test/cmdlineTests/output_selection_single_all/output.json b/test/cmdlineTests/output_selection_single_all/output.json index c0a48b617..4c5fbb6d6 100644 --- a/test/cmdlineTests/output_selection_single_all/output.json +++ b/test/cmdlineTests/output_selection_single_all/output.json @@ -1,2 +1,2 @@ -{"contracts":{"a.sol":{"A1":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}},"A2":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! +{"contracts":{"a.sol":{"A1":{"evm":{"bytecode":{"object":""}}},"A2":{"evm":{"bytecode":{"object":""}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"a.sol","start":-1},"type":"Warning"}],"sources":{"a.sol":{"id":0},"b.sol":{"id":1}}} diff --git a/test/cmdlineTests/standard_generatedSources/output.json b/test/cmdlineTests/standard_generatedSources/output.json index 614db9e0c..9fa322316 100644 --- a/test/cmdlineTests/standard_generatedSources/output.json +++ b/test/cmdlineTests/standard_generatedSources/output.json @@ -1,4 +1,4 @@ -{"contracts":{"a.sol":{"A":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2744:1","statements":[{"body":{"nodeType":"YulBlock","src":"126:520:1","statements":[{"nodeType":"YulAssignment","src":"136:89:1","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"217:6:1"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"160:56:1"},"nodeType":"YulFunctionCall","src":"160:64:1"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"145:14:1"},"nodeType":"YulFunctionCall","src":"145:80:1"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"136:5:1"}]},{"nodeType":"YulVariableDeclaration","src":"234:16:1","value":{"name":"array","nodeType":"YulIdentifier","src":"245:5:1"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"238:3:1","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"266:5:1"},{"name":"length","nodeType":"YulIdentifier","src":"273:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"259:6:1"},"nodeType":"YulFunctionCall","src":"259:21:1"},"nodeType":"YulExpressionStatement","src":"259:21:1"},{"nodeType":"YulAssignment","src":"281:23:1","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"292:5:1"},{"kind":"number","nodeType":"YulLiteral","src":"299:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"288:3:1"},"nodeType":"YulFunctionCall","src":"288:16:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"281:3:1"}]},{"nodeType":"YulVariableDeclaration","src":"313:17:1","value":{"name":"offset","nodeType":"YulIdentifier","src":"324:6:1"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"317:3:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"379:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"388:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"391:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"381:6:1"},"nodeType":"YulFunctionCall","src":"381:12:1"},"nodeType":"YulExpressionStatement","src":"381:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"349:3:1"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"358:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"366:4:1","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"354:3:1"},"nodeType":"YulFunctionCall","src":"354:17:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:1"},"nodeType":"YulFunctionCall","src":"345:27:1"},{"name":"end","nodeType":"YulIdentifier","src":"374:3:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"342:2:1"},"nodeType":"YulFunctionCall","src":"342:36:1"},"nodeType":"YulIf","src":"339:2:1"},{"body":{"nodeType":"YulBlock","src":"464:176:1","statements":[{"nodeType":"YulVariableDeclaration","src":"478:21:1","value":{"name":"src","nodeType":"YulIdentifier","src":"496:3:1"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"482:10:1","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"519:3:1"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"545:10:1"},{"name":"end","nodeType":"YulIdentifier","src":"557:3:1"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"524:20:1"},"nodeType":"YulFunctionCall","src":"524:37:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"512:6:1"},"nodeType":"YulFunctionCall","src":"512:50:1"},"nodeType":"YulExpressionStatement","src":"512:50:1"},{"nodeType":"YulAssignment","src":"575:21:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"586:3:1"},{"kind":"number","nodeType":"YulLiteral","src":"591:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"582:3:1"},"nodeType":"YulFunctionCall","src":"582:14:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"575:3:1"}]},{"nodeType":"YulAssignment","src":"609:21:1","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"620:3:1"},{"kind":"number","nodeType":"YulLiteral","src":"625:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"616:3:1"},"nodeType":"YulFunctionCall","src":"616:14:1"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"609:3:1"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"426:1:1"},{"name":"length","nodeType":"YulIdentifier","src":"429:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"423:2:1"},"nodeType":"YulFunctionCall","src":"423:13:1"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"437:18:1","statements":[{"nodeType":"YulAssignment","src":"439:14:1","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"448:1:1"},{"kind":"number","nodeType":"YulLiteral","src":"451:1:1","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"444:3:1"},"nodeType":"YulFunctionCall","src":"444:9:1"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"439:1:1"}]}]},"pre":{"nodeType":"YulBlock","src":"408:14:1","statements":[{"nodeType":"YulVariableDeclaration","src":"410:10:1","value":{"kind":"number","nodeType":"YulLiteral","src":"419:1:1","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"414:1:1","type":""}]}]},"src":"404:236:1"}]},"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"96:6:1","type":""},{"name":"length","nodeType":"YulTypedName","src":"104:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"112:3:1","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"120:5:1","type":""}],"src":"24:622:1"},{"body":{"nodeType":"YulBlock","src":"746:226:1","statements":[{"body":{"nodeType":"YulBlock","src":"795:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"804:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"807:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"797:6:1"},"nodeType":"YulFunctionCall","src":"797:12:1"},"nodeType":"YulExpressionStatement","src":"797:12:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"774:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"782:4:1","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"770:3:1"},"nodeType":"YulFunctionCall","src":"770:17:1"},{"name":"end","nodeType":"YulIdentifier","src":"789:3:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"766:3:1"},"nodeType":"YulFunctionCall","src":"766:27:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"759:6:1"},"nodeType":"YulFunctionCall","src":"759:35:1"},"nodeType":"YulIf","src":"756:2:1"},{"nodeType":"YulVariableDeclaration","src":"820:34:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"847:6:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"834:12:1"},"nodeType":"YulFunctionCall","src":"834:20:1"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"824:6:1","type":""}]},{"nodeType":"YulAssignment","src":"863:103:1","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"939:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"947:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"935:3:1"},"nodeType":"YulFunctionCall","src":"935:17:1"},{"name":"length","nodeType":"YulIdentifier","src":"954:6:1"},{"name":"end","nodeType":"YulIdentifier","src":"962:3:1"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"872:62:1"},"nodeType":"YulFunctionCall","src":"872:94:1"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"863:5:1"}]}]},"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"724:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"732:3:1","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"740:5:1","type":""}],"src":"669:303:1"},{"body":{"nodeType":"YulBlock","src":"1030:87:1","statements":[{"nodeType":"YulAssignment","src":"1040:29:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1062:6:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1049:12:1"},"nodeType":"YulFunctionCall","src":"1049:20:1"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1040:5:1"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1105:5:1"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1078:26:1"},"nodeType":"YulFunctionCall","src":"1078:33:1"},"nodeType":"YulExpressionStatement","src":"1078:33:1"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1008:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"1016:3:1","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1024:5:1","type":""}],"src":"978:139:1"},{"body":{"nodeType":"YulBlock","src":"1214:314:1","statements":[{"body":{"nodeType":"YulBlock","src":"1260:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1269:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1272:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1262:6:1"},"nodeType":"YulFunctionCall","src":"1262:12:1"},"nodeType":"YulExpressionStatement","src":"1262:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1235:7:1"},{"name":"headStart","nodeType":"YulIdentifier","src":"1244:9:1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1231:3:1"},"nodeType":"YulFunctionCall","src":"1231:23:1"},{"kind":"number","nodeType":"YulLiteral","src":"1256:2:1","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1227:3:1"},"nodeType":"YulFunctionCall","src":"1227:32:1"},"nodeType":"YulIf","src":"1224:2:1"},{"nodeType":"YulBlock","src":"1286:235:1","statements":[{"nodeType":"YulVariableDeclaration","src":"1301:45:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1332:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1343:1:1","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1328:3:1"},"nodeType":"YulFunctionCall","src":"1328:17:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1315:12:1"},"nodeType":"YulFunctionCall","src":"1315:31:1"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1305:6:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"1393:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1402:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1405:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1395:6:1"},"nodeType":"YulFunctionCall","src":"1395:12:1"},"nodeType":"YulExpressionStatement","src":"1395:12:1"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1365:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"1373:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1362:2:1"},"nodeType":"YulFunctionCall","src":"1362:30:1"},"nodeType":"YulIf","src":"1359:2:1"},{"nodeType":"YulAssignment","src":"1423:88:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1483:9:1"},{"name":"offset","nodeType":"YulIdentifier","src":"1494:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:1"},"nodeType":"YulFunctionCall","src":"1479:22:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1503:7:1"}],"functionName":{"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"1433:45:1"},"nodeType":"YulFunctionCall","src":"1433:78:1"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1423:6:1"}]}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1184:9:1","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1195:7:1","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1207:6:1","type":""}],"src":"1123:405:1"},{"body":{"nodeType":"YulBlock","src":"1599:53:1","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1616:3:1"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1639:5:1"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"1621:17:1"},"nodeType":"YulFunctionCall","src":"1621:24:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1609:6:1"},"nodeType":"YulFunctionCall","src":"1609:37:1"},"nodeType":"YulExpressionStatement","src":"1609:37:1"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1587:5:1","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1594:3:1","type":""}],"src":"1534:118:1"},{"body":{"nodeType":"YulBlock","src":"1756:124:1","statements":[{"nodeType":"YulAssignment","src":"1766:26:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1778:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1789:2:1","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1774:3:1"},"nodeType":"YulFunctionCall","src":"1774:18:1"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1766:4:1"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1846:6:1"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1859:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1870:1:1","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1855:3:1"},"nodeType":"YulFunctionCall","src":"1855:17:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"1802:43:1"},"nodeType":"YulFunctionCall","src":"1802:71:1"},"nodeType":"YulExpressionStatement","src":"1802:71:1"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1728:9:1","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1740:6:1","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1751:4:1","type":""}],"src":"1658:222:1"},{"body":{"nodeType":"YulBlock","src":"1926:238:1","statements":[{"nodeType":"YulAssignment","src":"1936:19:1","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1952:2:1","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1946:5:1"},"nodeType":"YulFunctionCall","src":"1946:9:1"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1936:6:1"}]},{"nodeType":"YulVariableDeclaration","src":"1964:35:1","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1986:6:1"},{"name":"size","nodeType":"YulIdentifier","src":"1994:4:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1982:3:1"},"nodeType":"YulFunctionCall","src":"1982:17:1"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1968:10:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"2110:17:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error","nodeType":"YulIdentifier","src":"2112:11:1"},"nodeType":"YulFunctionCall","src":"2112:13:1"},"nodeType":"YulExpressionStatement","src":"2112:13:1"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2053:10:1"},{"kind":"number","nodeType":"YulLiteral","src":"2065:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2050:2:1"},"nodeType":"YulFunctionCall","src":"2050:34:1"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2089:10:1"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2101:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2086:2:1"},"nodeType":"YulFunctionCall","src":"2086:22:1"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2047:2:1"},"nodeType":"YulFunctionCall","src":"2047:62:1"},"nodeType":"YulIf","src":"2044:2:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2143:2:1","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2147:10:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2136:6:1"},"nodeType":"YulFunctionCall","src":"2136:22:1"},"nodeType":"YulExpressionStatement","src":"2136:22:1"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1910:4:1","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1919:6:1","type":""}],"src":"1886:278:1"},{"body":{"nodeType":"YulBlock","src":"2252:224:1","statements":[{"body":{"nodeType":"YulBlock","src":"2357:17:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error","nodeType":"YulIdentifier","src":"2359:11:1"},"nodeType":"YulFunctionCall","src":"2359:13:1"},"nodeType":"YulExpressionStatement","src":"2359:13:1"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2329:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"2337:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2326:2:1"},"nodeType":"YulFunctionCall","src":"2326:30:1"},"nodeType":"YulIf","src":"2323:2:1"},{"nodeType":"YulAssignment","src":"2384:25:1","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2396:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"2404:4:1","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2392:3:1"},"nodeType":"YulFunctionCall","src":"2392:17:1"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2384:4:1"}]},{"nodeType":"YulAssignment","src":"2446:23:1","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2458:4:1"},{"kind":"number","nodeType":"YulLiteral","src":"2464:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2454:3:1"},"nodeType":"YulFunctionCall","src":"2454:15:1"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2446:4:1"}]}]},"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"2236:6:1","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"2247:4:1","type":""}],"src":"2170:306:1"},{"body":{"nodeType":"YulBlock","src":"2527:32:1","statements":[{"nodeType":"YulAssignment","src":"2537:16:1","value":{"name":"value","nodeType":"YulIdentifier","src":"2548:5:1"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2537:7:1"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2509:5:1","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2519:7:1","type":""}],"src":"2482:77:1"},{"body":{"nodeType":"YulBlock","src":"2588:25:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"2598:7:1"},"nodeType":"YulFunctionCall","src":"2598:9:1"},"nodeType":"YulExpressionStatement","src":"2598:9:1"}]},"name":"panic_error","nodeType":"YulFunctionDefinition","src":"2565:48:1"},{"body":{"nodeType":"YulBlock","src":"2662:79:1","statements":[{"body":{"nodeType":"YulBlock","src":"2719:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2728:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2731:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2721:6:1"},"nodeType":"YulFunctionCall","src":"2721:12:1"},"nodeType":"YulExpressionStatement","src":"2721:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2685:5:1"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2710:5:1"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2692:17:1"},"nodeType":"YulFunctionCall","src":"2692:24:1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2682:2:1"},"nodeType":"YulFunctionCall","src":"2682:35:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2675:6:1"},"nodeType":"YulFunctionCall","src":"2675:43:1"},"nodeType":"YulIf","src":"2672:2:1"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2655:5:1","type":""}],"src":"2619:122:1"}]},"contents":"{ +{"contracts":{"a.sol":{"A":{"evm":{"bytecode":{"generatedSources":[],"object":""},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2744:1","statements":[{"body":{"nodeType":"YulBlock","src":"126:520:1","statements":[{"nodeType":"YulAssignment","src":"136:89:1","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"217:6:1"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"160:56:1"},"nodeType":"YulFunctionCall","src":"160:64:1"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"145:14:1"},"nodeType":"YulFunctionCall","src":"145:80:1"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"136:5:1"}]},{"nodeType":"YulVariableDeclaration","src":"234:16:1","value":{"name":"array","nodeType":"YulIdentifier","src":"245:5:1"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"238:3:1","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"266:5:1"},{"name":"length","nodeType":"YulIdentifier","src":"273:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"259:6:1"},"nodeType":"YulFunctionCall","src":"259:21:1"},"nodeType":"YulExpressionStatement","src":"259:21:1"},{"nodeType":"YulAssignment","src":"281:23:1","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"292:5:1"},{"kind":"number","nodeType":"YulLiteral","src":"299:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"288:3:1"},"nodeType":"YulFunctionCall","src":"288:16:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"281:3:1"}]},{"nodeType":"YulVariableDeclaration","src":"313:17:1","value":{"name":"offset","nodeType":"YulIdentifier","src":"324:6:1"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"317:3:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"379:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"388:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"391:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"381:6:1"},"nodeType":"YulFunctionCall","src":"381:12:1"},"nodeType":"YulExpressionStatement","src":"381:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"349:3:1"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"358:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"366:4:1","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"354:3:1"},"nodeType":"YulFunctionCall","src":"354:17:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:1"},"nodeType":"YulFunctionCall","src":"345:27:1"},{"name":"end","nodeType":"YulIdentifier","src":"374:3:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"342:2:1"},"nodeType":"YulFunctionCall","src":"342:36:1"},"nodeType":"YulIf","src":"339:2:1"},{"body":{"nodeType":"YulBlock","src":"464:176:1","statements":[{"nodeType":"YulVariableDeclaration","src":"478:21:1","value":{"name":"src","nodeType":"YulIdentifier","src":"496:3:1"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"482:10:1","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"519:3:1"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"545:10:1"},{"name":"end","nodeType":"YulIdentifier","src":"557:3:1"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"524:20:1"},"nodeType":"YulFunctionCall","src":"524:37:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"512:6:1"},"nodeType":"YulFunctionCall","src":"512:50:1"},"nodeType":"YulExpressionStatement","src":"512:50:1"},{"nodeType":"YulAssignment","src":"575:21:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"586:3:1"},{"kind":"number","nodeType":"YulLiteral","src":"591:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"582:3:1"},"nodeType":"YulFunctionCall","src":"582:14:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"575:3:1"}]},{"nodeType":"YulAssignment","src":"609:21:1","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"620:3:1"},{"kind":"number","nodeType":"YulLiteral","src":"625:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"616:3:1"},"nodeType":"YulFunctionCall","src":"616:14:1"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"609:3:1"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"426:1:1"},{"name":"length","nodeType":"YulIdentifier","src":"429:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"423:2:1"},"nodeType":"YulFunctionCall","src":"423:13:1"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"437:18:1","statements":[{"nodeType":"YulAssignment","src":"439:14:1","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"448:1:1"},{"kind":"number","nodeType":"YulLiteral","src":"451:1:1","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"444:3:1"},"nodeType":"YulFunctionCall","src":"444:9:1"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"439:1:1"}]}]},"pre":{"nodeType":"YulBlock","src":"408:14:1","statements":[{"nodeType":"YulVariableDeclaration","src":"410:10:1","value":{"kind":"number","nodeType":"YulLiteral","src":"419:1:1","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"414:1:1","type":""}]}]},"src":"404:236:1"}]},"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"96:6:1","type":""},{"name":"length","nodeType":"YulTypedName","src":"104:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"112:3:1","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"120:5:1","type":""}],"src":"24:622:1"},{"body":{"nodeType":"YulBlock","src":"746:226:1","statements":[{"body":{"nodeType":"YulBlock","src":"795:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"804:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"807:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"797:6:1"},"nodeType":"YulFunctionCall","src":"797:12:1"},"nodeType":"YulExpressionStatement","src":"797:12:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"774:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"782:4:1","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"770:3:1"},"nodeType":"YulFunctionCall","src":"770:17:1"},{"name":"end","nodeType":"YulIdentifier","src":"789:3:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"766:3:1"},"nodeType":"YulFunctionCall","src":"766:27:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"759:6:1"},"nodeType":"YulFunctionCall","src":"759:35:1"},"nodeType":"YulIf","src":"756:2:1"},{"nodeType":"YulVariableDeclaration","src":"820:34:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"847:6:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"834:12:1"},"nodeType":"YulFunctionCall","src":"834:20:1"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"824:6:1","type":""}]},{"nodeType":"YulAssignment","src":"863:103:1","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"939:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"947:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"935:3:1"},"nodeType":"YulFunctionCall","src":"935:17:1"},{"name":"length","nodeType":"YulIdentifier","src":"954:6:1"},{"name":"end","nodeType":"YulIdentifier","src":"962:3:1"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"872:62:1"},"nodeType":"YulFunctionCall","src":"872:94:1"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"863:5:1"}]}]},"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"724:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"732:3:1","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"740:5:1","type":""}],"src":"669:303:1"},{"body":{"nodeType":"YulBlock","src":"1030:87:1","statements":[{"nodeType":"YulAssignment","src":"1040:29:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1062:6:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1049:12:1"},"nodeType":"YulFunctionCall","src":"1049:20:1"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1040:5:1"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1105:5:1"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1078:26:1"},"nodeType":"YulFunctionCall","src":"1078:33:1"},"nodeType":"YulExpressionStatement","src":"1078:33:1"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1008:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"1016:3:1","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1024:5:1","type":""}],"src":"978:139:1"},{"body":{"nodeType":"YulBlock","src":"1214:314:1","statements":[{"body":{"nodeType":"YulBlock","src":"1260:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1269:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1272:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1262:6:1"},"nodeType":"YulFunctionCall","src":"1262:12:1"},"nodeType":"YulExpressionStatement","src":"1262:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1235:7:1"},{"name":"headStart","nodeType":"YulIdentifier","src":"1244:9:1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1231:3:1"},"nodeType":"YulFunctionCall","src":"1231:23:1"},{"kind":"number","nodeType":"YulLiteral","src":"1256:2:1","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1227:3:1"},"nodeType":"YulFunctionCall","src":"1227:32:1"},"nodeType":"YulIf","src":"1224:2:1"},{"nodeType":"YulBlock","src":"1286:235:1","statements":[{"nodeType":"YulVariableDeclaration","src":"1301:45:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1332:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1343:1:1","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1328:3:1"},"nodeType":"YulFunctionCall","src":"1328:17:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1315:12:1"},"nodeType":"YulFunctionCall","src":"1315:31:1"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1305:6:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"1393:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1402:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1405:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1395:6:1"},"nodeType":"YulFunctionCall","src":"1395:12:1"},"nodeType":"YulExpressionStatement","src":"1395:12:1"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1365:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"1373:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1362:2:1"},"nodeType":"YulFunctionCall","src":"1362:30:1"},"nodeType":"YulIf","src":"1359:2:1"},{"nodeType":"YulAssignment","src":"1423:88:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1483:9:1"},{"name":"offset","nodeType":"YulIdentifier","src":"1494:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:1"},"nodeType":"YulFunctionCall","src":"1479:22:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1503:7:1"}],"functionName":{"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"1433:45:1"},"nodeType":"YulFunctionCall","src":"1433:78:1"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1423:6:1"}]}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1184:9:1","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1195:7:1","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1207:6:1","type":""}],"src":"1123:405:1"},{"body":{"nodeType":"YulBlock","src":"1599:53:1","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1616:3:1"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1639:5:1"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"1621:17:1"},"nodeType":"YulFunctionCall","src":"1621:24:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1609:6:1"},"nodeType":"YulFunctionCall","src":"1609:37:1"},"nodeType":"YulExpressionStatement","src":"1609:37:1"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1587:5:1","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1594:3:1","type":""}],"src":"1534:118:1"},{"body":{"nodeType":"YulBlock","src":"1756:124:1","statements":[{"nodeType":"YulAssignment","src":"1766:26:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1778:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1789:2:1","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1774:3:1"},"nodeType":"YulFunctionCall","src":"1774:18:1"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1766:4:1"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1846:6:1"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1859:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1870:1:1","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1855:3:1"},"nodeType":"YulFunctionCall","src":"1855:17:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"1802:43:1"},"nodeType":"YulFunctionCall","src":"1802:71:1"},"nodeType":"YulExpressionStatement","src":"1802:71:1"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1728:9:1","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1740:6:1","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1751:4:1","type":""}],"src":"1658:222:1"},{"body":{"nodeType":"YulBlock","src":"1926:238:1","statements":[{"nodeType":"YulAssignment","src":"1936:19:1","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1952:2:1","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1946:5:1"},"nodeType":"YulFunctionCall","src":"1946:9:1"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1936:6:1"}]},{"nodeType":"YulVariableDeclaration","src":"1964:35:1","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1986:6:1"},{"name":"size","nodeType":"YulIdentifier","src":"1994:4:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1982:3:1"},"nodeType":"YulFunctionCall","src":"1982:17:1"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1968:10:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"2110:17:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error","nodeType":"YulIdentifier","src":"2112:11:1"},"nodeType":"YulFunctionCall","src":"2112:13:1"},"nodeType":"YulExpressionStatement","src":"2112:13:1"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2053:10:1"},{"kind":"number","nodeType":"YulLiteral","src":"2065:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2050:2:1"},"nodeType":"YulFunctionCall","src":"2050:34:1"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2089:10:1"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2101:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2086:2:1"},"nodeType":"YulFunctionCall","src":"2086:22:1"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2047:2:1"},"nodeType":"YulFunctionCall","src":"2047:62:1"},"nodeType":"YulIf","src":"2044:2:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2143:2:1","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2147:10:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2136:6:1"},"nodeType":"YulFunctionCall","src":"2136:22:1"},"nodeType":"YulExpressionStatement","src":"2136:22:1"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1910:4:1","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1919:6:1","type":""}],"src":"1886:278:1"},{"body":{"nodeType":"YulBlock","src":"2252:224:1","statements":[{"body":{"nodeType":"YulBlock","src":"2357:17:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error","nodeType":"YulIdentifier","src":"2359:11:1"},"nodeType":"YulFunctionCall","src":"2359:13:1"},"nodeType":"YulExpressionStatement","src":"2359:13:1"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2329:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"2337:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2326:2:1"},"nodeType":"YulFunctionCall","src":"2326:30:1"},"nodeType":"YulIf","src":"2323:2:1"},{"nodeType":"YulAssignment","src":"2384:25:1","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2396:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"2404:4:1","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2392:3:1"},"nodeType":"YulFunctionCall","src":"2392:17:1"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2384:4:1"}]},{"nodeType":"YulAssignment","src":"2446:23:1","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2458:4:1"},{"kind":"number","nodeType":"YulLiteral","src":"2464:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2454:3:1"},"nodeType":"YulFunctionCall","src":"2454:15:1"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2446:4:1"}]}]},"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"2236:6:1","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"2247:4:1","type":""}],"src":"2170:306:1"},{"body":{"nodeType":"YulBlock","src":"2527:32:1","statements":[{"nodeType":"YulAssignment","src":"2537:16:1","value":{"name":"value","nodeType":"YulIdentifier","src":"2548:5:1"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2537:7:1"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2509:5:1","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2519:7:1","type":""}],"src":"2482:77:1"},{"body":{"nodeType":"YulBlock","src":"2588:25:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"2598:7:1"},"nodeType":"YulFunctionCall","src":"2598:9:1"},"nodeType":"YulExpressionStatement","src":"2598:9:1"}]},"name":"panic_error","nodeType":"YulFunctionDefinition","src":"2565:48:1"},{"body":{"nodeType":"YulBlock","src":"2662:79:1","statements":[{"body":{"nodeType":"YulBlock","src":"2719:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2728:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2731:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2721:6:1"},"nodeType":"YulFunctionCall","src":"2721:12:1"},"nodeType":"YulExpressionStatement","src":"2721:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2685:5:1"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2710:5:1"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2692:17:1"},"nodeType":"YulFunctionCall","src":"2692:24:1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2682:2:1"},"nodeType":"YulFunctionCall","src":"2682:35:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2675:6:1"},"nodeType":"YulFunctionCall","src":"2675:43:1"},"nodeType":"YulIf","src":"2672:2:1"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2655:5:1","type":""}],"src":"2619:122:1"}]},"contents":"{ // uint256[] function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(offset, length, end) -> array { @@ -84,5 +84,5 @@ } } -","id":1,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":"56:74:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;69:59;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;116:7;69:59;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;669:303::-;;789:3;782:4;774:6;770:17;766:27;756:2;;807:1;804;797:12;756:2;847:6;834:20;872:94;962:3;954:6;947:4;939:6;935:17;872:94;:::i;:::-;863:103;;746:226;;;;;:::o;978:139::-;;1062:6;1049:20;1040:29;;1078:33;1105:5;1078:33;:::i;:::-;1030:87;;;;:::o;1123:405::-;;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1272:1;1269;1262:12;1224:2;1343:1;1332:9;1328:17;1315:31;1373:18;1365:6;1362:30;1359:2;;;1405:1;1402;1395:12;1359:2;1433:78;1503:7;1494:6;1483:9;1479:22;1433:78;:::i;:::-;1423:88;;1286:235;1214:314;;;;:::o;1534:118::-;1621:24;1639:5;1621:24;:::i;:::-;1616:3;1609:37;1599:53;;:::o;1658:222::-;;1789:2;1778:9;1774:18;1766:26;;1802:71;1870:1;1859:9;1855:17;1846:6;1802:71;:::i;:::-;1756:124;;;;:::o;1886:278::-;;1952:2;1946:9;1936:19;;1994:4;1986:6;1982:17;2101:6;2089:10;2086:22;2065:18;2053:10;2050:34;2047:62;2044:2;;;2112:13;;:::i;:::-;2044:2;2147:10;2143:2;2136:22;1926:238;;;;:::o;2170:306::-;;2337:18;2329:6;2326:30;2323:2;;;2359:13;;:::i;:::-;2323:2;2404:4;2396:6;2392:17;2384:25;;2464:4;2458;2454:15;2446:23;;2252:224;;;:::o;2482:77::-;;2548:5;2537:16;;2527:32;;;:::o;2565:48::-;2598:9;2619:122;2692:24;2710:5;2692:24;:::i;:::-;2685:5;2682:35;2672:2;;2731:1;2728;2721:12;2672:2;2662:79;:::o"}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! +","id":1,"language":"Yul","name":"#utility.yul"}]}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"a.sol","start":-1},"type":"Warning"}],"sources":{"a.sol":{"id":0}}} diff --git a/test/cmdlineTests/standard_immutable_references/output.json b/test/cmdlineTests/standard_immutable_references/output.json index 2e17184ef..f7af4bf93 100644 --- a/test/cmdlineTests/standard_immutable_references/output.json +++ b/test/cmdlineTests/standard_immutable_references/output.json @@ -1,2 +1,2 @@ -{"contracts":{"a.sol":{"A":{"evm":{"deployedBytecode":{"generatedSources":[],"immutableReferences":{"5":[{"length":32,"start":77}]},"linkReferences":{},"object":"","opcodes":"","sourceMap":"36:100:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;78:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;112:7;130:1;123:8;;78:56;:::o"}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! +{"contracts":{"a.sol":{"A":{"evm":{"deployedBytecode":{"immutableReferences":{"5":[{"length":32,"start":77}]}}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"a.sol","start":-1},"type":"Warning"}],"sources":{"a.sol":{"id":0}}} diff --git a/test/cmdlineTests/standard_optimizer_generatedSources/output.json b/test/cmdlineTests/standard_optimizer_generatedSources/output.json index a3521f53f..0bc551684 100644 --- a/test/cmdlineTests/standard_optimizer_generatedSources/output.json +++ b/test/cmdlineTests/standard_optimizer_generatedSources/output.json @@ -1,4 +1,4 @@ -{"contracts":{"a.sol":{"A":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1338:1","statements":[{"nodeType":"YulBlock","src":"6:3:1","statements":[]},{"body":{"nodeType":"YulBlock","src":"109:1045:1","statements":[{"nodeType":"YulVariableDeclaration","src":"119:12:1","value":{"kind":"number","nodeType":"YulLiteral","src":"129:2:1","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"123:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"185:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"193:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"178:6:1"},"nodeType":"YulFunctionCall","src":"178:22:1"},"nodeType":"YulExpressionStatement","src":"178:22:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"151:7:1"},{"name":"headStart","nodeType":"YulIdentifier","src":"160:9:1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"147:3:1"},"nodeType":"YulFunctionCall","src":"147:23:1"},{"name":"_1","nodeType":"YulIdentifier","src":"172:2:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"143:3:1"},"nodeType":"YulFunctionCall","src":"143:32:1"},"nodeType":"YulIf","src":"140:2:1"},{"nodeType":"YulVariableDeclaration","src":"211:37:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"238:9:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"225:12:1"},"nodeType":"YulFunctionCall","src":"225:23:1"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"215:6:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"257:28:1","value":{"kind":"number","nodeType":"YulLiteral","src":"267:18:1","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"261:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"312:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"321:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"329:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"314:6:1"},"nodeType":"YulFunctionCall","src":"314:22:1"},"nodeType":"YulExpressionStatement","src":"314:22:1"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:1"},{"name":"_2","nodeType":"YulIdentifier","src":"308:2:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"297:2:1"},"nodeType":"YulFunctionCall","src":"297:14:1"},"nodeType":"YulIf","src":"294:2:1"},{"nodeType":"YulVariableDeclaration","src":"347:32:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"361:9:1"},{"name":"offset","nodeType":"YulIdentifier","src":"372:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"357:3:1"},"nodeType":"YulFunctionCall","src":"357:22:1"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"351:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"427:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"436:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"444:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"429:6:1"},"nodeType":"YulFunctionCall","src":"429:22:1"},"nodeType":"YulExpressionStatement","src":"429:22:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"406:2:1"},{"kind":"number","nodeType":"YulLiteral","src":"410:4:1","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"402:3:1"},"nodeType":"YulFunctionCall","src":"402:13:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"417:7:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"398:3:1"},"nodeType":"YulFunctionCall","src":"398:27:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"391:6:1"},"nodeType":"YulFunctionCall","src":"391:35:1"},"nodeType":"YulIf","src":"388:2:1"},{"nodeType":"YulVariableDeclaration","src":"462:26:1","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"485:2:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"472:12:1"},"nodeType":"YulFunctionCall","src":"472:16:1"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"466:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"511:13:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"513:7:1"},"nodeType":"YulFunctionCall","src":"513:9:1"},"nodeType":"YulExpressionStatement","src":"513:9:1"}]},"condition":{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"503:2:1"},{"name":"_2","nodeType":"YulIdentifier","src":"507:2:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"500:2:1"},"nodeType":"YulFunctionCall","src":"500:10:1"},"nodeType":"YulIf","src":"497:2:1"},{"nodeType":"YulVariableDeclaration","src":"533:21:1","value":{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"547:2:1"},{"name":"_1","nodeType":"YulIdentifier","src":"551:2:1"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"543:3:1"},"nodeType":"YulFunctionCall","src":"543:11:1"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"537:2:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"563:23:1","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"583:2:1","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"577:5:1"},"nodeType":"YulFunctionCall","src":"577:9:1"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"567:6:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"595:42:1","value":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"621:6:1"},{"name":"_5","nodeType":"YulIdentifier","src":"629:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"617:3:1"},"nodeType":"YulFunctionCall","src":"617:15:1"},{"name":"_1","nodeType":"YulIdentifier","src":"634:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"613:3:1"},"nodeType":"YulFunctionCall","src":"613:24:1"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"599:10:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"696:13:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"698:7:1"},"nodeType":"YulFunctionCall","src":"698:9:1"},"nodeType":"YulExpressionStatement","src":"698:9:1"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"655:10:1"},{"name":"_2","nodeType":"YulIdentifier","src":"667:2:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"652:2:1"},"nodeType":"YulFunctionCall","src":"652:18:1"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"675:10:1"},{"name":"memPtr","nodeType":"YulIdentifier","src":"687:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"672:2:1"},"nodeType":"YulFunctionCall","src":"672:22:1"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"649:2:1"},"nodeType":"YulFunctionCall","src":"649:46:1"},"nodeType":"YulIf","src":"646:2:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"725:2:1","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"729:10:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"718:6:1"},"nodeType":"YulFunctionCall","src":"718:22:1"},"nodeType":"YulExpressionStatement","src":"718:22:1"},{"nodeType":"YulVariableDeclaration","src":"749:17:1","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"760:6:1"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"753:3:1","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"782:6:1"},{"name":"_4","nodeType":"YulIdentifier","src":"790:2:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"775:6:1"},"nodeType":"YulFunctionCall","src":"775:18:1"},"nodeType":"YulExpressionStatement","src":"775:18:1"},{"nodeType":"YulAssignment","src":"802:22:1","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"813:6:1"},{"name":"_1","nodeType":"YulIdentifier","src":"821:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"809:3:1"},"nodeType":"YulFunctionCall","src":"809:15:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"802:3:1"}]},{"nodeType":"YulVariableDeclaration","src":"833:22:1","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"848:2:1"},{"name":"_1","nodeType":"YulIdentifier","src":"852:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"844:3:1"},"nodeType":"YulFunctionCall","src":"844:11:1"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"837:3:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"901:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"910:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"918:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"903:6:1"},"nodeType":"YulFunctionCall","src":"903:22:1"},"nodeType":"YulExpressionStatement","src":"903:22:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"878:2:1"},{"name":"_5","nodeType":"YulIdentifier","src":"882:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"874:3:1"},"nodeType":"YulFunctionCall","src":"874:11:1"},{"name":"_1","nodeType":"YulIdentifier","src":"887:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"870:3:1"},"nodeType":"YulFunctionCall","src":"870:20:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"892:7:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"867:2:1"},"nodeType":"YulFunctionCall","src":"867:33:1"},"nodeType":"YulIf","src":"864:2:1"},{"nodeType":"YulVariableDeclaration","src":"936:15:1","value":{"name":"value0","nodeType":"YulIdentifier","src":"945:6:1"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"940:1:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"1005:118:1","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1026:3:1"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1044:3:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1031:12:1"},"nodeType":"YulFunctionCall","src":"1031:17:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1019:6:1"},"nodeType":"YulFunctionCall","src":"1019:30:1"},"nodeType":"YulExpressionStatement","src":"1019:30:1"},{"nodeType":"YulAssignment","src":"1062:19:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1073:3:1"},{"name":"_1","nodeType":"YulIdentifier","src":"1078:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1069:3:1"},"nodeType":"YulFunctionCall","src":"1069:12:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"1062:3:1"}]},{"nodeType":"YulAssignment","src":"1094:19:1","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1105:3:1"},{"name":"_1","nodeType":"YulIdentifier","src":"1110:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1101:3:1"},"nodeType":"YulFunctionCall","src":"1101:12:1"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"1094:3:1"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"971:1:1"},{"name":"_4","nodeType":"YulIdentifier","src":"974:2:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"968:2:1"},"nodeType":"YulFunctionCall","src":"968:9:1"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"978:18:1","statements":[{"nodeType":"YulAssignment","src":"980:14:1","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"989:1:1"},{"kind":"number","nodeType":"YulLiteral","src":"992:1:1","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"985:3:1"},"nodeType":"YulFunctionCall","src":"985:9:1"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"980:1:1"}]}]},"pre":{"nodeType":"YulBlock","src":"964:3:1","statements":[]},"src":"960:163:1"},{"nodeType":"YulAssignment","src":"1132:16:1","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1142:6:1"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1132:6:1"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"75:9:1","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"86:7:1","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"98:6:1","type":""}],"src":"14:1140:1"},{"body":{"nodeType":"YulBlock","src":"1260:76:1","statements":[{"nodeType":"YulAssignment","src":"1270:26:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1282:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1293:2:1","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1278:3:1"},"nodeType":"YulFunctionCall","src":"1278:18:1"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1270:4:1"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1312:9:1"},{"name":"value0","nodeType":"YulIdentifier","src":"1323:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1305:6:1"},"nodeType":"YulFunctionCall","src":"1305:25:1"},"nodeType":"YulExpressionStatement","src":"1305:25:1"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1229:9:1","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1240:6:1","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1251:4:1","type":""}],"src":"1159:177:1"}]},"contents":"{ +{"contracts":{"a.sol":{"A":{"evm":{"bytecode":{"generatedSources":[],"object":""},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1338:1","statements":[{"nodeType":"YulBlock","src":"6:3:1","statements":[]},{"body":{"nodeType":"YulBlock","src":"109:1045:1","statements":[{"nodeType":"YulVariableDeclaration","src":"119:12:1","value":{"kind":"number","nodeType":"YulLiteral","src":"129:2:1","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"123:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"185:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"193:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"178:6:1"},"nodeType":"YulFunctionCall","src":"178:22:1"},"nodeType":"YulExpressionStatement","src":"178:22:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"151:7:1"},{"name":"headStart","nodeType":"YulIdentifier","src":"160:9:1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"147:3:1"},"nodeType":"YulFunctionCall","src":"147:23:1"},{"name":"_1","nodeType":"YulIdentifier","src":"172:2:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"143:3:1"},"nodeType":"YulFunctionCall","src":"143:32:1"},"nodeType":"YulIf","src":"140:2:1"},{"nodeType":"YulVariableDeclaration","src":"211:37:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"238:9:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"225:12:1"},"nodeType":"YulFunctionCall","src":"225:23:1"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"215:6:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"257:28:1","value":{"kind":"number","nodeType":"YulLiteral","src":"267:18:1","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"261:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"312:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"321:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"329:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"314:6:1"},"nodeType":"YulFunctionCall","src":"314:22:1"},"nodeType":"YulExpressionStatement","src":"314:22:1"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:1"},{"name":"_2","nodeType":"YulIdentifier","src":"308:2:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"297:2:1"},"nodeType":"YulFunctionCall","src":"297:14:1"},"nodeType":"YulIf","src":"294:2:1"},{"nodeType":"YulVariableDeclaration","src":"347:32:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"361:9:1"},{"name":"offset","nodeType":"YulIdentifier","src":"372:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"357:3:1"},"nodeType":"YulFunctionCall","src":"357:22:1"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"351:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"427:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"436:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"444:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"429:6:1"},"nodeType":"YulFunctionCall","src":"429:22:1"},"nodeType":"YulExpressionStatement","src":"429:22:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"406:2:1"},{"kind":"number","nodeType":"YulLiteral","src":"410:4:1","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"402:3:1"},"nodeType":"YulFunctionCall","src":"402:13:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"417:7:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"398:3:1"},"nodeType":"YulFunctionCall","src":"398:27:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"391:6:1"},"nodeType":"YulFunctionCall","src":"391:35:1"},"nodeType":"YulIf","src":"388:2:1"},{"nodeType":"YulVariableDeclaration","src":"462:26:1","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"485:2:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"472:12:1"},"nodeType":"YulFunctionCall","src":"472:16:1"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"466:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"511:13:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"513:7:1"},"nodeType":"YulFunctionCall","src":"513:9:1"},"nodeType":"YulExpressionStatement","src":"513:9:1"}]},"condition":{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"503:2:1"},{"name":"_2","nodeType":"YulIdentifier","src":"507:2:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"500:2:1"},"nodeType":"YulFunctionCall","src":"500:10:1"},"nodeType":"YulIf","src":"497:2:1"},{"nodeType":"YulVariableDeclaration","src":"533:21:1","value":{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"547:2:1"},{"name":"_1","nodeType":"YulIdentifier","src":"551:2:1"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"543:3:1"},"nodeType":"YulFunctionCall","src":"543:11:1"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"537:2:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"563:23:1","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"583:2:1","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"577:5:1"},"nodeType":"YulFunctionCall","src":"577:9:1"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"567:6:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"595:42:1","value":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"621:6:1"},{"name":"_5","nodeType":"YulIdentifier","src":"629:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"617:3:1"},"nodeType":"YulFunctionCall","src":"617:15:1"},{"name":"_1","nodeType":"YulIdentifier","src":"634:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"613:3:1"},"nodeType":"YulFunctionCall","src":"613:24:1"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"599:10:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"696:13:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"698:7:1"},"nodeType":"YulFunctionCall","src":"698:9:1"},"nodeType":"YulExpressionStatement","src":"698:9:1"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"655:10:1"},{"name":"_2","nodeType":"YulIdentifier","src":"667:2:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"652:2:1"},"nodeType":"YulFunctionCall","src":"652:18:1"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"675:10:1"},{"name":"memPtr","nodeType":"YulIdentifier","src":"687:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"672:2:1"},"nodeType":"YulFunctionCall","src":"672:22:1"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"649:2:1"},"nodeType":"YulFunctionCall","src":"649:46:1"},"nodeType":"YulIf","src":"646:2:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"725:2:1","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"729:10:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"718:6:1"},"nodeType":"YulFunctionCall","src":"718:22:1"},"nodeType":"YulExpressionStatement","src":"718:22:1"},{"nodeType":"YulVariableDeclaration","src":"749:17:1","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"760:6:1"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"753:3:1","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"782:6:1"},{"name":"_4","nodeType":"YulIdentifier","src":"790:2:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"775:6:1"},"nodeType":"YulFunctionCall","src":"775:18:1"},"nodeType":"YulExpressionStatement","src":"775:18:1"},{"nodeType":"YulAssignment","src":"802:22:1","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"813:6:1"},{"name":"_1","nodeType":"YulIdentifier","src":"821:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"809:3:1"},"nodeType":"YulFunctionCall","src":"809:15:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"802:3:1"}]},{"nodeType":"YulVariableDeclaration","src":"833:22:1","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"848:2:1"},{"name":"_1","nodeType":"YulIdentifier","src":"852:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"844:3:1"},"nodeType":"YulFunctionCall","src":"844:11:1"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"837:3:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"901:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"910:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"918:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"903:6:1"},"nodeType":"YulFunctionCall","src":"903:22:1"},"nodeType":"YulExpressionStatement","src":"903:22:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"878:2:1"},{"name":"_5","nodeType":"YulIdentifier","src":"882:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"874:3:1"},"nodeType":"YulFunctionCall","src":"874:11:1"},{"name":"_1","nodeType":"YulIdentifier","src":"887:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"870:3:1"},"nodeType":"YulFunctionCall","src":"870:20:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"892:7:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"867:2:1"},"nodeType":"YulFunctionCall","src":"867:33:1"},"nodeType":"YulIf","src":"864:2:1"},{"nodeType":"YulVariableDeclaration","src":"936:15:1","value":{"name":"value0","nodeType":"YulIdentifier","src":"945:6:1"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"940:1:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"1005:118:1","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1026:3:1"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1044:3:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1031:12:1"},"nodeType":"YulFunctionCall","src":"1031:17:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1019:6:1"},"nodeType":"YulFunctionCall","src":"1019:30:1"},"nodeType":"YulExpressionStatement","src":"1019:30:1"},{"nodeType":"YulAssignment","src":"1062:19:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1073:3:1"},{"name":"_1","nodeType":"YulIdentifier","src":"1078:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1069:3:1"},"nodeType":"YulFunctionCall","src":"1069:12:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"1062:3:1"}]},{"nodeType":"YulAssignment","src":"1094:19:1","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1105:3:1"},{"name":"_1","nodeType":"YulIdentifier","src":"1110:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1101:3:1"},"nodeType":"YulFunctionCall","src":"1101:12:1"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"1094:3:1"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"971:1:1"},{"name":"_4","nodeType":"YulIdentifier","src":"974:2:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"968:2:1"},"nodeType":"YulFunctionCall","src":"968:9:1"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"978:18:1","statements":[{"nodeType":"YulAssignment","src":"980:14:1","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"989:1:1"},{"kind":"number","nodeType":"YulLiteral","src":"992:1:1","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"985:3:1"},"nodeType":"YulFunctionCall","src":"985:9:1"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"980:1:1"}]}]},"pre":{"nodeType":"YulBlock","src":"964:3:1","statements":[]},"src":"960:163:1"},{"nodeType":"YulAssignment","src":"1132:16:1","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1142:6:1"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1132:6:1"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"75:9:1","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"86:7:1","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"98:6:1","type":""}],"src":"14:1140:1"},{"body":{"nodeType":"YulBlock","src":"1260:76:1","statements":[{"nodeType":"YulAssignment","src":"1270:26:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1282:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1293:2:1","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1278:3:1"},"nodeType":"YulFunctionCall","src":"1278:18:1"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1270:4:1"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1312:9:1"},{"name":"value0","nodeType":"YulIdentifier","src":"1323:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1305:6:1"},"nodeType":"YulFunctionCall","src":"1305:25:1"},"nodeType":"YulExpressionStatement","src":"1305:25:1"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1229:9:1","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1240:6:1","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1251:4:1","type":""}],"src":"1159:177:1"}]},"contents":"{ { } function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0 { @@ -35,5 +35,5 @@ tail := add(headStart, 32) mstore(headStart, value0) } -}","id":1,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":"56:74:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;69:59;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;116:7:0;;69:59::o;14:1140:1:-;;129:2;172;160:9;151:7;147:23;143:32;140:2;;;193:6;185;178:22;140:2;238:9;225:23;267:18;308:2;300:6;297:14;294:2;;;329:6;321;314:22;294:2;372:6;361:9;357:22;347:32;;417:7;410:4;406:2;402:13;398:27;388:2;;444:6;436;429:22;388:2;485;472:16;507:2;503;500:10;497:2;;;513:9;497:2;551;547;543:11;583:2;577:9;634:2;629;621:6;617:15;613:24;687:6;675:10;672:22;667:2;655:10;652:18;649:46;646:2;;;698:9;646:2;725;718:22;775:18;;;809:15;;;;-1:-1:-1;844:11:1;;;874;;;870:20;;867:33;-1:-1:-1;864:2:1;;;918:6;910;903:22;864:2;945:6;936:15;;960:163;974:2;971:1;968:9;960:163;;;1031:17;;1019:30;;992:1;985:9;;;;;1069:12;;;;1101;;960:163;;;-1:-1:-1;1142:6:1;109:1045;-1:-1:-1;;;;;;;;109:1045:1:o;1159:177::-;1305:25;;;1293:2;1278:18;;1260:76::o"}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! +}","id":1,"language":"Yul","name":"#utility.yul"}]}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"a.sol","start":-1},"type":"Warning"}],"sources":{"a.sol":{"id":0}}} diff --git a/test/cmdlineTests/standard_viair_requested/output.json b/test/cmdlineTests/standard_viair_requested/output.json index ebff0fdad..f48dcf52f 100644 --- a/test/cmdlineTests/standard_viair_requested/output.json +++ b/test/cmdlineTests/standard_viair_requested/output.json @@ -1,4 +1,4 @@ -{"contracts":{"A":{"C":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""}},"ir":"/******************************************************* +{"contracts":{"A":{"C":{"evm":{"bytecode":{"generatedSources":[],"object":""},"deployedBytecode":{"object":""}},"ir":"/******************************************************* * WARNING * * Solidity to Yul compilation is still EXPERIMENTAL * * It can result in LOSS OF FUNDS or worse * @@ -49,7 +49,7 @@ object \"C_2\" { } -"},"D":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""}},"ir":"/******************************************************* +"},"D":{"evm":{"bytecode":{"generatedSources":[],"object":""},"deployedBytecode":{"object":""}},"ir":"/******************************************************* * WARNING * * Solidity to Yul compilation is still EXPERIMENTAL * * It can result in LOSS OF FUNDS or worse *