#
tokens: 49722/50000 275/1140 files (page 1/94)
lines: off (toggle) GitHub
raw markdown copy
This is page 1 of 94. Use http://codebase.md/cyfrin/aderyn?page={x} to view the full context.

# Directory Structure

```
├── .cargo
│   └── config.toml
├── .git-blame-ignore-revs
├── .gitattributes
├── .github
│   ├── images
│   │   ├── aderyn_logo.png
│   │   ├── poweredbycyfrinblack.png
│   │   └── poweredbycyfrinblue.png
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── false_positive_issue.md
│   │   └── feature_request.md
│   └── workflows
│       ├── cargo.yml
│       ├── dependencies.yml
│       ├── release.yml
│       ├── reports.yml
│       └── toml.yml
├── .gitignore
├── .gitmodules
├── .vscode
│   └── settings.json
├── aderyn
│   ├── Cargo.toml
│   ├── oranda.json
│   ├── README.md
│   ├── src
│   │   ├── birdsong.rs
│   │   ├── completions.rs
│   │   ├── lib.rs
│   │   ├── lsp.rs
│   │   ├── main.rs
│   │   ├── mcp.rs
│   │   └── panic.rs
│   └── templates
│       └── aderyn.toml
├── aderyn_core
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── README.md
│   ├── src
│   │   ├── ast
│   │   │   ├── ast_nodes.rs
│   │   │   ├── ast.rs
│   │   │   ├── impls
│   │   │   │   ├── ctx
│   │   │   │   │   ├── utils.rs
│   │   │   │   │   └── workspace.rs
│   │   │   │   ├── ctx.rs
│   │   │   │   ├── disp
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── contracts.rs
│   │   │   │   │   ├── enumerations.rs
│   │   │   │   │   ├── errors.rs
│   │   │   │   │   ├── events.rs
│   │   │   │   │   ├── expressions.rs
│   │   │   │   │   ├── functions.rs
│   │   │   │   │   ├── identifiers.rs
│   │   │   │   │   ├── literals.rs
│   │   │   │   │   ├── modifiers.rs
│   │   │   │   │   ├── statements.rs
│   │   │   │   │   ├── structures.rs
│   │   │   │   │   ├── types.rs
│   │   │   │   │   ├── user_defined_value_types.rs
│   │   │   │   │   ├── using_for_directives.rs
│   │   │   │   │   └── variables.rs
│   │   │   │   ├── disp.rs
│   │   │   │   ├── node
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── contracts.rs
│   │   │   │   │   ├── documentation.rs
│   │   │   │   │   ├── enumerations.rs
│   │   │   │   │   ├── errors.rs
│   │   │   │   │   ├── events.rs
│   │   │   │   │   ├── expressions.rs
│   │   │   │   │   ├── functions.rs
│   │   │   │   │   ├── identifiers.rs
│   │   │   │   │   ├── import_directives.rs
│   │   │   │   │   ├── literals.rs
│   │   │   │   │   ├── modifiers.rs
│   │   │   │   │   ├── pragma_directives.rs
│   │   │   │   │   ├── source_units.rs
│   │   │   │   │   ├── statements.rs
│   │   │   │   │   ├── structures.rs
│   │   │   │   │   ├── types.rs
│   │   │   │   │   ├── user_defined_value_types.rs
│   │   │   │   │   ├── using_for_directives.rs
│   │   │   │   │   └── variables.rs
│   │   │   │   ├── node.rs
│   │   │   │   ├── own
│   │   │   │   │   ├── hashing.rs
│   │   │   │   │   ├── node_id.rs
│   │   │   │   │   ├── source_units.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   └── own.rs
│   │   │   ├── impls.rs
│   │   │   ├── macros.rs
│   │   │   ├── magic.rs
│   │   │   ├── node_type.rs
│   │   │   └── yul.rs
│   │   ├── ast.rs
│   │   ├── audit
│   │   │   ├── attack_surface.rs
│   │   │   ├── auditor.rs
│   │   │   ├── entrypoint.rs
│   │   │   └── public_functions_no_sender.rs
│   │   ├── audit.rs
│   │   ├── context
│   │   │   ├── browser
│   │   │   │   ├── ancestral_line.rs
│   │   │   │   ├── closest_ancestor.rs
│   │   │   │   ├── external_calls.rs
│   │   │   │   ├── extractor.rs
│   │   │   │   ├── immediate_children.rs
│   │   │   │   ├── location.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── parent.rs
│   │   │   │   ├── peek_over.rs
│   │   │   │   ├── peek_under.rs
│   │   │   │   ├── peek.rs
│   │   │   │   ├── siblings.rs
│   │   │   │   ├── sort_nodes.rs
│   │   │   │   └── storage_vars.rs
│   │   │   ├── browser.rs
│   │   │   ├── capturable.rs
│   │   │   ├── flow
│   │   │   │   ├── display.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── kind.rs
│   │   │   │   ├── primitives.rs
│   │   │   │   ├── reducibles.rs
│   │   │   │   ├── tests.rs
│   │   │   │   ├── utils.rs
│   │   │   │   ├── visualizer.rs
│   │   │   │   └── voids.rs
│   │   │   ├── flow.rs
│   │   │   ├── graph
│   │   │   │   ├── callgraph
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   ├── new.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   ├── utils.rs
│   │   │   │   │   └── visit.rs
│   │   │   │   ├── callgraph.rs
│   │   │   │   ├── preprocess
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   └── new.rs
│   │   │   │   ├── preprocess.rs
│   │   │   │   ├── traits.rs
│   │   │   │   └── utils.rs
│   │   │   ├── graph.rs
│   │   │   ├── macros.rs
│   │   │   ├── mcp
│   │   │   │   ├── callgraph
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── callgraph.rs
│   │   │   │   ├── contract_surface
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── util.rs
│   │   │   │   ├── contract_surface.rs
│   │   │   │   ├── list_contracts
│   │   │   │   │   ├── render.rs
│   │   │   │   │   └── tool.rs
│   │   │   │   ├── list_contracts.rs
│   │   │   │   ├── node_finder
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── node_finder.rs
│   │   │   │   ├── node_summarizer
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── node_summarizer.rs
│   │   │   │   ├── project_overview
│   │   │   │   │   ├── render.rs
│   │   │   │   │   └── tool.rs
│   │   │   │   ├── project_overview.rs
│   │   │   │   ├── tool_guide
│   │   │   │   │   └── tool.rs
│   │   │   │   └── tool_guide.rs
│   │   │   ├── mcp.rs
│   │   │   ├── router
│   │   │   │   ├── external_calls.rs
│   │   │   │   ├── internal_calls.rs
│   │   │   │   ├── modifier_calls.rs
│   │   │   │   └── tests.rs
│   │   │   ├── router.rs
│   │   │   └── workspace.rs
│   │   ├── context.rs
│   │   ├── detect
│   │   │   ├── detector.rs
│   │   │   ├── entrypoint.rs
│   │   │   ├── helpers.rs
│   │   │   ├── high
│   │   │   │   ├── _template.rs
│   │   │   │   ├── abi_encode_packed_hash_collision.rs
│   │   │   │   ├── arbitrary_transfer_from.rs
│   │   │   │   ├── const_func_changes_state.rs
│   │   │   │   ├── contract_locks_ether.rs
│   │   │   │   ├── dangerous_unary_operator.rs
│   │   │   │   ├── delegate_call_unchecked_address.rs
│   │   │   │   ├── delete_nested_mapping.rs
│   │   │   │   ├── dynamic_array_length_assignment.rs
│   │   │   │   ├── enumerable_loop_removal.rs
│   │   │   │   ├── eth_send_unchecked_address.rs
│   │   │   │   ├── experimental_encoder.rs
│   │   │   │   ├── function_selector_collision.rs
│   │   │   │   ├── incorrect_caret_operator.rs
│   │   │   │   ├── incorrect_erc20_interface.rs
│   │   │   │   ├── incorrect_erc721_interface.rs
│   │   │   │   ├── incorrect_shift_order.rs
│   │   │   │   ├── misused_boolean.rs
│   │   │   │   ├── msg_value_in_loops.rs
│   │   │   │   ├── multiple_constructors.rs
│   │   │   │   ├── nested_struct_in_mapping.rs
│   │   │   │   ├── out_of_order_retryable.rs
│   │   │   │   ├── pre_declared_variable_usage.rs
│   │   │   │   ├── reentrancy_state_change.rs
│   │   │   │   ├── reused_contract_name.rs
│   │   │   │   ├── rtlo.rs
│   │   │   │   ├── selfdestruct.rs
│   │   │   │   ├── signed_integer_storage_array.rs
│   │   │   │   ├── state_variable_shadowing.rs
│   │   │   │   ├── storage_array_memory_edit.rs
│   │   │   │   ├── strict_equality_contract_balance.rs
│   │   │   │   ├── tautological_compare.rs
│   │   │   │   ├── tautology_or_contradiction.rs
│   │   │   │   ├── tx_origin_used_for_auth.rs
│   │   │   │   ├── unchecked_low_level_call.rs
│   │   │   │   ├── unchecked_send.rs
│   │   │   │   ├── unprotected_initializer.rs
│   │   │   │   ├── unsafe_casting.rs
│   │   │   │   ├── weak_randomness.rs
│   │   │   │   └── yul_return.rs
│   │   │   ├── high.rs
│   │   │   ├── low
│   │   │   │   ├── _template.rs
│   │   │   │   ├── assert_state_change.rs
│   │   │   │   ├── block_timestamp_deadline.rs
│   │   │   │   ├── boolean_equality.rs
│   │   │   │   ├── builtin_symbol_shadowing.rs
│   │   │   │   ├── centralization_risk.rs
│   │   │   │   ├── constant_function_contains_assembly.rs
│   │   │   │   ├── costly_loop.rs
│   │   │   │   ├── dead_code.rs
│   │   │   │   ├── delegatecall_in_loop.rs
│   │   │   │   ├── deprecated_oz_function.rs
│   │   │   │   ├── division_before_multiplication.rs
│   │   │   │   ├── ecrecover.rs
│   │   │   │   ├── empty_block.rs
│   │   │   │   ├── empty_require_revert.rs
│   │   │   │   ├── function_initializing_state.rs
│   │   │   │   ├── function_pointer_in_constructor.rs
│   │   │   │   ├── inconsistent_type_names.rs
│   │   │   │   ├── incorrect_modifier.rs
│   │   │   │   ├── internal_function_used_once.rs
│   │   │   │   ├── large_numeric_literal.rs
│   │   │   │   ├── literal_instead_of_constant.rs
│   │   │   │   ├── local_variable_shadowing.rs
│   │   │   │   ├── missing_inheritance.rs
│   │   │   │   ├── modifier_used_only_once.rs
│   │   │   │   ├── multiple_placeholders.rs
│   │   │   │   ├── non_reentrant_not_first.rs
│   │   │   │   ├── push_0_opcode.rs
│   │   │   │   ├── redundant_statement.rs
│   │   │   │   ├── require_revert_in_loop.rs
│   │   │   │   ├── return_bomb.rs
│   │   │   │   ├── solmate_safe_transfer_lib.rs
│   │   │   │   ├── state_change_without_event.rs
│   │   │   │   ├── state_no_address_check.rs
│   │   │   │   ├── state_variable_could_be_constant.rs
│   │   │   │   ├── state_variable_could_be_immutable.rs
│   │   │   │   ├── state_variable_read_external.rs
│   │   │   │   ├── storage_array_length_not_cached.rs
│   │   │   │   ├── todo.rs
│   │   │   │   ├── unchecked_return.rs
│   │   │   │   ├── uninitialized_local_variable.rs
│   │   │   │   ├── unsafe_erc20_operation.rs
│   │   │   │   ├── unsafe_oz_erc721_mint.rs
│   │   │   │   ├── unspecific_solidity_pragma.rs
│   │   │   │   ├── unused_error.rs
│   │   │   │   ├── unused_import.rs
│   │   │   │   ├── unused_public_function.rs
│   │   │   │   ├── unused_state_variable.rs
│   │   │   │   └── void_constructor.rs
│   │   │   ├── low.rs
│   │   │   └── test_utils.rs
│   │   ├── detect.rs
│   │   ├── lib.rs
│   │   ├── stats
│   │   │   ├── cloc.rs
│   │   │   ├── dbg_tips.txt
│   │   │   ├── ignore.rs
│   │   │   ├── token.rs
│   │   │   └── util.rs
│   │   ├── stats.rs
│   │   ├── test_utils
│   │   │   └── load_source_unit.rs
│   │   ├── test_utils.rs
│   │   ├── visitor
│   │   │   ├── ast_visitor.rs
│   │   │   ├── macros.rs
│   │   │   └── workspace_visitor.rs
│   │   └── visitor.rs
│   ├── templates
│   │   └── mcp-tool-response
│   │       ├── callgraph.md
│   │       ├── contract_surface.md
│   │       ├── list_contracts.md
│   │       ├── node_finder_get_all.md
│   │       ├── node_finder_grep.md
│   │       ├── node_finder_search.md
│   │       ├── node_summarizer.md
│   │       ├── project_overview.md
│   │       └── tool_guide.md
│   └── tests
│       ├── common
│       │   ├── ancestral_line.rs
│       │   ├── closest_ancestor.rs
│       │   ├── immediate_children.rs
│       │   ├── immediate_parent.rs
│       │   ├── mod.rs
│       │   ├── new_ast_nodes.rs
│       │   ├── peek_over.rs
│       │   └── sibling.rs
│       └── traversal.rs
├── aderyn_driver
│   ├── .gitignore
│   ├── benches
│   │   └── detectors.rs
│   ├── Cargo.toml
│   ├── README.md
│   ├── src
│   │   ├── compile.rs
│   │   ├── config.rs
│   │   ├── display.rs
│   │   ├── driver.rs
│   │   ├── interface
│   │   │   ├── json.rs
│   │   │   ├── lsp.rs
│   │   │   ├── markdown.rs
│   │   │   ├── mod.rs
│   │   │   ├── sarif.rs
│   │   │   ├── tables.rs
│   │   │   └── util.rs
│   │   ├── lib.rs
│   │   ├── mcp.rs
│   │   ├── process.rs
│   │   └── runner.rs
│   └── tests
│       └── astgen.rs
├── bacon.toml
├── benchmarks
│   ├── aderyn
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── iteration_times.svg
│   │       │   └── pdf.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── iteration_times_small.svg
│   │       ├── iteration_times.svg
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── relative_iteration_times_small.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── SD.svg
│   │       └── typical.svg
│   ├── arbitrary-transfer-from
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── avoid-abi-encode-packed
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── block-timestamp-deadline
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── centralization-risk
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── constants-instead-of-literals
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── delegate-call-in-loop
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── deprecated-oz-functions
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── ecrecover
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── empty-block
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── hello_world
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── inconsistent-type-names
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── large-numeric-literal
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── non-reentrant-before-others
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── push-zero-opcode
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── report
│   │   └── index.html
│   ├── require-with-string
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── solmate-safe-transfer-lib
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unindexed-events
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unprotected-initializer
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unsafe-erc20-functions
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unsafe-oz-erc721-mint
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unspecific-solidity-pragma
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-internal-function
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-modifier
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-public-function
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   └── zero-address-check
│       ├── base
│       │   ├── benchmark.json
│       │   ├── estimates.json
│       │   ├── sample.json
│       │   └── tukey.json
│       ├── change
│       │   └── estimates.json
│       ├── new
│       │   ├── benchmark.json
│       │   ├── estimates.json
│       │   ├── sample.json
│       │   └── tukey.json
│       └── report
│           ├── both
│           │   ├── pdf.svg
│           │   └── regression.svg
│           ├── change
│           │   ├── mean.svg
│           │   ├── median.svg
│           │   └── t-test.svg
│           ├── index.html
│           ├── MAD.svg
│           ├── mean.svg
│           ├── median.svg
│           ├── pdf_small.svg
│           ├── pdf.svg
│           ├── regression_small.svg
│           ├── regression.svg
│           ├── relative_pdf_small.svg
│           ├── relative_regression_small.svg
│           ├── SD.svg
│           ├── slope.svg
│           └── typical.svg
├── Cargo.lock
├── Cargo.toml
├── cli
│   ├── benchmarks.sh
│   └── reportgen.sh
├── CODEOWNERS
├── CONTRIBUTING.md
├── cyfrinup
│   ├── dynamic_script
│   └── why.md
├── deny.toml
├── dist-workspace.toml
├── funding.json
├── LICENSE
├── Makefile
├── package-lock.json
├── package.json
├── README.md
├── RELEASE_CHECKLIST.md
├── reports
│   ├── adhoc-sol-files-highs-only-report.json
│   ├── adhoc-sol-files-report.md
│   ├── ccip-functions-report.md
│   ├── empty_report.md
│   ├── hardhat-playground-report.md
│   ├── nft-report-icm.md
│   ├── nft-report.md
│   ├── prb-math-report.md
│   ├── report.json
│   ├── report.md
│   ├── report.sarif
│   ├── sablier-aderyn-toml-nested-root.md
│   ├── templegold-report.md
│   └── uniswap_profile.md
├── rust-toolchain.toml
├── rustfmt.toml
├── tests
│   ├── adhoc-sol-files
│   │   ├── aderyn.toml
│   │   ├── Counter.sol
│   │   ├── DemoASTNodes.sol
│   │   ├── Helper.sol
│   │   ├── InconsistentUints.sol
│   │   ├── inheritance
│   │   │   ├── ExtendedInheritance.sol
│   │   │   ├── IContractInheritance.sol
│   │   │   └── InheritanceBase.sol
│   │   ├── InternalFunctions.sol
│   │   ├── lib
│   │   │   └── ThisShouldBeExcluded.sol
│   │   ├── multiple-versions
│   │   │   ├── 0.4
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.5
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.6
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.7
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   └── 0.8
│   │   │       ├── A.sol
│   │   │       └── B.sol
│   │   ├── OnceModifierExample.sol
│   │   └── StateVariables.sol
│   ├── ast
│   │   ├── abstract_contract.json
│   │   ├── address_payable.json
│   │   ├── array_type_name.json
│   │   ├── ast-erc4626.json
│   │   ├── base_constructor_call.json
│   │   ├── bit_not.json
│   │   ├── call.json
│   │   ├── constructor.json
│   │   ├── contract_dep_order.json
│   │   ├── do_while.json
│   │   ├── documentation_1.json
│   │   ├── documentation_2.json
│   │   ├── documentation_3.json
│   │   ├── documentation_local_variable.json
│   │   ├── documentation_on_statements.json
│   │   ├── documentation_triple.json
│   │   ├── empty_block.json
│   │   ├── enum_value_declaration.json
│   │   ├── enum_value.json
│   │   ├── event_definition.json
│   │   ├── experimental_encoder_pragma.json
│   │   ├── fallback_and_reveice_ether.json
│   │   ├── fallback_payable.json
│   │   ├── fallback.json
│   │   ├── function_type.json
│   │   ├── function.json
│   │   ├── global_enum.json
│   │   ├── global_struct.json
│   │   ├── inheritance_specifier.json
│   │   ├── leave.json
│   │   ├── license.json
│   │   ├── long_type_name_binary_operation.json
│   │   ├── long_type_name_identifier.json
│   │   ├── loop.json
│   │   ├── mappings.json
│   │   ├── modifier_definition.json
│   │   ├── modifier_invocation.json
│   │   ├── mutability.json
│   │   ├── nested_functions.json
│   │   ├── non_utf8.json
│   │   ├── override.json
│   │   ├── placeholder_statement.json
│   │   ├── receive_ether.json
│   │   ├── short_type_name_ref.json
│   │   ├── short_type_name.json
│   │   ├── slot_offset.json
│   │   ├── smoke.json
│   │   ├── source_location.json
│   │   ├── string.json
│   │   ├── stringlit.json
│   │   ├── switch_default.json
│   │   ├── switch.json
│   │   ├── try_catch.json
│   │   ├── two_base_functions.json
│   │   ├── unicode.json
│   │   ├── used_errors.json
│   │   ├── userDefinedValueType.json
│   │   ├── using_for_directive.json
│   │   ├── var_access.json
│   │   └── yul_hex_literal.json
│   ├── contract-playground
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── dot
│   │   │   └── .gitkeep
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── script
│   │   │   └── Counter.s.sol
│   │   ├── src
│   │   │   ├── AbstractContract.sol
│   │   │   ├── AderynIgnoreCustomDetectors.sol
│   │   │   ├── AdminContract.sol
│   │   │   ├── ArbitraryTransferFrom.sol
│   │   │   ├── AssemblyExample.sol
│   │   │   ├── AssertStateChange.sol
│   │   │   ├── auditor_mode
│   │   │   │   ├── ExternalCalls.sol
│   │   │   │   └── PublicFunctionsWithoutSenderCheck.sol
│   │   │   ├── BooleanEquality.sol
│   │   │   ├── BuiltinSymbolShadow.sol
│   │   │   ├── CacheArrayLength.sol
│   │   │   ├── CallGraphTests.sol
│   │   │   ├── Casting.sol
│   │   │   ├── cloc
│   │   │   │   ├── AnotherHeavilyCommentedContract.sol
│   │   │   │   ├── EmptyContractFile.sol
│   │   │   │   └── HeavilyCommentedContract.sol
│   │   │   ├── CompilerBugStorageSignedIntegerArray.sol
│   │   │   ├── ConstantFuncsAssembly.sol
│   │   │   ├── ConstantsLiterals.sol
│   │   │   ├── ConstFuncChangeState.sol
│   │   │   ├── ContractLocksEther.sol
│   │   │   ├── ContractWithTodo.sol
│   │   │   ├── control_flow
│   │   │   │   └── SimpleProgram.sol
│   │   │   ├── CostlyOperationsInsideLoops.sol
│   │   │   ├── Counter.sol
│   │   │   ├── CrazyPragma.sol
│   │   │   ├── DangerousStrictEquality1.sol
│   │   │   ├── DangerousStrictEquality2.sol
│   │   │   ├── DangerousUnaryOperator.sol
│   │   │   ├── DeadCode.sol
│   │   │   ├── DelegateCallWithoutAddressCheck.sol
│   │   │   ├── DeletionNestedMappingStructureContract.sol
│   │   │   ├── DeprecatedOZFunctions.sol
│   │   │   ├── DivisionBeforeMultiplication.sol
│   │   │   ├── DynamicArrayLengthAssignment.sol
│   │   │   ├── EmitAfterExternalCall.sol
│   │   │   ├── EmptyBlocks.sol
│   │   │   ├── EnumerableSetIteration.sol
│   │   │   ├── eth2
│   │   │   │   └── DepositContract.sol
│   │   │   ├── ExperimentalEncoder.sol
│   │   │   ├── ExternalCalls.sol
│   │   │   ├── FunctionInitializingState.sol
│   │   │   ├── FunctionPointers.sol
│   │   │   ├── FunctionSignatureCollision.sol
│   │   │   ├── HugeConstants.sol
│   │   │   ├── IgnoreEverything.sol
│   │   │   ├── InconsistentUints.sol
│   │   │   ├── IncorrectCaretOperator.sol
│   │   │   ├── IncorrectERC20.sol
│   │   │   ├── IncorrectERC721.sol
│   │   │   ├── IncorrectModifier.sol
│   │   │   ├── IncorrectShift.sol
│   │   │   ├── inheritance
│   │   │   │   ├── ExtendedInheritance.sol
│   │   │   │   ├── IContractInheritance.sol
│   │   │   │   └── InheritanceBase.sol
│   │   │   ├── InternalFunctions.sol
│   │   │   ├── KeccakContract.sol
│   │   │   ├── LocalVariableShadow.sol
│   │   │   ├── MissingInheritance.sol
│   │   │   ├── MisusedBoolean.sol
│   │   │   ├── MsgValueInLoop.sol
│   │   │   ├── MultipleConstructorSchemes.sol
│   │   │   ├── MultiplePlaceholders.sol
│   │   │   ├── nested
│   │   │   │   ├── 1
│   │   │   │   │   └── Nested.sol
│   │   │   │   └── 2
│   │   │   │       └── Nested.sol
│   │   │   ├── nested_mappings
│   │   │   │   ├── LaterVersion.sol
│   │   │   │   └── NestedMappings.sol
│   │   │   ├── OnceModifierExample.sol
│   │   │   ├── OnlyLibrary.sol
│   │   │   ├── OutOfOrderRetryable.sol
│   │   │   ├── parent_chain
│   │   │   │   └── ParentChainContract.sol
│   │   │   ├── PragmaRange.sol
│   │   │   ├── PreDeclaredVarUsage.sol
│   │   │   ├── PublicFunction.sol
│   │   │   ├── PublicVariableReadInExternalContext.sol
│   │   │   ├── RedundantStatements.sol
│   │   │   ├── ReturnBomb.sol
│   │   │   ├── reused_contract_name
│   │   │   │   ├── ContractA.sol
│   │   │   │   └── ContractB.sol
│   │   │   ├── RevertsAndRequriesInLoops.sol
│   │   │   ├── router
│   │   │   │   ├── ExternalCalls.sol
│   │   │   │   ├── FallbackAndReceiveOverrides.sol
│   │   │   │   ├── InternalCalls.sol
│   │   │   │   ├── ModifierCalls.sol
│   │   │   │   └── VarOverridesFunction.sol
│   │   │   ├── RTLO.sol
│   │   │   ├── SendEtherNoChecks.sol
│   │   │   ├── SendEtherNoChecksLibImport.sol
│   │   │   ├── StateChangeAfterExternalCall.sol
│   │   │   ├── StateShadowing.sol
│   │   │   ├── StateVariableCouldBeDeclaredConstant.sol
│   │   │   ├── StateVariableCouldBeDeclaredImmutable.sol
│   │   │   ├── StateVariables.sol
│   │   │   ├── StateVariablesChangesWithoutEvents.sol
│   │   │   ├── StateVariablesManipulation.sol
│   │   │   ├── StorageConditionals.sol
│   │   │   ├── StorageParameters.sol
│   │   │   ├── T11sTranferer.sol
│   │   │   ├── TautologicalCompare.sol
│   │   │   ├── TautologyOrContradiction.sol
│   │   │   ├── TestERC20.sol
│   │   │   ├── TransientKeyword.sol
│   │   │   ├── Trump.sol
│   │   │   ├── TxOriginUsedForAuth.sol
│   │   │   ├── U2.sol
│   │   │   ├── U3.sol
│   │   │   ├── U4.sol
│   │   │   ├── U5.sol
│   │   │   ├── UncheckedCalls.sol
│   │   │   ├── UncheckedReturn.sol
│   │   │   ├── UncheckedSend.sol
│   │   │   ├── UninitializedLocalVariables.sol
│   │   │   ├── UninitializedStateVariable.sol
│   │   │   ├── uniswap
│   │   │   │   ├── UniswapV2Swapper.sol
│   │   │   │   └── UniswapV3Swapper.sol
│   │   │   ├── UnprotectedInitialize.sol
│   │   │   ├── UnsafeERC721Mint.sol
│   │   │   ├── UnusedError.sol
│   │   │   ├── UnusedImport.sol
│   │   │   ├── UnusedStateVariables.sol
│   │   │   ├── UsingSelfdestruct.sol
│   │   │   ├── VoidConstructor.sol
│   │   │   ├── WeakRandomness.sol
│   │   │   ├── WrongOrderOfLayout.sol
│   │   │   ├── YulReturn.sol
│   │   │   └── ZeroAddressCheck.sol
│   │   └── test
│   │       └── Counter.t.sol
│   ├── foundry-nft-f23
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── foundry.lock
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── remappings.txt
│   │   └── src
│   │       ├── BasicNft.sol
│   │       ├── F1.sol
│   │       ├── F2.sol
│   │       ├── Initializer.sol
│   │       └── inner-core-modules
│   │           └── ICM.sol
│   ├── foundry-nft-f23-icm
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── aderyn.toml
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── remappings.txt
│   │   └── src
│   │       ├── BasicNft.sol
│   │       ├── F1.sol
│   │       ├── F2.sol
│   │       ├── Initializer.sol
│   │       └── inner-core-modules
│   │           └── ICM.sol
│   ├── hardhat-js-playground
│   │   ├── .gitignore
│   │   ├── artifacts
│   │   │   ├── build-info
│   │   │   │   └── cee6fe9a9a2f03f7ff10a27ab2746af6.json
│   │   │   └── contracts
│   │   │       ├── Counter.sol
│   │   │       │   ├── Counter.dbg.json
│   │   │       │   └── Counter.json
│   │   │       ├── ExtendedInheritance.sol
│   │   │       │   ├── ExtendedInheritance.dbg.json
│   │   │       │   └── ExtendedInheritance.json
│   │   │       ├── IContractInheritance.sol
│   │   │       │   ├── IContractInheritance.dbg.json
│   │   │       │   └── IContractInheritance.json
│   │   │       ├── InheritanceBase.sol
│   │   │       │   ├── InheritanceBase.dbg.json
│   │   │       │   └── InheritanceBase.json
│   │   │       ├── KeccakContract.sol
│   │   │       │   ├── KeccakContract.dbg.json
│   │   │       │   └── KeccakContract.json
│   │   │       ├── Lock.sol
│   │   │       │   ├── Lock.dbg.json
│   │   │       │   └── Lock.json
│   │   │       └── StateVariables.sol
│   │   │           ├── StateVariables.dbg.json
│   │   │           └── StateVariables.json
│   │   ├── contracts
│   │   │   ├── Counter.sol
│   │   │   ├── ExtendedInheritance.sol
│   │   │   ├── IContractInheritance.sol
│   │   │   ├── InheritanceBase.sol
│   │   │   ├── KeccakContract.sol
│   │   │   ├── Lock.sol
│   │   │   └── StateVariables.sol
│   │   ├── hardhat.config.js
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── scripts
│   │   │   └── deploy.js
│   │   ├── test
│   │   │   └── Lock.js
│   │   └── yarn.lock
│   ├── no-sol-files
│   │   ├── extra
│   │   │   └── HelloAgain.md
│   │   ├── Hello.txt
│   │   └── Hello.yul
│   └── toml
│       ├── nested_project1
│       │   ├── aderyn.toml
│       │   ├── folder1
│       │   │   └── hardhat.config.ts
│       │   ├── folder2
│       │   │   └── hardhat.config.ts
│       │   └── folder3
│       │       └── file.txt
│       └── nested_project2
│           ├── aderyn.toml
│           ├── folder1
│           │   └── foundry.toml
│           └── folder2
│               └── file1.txt
├── tools
│   └── xtask
│       ├── Cargo.toml
│       └── src
│           ├── blesspr.rs
│           ├── cut_release.rs
│           ├── flags.rs
│           ├── main.rs
│           ├── reportgen.rs
│           └── tomlgen.rs
└── typos.toml
```

