mirror of
https://github.com/SabreTools/SabreTools.RedumpLib.git
synced 2026-09-25 00:14:54 +00:00
Stop using outer/inner layer terminology
This commit is contained in:
@@ -272,10 +272,6 @@ namespace SabreTools.RedumpLib.RedumpOrg
|
||||
int? fullyMatchedID,
|
||||
List<int>? partiallyMatchedIDs)
|
||||
{
|
||||
// Sony-printed discs have layers in the opposite order
|
||||
var system = section?.System;
|
||||
bool reverseOrder = system.HasReversedRingcodes();
|
||||
|
||||
// Extract the size from the hashes
|
||||
long size = Extensions.ExtractSizeFromHashData(tawo?.ClrMameProData);
|
||||
|
||||
@@ -312,9 +308,9 @@ namespace SabreTools.RedumpLib.RedumpOrg
|
||||
// If we have a triple-layer disc
|
||||
if (sac?.Layerbreak3 != default && sac?.Layerbreak3 != default(long))
|
||||
{
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringCodeField, section?.Layer0MasteringRing, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringSIDField, section?.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.ToolstampsField, section?.Layer0ToolstampMasteringCode, 0);
|
||||
AddIfExists(output, "Layer 0 " + Template.MasteringCodeField, section?.Layer0MasteringRing, 0);
|
||||
AddIfExists(output, "Layer 0 " + Template.MasteringSIDField, section?.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, "Layer 0 " + Template.ToolstampsField, section?.Layer0ToolstampMasteringCode, 0);
|
||||
AddIfExists(output, "Data Side " + Template.MouldSIDsField, section?.Layer0MouldSID, 0);
|
||||
AddIfExists(output, "Data Side " + Template.AdditionalMouldsField, section?.Layer0AdditionalMould, 0);
|
||||
|
||||
@@ -328,16 +324,16 @@ namespace SabreTools.RedumpLib.RedumpOrg
|
||||
AddIfExists(output, "Layer 2 " + Template.MasteringSIDField, section?.Layer2MasteringSID, 0);
|
||||
AddIfExists(output, "Layer 2 " + Template.ToolstampsField, section?.Layer2ToolstampMasteringCode, 0);
|
||||
|
||||
AddIfExists(output, (reverseOrder ? "Layer 3 (Inner) " : "Layer 3 (Outer) ") + Template.MasteringCodeField, section?.Layer3MasteringRing, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 3 (Inner) " : "Layer 3 (Outer) ") + Template.MasteringSIDField, section?.Layer3MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 3 (Inner) " : "Layer 3 (Outer) ") + Template.ToolstampsField, section?.Layer3ToolstampMasteringCode, 0);
|
||||
AddIfExists(output, "Layer 3 " + Template.MasteringCodeField, section?.Layer3MasteringRing, 0);
|
||||
AddIfExists(output, "Layer 3 " + Template.MasteringSIDField, section?.Layer3MasteringSID, 0);
|
||||
AddIfExists(output, "Layer 3 " + Template.ToolstampsField, section?.Layer3ToolstampMasteringCode, 0);
|
||||
}
|
||||
// If we have a triple-layer disc
|
||||
else if (sac?.Layerbreak2 != default && sac?.Layerbreak2 != default(long))
|
||||
{
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringCodeField, section?.Layer0MasteringRing, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringSIDField, section?.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.ToolstampsField, section?.Layer0ToolstampMasteringCode, 0);
|
||||
AddIfExists(output, "Layer 0 " + Template.MasteringCodeField, section?.Layer0MasteringRing, 0);
|
||||
AddIfExists(output, "Layer 0 " + Template.MasteringSIDField, section?.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, "Layer 0 " + Template.ToolstampsField, section?.Layer0ToolstampMasteringCode, 0);
|
||||
AddIfExists(output, "Data Side " + Template.MouldSIDsField, section?.Layer0MouldSID, 0);
|
||||
AddIfExists(output, "Data Side " + Template.AdditionalMouldsField, section?.Layer0AdditionalMould, 0);
|
||||
|
||||
@@ -347,22 +343,22 @@ namespace SabreTools.RedumpLib.RedumpOrg
|
||||
AddIfExists(output, "Label Side " + Template.MouldSIDsField, section?.Layer1MouldSID, 0);
|
||||
AddIfExists(output, "Label Side " + Template.AdditionalMouldsField, section?.Layer1AdditionalMould, 0);
|
||||
|
||||
AddIfExists(output, (reverseOrder ? "Layer 2 (Inner) " : "Layer 2 (Outer) ") + Template.MasteringCodeField, section?.Layer2MasteringRing, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 2 (Inner) " : "Layer 2 (Outer) ") + Template.MasteringSIDField, section?.Layer2MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 2 (Inner) " : "Layer 2 (Outer) ") + Template.ToolstampsField, section?.Layer2ToolstampMasteringCode, 0);
|
||||
AddIfExists(output, "Layer 2 " + Template.MasteringCodeField, section?.Layer2MasteringRing, 0);
|
||||
AddIfExists(output, "Layer 2 " + Template.MasteringSIDField, section?.Layer2MasteringSID, 0);
|
||||
AddIfExists(output, "Layer 2 " + Template.ToolstampsField, section?.Layer2ToolstampMasteringCode, 0);
|
||||
}
|
||||
// If we have a dual-layer disc
|
||||
else if (sac?.Layerbreak != default && sac?.Layerbreak != default(long))
|
||||
{
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringCodeField, section?.Layer0MasteringRing, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringSIDField, section?.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.ToolstampsField, section?.Layer0ToolstampMasteringCode, 0);
|
||||
AddIfExists(output, "Layer 0 " + Template.MasteringCodeField, section?.Layer0MasteringRing, 0);
|
||||
AddIfExists(output, "Layer 0 " + Template.MasteringSIDField, section?.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, "Layer 0 " + Template.ToolstampsField, section?.Layer0ToolstampMasteringCode, 0);
|
||||
AddIfExists(output, "Data Side " + Template.MouldSIDsField, section?.Layer0MouldSID, 0);
|
||||
AddIfExists(output, "Data Side " + Template.AdditionalMouldsField, section?.Layer0AdditionalMould, 0);
|
||||
|
||||
AddIfExists(output, (reverseOrder ? "Layer 1 (Inner) " : "Layer 1 (Outer) ") + Template.MasteringCodeField, section?.Layer1MasteringRing, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 1 (Inner) " : "Layer 1 (Outer) ") + Template.MasteringSIDField, section?.Layer1MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 1 (Inner) " : "Layer 1 (Outer) ") + Template.ToolstampsField, section?.Layer1ToolstampMasteringCode, 0);
|
||||
AddIfExists(output, "Layer 1 " + Template.MasteringCodeField, section?.Layer1MasteringRing, 0);
|
||||
AddIfExists(output, "Layer 1 " + Template.MasteringSIDField, section?.Layer1MasteringSID, 0);
|
||||
AddIfExists(output, "Layer 1 " + Template.ToolstampsField, section?.Layer1ToolstampMasteringCode, 0);
|
||||
AddIfExists(output, "Label Side " + Template.MouldSIDsField, section?.Layer1MouldSID, 0);
|
||||
AddIfExists(output, "Label Side " + Template.AdditionalMouldsField, section?.Layer1AdditionalMould, 0);
|
||||
}
|
||||
|
||||
@@ -168,10 +168,7 @@ namespace SabreTools.RedumpLib.Tools
|
||||
output.AppendLine();
|
||||
|
||||
// Ring Codes section
|
||||
FormatOutputData(output,
|
||||
info.RingCodes,
|
||||
info.DiscIdentifiers,
|
||||
info.DiscIdentity.System);
|
||||
FormatOutputData(output, info.RingCodes, info.DiscIdentifiers);
|
||||
output.AppendLine();
|
||||
|
||||
// Dump Metadata section
|
||||
@@ -320,86 +317,85 @@ namespace SabreTools.RedumpLib.Tools
|
||||
/// </summary>
|
||||
internal static void FormatOutputData(StringBuilder output,
|
||||
RingCodesSection section,
|
||||
DiscIdentifiersSection discIdentifiers,
|
||||
PhysicalSystem? system)
|
||||
DiscIdentifiersSection discIdentifiers)
|
||||
{
|
||||
// Sony-printed discs have layers in the opposite order
|
||||
bool reverseOrder = system.HasReversedRingcodes();
|
||||
|
||||
output.AppendLine("Ring Codes:");
|
||||
output.AppendLine();
|
||||
|
||||
// If we have a triple-layer disc
|
||||
// If we have a quad-layer disc
|
||||
if (discIdentifiers.Layerbreak3 != default && discIdentifiers.Layerbreak3 != default)
|
||||
{
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringCodeField, section.Layer0MasteringCode, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringSIDField, section.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.ToolstampsField, section.Layer0Toolstamps, 0);
|
||||
AddIfExists(output, "Data Side " + Template.MouldSIDsField, section.Layer0MouldSIDs, 0);
|
||||
AddIfExists(output, "Data Side " + Template.AdditionalMouldsField, section.Layer0AdditionalMoulds, 0);
|
||||
AddIfExists(output, $"Layer 0 {Template.MasteringCodeField}", section.Layer0MasteringCode, 0);
|
||||
AddIfExists(output, $"Layer 0 {Template.MasteringSIDField}", section.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, $"Layer 0 {Template.ToolstampsField}", section.Layer0Toolstamps, 0);
|
||||
AddIfExists(output, $"Data Side {Template.MouldSIDsField}", section.Layer0MouldSIDs, 0);
|
||||
AddIfExists(output, $"Data Side {Template.AdditionalMouldsField}", section.Layer0AdditionalMoulds, 0);
|
||||
|
||||
AddIfExists(output, "Layer 1 " + Template.MasteringCodeField, section.Layer1MasteringCode, 0);
|
||||
AddIfExists(output, "Layer 1 " + Template.MasteringSIDField, section.Layer1MasteringSID, 0);
|
||||
AddIfExists(output, $"Layer 1 {Template.MasteringCodeField}", section.Layer1MasteringCode, 0);
|
||||
AddIfExists(output, $"Layer 1 {Template.MasteringSIDField}", section.Layer1MasteringSID, 0);
|
||||
AddIfExists(output, "Layer 1 " + Template.ToolstampsField, section.Layer1Toolstamps, 0);
|
||||
AddIfExists(output, "Label Side " + Template.MouldSIDsField, section.Layer1MouldSIDs, 0);
|
||||
AddIfExists(output, "Label Side " + Template.AdditionalMouldsField, section.Layer1AdditionalMoulds, 0);
|
||||
AddIfExists(output, $"Label Side {Template.MouldSIDsField}", section.Layer1MouldSIDs, 0);
|
||||
AddIfExists(output, $"Label Side {Template.AdditionalMouldsField}", section.Layer1AdditionalMoulds, 0);
|
||||
|
||||
AddIfExists(output, "Layer 2 " + Template.MasteringCodeField, section.Layer2MasteringCode, 0);
|
||||
AddIfExists(output, "Layer 2 " + Template.MasteringSIDField, section.Layer2MasteringSID, 0);
|
||||
AddIfExists(output, "Layer 2 " + Template.ToolstampsField, section.Layer2Toolstamps, 0);
|
||||
AddIfExists(output, $"Layer 2 {Template.MasteringCodeField}", section.Layer2MasteringCode, 0);
|
||||
AddIfExists(output, $"Layer 2 {Template.MasteringSIDField}", section.Layer2MasteringSID, 0);
|
||||
AddIfExists(output, $"Layer 2 {Template.ToolstampsField}", section.Layer2Toolstamps, 0);
|
||||
|
||||
AddIfExists(output, (reverseOrder ? "Layer 3 (Inner) " : "Layer 3 (Outer) ") + Template.MasteringCodeField, section.Layer3MasteringCode, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 3 (Inner) " : "Layer 3 (Outer) ") + Template.MasteringSIDField, section.Layer3MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 3 (Inner) " : "Layer 3 (Outer) ") + Template.ToolstampsField, section.Layer3Toolstamps, 0);
|
||||
AddIfExists(output, $"Layer 3 {Template.MasteringCodeField}", section.Layer3MasteringCode, 0);
|
||||
AddIfExists(output, $"Layer 3 {Template.MasteringSIDField}", section.Layer3MasteringSID, 0);
|
||||
AddIfExists(output, $"Layer 3 {Template.ToolstampsField}", section.Layer3Toolstamps, 0);
|
||||
}
|
||||
|
||||
// If we have a triple-layer disc
|
||||
else if (discIdentifiers?.Layerbreak2 != default && discIdentifiers?.Layerbreak2 != default(long))
|
||||
{
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringCodeField, section.Layer0MasteringCode, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringSIDField, section.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.ToolstampsField, section.Layer0Toolstamps, 0);
|
||||
AddIfExists(output, "Data Side " + Template.MouldSIDsField, section.Layer0MouldSIDs, 0);
|
||||
AddIfExists(output, "Data Side " + Template.AdditionalMouldsField, section.Layer0AdditionalMoulds, 0);
|
||||
AddIfExists(output, $"Layer 0 {Template.MasteringCodeField}", section.Layer0MasteringCode, 0);
|
||||
AddIfExists(output, $"Layer 0 {Template.MasteringSIDField}", section.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, $"Layer 0 {Template.ToolstampsField}", section.Layer0Toolstamps, 0);
|
||||
AddIfExists(output, $"Data Side {Template.MouldSIDsField}", section.Layer0MouldSIDs, 0);
|
||||
AddIfExists(output, $"Data Side {Template.AdditionalMouldsField}", section.Layer0AdditionalMoulds, 0);
|
||||
|
||||
AddIfExists(output, "Layer 1 " + Template.MasteringCodeField, section.Layer1MasteringCode, 0);
|
||||
AddIfExists(output, "Layer 1 " + Template.MasteringSIDField, section.Layer1MasteringSID, 0);
|
||||
AddIfExists(output, "Layer 1 " + Template.ToolstampsField, section.Layer1Toolstamps, 0);
|
||||
AddIfExists(output, "Label Side " + Template.MouldSIDsField, section.Layer1MouldSIDs, 0);
|
||||
AddIfExists(output, "Label Side " + Template.AdditionalMouldsField, section.Layer1AdditionalMoulds, 0);
|
||||
AddIfExists(output, $"Layer 1 {Template.MasteringCodeField}", section.Layer1MasteringCode, 0);
|
||||
AddIfExists(output, $"Layer 1 {Template.MasteringSIDField}", section.Layer1MasteringSID, 0);
|
||||
AddIfExists(output, $"Layer 1 {Template.ToolstampsField}", section.Layer1Toolstamps, 0);
|
||||
AddIfExists(output, $"Label Side {Template.MouldSIDsField}", section.Layer1MouldSIDs, 0);
|
||||
AddIfExists(output, $"Label Side {Template.AdditionalMouldsField}", section.Layer1AdditionalMoulds, 0);
|
||||
|
||||
AddIfExists(output, (reverseOrder ? "Layer 2 (Inner) " : "Layer 2 (Outer) ") + Template.MasteringCodeField, section.Layer2MasteringCode, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 2 (Inner) " : "Layer 2 (Outer) ") + Template.MasteringSIDField, section.Layer2MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 2 (Inner) " : "Layer 2 (Outer) ") + Template.ToolstampsField, section.Layer2Toolstamps, 0);
|
||||
AddIfExists(output, $"Layer 2 {Template.MasteringCodeField}", section.Layer2MasteringCode, 0);
|
||||
AddIfExists(output, $"Layer 2 {Template.MasteringSIDField}", section.Layer2MasteringSID, 0);
|
||||
AddIfExists(output, $"Layer 2 {Template.ToolstampsField}", section.Layer2Toolstamps, 0);
|
||||
}
|
||||
|
||||
// If we have a dual-layer disc
|
||||
else if (discIdentifiers?.Layerbreak != default && discIdentifiers?.Layerbreak != default(long))
|
||||
{
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringCodeField, section.Layer0MasteringCode, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.MasteringSIDField, section.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 0 (Outer) " : "Layer 0 (Inner) ") + Template.ToolstampsField, section.Layer0Toolstamps, 0);
|
||||
AddIfExists(output, "Data Side " + Template.MouldSIDsField, section.Layer0MouldSIDs, 0);
|
||||
AddIfExists(output, "Data Side " + Template.AdditionalMouldsField, section.Layer0AdditionalMoulds, 0);
|
||||
AddIfExists(output, $"Layer 0 {Template.MasteringCodeField}", section.Layer0MasteringCode, 0);
|
||||
AddIfExists(output, $"Layer 0 {Template.MasteringSIDField}", section.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, $"Layer 0 {Template.ToolstampsField}", section.Layer0Toolstamps, 0);
|
||||
AddIfExists(output, $"Data Side {Template.MouldSIDsField}", section.Layer0MouldSIDs, 0);
|
||||
AddIfExists(output, $"Data Side {Template.AdditionalMouldsField}", section.Layer0AdditionalMoulds, 0);
|
||||
|
||||
AddIfExists(output, (reverseOrder ? "Layer 1 (Inner) " : "Layer 1 (Outer) ") + Template.MasteringCodeField, section.Layer1MasteringCode, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 1 (Inner) " : "Layer 1 (Outer) ") + Template.MasteringSIDField, section.Layer1MasteringSID, 0);
|
||||
AddIfExists(output, (reverseOrder ? "Layer 1 (Inner) " : "Layer 1 (Outer) ") + Template.ToolstampsField, section.Layer1Toolstamps, 0);
|
||||
AddIfExists(output, "Label Side " + Template.MouldSIDsField, section.Layer1MouldSIDs, 0);
|
||||
AddIfExists(output, "Label Side " + Template.AdditionalMouldsField, section.Layer1AdditionalMoulds, 0);
|
||||
AddIfExists(output, $"Layer 1 {Template.MasteringCodeField}", section.Layer1MasteringCode, 0);
|
||||
AddIfExists(output, $"Layer 1 {Template.MasteringSIDField}", section.Layer1MasteringSID, 0);
|
||||
AddIfExists(output, $"Layer 1 {Template.ToolstampsField}", section.Layer1Toolstamps, 0);
|
||||
AddIfExists(output, $"Label Side {Template.MouldSIDsField}", section.Layer1MouldSIDs, 0);
|
||||
AddIfExists(output, $"Label Side {Template.AdditionalMouldsField}", section.Layer1AdditionalMoulds, 0);
|
||||
}
|
||||
|
||||
// If we have a single-layer disc
|
||||
else
|
||||
{
|
||||
AddIfExists(output, "Data Side " + Template.MasteringCodeField, section.Layer0MasteringCode, 0);
|
||||
AddIfExists(output, "Data Side " + Template.MasteringSIDField, section.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, "Data Side " + Template.ToolstampsField, section.Layer0Toolstamps, 0);
|
||||
AddIfExists(output, "Data Side " + Template.MouldSIDsField, section.Layer0MouldSIDs, 0);
|
||||
AddIfExists(output, "Data Side " + Template.AdditionalMouldsField, section.Layer0AdditionalMoulds, 0);
|
||||
AddIfExists(output, $"Data Side {Template.MasteringCodeField}", section.Layer0MasteringCode, 0);
|
||||
AddIfExists(output, $"Data Side {Template.MasteringSIDField}", section.Layer0MasteringSID, 0);
|
||||
AddIfExists(output, $"Data Side {Template.ToolstampsField}", section.Layer0Toolstamps, 0);
|
||||
AddIfExists(output, $"Data Side {Template.MouldSIDsField}", section.Layer0MouldSIDs, 0);
|
||||
AddIfExists(output, $"Data Side {Template.AdditionalMouldsField}", section.Layer0AdditionalMoulds, 0);
|
||||
|
||||
AddIfExists(output, "Label Side " + Template.MasteringCodeField, section.Layer1MasteringCode, 0);
|
||||
AddIfExists(output, "Label Side " + Template.MasteringSIDField, section.Layer1MasteringSID, 0);
|
||||
AddIfExists(output, "Label Side " + Template.ToolstampsField, section.Layer1Toolstamps, 0);
|
||||
AddIfExists(output, "Label Side " + Template.MouldSIDsField, section.Layer1MouldSIDs, 0);
|
||||
AddIfExists(output, "Label Side " + Template.AdditionalMouldsField, section.Layer1AdditionalMoulds, 0);
|
||||
AddIfExists(output, $"Label Side {Template.MasteringCodeField}", section.Layer1MasteringCode, 0);
|
||||
AddIfExists(output, $"Label Side {Template.MasteringSIDField}", section.Layer1MasteringSID, 0);
|
||||
AddIfExists(output, $"Label Side {Template.ToolstampsField}", section.Layer1Toolstamps, 0);
|
||||
AddIfExists(output, $"Label Side {Template.MouldSIDsField}", section.Layer1MouldSIDs, 0);
|
||||
AddIfExists(output, $"Label Side {Template.AdditionalMouldsField}", section.Layer1AdditionalMoulds, 0);
|
||||
}
|
||||
|
||||
var offset = section.WriteOffset;
|
||||
|
||||
Reference in New Issue
Block a user