Fix MoneroWalletRpc.handleCreateWalletError (#127)
What changed, and why it matters
This commit is a massive repository initialization or merge that adds the entire monero-java project source tree, documentation, build files, native libraries, and IDE metadata. The commit title mentions fixing a method called MoneroWalletRpc.handleCreateWalletError, but the actual diff supplied does not show any code change for that method—it only shows newly added project files. There is no visible security patch or vulnerability fix in the provided diff.
Obtain the actual patch diff for MoneroWalletRpc.handleCreateWalletError before assessing security impact. The current supplied material is unsuitable for vulnerability classification.
Security signals we found
No security-relevant code diff present in supplied material
Commit title references a bug fix but diff does not contain the changed method
Large binary/native library additions are present but not analyzed for vulnerabilities
Evidence from the diff
The supplied diff is an all-additions repository seed containing 443 files (119,783 insertions). It includes Eclipse/VS Code project files, CMake build configuration, README, license, Javadoc HTML, shell scripts, Java source for the whole library, test code, and prebuilt native libraries. The only code-related additions shown in the diff excerpt are project metadata and build files; no modifications to MoneroWalletRpc.java or handleCreateWalletError are present. Consequently, no security-relevant code change can be evaluated from this material.
Changed components
monero-java repository initializationMoneroWalletRpc (referenced in title only, not in diff)Inspect captured patch +119783 / −0
diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..d1bb720
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java">
+ <attributes>
+ <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="monero-java/build"/>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java">
+ <attributes>
+ <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="monero-java/build"/>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="lib">
+ <attributes>
+ <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="monero-java/build"/>
+ <attribute name="maven.pomderived" value="true"/>
+ <attribute name="optional" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="target/generated-sources/annotations">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ <attribute name="ignore_optional_problems" value="true"/>
+ <attribute name="m2e-apt" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ <attribute name="ignore_optional_problems" value="true"/>
+ <attribute name="m2e-apt" value="true"/>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml
new file mode 100644
index 0000000..55d8aad
--- /dev/null
+++ b/.github/workflows/label.yml
@@ -0,0 +1,25 @@
+name: Comment to label
+
+on:
+ issues:
+ types: [labeled]
+ workflow_call:
+
+jobs:
+ issueLabeled:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Bounty explanation
+ uses: peter-evans/create-or-update-comment@v2
+ if: github.event.label.name == '💰bounty'
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ issue-number: ${{ github.event.issue.number }}
+ body: >
+ There is a bounty on this issue. The amount is in the title. The reward will be awarded to the first person or group of people whose solution is accepted and merged.
+
+
+ In some cases, we may assign the issue to specific contributors. We expect contributors to provide a PR in a reasonable time frame or, in case of an extensive work, updates on their progress. We will unassign the issue if we feel the assignee is not responsive or has abandoned the task.
+
+
+ Read the [full conditions and details](https://github.com/woodser/monero-java/blob/master/docs/bounties.md) of the bounty system.
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..eae14ef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+/target/
+/build/
+**/pom.xml.versionsBackup
+**/logs
+/test_wallets
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..5a1bf50
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "external/monero-cpp"]
+ path = external/monero-cpp
+ url = https://github.com/woodser/monero-cpp
diff --git a/.project b/.project
new file mode 100644
index 0000000..86d918f
--- /dev/null
+++ b/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>monero-java</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..839d647
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding/<project>=UTF-8
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..05c70e5
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,397 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=0
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assertion_message=0
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=false
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=100
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=4
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=2
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=true
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=true
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=500
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=2
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8949a6c
--- /dev/null
+++ b/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+formatter_profile=_Eclipse Java Formatter
+formatter_settings_version=20
diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..f4ef8aa
--- /dev/null
+++ b/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <installed facet="java" version="1.8"/>
+</faceted-project>
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..00fc358
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,26 @@
+{
+ "configurations": [
+ {
+ "type": "java",
+ "name": "Scratchpad",
+ "request": "launch",
+ "mainClass": "utils.Scratchpad",
+ "projectName": "monero-java"
+ },
+ {
+ "type": "java",
+ "name": "StartMining",
+ "request": "launch",
+ "mainClass": "utils.StartMining",
+ "projectName": "monero-java"
+ },
+ {
+ "type": "java",
+ "name": "Launch Current File",
+ "request": "launch",
+ "mainClass": "${file}",
+ "projectName": "monero-java",
+ "vmArgs": "-Djava.library.path=./build"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..79642a7
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,169 @@
+cmake_minimum_required(VERSION 3.4.1)
+
+if (WIN32)
+ add_definitions( "-D_GLIBCXX_USE_NANOSLEEP=1" )
+ add_definitions( "-DWIN32_LEAN_AND_MEAN" )
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,-mbig-obj -O2 -fPIC -std=c++14 -F/Library/Frameworks -pthread -lcrypto -lcrypt32 -lbcrypt")
+else()
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++14 -F/Library/Frameworks -pthread")
+endif()
+
+#SET(CMAKE_C_COMPILER /path/to/c/compiler)
+#SET(CMAKE_CXX_COMPILER /path/to/cpp/compiler)
+
+project(monero-java-jni)
+
+#############
+# System
+#############
+
+set(MONERO_CPP "${CMAKE_SOURCE_DIR}/external/monero-cpp")
+message(STATUS MONERO_CPP : ${MONERO_CPP} : ${MONERO_CPP})
+
+set(MONERO_CPP_SRC "${MONERO_CPP}/src")
+set(MONERO_PROJECT ${MONERO_CPP}/external/monero-project)
+set(MONERO_PROJECT_SRC "${MONERO_PROJECT}/src")
+
+# check JAVA_HOME
+if(NOT DEFINED ENV{JAVA_HOME} OR "$ENV{JAVA_HOME}" STREQUAL "")
+ message(FATAL_ERROR "JAVA_HOME variable not set, for example: export JAVA_HOME=/path/to/jdk")
+endif()
+
+# TODO: remove TRUEs, how are APPLE, DEPENDS, etc initialized?
+if (TRUE OR HIDAPI_FOUND OR LibUSB_COMPILE_TEST_PASSED)
+ if (APPLE)
+ if(TRUE OR DEPENDS)
+ list(APPEND EXTRA_LIBRARIES "-framework Foundation -framework IOKit -framework AppKit")
+ else()
+ find_library(COREFOUNDATION CoreFoundation)
+ find_library(IOKIT IOKit)
+ find_library(APPKIT AppKit)
+ list(APPEND EXTRA_LIBRARIES ${IOKIT})
+ list(APPEND EXTRA_LIBRARIES ${COREFOUNDATION})
+ list(APPEND EXTRA_LIBRARIES ${APPKIT})
+ endif()
+ endif()
+ if (WIN32)
+ list(APPEND EXTRA_LIBRARIES setupapi)
+ endif()
+endif()
+
+message(STATUS EXTRA_LIBRARIES: ${EXTRA_LIBRARIES})
+
+############
+# Boost
+############
+
+set(Boost_NO_BOOST_CMAKE 1)
+set(Boost_USE_MULTITHREADED ON)
+find_package(Boost 1.58 QUIET REQUIRED COMPONENTS chrono date_time filesystem program_options regex serialization wserialization system thread)
+message(STATUS "Using Boost include dir at ${Boost_INCLUDE_DIR}")
+
+############
+# OpenSSL
+############
+
+if (APPLE AND NOT IOS)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=default -std=c++14")
+ if (NOT OPENSSL_ROOT_DIR)
+ EXECUTE_PROCESS(COMMAND brew --prefix openssl
+ OUTPUT_VARIABLE OPENSSL_ROOT_DIR
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ message(STATUS "Using OpenSSL found at ${OPENSSL_ROOT_DIR}")
+ endif()
+endif()
+
+find_package(OpenSSL REQUIRED)
+message(STATUS "Using OpenSSL include dir at ${OPENSSL_INCLUDE_DIR}")
+
+if(STATIC AND NOT IOS)
+ if(UNIX)
+ set(OPENSSL_LIBRARIES "${OPENSSL_LIBRARIES};${CMAKE_DL_LIBS};${CMAKE_THREAD_LIBS_INIT}")
+ endif()
+endif()
+
+if (WIN32)
+ list(APPEND OPENSSL_LIBRARIES ws2_32 crypt32 bcrypt)
+endif()
+
+######################
+# monero-cpp
+######################
+
+add_library(monero-cpp SHARED IMPORTED)
+
+# import shared c++ library
+if (APPLE)
+ set_target_properties(monero-cpp PROPERTIES IMPORTED_LOCATION ./libmonero-cpp.dylib)
+elseif (WIN32)
+ set_target_properties(monero-cpp PROPERTIES IMPORTED_LOCATION ./libmonero-cpp.dll)
+ set_target_properties(monero-cpp PROPERTIES IMPORTED_IMPLIB ./libmonero-cpp.dll.a)
+else()
+ set_target_properties(monero-cpp PROPERTIES IMPORTED_LOCATION ./libmonero-cpp.so)
+endif()
+
+###############################################
+# Build Java dynamic library for JNI
+###############################################
+
+set(
+ MONERO_JNI_SRC_FILES
+ src/main/cpp/monero_jni_bridge.cpp
+)
+add_library(monero-java SHARED ${MONERO_JNI_SRC_FILES})
+
+target_include_directories(monero-java PUBLIC
+ "$ENV{JAVA_HOME}"
+ "$ENV{JAVA_HOME}/include"
+ "${MONERO_CPP}/external/libsodium/include/sodium"
+ "${MONERO_CPP}/external/openssl-sdk/include"
+ "${MONERO_CPP_SRC}/"
+ "${MONERO_PROJECT}/contrib/epee/include"
+ "${MONERO_PROJECT}/external/"
+ "${MONERO_PROJECT}/external/easylogging++"
+ "${MONERO_PROJECT}/external/rapidjson/include"
+ "${MONERO_PROJECT_SRC}/"
+ "${MONERO_PROJECT_SRC}/crypto"
+ "${MONERO_PROJECT_SRC}/crypto/crypto_ops_builder/include/"
+ "${MONERO_PROJECT_SRC}/wallet"
+ "${MONERO_PROJECT_SRC}/wallet/api"
+ ${Boost_INCLUDE_DIR}
+ ${OPENSSL_INCLUDE_DIR}
+)
+
+if (APPLE)
+ target_include_directories(monero-java PUBLIC "$ENV{JAVA_HOME}/include/darwin")
+elseif (WIN32)
+ target_include_directories(monero-java PUBLIC "$ENV{JAVA_HOME}/include/win32")
+else()
+ target_include_directories(monero-java PUBLIC "$ENV{JAVA_HOME}/include/linux")
+endif()
+
+target_link_libraries(monero-java
+ monero-cpp
+ ${Boost_LIBRARIES}
+ ${OPENSSL_LIBRARIES}
+ ${EXTRA_LIBRARIES}
+)
+
+if (WIN32)
+ target_link_options(monero-java PUBLIC "-Wl,--enable-auto-import,--export-all-symbols")
+endif()
+
+if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ target_link_options(monero-java PRIVATE "-z" "noexecstack")
+endif()
+
+INSTALL(TARGETS monero-java
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Runtime
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Runtime
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development)
+
+# search for libmonero-cpp.dylib in same directory as libmonero-java.dylib on mac for portability
+# command: install_name_tool -add_rpath @loader_path/ ./libmonero-java.dylib
+if (APPLE)
+ add_custom_command(TARGET monero-java
+ POST_BUILD COMMAND
+ ${CMAKE_INSTALL_NAME_TOOL} -add_rpath "@loader_path/"
+ $<TARGET_FILE:monero-java>)
+endif()
diff --git a/LICENCE.txt b/LICENCE.txt
new file mode 100644
index 0000000..09ce99c
--- /dev/null
+++ b/LICENCE.txt
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) woodser
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..7ae48ca
--- /dev/null
+++ b/README.md
@@ -0,0 +1,225 @@
+# Monero Java Library
+
+A Java library for creating Monero applications using RPC and JNI bindings to [monero v0.18.4.1 'Fluorine Fermi'](https://github.com/monero-project/monero/tree/v0.18.4.1).
+
+* Supports wallet and daemon RPC clients.
+* Supports client-side wallets using JNI bindings.
+* Supports multisig, view-only, and offline wallets.
+* Wallet types are interchangeable by conforming to a [common interface](https://woodser.github.io/monero-java/javadocs/monero/wallet/MoneroWallet.html).
+* Uses a clearly defined [data model and API specification](https://woodser.github.io/monero-java/monero-spec.pdf) intended to be intuitive and robust.
+* Query wallet transactions, transfers, and outputs by their properties.
+* Fetch and process binary data from the daemon (e.g. raw blocks).
+* Receive notifications when blocks are added to the chain or when wallets sync, send, or receive.
+* Over 300 passing JUnit tests.
+
+## Architecture
+
+<p align="center">
+ <img width="85%" height="auto" src="docs/architecture.png"/><br>
+ <i>Build Java applications using RPC or JNI bindings to <a href="https://github.com/monero-project/monero">monero-project/monero</a>. Wallet implementations are interchangeable by conforming to a common interface, <a href="https://woodser.github.io/monero-java/javadocs/monero/wallet/MoneroWallet.html">MoneroWallet.java</a>.</i>
+</p>
+
+## Sample code
+
+```java
+// connect to daemon
+MoneroDaemon daemon = new MoneroDaemonRpc("http://localhost:38081", "superuser", "abctesting123");
+long height = daemon.getHeight(); // 1523651
+List<MoneroTx> txsInPool = daemon.getTxPool(); // get transactions in the pool
+
+// create wallet from mnemonic phrase using JNI bindings to monero-project
+MoneroWalletFull walletFull = MoneroWalletFull.createWallet(new MoneroWalletConfig()
+ .setPath("sample_wallet_full")
+ .setPassword("supersecretpassword123")
+ .setNetworkType(MoneroNetworkType.STAGENET)
+ .setServerUri("http://localhost:38081")
+ .setServerUsername("superuser")
+ .setServerPassword("abctesting123")
+ .setSeed("hefty value scenic...")
+ .setRestoreHeight(573936l));
+
+// synchronize the wallet and receive progress notifications
+walletFull.sync(new MoneroWalletListener() {
+ @Override
+ public void onSyncProgress(long height, long startHeight, long endHeight, double percentDone, String message) {
+ // feed a progress bar?
+ }
+});
+
+// synchronize in the background every 5 seconds
+walletFull.startSyncing(5000l);
+
+// receive notifications when funds are received, confirmed, and unlocked
+walletFull.addListener(new MoneroWalletListener() {
+ @Override
+ public void onOutputReceived(MoneroOutputWallet output) {
+ BigInteger amount = output.getAmount();
+ String txHash = output.getTx().getHash();
+ Boolean isConfirmed = output.getTx().isConfirmed();
+ Boolean isLocked = output.getTx().isLocked();
+ FUNDS_RECEIVED = true;
+ }
+});
+
+// connect to wallet RPC and open wallet
+MoneroWalletRpc walletRpc = new MoneroWalletRpc("http://localhost:38083", "rpc_user", "abc123");
+walletRpc.openWallet("sample_wallet_rpc", "supersecretpassword123");
+String primaryAddress = walletRpc.getPrimaryAddress(); // 555zgduFhmKd2o8rPUz...
+BigInteger balance = walletRpc.getBalance(); // 533648366742
+List<MoneroTxWallet> txs = walletRpc.getTxs(); // get transactions containing transfers to/from the wallet
+
+// send funds from RPC wallet to full wallet
+MoneroTxWallet createdTx = walletRpc.createTx(new MoneroTxConfig()
+ .setAccountIndex(0)
+ .setAddress(walletFull.getAddress(1, 0))
+ .setAmount("250000000000") // send 0.25 XMR (denominated in atomic units)
+ .setRelay(false)); // create transaction and relay to the network if true
+BigInteger fee = createdTx.getFee(); // "Are you sure you want to send... ?"
+walletRpc.relayTx(createdTx); // relay the transaction
+
+// recipient receives unconfirmed funds within 5 seconds
+TimeUnit.SECONDS.sleep(5);
+assertTrue(FUNDS_RECEIVED);
+
+// save and close wallet
+walletFull.close(true);
+```
+
+## Documentation
+
+* [Javadoc](https://woodser.github.io/monero-java/javadocs/index.html)
+* [API and model overview with visual diagrams](https://woodser.github.io/monero-java/monero-spec.pdf)
+* [JUnit tests](src/test/java)
+* [Using TOR](docs/tor.md)
+* [monero-ts documentation](https://github.com/woodser/monero-ts#documentation) provides additional documentation which translates to monero-java
+
+## Using monero-java in your project
+
+#### For Maven, add to pom.xml:
+
+```xml
+<dependency>
+ <groupId>io.github.woodser</groupId>
+ <artifactId>monero-java</artifactId>
+ <version>0.8.38</version>
+</dependency>
+```
+
+#### For Gradle, add to build.gradle:
+
+`compile 'io.github.woodser:monero-java:0.8.38'`
+
+#### If using RPC servers:
+
+1. Download and install [Monero CLI](https://web.getmonero.org/downloads/).
+2. Start monerod, e.g.: `./monerod --stagenet` (or use a remote daemon).
+3. Start monero-wallet-rpc, e.g.: `./monero-wallet-rpc --daemon-address http://localhost:38081 --stagenet --rpc-bind-port 38083 --rpc-login rpc_user:abc123 --wallet-dir ./`
+
+> [!NOTE]
+> On Windows, if you want to use native wallets instead of monero-wallet-rpc, or if you want to process binary data, first install MSYS2:
+> 1. Install [MSYS2](https://www.msys2.org/).
+> 2. Environment variables > System variables > Path > Edit > New > C:\msys64\mingw64\bin
+
+## Building native libraries from source
+
+If you want to use native wallets instead of monero-wallet-rpc, or if you want to process binary data, native libraries must be used for your specific platform.
+
+For convenience, native libraries for Linux, macOS, and Windows are distributed with monero-java, but they can be built independently from source:
+
+### Linux and macOS
+
+1. Install [maven](https://maven.apache.org/download.cgi) for your system.
+2. Install a Java JDK for your system, for example:<br>
+ ```
+ curl -s "https://get.sdkman.io" | bash
+ sdk install java 21.0.2.fx-librca
+ ```
+3. Clone the project repository: `git clone --recurse-submodules https://github.com/woodser/monero-java.git`
+4. `cd ./monero-java`
+5. Install Maven dependencies: `mvn install`
+6. Build the monero-cpp submodule (located at ./external/monero-cpp) as a native library by following [instructions](https://github.com/woodser/monero-cpp#using-monero-cpp-in-your-project) for your system.
+7. Build native libraries to ./build/: `./bin/build_libmonero_java.sh`
+
+### Windows
+
+1. Install [MSYS2](https://www.msys2.org/).
+2. Install Maven:
+
+ a. Download binary zip archive from https://maven.apache.org/download.cgi<br>
+ b. Unpack to C:\msys64\usr\local
+3. Environment variables > System variables > Path > Edit > New > C:\msys64\mingw64\bin
+4. Start MSYS2 MINGW64 or MSYS MINGW32 depending on your system and use for the following steps.
+5. Update packages: `pacman -Syu` and confirm at the prompts.
+6. Install dependencies. During installation, use default=all by leaving the input blank and pressing enter.
+
+ 64-bit: `pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake git mingw-w64-x86_64-icu zip unzip`
+
+ 32-bit: `pacman -S mingw-w64-i686-toolchain make mingw-w64-i686-cmake git mingw-w64-i686-icu`
+7. Install Java JDK:
+ ```
+ curl -s "https://get.sdkman.io" | bash
+ sdk install java 21.0.2.fx-librca
+ ```
+8. Set environment variables (replace with your paths):
+ ```
+ export MAVEN_HOME=/usr/local/apache-maven-3.x.x/
+ export PATH=$PATH:$JAVA_HOME/bin/:$MAVEN_HOME/bin/
+ ```
+9. Clone the project repository: `git clone --recurse-submodules https://github.com/woodser/monero-java.git`
+10. `cd ./monero-java`
+11. Install Maven dependencies: `mvn install`
+12. Build the monero-cpp submodule (located at ./external/monero-cpp) as a native library by following [instructions](https://github.com/woodser/monero-cpp#windows) for Windows.
+13. Build native libraries to ./build/: `./bin/build_libmonero_java.sh`
+
+### Loading native libraries
+
+After building the native libraries to the ./build folder, add them to `PATH`, your application's classpath, or explictly load them in Java by calling:
+
+```
+System.load(/absolute/path/to/libmonero-cpp.dll);
+System.load(/absolute/path/to/libmonero-java.dll);
+```
+
+Alternatively, you can bundle the libraries into monero-java's JAR:
+
+1. Copy the libraries to their respective folder in ./lib.
+2. `mvn install`
+3. Force update Maven snapshots: `mvn clean install -U`
+
+You can verify the native libraries are working by running TestMoneroUtils.java.
+
+## Memory Growth
+
+If you see unrestricted memory growth using native bindings, consider applying [jemalloc](https://jemalloc.net/) to improve memory management with `malloc`. In many cases, this can completely resolve the memory growth.
+
+For example: `export LD_PRELOAD=/path/to/libjemalloc.a` then run your app.
+
+## Running JUnit tests
+
+1. Clone the project repository: `git clone --recurse-submodules https://github.com/woodser/monero-java.git`
+2. `cd monero-java`
+3. Start RPC servers:
+ 1. Download and install [Monero CLI](https://web.getmonero.org/downloads/).
+ 2. Start monerod, e.g.: `./monerod --stagenet` (or use a remote daemon).
+ 3. Start monero-wallet-rpc, e.g.: `./monero-wallet-rpc --daemon-address http://localhost:38081 --stagenet --rpc-bind-port 38083 --rpc-login rpc_user:abc123 --wallet-dir ./`
+4. Configure the appropriate RPC endpoints, authentication, and other settings in [TestUtils.java](src/test/java/utils/TestUtils.java).
+5. Run all *.java files in src/test/java as JUnits.
+
+## Related projects
+
+* [monero-ts](https://github.com/woodser/monero-ts)
+* [monero-cpp](https://github.com/woodser/monero-cpp)
+* [Haveno](https://github.com/haveno-dex/haveno)
+
+## License
+
+This project is licensed under MIT.
+
+## Donations
+
+Please consider donating to support the development of this project. 🙏
+
+<p align="center">
+ <img src="donate.png" width="115" height="115"/><br>
+ <code>46FR1GKVqFNQnDiFkH7AuzbUBrGQwz2VdaXTDD4jcjRE8YkkoTYTmZ2Vohsz9gLSqkj5EM6ai9Q7sBoX4FPPYJdGKQQXPVz</code>
+</p>
diff --git a/bin/build_libmonero_java.sh b/bin/build_libmonero_java.sh
new file mode 100755
index 0000000..eacd0c8
--- /dev/null
+++ b/bin/build_libmonero_java.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+#EMCC_DEBUG=1
+
+HOST_NCORES=$(nproc 2>/dev/null || shell nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 1)
+
+# build libmonero-cpp shared library
+cd ./external/monero-cpp/ &&
+./bin/build_libmonero_cpp.sh &&
+
+# copy libmonero-cpp shared library to ./build
+cd ../../ &&
+mkdir -p ./build &&
+cp ./external/monero-cpp/build/libmonero-cpp.* ./build &&
+
+# build libmonero-java shared library to ./build
+cd build &&
+cmake .. &&
+cmake --build . -j$HOST_NCORES &&
+make .
\ No newline at end of file
diff --git a/bin/update_submodules.sh b/bin/update_submodules.sh
new file mode 100755
index 0000000..683461f
--- /dev/null
+++ b/bin/update_submodules.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+# initialize submodules recursively
+git submodule update --init --recursive
\ No newline at end of file
diff --git a/docs/architecture.drawio b/docs/architecture.drawio
new file mode 100644
index 0000000..039c2d7
--- /dev/null
+++ b/docs/architecture.drawio
@@ -0,0 +1 @@
+<mxfile host="Electron" modified="2023-05-01T14:27:33.746Z" agent="5.0 (Macintosh; Intel Mac OS X 13_3_1) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.5.1 Chrome/89.0.4389.82 Electron/12.0.1 Safari/537.36" etag="z8cbKV0ywDqhsIbE5qBP" version="14.5.1" type="device"><diagram id="OTve13TcfAJLpkkU6LjM" name="Page-1">7X3ZkqO41u7TVMQ5F13BbLhknswMtvFNBwYMGDCYwYCf/heZ6arMtGvsyuzae5c7qtMISRZr/Ja0JD6gbDmKTVCnWhXFxQcEisYPKPcBQWAYIsCfuWR6LPkLxSD0sShpsuip2ucCJ7vET4XQU2mfRXH7omJXVUWX1S8Lw+p4jMPuRVnQNNXwstq+Kl7+ah0k8U2BEwbFbek6i7r0sZTEoc/lUpwlaffpkZ/ulMG18lNBmwZRNTwrQvkPKNtUVff4rRzZuJjJd6XLYzvhC3c/DayJj933NDj9RcNr4oIGExLYy8mjtDr966mXc1D0Tw/8NNhuulKgqfpjFM+dQB9QZkizLnbqIJzvDoDroCztygJcweDrPisKtiqq5qEtKgg8xzOgvO2aKo+f3UEJlEKjT3eutEXmPqpjJwRlVsxCQ5/jYwbaMLePex173HTx+Kzo6fHFuCrjrplAlae7xOLjAn9s9CSPGHEVx+EzcxfYE8fS54wlFk9C9SRQyafuP9McfHki+w+wAPlfYgFyVZwrA0iUumEAurjDAAp6I/qj/0v0v6MCFHHLgfsqACFvxALshuJxBKzw02XVdGmVVMeg4D+XMi958rnOsqrqJ04c4q6bnlxK0HfVSz7FY9Zt5uYfSUCSx2v/4fp6xY1PvT9cTM8uzLjJwKPHzbXsCMiweX7xrKf58nNXD1fXvn6Qz13QJHH3FUI+uduZel+VhiYugi47v/Rx99j61NSsMjCUz1qM4h+Rl2KEQwj5spu26pswfmr5SkA+DeXnZQb/N2UG/gF5+UEeP5Lt3+cxgaDfYPCjNL4Zg4kbuzwERRF3v9Y8R0FM7sN75pkIyXi3/6J5fpIRGH1Lc40ubuw1DkHkjb2GkTv2Gnsrj7m44YxWHeOmAmVKcA7An2W2a4KnX3rOKfDY3Ut2NHGbXYLdQ4WZe7POtU+knS+LLDmC7yGg4WxtmZl2GYDn9NONMouiB92uZzl8eFKc+YBzrzh9BAO8YfJT4UvxeeDt04jht+UtcgeOYre8Re/wFnkr3pLfRkPxMaLnyGpmSxG0bRZ+ybGiC+qFoSQBiP5R1/oPzOdmmgTKjdEy1rdwdLosFsaniOeb5vMZB/A7DLiW/VMrS8EfIRyEk08f+JWuY/hHEv8uv3rTNUa9hNo4jL7q6Y0NOPVtUcrKh/D7ufQUwS4umCDMkwe9fGaQ9w8fUOWpFZeVCRhYke3A/8Miq/8Omm7+WpV1DwSoBd/1uBuqJv8b+RtGyBH8+1gfk6+A9LfTdgpYcoz6/MFeMec6VfJM7sg7cke+leJfJ1zuWfU6jpu/uuqv+S+4PD4S9b/Fur+PJ0dvPTlM3fIcgd7T2sPfMf/zQPq44QExHjgwk+3TXNZM0yho008Efsb8u+x4pXgYimHYjJ+Dtn6cvttn49zZox0wgbR0WXVXRpavKuyqrqvKO0LUzeD+VtaqviuyIxjfdeIQenywen7uckzmGc2P53P0cYh3f+/mmcSHZm9oIfCPr+AAfvUHz40Cdq31XEKIN5OQ2+mpJ4xH13UByPxA/T+W4B9hegy7znh9C9O/nSX41dNgN/GU8PB5S8pi0C1lceRWhYg7hEXRtyIs9m3CXq3OFQ5908R9B0j6ghV8bWYffpK+lkLP0FUUdMEHlH68RIQZNyFstmIMe4BUMalo8NEdL+W9BHzbzpeixdIa+MuifghAGTOXMWLEuB5P00vRnCk4pow1lwsXL49YWl0YkpHPBbjHj5493+Nh3fUY2uIFxloxlifQvWRSLc1Vu7kHJqW5POQWtUSbzJ424Yo2qZLmR801x5zma9U5Ux0NGntaToJvDyONBMXwBs7OgwXkgF74ImJ0t9ZFaAsd5xrW6BW8tbIxpEeibCM3qjUKgG/nE6gNpEOQ8HO80NO+H3uLpxXejVbeJTxjynYMdz7rKSbRaQAVCe4pO5z6kgiU/rwrqNURQ0lgMQWCrk4H15wgZ72xmdXKH6y26zGk0uB9CMv1RJyclk2ayxAxkaSV6KUpUI/fmggQQ2ZD1cqE18tzL1dYZY9BJSu2su/ZSZ0cv63SwF/2TSv71boXArwTiigTAi3lpNrvUFkoy+54WZ22W0fdLVVCOzXbDWAoItYFxfarkiVXge3qRJPuMqQDWsPwUGqWYKjF6kgiBKyIZzKGrKrHduqxPgZeWFeSeB5VAdSFwsBwx9yvFh4MYUW1WwPSuIo/9zPAqCbgcN6tVpQh+z7RxKYPSfnl2GdFFQKSMXolBqhwDK2GKzBwaxTL0D26Gzk+9gaqk/mhhTfdwYn1PUI6B9DCO6lQYOzZ0DkfVrbMltu+wvaXzCYl4bjcpMhZbUuW6snLoQuO+n7Rp2rv2DbSbacu3FzUBdntOMHxnR0q8pnjnHcEghp6IKsE47XBQK3aeOnkstKrp5ayF1JVqy3b2ngniu203eT+CeV3VQkjzWontdEuXh2mWG54GM0aluGkpLWXOI6huy2NCc25OEIpW4SRq0jEStJ6grMP0sGw1/Fo96vVMTHMy6QY0hIYDKZQnLNUXiTZ4dBxAe0Dm1QOJj+04wpRkVEY8WARnNaIhRUJ6+929qobpamUE8/VYUma1ua0iy4Ra+P8VBqiNYulDaswvzd8rKDKw8nBxnDijpNRI2SKu6ZwHsIsYjESt8Hvu2w18vFxuURMoxcYwmjNkOTHC7jlXLjSJjKf3LT6Hiai9VDpm63XYTtuk+XVYcBUz8ZCcZmZXGKDr6QpH4bK2NiVBR4OkjkYC3gbU8VMBLGsyybwKgIayZyU7OgB+1aTqjt4uWvltlaLsZqeapbHTXx/USUvY9SYCI9Eb5EuaHPxIzZe0pmc5HIzAIVFkcHJwxzjVluh0vfsJsXT1QkmOeYi434YT57Csmdpma4EWhFCNdsxMMzmfrtctl4vXrLucIG8vSejOZYzGL8+8onLug7Lb1lOy4qtM5SKt3WmckuyiuOQ7nJCdmkhsPlWW2oBf+SnqUuXk8sO+cVXL4Kf2HnnWAUuOgi+9RWdYba1GsR8koNfRujNvvD0VeEveW0DiSvX9Q4rvyJ61ZTOLUIoHkpLchzgJ/agRAC1BpNpN814MukWvxQuSuy59uxny0scMFNSci1MrZdnrYOndaYsjfhCpOUucNXs3EogehOilZwFlyNu1/SFXvj6ZgmN2CZT5Zzsiuh4phpnkR1lEtuiKe/EZ0BljLCdwN0L0NGenSHCPATcsxHVRyTV1ANR+jMH3TWgyXKXkXwf1MOKN2djuFJLlTLzk+JkxnlRlM3yhO1B5bKKnAVC8dVJnoR2axugLLGKMIsbNERxqhP2vMY4veZiGKQECk7G+4O0gvJ97xxcNVFsnszK+Yny40DuKoqTt+jpGO+Ck2JLUYmKu4LwbV4vc2RxklC3cqAINReRucfkop1G0DKwdKuojjBMad1uobHKni0kUGgX2AHplfE8WxqDU85qZ6opZUJRJHf1BlvgiDqlrHRk9r4w+V69ludxIO5iNoWHJNtM583Y07xtyzli0pPtyQ9dacNEn4CMYGyzbga/sdaBfCYIXdQv40ox5GHdW8cRPtOdK8/Kps1mGDTBJ7ks0Jnk3USrbgaIJTSwt91tL2zvZTqbWdAhHsIUbxl1PcjbZaSsYDpAdh0S0O5sYmlVhdagGbTrYijhnCmGUX4h7HFSE2Vo09czs7bIsE7zByYLJwPx+qAiD5uFeQSeeHa9FmdPoYKqvJYxtnaJ8XGA42RkZWi/QYaJWfAAKzDpPC/jc4fuzJxYewAlvbg6B72m9ygGBxWaavj5jM+/yJwug0SyTcTu4KOWsV00HnweADSGJdXVthJiCObxzQk6hcdgorZ6iVdVND8Hgiy1xvS0yypMja5chJQXd8ddgIqFsDBLpm2P+JGAV43gZ2dQRtZlbuBiaJ8bXxv52emcOOKsWfsZDuSpAEStpMPKpbmLl5nyBU+nYe+sJnjYwbkF1MtzKdDKzumJBn932wjD3FIX0zIMoE1isOLBJRcwSZ8L+hDwxaYseBzNy8Ck1AuTLkPspNljY8cZtqT3KowLrUvvBUlGG7OABDpoB99Bz0aeRbyuzOqEE7S+FPiFDy5y43xW2cxYXPZVys4uoleRetzEo7plIAdCJoQWlktqgrhoRiwraVhI6MKsu8bjInUXdZc1va9noWoOi0Lk9JM9SNtBI5FMpnfsetLKXUQlFufDscAutqpeF9UA+53TM8MuB5IosEIXh7AI0IigFlW6BX1NbiXU28qa8c14FuLSNiZ0nnmrTy2sQpUekTRLLeXT7tJjNDXooA0lHDmxMAV+K2/5gxHXli+SGxdjDr2HSLCkH6oDDqxalS/DPiRZA6vYLRZOMm34ulWJ5HG1XF0qbpATFYxBGBLRK5lCdunkKGc0fhRYBu1JI5WGLSTSJMuzJQakKUwbpZYJJlQFVmLi5T4DsI7JPDeJMZmnE1PuOHzY0AmzUgKW3rNVJMtSBalSsoCByRLi/CKdAPAXE36fkrsdM8PRjiwGvWSTXVImBw64FmJ5oZzBTzh+aYuzAu/1QZ7J57UGTY+sZ3MM5lv0KTQZSMm4NlO5YUh0C4vdas0LER9KSXIwGBI3anxMHFmcFNnkWLpZFkTca+xIe/Zy7kPfhueY5lIFk8WE0mST3bMJJOvANEpZejjS56rbRKS8tHleKhJVdCgWjI3OFYVRNCnLl6Wm9vys7VsriZiV2EqwLTnCReTXdFGEsmAFVuRJl8PCgINJlWw6kNuE9GROg50JAP5M9k2TpmF5YMTlfjZyHMFdrITxtjVk+RYy1gwMoEVOzxFBDre0X4fy+YAPiTYde35iENbOLJvE4jD1FhN0qXOu5XcSSw+FnO01fFVxvlyqEkPVYn2c6wtZZoVGznRnmQtkxFAZhnWFiT53dMgf/QqSxJpmMSKGgEdZgP/sxSSzQdSrxsiEh+jgMmNgyadyS5N87hf8nrckRkYUV4JTOkhma+mbuT3rUUPT1HJgMPXA785ERrcyk0o7U2FpXcLoxDbGS6LpjuELPJvM0OkCHt6cv9Ayb8sxy9CEa+ad78oMnQncZAmGbPOSlinckDGioqayL/E1FysTU4rBstjrs3+VxUI5pQJQfQFXPTFPl9xsfCAVwAa6U6R4V/O0YU8mJdSMGpjQbNpDGmd6Wddkj6E4YVhb83howEKnOiBEsoIOZyZJdN5mTW925VwoU7wcoRZv0wxBGoJ1kNGZp4NUYnQkL+hI2XZwTUutSbq7is6bnPFrQIOE3FhMfbSMMVgGwBwKC2p7hqy1NaaeVQKekwxp05VwwqVYZLVB6sFQQtSZq/KDu072E4s0TOCYmcz7eXhYmyfwJdFNTHY2l5zzOmbfHTEuOZG2KaE8a9k7GZnlaxgQaw1tZhdjhBzLYnbIIWM41HncsG6fBKy47lMiA1BeSvl8fhJl6ZoY0JRWnNbVYSycNsGgwNGHBWChI7FcBVQR6HXo6cC4+7bEnbKAYBTgegcTkrszNdBruzZzMzr2+YLnaHsvQRjNqeh2qjHAaWeIYkmd6BUQaBqINxHSYo4lFk/ohY1N/caSZMRSxgpfhuAZJJrdIqTt6PAypmOVdpYLLhkbGcmzbd9tMCllphMMnpHpirAXlooWqfmWdqQ1qLlMYCylHEPEB4MvtKw/b1T7ZO8XxbAOaVaEAHWJStjLRscKseHagLuTXIXkhuZTKakRVnZkB9iDZhzo2LoMuzph5D0/E9flTT/jqJC0qMWaURgHYBjGhSxrkRurbPLpPW+k/Gof0VwMwI2K4vSS0W0oCamcbrpq9hLM2ty0wblKHuQ4RCFogQmYnfFels2lZ3nCOKIWnYY/disHtmLc6hszGM9aIhwcRyp97lI7kzFH3RBjBCe4Zf3cO/RuZXpgdDJEScm6VTJ6rZ/0tgmrVQ6M7mmAvRThHSjW6VOtwnszmfwT3LnscitGxrDSt9yOWCDbU++pjLKST4FnBtXKa2YsKApDlm1JEo5t8Gx7qJ4w/8xzFiAvGHOnkvtVo4t05sDREpJmXaTRExUP/WlZVGICQpq9RNj0ptGsdEYXFyAkjLzIGQ6WEyQMTWRJg+bbrEooVTaoLWtm1nTArEr3JkC/Ohd6QDDmKCGJT0P+yTfX1YpcZFx1cniBp2l7hlWZKvHZ7MWj4rTIWS2zDwHwswlKLQ6WpezFjBVtbcR5WsV327M2Y8aJERmeIVmag8oZWaFdUdLOzudpfpQFmQX0YhDLoVoSPV3scMUbaCUQsrlx2Flf475pMFcXxtxyHTnZr5OGWc683cz+szS51Z61PWsZdIU0o/iAZnMGgcJLpSUGTyM6ba5TNnR3jLXOXNrVLIxN+Eq68Czr2wyDsQzDX7AFYwF1552SIbcePThrdoAMmpAy23TUy9lWhZyt88vCmOWUJpmkDODcmFY0LzmsAiSPYehE5T0rphOXCXppqw4iW9mCtrcSy2AE4FaBoibONh1ohm+lEpjJ5Jgi0cO1J+oggpRBDC1IyZI/60v/GHFdYbGMFhftXq1oepV1bsUMdKkULLCYck7zGeCLTCt8QicW7SigMKF5h2ZBIcAUfAYKZdrM9drUwDBDlfc3bdNdWDKvUmFsFzTNTOdeO+8BKLbZsQX6BuObDb3BYWkiVZND2riMCAo5kCatU25Ft3FKZ03PzhOT7ChoyerCSIHkglsJmzm6WksXWb6IE7/hm4s2rcU+V7zUt4XECRyeG4De4UKYDm00FwirU6GR/knbTlJmZivyhJTRKKYMZ+8mS9v2wPQmUgpPKpyOIMxhcDeSeOBCEblneJ5BlgdDCJ3orHmoV53JneXKPXbhQZ0lqCMsvYTpuywjIxKHAGoXYbHXIHPrk7CD1esUMwE8sXrujAqt38kRW5XFsZBPmlcMirLk4BFfG1kuTITpQCoQbGdjkdzC8hwEQY+0iq7E82HIpZWgWnx2tK2TLaNoCE1WqmSKLJq8dYgnsR9wLOO3odDMShZAjhXqorRm4dkxpawe6oYUyM7OrCz5gKYbP4N6ylbnGGXf0P4kZwcQJ+IUotAWibf76ggwjSsAU+JRiLHexZdwDqDQztqWaLw3civaLVo96u3GLMnQ3/GQGVc+dgzDgaSz8wggLEuA30YOmW2E5Bop4zG0xyLT4D2JanEjY0d9J0nK5RyGkw08W9wY21BZjLY7g8kGuEGWmYhMGRX9osOR3o4rQS4DtdHOwqG2xRBELZHuIeR6nxekflrP7VQZ+NfRGTETaHPj+Nv6wG8ydGhgcLPV5mCNjc2EQ5Q9sChmNKiXOfzQei8O4uVFbWVsjpe2OxC38CbTlvIAdce5LdxzjpSQ+hjso6wbNm143O/XRIbGZNEWFjrTB4cKOUD9IiHmAJPVbHyncJhoGSaRHIR4M2F8OkcI4B/hGJrEk9xckxSzyzaypENJG/3p8jADwWwFAXgKh5ra9YYzJ5gPLvNkhRzwPXQSBwmVxjoKjc4Xiq0kzhNgsnk4FCtzhrvziE8+Z8GA2sV5E+ILvjsvLzg/YcTaJdJsOeAc2cEo0vMJTI66AMNk2sIrHygH7i6Q+WnMqjq4k7In4lQXlawn7BY7RjoPp5a0GYMtZxCQ5keresdh86DpqN9qxck48WMKQNfpIcYDsSyzOCAYWTzNM++as1FjWCUURKHtcx0K/XieKyWyodluN/OTbFwj9QOV3J74Nnc5QshEfUdENSuKTq5VMu42+wiZf3GlbXJKs0R1q/arUTo5Uy+1XEHOMzCmRK2iyyBzar1ZnpTNgiCDE9PGzbkPzufZoBK9PLSjuE8CccNqZ0Q8k2mBxudiJt+ajDbZZjQcTIELTeWtjd5ZU7g9Qm2WljsI3ocXqFN4a0W1ohZoi+MEuce19ZCvcfHGXp7dri7hzCJbyya+7DJ5zPtl9jBhT/OF4OZOb5Us+6aLRshtGhYOyvCbZaN7eVjom63H4V9Ox2Af5f9Pnt33rbfeyXknsTvrre+aZwffprd+QIignBfpipl3fRu3n0qS7hMtXiU8PywRvmT19/PytVDc8vYLC43XZI5/yLNP27aexvDh+c6ou7yEXiclf00Bv5C8jqOv8iw+rdFeO6n2+zZ+k5w4+DZ3tnxQ67/qpjrMi7B/VPkr7CdvbTV1L3XifZOo7uXM/lHlb6gy9h+uych3pM59K1P6ec7RvK/g8zaijwS8+PBsK9Ff0EcIyNnXdxM9XP3C/On7+26+dy/SE39/k0RrjHyZDY1R+E/mVePo656g982rRm6h4fphZwwos+ccG4gtsvh460p+i30yV0fxE7L5/Y6CuvUTi+vuxed+4p7Avdm2GeQW8j1C+kfu2XX48fCQWvmfhwC+nI/2IrP+SRaoTy2qJoqbX+yJvigUMHxHKu5sP4bh90QPyC0i/Ck/8ittPEb9VrYbxYjX200xCn6VsPm95hu9Jt1/3k/3feYbcCCYnlV70p0fGzWBvhKYx15/rX/4BXu4frVEoch3ogaM/N1E75XBwF8Zgu/ejkW+3NuFkdgrCX5r2HC7H0vR5f82b/Msx/x9svmR1wJC3Z4ocu80hTdzKFd4eg8eyjOL9jPk+62x4ZsegQHfmUQg0DuTCPfMCvpWp8Cgt+HksgJKBIqE/qH5lYm/M+PeFNQji1cW9N+H9Fe39gVIP3PuD6Z/U5mgXpvfe4D+XacD0dudVM9l4o88vKk8wK8mZwji9kQF6l3F4Tv2f33/iQo48fLoGQpBPnz1RIXPM4qfziLyn9/70lTirz2J4T5lnqD+N2OCq0n/TWICHHm5d//nYwIUwz+izz6vsSRJvW+IgN7OLP64rP6kxP1q6YK/d5769zoQBENfC9fipwPO1z29tnFvLU23851/As5/7OFw6DVb//WA8yvnQXldVmRdFrc3bP/fiVuw63TqbxS33E4RPrJs5lf7B6K+qTgsXovDnZDl3tE/b6bA2G3EwgVxOZ/r8WdB8fEugdwmkf37aozdxhafGPdnqu8+14jrgtu/x7UvpXY+8u7POvAbG2ACx37DdWDsS9kBj1LxRyTeViTurAncmTl635lE7DtSA2aq1r+AND+cv3czG08St4YVva5Fv4iUibei1y2q/Q9aQ/ke7n1dTL4t7v+ez7tdfH7Me/778VDnv/fzUkn6x8C9jxx8SqB9ocLo7XGU72vwriL5HziT8I5cgxd3DgB/V22+5gDfanP/MH/wR4/fWY+vWxC+rMj3XqnydnqMfBu4vNU6wqfTaN8kje33SmqfUwyhxbNDpV8h2NeHRf/IuhSJfLHfxesXwbx15tqtW/hhcXohFr/LGtVVnL65RnV11L+J3CEQ8hF69sFe7cKhfnJrBQz6fYVJ/iLed3MF9gu29fyWpus6v/DtDNzfy8YtXm35/HmrBszWiyP4yVf9Uq9y+36dpElT3Z8u1d+IYcbSsUvbyu/vvHrv6f02H8O6/gOg3u+MaPyT/frGGdG/Ai997Z0kN3A6ujU9RZHV7QNDns6MDouqj37vuOfHp+Pu7NSh7ixzw/eWyX7FUfh3uXQLap+2bj/q7V9NHf6P8uvOifbUNcnuPdh1HzOht9x4hzfEffb9GEW88P4f4c97ev/NHbzIHSTwNYF/6zfNwcSrV+O8lKSfzq6Dr/Mfn2Ty9Rbzt8aSvyBu+Zz6iWGvUj/xd32Z1leXMn8brPhVhPfTkvTQ781r+L5PmL68bfCXh8m32QCS65r/z/n//21o8r1z7uDblzfdTbt7K9B4X/du8cgfdv+ilyTf2Sj+duwGl5/fAv9oDOZ3T2lVNB8Hw/8f</diagram></mxfile>
\ No newline at end of file
diff --git a/docs/architecture.png b/docs/architecture.png
new file mode 100644
index 0000000..263ab50
Binary files /dev/null and b/docs/architecture.png differ
diff --git a/docs/bounties.md b/docs/bounties.md
new file mode 100644
index 0000000..4306716
--- /dev/null
+++ b/docs/bounties.md
@@ -0,0 +1,17 @@
+## Bounties
+
+Bounties are used to incentivize development and reward contributors.
+
+To receive a bounty, you agree to these conditions:
+
+- Your changes must follow the existing coding conventions.
+- Bounties will be set and awarded in XMR.
+- The issues eligible for a bounty are labelled '💰bounty' and have the amount of the bounty specified in the title in this form: `[$200]` if in dollars or `[1 XMR]` if in Monero.
+- An issue is considered resolved when the patch(es) proposed by the contributor is/are merged in the appropriate repository according to terms of the issue. Pull requests to monero-project must be merged into the release branch to be considered final.
+- The first person who resolves an issue in its entirety will receive the entire amount of the bounty.
+- If the issue is resolved collaboratively by more than one person, the reward will be distributed among the contributors at our discretion.
+- Let the Maintainers know if you intend to work on a bounty, so that the issue can be assigned to you. Being assigned to an issue doesn't make that issue resolvable only by the assignee. It's meant to avoid duplication of efforts and not to discourage collective works.
+- After the issue is resolved, contact the maintainers and claim your bounty (remember to provide them with a Monero address).
+- If the bounty is in dollars, the contributor will receive the amount in Monero according to the value of XMR at the moment the issue was practically resolved, so in the moment the maintainers accept the last patch resolving the issue.
+
+We want to keep the system simple and flexible, but we will add new rules or edit existing ones if necessary.
diff --git a/docs/javadocs/TestAll.html b/docs/javadocs/TestAll.html
new file mode 100644
index 0000000..5a3dd55
--- /dev/null
+++ b/docs/javadocs/TestAll.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (21) -->
+<title>TestAll</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="description" content="declaration: class: TestAll">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span></button>
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/TestAll.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="index-files/index-1.html">Index</a></li>
+<li><a href="help-doc.html#class">Help</a></li>
+</ul>
+<ul class="sub-nav-list-small">
+<li>
+<p>Summary:</p>
+<ul>
+<li>Nested</li>
+<li>Field</li>
+<li><a href="#constructor-summary">Constr</a></li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+</li>
+<li>
+<p>Detail:</p>
+<ul>
+<li>Field</li>
+<li><a href="#constructor-detail">Constr</a></li>
+<li>Method</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="sub-nav">
+<div id="navbar-sub-list">
+<ul class="sub-nav-list">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor-summary">Constr</a> | </li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor-detail">Constr</a> | </li>
+<li>Method</li>
+</ul>
+</div>
+<div class="nav-list-search"><a href="search.html">SEARCH</a>
+<input type="text" id="search-input" disabled placeholder="Search">
+<input type="reset" id="reset-button" disabled value="reset">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<h1 title="Class TestAll" class="title">Class TestAll</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">TestAll</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="annotations">@SelectClasses({<a href="TestSampleCode.html" title="class in Unnamed Package">TestSampleCode.class</a>,<a href="TestSerialization.html" title="class in Unnamed Package">TestSerialization.class</a>,<a href="TestMoneroUtils.html" title="class in Unnamed Package">TestMoneroUtils.class</a>,<a href="TestMoneroDaemonRpc.html" title="class in Unnamed Package">TestMoneroDaemonRpc.class</a>,<a href="TestMoneroWalletFull.html" title="class in Unnamed Package">TestMoneroWalletFull.class</a>,<a href="TestMoneroWalletRpc.html" title="class in Unnamed Package">TestMoneroWalletRpc.class</a>,<a href="TestMoneroConnectionManager.html" title="class in Unnamed Package">TestMoneroConnectionManager.class</a>})
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">TestAll</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+<div class="block">Run all tests in a custom order.</div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">TestAll</a>()</code></div>
+<div class="col-last even-row-color"> </div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="<init>()">
+<h3>TestAll</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">TestAll</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+</div>
+</div>
+</body>
+</html>
diff --git a/docs/javadocs/TestMoneroConnectionManager.html b/docs/javadocs/TestMoneroConnectionManager.html
new file mode 100644
index 0000000..0295717
--- /dev/null
+++ b/docs/javadocs/TestMoneroConnectionManager.html
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (21) -->
+<title>TestMoneroConnectionManager</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="description" content="declaration: class: TestMoneroConnectionManager">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span></button>
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/TestMoneroConnectionManager.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="index-files/index-1.html">Index</a></li>
+<li><a href="help-doc.html#class">Help</a></li>
+</ul>
+<ul class="sub-nav-list-small">
+<li>
+<p>Summary:</p>
+<ul>
+<li>Nested</li>
+<li>Field</li>
+<li><a href="#constructor-summary">Constr</a></li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+</li>
+<li>
+<p>Detail:</p>
+<ul>
+<li>Field</li>
+<li><a href="#constructor-detail">Constr</a></li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="sub-nav">
+<div id="navbar-sub-list">
+<ul class="sub-nav-list">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor-summary">Constr</a> | </li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor-detail">Constr</a> | </li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><a href="search.html">SEARCH</a>
+<input type="text" id="search-input" disabled placeholder="Search">
+<input type="reset" id="reset-button" disabled value="reset">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<h1 title="Class TestMoneroConnectionManager" class="title">Class TestMoneroConnectionManager</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">TestMoneroConnectionManager</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">TestMoneroConnectionManager</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+<div class="block">Test the Monero RPC connection manager.</div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">TestMoneroConnectionManager</a>()</code></div>
+<div class="col-last even-row-color"> </div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testConnectionManager()" class="member-name-link">testConnectionManager</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="<init>()">
+<h3>TestMoneroConnectionManager</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">TestMoneroConnectionManager</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="testConnectionManager()">
+<h3>testConnectionManager</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testConnectionManager</span>()
+ throws <span class="exceptions"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a>,
+<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+</div>
+</div>
+</body>
+</html>
diff --git a/docs/javadocs/TestMoneroDaemonRpc.TestContext.html b/docs/javadocs/TestMoneroDaemonRpc.TestContext.html
new file mode 100644
index 0000000..4dbbcb8
--- /dev/null
+++ b/docs/javadocs/TestMoneroDaemonRpc.TestContext.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (21) -->
+<title>TestMoneroDaemonRpc.TestContext</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="description" content="declaration: class: TestMoneroDaemonRpc, class: TestContext">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span></button>
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/TestMoneroDaemonRpc.TestContext.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="index-files/index-1.html">Index</a></li>
+<li><a href="help-doc.html#class">Help</a></li>
+</ul>
+<ul class="sub-nav-list-small">
+<li>
+<p>Summary:</p>
+<ul>
+<li>Nested</li>
+<li>Field</li>
+<li><a href="#constructor-summary">Constr</a></li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+</li>
+<li>
+<p>Detail:</p>
+<ul>
+<li>Field</li>
+<li><a href="#constructor-detail">Constr</a></li>
+<li>Method</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="sub-nav">
+<div id="navbar-sub-list">
+<ul class="sub-nav-list">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor-summary">Constr</a> | </li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor-detail">Constr</a> | </li>
+<li>Method</li>
+</ul>
+</div>
+<div class="nav-list-search"><a href="search.html">SEARCH</a>
+<input type="text" id="search-input" disabled placeholder="Search">
+<input type="reset" id="reset-button" disabled value="reset">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<h1 title="Class TestMoneroDaemonRpc.TestContext" class="title">Class TestMoneroDaemonRpc.TestContext</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">TestMoneroDaemonRpc.TestContext</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>Enclosing class:</dt>
+<dd><code><a href="TestMoneroDaemonRpc.html" title="class in Unnamed Package">TestMoneroDaemonRpc</a></code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">TestMoneroDaemonRpc.TestContext</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+<div class="block">Provides context or configuration for test methods to test a type.</div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">TestContext</a>()</code></div>
+<div class="col-last even-row-color"> </div>
+<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(TestMoneroDaemonRpc.TestContext)" class="member-name-link">TestContext</a><wbr>(<a href="TestMoneroDaemonRpc.TestContext.html" title="class in Unnamed Package">TestMoneroDaemonRpc.TestContext</a> ctx)</code></div>
+<div class="col-last odd-row-color"> </div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="<init>()">
+<h3>TestContext</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">TestContext</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="<init>(TestMoneroDaemonRpc.TestContext)">
+<h3>TestContext</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">TestContext</span><wbr><span class="parameters">(<a href="TestMoneroDaemonRpc.TestContext.html" title="class in Unnamed Package">TestMoneroDaemonRpc.TestContext</a> ctx)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+</div>
+</div>
+</body>
+</html>
diff --git a/docs/javadocs/TestMoneroDaemonRpc.html b/docs/javadocs/TestMoneroDaemonRpc.html
new file mode 100644
index 0000000..4fd54b3
--- /dev/null
+++ b/docs/javadocs/TestMoneroDaemonRpc.html
@@ -0,0 +1,812 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (21) -->
+<title>TestMoneroDaemonRpc</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="description" content="declaration: class: TestMoneroDaemonRpc">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span></button>
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/TestMoneroDaemonRpc.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="index-files/index-1.html">Index</a></li>
+<li><a href="help-doc.html#class">Help</a></li>
+</ul>
+<ul class="sub-nav-list-small">
+<li>
+<p>Summary:</p>
+<ul>
+<li><a href="#nested-class-summary">Nested</a></li>
+<li>Field</li>
+<li><a href="#constructor-summary">Constr</a></li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+</li>
+<li>
+<p>Detail:</p>
+<ul>
+<li>Field</li>
+<li><a href="#constructor-detail">Constr</a></li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="sub-nav">
+<div id="navbar-sub-list">
+<ul class="sub-nav-list">
+<li>Summary: </li>
+<li><a href="#nested-class-summary">Nested</a> | </li>
+<li>Field | </li>
+<li><a href="#constructor-summary">Constr</a> | </li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor-detail">Constr</a> | </li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><a href="search.html">SEARCH</a>
+<input type="text" id="search-input" disabled placeholder="Search">
+<input type="reset" id="reset-button" disabled value="reset">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<h1 title="Class TestMoneroDaemonRpc" class="title">Class TestMoneroDaemonRpc</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">TestMoneroDaemonRpc</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">TestMoneroDaemonRpc</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+<div class="block">Tests a Monero daemon.</div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<li>
+<section class="nested-class-summary" id="nested-class-summary">
+<h2>Nested Class Summary</h2>
+<div class="caption"><span>Nested Classes</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static class </code></div>
+<div class="col-second even-row-color"><code><a href="TestMoneroDaemonRpc.TestContext.html" class="type-name-link" title="class in Unnamed Package">TestMoneroDaemonRpc.TestContext</a></code></div>
+<div class="col-last even-row-color">
+<div class="block">Provides context or configuration for test methods to test a type.</div>
+</div>
+</div>
+</section>
+</li>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">TestMoneroDaemonRpc</a>()</code></div>
+<div class="col-last even-row-color"> </div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#beforeAll()" class="member-name-link">beforeAll</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#beforeEach()" class="member-name-link">beforeEach</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTxHexByHash()" class="member-name-link">getTxHexByHash</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testBanPeer()" class="member-name-link">testBanPeer</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testBanPeers()" class="member-name-link">testBanPeers</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testBlockListener()" class="member-name-link">testBlockListener</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCheckForUpdate()" class="member-name-link">testCheckForUpdate</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testDownloadUpdate()" class="member-name-link">testDownloadUpdate</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testFlushTxFromPoolByHash()" class="member-name-link">testFlushTxFromPoolByHash</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testFlushTxsFromPool()" class="member-name-link">testFlushTxsFromPool</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testFlushTxsFromPoolByHashes()" class="member-name-link">testFlushTxsFromPoolByHashes</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetAlternativeBlockIds()" class="member-name-link">testGetAlternativeBlockIds</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetAlternativeChains()" class="member-name-link">testGetAlternativeChains</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlockByHash()" class="member-name-link">testGetBlockByHash</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlockByHeight()" class="member-name-link">testGetBlockByHeight</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlockHeaderByHash()" class="member-name-link">testGetBlockHeaderByHash</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlockHeaderByHeight()" class="member-name-link">testGetBlockHeaderByHeight</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlockHeadersByRange()" class="member-name-link">testGetBlockHeadersByRange</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlockIdByHeight()" class="member-name-link">testGetBlockIdByHeight</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlockIdsBinary()" class="member-name-link">testGetBlockIdsBinary</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlocksByHashBinary()" class="member-name-link">testGetBlocksByHashBinary</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlocksByHeightBinary()" class="member-name-link">testGetBlocksByHeightBinary</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlocksByRange()" class="member-name-link">testGetBlocksByRange</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlocksByRangeChunked()" class="member-name-link">testGetBlocksByRangeChunked</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetBlockTemplate()" class="member-name-link">testGetBlockTemplate</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetFeeEstimate()" class="member-name-link">testGetFeeEstimate</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetGeneralInformation()" class="member-name-link">testGetGeneralInformation</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetHardForkInformation()" class="member-name-link">testGetHardForkInformation</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetHeight()" class="member-name-link">testGetHeight</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetIdsOfTxsInPoolBin()" class="member-name-link">testGetIdsOfTxsInPoolBin</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetKnownPeers()" class="member-name-link">testGetKnownPeers</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetLastBlockHeader()" class="member-name-link">testGetLastBlockHeader</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetMinerTxSum()" class="member-name-link">testGetMinerTxSum</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetMiningStatus()" class="member-name-link">testGetMiningStatus</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetOutputDistributionBinary()" class="member-name-link">testGetOutputDistributionBinary</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetOutputHistogramBinary()" class="member-name-link">testGetOutputHistogramBinary</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetOutputIndicesFromTxIdsBinary()" class="member-name-link">testGetOutputIndicesFromTxIdsBinary</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetOutputsFromAmountsAndIndicesBinary()" class="member-name-link">testGetOutputsFromAmountsAndIndicesBinary</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetPeers()" class="member-name-link">testGetPeers</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetSpentStatusOfKeyImages()" class="member-name-link">testGetSpentStatusOfKeyImages</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetSyncInformation()" class="member-name-link">testGetSyncInformation</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxByHash()" class="member-name-link">testGetTxByHash</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxHexesByHashes()" class="member-name-link">testGetTxHexesByHashes</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxPoolBacklogBin()" class="member-name-link">testGetTxPoolBacklogBin</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxPoolStatistics()" class="member-name-link">testGetTxPoolStatistics</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxsByHashes()" class="member-name-link">testGetTxsByHashes</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxsByHashesInPool()" class="member-name-link">testGetTxsByHashesInPool</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxsInPool()" class="member-name-link">testGetTxsInPool</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetVersion()" class="member-name-link">testGetVersion</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testIsTrusted()" class="member-name-link">testIsTrusted</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testMining()" class="member-name-link">testMining</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testPruneBlockchain()" class="member-name-link">testPruneBlockchain</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSetDownloadBandwidth()" class="member-name-link">testSetDownloadBandwidth</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSetIncomingPeerLimit()" class="member-name-link">testSetIncomingPeerLimit</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSetOutgoingPeerLimit()" class="member-name-link">testSetOutgoingPeerLimit</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSetUploadBandwidth()" class="member-name-link">testSetUploadBandwidth</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testStartDaemon()" class="member-name-link">testStartDaemon</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testStop()" class="member-name-link">testStop</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSubmitAndRelayTxHex()" class="member-name-link">testSubmitAndRelayTxHex</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSubmitMinedBlock()" class="member-name-link">testSubmitMinedBlock</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSubmitThenRelayTxHex()" class="member-name-link">testSubmitThenRelayTxHex</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSubmitThenRelayTxHexes()" class="member-name-link">testSubmitThenRelayTxHexes</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="<init>()">
+<h3>TestMoneroDaemonRpc</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">TestMoneroDaemonRpc</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="beforeAll()">
+<h3>beforeAll</h3>
+<div class="member-signature"><span class="annotations">@BeforeAll
+</span><span class="modifiers">public static</span> <span class="return-type">void</span> <span class="element-name">beforeAll</span>()
+ throws <span class="exceptions"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="beforeEach()">
+<h3>beforeEach</h3>
+<div class="member-signature"><span class="annotations">@BeforeEach
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">beforeEach</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testStartDaemon()">
+<h3>testStartDaemon</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testStartDaemon</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetVersion()">
+<h3>testGetVersion</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetVersion</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testIsTrusted()">
+<h3>testIsTrusted</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testIsTrusted</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetHeight()">
+<h3>testGetHeight</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetHeight</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlockIdByHeight()">
+<h3>testGetBlockIdByHeight</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlockIdByHeight</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlockTemplate()">
+<h3>testGetBlockTemplate</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlockTemplate</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetLastBlockHeader()">
+<h3>testGetLastBlockHeader</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetLastBlockHeader</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlockHeaderByHash()">
+<h3>testGetBlockHeaderByHash</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlockHeaderByHash</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlockHeaderByHeight()">
+<h3>testGetBlockHeaderByHeight</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlockHeaderByHeight</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlockHeadersByRange()">
+<h3>testGetBlockHeadersByRange</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlockHeadersByRange</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlockByHash()">
+<h3>testGetBlockByHash</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlockByHash</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlocksByHashBinary()">
+<h3>testGetBlocksByHashBinary</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlocksByHashBinary</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlockByHeight()">
+<h3>testGetBlockByHeight</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlockByHeight</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlocksByHeightBinary()">
+<h3>testGetBlocksByHeightBinary</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlocksByHeightBinary</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlocksByRange()">
+<h3>testGetBlocksByRange</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlocksByRange</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlocksByRangeChunked()">
+<h3>testGetBlocksByRangeChunked</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlocksByRangeChunked</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetBlockIdsBinary()">
+<h3>testGetBlockIdsBinary</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetBlockIdsBinary</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetTxByHash()">
+<h3>testGetTxByHash</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetTxByHash</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetTxsByHashes()">
+<h3>testGetTxsByHashes</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetTxsByHashes</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetTxsByHashesInPool()">
+<h3>testGetTxsByHashesInPool</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetTxsByHashesInPool</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="getTxHexByHash()">
+<h3>getTxHexByHash</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">getTxHexByHash</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetTxHexesByHashes()">
+<h3>testGetTxHexesByHashes</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetTxHexesByHashes</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetMinerTxSum()">
+<h3>testGetMinerTxSum</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetMinerTxSum</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetFeeEstimate()">
+<h3>testGetFeeEstimate</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetFeeEstimate</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetTxsInPool()">
+<h3>testGetTxsInPool</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetTxsInPool</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetIdsOfTxsInPoolBin()">
+<h3>testGetIdsOfTxsInPoolBin</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetIdsOfTxsInPoolBin</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetTxPoolBacklogBin()">
+<h3>testGetTxPoolBacklogBin</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetTxPoolBacklogBin</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetTxPoolStatistics()">
+<h3>testGetTxPoolStatistics</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetTxPoolStatistics</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testFlushTxsFromPool()">
+<h3>testFlushTxsFromPool</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testFlushTxsFromPool</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testFlushTxFromPoolByHash()">
+<h3>testFlushTxFromPoolByHash</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testFlushTxFromPoolByHash</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testFlushTxsFromPoolByHashes()">
+<h3>testFlushTxsFromPoolByHashes</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testFlushTxsFromPoolByHashes</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetSpentStatusOfKeyImages()">
+<h3>testGetSpentStatusOfKeyImages</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetSpentStatusOfKeyImages</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetOutputIndicesFromTxIdsBinary()">
+<h3>testGetOutputIndicesFromTxIdsBinary</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetOutputIndicesFromTxIdsBinary</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetOutputsFromAmountsAndIndicesBinary()">
+<h3>testGetOutputsFromAmountsAndIndicesBinary</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetOutputsFromAmountsAndIndicesBinary</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetOutputHistogramBinary()">
+<h3>testGetOutputHistogramBinary</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetOutputHistogramBinary</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetOutputDistributionBinary()">
+<h3>testGetOutputDistributionBinary</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetOutputDistributionBinary</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetGeneralInformation()">
+<h3>testGetGeneralInformation</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetGeneralInformation</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetSyncInformation()">
+<h3>testGetSyncInformation</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetSyncInformation</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetHardForkInformation()">
+<h3>testGetHardForkInformation</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetHardForkInformation</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetAlternativeChains()">
+<h3>testGetAlternativeChains</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetAlternativeChains</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetAlternativeBlockIds()">
+<h3>testGetAlternativeBlockIds</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetAlternativeBlockIds</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testSetDownloadBandwidth()">
+<h3>testSetDownloadBandwidth</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSetDownloadBandwidth</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testSetUploadBandwidth()">
+<h3>testSetUploadBandwidth</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSetUploadBandwidth</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetPeers()">
+<h3>testGetPeers</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetPeers</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetKnownPeers()">
+<h3>testGetKnownPeers</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetKnownPeers</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testSetOutgoingPeerLimit()">
+<h3>testSetOutgoingPeerLimit</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSetOutgoingPeerLimit</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testSetIncomingPeerLimit()">
+<h3>testSetIncomingPeerLimit</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSetIncomingPeerLimit</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testBanPeer()">
+<h3>testBanPeer</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testBanPeer</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testBanPeers()">
+<h3>testBanPeers</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testBanPeers</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testMining()">
+<h3>testMining</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testMining</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetMiningStatus()">
+<h3>testGetMiningStatus</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetMiningStatus</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testSubmitMinedBlock()">
+<h3>testSubmitMinedBlock</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSubmitMinedBlock</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testPruneBlockchain()">
+<h3>testPruneBlockchain</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testPruneBlockchain</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testCheckForUpdate()">
+<h3>testCheckForUpdate</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testCheckForUpdate</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testDownloadUpdate()">
+<h3>testDownloadUpdate</h3>
+<div class="member-signature"><span class="annotations">@Test
+@Disabled
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testDownloadUpdate</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testStop()">
+<h3>testStop</h3>
+<div class="member-signature"><span class="annotations">@Test
+@Disabled
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testStop</span>()
+ throws <span class="exceptions"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="testSubmitAndRelayTxHex()">
+<h3>testSubmitAndRelayTxHex</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSubmitAndRelayTxHex</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testSubmitThenRelayTxHex()">
+<h3>testSubmitThenRelayTxHex</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSubmitThenRelayTxHex</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testSubmitThenRelayTxHexes()">
+<h3>testSubmitThenRelayTxHexes</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSubmitThenRelayTxHexes</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testBlockListener()">
+<h3>testBlockListener</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testBlockListener</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+</div>
+</div>
+</body>
+</html>
diff --git a/docs/javadocs/TestMoneroUtils.html b/docs/javadocs/TestMoneroUtils.html
new file mode 100644
index 0000000..f97a4ea
--- /dev/null
+++ b/docs/javadocs/TestMoneroUtils.html
@@ -0,0 +1,262 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (21) -->
+<title>TestMoneroUtils</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="description" content="declaration: class: TestMoneroUtils">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span></button>
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/TestMoneroUtils.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="index-files/index-1.html">Index</a></li>
+<li><a href="help-doc.html#class">Help</a></li>
+</ul>
+<ul class="sub-nav-list-small">
+<li>
+<p>Summary:</p>
+<ul>
+<li>Nested</li>
+<li>Field</li>
+<li><a href="#constructor-summary">Constr</a></li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+</li>
+<li>
+<p>Detail:</p>
+<ul>
+<li>Field</li>
+<li><a href="#constructor-detail">Constr</a></li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="sub-nav">
+<div id="navbar-sub-list">
+<ul class="sub-nav-list">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor-summary">Constr</a> | </li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor-detail">Constr</a> | </li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><a href="search.html">SEARCH</a>
+<input type="text" id="search-input" disabled placeholder="Search">
+<input type="reset" id="reset-button" disabled value="reset">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<h1 title="Class TestMoneroUtils" class="title">Class TestMoneroUtils</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">TestMoneroUtils</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">TestMoneroUtils</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+<div class="block">Tests static Monero utilities.</div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">TestMoneroUtils</a>()</code></div>
+<div class="col-last even-row-color"> </div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#main(java.lang.String%5B%5D)" class="member-name-link">main</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[] args)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testAddressValidation()" class="member-name-link">testAddressValidation</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testAtomicUnitConversion()" class="member-name-link">testAtomicUnitConversion</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetIntegratedAddresses()" class="member-name-link">testGetIntegratedAddresses</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetPaymentUri()" class="member-name-link">testGetPaymentUri</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testKeyValidation()" class="member-name-link">testKeyValidation</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSerializeHeightsBig()" class="member-name-link">testSerializeHeightsBig</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSerializeHeightsSmall()" class="member-name-link">testSerializeHeightsSmall</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSerializeTextLong()" class="member-name-link">testSerializeTextLong</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSerializeTextShort()" class="member-name-link">testSerializeTextShort</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="<init>()">
+<h3>TestMoneroUtils</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">TestMoneroUtils</span>()</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="testGetIntegratedAddresses()">
+<h3>testGetIntegratedAddresses</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetIntegratedAddresses</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testSerializeHeightsSmall()">
+<h3>testSerializeHeightsSmall</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSerializeHeightsSmall</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testSerializeHeightsBig()">
+<h3>testSerializeHeightsBig</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSerializeHeightsBig</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testSerializeTextShort()">
+<h3>testSerializeTextShort</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSerializeTextShort</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testSerializeTextLong()">
+<h3>testSerializeTextLong</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testSerializeTextLong</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testAddressValidation()">
+<h3>testAddressValidation</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testAddressValidation</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testKeyValidation()">
+<h3>testKeyValidation</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testKeyValidation</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testAtomicUnitConversion()">
+<h3>testAtomicUnitConversion</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testAtomicUnitConversion</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testGetPaymentUri()">
+<h3>testGetPaymentUri</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">testGetPaymentUri</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="main(java.lang.String[])">
+<h3>main</h3>
+<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type">void</span> <span class="element-name">main</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[] args)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+</div>
+</div>
+</body>
+</html>
diff --git a/docs/javadocs/TestMoneroWalletCommon.TxContext.html b/docs/javadocs/TestMoneroWalletCommon.TxContext.html
new file mode 100644
index 0000000..e6e3be8
--- /dev/null
+++ b/docs/javadocs/TestMoneroWalletCommon.TxContext.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (21) -->
+<title>TestMoneroWalletCommon.TxContext</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="description" content="declaration: class: TestMoneroWalletCommon, class: TxContext">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span></button>
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/TestMoneroWalletCommon.TxContext.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="index-files/index-1.html">Index</a></li>
+<li><a href="help-doc.html#class">Help</a></li>
+</ul>
+<ul class="sub-nav-list-small">
+<li>
+<p>Summary:</p>
+<ul>
+<li>Nested</li>
+<li>Field</li>
+<li><a href="#constructor-summary">Constr</a></li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+</li>
+<li>
+<p>Detail:</p>
+<ul>
+<li>Field</li>
+<li><a href="#constructor-detail">Constr</a></li>
+<li>Method</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="sub-nav">
+<div id="navbar-sub-list">
+<ul class="sub-nav-list">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor-summary">Constr</a> | </li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor-detail">Constr</a> | </li>
+<li>Method</li>
+</ul>
+</div>
+<div class="nav-list-search"><a href="search.html">SEARCH</a>
+<input type="text" id="search-input" disabled placeholder="Search">
+<input type="reset" id="reset-button" disabled value="reset">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<h1 title="Class TestMoneroWalletCommon.TxContext" class="title">Class TestMoneroWalletCommon.TxContext</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">TestMoneroWalletCommon.TxContext</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>Enclosing class:</dt>
+<dd><code><a href="TestMoneroWalletCommon.html" title="class in Unnamed Package">TestMoneroWalletCommon</a></code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">TestMoneroWalletCommon.TxContext</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+<div class="block">Provides context or configuration for test methods to test a type.</div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">TxContext</a>()</code></div>
+<div class="col-last even-row-color"> </div>
+<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(TestMoneroWalletCommon.TxContext)" class="member-name-link">TxContext</a><wbr>(<a href="TestMoneroWalletCommon.TxContext.html" title="class in Unnamed Package">TestMoneroWalletCommon.TxContext</a> ctx)</code></div>
+<div class="col-last odd-row-color"> </div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-" title="class or interface in java.lang" class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<li>
+<section class="constructor-details" id="constructor-detail">
+<h2>Constructor Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="<init>()">
+<h3>TxContext</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">TxContext</span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="<init>(TestMoneroWalletCommon.TxContext)">
+<h3>TxContext</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">TxContext</span><wbr><span class="parameters">(<a href="TestMoneroWalletCommon.TxContext.html" title="class in Unnamed Package">TestMoneroWalletCommon.TxContext</a> ctx)</span></div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+</div>
+</div>
+</body>
+</html>
diff --git a/docs/javadocs/TestMoneroWalletCommon.html b/docs/javadocs/TestMoneroWalletCommon.html
new file mode 100644
index 0000000..fe23f73
--- /dev/null
+++ b/docs/javadocs/TestMoneroWalletCommon.html
@@ -0,0 +1,1419 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (21) -->
+<title>TestMoneroWalletCommon</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="description" content="declaration: class: TestMoneroWalletCommon">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var pathtoroot = "./";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span></button>
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/TestMoneroWalletCommon.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="index-files/index-1.html">Index</a></li>
+<li><a href="help-doc.html#class">Help</a></li>
+</ul>
+<ul class="sub-nav-list-small">
+<li>
+<p>Summary:</p>
+<ul>
+<li><a href="#nested-class-summary">Nested</a></li>
+<li>Field</li>
+<li><a href="#constructor-summary">Constr</a></li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+</li>
+<li>
+<p>Detail:</p>
+<ul>
+<li>Field</li>
+<li><a href="#constructor-detail">Constr</a></li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="sub-nav">
+<div id="navbar-sub-list">
+<ul class="sub-nav-list">
+<li>Summary: </li>
+<li><a href="#nested-class-summary">Nested</a> | </li>
+<li>Field | </li>
+<li><a href="#constructor-summary">Constr</a> | </li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor-detail">Constr</a> | </li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><a href="search.html">SEARCH</a>
+<input type="text" id="search-input" disabled placeholder="Search">
+<input type="reset" id="reset-button" disabled value="reset">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<h1 title="Class TestMoneroWalletCommon" class="title">Class TestMoneroWalletCommon</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
+<div class="inheritance">TestMoneroWalletCommon</div>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>Direct Known Subclasses:</dt>
+<dd><code><a href="TestMoneroWalletFull.html" title="class in Unnamed Package">TestMoneroWalletFull</a></code>, <code><a href="TestMoneroWalletRpc.html" title="class in Unnamed Package">TestMoneroWalletRpc</a></code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="annotations">@TestInstance(PER_CLASS)
+</span><span class="modifiers">public abstract class </span><span class="element-name type-name-label">TestMoneroWalletCommon</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
+<div class="block">Runs common tests that every Monero wallet implementation should support.</div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<li>
+<section class="nested-class-summary" id="nested-class-summary">
+<h2>Nested Class Summary</h2>
+<div class="caption"><span>Nested Classes</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Class</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static class </code></div>
+<div class="col-second even-row-color"><code><a href="TestMoneroWalletCommon.TxContext.html" class="type-name-link" title="class in Unnamed Package">TestMoneroWalletCommon.TxContext</a></code></div>
+<div class="col-last even-row-color">
+<div class="block">Provides context or configuration for test methods to test a type.</div>
+</div>
+</div>
+</section>
+</li>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<li>
+<section class="constructor-summary" id="constructor-summary">
+<h2>Constructor Summary</h2>
+<div class="caption"><span>Constructors</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Constructor</div>
+<div class="table-header col-last">Description</div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">TestMoneroWalletCommon</a>()</code></div>
+<div class="col-last even-row-color"> </div>
+</div>
+</section>
+</li>
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#afterAll()" class="member-name-link">afterAll</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#afterEach(org.junit.jupiter.api.TestInfo)" class="member-name-link">afterEach</a><wbr>(org.junit.jupiter.api.TestInfo testInfo)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#beforeAll()" class="member-name-link">beforeAll</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#beforeEach(org.junit.jupiter.api.TestInfo)" class="member-name-link">beforeEach</a><wbr>(org.junit.jupiter.api.TestInfo testInfo)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testAccounting()" class="member-name-link">testAccounting</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testAddressBook()" class="member-name-link">testAddressBook</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testChangePassword()" class="member-name-link">testChangePassword</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCheckSpendProof()" class="member-name-link">testCheckSpendProof</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCheckTxKey()" class="member-name-link">testCheckTxKey</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCheckTxProof()" class="member-name-link">testCheckTxProof</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testConnectionManager()" class="member-name-link">testConnectionManager</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCreateAccountWithLabel()" class="member-name-link">testCreateAccountWithLabel</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCreateAccountWithoutLabel()" class="member-name-link">testCreateAccountWithoutLabel</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCreateAndReceive()" class="member-name-link">testCreateAndReceive</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCreateSubaddress()" class="member-name-link">testCreateSubaddress</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCreateThenRelay()" class="member-name-link">testCreateThenRelay</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCreateThenRelaySplit()" class="member-name-link">testCreateThenRelaySplit</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCreateWalletFromKeys()" class="member-name-link">testCreateWalletFromKeys</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCreateWalletFromSeed()" class="member-name-link">testCreateWalletFromSeed</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCreateWalletFromSeedWithOffset()" class="member-name-link">testCreateWalletFromSeedWithOffset</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testCreateWalletRandom()" class="member-name-link">testCreateWalletRandom</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testDecodeIntegratedAddress()" class="member-name-link">testDecodeIntegratedAddress</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testExportKeyImages()" class="member-name-link">testExportKeyImages</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testExportOutputs()" class="member-name-link">testExportOutputs</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testFreezeOutputs()" class="member-name-link">testFreezeOutputs</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetAccount()" class="member-name-link">testGetAccount</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetAccountsWithoutSubaddresses()" class="member-name-link">testGetAccountsWithoutSubaddresses</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetAccountsWithSubaddresses()" class="member-name-link">testGetAccountsWithSubaddresses</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetAddressIndices()" class="member-name-link">testGetAddressIndices</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetAllBalances()" class="member-name-link">testGetAllBalances</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetDefaultFeePriority()" class="member-name-link">testGetDefaultFeePriority</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetHeight()" class="member-name-link">testGetHeight</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetHeightByDate()" class="member-name-link">testGetHeightByDate</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetIncomingOutgoingTransfers()" class="member-name-link">testGetIncomingOutgoingTransfers</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetIntegratedAddress()" class="member-name-link">testGetIntegratedAddress</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetNewKeyImagesFromLastImport()" class="member-name-link">testGetNewKeyImagesFromLastImport</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetOutputs()" class="member-name-link">testGetOutputs</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetOutputsWithQuery()" class="member-name-link">testGetOutputsWithQuery</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetPath()" class="member-name-link">testGetPath</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetPaymentUri()" class="member-name-link">testGetPaymentUri</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetPrimaryAddress()" class="member-name-link">testGetPrimaryAddress</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetPrivateSpendKey()" class="member-name-link">testGetPrivateSpendKey</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetPrivateViewKey()" class="member-name-link">testGetPrivateViewKey</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetPublicSpendKey()" class="member-name-link">testGetPublicSpendKey</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetPublicViewKey()" class="member-name-link">testGetPublicViewKey</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetReserveProofAccount()" class="member-name-link">testGetReserveProofAccount</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetReserveProofWallet()" class="member-name-link">testGetReserveProofWallet</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetSeed()" class="member-name-link">testGetSeed</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetSeedLanguage()" class="member-name-link">testGetSeedLanguage</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetSeedLanguages()" class="member-name-link">testGetSeedLanguages</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetSubaddressAddress()" class="member-name-link">testGetSubaddressAddress</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetSubaddressAddressOutOfRange()" class="member-name-link">testGetSubaddressAddressOutOfRange</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetSubaddressByIndex()" class="member-name-link">testGetSubaddressByIndex</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetSubaddresses()" class="member-name-link">testGetSubaddresses</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetSubaddressesByIndices()" class="member-name-link">testGetSubaddressesByIndices</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTransfers()" class="member-name-link">testGetTransfers</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTransfersWithQuery()" class="member-name-link">testGetTransfersWithQuery</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxsByHash()" class="member-name-link">testGetTxsByHash</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxsByHeight()" class="member-name-link">testGetTxsByHeight</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxsFieldsWithFiltering()" class="member-name-link">testGetTxsFieldsWithFiltering</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxsWallet()" class="member-name-link">testGetTxsWallet</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxsWithPaymentIds()" class="member-name-link">testGetTxsWithPaymentIds</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetTxsWithQuery()" class="member-name-link">testGetTxsWithQuery</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testGetVersion()" class="member-name-link">testGetVersion</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testImportKeyImages()" class="member-name-link">testImportKeyImages</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testImportOutputs()" class="member-name-link">testImportOutputs</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testInputKeyImages()" class="member-name-link">testInputKeyImages</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testMining()" class="member-name-link">testMining</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testMultisig()" class="member-name-link">testMultisig</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testMultisigStress()" class="member-name-link">testMultisigStress</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testNotificationsDifferentAccounts()" class="member-name-link">testNotificationsDifferentAccounts</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testNotificationsDifferentAccountSweepOutput()" class="member-name-link">testNotificationsDifferentAccountSweepOutput</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testNotificationsDifferentWallet()" class="member-name-link">testNotificationsDifferentWallet</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testNotificationsDifferentWalletWhenRelayed()" class="member-name-link">testNotificationsDifferentWalletWhenRelayed</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testNotificationsSameAccount()" class="member-name-link">testNotificationsSameAccount</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testNotificationsSameAccountSweepOutputWhenRelayed()" class="member-name-link">testNotificationsSameAccountSweepOutputWhenRelayed</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testProveUnrelayedTxs()" class="member-name-link">testProveUnrelayedTxs</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testRescanBlockchain()" class="member-name-link">testRescanBlockchain</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSaveAndClose()" class="member-name-link">testSaveAndClose</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testScanTxs()" class="member-name-link">testScanTxs</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSend()" class="member-name-link">testSend</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSendDustToMultipleSplit()" class="member-name-link">testSendDustToMultipleSplit</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSendFromSubaddresses()" class="member-name-link">testSendFromSubaddresses</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSendFromSubaddressesSplit()" class="member-name-link">testSendFromSubaddressesSplit</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSendSplit()" class="member-name-link">testSendSplit</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSendToExternal()" class="member-name-link">testSendToExternal</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSendToMultiple()" class="member-name-link">testSendToMultiple</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSendToMultipleSplit()" class="member-name-link">testSendToMultipleSplit</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSendToSelf()" class="member-name-link">testSendToSelf</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSendWithPaymentId()" class="member-name-link">testSendWithPaymentId</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSetAccountLabel()" class="member-name-link">testSetAccountLabel</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSetAttributes()" class="member-name-link">testSetAttributes</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSetDaemonConnection()" class="member-name-link">testSetDaemonConnection</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSetSubaddressLabel()" class="member-name-link">testSetSubaddressLabel</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSetTxNote()" class="member-name-link">testSetTxNote</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSetTxNotes()" class="member-name-link">testSetTxNotes</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSignAndVerifyMessages()" class="member-name-link">testSignAndVerifyMessages</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testStopListening()" class="member-name-link">testStopListening</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSubaddressLookahead()" class="member-name-link">testSubaddressLookahead</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSubtractFeeFrom()" class="member-name-link">testSubtractFeeFrom</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSubtractFeeFromSplit()" class="member-name-link">testSubtractFeeFromSplit</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSweepAccounts()" class="member-name-link">testSweepAccounts</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSweepDust()" class="member-name-link">testSweepDust</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSweepDustNoRelay()" class="member-name-link">testSweepDustNoRelay</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSweepOutputs()" class="member-name-link">testSweepOutputs</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSweepSubaddresses()" class="member-name-link">testSweepSubaddresses</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSweepWalletByAccounts()" class="member-name-link">testSweepWalletByAccounts</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSweepWalletBySubaddresses()" class="member-name-link">testSweepWalletBySubaddresses</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSyncWithoutProgress()" class="member-name-link">testSyncWithoutProgress</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSyncWithPoolRelay()" class="member-name-link">testSyncWithPoolRelay</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSyncWithPoolSameAccounts()" class="member-name-link">testSyncWithPoolSameAccounts</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSyncWithPoolSubmitAndDiscard()" class="member-name-link">testSyncWithPoolSubmitAndDiscard</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testSyncWithPoolSubmitAndRelay()" class="member-name-link">testSyncWithPoolSubmitAndRelay</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testUpdateLockedDifferentAccounts()" class="member-name-link">testUpdateLockedDifferentAccounts</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testUpdateLockedDifferentAccountsSplit()" class="member-name-link">testUpdateLockedDifferentAccountsSplit</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testUpdateLockedSameAccount()" class="member-name-link">testUpdateLockedSameAccount</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testUpdateLockedSameAccountSplit()" class="member-name-link">testUpdateLockedSameAccountSplit</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testValidateInputsGetOutputs()" class="member-name-link">testValidateInputsGetOutputs</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-tWhy this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.