# Files

--------------------------------------------------------------------------------
/aderyn_core/.gitignore:
--------------------------------------------------------------------------------

```

```

--------------------------------------------------------------------------------
/tests/contract-playground/dot/.gitkeep:
--------------------------------------------------------------------------------

```

```

--------------------------------------------------------------------------------
/aderyn_driver/.gitignore:
--------------------------------------------------------------------------------

```
aderyn-report-for-bench.md
```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/.gitignore:
--------------------------------------------------------------------------------

```
node_modules
.env
coverage
coverage.json
typechain
typechain-types

# Hardhat files
cache


```

--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------

```
[attr]generated linguist-generated=true diff=generated

Cargo.lock generated
reports/*.* generated


```

--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------

```
/target
.DS_Store
.venv
debug/
dot/
!dot/.gitkeep
# Generated by `oranda generate ci`
public/
node_modules/
app.log

```

--------------------------------------------------------------------------------
/tests/contract-playground/.gitignore:
--------------------------------------------------------------------------------

```
# Compiler files
cache/
out/

# Ignores development broadcast logs
!/broadcast
/broadcast/*/31337/
/broadcast/**/dry-run/

# Docs
docs/

# Dotenv file
.env
```

--------------------------------------------------------------------------------
/tests/foundry-nft-f23-icm/.gitignore:
--------------------------------------------------------------------------------

```
# Compiler files
cache/
out/

# Ignores development broadcast logs
!/broadcast
/broadcast/*/31337/
/broadcast/**/dry-run/

# Docs
docs/

# Dotenv file
.env
broadcast

```

--------------------------------------------------------------------------------
/tests/foundry-nft-f23/.gitignore:
--------------------------------------------------------------------------------

```
# Compiler files
cache/
out/

# Ignores development broadcast logs
!/broadcast
/broadcast/*/31337/
/broadcast/**/dry-run/

# Docs
docs/

# Dotenv file
.env
broadcast

```

--------------------------------------------------------------------------------
/.git-blame-ignore-revs:
--------------------------------------------------------------------------------

```
# Since version 2.23 (released in August 2019), git-blame has a feature
# to ignore or bypass certain commits.
#
# This file contains a list of commits that are not likely what you
# are looking for in a blame, such as mass reformatting or renaming.
# You can set this file as a default ignore file for blame by running
# the following command.
#
# $ git config blame.ignoreRevsFile .git-blame-ignore-revs

# fmt: all (#3398)
748ae7fc6da5bd63f1955cb1a7b5eb6b36e0ad61

```

--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------

```
[submodule "tests/contract-playground/lib/forge-std"]
	path = tests/contract-playground/lib/forge-std
	url = https://github.com/foundry-rs/forge-std
[submodule "tests/contract-playground/lib/openzeppelin-contracts"]
	path = tests/contract-playground/lib/openzeppelin-contracts
	url = https://github.com/OpenZeppelin/openzeppelin-contracts
[submodule "tests/contract-playground/lib/solmate"]
	path = tests/contract-playground/lib/solmate
	url = https://github.com/transmissions11/solmate
[submodule "tests/contract-playground/lib/v2-periphery"]
	path = tests/contract-playground/lib/v2-periphery
	url = https://github.com/Uniswap/v2-periphery
[submodule "bot/foundry_workspace/lib/forge-std"]
	path = bot/foundry_workspace/lib/forge-std
	url = https://github.com/foundry-rs/forge-std
[submodule "tests/foundry-nft-f23/lib/forge-std"]
	path = tests/foundry-nft-f23/lib/forge-std
	url = https://github.com/foundry-rs/forge-std
[submodule "tests/foundry-nft-f23/lib/openzeppelin-contracts"]
	path = tests/foundry-nft-f23/lib/openzeppelin-contracts
	url = https://github.com/OpenZeppelin/openzeppelin-contracts
[submodule "tests/ccip-contracts"]
	path = tests/ccip-contracts
	url = https://github.com/smartcontractkit/ccip
[submodule "tests/2024-05-Sablier"]
	path = tests/2024-05-Sablier
	url = https://github.com/alexroan/2024-05-Sablier.git
[submodule "tests/prb-math"]
	path = tests/prb-math
	url = https://github.com/PaulRBerg/prb-math
[submodule "tests/2024-07-templegold"]
	path = tests/2024-07-templegold
	url = https://github.com/Cyfrin/2024-07-templegold.git
[submodule "tests/foundry-nft-f23-icm/lib/forge-std"]
	path = tests/foundry-nft-f23-icm/lib/forge-std
	url = https://github.com/foundry-rs/forge-std
[submodule "tests/foundry-nft-f23-icm/lib/openzeppelin-contracts"]
	path = tests/foundry-nft-f23-icm/lib/openzeppelin-contracts
	url = https://github.com/OpenZeppelin/openzeppelin-contracts

```

--------------------------------------------------------------------------------
/aderyn/README.md:
--------------------------------------------------------------------------------

```markdown
../README.md
```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/README.md:
--------------------------------------------------------------------------------

```markdown
# Sample Hardhat Project

This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a script that deploys that contract.

Try running some of the following tasks:

```shell
npx hardhat help
npx hardhat test
REPORT_GAS=true npx hardhat test
npx hardhat node
npx hardhat run scripts/deploy.js
```

```

--------------------------------------------------------------------------------
/aderyn_core/README.md:
--------------------------------------------------------------------------------

```markdown
<p align="center">
    <br />
    <a href="https://cyfrin.io/">
        <img src="../.github/images/aderyn_logo.png" width="400" alt=""/></a>
    <br />
</p>
<p align="center"><strong>A powerful Solidity static analyzer that takes a bird's eye view over your smart contracts.
</strong></p>
<p align="center">
    <br />
    <a href="https://cyfrin.io/">
        <img src="../.github/images/poweredbycyfrinblue.png" width="145" alt=""/></a>
    <br />
</p>


<p align="center">
<a href="https://twitter.com/cyfrinaudits">Twitter</a>
<a href="https://cyfrin.io">Website</a>
<a href="https://discord.gg/cyfrin">Discord</a>
<p>

# Aderyn Core

aderyn_core is the backend infrastructure for Aderyn.

```
src/
├─ ast/             // Solidity AST Structs
├─ context/         // Program analysis tools
├─ detect/          // Where Detector specifications and logic live
├─ stats/           // Solidity file stats
├─ visitor/         // AST visitors
```

```

