diff --git a/Aaru.CommonTypes/.editorconfig b/Aaru.CommonTypes/.editorconfig
new file mode 100644
index 000000000..103a5d927
--- /dev/null
+++ b/Aaru.CommonTypes/.editorconfig
@@ -0,0 +1,1342 @@
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = false
+max_line_length = 120
+tab_width = 2
+trim_trailing_whitespace = false
+ij_continuation_indent_size = 4
+ij_formatter_off_tag = @formatter:off
+ij_formatter_on_tag = @formatter:on
+ij_formatter_tags_enabled = true
+ij_smart_tabs = false
+ij_visual_guides =
+ij_wrap_on_typing = false
+
+# Microsoft .NET properties
+csharp_preferred_modifier_order = public, private, protected, internal, file, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async, required:suggestion
+csharp_space_after_keywords_in_control_flow_statements = false
+csharp_style_namespace_declarations = file_scoped:warning
+csharp_style_prefer_utf8_string_literals = true:warning
+csharp_style_var_elsewhere = false:suggestion
+csharp_style_var_for_built_in_types = false:suggestion
+csharp_style_var_when_type_is_apparent = true:suggestion
+csharp_using_directive_placement = outside_namespace:silent
+dotnet_naming_rule.private_constants_rule.import_to_resharper = as_predefined
+dotnet_naming_rule.private_constants_rule.severity = warning
+dotnet_naming_rule.private_constants_rule.style = all_upper_style
+dotnet_naming_rule.private_constants_rule.symbols = private_constants_symbols
+dotnet_naming_rule.unity_serialized_field_rule.import_to_resharper = True
+dotnet_naming_rule.unity_serialized_field_rule.resharper_description = Unity serialized field
+dotnet_naming_rule.unity_serialized_field_rule.resharper_guid = 5f0fdb63-c892-4d2c-9324-15c80b22a7ef
+dotnet_naming_rule.unity_serialized_field_rule.severity = warning
+dotnet_naming_rule.unity_serialized_field_rule.style = lower_camel_case_style
+dotnet_naming_rule.unity_serialized_field_rule.symbols = unity_serialized_field_symbols
+dotnet_naming_style.all_upper_style.capitalization = all_upper
+dotnet_naming_style.all_upper_style.word_separator = _
+dotnet_naming_style.lower_camel_case_style.capitalization = camel_case
+dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities = private
+dotnet_naming_symbols.private_constants_symbols.applicable_kinds = field
+dotnet_naming_symbols.private_constants_symbols.required_modifiers = const
+dotnet_naming_symbols.unity_serialized_field_symbols.applicable_accessibilities = *
+dotnet_naming_symbols.unity_serialized_field_symbols.applicable_kinds =
+dotnet_naming_symbols.unity_serialized_field_symbols.resharper_applicable_kinds = unity_serialised_field
+dotnet_naming_symbols.unity_serialized_field_symbols.resharper_required_modifiers = instance
+dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:warning
+dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:warning
+dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:warning
+dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
+dotnet_style_predefined_type_for_member_access = true:suggestion
+dotnet_style_qualification_for_event = false:suggestion
+dotnet_style_qualification_for_field = false:suggestion
+dotnet_style_qualification_for_method = false:suggestion
+dotnet_style_qualification_for_property = false:suggestion
+dotnet_style_require_accessibility_modifiers = never:suggestion
+
+# ReSharper properties
+resharper_align_first_arg_by_paren = false
+resharper_align_linq_query = true
+resharper_align_multiline_argument = true
+resharper_align_multiline_array_and_object_initializer = false
+resharper_align_multiline_binary_expressions_chain = true
+resharper_align_multiline_binary_patterns = true
+resharper_align_multiline_calls_chain = true
+resharper_align_multiline_expression = true
+resharper_align_multiline_expression_braces = true
+resharper_align_multiline_extends_list = true
+resharper_align_multiline_for_stmt = true
+resharper_align_multiline_list_pattern = true
+resharper_align_multiline_parameter = true
+resharper_align_multiline_property_pattern = true
+resharper_align_multiline_switch_expression = true
+resharper_align_multiple_declaration = true
+resharper_align_multline_type_parameter_constrains = true
+resharper_align_multline_type_parameter_list = true
+resharper_align_ternary = align_all
+resharper_align_tuple_components = true
+resharper_autodetect_indent_settings = true
+resharper_braces_for_for = required_for_multiline
+resharper_braces_for_foreach = required_for_multiline
+resharper_braces_for_ifelse = required_for_multiline
+resharper_braces_for_while = required_for_multiline
+resharper_builtin_type_apply_to_native_integer = false
+resharper_constructor_or_destructor_body = expression_body
+resharper_csharp_align_first_arg_by_paren = true
+resharper_csharp_empty_block_style = together_same_line
+resharper_csharp_place_comments_at_first_column = true
+resharper_csharp_prefer_qualified_reference = false
+resharper_default_value_when_type_not_evident = default_expression
+resharper_enforce_line_ending_style = true
+resharper_formatter_off_tag = @formatter:off
+resharper_formatter_on_tag = @formatter:on
+resharper_formatter_tags_enabled = true
+resharper_for_built_in_types = use_var_when_evident
+resharper_function_declaration_return_type_style = on_single_line
+resharper_function_definition_return_type_style = on_single_line
+resharper_html_pi_attribute_style = first_attribute_on_single_line
+resharper_indent_anonymous_method_block = false
+resharper_indent_preprocessor_if = outdent
+resharper_indent_preprocessor_other = outdent
+resharper_indent_preprocessor_region = outdent
+resharper_int_align = true
+resharper_int_align_bitfield_sizes = true
+resharper_int_align_comments = true
+resharper_int_align_declaration_names = true
+resharper_int_align_enum_initializers = true
+resharper_int_align_eq = true
+resharper_keep_existing_embedded_arrangement = false
+resharper_keep_existing_initializer_arrangement = false
+resharper_keep_existing_linebreaks = false
+resharper_keep_existing_list_patterns_arrangement = false
+resharper_keep_existing_property_patterns_arrangement = false
+resharper_keep_existing_switch_expression_arrangement = false
+resharper_line_break_after_colon_in_member_initializer_lists = on_single_line
+resharper_line_break_before_requires_clause = on_single_line
+resharper_linkage_specification_indentation = all
+resharper_local_function_body = expression_body
+resharper_member_initializer_list_style = on_single_line
+resharper_method_or_operator_body = expression_body
+resharper_outdent_binary_ops = true
+resharper_outdent_binary_pattern_ops = true
+resharper_outdent_commas = true
+resharper_outdent_dots = true
+resharper_outdent_statement_labels = true
+resharper_parentheses_redundancy_style = remove
+resharper_place_attribute_on_same_line = false
+resharper_place_simple_embedded_statement_on_same_line = false
+resharper_place_simple_initializer_on_single_line = false
+resharper_qualified_using_at_nested_scope = true
+resharper_show_autodetect_configure_formatting_tip = false
+resharper_simple_block_style = on_single_line
+resharper_simple_case_statement_style = line_break
+resharper_simple_embedded_statement_style = on_single_line
+resharper_space_after_ptr_in_data_member = false
+resharper_space_after_ptr_in_method = false
+resharper_space_after_ref_in_data_member = false
+resharper_space_after_ref_in_method = false
+resharper_space_before_ptr_in_data_member = true
+resharper_space_before_ptr_in_method = true
+resharper_space_before_ref_in_data_member = true
+resharper_space_before_ref_in_method = true
+resharper_space_before_template_params = false
+resharper_space_within_empty_braces = false
+resharper_toplevel_function_declaration_return_type_style = on_single_line
+resharper_toplevel_function_definition_return_type_style = on_single_line
+resharper_use_indent_from_vs = false
+resharper_wrap_after_dot_in_method_calls = true
+resharper_wrap_base_clause_style = chop_if_long
+resharper_wrap_braced_init_list_style = chop_if_long
+resharper_wrap_chained_binary_expressions = chop_if_long
+resharper_wrap_chained_method_calls = chop_if_long
+resharper_wrap_ctor_initializer_style = chop_if_long
+resharper_wrap_lines = true
+resharper_xmldoc_attribute_indent = align_by_first_attribute
+resharper_xmldoc_attribute_style = first_attribute_on_single_line
+resharper_xmldoc_pi_attribute_style = first_attribute_on_single_line
+
+# ReSharper inspection severities
+resharper_annotate_can_be_null_parameter_highlighting = warning
+resharper_annotate_can_be_null_type_member_highlighting = warning
+resharper_annotate_not_null_parameter_highlighting = warning
+resharper_annotate_not_null_type_member_highlighting = warning
+resharper_arguments_style_anonymous_function_highlighting = warning
+resharper_arguments_style_literal_highlighting = warning
+resharper_arguments_style_named_expression_highlighting = warning
+resharper_arguments_style_other_highlighting = warning
+resharper_arguments_style_string_literal_highlighting = warning
+resharper_arrange_accessor_owner_body_highlighting = warning
+resharper_arrange_constructor_or_destructor_body_highlighting = warning
+resharper_arrange_local_function_body_highlighting = warning
+resharper_arrange_method_or_operator_body_highlighting = warning
+resharper_arrange_redundant_parentheses_highlighting = hint
+resharper_arrange_static_member_qualifier_highlighting = warning
+resharper_arrange_this_qualifier_highlighting = hint
+resharper_arrange_trailing_comma_in_multiline_lists_highlighting = warning
+resharper_arrange_trailing_comma_in_singleline_lists_highlighting = warning
+resharper_arrange_type_member_modifiers_highlighting = hint
+resharper_arrange_type_modifiers_highlighting = hint
+resharper_arrange_var_keywords_in_deconstructing_declaration_highlighting = warning
+resharper_async_void_method_highlighting = warning
+resharper_auto_property_can_be_made_get_only_global_highlighting = warning
+resharper_auto_property_can_be_made_get_only_local_highlighting = warning
+resharper_bad_attribute_brackets_spaces_highlighting = warning
+resharper_bad_braces_spaces_highlighting = warning
+resharper_bad_colon_spaces_highlighting = warning
+resharper_bad_comma_spaces_highlighting = warning
+resharper_bad_control_braces_indent_highlighting = warning
+resharper_bad_control_braces_line_breaks_highlighting = warning
+resharper_bad_declaration_braces_indent_highlighting = warning
+resharper_bad_declaration_braces_line_breaks_highlighting = warning
+resharper_bad_empty_braces_line_breaks_highlighting = warning
+resharper_bad_expression_braces_indent_highlighting = warning
+resharper_bad_expression_braces_line_breaks_highlighting = warning
+resharper_bad_generic_brackets_spaces_highlighting = warning
+resharper_bad_indent_highlighting = warning
+resharper_bad_linq_line_breaks_highlighting = warning
+resharper_bad_member_access_spaces_highlighting = warning
+resharper_bad_namespace_braces_indent_highlighting = warning
+resharper_bad_parens_line_breaks_highlighting = warning
+resharper_bad_parens_spaces_highlighting = warning
+resharper_bad_preprocessor_indent_highlighting = warning
+resharper_bad_semicolon_spaces_highlighting = warning
+resharper_bad_spaces_after_keyword_highlighting = warning
+resharper_bad_square_brackets_spaces_highlighting = warning
+resharper_bad_switch_braces_indent_highlighting = warning
+resharper_bad_symbol_spaces_highlighting = warning
+resharper_built_in_type_reference_style_for_member_access_highlighting = hint
+resharper_built_in_type_reference_style_highlighting = hint
+resharper_check_for_reference_equality_instead_1_highlighting = warning
+resharper_check_for_reference_equality_instead_2_highlighting = warning
+resharper_check_for_reference_equality_instead_3_highlighting = warning
+resharper_check_for_reference_equality_instead_4_highlighting = warning
+resharper_class_can_be_sealed_global_highlighting = warning
+resharper_class_can_be_sealed_local_highlighting = warning
+resharper_class_never_instantiated_global_highlighting = warning
+resharper_class_never_instantiated_local_highlighting = warning
+resharper_class_with_virtual_members_never_inherited_global_highlighting = warning
+resharper_class_with_virtual_members_never_inherited_local_highlighting = warning
+resharper_comment_typo_highlighting = none
+resharper_compare_non_constrained_generic_with_null_highlighting = warning
+resharper_convert_closure_to_method_group_highlighting = warning
+resharper_convert_conditional_ternary_expression_to_switch_expression_highlighting = warning
+resharper_convert_if_do_to_while_highlighting = warning
+resharper_convert_if_statement_to_conditional_ternary_expression_highlighting = warning
+resharper_convert_if_statement_to_null_coalescing_assignment_highlighting = warning
+resharper_convert_if_statement_to_null_coalescing_expression_highlighting = warning
+resharper_convert_if_statement_to_return_statement_highlighting = warning
+resharper_convert_if_statement_to_switch_statement_highlighting = warning
+resharper_convert_if_to_or_expression_highlighting = warning
+resharper_convert_nullable_to_short_form_highlighting = warning
+resharper_convert_switch_statement_to_switch_expression_highlighting = warning
+resharper_convert_to_auto_property_highlighting = warning
+resharper_convert_to_auto_property_when_possible_highlighting = warning
+resharper_convert_to_auto_property_with_private_setter_highlighting = warning
+resharper_convert_to_compound_assignment_highlighting = warning
+resharper_convert_to_constant_global_highlighting = warning
+resharper_convert_to_constant_local_highlighting = warning
+resharper_convert_to_lambda_expression_highlighting = warning
+resharper_convert_to_local_function_highlighting = warning
+resharper_convert_to_null_coalescing_compound_assignment_highlighting = warning
+resharper_convert_to_primary_constructor_highlighting = warning
+resharper_convert_to_static_class_highlighting = warning
+resharper_convert_to_using_declaration_highlighting = warning
+resharper_cpp_enforce_cv_qualifiers_order_highlighting = hint
+resharper_cpp_enforce_cv_qualifiers_placement_highlighting = hint
+resharper_cpp_enforce_do_statement_braces_highlighting = hint
+resharper_cpp_enforce_for_statement_braces_highlighting = hint
+resharper_cpp_enforce_function_declaration_style_highlighting = hint
+resharper_cpp_enforce_if_statement_braces_highlighting = hint
+resharper_cpp_enforce_type_alias_code_style_highlighting = hint
+resharper_cpp_enforce_while_statement_braces_highlighting = hint
+resharper_cpp_remove_redundant_braces_highlighting = hint
+resharper_double_negation_in_pattern_highlighting = warning
+resharper_double_negation_operator_highlighting = warning
+resharper_event_never_invoked_global_highlighting = warning
+resharper_event_never_subscribed_to_global_highlighting = warning
+resharper_event_never_subscribed_to_local_highlighting = warning
+resharper_field_can_be_made_read_only_global_highlighting = warning
+resharper_field_can_be_made_read_only_local_highlighting = warning
+resharper_foreach_can_be_converted_to_query_using_another_get_enumerator_highlighting = warning
+resharper_foreach_can_be_partly_converted_to_query_using_another_get_enumerator_highlighting = none
+resharper_for_can_be_converted_to_foreach_highlighting = warning
+resharper_heap_view_boxing_allocation_highlighting = none
+resharper_heap_view_closure_allocation_highlighting = none
+resharper_heap_view_delegate_allocation_highlighting = none
+resharper_heap_view_object_allocation_evident_highlighting = none
+resharper_heap_view_object_allocation_highlighting = none
+resharper_identifier_typo_highlighting = none
+resharper_incorrect_blank_lines_near_braces_highlighting = warning
+resharper_inheritdoc_consider_usage_highlighting = warning
+resharper_inline_out_variable_declaration_highlighting = warning
+resharper_inline_temporary_variable_highlighting = warning
+resharper_introduce_optional_parameters_global_highlighting = warning
+resharper_introduce_optional_parameters_local_highlighting = warning
+resharper_invert_condition_1_highlighting = warning
+resharper_invert_if_highlighting = warning
+resharper_invocation_is_skipped_highlighting = warning
+resharper_invoke_as_extension_method_highlighting = warning
+resharper_join_declaration_and_initializer_highlighting = warning
+resharper_join_null_check_with_usage_highlighting = warning
+resharper_lambda_expression_must_be_static_highlighting = warning
+resharper_local_function_can_be_made_static_highlighting = warning
+resharper_loop_can_be_converted_to_query_highlighting = warning
+resharper_loop_can_be_partly_converted_to_query_highlighting = warning
+resharper_member_can_be_file_local_highlighting = warning
+resharper_member_can_be_internal_highlighting = warning
+resharper_member_can_be_made_static_global_highlighting = warning
+resharper_member_can_be_made_static_local_highlighting = warning
+resharper_member_can_be_private_global_highlighting = warning
+resharper_member_can_be_private_local_highlighting = warning
+resharper_member_can_be_protected_global_highlighting = warning
+resharper_member_can_be_protected_local_highlighting = warning
+resharper_merge_and_pattern_highlighting = warning
+resharper_merge_cast_with_type_check_highlighting = warning
+resharper_merge_conditional_expression_highlighting = warning
+resharper_merge_into_logical_pattern_highlighting = warning
+resharper_merge_into_negated_pattern_highlighting = warning
+resharper_merge_into_pattern_highlighting = warning
+resharper_merge_nested_property_patterns_highlighting = warning
+resharper_merge_sequential_checks_highlighting = warning
+resharper_method_has_async_overload_highlighting = warning
+resharper_method_has_async_overload_with_cancellation_highlighting = warning
+resharper_method_supports_cancellation_highlighting = warning
+resharper_missing_blank_lines_highlighting = warning
+resharper_missing_linebreak_highlighting = warning
+resharper_missing_space_highlighting = warning
+resharper_more_specific_foreach_variable_type_available_highlighting = warning
+resharper_move_to_existing_positional_deconstruction_pattern_highlighting = warning
+resharper_move_variable_declaration_inside_loop_condition_highlighting = warning
+resharper_multiple_spaces_highlighting = warning
+resharper_multiple_statements_on_one_line_highlighting = warning
+resharper_multiple_type_members_on_one_line_highlighting = warning
+resharper_negation_of_relational_pattern_highlighting = warning
+resharper_negative_equality_expression_highlighting = warning
+resharper_nested_string_interpolation_highlighting = warning
+resharper_not_accessed_field_global_highlighting = warning
+resharper_nullable_warning_suppression_is_used_highlighting = warning
+resharper_outdent_is_off_prev_level_highlighting = warning
+resharper_out_parameter_value_is_always_discarded_global_highlighting = warning
+resharper_parameter_only_used_for_precondition_check_global_highlighting = warning
+resharper_parameter_type_can_be_enumerable_global_highlighting = warning
+resharper_parameter_type_can_be_enumerable_local_highlighting = warning
+resharper_pass_string_interpolation_highlighting = warning
+resharper_possible_unintended_queryable_as_enumerable_highlighting = warning
+resharper_property_can_be_made_init_only_global_highlighting = warning
+resharper_property_can_be_made_init_only_local_highlighting = warning
+resharper_public_constructor_in_abstract_class_highlighting = warning
+resharper_raw_string_can_be_simplified_highlighting = warning
+resharper_redundant_accessor_body_highlighting = warning
+resharper_redundant_always_match_subpattern_highlighting = warning
+resharper_redundant_array_creation_expression_highlighting = warning
+resharper_redundant_attribute_parentheses_highlighting = warning
+resharper_redundant_attribute_usage_property_highlighting = warning
+resharper_redundant_base_qualifier_highlighting = warning
+resharper_redundant_blank_lines_highlighting = warning
+resharper_redundant_collection_initializer_element_braces_highlighting = warning
+resharper_redundant_configure_await_highlighting = warning
+resharper_redundant_declaration_semicolon_highlighting = warning
+resharper_redundant_discard_designation_highlighting = warning
+resharper_redundant_empty_object_creation_argument_list_highlighting = warning
+resharper_redundant_enum_case_label_for_default_section_highlighting = warning
+resharper_redundant_explicit_params_array_creation_highlighting = warning
+resharper_redundant_fixed_pointer_declaration_highlighting = warning
+resharper_redundant_if_else_block_highlighting = warning
+resharper_redundant_immediate_delegate_invocation_highlighting = warning
+resharper_redundant_is_before_relational_pattern_highlighting = warning
+resharper_redundant_lambda_signature_parentheses_highlighting = warning
+resharper_redundant_overload_global_highlighting = warning
+resharper_redundant_overload_local_highlighting = warning
+resharper_redundant_pattern_parentheses_highlighting = warning
+resharper_redundant_property_pattern_clause_highlighting = warning
+resharper_redundant_query_order_by_ascending_keyword_highlighting = warning
+resharper_redundant_range_bound_highlighting = warning
+resharper_redundant_readonly_modifier_highlighting = warning
+resharper_redundant_space_highlighting = warning
+resharper_redundant_string_interpolation_highlighting = warning
+resharper_redundant_to_string_call_for_value_type_highlighting = warning
+resharper_redundant_verbatim_prefix_highlighting = warning
+resharper_redundant_verbatim_string_prefix_highlighting = warning
+resharper_redundant_with_expression_highlighting = warning
+resharper_remove_constructor_invocation_highlighting = warning
+resharper_remove_redundant_braces_highlighting = warning
+resharper_remove_redundant_or_statement_false_highlighting = warning
+resharper_remove_redundant_or_statement_true_highlighting = warning
+resharper_remove_to_list_1_highlighting = warning
+resharper_remove_to_list_2_highlighting = warning
+resharper_replace_auto_property_with_computed_property_highlighting = warning
+resharper_replace_conditional_expression_with_null_coalescing_highlighting = warning
+resharper_replace_object_pattern_with_var_pattern_highlighting = warning
+resharper_replace_slice_with_range_indexer_highlighting = warning
+resharper_replace_substring_with_range_indexer_highlighting = warning
+resharper_replace_with_field_keyword_highlighting = warning
+resharper_replace_with_first_or_default_1_highlighting = warning
+resharper_replace_with_first_or_default_2_highlighting = warning
+resharper_replace_with_first_or_default_3_highlighting = warning
+resharper_replace_with_first_or_default_4_highlighting = warning
+resharper_replace_with_last_or_default_1_highlighting = warning
+resharper_replace_with_last_or_default_2_highlighting = warning
+resharper_replace_with_last_or_default_3_highlighting = warning
+resharper_replace_with_last_or_default_4_highlighting = warning
+resharper_replace_with_of_type_1_highlighting = warning
+resharper_replace_with_of_type_2_highlighting = warning
+resharper_replace_with_of_type_3_highlighting = warning
+resharper_replace_with_of_type_any_1_highlighting = warning
+resharper_replace_with_of_type_any_2_highlighting = warning
+resharper_replace_with_of_type_count_1_highlighting = warning
+resharper_replace_with_of_type_count_2_highlighting = warning
+resharper_replace_with_of_type_first_1_highlighting = warning
+resharper_replace_with_of_type_first_2_highlighting = warning
+resharper_replace_with_of_type_first_or_default_1_highlighting = warning
+resharper_replace_with_of_type_first_or_default_2_highlighting = warning
+resharper_replace_with_of_type_last_1_highlighting = warning
+resharper_replace_with_of_type_last_2_highlighting = warning
+resharper_replace_with_of_type_last_or_default_1_highlighting = warning
+resharper_replace_with_of_type_last_or_default_2_highlighting = warning
+resharper_replace_with_of_type_long_count_highlighting = warning
+resharper_replace_with_of_type_single_1_highlighting = warning
+resharper_replace_with_of_type_single_2_highlighting = warning
+resharper_replace_with_of_type_single_or_default_1_highlighting = warning
+resharper_replace_with_of_type_single_or_default_2_highlighting = warning
+resharper_replace_with_of_type_where_highlighting = warning
+resharper_replace_with_simple_assignment_false_highlighting = warning
+resharper_replace_with_simple_assignment_true_highlighting = warning
+resharper_replace_with_single_assignment_false_highlighting = warning
+resharper_replace_with_single_assignment_true_highlighting = warning
+resharper_replace_with_single_call_to_any_highlighting = warning
+resharper_replace_with_single_call_to_count_highlighting = warning
+resharper_replace_with_single_call_to_first_highlighting = warning
+resharper_replace_with_single_call_to_first_or_default_highlighting = warning
+resharper_replace_with_single_call_to_last_highlighting = warning
+resharper_replace_with_single_call_to_last_or_default_highlighting = warning
+resharper_replace_with_single_call_to_single_highlighting = warning
+resharper_replace_with_single_call_to_single_or_default_highlighting = warning
+resharper_replace_with_single_or_default_1_highlighting = warning
+resharper_replace_with_single_or_default_2_highlighting = warning
+resharper_replace_with_single_or_default_3_highlighting = warning
+resharper_replace_with_single_or_default_4_highlighting = warning
+resharper_replace_with_string_is_null_or_empty_highlighting = warning
+resharper_return_type_can_be_enumerable_global_highlighting = warning
+resharper_return_type_can_be_enumerable_local_highlighting = warning
+resharper_safe_cast_is_used_as_type_check_highlighting = warning
+resharper_separate_control_transfer_statement_highlighting = warning
+resharper_similar_anonymous_type_nearby_highlighting = warning
+resharper_simplify_conditional_ternary_expression_highlighting = warning
+resharper_simplify_linq_expression_use_all_highlighting = warning
+resharper_simplify_linq_expression_use_any_highlighting = warning
+resharper_simplify_linq_expression_use_min_by_and_max_by_highlighting = warning
+resharper_simplify_string_interpolation_highlighting = warning
+resharper_specify_string_comparison_highlighting = warning
+resharper_string_ends_with_is_culture_specific_highlighting = warning
+resharper_string_literal_as_interpolation_argument_highlighting = warning
+resharper_string_literal_typo_highlighting = warning
+resharper_string_starts_with_is_culture_specific_highlighting = warning
+resharper_struct_can_be_made_read_only_highlighting = warning
+resharper_struct_member_can_be_made_read_only_highlighting = warning
+resharper_suggest_base_type_for_parameter_highlighting = none
+resharper_suggest_base_type_for_parameter_in_constructor_highlighting = warning
+resharper_suggest_var_or_type_built_in_types_highlighting = hint
+resharper_suggest_var_or_type_deconstruction_declarations_highlighting = warning
+resharper_suggest_var_or_type_elsewhere_highlighting = hint
+resharper_suggest_var_or_type_simple_types_highlighting = hint
+resharper_swap_via_deconstruction_highlighting = warning
+resharper_switch_expression_handles_some_known_enum_values_with_exception_in_default_highlighting = warning
+resharper_switch_statement_handles_some_known_enum_values_with_default_highlighting = none
+resharper_switch_statement_missing_some_enum_cases_no_default_highlighting = none
+resharper_tabs_and_spaces_mismatch_highlighting = warning
+resharper_tabs_are_disallowed_highlighting = warning
+resharper_tabs_outside_indent_highlighting = warning
+resharper_tail_recursive_call_highlighting = warning
+resharper_too_wide_local_variable_scope_highlighting = warning
+resharper_try_cast_always_succeeds_highlighting = warning
+resharper_try_statements_can_be_merged_highlighting = warning
+resharper_type_parameter_can_be_variant_highlighting = warning
+resharper_unnecessary_whitespace_highlighting = warning
+resharper_unused_member_global_highlighting = warning
+resharper_unused_member_hierarchy_global_highlighting = warning
+resharper_unused_member_in_super_global_highlighting = warning
+resharper_unused_method_return_value_global_highlighting = warning
+resharper_unused_parameter_global_highlighting = warning
+resharper_unused_type_global_highlighting = warning
+resharper_use_array_creation_expression_1_highlighting = warning
+resharper_use_array_creation_expression_2_highlighting = warning
+resharper_use_array_empty_method_highlighting = warning
+resharper_use_await_using_highlighting = warning
+resharper_use_cancellation_token_for_i_async_enumerable_highlighting = warning
+resharper_use_collection_count_property_highlighting = warning
+resharper_use_configure_await_false_highlighting = warning
+resharper_use_deconstruction_highlighting = warning
+resharper_use_empty_types_field_highlighting = warning
+resharper_use_event_args_empty_field_highlighting = warning
+resharper_use_format_specifier_in_format_string_highlighting = warning
+resharper_use_indexed_property_highlighting = warning
+resharper_use_index_from_end_expression_highlighting = warning
+resharper_use_is_operator_1_highlighting = warning
+resharper_use_is_operator_2_highlighting = warning
+resharper_use_method_any_0_highlighting = warning
+resharper_use_method_any_1_highlighting = warning
+resharper_use_method_any_2_highlighting = warning
+resharper_use_method_any_3_highlighting = warning
+resharper_use_method_any_4_highlighting = warning
+resharper_use_method_is_instance_of_type_highlighting = warning
+resharper_use_nameof_expression_for_part_of_the_string_highlighting = warning
+resharper_use_nameof_expression_highlighting = warning
+resharper_use_nameof_for_dependency_property_highlighting = warning
+resharper_use_name_of_instead_of_type_of_highlighting = warning
+resharper_use_negated_pattern_in_is_expression_highlighting = warning
+resharper_use_negated_pattern_matching_highlighting = warning
+resharper_use_nullable_annotation_instead_of_attribute_highlighting = warning
+resharper_use_nullable_attributes_supported_by_compiler_highlighting = warning
+resharper_use_null_propagation_highlighting = warning
+resharper_use_object_or_collection_initializer_highlighting = warning
+resharper_use_pattern_matching_highlighting = warning
+resharper_use_positional_deconstruction_pattern_highlighting = warning
+resharper_use_raw_string_highlighting = warning
+resharper_use_string_interpolation_highlighting = warning
+resharper_use_switch_case_pattern_variable_highlighting = warning
+resharper_use_throw_if_null_method_highlighting = warning
+resharper_use_unsigned_right_shift_operator_highlighting = warning
+resharper_use_verbatim_string_highlighting = warning
+resharper_use_with_expression_to_copy_anonymous_object_highlighting = warning
+resharper_use_with_expression_to_copy_record_highlighting = warning
+resharper_use_with_expression_to_copy_struct_highlighting = warning
+resharper_use_with_expression_to_copy_tuple_highlighting = warning
+resharper_virtual_member_never_overridden_global_highlighting = warning
+resharper_virtual_member_never_overridden_local_highlighting = warning
+resharper_web_config_module_not_resolved_highlighting = warning
+resharper_web_config_type_not_resolved_highlighting = warning
+resharper_web_config_wrong_module_highlighting = warning
+resharper_with_expression_instead_of_initializer_highlighting = warning
+resharper_wrong_indent_size_highlighting = warning
+
+[*.css]
+ij_css_align_closing_brace_with_properties = false
+ij_css_blank_lines_around_nested_selector = 1
+ij_css_blank_lines_between_blocks = 1
+ij_css_block_comment_add_space = false
+ij_css_brace_placement = end_of_line
+ij_css_enforce_quotes_on_format = false
+ij_css_hex_color_long_format = false
+ij_css_hex_color_lower_case = false
+ij_css_hex_color_short_format = false
+ij_css_hex_color_upper_case = false
+ij_css_keep_blank_lines_in_code = 2
+ij_css_keep_indents_on_empty_lines = false
+ij_css_keep_single_line_blocks = false
+ij_css_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow
+ij_css_space_after_colon = true
+ij_css_space_before_opening_brace = true
+ij_css_use_double_quotes = true
+ij_css_value_alignment = do_not_align
+
+[*.csv]
+max_line_length = 2147483647
+ij_csv_wrap_long_lines = false
+indent_style = tab
+tab_width = 1
+
+[*.dart]
+max_line_length = 80
+
+[*.less]
+indent_size = 2
+ij_less_align_closing_brace_with_properties = false
+ij_less_blank_lines_around_nested_selector = 1
+ij_less_blank_lines_between_blocks = 1
+ij_less_block_comment_add_space = false
+ij_less_brace_placement = 0
+ij_less_enforce_quotes_on_format = false
+ij_less_hex_color_long_format = false
+ij_less_hex_color_lower_case = false
+ij_less_hex_color_short_format = false
+ij_less_hex_color_upper_case = false
+ij_less_keep_blank_lines_in_code = 2
+ij_less_keep_indents_on_empty_lines = false
+ij_less_keep_single_line_blocks = false
+ij_less_line_comment_add_space = false
+ij_less_line_comment_at_first_column = false
+ij_less_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow
+ij_less_space_after_colon = true
+ij_less_space_before_opening_brace = true
+ij_less_use_double_quotes = true
+ij_less_value_alignment = 0
+
+[*.pp]
+indent_size = 2
+tab_width = 2
+ij_continuation_indent_size = 2
+ij_puppet_keep_indents_on_empty_lines = false
+
+[*.properties]
+ij_properties_align_group_field_declarations = true
+ij_properties_keep_blank_lines = false
+ij_properties_key_value_delimiter = equals
+ij_properties_spaces_around_key_value_delimiter = true
+
+[*.sass]
+indent_size = 2
+ij_sass_align_closing_brace_with_properties = false
+ij_sass_blank_lines_around_nested_selector = 1
+ij_sass_blank_lines_between_blocks = 1
+ij_sass_brace_placement = 0
+ij_sass_enforce_quotes_on_format = false
+ij_sass_hex_color_long_format = false
+ij_sass_hex_color_lower_case = false
+ij_sass_hex_color_short_format = false
+ij_sass_hex_color_upper_case = false
+ij_sass_keep_blank_lines_in_code = 2
+ij_sass_keep_indents_on_empty_lines = false
+ij_sass_keep_single_line_blocks = false
+ij_sass_line_comment_add_space = false
+ij_sass_line_comment_at_first_column = false
+ij_sass_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow
+ij_sass_space_after_colon = true
+ij_sass_space_before_opening_brace = true
+ij_sass_use_double_quotes = true
+ij_sass_value_alignment = 0
+
+[*.scss]
+indent_size = 2
+ij_scss_align_closing_brace_with_properties = false
+ij_scss_blank_lines_around_nested_selector = 1
+ij_scss_blank_lines_between_blocks = 1
+ij_scss_block_comment_add_space = false
+ij_scss_brace_placement = 0
+ij_scss_enforce_quotes_on_format = false
+ij_scss_hex_color_long_format = false
+ij_scss_hex_color_lower_case = false
+ij_scss_hex_color_short_format = false
+ij_scss_hex_color_upper_case = false
+ij_scss_keep_blank_lines_in_code = 2
+ij_scss_keep_indents_on_empty_lines = false
+ij_scss_keep_single_line_blocks = false
+ij_scss_line_comment_add_space = false
+ij_scss_line_comment_at_first_column = false
+ij_scss_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow
+ij_scss_space_after_colon = true
+ij_scss_space_before_opening_brace = true
+ij_scss_use_double_quotes = true
+ij_scss_value_alignment = 0
+
+[*.slim]
+indent_size = 2
+ij_slim_keep_indents_on_empty_lines = false
+
+[*.twig]
+ij_twig_keep_indents_on_empty_lines = false
+ij_twig_spaces_inside_comments_delimiters = true
+ij_twig_spaces_inside_delimiters = true
+ij_twig_spaces_inside_variable_delimiters = true
+
+[*.vue]
+indent_size = 2
+tab_width = 2
+ij_continuation_indent_size = 4
+ij_vue_indent_children_of_top_level = template
+ij_vue_interpolation_new_line_after_start_delimiter = true
+ij_vue_interpolation_new_line_before_end_delimiter = true
+ij_vue_interpolation_wrap = off
+ij_vue_keep_indents_on_empty_lines = false
+ij_vue_spaces_within_interpolation_expressions = true
+
+[.editorconfig]
+ij_editorconfig_align_group_field_declarations = true
+ij_editorconfig_space_after_colon = false
+ij_editorconfig_space_after_comma = true
+ij_editorconfig_space_before_colon = false
+ij_editorconfig_space_before_comma = false
+ij_editorconfig_spaces_around_assignment_operators = true
+
+[{*.ad,*.adoc,*.asciidoc,.asciidoctorconfig}]
+ij_asciidoc_blank_lines_after_header = 1
+ij_asciidoc_blank_lines_keep_after_header = 1
+ij_asciidoc_formatting_enabled = true
+ij_asciidoc_one_sentence_per_line = true
+
+[{*.ant,*.appxmanifest,*.axml,*.cscfg,*.csdef,*.disco,*.dotsettings,*.filelayout,*.fxml,*.jhm,*.jnlp,*.jrxml,*.manifest,*.myapp,*.nuspec,*.rng,*.sdef,*.stylecop,*.svcmap,*.tld,*.wadcfgx,*.webref,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul,StyleCop.Cache}]
+ij_xml_align_attributes = true
+ij_xml_align_text = false
+ij_xml_attribute_wrap = on_every_item
+ij_xml_block_comment_add_space = false
+ij_xml_block_comment_at_first_column = true
+ij_xml_keep_blank_lines = 2
+ij_xml_keep_indents_on_empty_lines = false
+ij_xml_keep_line_breaks = true
+ij_xml_keep_line_breaks_in_text = true
+ij_xml_keep_whitespaces = false
+ij_xml_keep_whitespaces_around_cdata = preserve
+ij_xml_keep_whitespaces_inside_cdata = false
+ij_xml_line_comment_at_first_column = true
+ij_xml_space_after_tag_name = false
+ij_xml_space_around_equals_in_attribute = false
+ij_xml_space_inside_empty_tag = false
+ij_xml_text_wrap = normal
+ij_xml_use_custom_settings = false
+indent_size = 2
+tab_width = 2
+ij_continuation_indent_size = 4
+
+[{*.applescript,*.scpt}]
+indent_size = 2
+tab_width = 2
+ij_continuation_indent_size = 4
+ij_applescript_align_multiline_binary_operation = true
+ij_applescript_align_multiline_parameters = true
+ij_applescript_align_multiline_parameters_in_calls = true
+ij_applescript_binary_operation_sign_on_next_line = false
+ij_applescript_binary_operation_wrap = off
+ij_applescript_block_brace_style = next_line
+ij_applescript_call_parameters_new_line_after_left_paren = false
+ij_applescript_call_parameters_right_paren_on_new_line = false
+ij_applescript_call_parameters_wrap = off
+ij_applescript_else_on_new_line = true
+ij_applescript_keep_blank_lines_in_code = 2
+ij_applescript_keep_first_column_comment = true
+ij_applescript_keep_indents_on_empty_lines = false
+ij_applescript_keep_line_breaks = true
+ij_applescript_method_brace_style = next_line
+ij_applescript_method_parameters_new_line_after_left_paren = false
+ij_applescript_method_parameters_right_paren_on_new_line = false
+ij_applescript_method_parameters_wrap = off
+ij_applescript_parentheses_expression_new_line_after_left_paren = false
+ij_applescript_parentheses_expression_right_paren_on_new_line = false
+ij_applescript_space_after_colon = true
+ij_applescript_space_after_comma = true
+ij_applescript_space_after_comma_in_type_arguments = true
+ij_applescript_space_before_colon = true
+ij_applescript_space_before_comma = false
+ij_applescript_space_before_else_keyword = true
+ij_applescript_space_before_else_left_brace = true
+ij_applescript_space_before_if_parentheses = false
+ij_applescript_space_before_method_call_parentheses = false
+ij_applescript_space_before_method_left_brace = true
+ij_applescript_space_before_method_parentheses = false
+ij_applescript_space_before_while_keyword = true
+ij_applescript_spaces_around_additive_operators = true
+ij_applescript_spaces_around_assignment_operators = true
+ij_applescript_spaces_around_equality_operators = true
+ij_applescript_spaces_around_logical_operators = true
+ij_applescript_spaces_around_multiplicative_operators = true
+ij_applescript_spaces_around_relational_operators = true
+ij_applescript_spaces_around_shift_operators = true
+ij_applescript_spaces_around_unary_operator = false
+ij_applescript_spaces_within_if_parentheses = false
+ij_applescript_spaces_within_method_call_parentheses = false
+ij_applescript_spaces_within_method_parentheses = false
+ij_applescript_special_else_if_treatment = true
+
+[{*.ats,*.cts,*.mts,*.ts}]
+ij_continuation_indent_size = 4
+ij_typescript_align_imports = true
+ij_typescript_align_multiline_array_initializer_expression = true
+ij_typescript_align_multiline_binary_operation = true
+ij_typescript_align_multiline_chained_methods = true
+ij_typescript_align_multiline_extends_list = false
+ij_typescript_align_multiline_for = true
+ij_typescript_align_multiline_parameters = true
+ij_typescript_align_multiline_parameters_in_calls = true
+ij_typescript_align_multiline_ternary_operation = true
+ij_typescript_align_object_properties = 1
+ij_typescript_align_union_types = true
+ij_typescript_align_var_statements = 2
+ij_typescript_array_initializer_new_line_after_left_brace = false
+ij_typescript_array_initializer_right_brace_on_new_line = false
+ij_typescript_array_initializer_wrap = on_every_item
+ij_typescript_assignment_wrap = on_every_item
+ij_typescript_binary_operation_sign_on_next_line = false
+ij_typescript_binary_operation_wrap = on_every_item
+ij_typescript_blacklist_imports = rxjs/Rx, node_modules/**, **/node_modules/**, @angular/material, @angular/material/typings/**
+ij_typescript_blank_lines_after_imports = 1
+ij_typescript_blank_lines_around_class = 1
+ij_typescript_blank_lines_around_field = 0
+ij_typescript_blank_lines_around_field_in_interface = 0
+ij_typescript_blank_lines_around_function = 1
+ij_typescript_blank_lines_around_method = 1
+ij_typescript_blank_lines_around_method_in_interface = 1
+ij_typescript_block_brace_style = next_line
+ij_typescript_block_comment_add_space = false
+ij_typescript_block_comment_at_first_column = true
+ij_typescript_call_parameters_new_line_after_left_paren = false
+ij_typescript_call_parameters_right_paren_on_new_line = false
+ij_typescript_call_parameters_wrap = on_every_item
+ij_typescript_catch_on_new_line = true
+ij_typescript_chained_call_dot_on_new_line = true
+ij_typescript_class_brace_style = next_line
+ij_typescript_comma_on_new_line = false
+ij_typescript_do_while_brace_force = always
+ij_typescript_else_on_new_line = false
+ij_typescript_enforce_trailing_comma = keep
+ij_typescript_enum_constants_wrap = on_every_item
+ij_typescript_extends_keyword_wrap = normal
+ij_typescript_extends_list_wrap = on_every_item
+ij_typescript_field_prefix = _
+ij_typescript_file_name_style = relaxed
+ij_typescript_finally_on_new_line = true
+ij_typescript_for_brace_force = if_multiline
+ij_typescript_for_statement_new_line_after_left_paren = false
+ij_typescript_for_statement_right_paren_on_new_line = false
+ij_typescript_for_statement_wrap = on_every_item
+ij_typescript_force_quote_style = true
+ij_typescript_force_semicolon_style = true
+ij_typescript_function_expression_brace_style = next_line
+ij_typescript_if_brace_force = never
+ij_typescript_import_merge_members = global
+ij_typescript_import_prefer_absolute_path = true
+ij_typescript_import_sort_members = true
+ij_typescript_import_sort_module_name = true
+ij_typescript_import_use_node_resolution = true
+ij_typescript_imports_wrap = on_every_item
+ij_typescript_indent_case_from_switch = true
+ij_typescript_indent_chained_calls = true
+ij_typescript_indent_package_children = 0
+ij_typescript_jsdoc_include_types = false
+ij_typescript_jsx_attribute_value = braces
+ij_typescript_keep_blank_lines_in_code = 2
+ij_typescript_keep_first_column_comment = true
+ij_typescript_keep_indents_on_empty_lines = false
+ij_typescript_keep_line_breaks = true
+ij_typescript_keep_simple_blocks_in_one_line = false
+ij_typescript_keep_simple_methods_in_one_line = false
+ij_typescript_line_comment_add_space = true
+ij_typescript_line_comment_at_first_column = false
+ij_typescript_method_brace_style = next_line
+ij_typescript_method_call_chain_wrap = on_every_item
+ij_typescript_method_parameters_new_line_after_left_paren = false
+ij_typescript_method_parameters_right_paren_on_new_line = false
+ij_typescript_method_parameters_wrap = on_every_item
+ij_typescript_object_literal_wrap = on_every_item
+ij_typescript_object_types_wrap = on_every_item
+ij_typescript_parentheses_expression_new_line_after_left_paren = false
+ij_typescript_parentheses_expression_right_paren_on_new_line = false
+ij_typescript_place_assignment_sign_on_next_line = false
+ij_typescript_prefer_as_type_cast = false
+ij_typescript_prefer_explicit_types_function_expression_returns = false
+ij_typescript_prefer_explicit_types_function_returns = false
+ij_typescript_prefer_explicit_types_vars_fields = false
+ij_typescript_prefer_parameters_wrap = false
+ij_typescript_property_prefix =
+ij_typescript_reformat_c_style_comments = false
+ij_typescript_space_after_colon = true
+ij_typescript_space_after_comma = true
+ij_typescript_space_after_dots_in_rest_parameter = false
+ij_typescript_space_after_generator_mult = true
+ij_typescript_space_after_property_colon = true
+ij_typescript_space_after_quest = true
+ij_typescript_space_after_type_colon = true
+ij_typescript_space_after_unary_not = false
+ij_typescript_space_before_async_arrow_lparen = false
+ij_typescript_space_before_catch_keyword = true
+ij_typescript_space_before_catch_left_brace = false
+ij_typescript_space_before_catch_parentheses = false
+ij_typescript_space_before_class_lbrace = false
+ij_typescript_space_before_class_left_brace = true
+ij_typescript_space_before_colon = true
+ij_typescript_space_before_comma = false
+ij_typescript_space_before_do_left_brace = false
+ij_typescript_space_before_else_keyword = true
+ij_typescript_space_before_else_left_brace = false
+ij_typescript_space_before_finally_keyword = true
+ij_typescript_space_before_finally_left_brace = false
+ij_typescript_space_before_for_left_brace = false
+ij_typescript_space_before_for_parentheses = false
+ij_typescript_space_before_for_semicolon = false
+ij_typescript_space_before_function_left_parenth = false
+ij_typescript_space_before_generator_mult = false
+ij_typescript_space_before_if_left_brace = false
+ij_typescript_space_before_if_parentheses = false
+ij_typescript_space_before_method_call_parentheses = false
+ij_typescript_space_before_method_left_brace = false
+ij_typescript_space_before_method_parentheses = false
+ij_typescript_space_before_property_colon = false
+ij_typescript_space_before_quest = true
+ij_typescript_space_before_switch_left_brace = false
+ij_typescript_space_before_switch_parentheses = false
+ij_typescript_space_before_try_left_brace = false
+ij_typescript_space_before_type_colon = false
+ij_typescript_space_before_unary_not = false
+ij_typescript_space_before_while_keyword = true
+ij_typescript_space_before_while_left_brace = false
+ij_typescript_space_before_while_parentheses = false
+ij_typescript_spaces_around_additive_operators = true
+ij_typescript_spaces_around_arrow_function_operator = true
+ij_typescript_spaces_around_assignment_operators = true
+ij_typescript_spaces_around_bitwise_operators = true
+ij_typescript_spaces_around_equality_operators = true
+ij_typescript_spaces_around_logical_operators = true
+ij_typescript_spaces_around_multiplicative_operators = true
+ij_typescript_spaces_around_relational_operators = true
+ij_typescript_spaces_around_shift_operators = true
+ij_typescript_spaces_around_unary_operator = false
+ij_typescript_spaces_within_array_initializer_brackets = false
+ij_typescript_spaces_within_brackets = false
+ij_typescript_spaces_within_catch_parentheses = false
+ij_typescript_spaces_within_for_parentheses = false
+ij_typescript_spaces_within_if_parentheses = false
+ij_typescript_spaces_within_imports = false
+ij_typescript_spaces_within_interpolation_expressions = false
+ij_typescript_spaces_within_method_call_parentheses = false
+ij_typescript_spaces_within_method_parentheses = false
+ij_typescript_spaces_within_object_literal_braces = false
+ij_typescript_spaces_within_object_type_braces = true
+ij_typescript_spaces_within_parentheses = false
+ij_typescript_spaces_within_switch_parentheses = false
+ij_typescript_spaces_within_type_assertion = false
+ij_typescript_spaces_within_union_types = true
+ij_typescript_spaces_within_while_parentheses = false
+ij_typescript_special_else_if_treatment = true
+ij_typescript_ternary_operation_signs_on_next_line = false
+ij_typescript_ternary_operation_wrap = on_every_item
+ij_typescript_union_types_wrap = on_every_item
+ij_typescript_use_chained_calls_group_indents = false
+ij_typescript_use_double_quotes = true
+ij_typescript_use_explicit_js_extension = auto
+ij_typescript_use_path_mapping = always
+ij_typescript_use_public_modifier = false
+ij_typescript_use_semicolon_after_statement = true
+ij_typescript_var_declaration_wrap = normal
+ij_typescript_while_brace_force = always
+ij_typescript_while_on_new_line = false
+ij_typescript_wrap_comments = false
+
+[{*.bash,*.sh,*.zsh}]
+indent_size = 2
+tab_width = 2
+ij_shell_binary_ops_start_line = false
+ij_shell_keep_column_alignment_padding = false
+ij_shell_minify_program = false
+ij_shell_redirect_followed_by_space = false
+ij_shell_switch_cases_indented = true
+ij_shell_use_unix_line_separator = true
+indent_style = space
+
+[{*.cjs,*.js}]
+ij_continuation_indent_size = 4
+ij_javascript_align_imports = true
+ij_javascript_align_multiline_array_initializer_expression = true
+ij_javascript_align_multiline_binary_operation = true
+ij_javascript_align_multiline_chained_methods = false
+ij_javascript_align_multiline_extends_list = true
+ij_javascript_align_multiline_for = true
+ij_javascript_align_multiline_parameters = true
+ij_javascript_align_multiline_parameters_in_calls = true
+ij_javascript_align_multiline_ternary_operation = true
+ij_javascript_align_object_properties = 1
+ij_javascript_align_union_types = false
+ij_javascript_align_var_statements = 2
+ij_javascript_array_initializer_new_line_after_left_brace = false
+ij_javascript_array_initializer_right_brace_on_new_line = false
+ij_javascript_array_initializer_wrap = on_every_item
+ij_javascript_assignment_wrap = on_every_item
+ij_javascript_binary_operation_sign_on_next_line = false
+ij_javascript_binary_operation_wrap = on_every_item
+ij_javascript_blacklist_imports = rxjs/Rx, node_modules/**, **/node_modules/**, @angular/material, @angular/material/typings/**
+ij_javascript_blank_lines_after_imports = 1
+ij_javascript_blank_lines_around_class = 1
+ij_javascript_blank_lines_around_field = 0
+ij_javascript_blank_lines_around_function = 1
+ij_javascript_blank_lines_around_method = 1
+ij_javascript_block_brace_style = next_line
+ij_javascript_block_comment_add_space = false
+ij_javascript_block_comment_at_first_column = true
+ij_javascript_call_parameters_new_line_after_left_paren = false
+ij_javascript_call_parameters_right_paren_on_new_line = false
+ij_javascript_call_parameters_wrap = on_every_item
+ij_javascript_catch_on_new_line = true
+ij_javascript_chained_call_dot_on_new_line = true
+ij_javascript_class_brace_style = next_line
+ij_javascript_comma_on_new_line = false
+ij_javascript_do_while_brace_force = always
+ij_javascript_else_on_new_line = true
+ij_javascript_enforce_trailing_comma = remove
+ij_javascript_extends_keyword_wrap = normal
+ij_javascript_extends_list_wrap = on_every_item
+ij_javascript_field_prefix = _
+ij_javascript_file_name_style = relaxed
+ij_javascript_finally_on_new_line = true
+ij_javascript_for_brace_force = if_multiline
+ij_javascript_for_statement_new_line_after_left_paren = false
+ij_javascript_for_statement_right_paren_on_new_line = false
+ij_javascript_for_statement_wrap = on_every_item
+ij_javascript_force_quote_style = true
+ij_javascript_force_semicolon_style = true
+ij_javascript_function_expression_brace_style = next_line
+ij_javascript_if_brace_force = if_multiline
+ij_javascript_import_merge_members = global
+ij_javascript_import_prefer_absolute_path = true
+ij_javascript_import_sort_members = true
+ij_javascript_import_sort_module_name = true
+ij_javascript_import_use_node_resolution = true
+ij_javascript_imports_wrap = on_every_item
+ij_javascript_indent_case_from_switch = true
+ij_javascript_indent_chained_calls = true
+ij_javascript_indent_package_children = 0
+ij_javascript_jsx_attribute_value = braces
+ij_javascript_keep_blank_lines_in_code = 2
+ij_javascript_keep_first_column_comment = true
+ij_javascript_keep_indents_on_empty_lines = false
+ij_javascript_keep_line_breaks = true
+ij_javascript_keep_simple_blocks_in_one_line = false
+ij_javascript_keep_simple_methods_in_one_line = false
+ij_javascript_line_comment_add_space = true
+ij_javascript_line_comment_at_first_column = false
+ij_javascript_method_brace_style = next_line
+ij_javascript_method_call_chain_wrap = on_every_item
+ij_javascript_method_parameters_new_line_after_left_paren = false
+ij_javascript_method_parameters_right_paren_on_new_line = false
+ij_javascript_method_parameters_wrap = on_every_item
+ij_javascript_object_literal_wrap = on_every_item
+ij_javascript_object_types_wrap = on_every_item
+ij_javascript_parentheses_expression_new_line_after_left_paren = false
+ij_javascript_parentheses_expression_right_paren_on_new_line = false
+ij_javascript_place_assignment_sign_on_next_line = true
+ij_javascript_prefer_as_type_cast = false
+ij_javascript_prefer_explicit_types_function_expression_returns = false
+ij_javascript_prefer_explicit_types_function_returns = false
+ij_javascript_prefer_explicit_types_vars_fields = false
+ij_javascript_prefer_parameters_wrap = false
+ij_javascript_property_prefix =
+ij_javascript_reformat_c_style_comments = true
+ij_javascript_space_after_colon = true
+ij_javascript_space_after_comma = true
+ij_javascript_space_after_dots_in_rest_parameter = false
+ij_javascript_space_after_generator_mult = true
+ij_javascript_space_after_property_colon = true
+ij_javascript_space_after_quest = true
+ij_javascript_space_after_type_colon = true
+ij_javascript_space_after_unary_not = false
+ij_javascript_space_before_async_arrow_lparen = false
+ij_javascript_space_before_catch_keyword = true
+ij_javascript_space_before_catch_left_brace = false
+ij_javascript_space_before_catch_parentheses = false
+ij_javascript_space_before_class_lbrace = false
+ij_javascript_space_before_class_left_brace = true
+ij_javascript_space_before_colon = true
+ij_javascript_space_before_comma = false
+ij_javascript_space_before_do_left_brace = false
+ij_javascript_space_before_else_keyword = true
+ij_javascript_space_before_else_left_brace = false
+ij_javascript_space_before_finally_keyword = true
+ij_javascript_space_before_finally_left_brace = false
+ij_javascript_space_before_for_left_brace = false
+ij_javascript_space_before_for_parentheses = false
+ij_javascript_space_before_for_semicolon = false
+ij_javascript_space_before_function_left_parenth = false
+ij_javascript_space_before_generator_mult = false
+ij_javascript_space_before_if_left_brace = false
+ij_javascript_space_before_if_parentheses = false
+ij_javascript_space_before_method_call_parentheses = false
+ij_javascript_space_before_method_left_brace = false
+ij_javascript_space_before_method_parentheses = false
+ij_javascript_space_before_property_colon = false
+ij_javascript_space_before_quest = true
+ij_javascript_space_before_switch_left_brace = false
+ij_javascript_space_before_switch_parentheses = false
+ij_javascript_space_before_try_left_brace = false
+ij_javascript_space_before_type_colon = false
+ij_javascript_space_before_unary_not = false
+ij_javascript_space_before_while_keyword = true
+ij_javascript_space_before_while_left_brace = false
+ij_javascript_space_before_while_parentheses = false
+ij_javascript_spaces_around_additive_operators = true
+ij_javascript_spaces_around_arrow_function_operator = true
+ij_javascript_spaces_around_assignment_operators = true
+ij_javascript_spaces_around_bitwise_operators = true
+ij_javascript_spaces_around_equality_operators = true
+ij_javascript_spaces_around_logical_operators = true
+ij_javascript_spaces_around_multiplicative_operators = true
+ij_javascript_spaces_around_relational_operators = true
+ij_javascript_spaces_around_shift_operators = true
+ij_javascript_spaces_around_unary_operator = false
+ij_javascript_spaces_within_array_initializer_brackets = false
+ij_javascript_spaces_within_brackets = false
+ij_javascript_spaces_within_catch_parentheses = false
+ij_javascript_spaces_within_for_parentheses = false
+ij_javascript_spaces_within_if_parentheses = false
+ij_javascript_spaces_within_imports = false
+ij_javascript_spaces_within_interpolation_expressions = false
+ij_javascript_spaces_within_method_call_parentheses = false
+ij_javascript_spaces_within_method_parentheses = false
+ij_javascript_spaces_within_object_literal_braces = false
+ij_javascript_spaces_within_object_type_braces = true
+ij_javascript_spaces_within_parentheses = false
+ij_javascript_spaces_within_switch_parentheses = false
+ij_javascript_spaces_within_type_assertion = false
+ij_javascript_spaces_within_union_types = true
+ij_javascript_spaces_within_while_parentheses = false
+ij_javascript_special_else_if_treatment = true
+ij_javascript_ternary_operation_signs_on_next_line = false
+ij_javascript_ternary_operation_wrap = on_every_item
+ij_javascript_union_types_wrap = on_every_item
+ij_javascript_use_chained_calls_group_indents = true
+ij_javascript_use_double_quotes = true
+ij_javascript_use_explicit_js_extension = auto
+ij_javascript_use_path_mapping = always
+ij_javascript_use_public_modifier = false
+ij_javascript_use_semicolon_after_statement = true
+ij_javascript_var_declaration_wrap = normal
+ij_javascript_while_brace_force = always
+ij_javascript_while_on_new_line = false
+ij_javascript_wrap_comments = false
+
+[{*.comp,*.frag,*.fsh,*.geom,*.glsl,*.tesc,*.tese,*.vert,*.vsh}]
+ij_glsl_keep_indents_on_empty_lines = false
+
+[{*.har,*.jsb2,*.jsb3,*.json,*.jsonc,.babelrc,.eslintrc,.prettierrc,.stylelintrc,bowerrc,jest.config}]
+indent_size = 2
+ij_json_array_wrapping = normal
+ij_json_keep_blank_lines_in_code = 0
+ij_json_keep_indents_on_empty_lines = false
+ij_json_keep_line_breaks = true
+ij_json_keep_trailing_comma = false
+ij_json_object_wrapping = normal
+ij_json_property_alignment = align_on_value
+ij_json_space_after_colon = true
+ij_json_space_after_comma = true
+ij_json_space_before_colon = false
+ij_json_space_before_comma = false
+ij_json_spaces_within_braces = false
+ij_json_spaces_within_brackets = false
+ij_json_wrap_long_lines = false
+indent_style = space
+
+[{*.htm,*.html,*.ng,*.sht,*.shtm,*.shtml}]
+ij_html_add_new_line_before_tags = body, div, p, form, h1, h2, h3
+ij_html_align_attributes = true
+ij_html_align_text = false
+ij_html_attribute_wrap = normal
+ij_html_block_comment_add_space = false
+ij_html_block_comment_at_first_column = true
+ij_html_do_not_align_children_of_min_lines = 0
+ij_html_do_not_break_if_inline_tags = title, h1, h2, h3, h4, h5, h6, p
+ij_html_do_not_indent_children_of_tags = html, body, thead, tbody, tfoot
+ij_html_enforce_quotes = false
+ij_html_inline_tags = a, abbr, acronym, b, basefont, bdo, big, br, cite, cite, code, dfn, em, font, i, img, input, kbd, label, q, s, samp, select, small, span, strike, strong, sub, sup, textarea, tt, u, var
+ij_html_keep_blank_lines = 2
+ij_html_keep_indents_on_empty_lines = false
+ij_html_keep_line_breaks = true
+ij_html_keep_line_breaks_in_text = true
+ij_html_keep_whitespaces = false
+ij_html_keep_whitespaces_inside = span, pre, textarea
+ij_html_line_comment_at_first_column = true
+ij_html_new_line_after_last_attribute = never
+ij_html_new_line_before_first_attribute = never
+ij_html_quote_style = double
+ij_html_remove_new_line_before_tags = br
+ij_html_space_after_tag_name = false
+ij_html_space_around_equality_in_attribute = false
+ij_html_space_inside_empty_tag = false
+ij_html_text_wrap = normal
+
+[{*.http,*.rest}]
+indent_size = 0
+ij_continuation_indent_size = 4
+ij_http-request_call_parameters_wrap = normal
+ij_http-request_method_parameters_wrap = split_into_lines
+ij_http-request_space_before_comma = true
+ij_http-request_spaces_around_assignment_operators = true
+
+[{*.markdown,*.md}]
+ij_markdown_force_one_space_after_blockquote_symbol = true
+ij_markdown_force_one_space_after_header_symbol = true
+ij_markdown_force_one_space_after_list_bullet = true
+ij_markdown_force_one_space_between_words = true
+ij_markdown_format_tables = true
+ij_markdown_insert_quote_arrows_on_wrap = true
+ij_markdown_keep_indents_on_empty_lines = false
+ij_markdown_keep_line_breaks_inside_text_blocks = true
+ij_markdown_max_lines_around_block_elements = 1
+ij_markdown_max_lines_around_header = 1
+ij_markdown_max_lines_between_paragraphs = 1
+ij_markdown_min_lines_around_block_elements = 1
+ij_markdown_min_lines_around_header = 1
+ij_markdown_min_lines_between_paragraphs = 1
+ij_markdown_wrap_text_if_long = true
+ij_markdown_wrap_text_inside_blockquotes = true
+
+[{*.ps1,*.psd1,*.psm1}]
+max_line_length = 115
+ij_powershell_align_multiline_binary_operation = true
+ij_powershell_align_multiline_chained_methods = false
+ij_powershell_align_multiline_for = true
+ij_powershell_align_multiline_parameters = true
+ij_powershell_align_multiline_parameters_in_calls = false
+ij_powershell_binary_operation_wrap = on_every_item
+ij_powershell_block_brace_style = next_line
+ij_powershell_call_parameters_new_line_after_left_paren = false
+ij_powershell_call_parameters_right_paren_on_new_line = false
+ij_powershell_call_parameters_wrap = on_every_item
+ij_powershell_catch_on_new_line = true
+ij_powershell_class_annotation_wrap = split_into_lines
+ij_powershell_class_brace_style = next_line
+ij_powershell_else_on_new_line = true
+ij_powershell_field_annotation_wrap = off
+ij_powershell_finally_on_new_line = true
+ij_powershell_for_statement_new_line_after_left_paren = false
+ij_powershell_for_statement_right_paren_on_new_line = false
+ij_powershell_for_statement_wrap = on_every_item
+ij_powershell_keep_blank_lines_in_code = 2
+ij_powershell_keep_first_column_comment = true
+ij_powershell_keep_line_breaks = true
+ij_powershell_keep_simple_blocks_in_one_line = true
+ij_powershell_keep_simple_classes_in_one_line = false
+ij_powershell_keep_simple_lambdas_in_one_line = true
+ij_powershell_keep_simple_methods_in_one_line = true
+ij_powershell_method_annotation_wrap = split_into_lines
+ij_powershell_method_brace_style = next_line
+ij_powershell_method_call_chain_wrap = on_every_item
+ij_powershell_method_parameters_new_line_after_left_paren = false
+ij_powershell_method_parameters_right_paren_on_new_line = false
+ij_powershell_method_parameters_wrap = on_every_item
+ij_powershell_parameter_annotation_wrap = off
+ij_powershell_parentheses_expression_new_line_after_left_paren = false
+ij_powershell_parentheses_expression_right_paren_on_new_line = false
+ij_powershell_space_after_colon = true
+ij_powershell_space_after_comma = true
+ij_powershell_space_after_for_semicolon = true
+ij_powershell_space_after_type_cast = false
+ij_powershell_space_before_annotation_parameter_list = false
+ij_powershell_space_before_array_initializer_left_brace = false
+ij_powershell_space_before_catch_keyword = true
+ij_powershell_space_before_catch_left_brace = false
+ij_powershell_space_before_class_left_brace = false
+ij_powershell_space_before_colon = true
+ij_powershell_space_before_comma = false
+ij_powershell_space_before_do_left_brace = false
+ij_powershell_space_before_else_keyword = true
+ij_powershell_space_before_else_left_brace = false
+ij_powershell_space_before_finally_keyword = true
+ij_powershell_space_before_finally_left_brace = false
+ij_powershell_space_before_for_left_brace = false
+ij_powershell_space_before_for_parentheses = false
+ij_powershell_space_before_for_semicolon = false
+ij_powershell_space_before_if_left_brace = false
+ij_powershell_space_before_if_parentheses = false
+ij_powershell_space_before_method_call_parentheses = false
+ij_powershell_space_before_method_left_brace = false
+ij_powershell_space_before_method_parentheses = false
+ij_powershell_space_before_switch_left_brace = false
+ij_powershell_space_before_switch_parentheses = false
+ij_powershell_space_before_try_left_brace = false
+ij_powershell_space_before_while_keyword = true
+ij_powershell_space_before_while_left_brace = false
+ij_powershell_space_before_while_parentheses = false
+ij_powershell_space_within_empty_method_call_parentheses = false
+ij_powershell_space_within_empty_method_parentheses = false
+ij_powershell_spaces_around_additive_operators = true
+ij_powershell_spaces_around_assignment_operators = true
+ij_powershell_spaces_around_bitwise_operators = true
+ij_powershell_spaces_around_logical_operators = true
+ij_powershell_spaces_around_method_ref_dbl_colon = false
+ij_powershell_spaces_around_multiplicative_operators = true
+ij_powershell_spaces_around_relational_operators = true
+ij_powershell_spaces_around_unary_operator = false
+ij_powershell_spaces_within_annotation_parentheses = false
+ij_powershell_spaces_within_braces = true
+ij_powershell_spaces_within_brackets = false
+ij_powershell_spaces_within_cast_parentheses = false
+ij_powershell_spaces_within_for_parentheses = false
+ij_powershell_spaces_within_if_parentheses = false
+ij_powershell_spaces_within_method_call_parentheses = false
+ij_powershell_spaces_within_method_parentheses = false
+ij_powershell_spaces_within_parentheses = false
+ij_powershell_spaces_within_switch_parentheses = false
+ij_powershell_spaces_within_while_parentheses = false
+ij_powershell_special_else_if_treatment = true
+ij_powershell_while_on_new_line = false
+ij_powershell_wrap_first_method_in_call_chain = false
+ij_powershell_wrap_long_lines = false
+
+[{*.py,*.pyw}]
+ij_python_align_collections_and_comprehensions = true
+ij_python_align_multiline_imports = true
+ij_python_align_multiline_parameters = true
+ij_python_align_multiline_parameters_in_calls = true
+ij_python_blank_line_at_file_end = false
+ij_python_blank_lines_after_imports = 1
+ij_python_blank_lines_after_local_imports = 0
+ij_python_blank_lines_around_class = 1
+ij_python_blank_lines_around_method = 1
+ij_python_blank_lines_around_top_level_classes_functions = 2
+ij_python_blank_lines_before_first_method = 0
+ij_python_call_parameters_new_line_after_left_paren = false
+ij_python_call_parameters_right_paren_on_new_line = false
+ij_python_call_parameters_wrap = on_every_item
+ij_python_dict_alignment = 0
+ij_python_dict_new_line_after_left_brace = false
+ij_python_dict_new_line_before_right_brace = false
+ij_python_dict_wrapping = 5
+ij_python_from_import_new_line_after_left_parenthesis = false
+ij_python_from_import_new_line_before_right_parenthesis = false
+ij_python_from_import_parentheses_force_if_multiline = false
+ij_python_from_import_trailing_comma_if_multiline = false
+ij_python_from_import_wrapping = 5
+ij_python_hang_closing_brackets = true
+ij_python_keep_blank_lines_in_code = 1
+ij_python_keep_blank_lines_in_declarations = 1
+ij_python_keep_indents_on_empty_lines = false
+ij_python_keep_line_breaks = true
+ij_python_method_parameters_new_line_after_left_paren = false
+ij_python_method_parameters_right_paren_on_new_line = false
+ij_python_method_parameters_wrap = on_every_item
+ij_python_new_line_after_colon = false
+ij_python_new_line_after_colon_multi_clause = true
+ij_python_optimize_imports_always_split_from_imports = false
+ij_python_optimize_imports_case_insensitive_order = true
+ij_python_optimize_imports_join_from_imports_with_same_source = false
+ij_python_optimize_imports_sort_by_type_first = true
+ij_python_optimize_imports_sort_imports = true
+ij_python_optimize_imports_sort_names_in_from_imports = true
+ij_python_space_after_comma = true
+ij_python_space_after_number_sign = true
+ij_python_space_after_py_colon = true
+ij_python_space_before_backslash = true
+ij_python_space_before_comma = false
+ij_python_space_before_for_semicolon = false
+ij_python_space_before_lbracket = false
+ij_python_space_before_method_call_parentheses = false
+ij_python_space_before_method_parentheses = false
+ij_python_space_before_number_sign = true
+ij_python_space_before_py_colon = false
+ij_python_space_within_empty_method_call_parentheses = false
+ij_python_space_within_empty_method_parentheses = false
+ij_python_spaces_around_additive_operators = true
+ij_python_spaces_around_assignment_operators = true
+ij_python_spaces_around_bitwise_operators = true
+ij_python_spaces_around_eq_in_keyword_argument = false
+ij_python_spaces_around_eq_in_named_parameter = false
+ij_python_spaces_around_equality_operators = true
+ij_python_spaces_around_multiplicative_operators = true
+ij_python_spaces_around_power_operator = true
+ij_python_spaces_around_relational_operators = true
+ij_python_spaces_around_shift_operators = true
+ij_python_spaces_within_braces = false
+ij_python_spaces_within_brackets = false
+ij_python_spaces_within_method_call_parentheses = false
+ij_python_spaces_within_method_parentheses = false
+ij_python_use_continuation_indent_for_arguments = false
+ij_python_use_continuation_indent_for_collection_and_comprehensions = false
+ij_python_use_continuation_indent_for_parameters = true
+ij_python_wrap_long_lines = false
+
+[{*.toml,Cargo.lock,Cargo.toml.orig,Gopkg.lock,Pipfile,poetry.lock}]
+ij_toml_keep_indents_on_empty_lines = false
+
+[{*.yaml,*.yml,pubspec.lock}]
+indent_size = 2
+ij_yaml_align_values_properties = on_value
+ij_yaml_autoinsert_sequence_marker = true
+ij_yaml_block_mapping_on_new_line = false
+ij_yaml_indent_sequence_value = true
+ij_yaml_keep_indents_on_empty_lines = false
+ij_yaml_keep_line_breaks = true
+ij_yaml_sequence_on_new_line = false
+ij_yaml_space_before_colon = false
+ij_yaml_spaces_within_braces = true
+ij_yaml_spaces_within_brackets = true
+indent_style = space
+
+[*.{appxmanifest,asax,ascx,aspx,axaml,build,c,c++,cc,cginc,compute,cp,cpp,cppm,cs,cshtml,cu,cuh,cxx,dtd,fs,fsi,fsscript,fsx,fx,fxh,h,hh,hlsl,hlsli,hlslinc,hpp,hxx,inc,inl,ino,ipp,ixx,master,ml,mli,mpp,mq4,mq5,mqh,nuspec,paml,razor,resw,resx,shader,skin,tpp,usf,ush,uxml,vb,xaml,xamlx,xoml,xsd}]
+indent_style = space
+indent_size = 4
+tab_width = 4
diff --git a/Aaru.CommonTypes/.gitignore b/Aaru.CommonTypes/.gitignore
new file mode 100644
index 000000000..05c540d38
--- /dev/null
+++ b/Aaru.CommonTypes/.gitignore
@@ -0,0 +1,595 @@
+### VisualStudio template
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+# CodeRush
+.cr/
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+### Linux template
+
+# temporary files which can be created if a process still has a handle open of a deleted file
+.fuse_hidden*
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# .nfs files are created when an open file is removed but is still being accessed
+.nfs*
+### Xcode template
+# Xcode
+#
+# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
+
+## User settings
+xcuserdata/
+
+## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
+*.xcscmblueprint
+*.xccheckout
+
+## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
+build/
+DerivedData/
+*.moved-aside
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+### VisualStudioCode template
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+### C++ template
+# Prerequisites
+*.d
+
+# Compiled Object files
+*.slo
+*.lo
+*.o
+
+# Precompiled Headers
+*.gch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+*.smod
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+### MonoDevelop template
+#User Specific
+*.usertasks
+
+#Mono Project Files
+*.resources
+test-results/
+### GPG template
+secring.*
+
+### JetBrains template
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+### CMake template
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Testing
+Makefile
+cmake_install.cmake
+install_manifest.txt
+compile_commands.json
+CTestTestfile.cmake
+### C template
+# Object files
+*.ko
+*.elf
+
+# Linker output
+*.map
+*.exp
+
+*.so.*
+
+# Executables
+*.i*86
+*.x86_64
+*.hex
+
+# Debug files
+*.dSYM/
+*.su
+*.idb
+
+# Kernel Module Compile Results
+*.mod*
+*.cmd
+.tmp_versions/
+modules.order
+Module.symvers
+Mkfile.old
+dkms.conf
+### Windows template
+# Windows thumbnail cache files
+Thumbs.db
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# NuGet Packages Directory
+packages/
+## TODO: If the tool you use requires repositories.config uncomment the next line
+#!packages/repositories.config
+
+# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
+# This line needs to be after the ignore of the build folder (and the packages folder if the line above has been uncommented)
+!packages/build/
+
+
+# Others
+sql/
+*.Cache
+
+# Visual Studio 2017
+.vs
+
+workspace.xml
+cmake-build-debug
+### macOS template
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+pkg/**/pkg
+pkg/**/src
+pkg/**/*.asc
+pkg/**/*.sig
+pkg/**/*.tar.xz
+pkg/**/*.zip
+pkg/**/aaru
+
+.sonarqube
\ No newline at end of file
diff --git a/Aaru.CommonTypes/Aaru.CommonTypes.csproj b/Aaru.CommonTypes/Aaru.CommonTypes.csproj
new file mode 100644
index 000000000..36105ec37
--- /dev/null
+++ b/Aaru.CommonTypes/Aaru.CommonTypes.csproj
@@ -0,0 +1,70 @@
+
+
+
+ 2.0
+ {F2B84194-26EB-4227-B1C5-6602517E85AE}
+ Library
+ Aaru.CommonTypes
+ Aaru.CommonTypes
+ $(Version)
+ true
+ 6.0.0-alpha9
+ Claunia.com
+ Copyright © 2011-2023 Natalia Portillo
+ Aaru Data Preservation Suite
+ Aaru.CommonTypes
+ $(Version)
+ net8.0
+ 12
+ Contains common types defined by the Aaru Data Preservation Suite.
+ https://github.com/aaru-dps/
+ MIT
+ https://github.com/aaru-dps/Aaru.CommonTypes
+ true
+ en-US
+ true
+ true
+ snupkg
+ Natalia Portillo <claunia@claunia.com>
+ true
+ true
+
+
+ CS1591;CS1574
+
+
+
+
+
+
+ $(Version)+{chash:8}
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LICENSE.MIT
+
+
+
+
+
+
+
+
+
+ ResXFileCodeGenerator
+ Localization.Designer.cs
+
+
+
diff --git a/Aaru.CommonTypes/Aaru.CommonTypes.csproj.DotSettings b/Aaru.CommonTypes/Aaru.CommonTypes.csproj.DotSettings
new file mode 100644
index 000000000..c2586551b
--- /dev/null
+++ b/Aaru.CommonTypes/Aaru.CommonTypes.csproj.DotSettings
@@ -0,0 +1,7 @@
+
+ True
+ True
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/ATA.cs b/Aaru.CommonTypes/AaruMetadata/ATA.cs
new file mode 100644
index 000000000..3e70696a6
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/ATA.cs
@@ -0,0 +1,58 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : ATA.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+using System;
+using Schemas;
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class ATA
+{
+ public Dump Identify { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator ATA(ATAType cicm) => cicm is null
+ ? null
+ : new ATA
+ {
+ Identify = cicm.Identify
+ };
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/AaruMetadata.cs b/Aaru.CommonTypes/AaruMetadata/AaruMetadata.cs
new file mode 100644
index 000000000..123aa68de
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/AaruMetadata.cs
@@ -0,0 +1,219 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : AaruMetadata.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using System.Text.Json.Serialization;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+[JsonSourceGenerationOptions(WriteIndented = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]
+[JsonSerializable(typeof(MetadataJson))]
+// ReSharper disable once PartialTypeWithSinglePart
+public partial class MetadataJsonContext : JsonSerializerContext;
+
+public class MetadataJson
+{
+ public Metadata AaruMetadata { get; set; }
+}
+
+public class Metadata
+{
+ public List Developers { get; set; }
+ public List Publishers { get; set; }
+ public List Authors { get; set; }
+ public List Performers { get; set; }
+ public string Name { get; set; }
+ public string Version { get; set; }
+ public ReleaseType? Release { get; set; }
+ public DateTime? ReleaseDate { get; set; }
+ public List Barcodes { get; set; }
+ public string PartNumber { get; set; }
+ public string SerialNumber { get; set; }
+ public List Keywords { get; set; }
+ public List Magazines { get; set; }
+ public List Books { get; set; }
+ public List Categories { get; set; }
+ public List Subcategories { get; set; }
+ public List Languages { get; set; }
+ public List Systems { get; set; }
+ public List Architectures { get; set; }
+ public List RequiredOperatingSystems { get; set; }
+ public List UserManuals { get; set; }
+ public List OpticalDiscs { get; set; }
+ public List Advertisements { get; set; }
+ public List LinearMedias { get; set; }
+ public List PciCards { get; set; }
+ public List BlockMedias { get; set; }
+ public List AudioMedias { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Metadata(CICMMetadataType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var metadata = new Metadata
+ {
+ Developers = cicm.Developer is null ? null : new List(cicm.Developer),
+ Publishers = cicm.Publisher is null ? null : new List(cicm.Publisher),
+ Authors = cicm.Author is null ? null : new List(cicm.Author),
+ Performers = cicm.Performer is null ? null : new List(cicm.Performer),
+ Name = cicm.Name,
+ Version = cicm.Version,
+ Release = cicm.ReleaseTypeSpecified ? (ReleaseType)cicm.ReleaseType : null,
+ ReleaseDate = cicm.ReleaseDateSpecified ? cicm.ReleaseDate : null,
+ PartNumber = cicm.PartNumber,
+ SerialNumber = cicm.SerialNumber,
+ Keywords = cicm.Keywords is null ? null : new List(cicm.Keywords),
+ Categories = cicm.Categories is null ? null : new List(cicm.Categories),
+ Subcategories = cicm.Subcategories is null ? null : new List(cicm.Subcategories),
+ Systems = cicm.Systems is null ? null : new List(cicm.Systems)
+ };
+
+ if(cicm.Barcodes is not null)
+ {
+ metadata.Barcodes = new List();
+
+ foreach(Schemas.BarcodeType code in cicm.Barcodes)
+ metadata.Barcodes.Add(code);
+ }
+
+ if(cicm.Magazine is not null)
+ {
+ metadata.Magazines = new List();
+
+ foreach(MagazineType magazine in cicm.Magazine)
+ metadata.Magazines.Add(magazine);
+ }
+
+ if(cicm.Book is not null)
+ {
+ metadata.Books = new List();
+
+ foreach(BookType book in cicm.Book)
+ metadata.Books.Add(book);
+ }
+
+ if(cicm.Languages is not null)
+ {
+ metadata.Languages = new List();
+
+ foreach(LanguagesTypeLanguage lng in cicm.Languages)
+ metadata.Languages.Add((Language)lng);
+ }
+
+ if(cicm.Architectures is not null)
+ {
+ metadata.Architectures = new List();
+
+ foreach(ArchitecturesTypeArchitecture arch in cicm.Architectures)
+ metadata.Architectures.Add((Architecture)arch);
+ }
+
+ if(cicm.RequiredOperatingSystems is not null)
+ {
+ metadata.RequiredOperatingSystems = new List();
+
+ foreach(RequiredOperatingSystemType os in cicm.RequiredOperatingSystems)
+ metadata.RequiredOperatingSystems.Add(os);
+ }
+
+ if(cicm.UserManual is not null)
+ {
+ metadata.UserManuals = new List();
+
+ foreach(UserManualType manual in cicm.UserManual)
+ metadata.UserManuals.Add(manual);
+ }
+
+ if(cicm.OpticalDisc is not null)
+ {
+ metadata.OpticalDiscs = new List();
+
+ foreach(OpticalDiscType disc in cicm.OpticalDisc)
+ metadata.OpticalDiscs.Add(disc);
+ }
+
+ if(cicm.Advertisement is not null)
+ {
+ metadata.Advertisements = new List();
+
+ foreach(AdvertisementType adv in cicm.Advertisement)
+ metadata.Advertisements.Add(adv);
+ }
+
+ if(cicm.LinearMedia is not null)
+ {
+ metadata.LinearMedias = new List();
+
+ foreach(LinearMediaType media in cicm.LinearMedia)
+ metadata.LinearMedias.Add(media);
+ }
+
+ if(cicm.PCICard is not null)
+ {
+ metadata.PciCards = new List();
+
+ foreach(PCIType pci in cicm.PCICard)
+ metadata.PciCards.Add(pci);
+ }
+
+ if(cicm.BlockMedia is not null)
+ {
+ metadata.BlockMedias = new List();
+
+ foreach(BlockMediaType media in cicm.BlockMedia)
+ metadata.BlockMedias.Add(media);
+ }
+
+ if(cicm.AudioMedia is null)
+ return metadata;
+
+ metadata.AudioMedias = new List();
+
+ foreach(AudioMediaType media in cicm.AudioMedia)
+ metadata.AudioMedias.Add(media);
+
+ return metadata;
+ }
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/Advertisement.cs b/Aaru.CommonTypes/AaruMetadata/Advertisement.cs
new file mode 100644
index 000000000..6b0584de3
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/Advertisement.cs
@@ -0,0 +1,117 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Advertisement.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Advertisement
+{
+ public string Manufacturer { get; set; }
+ public string Product { get; set; }
+ public File File { get; set; }
+ public ulong FileSize { get; set; }
+ public ulong? Frames { get; set; }
+ public double Duration { get; set; }
+ public float? MeanFrameRate { get; set; }
+ public List Checksums { get; set; }
+ public List AudioTracks { get; set; }
+ public List VideoTracks { get; set; }
+ public List SubtitleTracks { get; set; }
+ public Recording Recording { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Advertisement(AdvertisementType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var adv = new Advertisement
+ {
+ Manufacturer = cicm.Manufacturer,
+ Product = cicm.Product,
+ File = cicm.File,
+ FileSize = cicm.FileSize,
+ Frames = cicm.FramesSpecified ? cicm.Frames : null,
+ Duration = cicm.Duration,
+ MeanFrameRate = cicm.MeanFrameRateSpecified ? cicm.MeanFrameRate : null,
+ Recording = cicm.Recording
+ };
+
+ if(cicm.Checksums is not null)
+ {
+ adv.Checksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.Checksums)
+ adv.Checksums.Add(chk);
+ }
+
+ if(cicm.AudioTrack is not null)
+ {
+ adv.AudioTracks = new List();
+
+ foreach(AudioTracksType trk in cicm.AudioTrack)
+ adv.AudioTracks.Add(trk);
+ }
+
+ if(cicm.VideoTrack is not null)
+ {
+ adv.VideoTracks = new List();
+
+ foreach(VideoTracksType trk in cicm.VideoTrack)
+ adv.VideoTracks.Add(trk);
+ }
+
+ if(cicm.SubtitleTrack is null)
+ return adv;
+
+ {
+ adv.SubtitleTracks = new List();
+
+ foreach(SubtitleTracksType trk in cicm.SubtitleTrack)
+ adv.SubtitleTracks.Add(trk);
+ }
+
+ return adv;
+ }
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/Architecture.cs b/Aaru.CommonTypes/AaruMetadata/Architecture.cs
new file mode 100644
index 000000000..e41ebe1a1
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/Architecture.cs
@@ -0,0 +1,129 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Architecture.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Text.Json.Serialization;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+[JsonConverter(typeof(JsonStringEnumMemberConverter))]
+public enum Architecture
+{
+ [JsonPropertyName("4004")]
+ _4004,
+ [JsonPropertyName("4040")]
+ _4040,
+ [JsonPropertyName("6502")]
+ _6502,
+ [JsonPropertyName("65816")]
+ _65816,
+ [JsonPropertyName("8008")]
+ _8008,
+ [JsonPropertyName("8051")]
+ _8051,
+ [JsonPropertyName("8080")]
+ _8080,
+ [JsonPropertyName("8085")]
+ _8085,
+ Aarch64,
+ Am29000,
+ Amd64,
+ Apx432,
+ Arm,
+ Avr,
+ Avr32,
+ Axp,
+ Clipper,
+ Cray,
+ Esa390,
+ Hobbit,
+ I86,
+ I860,
+ I960,
+ Ia32,
+ Ia64,
+ M56K,
+ M6800,
+ M6801,
+ M6805,
+ M6809,
+ M68K,
+ M88K,
+ Mcs41,
+ Mcs48,
+ Mips32,
+ Mips64,
+ Msp430,
+ Nios2,
+ Openrisc,
+ Parisc,
+ PDP1,
+ PDP10,
+ PDP11,
+ PDP7,
+ PDP8,
+ Pic,
+ Power,
+ Ppc,
+ Ppc64,
+ Prism,
+ Renesasrx,
+ Riscv,
+ S360,
+ S370,
+ Sh,
+ Sh1,
+ Sh2,
+ Sh3,
+ Sh4,
+ Sh5,
+ Sh64,
+ Sparc,
+ Sparc64,
+ Transputer,
+ Vax,
+ We32000,
+ X32,
+ Z80,
+ Z800,
+ Z8000,
+ Z80000,
+ Zarch
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/AudioMedia.cs b/Aaru.CommonTypes/AaruMetadata/AudioMedia.cs
new file mode 100644
index 000000000..12ea1397f
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/AudioMedia.cs
@@ -0,0 +1,146 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : AudioMedia.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class AudioMedia
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public List Checksums { get; set; }
+ public Sequence Sequence { get; set; }
+ public string PartNumber { get; set; }
+ public string SerialNumber { get; set; }
+ public string Manufacturer { get; set; }
+ public string Model { get; set; }
+ public string AccoustID { get; set; }
+ public List Blocks { get; set; }
+ public string CopyProtection { get; set; }
+ public Dimensions Dimensions { get; set; }
+ public Scans Scans { get; set; }
+ public List DumpHardware { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator AudioMedia(AudioMediaType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var media = new AudioMedia
+ {
+ Image = cicm.Image,
+ Size = cicm.Size,
+ Sequence = cicm.Sequence,
+ PartNumber = cicm.PartNumber,
+ SerialNumber = cicm.SerialNumber,
+ Manufacturer = cicm.Manufacturer,
+ Model = cicm.Model,
+ AccoustID = cicm.AccoustID,
+ CopyProtection = cicm.CopyProtection,
+ Dimensions = cicm.Dimensions,
+ Scans = cicm.Scans
+ };
+
+ if(cicm.Checksums is not null)
+ {
+ media.Checksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.Checksums)
+ media.Checksums.Add(chk);
+ }
+
+ if(cicm.Block is not null)
+ {
+ media.Blocks = new List();
+
+ foreach(AudioBlockType blk in cicm.Block)
+ media.Blocks.Add(blk);
+ }
+
+ if(cicm.DumpHardwareArray is null)
+ return media;
+
+ media.DumpHardware = new List();
+
+ foreach(DumpHardwareType hw in cicm.DumpHardwareArray)
+ media.DumpHardware.Add(hw);
+
+ return media;
+ }
+}
+
+public class AudioBlock
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public string AccoustID { get; set; }
+ public List Checksums { get; set; }
+ public string Format { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator AudioBlock(AudioBlockType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var blk = new AudioBlock
+ {
+ Image = cicm.Image,
+ Size = cicm.Size,
+ AccoustID = cicm.AccoustID,
+ Format = cicm.Format
+ };
+
+ if(cicm.Checksums is null)
+ return blk;
+
+ blk.Checksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.Checksums)
+ blk.Checksums.Add(chk);
+
+ return blk;
+ }
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/AudioVideo.cs b/Aaru.CommonTypes/AaruMetadata/AudioVideo.cs
new file mode 100644
index 000000000..d2a682f32
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/AudioVideo.cs
@@ -0,0 +1,333 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : AudioVideo.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Json.Serialization;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class AudioTrack
+{
+ public List Languages { get; set; }
+ public uint Number { get; set; }
+ public string AccoustID { get; set; }
+ public string Codec { get; set; }
+ public uint Channels { get; set; }
+ public double SampleRate { get; set; }
+ public long MeanBitrate { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator AudioTrack(AudioTracksType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var trk = new AudioTrack
+ {
+ Number = cicm.TrackNumber,
+ AccoustID = cicm.AccoustID,
+ Codec = cicm.Codec,
+ Channels = cicm.Channels,
+ SampleRate = cicm.SampleRate,
+ MeanBitrate = cicm.MeanBitrate
+ };
+
+ if(cicm.Languages is null)
+ return trk;
+
+ trk.Languages = new List();
+
+ foreach(LanguagesTypeLanguage lng in cicm.Languages)
+ trk.Languages.Add((Language)lng);
+
+ return trk;
+ }
+}
+
+public class VideoTrack
+{
+ public List Languages { get; set; }
+ public uint Number { get; set; }
+ public string Codec { get; set; }
+ public uint Horizontal { get; set; }
+ public uint Vertical { get; set; }
+ public long MeanBitrate { get; set; }
+
+ [JsonPropertyName("3D")]
+ public bool ThreeD { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator VideoTrack(VideoTracksType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var trk = new VideoTrack
+ {
+ Number = cicm.TrackNumber,
+ Codec = cicm.Codec,
+ Horizontal = cicm.Horizontal,
+ Vertical = cicm.Vertical,
+ MeanBitrate = cicm.MeanBitrate,
+ ThreeD = cicm.ThreeD
+ };
+
+ if(cicm.Languages is null)
+ return trk;
+
+ trk.Languages = new List();
+
+ foreach(LanguagesTypeLanguage lng in cicm.Languages)
+ trk.Languages.Add((Language)lng);
+
+ return trk;
+ }
+}
+
+public class SubtitleTrack
+{
+ public List Languages { get; set; }
+ public uint Number { get; set; }
+ public string Codec { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator SubtitleTrack(SubtitleTracksType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var sub = new SubtitleTrack
+ {
+ Number = cicm.TrackNumber,
+ Codec = cicm.Codec
+ };
+
+ if(cicm.Languages is null)
+ return sub;
+
+ sub.Languages = new List();
+
+ foreach(LanguagesTypeLanguage lng in cicm.Languages)
+ sub.Languages.Add((Language)lng);
+
+ return sub;
+ }
+}
+
+public class Recording
+{
+ public string Broadcaster { get; set; }
+ public string BroadcastPlatform { get; set; }
+ public SourceFormat SourceFormat { get; set; }
+ public DateTime Timestamp { get; set; }
+ public List Software { get; set; }
+ public Coordinates Coordinates { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Recording(RecordingType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var recording = new Recording
+ {
+ Broadcaster = cicm.Broadcaster,
+ BroadcastPlatform = cicm.BroadcastPlatform,
+ SourceFormat = (SourceFormat)cicm.SourceFormat,
+ Timestamp = cicm.Timestamp,
+ Coordinates = cicm.Coordinates
+ };
+
+ if(cicm.Software is null)
+ return recording;
+
+ recording.Software = new List();
+
+ foreach(SoftwareType sw in cicm.Software)
+ recording.Software.Add(sw);
+
+ return recording;
+ }
+}
+
+public class Coordinates
+{
+ public double Latitude { get; set; }
+ public double Longitude { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Coordinates(CoordinatesType cicm) => cicm is null
+ ? null
+ : new Coordinates
+ {
+ Latitude = cicm.Latitude,
+ Longitude = cicm.Longitude
+ };
+}
+
+[JsonConverter(typeof(JsonStringEnumMemberConverter))]
+[SuppressMessage("ReSharper", "InconsistentNaming")]
+public enum SourceFormat
+{
+ [JsonPropertyName("ITU-A")]
+ ITUA,
+ [JsonPropertyName("ITU-B")]
+ ITUB,
+ [JsonPropertyName("ITU-C")]
+ ITUC,
+ [JsonPropertyName("ITU-D")]
+ ITUD,
+ [JsonPropertyName("ITU-E")]
+ ITUE,
+ [JsonPropertyName("ITU-F")]
+ ITUF,
+ [JsonPropertyName("ITU-G")]
+ ITUG,
+ [JsonPropertyName("ITU-H")]
+ ITUH,
+ [JsonPropertyName("ITU-I")]
+ ITUI,
+ [JsonPropertyName("ITU-J")]
+ ITUJ,
+ [JsonPropertyName("ITU-K")]
+ ITUK,
+ [JsonPropertyName("ITU-L")]
+ ITUL,
+ [JsonPropertyName("ITU-M")]
+ ITUM,
+ [JsonPropertyName("ITU-N")]
+ ITUN,
+ [JsonPropertyName("PAL-B")]
+ PALB,
+ [JsonPropertyName("SECAM-B")]
+ SECAMB,
+ [JsonPropertyName("PAL-D")]
+ PALD,
+ [JsonPropertyName("SECAM-D")]
+ SECAMD,
+ [JsonPropertyName("PAL-G")]
+ PALG,
+ [JsonPropertyName("SECAM-G")]
+ SECAMG,
+ [JsonPropertyName("PAL-H")]
+ PALH,
+ [JsonPropertyName("PAL-I")]
+ PALI,
+ [JsonPropertyName("PAL-K")]
+ PALK,
+ [JsonPropertyName("SECAM-K")]
+ SECAMK,
+ [JsonPropertyName("NTSC-M")]
+ NTSCM,
+ [JsonPropertyName("PAL-N")]
+ PALN,
+ [JsonPropertyName("PAL-M")]
+ PALM,
+ [JsonPropertyName("SECAM-M")]
+ SECAMM,
+ MUSE,
+ PALplus,
+ FM,
+ AM,
+ COFDM,
+ [JsonPropertyName("CAM-D")]
+ CAMD,
+ DAB,
+ [JsonPropertyName("DAB+")]
+ DAB1,
+ DRM,
+ [JsonPropertyName("DRM+")]
+ DRM1,
+ FMeXtra,
+ ATSC,
+ ATSC2,
+ ATSC3,
+ [JsonPropertyName("ATSC-M/H")]
+ ATSCMH,
+ [JsonPropertyName("DVB-T")]
+ DVBT,
+ [JsonPropertyName("DVB-T2")]
+ DVBT2,
+ [JsonPropertyName("DVB-S")]
+ DVBS,
+ [JsonPropertyName("DVB-S2")]
+ DVBS2,
+ [JsonPropertyName("DVB-S2X")]
+ DVBS2X,
+ [JsonPropertyName("DVB-C")]
+ DVBC,
+ [JsonPropertyName("DVB-C2")]
+ DVBC2,
+ [JsonPropertyName("DVB-H")]
+ DVBH,
+ [JsonPropertyName("DVB-NGH")]
+ DVBNGH,
+ [JsonPropertyName("DVB-SH")]
+ DVBSH,
+ [JsonPropertyName("ISDB-T")]
+ ISDBT,
+ [JsonPropertyName("ISDB-Tb")]
+ ISDBTb,
+ [JsonPropertyName("ISDB-S")]
+ ISDBS,
+ [JsonPropertyName("ISDB-C")]
+ ISDBC,
+ [JsonPropertyName("1seg")]
+ Item1seg,
+ DTMB,
+ CCMB,
+ [JsonPropertyName("T-DMB")]
+ TDMB,
+ [JsonPropertyName("S-DMB")]
+ SDMB,
+ IPTV,
+ [JsonPropertyName("DVB-MT")]
+ DVBMT,
+ [JsonPropertyName("DVB-MC")]
+ DVBMC,
+ [JsonPropertyName("DVB-MS")]
+ DVBMS,
+ ADR,
+ SDR
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/Barcode.cs b/Aaru.CommonTypes/AaruMetadata/Barcode.cs
new file mode 100644
index 000000000..3764547aa
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/Barcode.cs
@@ -0,0 +1,95 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Barcode.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+using System;
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Json.Serialization;
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+[JsonConverter(typeof(JsonStringEnumMemberConverter))]
+[SuppressMessage("ReSharper", "InconsistentNaming")]
+public enum BarcodeType
+{
+ Aztec,
+ Codabar,
+ Code11,
+ Code128,
+ Code39,
+ Code93,
+ CPC_Binary,
+ EZcode,
+ FIM,
+ ITF,
+ ITF14,
+ EAN13,
+ EAN8,
+ MaxiCode,
+ ISBN,
+ ISRC,
+ MSI,
+ ShotCode,
+ RM4SCC,
+ QR,
+ EAN5,
+ EAN2,
+ POSTNET,
+ PostBar,
+ Plessey,
+ Pharmacode,
+ PDF417,
+ PatchCode
+}
+
+public class Barcode
+{
+ public BarcodeType Type { get; set; }
+ public string Value { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Barcode(Schemas.BarcodeType cicm) => cicm is null
+ ? null
+ : new Barcode
+ {
+ Type = (BarcodeType)cicm.type,
+ Value = cicm.Value
+ };
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/BlockMedia.cs b/Aaru.CommonTypes/AaruMetadata/BlockMedia.cs
new file mode 100644
index 000000000..037bf8e89
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/BlockMedia.cs
@@ -0,0 +1,220 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : BlockMedia.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class BlockMedia
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public List Checksums { get; set; }
+ public List ContentChecksums { get; set; }
+ public Sequence Sequence { get; set; }
+ public string Manufacturer { get; set; }
+ public string Model { get; set; }
+ public string Serial { get; set; }
+ public string Firmware { get; set; }
+ public string PartNumber { get; set; }
+ public string SerialNumber { get; set; }
+ public uint PhysicalBlockSize { get; set; }
+ public uint LogicalBlockSize { get; set; }
+ public ulong LogicalBlocks { get; set; }
+ public List VariableBlockSize { get; set; }
+ public List TapeInformation { get; set; }
+ public Scans Scans { get; set; }
+ public ATA ATA { get; set; }
+ public Pci Pci { get; set; }
+ public Pcmcia Pcmcia { get; set; }
+ public SecureDigital SecureDigital { get; set; }
+ public MultiMediaCard MultiMediaCard { get; set; }
+ public SCSI SCSI { get; set; }
+ public Usb Usb { get; set; }
+ public Dump Mam { get; set; }
+ public ushort? Heads { get; set; }
+ public uint? Cylinders { get; set; }
+ public ulong? SectorsPerTrack { get; set; }
+ public List Track { get; set; }
+ public string CopyProtection { get; set; }
+ public Dimensions Dimensions { get; set; }
+ public List FileSystemInformation { get; set; }
+ public List DumpHardware { get; set; }
+ public string MediaType { get; set; }
+ public string MediaSubType { get; set; }
+ public string Interface { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator BlockMedia(BlockMediaType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var media = new BlockMedia
+ {
+ Image = cicm.Image,
+ Size = cicm.Size,
+ Sequence = cicm.Sequence,
+ Manufacturer = cicm.Manufacturer,
+ Model = cicm.Model,
+ Serial = cicm.Serial,
+ Firmware = cicm.Firmware,
+ PartNumber = cicm.PartNumber,
+ SerialNumber = cicm.SerialNumber,
+ PhysicalBlockSize = cicm.PhysicalBlockSize,
+ LogicalBlockSize = cicm.LogicalBlockSize,
+ LogicalBlocks = cicm.LogicalBlocks,
+ Scans = cicm.Scans,
+ ATA = cicm.ATA,
+ Pci = cicm.PCI,
+ Pcmcia = cicm.PCMCIA,
+ SecureDigital = cicm.SecureDigital,
+ MultiMediaCard = cicm.MultiMediaCard,
+ SCSI = cicm.SCSI,
+ Usb = cicm.USB,
+ Mam = cicm.MAM,
+ Heads = cicm.HeadsSpecified ? cicm.Heads : null,
+ Cylinders = cicm.CylindersSpecified ? cicm.Cylinders : null,
+ SectorsPerTrack = cicm.SectorsPerTrackSpecified ? cicm.SectorsPerTrack : null,
+ CopyProtection = cicm.CopyProtection,
+ Dimensions = cicm.Dimensions,
+ MediaType = cicm.DiskType,
+ MediaSubType = cicm.DiskSubType,
+ Interface = cicm.Interface
+ };
+
+ if(cicm.Checksums is not null)
+ {
+ media.Checksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.Checksums)
+ media.Checksums.Add(chk);
+ }
+
+ if(cicm.ContentChecksums is not null)
+ {
+ media.ContentChecksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.ContentChecksums)
+ media.ContentChecksums.Add(chk);
+ }
+
+ if(cicm.VariableBlockSize is not null)
+ {
+ media.VariableBlockSize = new List();
+
+ foreach(BlockSizeType blkSize in cicm.VariableBlockSize)
+ media.VariableBlockSize.Add(blkSize);
+ }
+
+ if(cicm.TapeInformation is not null)
+ {
+ media.TapeInformation = new List();
+
+ foreach(TapePartitionType tapeInformation in cicm.TapeInformation)
+ media.TapeInformation.Add(tapeInformation);
+ }
+
+ if(cicm.FileSystemInformation is not null)
+ {
+ media.FileSystemInformation = new List();
+
+ foreach(PartitionType fsInfo in cicm.FileSystemInformation)
+ media.FileSystemInformation.Add(fsInfo);
+ }
+
+ if(cicm.DumpHardwareArray is null)
+ return media;
+
+ media.DumpHardware = new List();
+
+ foreach(DumpHardwareType hw in cicm.DumpHardwareArray)
+ media.DumpHardware.Add(hw);
+
+ return media;
+ }
+}
+
+public class BlockTrack
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public ushort Head { get; set; }
+ public uint Cylinder { get; set; }
+ public ulong StartSector { get; set; }
+ public ulong EndSector { get; set; }
+ public ulong Sectors { get; set; }
+ public uint BytesPerSector { get; set; }
+ public List Checksums { get; set; }
+ public string Format { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator BlockTrack(BlockTrackType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var trk = new BlockTrack
+ {
+ Image = cicm.Image,
+ Size = cicm.Size,
+ Head = cicm.Head,
+ Cylinder = cicm.Cylinder,
+ StartSector = cicm.StartSector,
+ EndSector = cicm.EndSector,
+ Sectors = cicm.Sectors,
+ BytesPerSector = cicm.BytesPerSector,
+ Format = cicm.Format
+ };
+
+ if(cicm.Checksums is null)
+ return trk;
+
+ trk.Checksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.Checksums)
+ trk.Checksums.Add(chk);
+
+ return trk;
+ }
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/Book.cs b/Aaru.CommonTypes/AaruMetadata/Book.cs
new file mode 100644
index 000000000..960b749d6
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/Book.cs
@@ -0,0 +1,97 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Book.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Book
+{
+ public List Barcodes { get; set; }
+ public Cover Cover { get; set; }
+ public string Name { get; set; }
+ public string Editorial { get; set; }
+ public string Author { get; set; }
+ public DateTime? PublicationDate { get; set; }
+ public List Languages { get; set; }
+ public uint? Pages { get; set; }
+ public string PageSize { get; set; }
+ public Scan Scan { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Book(BookType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var book = new Book
+ {
+ Cover = cicm.Cover,
+ Name = cicm.Name,
+ Editorial = cicm.Editorial,
+ Author = cicm.Author,
+ PublicationDate = cicm.PublicationDateSpecified ? cicm.PublicationDate : null,
+ Pages = cicm.PagesSpecified ? cicm.Pages : null,
+ PageSize = cicm.PageSize,
+ Scan = cicm.Scan
+ };
+
+ if(cicm.Barcodes is not null)
+ {
+ book.Barcodes = new List();
+
+ foreach(Schemas.BarcodeType code in cicm.Barcodes)
+ book.Barcodes.Add(code);
+ }
+
+ if(cicm.Language is null)
+ return book;
+
+ book.Languages = new List();
+
+ foreach(LanguagesTypeLanguage lng in cicm.Language)
+ book.Languages.Add((Language)lng);
+
+ return book;
+ }
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/Checksum.cs b/Aaru.CommonTypes/AaruMetadata/Checksum.cs
new file mode 100644
index 000000000..5b90f982a
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/Checksum.cs
@@ -0,0 +1,91 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Checksum.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+using System;
+using System.Text.Json.Serialization;
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Checksum
+{
+ public ChecksumType Type { get; set; }
+ public string Value { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Checksum(Schemas.ChecksumType cicm) => cicm is null
+ ? null
+ : new Checksum
+ {
+ Value = cicm.Value,
+ Type = (ChecksumType)cicm.type
+ };
+}
+
+[JsonConverter(typeof(JsonStringEnumMemberConverter))]
+public enum ChecksumType
+{
+ Fletcher16,
+ Fletcher32,
+ Adler32,
+ CRC16,
+ CRC16Ccitt,
+ CRC32,
+ CRC64,
+ Md4,
+ Md5,
+ Dm6,
+ Ripemd128,
+ Ripemd160,
+ Ripemed320,
+ Sha1,
+ Sha224,
+ Sha256,
+ Sha384,
+ Sha512,
+ Sha3,
+ Skein,
+ Snefru,
+ Blake256,
+ Blake512,
+ Tiger,
+ Whirlpool,
+ SpamSum
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/Contents.cs b/Aaru.CommonTypes/AaruMetadata/Contents.cs
new file mode 100644
index 000000000..ffca286fa
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/Contents.cs
@@ -0,0 +1,237 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Contents.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class FilesystemContents
+{
+ public List Files { get; set; }
+ public List Directories { get; set; }
+ public string Namespace { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator FilesystemContents(FilesystemContentsType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var fs = new FilesystemContents
+ {
+ Namespace = cicm.@namespace
+ };
+
+ if(cicm.File is not null)
+ {
+ fs.Files = new List();
+
+ foreach(ContentsFileType file in cicm.File)
+ fs.Files.Add(file);
+ }
+
+ if(cicm.Directory is null)
+ return fs;
+
+ fs.Directories = new List();
+
+ foreach(DirectoryType dir in cicm.Directory)
+ fs.Directories.Add(dir);
+
+ return fs;
+ }
+}
+
+public class ContentsFile
+{
+ public List Checksums { get; set; }
+ public List ExtendedAttributes { get; set; }
+ public string Name { get; set; }
+ public DateTime? CreationTime { get; set; }
+ public DateTime? AccessTime { get; set; }
+ public DateTime? StatusChangeTime { get; set; }
+ public DateTime? BackupTime { get; set; }
+ public DateTime? LastWriteTime { get; set; }
+ public ulong Attributes { get; set; }
+ public uint? PosixMode { get; set; }
+ public ulong? DeviceNumber { get; set; }
+ public ulong? PosixGroupId { get; set; }
+ public ulong Inode { get; set; }
+ public ulong Links { get; set; }
+ public ulong? PosixUserId { get; set; }
+ public ulong Length { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator ContentsFile(ContentsFileType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var file = new ContentsFile
+ {
+ Name = cicm.name,
+ CreationTime = cicm.creationTimeSpecified ? cicm.creationTime : null,
+ AccessTime = cicm.accessTimeSpecified ? cicm.accessTime : null,
+ StatusChangeTime = cicm.statusChangeTimeSpecified ? cicm.statusChangeTime : null,
+ BackupTime = cicm.backupTimeSpecified ? cicm.backupTime : null,
+ LastWriteTime = cicm.lastWriteTimeSpecified ? cicm.lastWriteTime : null,
+ Attributes = cicm.attributes,
+ PosixMode = cicm.posixModeSpecified ? cicm.posixMode : null,
+ DeviceNumber = cicm.deviceNumberSpecified ? cicm.deviceNumber : null,
+ PosixGroupId = cicm.posixGroupIdSpecified ? cicm.posixGroupId : null,
+ Inode = cicm.inode,
+ Links = cicm.links,
+ PosixUserId = cicm.posixUserIdSpecified ? cicm.posixUserId : null,
+ Length = cicm.length
+ };
+
+ if(cicm.Checksums is not null)
+ {
+ file.Checksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.Checksums)
+ file.Checksums.Add(chk);
+ }
+
+ if(cicm.ExtendedAttributes is null)
+ return file;
+
+ file.ExtendedAttributes = new List();
+
+ foreach(ExtendedAttributeType xa in cicm.ExtendedAttributes)
+ file.ExtendedAttributes.Add(xa);
+
+ return file;
+ }
+}
+
+public class ExtendedAttribute
+{
+ public List Checksums { get; set; }
+ public string Name { get; set; }
+ public ulong Length { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator ExtendedAttribute(ExtendedAttributeType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var xa = new ExtendedAttribute
+ {
+ Name = cicm.name,
+ Length = cicm.length
+ };
+
+ if(cicm.Checksums is null)
+ return xa;
+
+ xa.Checksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.Checksums)
+ xa.Checksums.Add(chk);
+
+ return xa;
+ }
+}
+
+public class Directory
+{
+ public List Files { get; set; }
+ public List Directories { get; set; }
+ public string Name { get; set; }
+ public DateTime? CreationTime { get; set; }
+ public DateTime? AccessTime { get; set; }
+ public DateTime? StatusChangeTime { get; set; }
+ public DateTime? BackupTime { get; set; }
+ public DateTime? LastWriteTime { get; set; }
+ public ulong Attributes { get; set; }
+ public uint? PosixMode { get; set; }
+ public ulong? DeviceNumber { get; set; }
+ public ulong? PosixGroupId { get; set; }
+ public ulong? Inode { get; set; }
+ public ulong? Links { get; set; }
+ public ulong? PosixUserId { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Directory(DirectoryType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var dir = new Directory
+ {
+ Name = cicm.name,
+ CreationTime = cicm.creationTimeSpecified ? cicm.creationTime : null,
+ AccessTime = cicm.accessTimeSpecified ? cicm.accessTime : null,
+ StatusChangeTime = cicm.statusChangeTimeSpecified ? cicm.statusChangeTime : null,
+ BackupTime = cicm.backupTimeSpecified ? cicm.backupTime : null,
+ LastWriteTime = cicm.lastWriteTimeSpecified ? cicm.lastWriteTime : null,
+ Attributes = cicm.attributes,
+ PosixMode = cicm.posixModeSpecified ? cicm.posixMode : null,
+ DeviceNumber = cicm.deviceNumberSpecified ? cicm.deviceNumber : null,
+ PosixGroupId = cicm.posixGroupIdSpecified ? cicm.posixGroupId : null,
+ Inode = cicm.inodeSpecified ? cicm.inode : null,
+ Links = cicm.linksSpecified ? cicm.links : null,
+ PosixUserId = cicm.posixUserIdSpecified ? cicm.posixUserId : null
+ };
+
+ if(cicm.Directory is not null)
+ {
+ dir.Directories = new List();
+
+ foreach(DirectoryType d in cicm.Directory)
+ dir.Directories.Add(d);
+ }
+
+ if(cicm.File is null)
+ return dir;
+
+ dir.Files = new List();
+
+ foreach(ContentsFileType file in cicm.File)
+ dir.Files.Add(file);
+
+ return dir;
+ }
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/Dimensions.cs b/Aaru.CommonTypes/AaruMetadata/Dimensions.cs
new file mode 100644
index 000000000..cc5017f1b
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/Dimensions.cs
@@ -0,0 +1,1159 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Dimensions.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+using System;
+using Schemas;
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Dimensions
+{
+ public double? Diameter { get; set; }
+ public double? Height { get; set; }
+ public double? Width { get; set; }
+ public double Thickness { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Dimensions(DimensionsType cicm) => cicm is null
+ ? null
+ : new Dimensions
+ {
+ Diameter = cicm.DiameterSpecified
+ ? cicm.Diameter
+ : null,
+ Height = cicm.HeightSpecified
+ ? cicm.Height
+ : null,
+ Width = cicm.WidthSpecified
+ ? cicm.Width
+ : null,
+ Thickness = cicm.Thickness
+ };
+
+ /// Gets the physical dimensions, in metadata expected format, for a given media type
+ /// Media type
+ /// Dimensions metadata
+ public static Dimensions FromMediaType(MediaType mediaType)
+ {
+ var dmns = new Dimensions();
+
+ switch(mediaType)
+ {
+ #region 5.25" floppy disk
+
+ case MediaType.Apple32SS:
+ case MediaType.Apple32DS:
+ case MediaType.Apple33SS:
+ case MediaType.Apple33DS:
+ case MediaType.AppleFileWare:
+ case MediaType.DOS_525_SS_DD_8:
+ case MediaType.DOS_525_SS_DD_9:
+ case MediaType.DOS_525_DS_DD_8:
+ case MediaType.DOS_525_DS_DD_9:
+ case MediaType.DOS_525_HD:
+ case MediaType.XDF_525:
+ case MediaType.ACORN_525_SS_SD_40:
+ case MediaType.ACORN_525_SS_SD_80:
+ case MediaType.ACORN_525_SS_DD_40:
+ case MediaType.ACORN_525_SS_DD_80:
+ case MediaType.ACORN_525_DS_DD:
+ case MediaType.ATARI_525_SD:
+ case MediaType.ATARI_525_ED:
+ case MediaType.ATARI_525_DD:
+ case MediaType.CBM_1540:
+ case MediaType.CBM_1540_Ext:
+ case MediaType.CBM_1571:
+ case MediaType.ECMA_66:
+ case MediaType.ECMA_70:
+ case MediaType.NEC_525_HD:
+ case MediaType.ECMA_78:
+ case MediaType.ECMA_78_2:
+ case MediaType.ECMA_99_8:
+ case MediaType.ECMA_99_15:
+ case MediaType.ECMA_99_26:
+ case MediaType.FDFORMAT_525_DD:
+ case MediaType.FDFORMAT_525_HD:
+ case MediaType.MetaFloppy_Mod_I:
+ case MediaType.MetaFloppy_Mod_II:
+ // According to ECMA-99 et al
+ dmns.Height = 133.3;
+
+ dmns.Width = 133.3;
+
+ dmns.Thickness = 1.65;
+
+ return dmns;
+
+ #endregion 5.25" floppy disk
+
+ #region 3.5" floppy disk
+
+ case MediaType.AppleSonySS:
+ case MediaType.AppleSonyDS:
+ case MediaType.DOS_35_SS_DD_8:
+ case MediaType.DOS_35_SS_DD_9:
+ case MediaType.DOS_35_DS_DD_8:
+ case MediaType.DOS_35_DS_DD_9:
+ case MediaType.DOS_35_HD:
+ case MediaType.DOS_35_ED:
+ case MediaType.DMF:
+ case MediaType.DMF_82:
+ case MediaType.XDF_35:
+ case MediaType.ACORN_35_DS_DD:
+ case MediaType.CBM_35_DD:
+ case MediaType.CBM_AMIGA_35_DD:
+ case MediaType.CBM_AMIGA_35_HD:
+ case MediaType.FDFORMAT_35_DD:
+ case MediaType.FDFORMAT_35_HD:
+ case MediaType.NEC_35_HD_8:
+ case MediaType.NEC_35_HD_15:
+ case MediaType.Floptical:
+ case MediaType.HiFD:
+ case MediaType.UHD144:
+ case MediaType.Apricot_35:
+ case MediaType.FD32MB:
+ // According to ECMA-100 et al
+ dmns.Height = 94;
+
+ dmns.Width = 90;
+
+ dmns.Thickness = 3.3;
+
+ return dmns;
+
+ #endregion 3.5" floppy disk
+
+ #region 8" floppy disk
+
+ case MediaType.IBM23FD:
+ case MediaType.IBM33FD_128:
+ case MediaType.IBM33FD_256:
+ case MediaType.IBM33FD_512:
+ case MediaType.IBM43FD_128:
+ case MediaType.IBM43FD_256:
+ case MediaType.IBM53FD_256:
+ case MediaType.IBM53FD_512:
+ case MediaType.IBM53FD_1024:
+ case MediaType.RX01:
+ case MediaType.RX02:
+ case MediaType.NEC_8_SD:
+ case MediaType.NEC_8_DD:
+ case MediaType.ECMA_54:
+ case MediaType.ECMA_59:
+ case MediaType.ECMA_69_8:
+ case MediaType.ECMA_69_15:
+ case MediaType.ECMA_69_26:
+ // According to ECMA-59 et al
+ dmns.Height = 203.2;
+
+ dmns.Width = 203.2;
+
+ dmns.Thickness = 1.65;
+
+ return dmns;
+
+ #endregion 8" floppy disk
+
+ #region 356mm magneto optical
+
+ case MediaType.ECMA_260:
+ case MediaType.ECMA_260_Double:
+ // According to ECMA-260 et al
+ dmns.Height = 421.84;
+
+ dmns.Width = 443.76;
+
+ dmns.Thickness = 25.4;
+
+ return dmns;
+
+ #endregion 356mm magneto optical
+
+ #region 300mm magneto optical
+
+ case MediaType.ECMA_189:
+ case MediaType.ECMA_190:
+ case MediaType.ECMA_317:
+ // According to ECMA-317 et al
+ dmns.Height = 340;
+
+ dmns.Width = 320;
+
+ dmns.Thickness = 17;
+
+ return dmns;
+
+ #endregion 300mm magneto optical
+
+ #region 5.25" magneto optical
+
+ case MediaType.ECMA_153:
+ case MediaType.ECMA_153_512:
+ case MediaType.ECMA_183_512:
+ case MediaType.ECMA_183:
+ case MediaType.ECMA_184_512:
+ case MediaType.ECMA_184:
+ case MediaType.ECMA_195:
+ case MediaType.ECMA_195_512:
+ case MediaType.ECMA_238:
+ case MediaType.ECMA_280:
+ case MediaType.ECMA_322:
+ case MediaType.ECMA_322_2k:
+ case MediaType.UDO:
+ case MediaType.UDO2:
+ case MediaType.UDO2_WORM:
+ case MediaType.ISO_15286:
+ case MediaType.ISO_15286_1024:
+ case MediaType.ISO_15286_512:
+ case MediaType.ISO_10089:
+ case MediaType.ISO_10089_512:
+ case MediaType.ECMA_322_1k:
+ case MediaType.ECMA_322_512:
+ case MediaType.ISO_14517:
+ case MediaType.ISO_14517_512:
+ // According to ECMA-183 et al
+ dmns.Height = 153;
+
+ dmns.Width = 135;
+
+ dmns.Thickness = 11;
+
+ return dmns;
+
+ #endregion 5.25" magneto optical
+
+ #region 3.5" magneto optical
+
+ case MediaType.ECMA_154:
+ case MediaType.ECMA_201:
+ case MediaType.ECMA_201_ROM:
+ case MediaType.ECMA_223:
+ case MediaType.ECMA_223_512:
+ case MediaType.GigaMo:
+ case MediaType.GigaMo2:
+ case MediaType.ISO_15041_512:
+ // According to ECMA-154 et al
+ dmns.Height = 94;
+
+ dmns.Width = 90;
+
+ dmns.Thickness = 6;
+
+ return dmns;
+
+ #endregion 3.5" magneto optical
+
+ case MediaType.PD650:
+ case MediaType.PD650_WORM:
+ dmns.Height = 135;
+
+ dmns.Width = 124;
+
+ dmns.Thickness = 7.8;
+
+ return dmns;
+ case MediaType.ECMA_239:
+ dmns.Height = 97;
+
+ dmns.Width = 92;
+
+ dmns.Thickness = 5;
+
+ return dmns;
+ case MediaType.MMCmicro:
+ dmns.Height = 14;
+
+ dmns.Width = 12;
+
+ dmns.Thickness = 1.1;
+
+ return dmns;
+ case MediaType.MemoryStickMicro:
+ dmns.Height = 15;
+
+ dmns.Width = 12.5;
+
+ dmns.Thickness = 1.2;
+
+ return dmns;
+ case MediaType.microSD:
+ dmns.Height = 11;
+
+ dmns.Width = 15;
+
+ dmns.Thickness = 1;
+
+ return dmns;
+ case MediaType.miniSD:
+ dmns.Height = 21.5;
+
+ dmns.Width = 20;
+
+ dmns.Thickness = 1.4;
+
+ return dmns;
+ case MediaType.QIC3010:
+ case MediaType.QIC3020:
+ case MediaType.QIC3080:
+ case MediaType.QIC3095:
+ case MediaType.QIC320:
+ case MediaType.QIC40:
+ case MediaType.QIC80:
+ dmns.Height = 20;
+
+ dmns.Width = 21.5;
+
+ dmns.Thickness = 1.6;
+
+ return dmns;
+ case MediaType.RSMMC:
+ dmns.Height = 18;
+
+ dmns.Width = 24;
+
+ dmns.Thickness = 1.4;
+
+ return dmns;
+ case MediaType.MMC:
+ dmns.Height = 32;
+
+ dmns.Width = 24;
+
+ dmns.Thickness = 1.4;
+
+ return dmns;
+ case MediaType.SecureDigital:
+ dmns.Height = 32;
+
+ dmns.Width = 24;
+
+ dmns.Thickness = 2.1;
+
+ return dmns;
+ case MediaType.xD:
+ dmns.Height = 20;
+
+ dmns.Width = 25;
+
+ dmns.Thickness = 1.78;
+
+ return dmns;
+ case MediaType.XQD:
+ dmns.Height = 38.5;
+
+ dmns.Width = 29.8;
+
+ dmns.Thickness = 3.8;
+
+ return dmns;
+ case MediaType.MemoryStickDuo:
+ case MediaType.MemoryStickProDuo:
+ dmns.Height = 20;
+
+ dmns.Width = 31;
+
+ dmns.Thickness = 1.6;
+
+ return dmns;
+ case MediaType.Nintendo3DSGameCard:
+ case MediaType.NintendoDSGameCard:
+ case MediaType.NintendoDSiGameCard:
+ dmns.Height = 35;
+
+ dmns.Width = 33;
+
+ dmns.Thickness = 3.8;
+
+ return dmns;
+ case MediaType.DataPlay:
+ dmns.Height = 42;
+
+ dmns.Width = 33.5;
+
+ dmns.Thickness = 3;
+
+ return dmns;
+ case MediaType.Microdrive:
+ dmns.Height = 44;
+
+ dmns.Width = 34;
+
+ dmns.Thickness = 8;
+
+ return dmns;
+ case MediaType.ExpressCard34:
+ dmns.Height = 75;
+
+ dmns.Width = 34;
+
+ dmns.Thickness = 5;
+
+ return dmns;
+ case MediaType.SmartMedia:
+ dmns.Height = 45;
+
+ dmns.Width = 37;
+
+ dmns.Thickness = 0.76;
+
+ return dmns;
+ case MediaType.MiniCard:
+ dmns.Height = 45;
+
+ dmns.Width = 37;
+
+ dmns.Thickness = 3.5;
+
+ return dmns;
+ case MediaType.PlayStationMemoryCard:
+ case MediaType.PlayStationMemoryCard2:
+ dmns.Height = 55.7;
+
+ dmns.Width = 41.5;
+
+ dmns.Thickness = 7;
+
+ return dmns;
+ case MediaType.CFast:
+ case MediaType.CompactFlash:
+ dmns.Height = 36;
+
+ dmns.Width = 43;
+
+ dmns.Thickness = 3.3;
+
+ return dmns;
+ case MediaType.CompactFlashType2:
+ dmns.Height = 36;
+
+ dmns.Width = 43;
+
+ dmns.Thickness = 5;
+
+ return dmns;
+ case MediaType.ZXMicrodrive:
+ dmns.Height = 36;
+
+ dmns.Width = 43;
+
+ dmns.Thickness = 5;
+
+ return dmns;
+ case MediaType.MemoryStick:
+ case MediaType.MemoryStickPro:
+ dmns.Height = 21;
+
+ dmns.Width = 50;
+
+ dmns.Thickness = 2.6;
+
+ return dmns;
+ case MediaType.PocketZip:
+ dmns.Height = 54.5;
+
+ dmns.Width = 50;
+
+ dmns.Thickness = 2;
+
+ return dmns;
+ case MediaType.ExpressCard54:
+ dmns.Height = 75;
+
+ dmns.Width = 54;
+
+ dmns.Thickness = 5;
+
+ return dmns;
+ case MediaType.PCCardTypeI:
+ dmns.Height = 85.6;
+
+ dmns.Width = 54;
+
+ dmns.Thickness = 3.3;
+
+ return dmns;
+ case MediaType.PCCardTypeII:
+ dmns.Height = 85.6;
+
+ dmns.Width = 54;
+
+ dmns.Thickness = 5;
+
+ return dmns;
+ case MediaType.PCCardTypeIII:
+ dmns.Height = 85.6;
+
+ dmns.Width = 54;
+
+ dmns.Thickness = 10.5;
+
+ return dmns;
+ case MediaType.PCCardTypeIV:
+ dmns.Height = 85.6;
+
+ dmns.Width = 54;
+
+ dmns.Thickness = 16;
+
+ return dmns;
+ case MediaType.DataStore:
+ dmns.Height = 86.5;
+
+ dmns.Width = 54;
+
+ dmns.Thickness = 2.5;
+
+ return dmns;
+ case MediaType.VideoFloppy:
+ dmns.Height = 54;
+
+ dmns.Width = 60;
+
+ dmns.Thickness = 3.5;
+
+ return dmns;
+ case MediaType.VXA1:
+ case MediaType.VXA2:
+ case MediaType.VXA3:
+ dmns.Height = 95;
+
+ dmns.Width = 62.5;
+
+ dmns.Thickness = 15;
+
+ return dmns;
+ case MediaType.MiniDV:
+ dmns.Height = 47.5;
+
+ dmns.Width = 66;
+
+ dmns.Thickness = 12;
+
+ return dmns;
+ case MediaType.Wafer:
+ dmns.Height = 46.8;
+
+ dmns.Width = 67.1;
+
+ dmns.Thickness = 7.9;
+
+ return dmns;
+ case MediaType.NintendoDiskCard:
+ dmns.Height = 76.2;
+
+ dmns.Width = 71.12;
+
+ dmns.Thickness = 0;
+
+ return dmns;
+ case MediaType.HiMD:
+ case MediaType.MD:
+ case MediaType.MDData:
+ case MediaType.MDData2:
+ case MediaType.MD60:
+ case MediaType.MD74:
+ case MediaType.MD80:
+ dmns.Height = 68;
+
+ dmns.Width = 71.5;
+
+ dmns.Thickness = 4.8;
+
+ return dmns;
+ case MediaType.DAT160:
+ case MediaType.DAT320:
+ case MediaType.DAT72:
+ case MediaType.DDS1:
+ case MediaType.DDS2:
+ case MediaType.DDS3:
+ case MediaType.DDS4:
+ case MediaType.DigitalAudioTape:
+ dmns.Height = 54;
+
+ dmns.Width = 73;
+
+ dmns.Thickness = 10.5;
+
+ return dmns;
+ case MediaType.CompactFloppy:
+ dmns.Height = 100;
+
+ dmns.Width = 80;
+
+ dmns.Thickness = 5;
+
+ return dmns;
+ case MediaType.DECtapeII:
+ dmns.Height = 60;
+
+ dmns.Width = 81;
+
+ dmns.Thickness = 13;
+
+ return dmns;
+ case MediaType.Ditto:
+ dmns.Height = 60;
+
+ dmns.Width = 81;
+
+ dmns.Thickness = 14;
+
+ return dmns;
+ case MediaType.DittoMax:
+ dmns.Height = 126;
+
+ dmns.Width = 81;
+
+ dmns.Thickness = 14;
+
+ return dmns;
+ case MediaType.RDX:
+ case MediaType.RDX320:
+ dmns.Height = 119;
+
+ dmns.Width = 87;
+
+ dmns.Thickness = 23;
+
+ return dmns;
+ case MediaType.LS120:
+ case MediaType.LS240:
+ dmns.Height = 94;
+
+ dmns.Width = 90;
+
+ dmns.Thickness = 3.5;
+
+ return dmns;
+ case MediaType.Travan:
+ case MediaType.Travan3:
+ case MediaType.Travan4:
+ case MediaType.Travan5:
+ case MediaType.Travan7:
+ dmns.Height = 72;
+
+ dmns.Width = 92;
+
+ dmns.Thickness = 15;
+
+ return dmns;
+ case MediaType.Travan1Ex:
+ dmns.Height = 0;
+
+ dmns.Width = 92;
+
+ dmns.Thickness = 15;
+
+ return dmns;
+ case MediaType.Travan3Ex:
+ dmns.Height = 0;
+
+ dmns.Width = 92;
+
+ dmns.Thickness = 15;
+
+ return dmns;
+ case MediaType.ADR2120:
+ case MediaType.ADR260:
+ case MediaType.ADR30:
+ case MediaType.ADR50:
+ dmns.Height = 129;
+
+ dmns.Width = 93;
+
+ dmns.Thickness = 14.5;
+
+ return dmns;
+ case MediaType.Data8:
+ case MediaType.AIT1:
+ case MediaType.AIT1Turbo:
+ case MediaType.AIT2:
+ case MediaType.AIT2Turbo:
+ case MediaType.AIT3:
+ case MediaType.AIT3Ex:
+ case MediaType.AIT3Turbo:
+ case MediaType.AIT4:
+ case MediaType.AIT5:
+ case MediaType.AITETurbo:
+ case MediaType.Exatape106m:
+ case MediaType.Exatape160mXL:
+ case MediaType.Exatape112m:
+ case MediaType.Exatape125m:
+ case MediaType.Exatape150m:
+ case MediaType.Exatape15m:
+ case MediaType.Exatape170m:
+ case MediaType.Exatape225m:
+ case MediaType.Exatape22m:
+ case MediaType.Exatape22mAME:
+ case MediaType.Exatape28m:
+ case MediaType.Exatape40m:
+ case MediaType.Exatape45m:
+ case MediaType.Exatape54m:
+ case MediaType.Exatape75m:
+ case MediaType.Exatape76m:
+ case MediaType.Exatape80m:
+ dmns.Height = 62.5;
+
+ dmns.Width = 95;
+
+ dmns.Thickness = 15;
+
+ return dmns;
+ case MediaType.EZ135:
+ case MediaType.EZ230:
+ case MediaType.SQ327:
+ dmns.Height = 97;
+
+ dmns.Width = 98;
+
+ dmns.Thickness = 9.5;
+
+ return dmns;
+ case MediaType.SQ400:
+ case MediaType.SQ800:
+ case MediaType.SQ2000:
+ dmns.Height = 137;
+
+ dmns.Width = 137;
+
+ dmns.Thickness = 12;
+
+ return dmns;
+ case MediaType.ZIP100:
+ case MediaType.ZIP250:
+ case MediaType.ZIP750:
+ dmns.Height = 98.5;
+
+ dmns.Width = 98;
+
+ dmns.Thickness = 6.5;
+
+ return dmns;
+ case MediaType.Jaz:
+ case MediaType.Jaz2:
+ dmns.Height = 102;
+
+ dmns.Width = 98;
+
+ dmns.Thickness = 12;
+
+ return dmns;
+ case MediaType.Orb:
+ case MediaType.Orb5:
+ dmns.Height = 104;
+
+ dmns.Width = 98;
+
+ dmns.Thickness = 8;
+
+ return dmns;
+ case MediaType.SparQ:
+ dmns.Height = 98;
+
+ dmns.Width = 100;
+
+ dmns.Thickness = 9.7;
+
+ return dmns;
+ case MediaType.ProfessionalDisc:
+ case MediaType.ProfessionalDiscDual:
+ case MediaType.ProfessionalDiscTriple:
+ case MediaType.ProfessionalDiscQuad:
+ case MediaType.PDD:
+ case MediaType.PDD_WORM:
+ dmns.Height = 130;
+
+ dmns.Width = 128.5;
+
+ dmns.Thickness = 9;
+
+ return dmns;
+ case MediaType.SLR1:
+ case MediaType.SLR2:
+ case MediaType.SLR3:
+ case MediaType.SLR32:
+ case MediaType.SLR32SL:
+ case MediaType.SLR4:
+ case MediaType.SLR5:
+ case MediaType.SLR5SL:
+ case MediaType.SLR6:
+ case MediaType.SLRtape100:
+ case MediaType.SLRtape140:
+ case MediaType.SLRtape24:
+ case MediaType.SLRtape24SL:
+ case MediaType.SLRtape40:
+ case MediaType.SLRtape50:
+ case MediaType.SLRtape60:
+ case MediaType.SLRtape7:
+ case MediaType.SLRtape75:
+ case MediaType.SLRtape7SL:
+ dmns.Height = 150;
+
+ dmns.Width = 100;
+
+ dmns.Thickness = 18;
+
+ return dmns;
+ case MediaType.N64DD:
+ dmns.Height = 103.124;
+
+ dmns.Width = 101.092;
+
+ dmns.Thickness = 10.16;
+
+ return dmns;
+ case MediaType.CompactTapeI:
+ case MediaType.CompactTapeII:
+ case MediaType.DLTtapeIII:
+ case MediaType.DLTtapeIIIxt:
+ case MediaType.DLTtapeIV:
+ case MediaType.DLTtapeS4:
+ case MediaType.SDLT1:
+ case MediaType.SDLT2:
+ case MediaType.VStapeI:
+ dmns.Height = 105;
+
+ dmns.Width = 105;
+
+ dmns.Thickness = 25;
+
+ return dmns;
+ case MediaType.LTO:
+ case MediaType.LTO2:
+ case MediaType.LTO3:
+ case MediaType.LTO3WORM:
+ case MediaType.LTO4:
+ case MediaType.LTO4WORM:
+ case MediaType.LTO5:
+ case MediaType.LTO5WORM:
+ case MediaType.LTO6:
+ case MediaType.LTO6WORM:
+ case MediaType.LTO7:
+ case MediaType.LTO7WORM:
+ dmns.Height = 101.6;
+
+ dmns.Width = 105.41;
+
+ dmns.Thickness = 21.59;
+
+ return dmns;
+ case MediaType.IBM3480:
+ case MediaType.IBM3490:
+ case MediaType.IBM3490E:
+ case MediaType.IBM3592:
+ dmns.Height = 125.73;
+
+ dmns.Width = 107.95;
+
+ dmns.Thickness = 25.4;
+
+ return dmns;
+ case MediaType.T9840A:
+ case MediaType.T9840B:
+ case MediaType.T9840C:
+ case MediaType.T9840D:
+ case MediaType.T9940A:
+ case MediaType.T9940B:
+ dmns.Height = 124.46;
+
+ dmns.Width = 109.22;
+
+ dmns.Thickness = 25.4;
+
+ return dmns;
+ case MediaType.CompactCassette:
+ case MediaType.Dcas25:
+ case MediaType.Dcas85:
+ case MediaType.Dcas103:
+ dmns.Height = 63.5;
+
+ dmns.Width = 128;
+
+ dmns.Thickness = 12;
+
+ return dmns;
+ case MediaType.IBM3470:
+ dmns.Height = 58.42;
+
+ dmns.Width = 137.16;
+
+ dmns.Thickness = 16.51;
+
+ return dmns;
+ case MediaType.MLR1:
+ case MediaType.MLR3:
+ case MediaType.MLR1SL:
+ dmns.Height = 101.6;
+
+ dmns.Width = 152.4;
+
+ dmns.Thickness = 15.24;
+
+ return dmns;
+ case MediaType.QIC11:
+ case MediaType.QIC120:
+ case MediaType.QIC1350:
+ case MediaType.QIC150:
+ case MediaType.QIC24:
+ case MediaType.QIC525:
+ dmns.Height = 101.6;
+
+ dmns.Width = 154.2;
+
+ dmns.Thickness = 16.6;
+
+ return dmns;
+ #pragma warning disable CS0612 // Type or member is obsolete
+ case MediaType.Bernoulli:
+ #pragma warning restore CS0612 // Type or member is obsolete
+ case MediaType.Bernoulli10:
+ case MediaType.Bernoulli20:
+ dmns.Height = 280;
+
+ dmns.Width = 209;
+
+ dmns.Thickness = 18;
+
+ return dmns;
+ #pragma warning disable CS0612 // Type or member is obsolete
+ case MediaType.Bernoulli2:
+ #pragma warning restore CS0612 // Type or member is obsolete
+ case MediaType.BernoulliBox2_20:
+ case MediaType.Bernoulli35:
+ case MediaType.Bernoulli44:
+ case MediaType.Bernoulli65:
+ case MediaType.Bernoulli90:
+ case MediaType.Bernoulli105:
+ case MediaType.Bernoulli150:
+ case MediaType.Bernoulli230:
+ dmns.Height = 138;
+
+ dmns.Width = 136;
+
+ dmns.Thickness = 9;
+
+ return dmns;
+ case MediaType.DTF:
+ case MediaType.DTF2:
+ dmns.Height = 144.78;
+
+ dmns.Width = 254;
+
+ dmns.Thickness = 25.4;
+
+ return dmns;
+ case MediaType.LD:
+ case MediaType.LDROM:
+ case MediaType.LDROM2:
+ case MediaType.MegaLD:
+ case MediaType.LVROM:
+ dmns.Diameter = 300;
+
+ dmns.Thickness = 2.5;
+
+ return dmns;
+ case MediaType.CRVdisc:
+ dmns.Height = 344;
+
+ dmns.Width = 325;
+
+ dmns.Thickness = 15.6;
+
+ return dmns;
+ case MediaType.REV35:
+ case MediaType.REV70:
+ case MediaType.REV120:
+ dmns.Height = 74.8;
+
+ dmns.Width = 76.8;
+
+ dmns.Thickness = 10;
+
+ return dmns;
+
+ #region CD/DVD/BD
+
+ case MediaType.CDDA:
+ case MediaType.CDG:
+ case MediaType.CDEG:
+ case MediaType.CDI:
+ case MediaType.CDROM:
+ case MediaType.CDROMXA:
+ case MediaType.CDPLUS:
+ case MediaType.CDMO:
+ case MediaType.CDR:
+ case MediaType.CDRW:
+ case MediaType.CDMRW:
+ case MediaType.VCD:
+ case MediaType.SVCD:
+ case MediaType.PCD:
+ case MediaType.SACD:
+ case MediaType.DDCD:
+ case MediaType.DDCDR:
+ case MediaType.DDCDRW:
+ case MediaType.DTSCD:
+ case MediaType.CDMIDI:
+ case MediaType.CDV:
+ case MediaType.CD:
+ case MediaType.DVDROM:
+ case MediaType.DVDR:
+ case MediaType.DVDRW:
+ case MediaType.DVDPR:
+ case MediaType.DVDPRW:
+ case MediaType.DVDPRWDL:
+ case MediaType.DVDRDL:
+ case MediaType.DVDPRDL:
+ case MediaType.DVDRAM:
+ case MediaType.DVDRWDL:
+ case MediaType.DVDDownload:
+ case MediaType.HDDVDROM:
+ case MediaType.HDDVDRAM:
+ case MediaType.HDDVDR:
+ case MediaType.HDDVDRW:
+ case MediaType.HDDVDRDL:
+ case MediaType.HDDVDRWDL:
+ case MediaType.BDROM:
+ case MediaType.BDR:
+ case MediaType.BDRE:
+ case MediaType.BDRXL:
+ case MediaType.BDREXL:
+ case MediaType.PS1CD:
+ case MediaType.PS2CD:
+ case MediaType.PS2DVD:
+ case MediaType.PS3DVD:
+ case MediaType.PS3BD:
+ case MediaType.PS4BD:
+ case MediaType.PS5BD:
+ case MediaType.XGD:
+ case MediaType.XGD2:
+ case MediaType.XGD3:
+ case MediaType.XGD4:
+ case MediaType.MEGACD:
+ case MediaType.SATURNCD:
+ case MediaType.GDROM:
+ case MediaType.GDR:
+ case MediaType.SuperCDROM2:
+ case MediaType.JaguarCD:
+ case MediaType.ThreeDO:
+ case MediaType.WOD:
+ case MediaType.WUOD:
+ case MediaType.PCFX:
+ case MediaType.CDIREADY:
+ case MediaType.FMTOWNS:
+ case MediaType.CDTV:
+ case MediaType.CD32:
+ case MediaType.Nuon:
+ case MediaType.Playdia:
+ case MediaType.Pippin:
+ case MediaType.MilCD:
+ case MediaType.CVD:
+ case MediaType.UHDBD:
+ dmns.Diameter = 120;
+
+ dmns.Thickness = 1.2;
+
+ return dmns;
+ case MediaType.GOD:
+ dmns.Diameter = 80;
+
+ dmns.Thickness = 1.2;
+
+ return dmns;
+ case MediaType.VideoNow:
+ dmns.Diameter = 85;
+
+ dmns.Thickness = 1.2;
+
+ return dmns;
+ case MediaType.VideoNowColor:
+ case MediaType.VideoNowXp:
+ dmns.Diameter = 108;
+
+ dmns.Thickness = 1.2;
+
+ return dmns;
+
+ #endregion CD/DVD/BD
+
+ #region Apple Hard Disks
+
+ // TODO: Find Apple Widget size
+ case MediaType.AppleProfile:
+ dmns.Height = 223.8;
+
+ dmns.Width = 438.9;
+
+ dmns.Thickness = 111.5;
+
+ return dmns;
+ case MediaType.AppleHD20:
+ dmns.Height = 246.4;
+
+ dmns.Width = 266.7;
+
+ dmns.Thickness = 78.7;
+
+ return dmns;
+
+ #endregion Apple Hard Disks
+
+ case MediaType.UMD:
+ dmns.Height = 64;
+
+ dmns.Width = 63;
+
+ dmns.Thickness = 4;
+
+ return dmns;
+ case MediaType.HF12:
+ case MediaType.HF24:
+ dmns.Height = 137.5;
+
+ dmns.Width = 135.9;
+
+ dmns.Thickness = 5.64;
+
+ return dmns;
+ default:
+ return null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/Dump.cs b/Aaru.CommonTypes/AaruMetadata/Dump.cs
new file mode 100644
index 000000000..0f7e6144e
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/Dump.cs
@@ -0,0 +1,155 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Dump.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Image
+{
+ public string Format { get; set; }
+ public ulong? Offset { get; set; }
+ public string Value { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Image(ImageType cicm) => cicm is null
+ ? null
+ : new Image
+ {
+ Format = cicm.format,
+ Offset = cicm.offsetSpecified ? cicm.offset : null,
+ Value = cicm.Value
+ };
+}
+
+public class Dump
+{
+ public string Image { get; set; }
+ public ulong Size { get; set; }
+ public List Checksums { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Dump(DumpType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ Dump dump = new()
+ {
+ Image = cicm.Image,
+ Size = cicm.Size
+ };
+
+ if(cicm.Checksums is null)
+ return dump;
+
+ dump.Checksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.Checksums)
+ dump.Checksums.Add(chk);
+
+ return dump;
+ }
+}
+
+public class Border
+{
+ public string Image { get; set; }
+ public ulong Size { get; set; }
+ public List Checksums { get; set; }
+ public uint? Session { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Border(BorderType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var border = new Border
+ {
+ Image = cicm.Image,
+ Size = cicm.Size,
+ Session = cicm.sessionSpecified ? cicm.session : null
+ };
+
+ if(cicm.Checksums is null)
+ return border;
+
+ border.Checksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.Checksums)
+ border.Checksums.Add(chk);
+
+ return border;
+ }
+}
+
+public class File
+{
+ public string Format { get; set; }
+ public string Value { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator File(FileType cicm) => cicm is null
+ ? null
+ : new File
+ {
+ Format = cicm.format,
+ Value = cicm.Value
+ };
+}
+
+public class BlockSize
+{
+ public uint StartingBlock { get; set; }
+ public uint Value { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator BlockSize(BlockSizeType cicm) => cicm is null
+ ? null
+ : new BlockSize
+ {
+ StartingBlock = cicm.startingBlock,
+ Value = cicm.Value
+ };
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/DumpHardware.cs b/Aaru.CommonTypes/AaruMetadata/DumpHardware.cs
new file mode 100644
index 000000000..ec28aae1a
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/DumpHardware.cs
@@ -0,0 +1,116 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : DumpHardware.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class DumpHardware
+{
+ public string Manufacturer { get; set; }
+ public string Model { get; set; }
+ public string Revision { get; set; }
+ public string Firmware { get; set; }
+ public string Serial { get; set; }
+ public List Extents { get; set; }
+ public Software Software { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator DumpHardware(DumpHardwareType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var hw = new DumpHardware
+ {
+ Manufacturer = cicm.Manufacturer,
+ Model = cicm.Model,
+ Revision = cicm.Revision,
+ Firmware = cicm.Firmware,
+ Serial = cicm.Serial,
+ Software = cicm.Software
+ };
+
+ if(cicm.Extents is null)
+ return hw;
+
+ hw.Extents = new List();
+
+ foreach(ExtentType ext in cicm.Extents)
+ hw.Extents.Add(ext);
+
+ return hw;
+ }
+}
+
+public class Extent
+{
+ public ulong Start { get; set; }
+ public ulong End { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Extent(ExtentType cicm) => cicm is null
+ ? null
+ : new Extent
+ {
+ Start = cicm.Start,
+ End = cicm.End
+ };
+}
+
+public class Software
+{
+ public string Name { get; set; }
+ public string Version { get; set; }
+ public string OperatingSystem { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Software(SoftwareType cicm) => cicm is null
+ ? null
+ : new Software
+ {
+ Name = cicm.Name,
+ Version = cicm.Version,
+ OperatingSystem = cicm.OperatingSystem
+ };
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/FileSystem.cs b/Aaru.CommonTypes/AaruMetadata/FileSystem.cs
new file mode 100644
index 000000000..c437bb789
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/FileSystem.cs
@@ -0,0 +1,120 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : FileSystem.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class FileSystem
+{
+ public string Type { get; set; }
+ public DateTime? CreationDate { get; set; }
+ public DateTime? ModificationDate { get; set; }
+ public DateTime? BackupDate { get; set; }
+ public uint ClusterSize { get; set; }
+ public ulong Clusters { get; set; }
+ public ulong? Files { get; set; }
+ public bool Bootable { get; set; }
+ public string VolumeSerial { get; set; }
+ public string VolumeName { get; set; }
+ public ulong? FreeClusters { get; set; }
+ public bool Dirty { get; set; }
+ public DateTime? ExpirationDate { get; set; }
+ public DateTime? EffectiveDate { get; set; }
+ public string SystemIdentifier { get; set; }
+ public string VolumeSetIdentifier { get; set; }
+ public string PublisherIdentifier { get; set; }
+ public string DataPreparerIdentifier { get; set; }
+ public string ApplicationIdentifier { get; set; }
+ public FilesystemContents Contents { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator FileSystem(FileSystemType cicm) => cicm is null
+ ? null
+ : new FileSystem
+ {
+ Type = cicm.Type,
+ CreationDate =
+ cicm.CreationDateSpecified
+ ? cicm.CreationDate
+ : null,
+ ModificationDate =
+ cicm.ModificationDateSpecified
+ ? cicm.ModificationDate
+ : null,
+ BackupDate =
+ cicm.BackupDateSpecified
+ ? cicm.BackupDate
+ : null,
+ ClusterSize = cicm.ClusterSize,
+ Clusters = cicm.Clusters,
+ Files = cicm.FilesSpecified
+ ? cicm.Files
+ : null,
+ Bootable = cicm.Bootable,
+ VolumeSerial = cicm.VolumeSerial,
+ VolumeName = cicm.VolumeName,
+ FreeClusters =
+ cicm.FreeClustersSpecified
+ ? cicm.FreeClusters
+ : null,
+ Dirty = cicm.Dirty,
+ ExpirationDate =
+ cicm.ExpirationDateSpecified
+ ? cicm.ExpirationDate
+ : null,
+ EffectiveDate =
+ cicm.EffectiveDateSpecified
+ ? cicm.EffectiveDate
+ : null,
+ SystemIdentifier = cicm.SystemIdentifier,
+ VolumeSetIdentifier =
+ cicm.VolumeSetIdentifier,
+ PublisherIdentifier =
+ cicm.PublisherIdentifier,
+ DataPreparerIdentifier =
+ cicm.DataPreparerIdentifier,
+ ApplicationIdentifier =
+ cicm.ApplicationIdentifier,
+ Contents = cicm.Contents
+ };
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/Language.cs b/Aaru.CommonTypes/AaruMetadata/Language.cs
new file mode 100644
index 000000000..bb522eeab
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/Language.cs
@@ -0,0 +1,538 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Language.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Json.Serialization;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+[JsonConverter(typeof(JsonStringEnumMemberConverter))]
+[SuppressMessage("ReSharper", "InconsistentNaming")]
+public enum Language
+{
+ aar,
+ abk,
+ ace,
+ ach,
+ ada,
+ ady,
+ afa,
+ afh,
+ afr,
+ ain,
+ aka,
+ akk,
+ alb,
+ ale,
+ alg,
+ alt,
+ amh,
+ ang,
+ anp,
+ apa,
+ ara,
+ arc,
+ arg,
+ arm,
+ arn,
+ arp,
+ art,
+ arw,
+ asm,
+ ast,
+ ath,
+ aus,
+ ava,
+ ave,
+ awa,
+ aym,
+ aze,
+ bad,
+ bai,
+ bak,
+ bal,
+ bam,
+ ban,
+ baq,
+ bas,
+ bat,
+ bej,
+ bel,
+ bem,
+ ben,
+ ber,
+ bho,
+ bih,
+ bik,
+ bin,
+ bis,
+ bla,
+ bnt,
+ bos,
+ bra,
+ bre,
+ btk,
+ bua,
+ bug,
+ bul,
+ bur,
+ byn,
+ cad,
+ cai,
+ car,
+ cat,
+ cau,
+ ceb,
+ cel,
+ cha,
+ chb,
+ che,
+ chg,
+ chi,
+ chk,
+ chm,
+ chn,
+ cho,
+ chp,
+ chr,
+ chu,
+ chv,
+ chy,
+ cmc,
+ cop,
+ cor,
+ cos,
+ cpe,
+ cpf,
+ cpp,
+ cre,
+ crh,
+ crp,
+ csb,
+ cus,
+ cze,
+ dak,
+ dan,
+ dar,
+ day,
+ del,
+ den,
+ dgr,
+ din,
+ div,
+ doi,
+ dra,
+ dsb,
+ dua,
+ dum,
+ dut,
+ dyu,
+ dzo,
+ efi,
+ egy,
+ eka,
+ elx,
+ eng,
+ enm,
+ epo,
+ est,
+ ewe,
+ ewo,
+ fan,
+ fao,
+ fat,
+ fij,
+ fil,
+ fin,
+ fiu,
+ fon,
+ fre,
+ frm,
+ fro,
+ frr,
+ frs,
+ fry,
+ ful,
+ fur,
+ gaa,
+ gay,
+ gba,
+ gem,
+ geo,
+ ger,
+ gez,
+ gil,
+ gla,
+ gle,
+ glg,
+ glv,
+ gmh,
+ goh,
+ gon,
+ gor,
+ got,
+ grb,
+ grc,
+ gre,
+ grn,
+ gsw,
+ guj,
+ gwi,
+ hai,
+ hat,
+ hau,
+ haw,
+ heb,
+ her,
+ hil,
+ him,
+ hin,
+ hit,
+ hmn,
+ hmo,
+ hrv,
+ hsb,
+ hun,
+ hup,
+ iba,
+ ibo,
+ ice,
+ ido,
+ iii,
+ ijo,
+ iku,
+ ile,
+ ilo,
+ ina,
+ inc,
+ ind,
+ ine,
+ inh,
+ ipk,
+ ira,
+ iro,
+ ita,
+ jav,
+ jbo,
+ jpn,
+ jpr,
+ jrb,
+ kaa,
+ kab,
+ kac,
+ kal,
+ kam,
+ kan,
+ kar,
+ kas,
+ kau,
+ kaw,
+ kaz,
+ kbd,
+ kha,
+ khi,
+ khm,
+ kho,
+ kik,
+ kin,
+ kir,
+ kmb,
+ kok,
+ kom,
+ kon,
+ kor,
+ kos,
+ kpe,
+ krc,
+ krl,
+ kro,
+ kru,
+ kua,
+ kum,
+ kur,
+ kut,
+ lad,
+ lah,
+ lam,
+ lao,
+ lat,
+ lav,
+ lez,
+ lim,
+ lin,
+ lit,
+ lol,
+ loz,
+ ltz,
+ lua,
+ lub,
+ lug,
+ lui,
+ lun,
+ luo,
+ lus,
+ mac,
+ mad,
+ mag,
+ mah,
+ mai,
+ mak,
+ mal,
+ man,
+ mao,
+ map,
+ mar,
+ mas,
+ may,
+ mdf,
+ mdr,
+ men,
+ mga,
+ mic,
+ min,
+ mis,
+ mkh,
+ mlg,
+ mlt,
+ mnc,
+ mni,
+ mno,
+ moh,
+ mon,
+ mos,
+ mul,
+ mun,
+ mus,
+ mwl,
+ mwr,
+ myn,
+ myv,
+ nah,
+ nai,
+ nap,
+ nau,
+ nav,
+ nbl,
+ nde,
+ ndo,
+ nds,
+ nep,
+ @new,
+ nia,
+ nic,
+ niu,
+ nno,
+ nob,
+ nog,
+ non,
+ nor,
+ nqo,
+ nso,
+ nub,
+ nwc,
+ nya,
+ nym,
+ nyn,
+ nyo,
+ nzi,
+ oci,
+ oji,
+ ori,
+ orm,
+ osa,
+ oss,
+ ota,
+ oto,
+ paa,
+ pag,
+ pal,
+ pam,
+ pan,
+ pap,
+ pau,
+ peo,
+ per,
+ phi,
+ phn,
+ pli,
+ pol,
+ pon,
+ por,
+ pra,
+ pro,
+ pus,
+ [JsonPropertyName("qaa-qtz")]
+ qaaqtz,
+ que,
+ raj,
+ rap,
+ rar,
+ roa,
+ roh,
+ rom,
+ rum,
+ run,
+ rup,
+ rus,
+ sad,
+ sag,
+ sah,
+ sai,
+ sal,
+ sam,
+ san,
+ sas,
+ sat,
+ scn,
+ sco,
+ sel,
+ sem,
+ sga,
+ sgn,
+ shn,
+ sid,
+ sin,
+ sio,
+ sit,
+ sla,
+ slo,
+ slv,
+ sma,
+ sme,
+ smi,
+ smj,
+ smn,
+ smo,
+ sms,
+ sna,
+ snd,
+ snk,
+ sog,
+ som,
+ son,
+ sot,
+ spa,
+ srd,
+ srn,
+ srp,
+ srr,
+ ssa,
+ ssw,
+ suk,
+ sun,
+ sus,
+ sux,
+ swa,
+ swe,
+ syc,
+ syr,
+ tah,
+ tai,
+ tam,
+ tat,
+ tel,
+ tem,
+ ter,
+ tet,
+ tgk,
+ tgl,
+ tha,
+ tib,
+ tig,
+ tir,
+ tiv,
+ tkl,
+ tlh,
+ tli,
+ tmh,
+ tog,
+ ton,
+ tpi,
+ tsi,
+ tsn,
+ tso,
+ tuk,
+ tum,
+ tup,
+ tur,
+ tut,
+ tvl,
+ twi,
+ tyv,
+ udm,
+ uga,
+ uig,
+ ukr,
+ umb,
+ und,
+ urd,
+ uzb,
+ vai,
+ ven,
+ vie,
+ vol,
+ vot,
+ wak,
+ wal,
+ war,
+ was,
+ wel,
+ wen,
+ wln,
+ wol,
+ xal,
+ xho,
+ yao,
+ yap,
+ yid,
+ yor,
+ ypk,
+ zap,
+ zbl,
+ zen,
+ zgh,
+ zha,
+ znd,
+ zul,
+ zun,
+ zxx,
+ zza
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/Layers.cs b/Aaru.CommonTypes/AaruMetadata/Layers.cs
new file mode 100644
index 000000000..83c949028
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/Layers.cs
@@ -0,0 +1,117 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Layers.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Json.Serialization;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Layers
+{
+ public List Sectors { get; set; }
+ public LayerType? Type { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Layers(LayersType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var layers = new Layers
+ {
+ Type = cicm.typeSpecified ? (LayerType)cicm.type : null
+ };
+
+ if(cicm.Sectors is null)
+ return layers;
+
+ layers.Sectors = new List();
+
+ foreach(SectorsType sec in cicm.Sectors)
+ layers.Sectors.Add(sec);
+
+ return layers;
+ }
+}
+
+[SuppressMessage("ReSharper", "InconsistentNaming")]
+[JsonConverter(typeof(JsonStringEnumMemberConverter))]
+public enum LayerType
+{
+ PTP,
+ OTP
+}
+
+public class LayeredText
+{
+ public uint? Layer { get; set; }
+ public string Text { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator LayeredText(LayeredTextType cicm) => cicm is null
+ ? null
+ : new LayeredText
+ {
+ Layer = cicm.layerSpecified
+ ? cicm.layer
+ : null,
+ Text = cicm.Value
+ };
+}
+
+public class Sectors
+{
+ public uint? Layer { get; set; }
+ public ulong Value { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Sectors(SectorsType cicm) => cicm is null
+ ? null
+ : new Sectors
+ {
+ Layer =
+ cicm.layerSpecified ? cicm.layer : null,
+ Value = cicm.Value
+ };
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/LinearMedia.cs b/Aaru.CommonTypes/AaruMetadata/LinearMedia.cs
new file mode 100644
index 000000000..37533b534
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/LinearMedia.cs
@@ -0,0 +1,122 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : LinearMedia.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class LinearMedia
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public List ImageChecksums { get; set; }
+ public List Checksums { get; set; }
+ public string PartNumber { get; set; }
+ public string SerialNumber { get; set; }
+ public string Title { get; set; }
+ public uint? Sequence { get; set; }
+ public uint? ImageInterleave { get; set; }
+ public uint? Interleave { get; set; }
+ public string Manufacturer { get; set; }
+ public string Model { get; set; }
+ public string Package { get; set; }
+ public string Interface { get; set; }
+ public Dimensions Dimensions { get; set; }
+ public Scans Scans { get; set; }
+ public List DumpHardware { get; set; }
+ public Pcmcia Pcmcia { get; set; }
+ public string CopyProtection { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator LinearMedia(LinearMediaType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var linearMedia = new LinearMedia
+ {
+ Image = cicm.Image,
+ Size = cicm.Size,
+ PartNumber = cicm.PartNumber,
+ SerialNumber = cicm.SerialNumber,
+ Title = cicm.Title,
+ Sequence = cicm.SequenceSpecified ? cicm.Sequence : null,
+ ImageInterleave = cicm.ImageInterleaveSpecified ? cicm.ImageInterleave : null,
+ Interleave = cicm.InterleaveSpecified ? cicm.Interleave : null,
+ Manufacturer = cicm.Manufacturer,
+ Model = cicm.Model,
+ Package = cicm.Package,
+ Interface = cicm.Interface,
+ Dimensions = cicm.Dimensions,
+ Scans = cicm.Scans,
+ Pcmcia = cicm.PCMCIA,
+ CopyProtection = cicm.CopyProtection
+ };
+
+ if(cicm.ImageChecksums is not null)
+ {
+ linearMedia.ImageChecksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.ImageChecksums)
+ linearMedia.ImageChecksums.Add(chk);
+ }
+
+ if(cicm.Checksums is not null)
+ {
+ linearMedia.Checksums = new List();
+
+ foreach(Schemas.ChecksumType chk in cicm.Checksums)
+ linearMedia.Checksums.Add(chk);
+ }
+
+ if(cicm.DumpHardwareArray is null)
+ return linearMedia;
+
+ linearMedia.DumpHardware = new List();
+
+ foreach(DumpHardwareType hw in cicm.DumpHardwareArray)
+ linearMedia.DumpHardware.Add(hw);
+
+ return linearMedia;
+ }
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/Magazine.cs b/Aaru.CommonTypes/AaruMetadata/Magazine.cs
new file mode 100644
index 000000000..31fd8280b
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/Magazine.cs
@@ -0,0 +1,94 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Magazine.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Magazine
+{
+ public List Barcodes { get; set; }
+ public Cover Cover { get; set; }
+ public string Name { get; set; }
+ public string Editorial { get; set; }
+ public DateTime? PublicationDate { get; set; }
+ public uint? Number { get; set; }
+ public List Languages { get; set; }
+ public uint? Pages { get; set; }
+ public string PageSize { get; set; }
+ public Scan Scan { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator Magazine(MagazineType cicm)
+ {
+ if(cicm is null)
+ return null;
+
+ var magazine = new Magazine
+ {
+ Cover = cicm.Cover,
+ Name = cicm.Name,
+ Editorial = cicm.Editorial,
+ PublicationDate = cicm.PublicationDateSpecified ? cicm.PublicationDate : null,
+ Number = cicm.NumberSpecified ? cicm.Number : null,
+ Pages = cicm.PagesSpecified ? cicm.Pages : null,
+ Scan = cicm.Scan
+ };
+
+ if(cicm.Barcodes is not null)
+ {
+ magazine.Barcodes = new List();
+
+ foreach(Schemas.BarcodeType code in cicm.Barcodes)
+ magazine.Barcodes.Add(code);
+ }
+
+ if(cicm.Language is null)
+ return magazine;
+
+ foreach(LanguagesTypeLanguage lng in cicm.Language)
+ magazine.Languages.Add((Language)lng);
+
+ return magazine;
+ }
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/MultiMediaCard.cs b/Aaru.CommonTypes/AaruMetadata/MultiMediaCard.cs
new file mode 100644
index 000000000..24d0ee602
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/MultiMediaCard.cs
@@ -0,0 +1,64 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : MultiMediaCard.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+using System;
+using Schemas;
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class MultiMediaCard
+{
+ public Dump CID { get; set; }
+ public Dump CSD { get; set; }
+ public Dump ExtendedCSD { get; set; }
+ public Dump OCR { get; set; }
+
+ [Obsolete("Will be removed in Aaru 7")]
+ public static implicit operator MultiMediaCard(MultiMediaCardType cicm) => cicm is null
+ ? null
+ : new MultiMediaCard
+ {
+ CSD = cicm.CSD,
+ CID = cicm.CID,
+ ExtendedCSD = cicm.ExtendedCSD,
+ OCR = cicm.OCR
+ };
+}
\ No newline at end of file
diff --git a/Aaru.CommonTypes/AaruMetadata/OpticalDisc.cs b/Aaru.CommonTypes/AaruMetadata/OpticalDisc.cs
new file mode 100644
index 000000000..37e4206a4
--- /dev/null
+++ b/Aaru.CommonTypes/AaruMetadata/OpticalDisc.cs
@@ -0,0 +1,398 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : OpticalDisc.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// 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.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using System.Text.Json.Serialization;
+using Schemas;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class OpticalDisc
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public Sequence Sequence { get; set; }
+ public Layers Layers { get; set; }
+ public List Checksums { get; set; }
+ public string PartNumber { get; set; }
+ public string SerialNumber { get; set; }
+ public List RingCode { get; set; }
+ public List MasteringSid { get; set; }
+ public List Toolstamp { get; set; }
+ public List MouldSid { get; set; }
+ public List MouldText { get; set; }
+ public string DiscType { get; set; }
+ public string DiscSubType { get; set; }
+ public int? Offset { get; set; }
+ public uint[] Tracks { get; set; }
+ public uint Sessions { get; set; }
+ public string CopyProtection { get; set; }
+ public Dimensions Dimensions { get; set; }
+ public Case Case { get; set; }
+ public Scans Scans { get; set; }
+ public Dump Pfi { get; set; }
+ public Dump Dmi { get; set; }
+ public Dump Cmi { get; set; }
+ public Dump Bca { get; set; }
+ public Dump Atip { get; set; }
+ public Dump Adip { get; set; }
+ public Dump Pma { get; set; }
+ public Dump Dds { get; set; }
+ public Dump Sai { get; set; }
+ public Dump LastRmd { get; set; }
+ public Dump Pri { get; set; }
+ public Dump MediaID { get; set; }
+ public Dump Pfir { get; set; }
+ public Dump Dcb { get; set; }
+ public Dump Di { get; set; }
+ public Dump Pac { get; set; }
+ public Dump Toc { get; set; }
+ public Dump LeadInCdText { get; set; }
+ public List FirstTrackPregrap { get; set; }
+ public List LeadIn { get; set; }
+ public List LeadOut { get; set; }
+ public Xbox Xbox { get; set; }
+ public Ps3Encryption Ps3Encryption { get; set; }
+ public string MediaCatalogueNumber { get; set; }
+ public List