--------------------------------------------------------------------------------
/tests/contract-playground/README.md:
--------------------------------------------------------------------------------

```markdown
## Foundry

**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.**

Foundry consists of:

-   **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools).
-   **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.
-   **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network.
-   **Chisel**: Fast, utilitarian, and verbose solidity REPL.

## Documentation

https://book.getfoundry.sh/

## Usage

### Build

```shell
$ forge build
```

### Test

```shell
$ forge test
```

### Format

```shell
$ forge fmt
```

### Gas Snapshots

```shell
$ forge snapshot
```

### Anvil

```shell
$ anvil
```

### Deploy

```shell
$ forge script script/Counter.s.sol:CounterScript --rpc-url <your_rpc_url> --private-key <your_private_key>
```

### Cast

```shell
$ cast <subcommand>
```

### Help

```shell
$ forge --help
$ anvil --help
$ cast --help
```

```

--------------------------------------------------------------------------------
/tests/foundry-nft-f23-icm/README.md:
--------------------------------------------------------------------------------

```markdown
## Foundry

**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.**

Foundry consists of:

-   **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools).
-   **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.
-   **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network.
-   **Chisel**: Fast, utilitarian, and verbose solidity REPL.

## Documentation

https://book.getfoundry.sh/

## Usage

### Build

```shell
$ forge build
```

### Test

```shell
$ forge test
```

### Format

```shell
$ forge fmt
```

### Gas Snapshots

```shell
$ forge snapshot
```

### Anvil

```shell
$ anvil
```

### Deploy

```shell
$ forge script script/Counter.s.sol:CounterScript --rpc-url <your_rpc_url> --private-key <your_private_key>
```

### Cast

```shell
$ cast <subcommand>
```

### Help

```shell
$ forge --help
$ anvil --help
$ cast --help
```

```

--------------------------------------------------------------------------------
/tests/foundry-nft-f23/README.md:
--------------------------------------------------------------------------------

```markdown
## Foundry

**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.**

Foundry consists of:

-   **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools).
-   **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.
-   **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network.
-   **Chisel**: Fast, utilitarian, and verbose solidity REPL.

## Documentation

https://book.getfoundry.sh/

## Usage

### Build

```shell
$ forge build
```

### Test

```shell
$ forge test
```

### Format

```shell
$ forge fmt
```

### Gas Snapshots

```shell
$ forge snapshot
```

### Anvil

```shell
$ anvil
```

### Deploy

```shell
$ forge script script/Counter.s.sol:CounterScript --rpc-url <your_rpc_url> --private-key <your_private_key>
```

### Cast

```shell
$ cast <subcommand>
```

### Help

```shell
$ forge --help
$ anvil --help
$ cast --help
```

```

--------------------------------------------------------------------------------
/aderyn_driver/README.md:
--------------------------------------------------------------------------------

```markdown
<p align="center">
    <br />
    <a href="https://cyfrin.io/">
        <img src="../.github/images/aderyn_logo.png" width="400" alt=""/></a>
    <br />
</p>
<p align="center"><strong>A powerful Solidity static analyzer that takes a bird's eye view over your smart contracts.
</strong></p>
<p align="center">
    <br />
    <a href="https://cyfrin.io/">
        <img src="../.github/images/poweredbycyfrinblue.png" width="145" alt=""/></a>
    <br />
</p>


<p align="center">
<a href="https://twitter.com/cyfrinaudits">Twitter</a>
<a href="https://cyfrin.io">Website</a>
<a href="https://discord.gg/cyfrin">Discord</a>
<p>

# Aderyn Driver

aderyn_driver drives the process of running aderyn over a codebase, utilizing [aderyn_core](../aderyn_core).

Order of operation:
1. Configuration
   * Aderyn detects the source folder containing the contracts as well as the remappings to enable scan.
2. Build the `WorkspaceContext`.
   * Uses `solidity-ast-rs` to get the ASTs of the solidity files and then creates a Workspace Context out of the same.
4. Calls `aderyn_core::detect_issues` and then serializes the report based on output file format

```

--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------

```markdown
<p align="center">
    <br />
    <a href="https://cyfrin.io/">
        <img src="https://github.com/Cyfrin/aderyn/blob/dev/.github/images/aderyn_logo.png" width="400" alt=""/></a>
    <br />
</p>
<p align="center"><strong>A powerful Solidity static analyzer that takes a bird's eye view over your smart contracts.
</strong></p>
<p align="center">
    <br />
    <a href="https://cyfrin.io/">
        <img src="https://github.com/Cyfrin/aderyn/blob/dev/.github/images/poweredbycyfrinblue.png" width="145" alt=""/></a>
    <br />
</p>

<p align="center">
<a href="https://cyfrin.gitbook.io/cyfrin-docs/aderyn-cli/readme">Docs</a>
<a href="https://discord.gg/cyfrin">Discord</a>
<a href="https://twitter.com/cyfrinaudits">Twitter</a>
<p>

---

<div align="center">

[![Stargazers][stars-shield]][stars-url] [![Forks][forks-shield]][forks-url]
[![Contributors][contributors-shield]][contributors-url]
[![Release][release-shield]][release-url]
[![Issues][issues-shield]][issues-url]
[![GPL-3.0 License][license-shield]][license-url]

</div>

## What is Aderyn?

**Aderyn is an open-source public good developer tool.** It is a Rust-based solidity smart contract static analyzer designed to help protocol engineers and security researchers find vulnerabilities in Solidity code bases.

You can read the [Cyfrin official documentation](https://cyfrin.gitbook.io/cyfrin-docs/aderyn-cli/readme) for an in-depth look at Aderyn's functionalities.

There is also an officially supported [VSCode extension](https://github.com/Cyfrin/vscode-aderyn/) for Aderyn. Download from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=Cyfrin.aderyn&ssr=false#overview) and start identifying vulnerabilities in your Solidity 
code with ease.  

## Features

- Off the shelf support for Foundry projects.
- Off the shelf support for Hardhat projects. (Sometimes `remappings.txt` maybe required)
- Configuration file (`aderyn.toml`) needed to support custom frameworks.
- Markdown, JSON and Sarif reports

## Installation

> **NOTE** Windows users must have WSL installed

### Using Cyfrinup

**Cyfrinup** is the cross platform installation manager for Cyfrin tools.

[One time setup](https://github.com/Cyfrin/up).

Run `aderyn --version` to check the installation.

Run `cyfrinup` to upgrade everything to the latest version.

---

### Using curl

```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/cyfrin/aderyn/releases/latest/download/aderyn-installer.sh | bash
```

##### Upgrade older versions by running: `aderyn-update`

---

### Using Homebrew

```sh
brew install cyfrin/tap/aderyn
```

##### Upgrade older versions by running: `brew upgrade cyfrin/tap/aderyn`

---

### Using npm

```sh
npm install @cyfrin/aderyn -g
```

##### Upgrade older versions by (re)running: `npm install @cyfrin/aderyn -g`

---

If you are installing with Curl or Homebrew or npm, ensure that the correct version of Aderyn in your path comes from either the Homebrew or npm global packages directory. If an older version exists at `~/.cyfrin/bin/aderyn`, remove it using `rm -f ~/.cyfrin/bin/aderyn`, as this is no longer the default installation location.

## Quick Start

[Quick Start](https://cyfrin.gitbook.io/cyfrin-docs/aderyn-cli/quickstart) example with video guide.

```
cd path/to/solidity/project/root
aderyn
```

This generates a [report.md](https://github.com/Cyfrin/aderyn/blob/dev/reports/report.md)

See examples using more CLI options [here](https://cyfrin.gitbook.io/cyfrin-docs/cli-options)

## VS Code extension

Officially supported [VSCode extension](https://github.com/Cyfrin/vscode-aderyn/) for Aderyn. 
Download from [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=Cyfrin.aderyn&ssr=false#overview)

## Contributing & License

Help us build Aderyn 🦜 Please see our [contribution guidelines](./CONTRIBUTING.md) for in-depth developer environment setup and PR approval process.
Aderyn is an open-source software licensed under the [GPL-3.0 License](./LICENSE).

## Building a custom Aderyn detector

Aderyn makes it easy to build Static Analysis detectors that can adapt to any Solidity codebase and protocol. This guide will teach you how to build, test, and run your custom Aderyn detectors.
To learn how to create your custom Aderyn detectors, [checkout the official docs](https://cyfrin.gitbook.io/cyfrin-docs/aderyn-cli/detectors-quickstart)


## Credits

This project exists thanks to all the people who [contribute](/CONTRIBUTING.md).<br>

<a href="https://github.com/cyfrin/Aderyn/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=cyfrin/Aderyn" />
</a>

## Attribution

- AST Visitor code from [solc-ast-rs](https://github.com/hrkrshnn/solc-ast-rs).
- Foundry Compilers for backend AST generation [foundry-compilers](https://github.com/foundry-rs/compilers)
- Original detectors based on [4naly3er](https://github.com/Picodes/4naly3er) detectors.
- Shoutout to the original king of static analysis [slither](https://github.com/crytic/slither).
- Solidity AST Generator [solidity-ast-rs](https://github.com/Cyfrin/solidity-ast-rs). 

[contributors-shield]: https://img.shields.io/github/contributors/cyfrin/aderyn
[contributors-url]: https://github.com/cyfrin/aderyn/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/cyfrin/aderyn
[forks-url]: https://github.com/cyfrin/aderyn/network/members
[stars-shield]: https://img.shields.io/github/stars/cyfrin/aderyn
[stars-url]: https://github.com/cyfrin/aderyn/stargazers
[release-shield]: https://img.shields.io/github/v/release/Cyfrin/aderyn
[release-url]: https://github.com/Cyfrin/aderyn/releases
[issues-shield]: https://img.shields.io/github/issues/cyfrin/aderyn
[issues-url]: https://github.com/cyfrin/aderyn/issues
[license-shield]: https://img.shields.io/github/license/cyfrin/aderyn?logoColor=%23fff&color=blue
[license-url]: https://github.com/cyfrin/aderyn/blob/master/LICENSE
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555

```

--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------

```markdown
# Welcome to the Cyfrin Aderyn Contributing Guide

This guide aims to provide an overview of the contribution workflow to help make the contribution process effective for everyone involved.

## About the Project

Aderyn is a Rust-based solidity smart contract static analyzer designed to help protocol engineers and security researchers find vulnerabilities in Solidity code bases.

Thanks to its detectors, running Cyfrin Aderyn on your Solidity codebase will highlight all the issues currently supported, drastically reducing the potential for unknown vulnerabilities in your Solidity code.

Aderyn also makes it easier for smart contract engineers and protocols to create custom detectors to find specific or unsupported code vulnerabilities.

Read the [README](README.md) and consult the docs for an in-depth project overview.

### Vision

Cyfrin Aderyn aims to give engineers and smart contract security researchers reliable and open-source Solidity static analysis tools to find and suggest solutions to smart contract vulnerabilities while adapting quickly and efficiently to different codebases.

### Project Status

The project is under active development.

You can contribute to this repo in many ways:

- Solve open issues
- Report bugs or feature requests
- Improve the documentation

Contributions are made via Issues and Pull Requests (PRs). A few general guidelines for contributions:

- Search for existing Issues and PRs before creating your own.
- Contributions should only fix/add the functionality in the issue OR address style issues, not both.
- If you're running into an error, please give context. Explain what you're trying to do and how to reproduce the error.

## Getting started

### Overview 

Indexed in [DeepWiki](https://deepwiki.com/Cyfrin/aderyn)

### Pull Requests

#### Developer environment setup

1. [Install Rust](https://www.rust-lang.org/tools/install),
2. Clone this repo and `cd aderyn/`
3. Run `make` . Make sure to have tools listed at the top of the Makefile installed in your computer.
4. Work on the issue, write unit tests. Use `cargo test <test-name>` to test. Feel free to add solidity files to `tests/contract-playground`.
5. Run `cargo prep --cpg` to generate the report for the same.
6. Once happy with the work, run `cargo blesspr` to "polish" your PR so CI can be happy.
7. Create a pull request to `dev` branch here. The maintainers will be notified. Either @alexroan or @TilakMaddy will reach out to you.

Suggested VSCode extensions
* [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=dustypomerleau.rust-syntax) - Rust language support for Visual Studio Code
* [Rust Syntax](https://marketplace.visualstudio.com/items?itemName=dustypomerleau.rust-syntax) - Improved Rust syntax highlighting

#### Advanced Setup
1. Install [Bacon](https://dystroy.org/bacon/)
2. Run `bacon` at the root
3. Press
  * `t` for tests
  * `r` for generating a report on contract-playground. Shorthand for `cargo prep --cfg`
  * `a` for generating all reports. Shorthand for `cargo prep --all --parallel`
  * `Alt-b` or `⌥-b` (Option-B on Mac) for "blessing" the PR. Shorthand for `cargo blesspr`

#### Tips
Feel free to reach out to `cargo fixfmt` and `cargo fixclippy` to apply quick fixes on code quality.

#### Pull Request Process

We follow the ["fork-and-pull" Git workflow](https://github.com/susam/gitpr)

1. Fork the repo
2. Clone the project
3. Create a new branch with a descriptive name
4. Commit your changes to the new branch
5. Push changes to your fork
6. Open a PR in our repository and tag one of the maintainers to review your PR

Here are some tips for a high-quality pull request:

- Create a title for the PR that accurately defines the work done.
- Structure the description neatly to make it easy for the readers to consume. For example, you can include bullet points and screenshots instead of having one large paragraph.
- Add the link to the issue if applicable.
- Have a good commit message that summarises the work done.

Once you submit your PR:

- We may ask questions, request additional information, or ask for changes to be made before a PR can be merged. These are to clarify the PR for everyone involved and create a frictionless interaction process.
- As you update your PR and apply changes, mark each conversation resolved.

Once the PR is approved, we'll "squash-and-merge" to keep the git commit history clean.

### Issues

Issues should be used to report problems, request a new feature, or discuss potential changes before a PR is created.

#### Solve an issue

Please review our [existing issues](https://github.com/cyfrin/aderyn/issues) to find one that interests you.

If a contributor is working on the issue, they will be assigned to the individual. If you find an issue to work on, you can assign it to yourself and open a PR with a fix.

#### Report Bugs

If a related issue doesn't exist, you can open a new issue.

Some tips to follow when you are creating an issue:

- Provide as much context as possible. Over-communicate to give the most details to the reader.
- Include the steps to reproduce the issue or the reason for adding the feature.
- Screenshots, videos, etc., are highly appreciated.


```

--------------------------------------------------------------------------------
/tests/toml/nested_project1/folder1/hardhat.config.ts:
--------------------------------------------------------------------------------

```typescript

```

--------------------------------------------------------------------------------
/tests/toml/nested_project1/folder2/hardhat.config.ts:
--------------------------------------------------------------------------------

```typescript

```

--------------------------------------------------------------------------------
/tests/toml/nested_project1/folder3/file.txt:
--------------------------------------------------------------------------------

```

```

--------------------------------------------------------------------------------
/tests/toml/nested_project2/folder1/foundry.toml:
--------------------------------------------------------------------------------

```toml

```

--------------------------------------------------------------------------------
/tests/toml/nested_project2/folder2/file1.txt:
--------------------------------------------------------------------------------

```

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/graph/utils.rs:
--------------------------------------------------------------------------------

```rust
// Utilities

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/graph/preprocess.rs:
--------------------------------------------------------------------------------

```rust
mod legacy;
mod new;

```

--------------------------------------------------------------------------------
/tests/no-sol-files/Hello.txt:
--------------------------------------------------------------------------------

```
I am not a solidity file!
```

--------------------------------------------------------------------------------
/aderyn_core/src/detect/test_utils.rs:
--------------------------------------------------------------------------------

```rust
pub use crate::test_utils::*;

```

--------------------------------------------------------------------------------
/tests/no-sol-files/extra/HelloAgain.md:
--------------------------------------------------------------------------------

```markdown
I am also not a solidity file!
```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/ctx.rs:
--------------------------------------------------------------------------------

```rust
pub mod utils;
pub mod workspace;

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/mcp/tool_guide.rs:
--------------------------------------------------------------------------------

```rust
mod tool;

pub use tool::ToolGuide;

```

--------------------------------------------------------------------------------
/rust-toolchain.toml:
--------------------------------------------------------------------------------

```toml
[toolchain]
channel = "nightly-2025-09-20"

```

--------------------------------------------------------------------------------
/benchmarks/aderyn/base/tukey.json:
--------------------------------------------------------------------------------

```json
[24074388.25,60254053.375,156733160.375,192912825.5]
```

--------------------------------------------------------------------------------
/benchmarks/aderyn/new/tukey.json:
--------------------------------------------------------------------------------

```json
[24074388.25,60254053.375,156733160.375,192912825.5]
```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls.rs:
--------------------------------------------------------------------------------

```rust
pub mod ctx;
pub mod disp;
pub mod node;
pub mod own;

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/mcp/list_contracts.rs:
--------------------------------------------------------------------------------

```rust
mod render;
mod tool;

pub use tool::ListContractsTool;

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/mcp/project_overview.rs:
--------------------------------------------------------------------------------

```rust
mod render;
mod tool;

pub use tool::ProjectOverviewTool;

```

--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------

```json
{
  "dependencies": {
    "@cyfrin/aderyn": "^0.5.11"
  }
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/mcp/callgraph.rs:
--------------------------------------------------------------------------------

```rust
mod render;
mod tool;
mod utils;

pub use tool::CallgraphTool;

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/mcp/node_finder.rs:
--------------------------------------------------------------------------------

```rust
mod render;
mod tool;
mod utils;

pub use tool::NodeFinderTool;

```

--------------------------------------------------------------------------------
/aderyn_core/src/visitor.rs:
--------------------------------------------------------------------------------

```rust
pub mod ast_visitor;
pub mod macros;
pub mod workspace_visitor;

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/mcp/node_summarizer.rs:
--------------------------------------------------------------------------------

```rust
mod render;
mod tool;
mod utils;

pub use tool::NodeSummarizerTool;

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/own.rs:
--------------------------------------------------------------------------------

```rust
pub mod hashing;
pub mod node_id;
pub mod source_units;
pub mod utils;

```

--------------------------------------------------------------------------------
/benchmarks/ecrecover/base/tukey.json:
--------------------------------------------------------------------------------

```json
[4050.157365511992,4469.464027675213,5587.615126777137,6006.921788940359]
```

--------------------------------------------------------------------------------
/benchmarks/ecrecover/new/tukey.json:
--------------------------------------------------------------------------------

```json
[4050.157365511992,4469.464027675213,5587.615126777137,6006.921788940359]
```

--------------------------------------------------------------------------------
/benchmarks/large-numeric-literal/base/tukey.json:
--------------------------------------------------------------------------------

```json
[47144.93649317571,51072.20664528066,61544.92705089388,65472.19720299884]
```

--------------------------------------------------------------------------------
/benchmarks/large-numeric-literal/new/tukey.json:
--------------------------------------------------------------------------------

```json
[47144.93649317571,51072.20664528066,61544.92705089388,65472.19720299884]
```

--------------------------------------------------------------------------------
/benchmarks/deprecated-oz-functions/base/tukey.json:
--------------------------------------------------------------------------------

```json
[209437.4101413315,232279.87118165128,293193.100622504,316035.56166282383]
```

--------------------------------------------------------------------------------
/benchmarks/deprecated-oz-functions/new/tukey.json:
--------------------------------------------------------------------------------

```json
[209437.4101413315,232279.87118165128,293193.100622504,316035.56166282383]
```

--------------------------------------------------------------------------------
/benchmarks/unsafe-erc20-functions/base/tukey.json:
--------------------------------------------------------------------------------

```json
[35212.9987387433,38456.261190165795,47104.96106062579,50348.223512048295]
```

--------------------------------------------------------------------------------
/benchmarks/unsafe-erc20-functions/new/tukey.json:
--------------------------------------------------------------------------------

```json
[35212.9987387433,38456.261190165795,47104.96106062579,50348.223512048295]
```

--------------------------------------------------------------------------------
/benchmarks/unsafe-oz-erc721-mint/base/tukey.json:
--------------------------------------------------------------------------------

```json
[175205.12765688275,228651.135374494,371173.8226214574,424619.83033906866]
```

--------------------------------------------------------------------------------
/benchmarks/unsafe-oz-erc721-mint/new/tukey.json:
--------------------------------------------------------------------------------

```json
[175205.12765688275,228651.135374494,371173.8226214574,424619.83033906866]
```

--------------------------------------------------------------------------------
/benchmarks/useless-modifier/base/tukey.json:
--------------------------------------------------------------------------------

```json
[19796.776305383224,22043.67289645662,28035.397139319008,30282.2937303924]
```

--------------------------------------------------------------------------------
/benchmarks/useless-modifier/new/tukey.json:
--------------------------------------------------------------------------------

```json
[19796.776305383224,22043.67289645662,28035.397139319008,30282.2937303924]
```

--------------------------------------------------------------------------------
/benchmarks/arbitrary-transfer-from/base/tukey.json:
--------------------------------------------------------------------------------

```json
[47743.649223318556,53290.926970867804,68083.66763099913,73630.94537854838]
```

--------------------------------------------------------------------------------
/benchmarks/arbitrary-transfer-from/new/tukey.json:
--------------------------------------------------------------------------------

```json
[47743.649223318556,53290.926970867804,68083.66763099913,73630.94537854838]
```

--------------------------------------------------------------------------------
/benchmarks/block-timestamp-deadline/base/tukey.json:
--------------------------------------------------------------------------------

```json
[235390.88589375693,254808.37849375347,306588.3587604109,326005.8513604074]
```

--------------------------------------------------------------------------------
/benchmarks/block-timestamp-deadline/new/tukey.json:
--------------------------------------------------------------------------------

```json
[235390.88589375693,254808.37849375347,306588.3587604109,326005.8513604074]
```

--------------------------------------------------------------------------------
/benchmarks/non-reentrant-before-others/base/tukey.json:
--------------------------------------------------------------------------------

```json
[2683.886806189582,2960.949995258795,3699.7851661100294,3976.8483551792424]
```

--------------------------------------------------------------------------------
/benchmarks/non-reentrant-before-others/new/tukey.json:
--------------------------------------------------------------------------------

```json
[2683.886806189582,2960.949995258795,3699.7851661100294,3976.8483551792424]
```

--------------------------------------------------------------------------------
/benchmarks/push-zero-opcode/base/tukey.json:
--------------------------------------------------------------------------------

```json
[34078.58690040802,37859.73479445004,47942.795845228764,51723.943739270784]
```

--------------------------------------------------------------------------------
/benchmarks/push-zero-opcode/new/tukey.json:
--------------------------------------------------------------------------------

```json
[34078.58690040802,37859.73479445004,47942.795845228764,51723.943739270784]
```

--------------------------------------------------------------------------------
/benchmarks/require-with-string/base/tukey.json:
--------------------------------------------------------------------------------

```json
[17979.023262548268,22893.97480694981,36000.51225868725,40915.463803088795]
```

--------------------------------------------------------------------------------
/benchmarks/require-with-string/new/tukey.json:
--------------------------------------------------------------------------------

```json
[17979.023262548268,22893.97480694981,36000.51225868725,40915.463803088795]
```

--------------------------------------------------------------------------------
/benchmarks/unspecific-solidity-pragma/base/tukey.json:
--------------------------------------------------------------------------------

```json
[13387.772945464523,14814.454993205294,18618.94045384735,20045.62250158812]
```

--------------------------------------------------------------------------------
/benchmarks/unspecific-solidity-pragma/new/tukey.json:
--------------------------------------------------------------------------------

```json
[13387.772945464523,14814.454993205294,18618.94045384735,20045.62250158812]
```

--------------------------------------------------------------------------------
/benchmarks/zero-address-check/base/tukey.json:
--------------------------------------------------------------------------------

```json
[385785.5071481919,413785.54258315027,488452.3037430392,516452.33917799755]
```

--------------------------------------------------------------------------------
/benchmarks/zero-address-check/new/tukey.json:
--------------------------------------------------------------------------------

```json
[385785.5071481919,413785.54258315027,488452.3037430392,516452.33917799755]
```

--------------------------------------------------------------------------------
/benchmarks/constants-instead-of-literals/base/tukey.json:
--------------------------------------------------------------------------------

```json
[957069.8053083075,1151507.6895156088,1670008.7140684123,1864446.5982757136]
```

--------------------------------------------------------------------------------
/benchmarks/constants-instead-of-literals/new/tukey.json:
--------------------------------------------------------------------------------

```json
[957069.8053083075,1151507.6895156088,1670008.7140684123,1864446.5982757136]
```

--------------------------------------------------------------------------------
/benchmarks/delegate-call-in-loop/base/tukey.json:
--------------------------------------------------------------------------------

```json
[10444.92577347332,10809.214898230912,11780.652564251159,12144.941689008752]
```

--------------------------------------------------------------------------------
/benchmarks/delegate-call-in-loop/new/tukey.json:
--------------------------------------------------------------------------------

```json
[10444.92577347332,10809.214898230912,11780.652564251159,12144.941689008752]
```

--------------------------------------------------------------------------------
/benchmarks/empty-block/base/tukey.json:
--------------------------------------------------------------------------------

```json
[42044.806702114896,45770.336014479704,55705.080847452526,59430.61015981733]
```

--------------------------------------------------------------------------------
/benchmarks/empty-block/new/tukey.json:
--------------------------------------------------------------------------------

```json
[42044.806702114896,45770.336014479704,55705.080847452526,59430.61015981733]
```

--------------------------------------------------------------------------------
/benchmarks/inconsistent-type-names/base/tukey.json:
--------------------------------------------------------------------------------

```json
[650955.9366935485,1056646.1151209679,2138486.5909274193,2544176.7693548384]
```

--------------------------------------------------------------------------------
/benchmarks/inconsistent-type-names/new/tukey.json:
--------------------------------------------------------------------------------

```json
[650955.9366935485,1056646.1151209679,2138486.5909274193,2544176.7693548384]
```

--------------------------------------------------------------------------------
/benchmarks/solmate-safe-transfer-lib/base/tukey.json:
--------------------------------------------------------------------------------

```json
[3014.2540197349813,3142.371600337862,3484.0184819455453,3612.1360625484267]
```

--------------------------------------------------------------------------------
/benchmarks/solmate-safe-transfer-lib/new/tukey.json:
--------------------------------------------------------------------------------

```json
[3014.2540197349813,3142.371600337862,3484.0184819455453,3612.1360625484267]
```

--------------------------------------------------------------------------------
/benchmarks/unprotected-initializer/base/tukey.json:
--------------------------------------------------------------------------------

```json
[24701.896637931022,28382.651522090513,38197.99787984915,41878.752764008634]
```

--------------------------------------------------------------------------------
/benchmarks/unprotected-initializer/new/tukey.json:
--------------------------------------------------------------------------------

```json
[24701.896637931022,28382.651522090513,38197.99787984915,41878.752764008634]
```

--------------------------------------------------------------------------------
/benchmarks/useless-public-function/base/tukey.json:
--------------------------------------------------------------------------------

```json
[404523.76632256125,429920.72586094146,497645.95129662193,523042.9108350021]
```

--------------------------------------------------------------------------------
/benchmarks/useless-public-function/new/tukey.json:
--------------------------------------------------------------------------------

```json
[404523.76632256125,429920.72586094146,497645.95129662193,523042.9108350021]
```

--------------------------------------------------------------------------------
/benchmarks/avoid-abi-encode-packed/base/tukey.json:
--------------------------------------------------------------------------------

```json
[12691.557164385296,13382.961864104447,15226.707730022183,15918.112429741333]
```

--------------------------------------------------------------------------------
/benchmarks/avoid-abi-encode-packed/new/tukey.json:
--------------------------------------------------------------------------------

```json
[12691.557164385296,13382.961864104447,15226.707730022183,15918.112429741333]
```

--------------------------------------------------------------------------------
/benchmarks/centralization-risk/base/tukey.json:
--------------------------------------------------------------------------------

```json
[10336.201621396072,11216.300298449867,13563.230103926653,14443.328780980448]
```

--------------------------------------------------------------------------------
/benchmarks/centralization-risk/new/tukey.json:
--------------------------------------------------------------------------------

```json
[10336.201621396072,11216.300298449867,13563.230103926653,14443.328780980448]
```

--------------------------------------------------------------------------------
/benchmarks/hello_world/base/tukey.json:
--------------------------------------------------------------------------------

```json
[1402.4802387291743,1666.3598487721251,2370.0388088866607,2633.9184189296116]
```

--------------------------------------------------------------------------------
/benchmarks/hello_world/new/tukey.json:
--------------------------------------------------------------------------------

```json
[1402.4802387291743,1666.3598487721251,2370.0388088866607,2633.9184189296116]
```

--------------------------------------------------------------------------------
/benchmarks/unindexed-events/base/tukey.json:
--------------------------------------------------------------------------------

```json
[25470.691852159456,26676.110658222584,29890.560807724258,31095.979613787385]
```

--------------------------------------------------------------------------------
/benchmarks/unindexed-events/new/tukey.json:
--------------------------------------------------------------------------------

```json
[25470.691852159456,26676.110658222584,29890.560807724258,31095.979613787385]
```

--------------------------------------------------------------------------------
/benchmarks/useless-internal-function/base/tukey.json:
--------------------------------------------------------------------------------

```json
[12622.216641566672,14172.750966145632,18307.509165022853,19858.043489601812]
```

--------------------------------------------------------------------------------
/benchmarks/useless-internal-function/new/tukey.json:
--------------------------------------------------------------------------------

```json
[12622.216641566672,14172.750966145632,18307.509165022853,19858.043489601812]
```

--------------------------------------------------------------------------------
/aderyn_core/src/context/mcp/contract_surface.rs:
--------------------------------------------------------------------------------

```rust
pub mod render;
pub mod tool;
pub mod util;

pub use tool::ContractSurfaceTool;

```

--------------------------------------------------------------------------------
/typos.toml:
--------------------------------------------------------------------------------

```toml
[files]
extend-exclude = ["tests/*", "benchmarks/*"]

[default.extend-words]
nd = "nd"

```

--------------------------------------------------------------------------------
/aderyn_core/src/audit.rs:
--------------------------------------------------------------------------------

```rust
pub mod attack_surface;
pub mod auditor;
pub mod entrypoint;
pub mod public_functions_no_sender;

```

--------------------------------------------------------------------------------
/tests/adhoc-sol-files/aderyn.toml:
--------------------------------------------------------------------------------

```toml
version = 1
# src = ""
exclude = ["lib/"]
# remappings = []
# scope = [
#     "AdminContract.sol"
# ]

```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/artifacts/contracts/Counter.sol/Counter.dbg.json:
--------------------------------------------------------------------------------

```json
{
  "_format": "hh-sol-dbg-1",
  "buildInfo": "../../build-info/cee6fe9a9a2f03f7ff10a27ab2746af6.json"
}

```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/artifacts/contracts/ExtendedInheritance.sol/ExtendedInheritance.dbg.json:
--------------------------------------------------------------------------------

```json
{
  "_format": "hh-sol-dbg-1",
  "buildInfo": "../../build-info/cee6fe9a9a2f03f7ff10a27ab2746af6.json"
}

```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/artifacts/contracts/IContractInheritance.sol/IContractInheritance.dbg.json:
--------------------------------------------------------------------------------

```json
{
  "_format": "hh-sol-dbg-1",
  "buildInfo": "../../build-info/cee6fe9a9a2f03f7ff10a27ab2746af6.json"
}

```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/artifacts/contracts/InheritanceBase.sol/InheritanceBase.dbg.json:
--------------------------------------------------------------------------------

```json
{
  "_format": "hh-sol-dbg-1",
  "buildInfo": "../../build-info/cee6fe9a9a2f03f7ff10a27ab2746af6.json"
}

```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/artifacts/contracts/KeccakContract.sol/KeccakContract.dbg.json:
--------------------------------------------------------------------------------

```json
{
  "_format": "hh-sol-dbg-1",
  "buildInfo": "../../build-info/cee6fe9a9a2f03f7ff10a27ab2746af6.json"
}

```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/artifacts/contracts/Lock.sol/Lock.dbg.json:
--------------------------------------------------------------------------------

```json
{
  "_format": "hh-sol-dbg-1",
  "buildInfo": "../../build-info/cee6fe9a9a2f03f7ff10a27ab2746af6.json"
}

```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/artifacts/contracts/StateVariables.sol/StateVariables.dbg.json:
--------------------------------------------------------------------------------

```json
{
  "_format": "hh-sol-dbg-1",
  "buildInfo": "../../build-info/cee6fe9a9a2f03f7ff10a27ab2746af6.json"
}

```

--------------------------------------------------------------------------------
/funding.json:
--------------------------------------------------------------------------------

```json
{
  "opRetro": {
    "projectId": "0xa7d78d566bfa319479ec048c94c3d8c1f4d628a9344ba157fc4974dbf472dc3e"
  }
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/context.rs:
--------------------------------------------------------------------------------

```rust
pub mod browser;
pub mod capturable;
pub mod flow;
pub mod graph;
pub mod macros;
pub mod mcp;
pub mod router;
pub mod workspace;

```

--------------------------------------------------------------------------------
/benchmarks/aderyn/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"aderyn","function_id":null,"value_str":null,"throughput":null,"full_id":"aderyn","directory_name":"aderyn","title":"aderyn"}
```

--------------------------------------------------------------------------------
/benchmarks/aderyn/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"aderyn","function_id":null,"value_str":null,"throughput":null,"full_id":"aderyn","directory_name":"aderyn","title":"aderyn"}
```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/hardhat.config.js:
--------------------------------------------------------------------------------

```javascript
require("@nomicfoundation/hardhat-toolbox");

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
  solidity: "0.8.20",
};

```

--------------------------------------------------------------------------------
/benchmarks/ecrecover/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"ecrecover","function_id":null,"value_str":null,"throughput":null,"full_id":"ecrecover","directory_name":"ecrecover","title":"ecrecover"}
```

--------------------------------------------------------------------------------
/benchmarks/ecrecover/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"ecrecover","function_id":null,"value_str":null,"throughput":null,"full_id":"ecrecover","directory_name":"ecrecover","title":"ecrecover"}
```

--------------------------------------------------------------------------------
/benchmarks/empty-block/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"empty-block","function_id":null,"value_str":null,"throughput":null,"full_id":"empty-block","directory_name":"empty-block","title":"empty-block"}
```

--------------------------------------------------------------------------------
/benchmarks/empty-block/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"empty-block","function_id":null,"value_str":null,"throughput":null,"full_id":"empty-block","directory_name":"empty-block","title":"empty-block"}
```

--------------------------------------------------------------------------------
/benchmarks/hello_world/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"hello_world","function_id":null,"value_str":null,"throughput":null,"full_id":"hello_world","directory_name":"hello_world","title":"hello_world"}
```

--------------------------------------------------------------------------------
/benchmarks/hello_world/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"hello_world","function_id":null,"value_str":null,"throughput":null,"full_id":"hello_world","directory_name":"hello_world","title":"hello_world"}
```

--------------------------------------------------------------------------------
/benchmarks/push-zero-opcode/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"push-zero-opcode","function_id":null,"value_str":null,"throughput":null,"full_id":"push-zero-opcode","directory_name":"push-zero-opcode","title":"push-zero-opcode"}
```

--------------------------------------------------------------------------------
/benchmarks/push-zero-opcode/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"push-zero-opcode","function_id":null,"value_str":null,"throughput":null,"full_id":"push-zero-opcode","directory_name":"push-zero-opcode","title":"push-zero-opcode"}
```

--------------------------------------------------------------------------------
/benchmarks/unindexed-events/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"unindexed-events","function_id":null,"value_str":null,"throughput":null,"full_id":"unindexed-events","directory_name":"unindexed-events","title":"unindexed-events"}
```

--------------------------------------------------------------------------------
/benchmarks/unindexed-events/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"unindexed-events","function_id":null,"value_str":null,"throughput":null,"full_id":"unindexed-events","directory_name":"unindexed-events","title":"unindexed-events"}
```

--------------------------------------------------------------------------------
/benchmarks/useless-modifier/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"useless-modifier","function_id":null,"value_str":null,"throughput":null,"full_id":"useless-modifier","directory_name":"useless-modifier","title":"useless-modifier"}
```

--------------------------------------------------------------------------------
/benchmarks/useless-modifier/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"useless-modifier","function_id":null,"value_str":null,"throughput":null,"full_id":"useless-modifier","directory_name":"useless-modifier","title":"useless-modifier"}
```

--------------------------------------------------------------------------------
/tests/foundry-nft-f23-icm/aderyn.toml:
--------------------------------------------------------------------------------

```toml
# Aderyn Configuration File
# Help Aderyn work with more granular control

# DO NOT CHANGE version below. As of now, only 1 is supported
version = 1

[env]
FOUNDRY_PROFILE = "icm"

```

--------------------------------------------------------------------------------
/benchmarks/zero-address-check/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"zero-address-check","function_id":null,"value_str":null,"throughput":null,"full_id":"zero-address-check","directory_name":"zero-address-check","title":"zero-address-check"}
```

--------------------------------------------------------------------------------
/benchmarks/zero-address-check/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"zero-address-check","function_id":null,"value_str":null,"throughput":null,"full_id":"zero-address-check","directory_name":"zero-address-check","title":"zero-address-check"}
```

--------------------------------------------------------------------------------
/benchmarks/centralization-risk/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"centralization-risk","function_id":null,"value_str":null,"throughput":null,"full_id":"centralization-risk","directory_name":"centralization-risk","title":"centralization-risk"}
```

--------------------------------------------------------------------------------
/benchmarks/centralization-risk/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"centralization-risk","function_id":null,"value_str":null,"throughput":null,"full_id":"centralization-risk","directory_name":"centralization-risk","title":"centralization-risk"}
```

--------------------------------------------------------------------------------
/benchmarks/require-with-string/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"require-with-string","function_id":null,"value_str":null,"throughput":null,"full_id":"require-with-string","directory_name":"require-with-string","title":"require-with-string"}
```

--------------------------------------------------------------------------------
/benchmarks/require-with-string/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"require-with-string","function_id":null,"value_str":null,"throughput":null,"full_id":"require-with-string","directory_name":"require-with-string","title":"require-with-string"}
```

--------------------------------------------------------------------------------
/benchmarks/delegate-call-in-loop/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"delegate-call-in-loop","function_id":null,"value_str":null,"throughput":null,"full_id":"delegate-call-in-loop","directory_name":"delegate-call-in-loop","title":"delegate-call-in-loop"}
```

--------------------------------------------------------------------------------
/benchmarks/delegate-call-in-loop/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"delegate-call-in-loop","function_id":null,"value_str":null,"throughput":null,"full_id":"delegate-call-in-loop","directory_name":"delegate-call-in-loop","title":"delegate-call-in-loop"}
```

--------------------------------------------------------------------------------
/benchmarks/large-numeric-literal/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"large-numeric-literal","function_id":null,"value_str":null,"throughput":null,"full_id":"large-numeric-literal","directory_name":"large-numeric-literal","title":"large-numeric-literal"}
```

--------------------------------------------------------------------------------
/benchmarks/large-numeric-literal/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"large-numeric-literal","function_id":null,"value_str":null,"throughput":null,"full_id":"large-numeric-literal","directory_name":"large-numeric-literal","title":"large-numeric-literal"}
```

--------------------------------------------------------------------------------
/benchmarks/unsafe-oz-erc721-mint/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"unsafe-oz-erc721-mint","function_id":null,"value_str":null,"throughput":null,"full_id":"unsafe-oz-erc721-mint","directory_name":"unsafe-oz-erc721-mint","title":"unsafe-oz-erc721-mint"}
```

--------------------------------------------------------------------------------
/benchmarks/unsafe-oz-erc721-mint/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"unsafe-oz-erc721-mint","function_id":null,"value_str":null,"throughput":null,"full_id":"unsafe-oz-erc721-mint","directory_name":"unsafe-oz-erc721-mint","title":"unsafe-oz-erc721-mint"}
```

--------------------------------------------------------------------------------
/benchmarks/unsafe-erc20-functions/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"unsafe-erc20-functions","function_id":null,"value_str":null,"throughput":null,"full_id":"unsafe-erc20-functions","directory_name":"unsafe-erc20-functions","title":"unsafe-erc20-functions"}
```

--------------------------------------------------------------------------------
/benchmarks/unsafe-erc20-functions/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"unsafe-erc20-functions","function_id":null,"value_str":null,"throughput":null,"full_id":"unsafe-erc20-functions","directory_name":"unsafe-erc20-functions","title":"unsafe-erc20-functions"}
```

--------------------------------------------------------------------------------
/benchmarks/arbitrary-transfer-from/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"arbitrary-transfer-from","function_id":null,"value_str":null,"throughput":null,"full_id":"arbitrary-transfer-from","directory_name":"arbitrary-transfer-from","title":"arbitrary-transfer-from"}
```

--------------------------------------------------------------------------------
/benchmarks/arbitrary-transfer-from/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"arbitrary-transfer-from","function_id":null,"value_str":null,"throughput":null,"full_id":"arbitrary-transfer-from","directory_name":"arbitrary-transfer-from","title":"arbitrary-transfer-from"}
```

--------------------------------------------------------------------------------
/benchmarks/avoid-abi-encode-packed/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"avoid-abi-encode-packed","function_id":null,"value_str":null,"throughput":null,"full_id":"avoid-abi-encode-packed","directory_name":"avoid-abi-encode-packed","title":"avoid-abi-encode-packed"}
```

--------------------------------------------------------------------------------
/benchmarks/avoid-abi-encode-packed/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"avoid-abi-encode-packed","function_id":null,"value_str":null,"throughput":null,"full_id":"avoid-abi-encode-packed","directory_name":"avoid-abi-encode-packed","title":"avoid-abi-encode-packed"}
```

--------------------------------------------------------------------------------
/benchmarks/deprecated-oz-functions/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"deprecated-oz-functions","function_id":null,"value_str":null,"throughput":null,"full_id":"deprecated-oz-functions","directory_name":"deprecated-oz-functions","title":"deprecated-oz-functions"}
```

--------------------------------------------------------------------------------
/benchmarks/deprecated-oz-functions/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"deprecated-oz-functions","function_id":null,"value_str":null,"throughput":null,"full_id":"deprecated-oz-functions","directory_name":"deprecated-oz-functions","title":"deprecated-oz-functions"}
```

--------------------------------------------------------------------------------
/benchmarks/inconsistent-type-names/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"inconsistent-type-names","function_id":null,"value_str":null,"throughput":null,"full_id":"inconsistent-type-names","directory_name":"inconsistent-type-names","title":"inconsistent-type-names"}
```

--------------------------------------------------------------------------------
/benchmarks/inconsistent-type-names/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"inconsistent-type-names","function_id":null,"value_str":null,"throughput":null,"full_id":"inconsistent-type-names","directory_name":"inconsistent-type-names","title":"inconsistent-type-names"}
```

--------------------------------------------------------------------------------
/benchmarks/unprotected-initializer/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"unprotected-initializer","function_id":null,"value_str":null,"throughput":null,"full_id":"unprotected-initializer","directory_name":"unprotected-initializer","title":"unprotected-initializer"}
```

--------------------------------------------------------------------------------
/benchmarks/unprotected-initializer/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"unprotected-initializer","function_id":null,"value_str":null,"throughput":null,"full_id":"unprotected-initializer","directory_name":"unprotected-initializer","title":"unprotected-initializer"}
```

--------------------------------------------------------------------------------
/benchmarks/useless-public-function/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"useless-public-function","function_id":null,"value_str":null,"throughput":null,"full_id":"useless-public-function","directory_name":"useless-public-function","title":"useless-public-function"}
```

--------------------------------------------------------------------------------
/benchmarks/useless-public-function/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"useless-public-function","function_id":null,"value_str":null,"throughput":null,"full_id":"useless-public-function","directory_name":"useless-public-function","title":"useless-public-function"}
```

--------------------------------------------------------------------------------
/benchmarks/block-timestamp-deadline/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"block-timestamp-deadline","function_id":null,"value_str":null,"throughput":null,"full_id":"block-timestamp-deadline","directory_name":"block-timestamp-deadline","title":"block-timestamp-deadline"}
```

--------------------------------------------------------------------------------
/benchmarks/block-timestamp-deadline/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"block-timestamp-deadline","function_id":null,"value_str":null,"throughput":null,"full_id":"block-timestamp-deadline","directory_name":"block-timestamp-deadline","title":"block-timestamp-deadline"}
```

--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------

```json
{
    "rust-analyzer.showUnlinkedFileNotification": false,
    "[rust]": {
        "editor.defaultFormatter": "rust-lang.rust-analyzer", // Makes the magic
        "editor.formatOnSave": true // Optional
    },
}
```

--------------------------------------------------------------------------------
/benchmarks/solmate-safe-transfer-lib/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"solmate-safe-transfer-lib","function_id":null,"value_str":null,"throughput":null,"full_id":"solmate-safe-transfer-lib","directory_name":"solmate-safe-transfer-lib","title":"solmate-safe-transfer-lib"}
```

--------------------------------------------------------------------------------
/benchmarks/solmate-safe-transfer-lib/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"solmate-safe-transfer-lib","function_id":null,"value_str":null,"throughput":null,"full_id":"solmate-safe-transfer-lib","directory_name":"solmate-safe-transfer-lib","title":"solmate-safe-transfer-lib"}
```

--------------------------------------------------------------------------------
/benchmarks/useless-internal-function/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"useless-internal-function","function_id":null,"value_str":null,"throughput":null,"full_id":"useless-internal-function","directory_name":"useless-internal-function","title":"useless-internal-function"}
```

--------------------------------------------------------------------------------
/benchmarks/useless-internal-function/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"useless-internal-function","function_id":null,"value_str":null,"throughput":null,"full_id":"useless-internal-function","directory_name":"useless-internal-function","title":"useless-internal-function"}
```

--------------------------------------------------------------------------------
/tests/contract-playground/foundry.toml:
--------------------------------------------------------------------------------

```toml
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
bytecode_hash = "none"

[profile.sample]
out = "sample_out"
bytecode_hash = "none"

[profile.uniswap]
src = "src/uniswap"
out = "out"
bytecode_hash = "none"
```

--------------------------------------------------------------------------------
/tools/xtask/Cargo.toml:
--------------------------------------------------------------------------------

```toml
[package]
name = "xtask"
description = "Auxiliary build tool"
version = "0.5.2"
edition = { workspace = true }
publish = false

[dependencies]
anyhow = "1.0"
xflags = "0.3"
xshell = "0.2"

[lints]
workspace = true

```

--------------------------------------------------------------------------------
/aderyn/oranda.json:
--------------------------------------------------------------------------------

```json
{
  "build": {
    "path_prefix": "aderyn"
  },
  "styles": {
    "favicon": "https://www.axo.dev/favicon.ico",
    "theme": "axo_dark"
  },
  "components": {
    "artifacts": {
      "cargo_dist": true
    }
  }
}

```

--------------------------------------------------------------------------------
/benchmarks/unspecific-solidity-pragma/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"unspecific-solidity-pragma","function_id":null,"value_str":null,"throughput":null,"full_id":"unspecific-solidity-pragma","directory_name":"unspecific-solidity-pragma","title":"unspecific-solidity-pragma"}
```

--------------------------------------------------------------------------------
/benchmarks/unspecific-solidity-pragma/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"unspecific-solidity-pragma","function_id":null,"value_str":null,"throughput":null,"full_id":"unspecific-solidity-pragma","directory_name":"unspecific-solidity-pragma","title":"unspecific-solidity-pragma"}
```

--------------------------------------------------------------------------------
/benchmarks/non-reentrant-before-others/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"non-reentrant-before-others","function_id":null,"value_str":null,"throughput":null,"full_id":"non-reentrant-before-others","directory_name":"non-reentrant-before-others","title":"non-reentrant-before-others"}
```

--------------------------------------------------------------------------------
/benchmarks/non-reentrant-before-others/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"non-reentrant-before-others","function_id":null,"value_str":null,"throughput":null,"full_id":"non-reentrant-before-others","directory_name":"non-reentrant-before-others","title":"non-reentrant-before-others"}
```

--------------------------------------------------------------------------------
/benchmarks/constants-instead-of-literals/base/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"constants-instead-of-literals","function_id":null,"value_str":null,"throughput":null,"full_id":"constants-instead-of-literals","directory_name":"constants-instead-of-literals","title":"constants-instead-of-literals"}
```

--------------------------------------------------------------------------------
/benchmarks/constants-instead-of-literals/new/benchmark.json:
--------------------------------------------------------------------------------

```json
{"group_id":"constants-instead-of-literals","function_id":null,"value_str":null,"throughput":null,"full_id":"constants-instead-of-literals","directory_name":"constants-instead-of-literals","title":"constants-instead-of-literals"}
```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/disp/errors.rs:
--------------------------------------------------------------------------------

```rust
use crate::ast::*;
use std::fmt::Display;

impl Display for ErrorDefinition {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_fmt(format_args!("error {}{}", self.name, self.parameters))
    }
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/disp/events.rs:
--------------------------------------------------------------------------------

```rust
use crate::ast::*;
use std::fmt::Display;

impl Display for EventDefinition {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_fmt(format_args!("event {}{}", self.name, self.parameters))
    }
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/disp/user_defined_value_types.rs:
--------------------------------------------------------------------------------

```rust
use crate::ast::*;
use std::fmt::Display;

impl Display for UserDefinedValueTypeDefinition {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_fmt(format_args!("type {} is {}", self.name, self.underlying_type,))
    }
}

```

--------------------------------------------------------------------------------
/tests/foundry-nft-f23/foundry.toml:
--------------------------------------------------------------------------------

```toml
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
remappings = ["@oz/contracts=lib/openzeppelin-contracts/contracts", "icm/=src/inner-core-modules"]

# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/node/literals.rs:
--------------------------------------------------------------------------------

```rust
use crate::{ast::*, visitor::ast_visitor::*};
use eyre::Result;

impl Node for Literal {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        visitor.visit_literal(self)?;
        visitor.end_visit_literal(self)
    }
    macros::accept_id!();
}

```

--------------------------------------------------------------------------------
/aderyn_driver/src/lib.rs:
--------------------------------------------------------------------------------

```rust
#![feature(result_option_map_or_default)]

mod display;
mod interface;
mod mcp;
mod runner;

pub mod compile;
pub mod config;
pub mod driver;
pub mod process;

pub use aderyn_core::{ast as core_ast, detect as detection_modules, detect::detector};
pub use mcp::SingletonMcpServer;

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/node/pragma_directives.rs:
--------------------------------------------------------------------------------

```rust
use crate::{ast::*, visitor::ast_visitor::*};
use eyre::Result;

impl Node for PragmaDirective {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        visitor.visit_pragma_directive(self)?;
        visitor.end_visit_pragma_directive(self)
    }
    macros::accept_id!();
}

```

--------------------------------------------------------------------------------
/tests/ast/global_enum.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"E":[2]},"id":3,"nodeType":"SourceUnit","nodes":[{"canonicalName":"E","id":2,"members":[{"id":1,"name":"A","nameLocation":"9:1:1","nodeType":"EnumValue","src":"9:1:1"}],"name":"E","nameLocation":"5:1:1","nodeType":"EnumDefinition","src":"0:12:1"}],"src":"0:13:1"}

```

--------------------------------------------------------------------------------
/rustfmt.toml:
--------------------------------------------------------------------------------

```toml
reorder_imports = true
imports_granularity = "Crate"
use_small_heuristics = "Max"
comment_width = 100
wrap_comments = true
binop_separator = "Front"
trailing_comma = "Vertical"
trailing_semicolon = false
use_field_init_shorthand = true
format_code_in_doc_comments = true
doc_comment_code_block_width = 100

```

--------------------------------------------------------------------------------
/.cargo/config.toml:
--------------------------------------------------------------------------------

```toml
[alias]
xtask = "run --package xtask --bin xtask --"
prep = "xtask reportgen"
patch = "xtask cut-release --patch"
minor = "xtask cut-release --minor"
blesspr = "xtask blesspr"
tomlgen = "xtask tomlgen"
fixfmt = "fmt --all"
fixclippy = "clippy --quiet --workspace --all-targets --all-features --allow-dirty --fix"

```

--------------------------------------------------------------------------------
/aderyn_core/tests/common/mod.rs:
--------------------------------------------------------------------------------

```rust
mod ancestral_line;
mod closest_ancestor;
mod immediate_children;
mod immediate_parent;
mod new_ast_nodes;
mod peek_over;
mod sibling;

pub use ancestral_line::*;
pub use closest_ancestor::*;
pub use immediate_children::*;
pub use immediate_parent::*;
pub use new_ast_nodes::*;
pub use peek_over::*;
pub use sibling::*;

```

--------------------------------------------------------------------------------
/aderyn_core/src/lib.rs:
--------------------------------------------------------------------------------

```rust
pub mod ast;
pub mod audit;
pub mod context;
pub mod detect;
pub mod stats;
pub mod test_utils;
pub mod visitor;

// Use this to detect issues (Actively maintained)
pub use detect::entrypoint as report;
pub use report::detect_issues;

// Use this as audit tools (De-prioritized)
pub use audit::entrypoint as audit_tools;

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/disp.rs:
--------------------------------------------------------------------------------

```rust
pub mod blocks;
pub mod contracts;
pub mod enumerations;
pub mod errors;
pub mod events;
pub mod expressions;
pub mod functions;
pub mod identifiers;
pub mod literals;
pub mod modifiers;
pub mod statements;
pub mod structures;
pub mod types;
pub mod user_defined_value_types;
pub mod using_for_directives;
pub mod variables;

```

--------------------------------------------------------------------------------
/cyfrinup/why.md:
--------------------------------------------------------------------------------

```markdown
Why does this file dynamic_script exist ?

* To support existing cyfrinup users (The ones who installed cyfrinup from aderyn)
* The new way to install cyfrinup is from https://github.com/Cyfrin/up

* Don't change the location (cyfrinup/dynamic_script)
* Don't delete this branch (master branch)
* Don't rename this branch (master branch)

IMPORTANT

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/disp/identifiers.rs:
--------------------------------------------------------------------------------

```rust
use crate::ast::*;
use std::fmt::Display;

impl Display for Identifier {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_str(self.name.as_str())
    }
}

impl Display for IdentifierPath {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_str(self.name.as_str())
    }
}

```

--------------------------------------------------------------------------------
/tests/foundry-nft-f23-icm/remappings.txt:
--------------------------------------------------------------------------------

```
@oz/contracts/=lib/openzeppelin-contracts/contracts/
icm/=src/inner-core-modules/
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/
erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/
forge-std/=lib/forge-std/src/
openzeppelin-contracts/=lib/openzeppelin-contracts/

```

--------------------------------------------------------------------------------
/tests/foundry-nft-f23/remappings.txt:
--------------------------------------------------------------------------------

```
@oz/contracts/=lib/openzeppelin-contracts/contracts/
icm/=src/inner-core-modules/
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/
erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/
forge-std/=lib/forge-std/src/
openzeppelin-contracts/=lib/openzeppelin-contracts/

```

--------------------------------------------------------------------------------
/aderyn_core/templates/mcp-tool-response/node_finder_get_all.md:
--------------------------------------------------------------------------------

```markdown
## List of Node IDs and compilation unit indexes for all {{ node_type }}

{% if nodes.len() > 0 %}
{% for n in nodes %}
- Name: {{ n.name }} | NodeID: {{ n.node_id }} | CompilationUnitIndex: {{ n.compilation_unit_index }}
{% endfor %}
{% else %}
No {{ node_type }} nodes found !
{% endif %}

### Tip: Now, use the node summarizer tool to investigate these nodes

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/disp/structures.rs:
--------------------------------------------------------------------------------

```rust
use crate::ast::*;
use std::fmt::Display;

impl Display for StructDefinition {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_fmt(format_args!("struct {} {{\n", self.name))?;

        for member in self.members.iter() {
            f.write_fmt(format_args!("\t{member};\n"))?;
        }

        f.write_str("}")
    }
}

```

--------------------------------------------------------------------------------
/.github/workflows/dependencies.yml:
--------------------------------------------------------------------------------

```yaml
# Runs `cargo update` periodically.

name: Dependencies

on:
  schedule:
    # Run weekly
    - cron: "0 13 * * SUN"
  workflow_dispatch:
    # Needed so we can run it manually

permissions:
  contents: write
  pull-requests: write

jobs:
  update:
    uses: cyfrin/ci/.github/workflows/cargo-update-pr.yml@main
    secrets:
      token: ${{ secrets.GITHUB_TOKEN }}

```

--------------------------------------------------------------------------------
/tests/ast/smoke.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C":[1]},"id":2,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":1,"linearizedBaseContracts":[1],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[],"scope":2,"src":"0:13:1","usedErrors":[]}],"src":"0:14:1"}

```

--------------------------------------------------------------------------------
/benchmarks/constants-instead-of-literals/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.2304644673752343,"upper_bound":0.2836103583226366},"point_estimate":0.2555964540676632,"standard_error":0.013668433098330088},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.23410624969175498,"upper_bound":0.28137830306259226},"point_estimate":0.255863349825838,"standard_error":0.01091889072949671}}
```

--------------------------------------------------------------------------------
/benchmarks/inconsistent-type-names/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.11507827990187239,"upper_bound":0.260787988997303},"point_estimate":0.18267223511910147,"standard_error":0.03702971062399887},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.07395985819044393,"upper_bound":0.19244746647757105},"point_estimate":0.1292845678642669,"standard_error":0.0312794607053693}}
```

--------------------------------------------------------------------------------
/benchmarks/unindexed-events/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.2231284018801977,"upper_bound":0.26122818773932927},"point_estimate":0.2421793991692307,"standard_error":0.00966467841379027},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.2363290446511357,"upper_bound":0.26245735684730165},"point_estimate":0.2527294660843511,"standard_error":0.00636923695976504}}
```

--------------------------------------------------------------------------------
/benchmarks/aderyn/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.18459828421517133,"upper_bound":0.2908493398392847},"point_estimate":0.23709096764774906,"standard_error":0.0274031214685985},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.1222985354981565,"upper_bound":0.25353205407930934},"point_estimate":0.1730272680196443,"standard_error":0.043756226418304595}}
```

--------------------------------------------------------------------------------
/benchmarks/unsafe-oz-erc721-mint/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.19154766165666307,"upper_bound":0.2363117371553592},"point_estimate":0.2138181557757537,"standard_error":0.01147432486199359},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.22577513767889013,"upper_bound":0.2856583033378013},"point_estimate":0.25595683015160864,"standard_error":0.020154385975473834}}
```

--------------------------------------------------------------------------------
/benchmarks/require-with-string/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.08470470900806529,"upper_bound":0.13650914242408738},"point_estimate":0.11129129963271955,"standard_error":0.013075828997862221},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.07008408416489931,"upper_bound":0.131979118615982},"point_estimate":0.11617206079308806,"standard_error":0.01762845161408381}}
```

--------------------------------------------------------------------------------
/benchmarks/unprotected-initializer/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.10422525680183017,"upper_bound":0.15921938469651462},"point_estimate":0.13234566792603975,"standard_error":0.013970159838129076},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.12024791775714583,"upper_bound":0.1708133252205546},"point_estimate":0.13933719191933558,"standard_error":0.013111840198843034}}
```

--------------------------------------------------------------------------------
/benchmarks/unsafe-erc20-functions/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.19186709905203972,"upper_bound":0.24864930794058382},"point_estimate":0.21806274798852998,"standard_error":0.014933306293329503},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.1861209339338803,"upper_bound":0.21666210707795874},"point_estimate":0.19984866496690357,"standard_error":0.006883440883201164}}
```

--------------------------------------------------------------------------------
/benchmarks/deprecated-oz-functions/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.05034215609152555,"upper_bound":0.13318624217413327},"point_estimate":0.08784060599331789,"standard_error":0.021032955402811023},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.051561444905542375,"upper_bound":0.08003882431087761},"point_estimate":0.0687782306032394,"standard_error":0.007468054979754801}}
```

--------------------------------------------------------------------------------
/benchmarks/large-numeric-literal/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.04164237613327339,"upper_bound":0.08104553956620382},"point_estimate":0.060233742887845665,"standard_error":0.01000169549810649},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.02664898746862865,"upper_bound":0.04779890487572791},"point_estimate":0.03955766789299542,"standard_error":0.005362763178234432}}
```

--------------------------------------------------------------------------------
/benchmarks/solmate-safe-transfer-lib/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.02270077089176444,"upper_bound":0.052206873542652396},"point_estimate":0.036619720477730544,"standard_error":0.007505833743210787},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.03998135307362105,"upper_bound":0.0564168865004826},"point_estimate":0.04657488716239877,"standard_error":0.003982970326183508}}
```

--------------------------------------------------------------------------------
/benchmarks/centralization-risk/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.05557981941189865,"upper_bound":0.08157323098605106},"point_estimate":0.06765189442867259,"standard_error":0.006639736942282112},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.061127581548396925,"upper_bound":0.07130039762370807},"point_estimate":0.06727113805527551,"standard_error":0.0026426212685625606}}
```

--------------------------------------------------------------------------------
/benchmarks/non-reentrant-before-others/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.19247387824058612,"upper_bound":-0.1540273193483068},"point_estimate":-0.17270162020722646,"standard_error":0.00983083895771451},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.1634056179930612,"upper_bound":-0.13588635196403887},"point_estimate":-0.15303706565382502,"standard_error":0.007022807261505105}}
```

--------------------------------------------------------------------------------
/benchmarks/useless-modifier/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.24667191328817295,"upper_bound":-0.1711562018329418},"point_estimate":-0.2086702191099329,"standard_error":0.019343034603648245},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.1372056294807137,"upper_bound":-0.11437625149633945},"point_estimate":-0.12489674183505184,"standard_error":0.005935699349106572}}
```

--------------------------------------------------------------------------------
/benchmarks/zero-address-check/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.1166576213918913,"upper_bound":-0.045318985308371314},"point_estimate":-0.07959277850387769,"standard_error":0.01825462454322313},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.05909160828753046,"upper_bound":-0.0138332871382576},"point_estimate":-0.03905866069535058,"standard_error":0.01146088228435885}}
```

--------------------------------------------------------------------------------
/benchmarks/delegate-call-in-loop/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.01923442891315579,"upper_bound":0.045794961933755735},"point_estimate":0.03183848854555604,"standard_error":0.006796872354841665},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":0.030087232643266626,"upper_bound":0.040116378633839656},"point_estimate":0.03584070334728784,"standard_error":0.0027584335867530513}}
```

--------------------------------------------------------------------------------
/benchmarks/block-timestamp-deadline/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.08864842497820327,"upper_bound":-0.052022743707901005},"point_estimate":-0.07033575985250085,"standard_error":0.009322991046485948},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.09030168772453417,"upper_bound":-0.05925709151443026},"point_estimate":-0.0768567966459347,"standard_error":0.00782612878075919}}
```

--------------------------------------------------------------------------------
/benchmarks/ecrecover/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.038640715264485,"upper_bound":0.03075957538923424},"point_estimate":-0.008889453516800483,"standard_error":0.017706089025754927},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.029639659498790105,"upper_bound":0.00206123694192617},"point_estimate":-0.015919609024937498,"standard_error":0.007684173875484277}}
```

--------------------------------------------------------------------------------
/benchmarks/empty-block/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.13013682208538654,"upper_bound":-0.09909525684229743},"point_estimate":-0.11424228876949039,"standard_error":0.007888634881575365},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.1134577528216575,"upper_bound":-0.09515296265418605},"point_estimate":-0.10457456910782315,"standard_error":0.004530557889843372}}
```

--------------------------------------------------------------------------------
/benchmarks/push-zero-opcode/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.15031487886375028,"upper_bound":-0.10290861183722898},"point_estimate":-0.12565908793344926,"standard_error":0.012081532529051647},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.1200802975068389,"upper_bound":-0.08171786426128666},"point_estimate":-0.09736355512517914,"standard_error":0.008690414075589278}}
```

--------------------------------------------------------------------------------
/benchmarks/useless-internal-function/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.03625602385108224,"upper_bound":0.0622741900613067},"point_estimate":0.011375644861571388,"standard_error":0.025146790022912827},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.0022510158335653507,"upper_bound":0.041257540415950526},"point_estimate":0.012760327597773236,"standard_error":0.011624854117686899}}
```

--------------------------------------------------------------------------------
/benchmarks/unspecific-solidity-pragma/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.05534505214482258,"upper_bound":-0.016459417227862285},"point_estimate":-0.035263136669480555,"standard_error":0.009879386749350481},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.01805537827677761,"upper_bound":0.023109409491738342},"point_estimate":0.007201816535256533,"standard_error":0.010570931377548056}}
```

--------------------------------------------------------------------------------
/benchmarks/avoid-abi-encode-packed/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.055300891011265556,"upper_bound":-0.014009501757529144},"point_estimate":-0.03345029890171669,"standard_error":0.010528456143212517},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.03916809300932156,"upper_bound":-0.011241474036724597},"point_estimate":-0.02694527695390625,"standard_error":0.007480058001538933}}
```

--------------------------------------------------------------------------------
/benchmarks/arbitrary-transfer-from/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.061353370740656187,"upper_bound":0.0026567942969303324},"point_estimate":-0.02722292315621233,"standard_error":0.016283745226276618},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.0010873602534972049,"upper_bound":0.032037099574494965},"point_estimate":0.021917850875370792,"standard_error":0.008154835906145632}}
```

--------------------------------------------------------------------------------
/benchmarks/useless-public-function/change/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.02441879241081983,"upper_bound":0.012481220806996174},"point_estimate":-0.006268967900450062,"standard_error":0.009386207456287382},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":-0.03836100983652091,"upper_bound":-0.0016011197871399485},"point_estimate":-0.019456822896066872,"standard_error":0.010117925503257076}}
```

--------------------------------------------------------------------------------
/tests/ast/license.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C":[1]},"id":2,"license":"GPL-3.0","nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":1,"linearizedBaseContracts":[1],"name":"C","nameLocation":"45:1:1","nodeType":"ContractDefinition","nodes":[],"scope":2,"src":"36:13:1","usedErrors":[]}],"src":"36:14:1"}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/node.rs:
--------------------------------------------------------------------------------

```rust
pub mod blocks;
pub mod contracts;
pub mod documentation;
pub mod enumerations;
pub mod errors;
pub mod events;
pub mod expressions;
pub mod functions;
pub mod identifiers;
pub mod import_directives;
pub mod literals;
pub mod modifiers;
pub mod pragma_directives;
pub mod source_units;
pub mod statements;
pub mod structures;
pub mod types;
pub mod user_defined_value_types;
pub mod using_for_directives;
pub mod variables;

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/disp/using_for_directives.rs:
--------------------------------------------------------------------------------

```rust
use crate::ast::*;

use std::fmt::Display;

impl Display for UsingForDirective {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_fmt(format_args!(
            "using {:?} for {}",
            self.library_name,
            match self.type_name.as_ref() {
                Some(type_name) => format!("{type_name}"),
                None => "_".to_string(),
            }
        ))
    }
}

```

--------------------------------------------------------------------------------
/tests/foundry-nft-f23-icm/foundry.toml:
--------------------------------------------------------------------------------

```toml
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
remappings = ["@oz/contracts=lib/openzeppelin-contracts/contracts", "icm/=src/inner-core-modules"]

[profile.icm]
src = "src/inner-core-modules"
out = "out"
libs = ["lib"]
remappings = ["@oz/contracts=lib/openzeppelin-contracts/contracts", "icm/=src/inner-core-modules"]

# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options

```

--------------------------------------------------------------------------------
/cli/benchmarks.sh:
--------------------------------------------------------------------------------

```bash
# This script will bench each individual detectors as well as overall aderyn 
# Note: We Must skip CLOC counting and forge build phase. 

# Copy the existing benchmarks to target/ so aderyn can know the history
cp -r benchmarks/* target/criterion/

# Make the bench
cargo bench

# Replace the benchmarks to the reflect the latest
cp -r target/criterion/* benchmarks/

# Open the benchmarks reports in browser
open benchmarks/report/index.html
```

--------------------------------------------------------------------------------
/aderyn_core/src/context/flow/error.rs:
--------------------------------------------------------------------------------

```rust
use derive_more::From;

pub type Result<T> = core::result::Result<T, Error>;

#[derive(Debug, From)]
pub enum Error {
    #[from]
    Custom(String),
}

impl core::fmt::Display for Error {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{self:?}")
    }
}

impl From<&str> for Error {
    fn from(value: &str) -> Self {
        Error::Custom(value.to_string())
    }
}

impl std::error::Error for Error {}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/node/user_defined_value_types.rs:
--------------------------------------------------------------------------------

```rust
use crate::{
    ast::*,
    visitor::ast_visitor::{ASTConstVisitor, Node},
};
use eyre::Result;

impl Node for UserDefinedValueTypeDefinition {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        if visitor.visit_user_defined_value_type_definition(self)? {
            self.underlying_type.accept(visitor)?;
        }
        visitor.end_visit_user_defined_value_type_definition(self)?;
        Ok(())
    }
    macros::accept_id!();
}

```

--------------------------------------------------------------------------------
/aderyn_core/templates/mcp-tool-response/node_finder_search.md:
--------------------------------------------------------------------------------

```markdown
## Node IDs and compilation unit indexes of matching {{ node_type }}s.

### Search input: {{ term }}

{% if matching_nodes.len() > 0 %}
### Matching {{ node_type }}s

{% for node_info in matching_nodes %}
- Name: {{ node_info.name }} | NodeID: {{ node_info.node_id }} | CompilationUnitIndex: {{ node_info.compilation_unit_index }}
{% endfor %}
{% else %}
No match found for {{ node_type }}s !
{% endif %}

### Tip: Now, use the node summarizer tool to investigate these nodes

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/mcp/list_contracts/render.rs:
--------------------------------------------------------------------------------

```rust
use askama::Template;
use derive_builder::Builder;
use serde::Serialize;

use crate::ast::NodeID;

#[derive(Builder, Serialize, Template)]
#[template(path = "mcp-tool-response/list_contracts.md")]
#[builder(pattern = "owned")]
pub struct ContractsList {
    pub contracts_info: Vec<ContractInfo>,
    pub compilation_unit_index: usize,
}

#[derive(Builder, Serialize)]
#[builder(pattern = "owned")]
pub struct ContractInfo {
    pub name: String,
    pub filepath: String,
    pub node_id: NodeID,
}

```

--------------------------------------------------------------------------------
/tests/ast/documentation_1.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C":[2]},"id":3,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","documentation":{"id":1,"nodeType":"StructuredDocumentation","src":"0:27:1","text":"This contract is empty"},"fullyImplemented":true,"id":2,"linearizedBaseContracts":[2],"name":"C","nameLocation":"37:1:1","nodeType":"ContractDefinition","nodes":[],"scope":3,"src":"28:13:1","usedErrors":[]}],"src":"28:14:1"}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/disp/enumerations.rs:
--------------------------------------------------------------------------------

```rust
use crate::ast::*;
use std::fmt::Display;

impl Display for EnumValue {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_str(self.name.as_str())
    }
}

impl Display for EnumDefinition {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_fmt(format_args!("enum {} {{\n", self.name))?;

        for member in self.members.iter() {
            f.write_fmt(format_args!("\t{member},"))?;
        }

        f.write_str("}")
    }
}

```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/artifacts/contracts/IContractInheritance.sol/IContractInheritance.json:
--------------------------------------------------------------------------------

```json
{
  "_format": "hh-sol-artifact-1",
  "contractName": "IContractInheritance",
  "sourceName": "contracts/IContractInheritance.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "something",
          "type": "uint256"
        }
      ],
      "name": "doSomething",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "linkReferences": {},
  "deployedLinkReferences": {}
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/browser.rs:
--------------------------------------------------------------------------------

```rust
mod ancestral_line;
mod closest_ancestor;
mod external_calls;
mod extractor;
mod immediate_children;
mod location;
mod macros;
mod parent;
mod peek;
mod peek_over;
mod peek_under;
mod siblings;
mod sort_nodes;
mod storage_vars;
pub use ancestral_line::*;
pub use closest_ancestor::*;
pub use external_calls::*;
pub use extractor::*;
pub use immediate_children::*;
pub use location::*;
pub use parent::*;
pub use peek::*;
pub use peek_over::*;
pub use peek_under::*;
pub use siblings::*;
pub use sort_nodes::*;
pub use storage_vars::*;

```

--------------------------------------------------------------------------------
/tests/ast/documentation_2.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"b","exportedSymbols":{"C":[5]},"id":6,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","documentation":{"id":4,"nodeType":"StructuredDocumentation","src":"0:61:2","text":"This contract is empty\nand has a line-breaking comment."},"fullyImplemented":true,"id":5,"linearizedBaseContracts":[5],"name":"C","nameLocation":"71:1:2","nodeType":"ContractDefinition","nodes":[],"scope":6,"src":"62:13:2","usedErrors":[]}],"src":"62:14:2"}

```

--------------------------------------------------------------------------------
/tools/xtask/src/tomlgen.rs:
--------------------------------------------------------------------------------

```rust
use xshell::{Shell, cmd};

pub fn init_toml_files() -> anyhow::Result<()> {
    let sh = Shell::new()?;
    sh.change_dir(env!("CARGO_MANIFEST_DIR"));
    sh.change_dir("../../");

    let cmd = cmd!(sh, "rm -rf ./tests/toml/nested_project1/aderyn.toml");
    cmd.run()?;

    let cmd = cmd!(sh, "rm -rf ./tests/toml/nested_project2/aderyn.toml");
    cmd.run()?;

    let cmd = cmd!(sh, "cargo run -- init ./tests/toml/nested_project1");
    cmd.run()?;

    let cmd = cmd!(sh, "cargo run -- init ./tests/toml/nested_project2");
    cmd.run()?;

    Ok(())
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/magic.rs:
--------------------------------------------------------------------------------

```rust
use serde_repr::{Deserialize_repr, Serialize_repr};

#[repr(i64)]
#[derive(Clone, Copy, Debug, Deserialize_repr, Serialize_repr, PartialEq, Eq)]
pub enum MagicVariableID {
    Abi = -1,
    Addmod = -2,
    Assert = -3,
    Block = -4,
    Blockhash = -5,
    Ecrecover = -6,
    Gasleft = -7,
    Keccak256 = -8,
    Msg = -15,
    Mulmod = -16,
    Now = -17,
    Require = -18,
    Revert = -19,
    Ripemd160 = -20,
    Selfdestruct = -21,
    Sha256 = -22,
    Sha3 = -23,
    Suicide = -24,
    Super = -25,
    Tx = -26,
    Type = -27,
    This = -28,
}

```

--------------------------------------------------------------------------------
/tests/hardhat-js-playground/package.json:
--------------------------------------------------------------------------------

```json
{
  "dependencies": {
    "hardhat": "^2.18.3"
  },
  "devDependencies": {
    "@nomicfoundation/hardhat-chai-matchers": "^2.0.0",
    "@nomicfoundation/hardhat-ethers": "^3.0.0",
    "@nomicfoundation/hardhat-network-helpers": "^1.0.0",
    "@nomicfoundation/hardhat-toolbox": "^3.0.0",
    "@nomicfoundation/hardhat-verify": "^1.0.0",
    "@typechain/ethers-v6": "^0.4.0",
    "@typechain/hardhat": "^8.0.0",
    "chai": "^4.2.0",
    "ethers": "^6.4.0",
    "hardhat-gas-reporter": "^1.0.8",
    "solidity-coverage": "^0.8.0",
    "typechain": "^8.1.0"
  }
}

```

--------------------------------------------------------------------------------
/aderyn_core/templates/mcp-tool-response/node_finder_grep.md:
--------------------------------------------------------------------------------

```markdown
## Node IDs and compilation unit indexes for matching nodes.

### Regex input: {{ term }}

{% if nodes.len() > 0 %}
{% for (node_type, inodes) in nodes %}
{% if inodes.len() > 0 %}
### Found in implementation code of following {{ node_type }}s
{% for node_info in inodes %}
- Name: {{ node_info.name }} | NodeID: {{ node_info.node_id }} | CompilationUnitIndex: {{ node_info.compilation_unit_index }}
{% endfor %}
{% endif %}
{% endfor %}
### Tip: Now, use the node summarizer tool to investigate these nodes
{% else %}
### No match found for regex {{ term }} !
{% endif %}

```

--------------------------------------------------------------------------------
/tests/contract-playground/.github/workflows/test.yml:
--------------------------------------------------------------------------------

```yaml
name: test

on: workflow_dispatch

env:
  FOUNDRY_PROFILE: ci

jobs:
  check:
    strategy:
      fail-fast: true

    name: Foundry project
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive

      - name: Install Foundry
        uses: foundry-rs/foundry-toolchain@v1
        with:
          version: nightly

      - name: Run Forge build
        run: |
          forge --version
          forge build --sizes
        id: build

      - name: Run Forge tests
        run: |
          forge test -vvv
        id: test

```

--------------------------------------------------------------------------------
/tests/foundry-nft-f23-icm/.github/workflows/test.yml:
--------------------------------------------------------------------------------

```yaml
name: test

on: workflow_dispatch

env:
  FOUNDRY_PROFILE: ci

jobs:
  check:
    strategy:
      fail-fast: true

    name: Foundry project
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive

      - name: Install Foundry
        uses: foundry-rs/foundry-toolchain@v1
        with:
          version: nightly

      - name: Run Forge build
        run: |
          forge --version
          forge build --sizes
        id: build

      - name: Run Forge tests
        run: |
          forge test -vvv
        id: test

```

--------------------------------------------------------------------------------
/tests/foundry-nft-f23/.github/workflows/test.yml:
--------------------------------------------------------------------------------

```yaml
name: test

on: workflow_dispatch

env:
  FOUNDRY_PROFILE: ci

jobs:
  check:
    strategy:
      fail-fast: true

    name: Foundry project
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive

      - name: Install Foundry
        uses: foundry-rs/foundry-toolchain@v1
        with:
          version: nightly

      - name: Run Forge build
        run: |
          forge --version
          forge build --sizes
        id: build

      - name: Run Forge tests
        run: |
          forge test -vvv
        id: test

```

--------------------------------------------------------------------------------
/aderyn/src/completions.rs:
--------------------------------------------------------------------------------

```rust
use clap_complete::Shell;

#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, clap::ValueEnum)]
pub enum SupportedShellsForCompletions {
    Fish,
    Bash,
    Elvish,
    Zsh,
}

impl From<SupportedShellsForCompletions> for Shell {
    fn from(shell: SupportedShellsForCompletions) -> Self {
        match shell {
            SupportedShellsForCompletions::Fish => Shell::Fish,
            SupportedShellsForCompletions::Bash => Shell::Bash,
            SupportedShellsForCompletions::Elvish => Shell::Elvish,
            SupportedShellsForCompletions::Zsh => Shell::Zsh,
        }
    }
}

```

--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------

```markdown
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

## Consider opening a [discussion](https://github.com/Cyfrin/aderyn/discussions) instead of an issue for this.


Try answering the follows:

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Additional context**
Add any other context or screenshots about the feature request here.

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/disp/literals.rs:
--------------------------------------------------------------------------------

```rust
use crate::ast::*;
use std::fmt::Display;

impl Display for Literal {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        if let LiteralKind::String = self.kind {
            f.write_str("\"")?;
        }

        if let Some(value) = self.value.as_ref() {
            f.write_str(value.as_str())?;
        }
        f.write_str(self.hex_value.as_str())?;

        if let Some(subdenomination) = self.subdenomination.as_ref() {
            subdenomination.fmt(f)?;
        }

        if let LiteralKind::String = self.kind {
            f.write_str("\"")?;
        }

        Ok(())
    }
}

```

--------------------------------------------------------------------------------
/deny.toml:
--------------------------------------------------------------------------------

```toml
# Root options
[graph]
all-features = false
no-default-features = false
[output]
feature-depth = 1

# This section is considered when running `cargo deny check bans`.
[bans]
multiple-versions = "allow"
wildcards = "allow"
highlight = "all"
workspace-default-features = "allow"
external-default-features = "allow"
deny = [ "openssl" ]

# This section is considered when running `cargo deny check sources`.
[sources]
unknown-registry = "deny"
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
unknown-git = "deny"
allow-git = ["https://github.com/Cyfrin/solidity-ast-rs", "https://github.com/foundry-rs/foundry"]

```

--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/false_positive_issue.md:
--------------------------------------------------------------------------------

```markdown
---
name: Report False Positive Issue 
about: Make the case for a false positive and help us improve the detector
title: ''
labels: ''
assignees: ''

---

**Detector Title**
The title of the detector (usually starts after **H-** or **L-** in the report)

**To Reproduce**
Steps to reproduce the behavior:
1. Clone repo: '...'
2. Run aderyn with this '...'
3. Scroll down to '...'
4. See error

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Expected behavior**
A clear and concise description of what you expected to happen.

**Additional context**
Add any other context about the problem here.

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/disp/blocks.rs:
--------------------------------------------------------------------------------

```rust
use crate::ast::{Block, UncheckedBlock};
use std::fmt::Display;

impl Display for Block {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_str("{\n")?;

        for statement in self.statements.iter() {
            f.write_fmt(format_args!("\t{statement};\n"))?;
        }

        f.write_str("}")
    }
}

impl Display for UncheckedBlock {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_str("{\n")?;

        for statement in self.statements.iter() {
            f.write_fmt(format_args!("\t{statement};\n"))?;
        }

        f.write_str("}")
    }
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/mcp/project_overview/render.rs:
--------------------------------------------------------------------------------

```rust
use askama::Template;
use derive_builder::Builder;
use serde::Serialize;

#[derive(Builder, Serialize, Template)]
#[template(path = "mcp-tool-response/project_overview.md")]
#[builder(pattern = "owned")]
pub struct ProjectOverview {
    pub root: String,
    pub source: String,
    pub remappings: Vec<String>,
    pub compilation_units: Vec<CompilationUnit>,
}

#[derive(Builder, Serialize)]
#[builder(pattern = "owned")]
pub struct CompilationUnit {
    pub files: Vec<FileEntry>,
    pub included_count: usize,
}

#[derive(Builder, Serialize)]
#[builder(pattern = "owned")]
pub struct FileEntry {
    pub path: String,
    pub included: bool,
}

```

--------------------------------------------------------------------------------
/tests/ast/event_definition.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C":[3]},"id":4,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3,"linearizedBaseContracts":[3],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"92bbf6e823a631f3c8e09b1c8df90f378fb56f7fbc9701827e1ff8aad7f6a028","id":2,"name":"E","nameLocation":"19:1:1","nodeType":"EventDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"20:2:1"},"src":"13:10:1"}],"scope":4,"src":"0:25:1","usedErrors":[]}],"src":"0:26:1"}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/node/structures.rs:
--------------------------------------------------------------------------------

```rust
use crate::{ast::*, visitor::ast_visitor::*};
use eyre::Result;

impl Node for StructDefinition {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        if visitor.visit_struct_definition(self)? {
            list_accept(&self.members, visitor)?;
        }
        self.accept_metadata(visitor)?;
        visitor.end_visit_struct_definition(self)
    }
    fn accept_metadata(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        let members_ids = &self.members.iter().map(|x| x.id).collect::<Vec<_>>();
        visitor.visit_immediate_children(self.id, members_ids.clone())?;
        Ok(())
    }
    macros::accept_id!();
}

```

--------------------------------------------------------------------------------
/tests/ast/enum_value.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C":[4]},"id":5,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":4,"linearizedBaseContracts":[4],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"canonicalName":"C.E","id":3,"members":[{"id":1,"name":"A","nameLocation":"22:1:1","nodeType":"EnumValue","src":"22:1:1"},{"id":2,"name":"B","nameLocation":"25:1:1","nodeType":"EnumValue","src":"25:1:1"}],"name":"E","nameLocation":"18:1:1","nodeType":"EnumDefinition","src":"13:15:1"}],"scope":5,"src":"0:30:1","usedErrors":[]}],"src":"0:31:1"}

```

--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------

```markdown
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Clone repo: '...'
2. Run aderyn with this '...'
3. Scroll down to '...'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
 - OS: [e.g. iOS version...]
 - Chip: [e.g. arm, amd]
 - Aderyn Version: [e.g. 22]

**Additional context**
Add any other context about the problem here.

```

--------------------------------------------------------------------------------
/tests/ast/global_struct.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"S":[3]},"id":4,"nodeType":"SourceUnit","nodes":[{"canonicalName":"S","id":3,"members":[{"constant":false,"id":2,"mutability":"mutable","name":"a","nameLocation":"19:1:1","nodeType":"VariableDeclaration","scope":3,"src":"11:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1,"name":"uint256","nodeType":"ElementaryTypeName","src":"11:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"S","nameLocation":"7:1:1","nodeType":"StructDefinition","scope":4,"src":"0:23:1","visibility":"public"}],"src":"0:24:1"}

```

--------------------------------------------------------------------------------
/aderyn_core/templates/mcp-tool-response/list_contracts.md:
--------------------------------------------------------------------------------

```markdown
## List of Contracts in Compilation Unit {{ compilation_unit_index }}

The following is the list of names of deployable contracts and their corresponding Node IDs and filepaths.

{% for c in contracts_info %}
- {{ c.name }} | {{ c.filepath }} | Node ID: {{ c.node_id }}
{% endfor %}

*Suggestion for next steps:* Use these Node IDs with the contract surface area inspection tool to analyze specific contracts.

**Note:** All contracts listed above belong to compilation unit {{ compilation_unit_index }}. If you see duplicate contract names in this list, they are actually different contracts that happen to share the same name but exist in different files, making each one unique within the compilation unit.

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/node/errors.rs:
--------------------------------------------------------------------------------

```rust
use crate::{ast::*, visitor::ast_visitor::*};
use eyre::Result;

impl Node for ErrorDefinition {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        if visitor.visit_error_definition(self)? && self.documentation.is_some() {
            self.documentation.as_ref().unwrap().accept(visitor)?;
            self.parameters.accept(visitor)?;
        }
        self.accept_metadata(visitor)?;
        visitor.end_visit_error_definition(self)
    }
    fn accept_metadata(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        // TODO: send documentation nodes to visitor
        visitor.visit_immediate_children(self.id, vec![self.parameters.id])
    }
    macros::accept_id!();
}

```

--------------------------------------------------------------------------------
/tests/ast/placeholder_statement.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C":[5]},"id":6,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5,"linearizedBaseContracts":[5],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":3,"nodeType":"Block","src":"24:6:1","statements":[{"id":2,"nodeType":"PlaceholderStatement","src":"26:1:1"}]},"id":4,"name":"M","nameLocation":"22:1:1","nodeType":"ModifierDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"24:0:1"},"src":"13:17:1","virtual":false,"visibility":"internal"}],"scope":6,"src":"0:32:1","usedErrors":[]}],"src":"0:33:1"}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/node/events.rs:
--------------------------------------------------------------------------------

```rust
use crate::{ast::*, visitor::ast_visitor::*};
use eyre::Result;

impl Node for EventDefinition {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        if visitor.visit_event_definition(self)? {
            if self.documentation.is_some() {
                self.documentation.as_ref().unwrap().accept(visitor)?;
            }
            self.parameters.accept(visitor)?;
        }
        self.accept_metadata(visitor)?;
        visitor.end_visit_event_definition(self)
    }
    fn accept_metadata(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        // TODO: documentation nodes
        visitor.visit_immediate_children(self.id, vec![self.parameters.id])?;
        Ok(())
    }
    macros::accept_id!();
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/audit/auditor.rs:
--------------------------------------------------------------------------------

```rust
use std::error::Error;

use prettytable::Row;

use crate::{
    audit::{
        attack_surface::AttackSurfaceDetector,
        public_functions_no_sender::PublicFunctionsNoSenderChecksDetector,
    },
    context::workspace::WorkspaceContext,
};

pub fn get_auditor_detectors() -> Vec<Box<dyn AuditorDetector>> {
    vec![
        Box::<AttackSurfaceDetector>::default(),
        Box::<PublicFunctionsNoSenderChecksDetector>::default(),
    ]
}

pub trait AuditorDetector: Send + Sync + 'static {
    fn detect(&mut self, _context: &WorkspaceContext) -> Result<bool, Box<dyn Error>>;

    fn title(&self) -> String;

    fn skeletal_clone(&self) -> Box<dyn AuditorDetector>;

    fn table_titles(&self) -> Row;

    fn table_rows(&self) -> Vec<Row>;
}

```

--------------------------------------------------------------------------------
/benchmarks/aderyn/base/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":110012715.45975,"upper_bound":119876058.76},"point_estimate":114670170.35,"standard_error":2522559.824001567},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":103040968.0,"upper_bound":114958188.0},"point_estimate":107556753.5,"standard_error":3978876.4603039916},"median_abs_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":14318521.333095431,"upper_bound":23442213.25071752},"point_estimate":17426259.924522042,"standard_error":2391538.6143476125},"slope":null,"std_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":18201039.33954221,"upper_bound":32321162.895440847},"point_estimate":25379575.59235664,"standard_error":3634033.308885464}}
```

--------------------------------------------------------------------------------
/benchmarks/aderyn/new/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":110012715.45975,"upper_bound":119876058.76},"point_estimate":114670170.35,"standard_error":2522559.824001567},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":103040968.0,"upper_bound":114958188.0},"point_estimate":107556753.5,"standard_error":3978876.4603039916},"median_abs_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":14318521.333095431,"upper_bound":23442213.25071752},"point_estimate":17426259.924522042,"standard_error":2391538.6143476125},"slope":null,"std_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":18201039.33954221,"upper_bound":32321162.895440847},"point_estimate":25379575.59235664,"standard_error":3634033.308885464}}
```

--------------------------------------------------------------------------------
/tools/xtask/src/main.rs:
--------------------------------------------------------------------------------

```rust
//! See <https://github.com/matklad/cargo-xtask/>.
//!
//! This binary defines various auxiliary build commands, which are not expressible with just
//! `cargo`.
//!
//! This binary is integrated into the `cargo` command line by using an alias in `.cargo/config`.

#![allow(unreachable_pub, unexpected_cfgs)]

mod blesspr;
mod cut_release;
mod flags;
mod reportgen;
mod tomlgen;

fn main() -> anyhow::Result<()> {
    let flags = flags::Xtask::from_env_or_exit();
    match flags.subcommand {
        flags::XtaskCmd::Reportgen(choice) => reportgen::reportgen(choice),
        flags::XtaskCmd::CutRelease(cut_release) => cut_release::cut_release(cut_release),
        flags::XtaskCmd::Blesspr(..) => blesspr::blesspr(),
        flags::XtaskCmd::Tomlgen(..) => tomlgen::init_toml_files(),
    }
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/node/identifiers.rs:
--------------------------------------------------------------------------------

```rust
use crate::{ast::*, visitor::ast_visitor::*};
use eyre::Result;

impl Node for Identifier {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        visitor.visit_identifier(self)?;
        self.accept_metadata(visitor)?;
        visitor.end_visit_identifier(self)
    }
    fn accept_metadata(&self, _visitor: &mut impl ASTConstVisitor) -> Result<()> {
        Ok(())
    }
    macros::accept_id!();
}

impl Node for IdentifierPath {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        visitor.visit_identifier_path(self)?;
        self.accept_metadata(visitor)?;
        visitor.end_visit_identifier_path(self)
    }
    fn accept_metadata(&self, _visitor: &mut impl ASTConstVisitor) -> Result<()> {
        Ok(())
    }
    macros::accept_id!();
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/browser/macros.rs:
--------------------------------------------------------------------------------

```rust
macro_rules! generate_extraction_library {
    ($( $name:ident | $visit_method:ident => $node:ident |),* $(,)*) => {
        $(
            #[derive(Default)]
            pub struct $name {
                pub extracted: Vec<$node>,
            }

            impl $name {
                pub fn from<T: Node + ?Sized>(node: &T) -> Self {
                    let mut extractor: $name = Self::default();
                    node.accept(&mut extractor).unwrap_or_default();
                    extractor
                }
            }

            impl ASTConstVisitor for $name {
                fn $visit_method(&mut self, node: &$node) -> Result<bool> {
                    self.extracted.push(node.clone());
                    Ok(true)
                }
            }
        )*
    };
}

pub(crate) use generate_extraction_library;

```

--------------------------------------------------------------------------------
/reports/empty_report.md:
--------------------------------------------------------------------------------

```markdown
# Aderyn Analysis Report

This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a static analysis tool built by [Cyfrin](https://cyfrin.io), a blockchain security company. This report is not a substitute for manual audit or security review. It should not be relied upon for any purpose other than to assist in the identification of potential security vulnerabilities.
# Table of Contents

- [Summary](#summary)
  - [Files Summary](#files-summary)
  - [Files Details](#files-details)
  - [Issue Summary](#issue-summary)


# Summary

## Files Summary

| Key | Value |
| --- | --- |
| .sol Files | 1 |
| Total nSLOC | 5 |


## Files Details

| Filepath | nSLOC |
| --- | --- |
| src/IgnoreEverything.sol | 5 |
| **Total** | **5** |


## Issue Summary

| Category | No. of Issues |
| --- | --- |
| High | 0 |
| Low | 0 |



```

--------------------------------------------------------------------------------
/reports/nft-report-icm.md:
--------------------------------------------------------------------------------

```markdown
# Aderyn Analysis Report

This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a static analysis tool built by [Cyfrin](https://cyfrin.io), a blockchain security company. This report is not a substitute for manual audit or security review. It should not be relied upon for any purpose other than to assist in the identification of potential security vulnerabilities.
# Table of Contents

- [Summary](#summary)
  - [Files Summary](#files-summary)
  - [Files Details](#files-details)
  - [Issue Summary](#issue-summary)


# Summary

## Files Summary

| Key | Value |
| --- | --- |
| .sol Files | 1 |
| Total nSLOC | 5 |


## Files Details

| Filepath | nSLOC |
| --- | --- |
| src/inner-core-modules/ICM.sol | 5 |
| **Total** | **5** |


## Issue Summary

| Category | No. of Issues |
| --- | --- |
| High | 0 |
| Low | 0 |



```

--------------------------------------------------------------------------------
/tests/ast/receive_ether.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C":[5]},"id":6,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5,"linearizedBaseContracts":[5],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":3,"nodeType":"Block","src":"42:5:1","statements":[]},"id":4,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"22:2:1"},"returnParameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"42:0:1"},"scope":5,"src":"15:32:1","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":6,"src":"0:49:1","usedErrors":[]}],"src":"0:50:1"}

```

--------------------------------------------------------------------------------
/aderyn_driver/src/interface/tables.rs:
--------------------------------------------------------------------------------

```rust
use aderyn_core::{audit_tools, context::workspace::WorkspaceContext};
use prettytable::*;

pub fn print_audit_info_tables(
    contexts: &[WorkspaceContext],
) -> Result<(), Box<dyn std::error::Error>> {
    let tables = audit_tools::prepare_audit_tables(contexts)?;
    for (title, (table_titles, table_rows)) in tables {
        let num_instances = table_rows.len();
        let mut table = Table::new();

        println!();
        println!("{}:", title);
        table.set_titles(table_titles);

        for instance in table_rows {
            table.add_row(instance);
        }

        // Set the format of the table
        table.set_format(*format::consts::FORMAT_NO_LINESEP_WITH_TITLE);
        table.printstd();
        if num_instances > 0 {
            println!("Number of instances: {}", num_instances);
        }
    }
    Ok(())
}

```

--------------------------------------------------------------------------------
/tests/ast/fallback.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C":[5]},"id":6,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5,"linearizedBaseContracts":[5],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":3,"nodeType":"Block","src":"43:5:1","statements":[]},"id":4,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"23:2:1"},"returnParameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"43:0:1"},"scope":5,"src":"15:33:1","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":6,"src":"0:50:1","usedErrors":[]}],"src":"0:51:1"}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/node/documentation.rs:
--------------------------------------------------------------------------------

```rust
use crate::{ast::*, visitor::ast_visitor::*};
use eyre::Result;

impl Node for Documentation {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        match self {
            Documentation::String(_opt_string) => {
                // TODO check if this is okay
                Ok(())
            }
            Documentation::Structured(opt_structured_documentation) => {
                if opt_structured_documentation.is_some() {
                    opt_structured_documentation.as_ref().unwrap().accept(visitor)?;
                }
                Ok(())
            }
        }
    }
}

impl Node for StructuredDocumentation {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        visitor.visit_structured_documentation(self)?;
        visitor.end_visit_structured_documentation(self)
    }
}

```

--------------------------------------------------------------------------------
/tests/ast/fallback_payable.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C":[5]},"id":6,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5,"linearizedBaseContracts":[5],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":3,"nodeType":"Block","src":"34:2:1","statements":[]},"id":4,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"22:2:1"},"returnParameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"34:0:1"},"scope":5,"src":"14:22:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6,"src":"0:38:1","usedErrors":[]}],"src":"0:39:1"}

```

--------------------------------------------------------------------------------
/tests/ast/constructor.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C":[5]},"id":6,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5,"linearizedBaseContracts":[5],"name":"C","nameLocation":"9:1:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":3,"nodeType":"Block","src":"28:4:1","statements":[]},"id":4,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"25:2:1"},"returnParameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"28:0:1"},"scope":5,"src":"14:18:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":6,"src":"0:34:1","usedErrors":[]}],"src":"0:35:1"}

```

--------------------------------------------------------------------------------
/tests/ast/abstract_contract.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C":[5]},"id":6,"nodeType":"SourceUnit","nodes":[{"abstract":true,"baseContracts":[],"canonicalName":"C","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5,"linearizedBaseContracts":[5],"name":"C","nameLocation":"18:1:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":3,"nodeType":"Block","src":"37:4:1","statements":[]},"id":4,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1,"nodeType":"ParameterList","parameters":[],"src":"34:2:1"},"returnParameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"37:0:1"},"scope":5,"src":"23:18:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":6,"src":"0:43:1","usedErrors":[]}],"src":"0:44:1"}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/node/import_directives.rs:
--------------------------------------------------------------------------------

```rust
use crate::{ast::*, visitor::ast_visitor::*};
use eyre::Result;

impl Node for ImportDirective {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        if visitor.visit_import_directive(self)? {
            // TODO deviation from solc's structs
            for symbol_alias in &self.symbol_aliases {
                symbol_alias.foreign.accept(visitor)?;
            }
            self.accept_metadata(visitor)?;
        }
        visitor.end_visit_import_directive(self)
    }
    fn accept_metadata(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        let mut symbol_alias_ids = vec![];
        for symbol_alias in &self.symbol_aliases {
            symbol_alias_ids.push(symbol_alias.foreign.id);
        }
        visitor.visit_immediate_children(self.id, symbol_alias_ids)?;
        Ok(())
    }
    macros::accept_id!();
}

```

--------------------------------------------------------------------------------
/tests/ast/inheritance_specifier.json:
--------------------------------------------------------------------------------

```json
{"absolutePath":"a","exportedSymbols":{"C1":[1],"C2":[4]},"id":5,"nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"canonicalName":"C1","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":1,"linearizedBaseContracts":[1],"name":"C1","nameLocation":"9:2:1","nodeType":"ContractDefinition","nodes":[],"scope":5,"src":"0:14:1","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":2,"name":"C1","nameLocations":["30:2:1"],"nodeType":"IdentifierPath","referencedDeclaration":1,"src":"30:2:1"},"id":3,"nodeType":"InheritanceSpecifier","src":"30:2:1"}],"canonicalName":"C2","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":4,"linearizedBaseContracts":[4,1],"name":"C2","nameLocation":"24:2:1","nodeType":"ContractDefinition","nodes":[],"scope":5,"src":"15:20:1","usedErrors":[]}],"src":"0:36:1"}

```

--------------------------------------------------------------------------------
/aderyn_core/src/ast/impls/node/enumerations.rs:
--------------------------------------------------------------------------------

```rust
use crate::{ast::*, visitor::ast_visitor::*};
use eyre::Result;
use macros::accept_id;

impl Node for EnumValue {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        visitor.visit_enum_value(self)?;
        visitor.end_visit_enum_value(self)
    }
    macros::accept_id!();
}

impl Node for EnumDefinition {
    fn accept(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        if visitor.visit_enum_definition(self)? {
            list_accept(&self.members, visitor)?;
        }
        self.accept_metadata(visitor)?;
        visitor.end_visit_enum_definition(self)
    }
    fn accept_metadata(&self, visitor: &mut impl ASTConstVisitor) -> Result<()> {
        let member_ids = &self.members.iter().map(|x| x.id).collect::<Vec<_>>().clone();
        visitor.visit_immediate_children(self.id, member_ids.clone())?;
        Ok(())
    }
    accept_id!();
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/visitor/macros.rs:
--------------------------------------------------------------------------------

```rust
macro_rules! generate_visit_methods_for_workspace_context_with_insert_node {
    ($( $method_name:ident | $node:ident => $map_name:ident | ),* $(,)*) => {
        $(
            fn $method_name(&mut self, node: &$node) -> Result<bool> {
                self.nodes
                    .insert(node.id, ASTNode::$node(node.clone()));
                self.$map_name.insert(
                    node.clone(),
                    NodeContext {
                        source_unit_id: self.last_source_unit_id,
                        contract_definition_id: self.last_contract_definition_id,
                        function_definition_id: self.last_function_definition_id,
                        modifier_definition_id: self.last_modifier_definition_id,
                    },
                );
                Ok(true)
            }
        )*
    };
}

pub(crate) use generate_visit_methods_for_workspace_context_with_insert_node;

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/browser/peek.rs:
--------------------------------------------------------------------------------

```rust
use crate::{
    ast::NodeID,
    context::workspace::WorkspaceContext,
    visitor::ast_visitor::{ASTConstVisitor, Node},
};

pub trait Peek {
    /// Peek into the source code of a node
    fn peek(&self, context: &WorkspaceContext) -> Option<String>;
}

#[derive(Default)]
struct NodeIDReceiver {
    id: Option<NodeID>,
}

impl ASTConstVisitor for NodeIDReceiver {
    fn visit_node_id(&mut self, node_id: Option<NodeID>) -> eyre::Result<()> {
        self.id = node_id;
        Ok(())
    }
}

impl<T: Node + ?Sized> Peek for T {
    fn peek(&self, context: &WorkspaceContext) -> Option<String> {
        // Setup a Node ID receiver
        let mut node_id_receiver = NodeIDReceiver::default();

        // Find the ID of the node this method is called upon
        self.accept_id(&mut node_id_receiver).ok()?;
        let current_node_id = node_id_receiver.id?;

        context.get_source_code_of_node(current_node_id)
    }
}

```

--------------------------------------------------------------------------------
/aderyn_core/src/context/mcp/node_summarizer/render.rs:
--------------------------------------------------------------------------------

```rust
use askama::Template;
use derive_builder::Builder;
use serde::Serialize;

use crate::ast::NodeID;

#[derive(Builder, Serialize, Template)]
#[template(path = "mcp-tool-response/node_summarizer.md")]
#[builder(pattern = "owned")]
pub struct NodeSummary {
    pub compilation_unit_index: usize,
    pub node_id: NodeID,
    pub filepath: String,
    pub code: String,
    pub containing_contract: Option<NodeInfo>,
    pub containing_modifier: Option<NodeInfo>,
    pub containing_function: Option<NodeInfo>,
    pub containing_callgraphs: Vec<EntrypointCallgraphInfo>,
}

#[derive(Default, Serialize, Builder)]
#[builder(pattern = "owned")]
pub struct NodeInfo {
    pub name: String,
    pub node_id: NodeID,
}

#[derive(Default, Serialize, Builder)]
#[builder(pattern = "owned")]
pub struct EntrypointCallgraphInfo {
    pub deployable_contract_id: NodeID,
    pub deployable_contract_name: String,
    pub entrypoint_ids: Vec<NodeID>,
}

```

--------------------------------------------------------------------------------
/benchmarks/ecrecover/base/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":5050.236324390194,"upper_bound":5357.877616729643},"point_estimate":5176.442844435567,"standard_error":80.50809087778876},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":4980.42480563654,"upper_bound":5113.374251385947},"point_estimate":5063.566448007774,"standard_error":30.415752958955476},"median_abs_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":165.78741946008148,"upper_bound":282.0308998739026},"point_estimate":226.25540601717648,"standard_error":28.397993442635176},"slope":{"confidence_interval":{"confidence_level":0.95,"lower_bound":5139.373808470248,"upper_bound":5796.281330618601},"point_estimate":5389.070936884581,"standard_error":177.774555037507},"std_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":211.8828666673613,"upper_bound":1296.864422483158},"point_estimate":807.8284728365073,"standard_error":309.7011537447096}}
```

--------------------------------------------------------------------------------
/benchmarks/ecrecover/new/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":5050.236324390194,"upper_bound":5357.877616729643},"point_estimate":5176.442844435567,"standard_error":80.50809087778876},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":4980.42480563654,"upper_bound":5113.374251385947},"point_estimate":5063.566448007774,"standard_error":30.415752958955476},"median_abs_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":165.78741946008148,"upper_bound":282.0308998739026},"point_estimate":226.25540601717648,"standard_error":28.397993442635176},"slope":{"confidence_interval":{"confidence_level":0.95,"lower_bound":5139.373808470248,"upper_bound":5796.281330618601},"point_estimate":5389.070936884581,"standard_error":177.774555037507},"std_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":211.8828666673613,"upper_bound":1296.864422483158},"point_estimate":807.8284728365073,"standard_error":309.7011537447096}}
```

--------------------------------------------------------------------------------
/benchmarks/inconsistent-type-names/base/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":1596768.9457915858,"upper_bound":1776731.7485619516},"point_estimate":1676691.8242909454,"standard_error":46204.5314422065},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":1510973.875,"upper_bound":1610283.887987013},"point_estimate":1544900.279677113,"standard_error":27089.8782568759},"median_abs_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":146367.04052909018,"upper_bound":252611.15239304234},"point_estimate":199646.00674223632,"standard_error":27161.45815974013},"slope":{"confidence_interval":{"confidence_level":0.95,"lower_bound":1598688.354816894,"upper_bound":1730263.463250756},"point_estimate":1658451.7662834344,"standard_error":33605.350538935396},"std_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":237700.72912069052,"upper_bound":684428.2455180079},"point_estimate":464621.6832968203,"standard_error":123596.98321683449}}
```

--------------------------------------------------------------------------------
/benchmarks/inconsistent-type-names/new/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":1596768.9457915858,"upper_bound":1776731.7485619516},"point_estimate":1676691.8242909454,"standard_error":46204.5314422065},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":1510973.875,"upper_bound":1610283.887987013},"point_estimate":1544900.279677113,"standard_error":27089.8782568759},"median_abs_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":146367.04052909018,"upper_bound":252611.15239304234},"point_estimate":199646.00674223632,"standard_error":27161.45815974013},"slope":{"confidence_interval":{"confidence_level":0.95,"lower_bound":1598688.354816894,"upper_bound":1730263.463250756},"point_estimate":1658451.7662834344,"standard_error":33605.350538935396},"std_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":237700.72912069052,"upper_bound":684428.2455180079},"point_estimate":464621.6832968203,"standard_error":123596.98321683449}}
```

--------------------------------------------------------------------------------
/benchmarks/push-zero-opcode/base/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":42613.91429728536,"upper_bound":43713.90161892534},"point_estimate":43116.182860395806,"standard_error":281.4515474268744},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":41957.47593582888,"upper_bound":43443.757429901634},"point_estimate":43006.31972610723,"standard_error":328.8435162223804},"median_abs_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":1429.1411181077865,"upper_bound":2314.6739932016576},"point_estimate":1791.5812954173246,"standard_error":192.0179623060255},"slope":{"confidence_interval":{"confidence_level":0.95,"lower_bound":41304.1138643215,"upper_bound":43671.80909126871},"point_estimate":42279.28879790964,"standard_error":622.9868396642561},"std_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":1619.958474185393,"upper_bound":3940.052737669384},"point_estimate":2821.02247047013,"standard_error":599.3741985032071}}
```

--------------------------------------------------------------------------------
/benchmarks/push-zero-opcode/new/estimates.json:
--------------------------------------------------------------------------------

```json
{"mean":{"confidence_interval":{"confidence_level":0.95,"lower_bound":42613.91429728536,"upper_bound":43713.90161892534},"point_estimate":43116.182860395806,"standard_error":281.4515474268744},"median":{"confidence_interval":{"confidence_level":0.95,"lower_bound":41957.47593582888,"upper_bound":43443.757429901634},"point_estimate":43006.31972610723,"standard_error":328.8435162223804},"median_abs_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":1429.1411181077865,"upper_bound":2314.6739932016576},"point_estimate":1791.5812954173246,"standard_error":192.0179623060255},"slope":{"confidence_interval":{"confidence_level":0.95,"lower_bound":41304.1138643215,"upper_bound":43671.80909126871},"point_estimate":42279.28879790964,"standard_error":622.9868396642561},"std_dev":{"confidence_interval":{"confidence_level":0.95,"lower_bound":1619.958474185393,"upper_bound":3940.052737669384},"point_estimate":2821.02247047013,"standard_error":599.3741985032071}}
```
Page 1/94FirstPrevNextLast