diff --git a/ASN/asn2/AssemblyVersion.cs b/ASN/asn2/AssemblyVersion.cs
index 61eb2ec0d..5b3cd3689 100644
--- a/ASN/asn2/AssemblyVersion.cs
+++ b/ASN/asn2/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.439")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.439")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.445")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.445")]
diff --git a/ASN/asn2/version.version b/ASN/asn2/version.version
index e021f9a58..0f3b47ce4 100644
--- a/ASN/asn2/version.version
+++ b/ASN/asn2/version.version
@@ -1,2 +1,2 @@
-3.0.0.439
-3.0.0.439
+3.0.0.445
+3.0.0.445
diff --git a/BuildTools.sln b/BuildTools.sln
index eb2b1c581..77aaf5c96 100644
--- a/BuildTools.sln
+++ b/BuildTools.sln
@@ -178,6 +178,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Goedel.Tool.Protogen", "Pro
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Goedel.Tool.RegistryConfig", "RegistryConfig\Goedel.Tool.RegistryConfig\Goedel.Tool.RegistryConfig.csproj", "{A05B8032-3B31-40F8-84BB-85DC67602458}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tool Yaschema", "Tool Yaschema", "{A0DA68A1-C283-42FA-91CD-9DFC18B0DEF6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "yaschema", "YASchema\yaschema\yaschema.csproj", "{0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Goedel.Tool.Yaschema", "YASchema\Goedel.Tool.Yashima\Goedel.Tool.Yaschema.csproj", "{1FA1FFE7-2212-46F0-8893-697640E2B3FA}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -1067,6 +1073,46 @@ Global
{A05B8032-3B31-40F8-84BB-85DC67602458}.Release|Any CPU.Build.0 = Release|Any CPU
{A05B8032-3B31-40F8-84BB-85DC67602458}.Release|x86.ActiveCfg = Release|Any CPU
{A05B8032-3B31-40F8-84BB-85DC67602458}.Release|x86.Build.0 = Release|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Debug|x86.Build.0 = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.DotNet|Any CPU.ActiveCfg = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.DotNet|Any CPU.Build.0 = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.DotNet|x86.ActiveCfg = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.DotNet|x86.Build.0 = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Focus|Any CPU.ActiveCfg = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Focus|Any CPU.Build.0 = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Focus|x86.ActiveCfg = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Focus|x86.Build.0 = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Publish|Any CPU.ActiveCfg = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Publish|Any CPU.Build.0 = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Publish|x86.ActiveCfg = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Publish|x86.Build.0 = Debug|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Release|x86.ActiveCfg = Release|Any CPU
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D}.Release|x86.Build.0 = Release|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Debug|x86.Build.0 = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.DotNet|Any CPU.ActiveCfg = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.DotNet|Any CPU.Build.0 = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.DotNet|x86.ActiveCfg = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.DotNet|x86.Build.0 = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Focus|Any CPU.ActiveCfg = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Focus|Any CPU.Build.0 = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Focus|x86.ActiveCfg = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Focus|x86.Build.0 = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Publish|Any CPU.ActiveCfg = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Publish|Any CPU.Build.0 = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Publish|x86.ActiveCfg = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Publish|x86.Build.0 = Debug|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Release|x86.ActiveCfg = Release|Any CPU
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1130,6 +1176,9 @@ Global
{61DD1D3B-7D10-4EF2-BE9C-B4D54C84FE6F} = {420F632D-B323-42B4-954C-DA875083DCC6}
{C5E7079C-E049-455D-9B24-702AB7F9C1AC} = {BB541FF3-D68B-4935-B8AD-5E92A74591E1}
{A05B8032-3B31-40F8-84BB-85DC67602458} = {5BE90DE6-A9E9-4CA9-A009-BC339274E829}
+ {A0DA68A1-C283-42FA-91CD-9DFC18B0DEF6} = {32781FAB-7F7F-4267-9599-479F14195A4B}
+ {0BF8D2DC-C6AE-4F34-9C3E-8523806AD01D} = {A0DA68A1-C283-42FA-91CD-9DFC18B0DEF6}
+ {1FA1FFE7-2212-46F0-8893-697640E2B3FA} = {A0DA68A1-C283-42FA-91CD-9DFC18B0DEF6}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4B0FED20-F156-4724-9241-1F63A97DA43E}
diff --git a/Command/CommandEcho/AssemblyVersion.cs b/Command/CommandEcho/AssemblyVersion.cs
index 6efe1ff1a..11b107392 100644
--- a/Command/CommandEcho/AssemblyVersion.cs
+++ b/Command/CommandEcho/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.128")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.128")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.134")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.134")]
diff --git a/Command/CommandEcho/version.version b/Command/CommandEcho/version.version
index 220573ec4..cb078fb95 100644
--- a/Command/CommandEcho/version.version
+++ b/Command/CommandEcho/version.version
@@ -1,2 +1,2 @@
-3.0.0.128
-3.0.0.128
+3.0.0.134
+3.0.0.134
diff --git a/Command/commandparse/AssemblyVersion.cs b/Command/commandparse/AssemblyVersion.cs
index f348a148c..80d0fa46d 100644
--- a/Command/commandparse/AssemblyVersion.cs
+++ b/Command/commandparse/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.453")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.453")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.459")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.459")]
diff --git a/Command/commandparse/version.version b/Command/commandparse/version.version
index 0b956926a..718b699e0 100644
--- a/Command/commandparse/version.version
+++ b/Command/commandparse/version.version
@@ -1,2 +1,2 @@
-3.0.0.453
-3.0.0.453
+3.0.0.459
+3.0.0.459
diff --git a/Constant/constant/AssemblyVersion.cs b/Constant/constant/AssemblyVersion.cs
index 2f7960017..0e0ab4ed1 100644
--- a/Constant/constant/AssemblyVersion.cs
+++ b/Constant/constant/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.532")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.532")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.538")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.538")]
diff --git a/Constant/constant/version.version b/Constant/constant/version.version
index 27a7cb5b4..3fbf35c01 100644
--- a/Constant/constant/version.version
+++ b/Constant/constant/version.version
@@ -1,2 +1,2 @@
-3.0.0.532
-3.0.0.532
+3.0.0.538
+3.0.0.538
diff --git a/DNSConfig/srvconf/AssemblyVersion.cs b/DNSConfig/srvconf/AssemblyVersion.cs
index 870a75c59..b6e8a9ab1 100644
--- a/DNSConfig/srvconf/AssemblyVersion.cs
+++ b/DNSConfig/srvconf/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.166")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.166")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.172")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.172")]
diff --git a/DNSConfig/srvconf/version.version b/DNSConfig/srvconf/version.version
index f201ed1c3..0ac9e6519 100644
--- a/DNSConfig/srvconf/version.version
+++ b/DNSConfig/srvconf/version.version
@@ -1,2 +1,2 @@
-3.0.0.166
-3.0.0.166
+3.0.0.172
+3.0.0.172
diff --git a/DocTools/bootmaker/AssemblyVersion.cs b/DocTools/bootmaker/AssemblyVersion.cs
index 7ec2f83e8..cd15c546f 100644
--- a/DocTools/bootmaker/AssemblyVersion.cs
+++ b/DocTools/bootmaker/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.469")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.469")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.475")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.475")]
diff --git a/DocTools/bootmaker/version.version b/DocTools/bootmaker/version.version
index 496f6db32..43db06ce2 100644
--- a/DocTools/bootmaker/version.version
+++ b/DocTools/bootmaker/version.version
@@ -1,2 +1,2 @@
-3.0.0.469
-3.0.0.469
+3.0.0.475
+3.0.0.475
diff --git a/DocTools/rfctool/AssemblyVersion.cs b/DocTools/rfctool/AssemblyVersion.cs
index c8bf8d84a..de08bd52c 100644
--- a/DocTools/rfctool/AssemblyVersion.cs
+++ b/DocTools/rfctool/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.637")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.637")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.643")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.643")]
diff --git a/DocTools/rfctool/version.version b/DocTools/rfctool/version.version
index d60f03b30..4336f833f 100644
--- a/DocTools/rfctool/version.version
+++ b/DocTools/rfctool/version.version
@@ -1,2 +1,2 @@
-3.0.0.637
-3.0.0.637
+3.0.0.643
+3.0.0.643
diff --git a/Domainer/domainer/AssemblyVersion.cs b/Domainer/domainer/AssemblyVersion.cs
index 155a47345..86883ff36 100644
--- a/Domainer/domainer/AssemblyVersion.cs
+++ b/Domainer/domainer/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.443")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.443")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.449")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.449")]
diff --git a/Domainer/domainer/version.version b/Domainer/domainer/version.version
index 33091eb2e..f89481745 100644
--- a/Domainer/domainer/version.version
+++ b/Domainer/domainer/version.version
@@ -1,2 +1,2 @@
-3.0.0.443
-3.0.0.443
+3.0.0.449
+3.0.0.449
diff --git a/Exceptional/Exceptional/AssemblyVersion.cs b/Exceptional/Exceptional/AssemblyVersion.cs
index e81d275f1..cea844b93 100644
--- a/Exceptional/Exceptional/AssemblyVersion.cs
+++ b/Exceptional/Exceptional/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.450")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.450")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.456")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.456")]
diff --git a/Exceptional/Exceptional/version.version b/Exceptional/Exceptional/version.version
index f9a0e2ff4..6a138c817 100644
--- a/Exceptional/Exceptional/version.version
+++ b/Exceptional/Exceptional/version.version
@@ -1,2 +1,2 @@
-3.0.0.450
-3.0.0.450
+3.0.0.456
+3.0.0.456
diff --git a/FSRGen/fsrgen/AssemblyVersion.cs b/FSRGen/fsrgen/AssemblyVersion.cs
index 1c922d11a..f348a148c 100644
--- a/FSRGen/fsrgen/AssemblyVersion.cs
+++ b/FSRGen/fsrgen/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.447")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.447")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.453")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.453")]
diff --git a/FSRGen/fsrgen/version.version b/FSRGen/fsrgen/version.version
index 98b67e41a..0b956926a 100644
--- a/FSRGen/fsrgen/version.version
+++ b/FSRGen/fsrgen/version.version
@@ -1,2 +1,2 @@
-3.0.0.447
-3.0.0.447
+3.0.0.453
+3.0.0.453
diff --git a/GScript/gscript/AssemblyVersion.cs b/GScript/gscript/AssemblyVersion.cs
index e4d8a9984..c4a6113b3 100644
--- a/GScript/gscript/AssemblyVersion.cs
+++ b/GScript/gscript/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.466")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.466")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.472")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.472")]
diff --git a/GScript/gscript/version.version b/GScript/gscript/version.version
index ef8d6c1e2..c85a01f73 100644
--- a/GScript/gscript/version.version
+++ b/GScript/gscript/version.version
@@ -1,2 +1,2 @@
-3.0.0.466
-3.0.0.466
+3.0.0.472
+3.0.0.472
diff --git a/Goedel3/goedel3/AssemblyVersion.cs b/Goedel3/goedel3/AssemblyVersion.cs
index 5b3cd3689..9f85150ef 100644
--- a/Goedel3/goedel3/AssemblyVersion.cs
+++ b/Goedel3/goedel3/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.445")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.445")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.451")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.451")]
diff --git a/Goedel3/goedel3/version.version b/Goedel3/goedel3/version.version
index 0f3b47ce4..e4ccff662 100644
--- a/Goedel3/goedel3/version.version
+++ b/Goedel3/goedel3/version.version
@@ -1,2 +1,2 @@
-3.0.0.445
-3.0.0.445
+3.0.0.451
+3.0.0.451
diff --git a/MakeyMakey/makey/AssemblyVersion.cs b/MakeyMakey/makey/AssemblyVersion.cs
index 5b3cd3689..9f85150ef 100644
--- a/MakeyMakey/makey/AssemblyVersion.cs
+++ b/MakeyMakey/makey/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.445")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.445")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.451")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.451")]
diff --git a/MakeyMakey/makey/version.version b/MakeyMakey/makey/version.version
index 0f3b47ce4..e4ccff662 100644
--- a/MakeyMakey/makey/version.version
+++ b/MakeyMakey/makey/version.version
@@ -1,2 +1,2 @@
-3.0.0.445
-3.0.0.445
+3.0.0.451
+3.0.0.451
diff --git a/Protogen/protogen/AssemblyVersion.cs b/Protogen/protogen/AssemblyVersion.cs
index 1c922d11a..f348a148c 100644
--- a/Protogen/protogen/AssemblyVersion.cs
+++ b/Protogen/protogen/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.447")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.447")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.453")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.453")]
diff --git a/Protogen/protogen/version.version b/Protogen/protogen/version.version
index 98b67e41a..0b956926a 100644
--- a/Protogen/protogen/version.version
+++ b/Protogen/protogen/version.version
@@ -1,2 +1,2 @@
-3.0.0.447
-3.0.0.447
+3.0.0.453
+3.0.0.453
diff --git a/RegistryConfig/registryconfig/AssemblyVersion.cs b/RegistryConfig/registryconfig/AssemblyVersion.cs
index b7e6c86b6..e81d275f1 100644
--- a/RegistryConfig/registryconfig/AssemblyVersion.cs
+++ b/RegistryConfig/registryconfig/AssemblyVersion.cs
@@ -1,6 +1,6 @@
using System;
using System.Reflection;
-[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.444")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.444")]
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.450")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.450")]
diff --git a/RegistryConfig/registryconfig/version.version b/RegistryConfig/registryconfig/version.version
index 00928a3ad..f9a0e2ff4 100644
--- a/RegistryConfig/registryconfig/version.version
+++ b/RegistryConfig/registryconfig/version.version
@@ -1,2 +1,2 @@
-3.0.0.444
-3.0.0.444
+3.0.0.450
+3.0.0.450
diff --git a/YASchema/Goedel.Tool.Yashima/AssemblyVersion.cs b/YASchema/Goedel.Tool.Yashima/AssemblyVersion.cs
new file mode 100644
index 000000000..65bbee39a
--- /dev/null
+++ b/YASchema/Goedel.Tool.Yashima/AssemblyVersion.cs
@@ -0,0 +1,6 @@
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyVersionAttribute("0.0.0.0")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("0.0.0.0")]
+
diff --git a/YASchema/Goedel.Tool.Yashima/Generate.Script b/YASchema/Goedel.Tool.Yashima/Generate.Script
new file mode 100644
index 000000000..e85c9a075
--- /dev/null
+++ b/YASchema/Goedel.Tool.Yashima/Generate.Script
@@ -0,0 +1,16 @@
+#script 1.0
+#license MITLicense
+#pclass Goedel.Tool.Yaschema Generate
+
+#method GenerateCS YaschemaStruct YaschemaStruct
+
+// hodwdie doody time
+
+
+#end method
+
+#method GenerateMD YaschemaStruct YaschemaStruct
+
+#end method
+
+#end pclass
diff --git a/YASchema/Goedel.Tool.Yashima/Generate.cs b/YASchema/Goedel.Tool.Yashima/Generate.cs
new file mode 100644
index 000000000..5d899412d
--- /dev/null
+++ b/YASchema/Goedel.Tool.Yashima/Generate.cs
@@ -0,0 +1,51 @@
+// Script Syntax Version: 1.0
+
+// © 2015-2019 by Phill Hallam-Baker
+//
+// 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.
+//
+//
+using System;
+using System.IO;
+using System.Collections.Generic;
+using Goedel.Registry;
+namespace Goedel.Tool.Yaschema {
+ public partial class Generate : global::Goedel.Registry.Script {
+
+
+
+ //
+ // GenerateCS
+ //
+ public void GenerateCS (YaschemaStruct YaschemaStruct) {
+ _Output.Write ("\n{0}", _Indent);
+ _Output.Write ("// hodwdie doody time\n{0}", _Indent);
+ _Output.Write ("\n{0}", _Indent);
+ _Output.Write ("\n{0}", _Indent);
+ }
+
+
+ //
+ // GenerateMD
+ //
+ public void GenerateMD (YaschemaStruct YaschemaStruct) {
+ _Output.Write ("\n{0}", _Indent);
+ }
+ }
+ }
diff --git a/YASchema/Goedel.Tool.Yashima/Goedel.Tool.Yaschema.csproj b/YASchema/Goedel.Tool.Yashima/Goedel.Tool.Yaschema.csproj
new file mode 100644
index 000000000..ee8cb4ffe
--- /dev/null
+++ b/YASchema/Goedel.Tool.Yashima/Goedel.Tool.Yaschema.csproj
@@ -0,0 +1,55 @@
+
+
+
+ net5.0
+ PHBLogo256.ico
+ Library
+ Phill Hallam-Baker
+ build$([System.DateTime]::UtcNow.ToString("yyyyMMddHHmmss"))
+ Constant Manager
+ Generates RFC format documentation from OOXML or Markdown source.
+ © 2015-2019
+ Constant Manager
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+ YaschemaSchema.gdl
+ True
+ True
+
+
+ Generate.script
+ True
+ True
+
+
+
+
+
+ YaschemaSchema.cs
+ Goedel3
+
+
+ Generate.cs
+ GScript
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/YASchema/Goedel.Tool.Yashima/PHBLogo256.ico b/YASchema/Goedel.Tool.Yashima/PHBLogo256.ico
new file mode 100644
index 000000000..67d73bf31
Binary files /dev/null and b/YASchema/Goedel.Tool.Yashima/PHBLogo256.ico differ
diff --git a/YASchema/Goedel.Tool.Yashima/VS.Make b/YASchema/Goedel.Tool.Yashima/VS.Make
new file mode 100644
index 000000000..12911a61c
--- /dev/null
+++ b/YASchema/Goedel.Tool.Yashima/VS.Make
@@ -0,0 +1,49 @@
+
+# Supplemental Makefile for Visual Studios Projects
+#
+# Visual Studio runs tools for most projects but not for shared projects.
+#
+# Prebuild items supported:
+# [None currently]
+#
+# PostBuild items supported:
+# * Copy library to locations on disk
+# * Build ilMerge executables
+# * Postprocess VSIX projects
+# * Copy executables
+
+
+.PHONY : all always clean install publish prebuild prebuildRecurse postbuild postbuildRecurse
+
+MSBuildThisFileDirectory =
+
+LinkFiles = \
+ Goedel.Tool.Core.dll
+
+ToolTargets = \
+ YaschemaSchema.cs\
+ Generate.cs
+YaschemaSchema.cs : YaschemaSchema.gdl
+ goedel3 YaschemaSchema.gdl /cs YaschemaSchema.cs
+
+Generate.cs : Generate.Script
+ gscript Generate.Script Generate.cs
+
+
+
+prebuildRecurse :
+
+
+postbuildRecurse :
+
+# Non shared project, nothing to do
+prebuild : prebuildRecurse $(ToolTargets)
+ version version.version AssemblyVersion.cs
+
+
+postbuild : postbuildRecurse
+
+
+postbuildwindows :
+ powershell publishtarget Goedel.Tool.Yaschema.dll
+
diff --git a/YASchema/Goedel.Tool.Yashima/YaschemaPlus.cs b/YASchema/Goedel.Tool.Yashima/YaschemaPlus.cs
new file mode 100644
index 000000000..7f208c18d
--- /dev/null
+++ b/YASchema/Goedel.Tool.Yashima/YaschemaPlus.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Goedel.Tool.Yaschema {
+ public partial class Yaschema {
+
+
+ }
+
+ }
\ No newline at end of file
diff --git a/YASchema/Goedel.Tool.Yashima/YaschemaSchema.cs b/YASchema/Goedel.Tool.Yashima/YaschemaSchema.cs
new file mode 100644
index 000000000..4b60985cf
--- /dev/null
+++ b/YASchema/Goedel.Tool.Yashima/YaschemaSchema.cs
@@ -0,0 +1,1455 @@
+
+// Copyright (c) ThresholdSecrets by 2020
+//
+// 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.
+//
+//
+// This file is automatically generated from the following source files:
+// Command line options:
+// /dlexer=False
+// /dparser=False
+// /dstack=False
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using Goedel.Registry;
+using Goedel.Utilities;
+
+
+
+
+//
+// Namespace Goedel.Tool.Yaschema
+// Class YaschemaStruct
+//
+
+
+// Types
+// TopTypeType
+// Namespace
+// Client
+// Host
+// TypeType
+// Packet
+// ClientEphemerals
+// ClientEphemeral
+// HostKeyID
+// HostEphemerals
+// Response
+// Challenge
+// Payload
+// ClientCredential
+// ClientKeyID
+// HostEphemeral
+// IdType
+// PacketType
+// NamespaceType
+// Goedel.Tool.Yaschema
+// ClassType
+// YaschemaStruct
+// NameType
+// Id
+// Class
+// Text
+// Entries
+// Options
+// Initial
+// Respond
+// Plaintext
+// Mezzanine
+// Encrypted
+// HostCredential
+// To
+// TokenType
+// Name
+// Label
+
+#pragma warning disable IDE0022, IDE0066, IDE1006, IDE0059
+namespace Goedel.Tool.Yaschema {
+
+
+ public enum YaschemaStructType {
+ _Top,
+
+ Namespace,
+ Client,
+ Host,
+ Packet,
+ Initial,
+ Respond,
+ Plaintext,
+ Mezzanine,
+ Encrypted,
+ Payload,
+ HostCredential,
+ ClientCredential,
+ ClientEphemerals,
+ ClientEphemeral,
+ HostEphemerals,
+ HostEphemeral,
+ Challenge,
+ Response,
+ HostKeyID,
+ ClientKeyID,
+
+ _Label,
+ _Bottom
+ }
+
+
+ public abstract partial class _Choice {
+ abstract public YaschemaStructType _Tag ();
+
+ public abstract void Serialize (StructureWriter Output, bool tag);
+
+ public virtual void Init (_Choice Parent) {
+ }
+
+ bool _Initialized = false;
+ public virtual void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ if (_Initialized) {
+ return;
+ }
+ _Initialized = true;
+ }
+ }
+
+
+
+ public partial class Namespace : _Choice {
+ public TOKEN<_Choice> Id;
+ public TOKEN<_Choice> Class;
+ public List Text = new List ();
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Namespace;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Namespace");
+ }
+
+ Output.WriteId ("Id", Id.ToString());
+ Output.WriteId ("Class", Class.ToString());
+ foreach (string _s in Text) {
+ Output.WriteAttribute ("Text",_s);
+ }
+ if (tag) {
+ Output.EndElement ("Namespace");
+ }
+ }
+ }
+
+ public partial class Client : _Choice {
+ public List Entries = new List ();
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Client;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ foreach (var Sub in Entries) {
+ Sub._InitChildren (this);
+ }
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Client");
+ }
+
+ Output.StartList ("");
+ foreach (Packet _e in Entries) {
+ _e.Serialize (Output, true);
+ }
+ Output.EndList ("");
+ if (tag) {
+ Output.EndElement ("Client");
+ }
+ }
+ }
+
+ public partial class Host : _Choice {
+ public List Entries = new List ();
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Host;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ foreach (var Sub in Entries) {
+ Sub._InitChildren (this);
+ }
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Host");
+ }
+
+ Output.StartList ("");
+ foreach (Packet _e in Entries) {
+ _e.Serialize (Output, true);
+ }
+ Output.EndList ("");
+ if (tag) {
+ Output.EndElement ("Host");
+ }
+ }
+ }
+
+ public partial class Packet : _Choice {
+ public ID<_Choice> Id;
+ public Initial Initial = new Initial();
+ public Respond Respond = new Respond();
+ public Plaintext Plaintext = new Plaintext();
+ public Mezzanine Mezzanine = new Mezzanine();
+ public Encrypted Encrypted = new Encrypted();
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Packet;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Packet");
+ }
+
+ Output.WriteId ("Id", Id.ToString());
+ Output.StartList ("");
+ // public Initial Initial = new Initial();
+ Initial.Serialize (Output, true);
+ // public Respond Respond = new Respond();
+ Respond.Serialize (Output, true);
+ // public Plaintext Plaintext = new Plaintext();
+ Plaintext.Serialize (Output, true);
+ // public Mezzanine Mezzanine = new Mezzanine();
+ Mezzanine.Serialize (Output, true);
+ // public Encrypted Encrypted = new Encrypted();
+ Encrypted.Serialize (Output, true);
+ Output.EndList ("");
+ if (tag) {
+ Output.EndElement ("Packet");
+ }
+ }
+ }
+
+ public partial class Initial : _Choice {
+ public HostCredential HostCredential = new HostCredential();
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Initial;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Initial");
+ }
+
+ Output.StartList ("");
+ // public HostCredential HostCredential = new HostCredential();
+ HostCredential.Serialize (Output, true);
+ Output.EndList ("");
+ if (tag) {
+ Output.EndElement ("Initial");
+ }
+ }
+ }
+
+ public partial class Respond : _Choice {
+ public List [> To = new List][> ();
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Respond;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Respond");
+ }
+
+ Output.StartList ("");
+ foreach (REF<_Choice> _e in To) {
+ Output.WriteId ("To", _e.ToString());
+ }
+ Output.EndList ("");
+ if (tag) {
+ Output.EndElement ("Respond");
+ }
+ }
+ }
+
+ public partial class Plaintext : _Choice {
+ public List <_Choice> Entries = new List<_Choice> ();
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Plaintext;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ foreach (var Sub in Entries) {
+ Sub._InitChildren (this);
+ }
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Plaintext");
+ }
+
+ Output.StartList ("");
+ foreach (_Choice _e in Entries) {
+ _e.Serialize (Output, true);
+ }
+ Output.EndList ("");
+ if (tag) {
+ Output.EndElement ("Plaintext");
+ }
+ }
+ }
+
+ public partial class Mezzanine : _Choice {
+ public List <_Choice> Entries = new List<_Choice> ();
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Mezzanine;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ foreach (var Sub in Entries) {
+ Sub._InitChildren (this);
+ }
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Mezzanine");
+ }
+
+ Output.StartList ("");
+ foreach (_Choice _e in Entries) {
+ _e.Serialize (Output, true);
+ }
+ Output.EndList ("");
+ if (tag) {
+ Output.EndElement ("Mezzanine");
+ }
+ }
+ }
+
+ public partial class Encrypted : _Choice {
+ public List <_Choice> Entries = new List<_Choice> ();
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Encrypted;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ foreach (var Sub in Entries) {
+ Sub._InitChildren (this);
+ }
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Encrypted");
+ }
+
+ Output.StartList ("");
+ foreach (_Choice _e in Entries) {
+ _e.Serialize (Output, true);
+ }
+ Output.EndList ("");
+ if (tag) {
+ Output.EndElement ("Encrypted");
+ }
+ }
+ }
+
+ public partial class Payload : _Choice {
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Payload;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Payload");
+ }
+
+ if (tag) {
+ Output.EndElement ("Payload");
+ }
+ }
+ }
+
+ public partial class HostCredential : _Choice {
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.HostCredential;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("HostCredential");
+ }
+
+ if (tag) {
+ Output.EndElement ("HostCredential");
+ }
+ }
+ }
+
+ public partial class ClientCredential : _Choice {
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.ClientCredential;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("ClientCredential");
+ }
+
+ if (tag) {
+ Output.EndElement ("ClientCredential");
+ }
+ }
+ }
+
+ public partial class ClientEphemerals : _Choice {
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.ClientEphemerals;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("ClientEphemerals");
+ }
+
+ if (tag) {
+ Output.EndElement ("ClientEphemerals");
+ }
+ }
+ }
+
+ public partial class ClientEphemeral : _Choice {
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.ClientEphemeral;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("ClientEphemeral");
+ }
+
+ if (tag) {
+ Output.EndElement ("ClientEphemeral");
+ }
+ }
+ }
+
+ public partial class HostEphemerals : _Choice {
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.HostEphemerals;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("HostEphemerals");
+ }
+
+ if (tag) {
+ Output.EndElement ("HostEphemerals");
+ }
+ }
+ }
+
+ public partial class HostEphemeral : _Choice {
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.HostEphemeral;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("HostEphemeral");
+ }
+
+ if (tag) {
+ Output.EndElement ("HostEphemeral");
+ }
+ }
+ }
+
+ public partial class Challenge : _Choice {
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Challenge;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Challenge");
+ }
+
+ if (tag) {
+ Output.EndElement ("Challenge");
+ }
+ }
+ }
+
+ public partial class Response : _Choice {
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.Response;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("Response");
+ }
+
+ if (tag) {
+ Output.EndElement ("Response");
+ }
+ }
+ }
+
+ public partial class HostKeyID : _Choice {
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.HostKeyID;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("HostKeyID");
+ }
+
+ if (tag) {
+ Output.EndElement ("HostKeyID");
+ }
+ }
+ }
+
+ public partial class ClientKeyID : _Choice {
+
+ public override YaschemaStructType _Tag () =>YaschemaStructType.ClientKeyID;
+
+
+ public override void _InitChildren (_Choice Parent) {
+ Init (Parent);
+ }
+
+ public override void Serialize (StructureWriter Output, bool tag) {
+
+ if (tag) {
+ Output.StartElement ("ClientKeyID");
+ }
+
+ if (tag) {
+ Output.EndElement ("ClientKeyID");
+ }
+ }
+ }
+
+ class _Label : _Choice {
+ public REF<_Choice> Label;
+
+ // This method is never called. It exists only to prevent a warning when a
+ // Schema does not contain a ChoiceREF element.
+ public void Reach() => Label = null;
+
+ public override YaschemaStructType _Tag () => YaschemaStructType._Label;
+
+ public override void Serialize (StructureWriter Output, bool tag) =>Output.WriteId ("ID", Label.ToString());
+ }
+
+
+ public enum StateCode {
+ _Start,
+ _Choice,
+ _End,
+
+ Namespace_Start,
+ Namespace__Id,
+ Namespace__Class,
+ Namespace__Text,
+ Client_Start,
+ Client__Entries,
+ Host_Start,
+ Host__Entries,
+ Packet_Start,
+ Packet__Id,
+ Packet__Options,
+ Initial_Start,
+ Initial__Options,
+ Respond_Start,
+ Respond__To,
+ Plaintext_Start,
+ Plaintext__Entries,
+ Mezzanine_Start,
+ Mezzanine__Entries,
+ Encrypted_Start,
+ Encrypted__Entries,
+ Payload_Start,
+ HostCredential_Start,
+ ClientCredential_Start,
+ ClientEphemerals_Start,
+ ClientEphemeral_Start,
+ HostEphemerals_Start,
+ HostEphemeral_Start,
+ Challenge_Start,
+ Response_Start,
+ HostKeyID_Start,
+ ClientKeyID_Start,
+ }
+
+
+ struct _StackItem {
+ public StateCode State;
+ public Goedel.Tool.Yaschema._Choice Token;
+ }
+
+ public partial class YaschemaStruct : Goedel.Registry.Parser{
+ public List Top;
+ public Registry Registry;
+
+ public bool StartOfEntry {get; private set;}
+
+ StateCode State;
+ Goedel.Tool.Yaschema._Choice Current;
+ List <_StackItem> Stack;
+
+
+ public static YaschemaStruct Parse(string File, Goedel.Registry.Dispatch Options) {
+ var Result = new YaschemaStruct() {
+ Options = Options
+ };
+
+ using (Stream infile =
+ new FileStream(File, FileMode.Open, FileAccess.Read)) {
+ Lexer Schema = new Lexer(File);
+ Schema.Process(infile, Result);
+ }
+ Result._InitChildren ();
+
+ return Result;
+ }
+
+ bool _Initialized = false;
+ public virtual void _InitChildren () {
+ if (_Initialized) {
+ return;
+ }
+ _Initialized = true;
+ foreach (var Entry in Top) {
+ Entry._InitChildren (null);
+ }
+ }
+
+ public YaschemaStruct() {
+ Top = new List () ;
+ Registry = new Registry ();
+ State = StateCode._Start;
+ Stack = new List <_StackItem> ();
+ StartOfEntry = true;
+
+ TYPE__PacketType = Registry.TYPE ("PacketType");
+ TYPE__Name = Registry.TYPE ("Name");
+ TYPE__Label = Registry.TYPE ("Label");
+
+
+
+ }
+
+
+
+ public TYPE TYPE__PacketType ;
+ public TYPE TYPE__Name ;
+ public TYPE TYPE__Label ;
+
+ private Goedel.Tool.Yaschema._Choice New_Choice(string Label) {
+ switch (Label) {
+
+ case "Namespace": return NewNamespace();
+ case "Client": return NewClient();
+ case "Host": return NewHost();
+ case "Packet": return NewPacket();
+ case "Initial": return NewInitial();
+ case "Respond": return NewRespond();
+ case "Plaintext": return NewPlaintext();
+ case "Mezzanine": return NewMezzanine();
+ case "Encrypted": return NewEncrypted();
+ case "Payload": return NewPayload();
+ case "HostCredential": return NewHostCredential();
+ case "ClientCredential": return NewClientCredential();
+ case "ClientEphemerals": return NewClientEphemerals();
+ case "ClientEphemeral": return NewClientEphemeral();
+ case "HostEphemerals": return NewHostEphemerals();
+ case "HostEphemeral": return NewHostEphemeral();
+ case "Challenge": return NewChallenge();
+ case "Response": return NewResponse();
+ case "HostKeyID": return NewHostKeyID();
+ case "ClientKeyID": return NewClientKeyID();
+
+ }
+
+ throw new NotFoundReserved ("Reserved word not recognized \"" + Label + "\"");
+ }
+
+
+
+ private Goedel.Tool.Yaschema.Namespace NewNamespace() {
+ Goedel.Tool.Yaschema.Namespace result = new Goedel.Tool.Yaschema.Namespace();
+ Push (result);
+ State = StateCode.Namespace_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.Client NewClient() {
+ Goedel.Tool.Yaschema.Client result = new Goedel.Tool.Yaschema.Client();
+ Push (result);
+ State = StateCode.Client_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.Host NewHost() {
+ Goedel.Tool.Yaschema.Host result = new Goedel.Tool.Yaschema.Host();
+ Push (result);
+ State = StateCode.Host_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.Packet NewPacket() {
+ Goedel.Tool.Yaschema.Packet result = new Goedel.Tool.Yaschema.Packet();
+ Push (result);
+ State = StateCode.Packet_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.Initial NewInitial() {
+ Goedel.Tool.Yaschema.Initial result = new Goedel.Tool.Yaschema.Initial();
+ Push (result);
+ State = StateCode.Initial_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.Respond NewRespond() {
+ Goedel.Tool.Yaschema.Respond result = new Goedel.Tool.Yaschema.Respond();
+ Push (result);
+ State = StateCode.Respond_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.Plaintext NewPlaintext() {
+ Goedel.Tool.Yaschema.Plaintext result = new Goedel.Tool.Yaschema.Plaintext();
+ Push (result);
+ State = StateCode.Plaintext_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.Mezzanine NewMezzanine() {
+ Goedel.Tool.Yaschema.Mezzanine result = new Goedel.Tool.Yaschema.Mezzanine();
+ Push (result);
+ State = StateCode.Mezzanine_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.Encrypted NewEncrypted() {
+ Goedel.Tool.Yaschema.Encrypted result = new Goedel.Tool.Yaschema.Encrypted();
+ Push (result);
+ State = StateCode.Encrypted_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.Payload NewPayload() {
+ Goedel.Tool.Yaschema.Payload result = new Goedel.Tool.Yaschema.Payload();
+ Push (result);
+ State = StateCode.Payload_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.HostCredential NewHostCredential() {
+ Goedel.Tool.Yaschema.HostCredential result = new Goedel.Tool.Yaschema.HostCredential();
+ Push (result);
+ State = StateCode.HostCredential_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.ClientCredential NewClientCredential() {
+ Goedel.Tool.Yaschema.ClientCredential result = new Goedel.Tool.Yaschema.ClientCredential();
+ Push (result);
+ State = StateCode.ClientCredential_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.ClientEphemerals NewClientEphemerals() {
+ Goedel.Tool.Yaschema.ClientEphemerals result = new Goedel.Tool.Yaschema.ClientEphemerals();
+ Push (result);
+ State = StateCode.ClientEphemerals_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.ClientEphemeral NewClientEphemeral() {
+ Goedel.Tool.Yaschema.ClientEphemeral result = new Goedel.Tool.Yaschema.ClientEphemeral();
+ Push (result);
+ State = StateCode.ClientEphemeral_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.HostEphemerals NewHostEphemerals() {
+ Goedel.Tool.Yaschema.HostEphemerals result = new Goedel.Tool.Yaschema.HostEphemerals();
+ Push (result);
+ State = StateCode.HostEphemerals_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.HostEphemeral NewHostEphemeral() {
+ Goedel.Tool.Yaschema.HostEphemeral result = new Goedel.Tool.Yaschema.HostEphemeral();
+ Push (result);
+ State = StateCode.HostEphemeral_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.Challenge NewChallenge() {
+ Goedel.Tool.Yaschema.Challenge result = new Goedel.Tool.Yaschema.Challenge();
+ Push (result);
+ State = StateCode.Challenge_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.Response NewResponse() {
+ Goedel.Tool.Yaschema.Response result = new Goedel.Tool.Yaschema.Response();
+ Push (result);
+ State = StateCode.Response_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.HostKeyID NewHostKeyID() {
+ Goedel.Tool.Yaschema.HostKeyID result = new Goedel.Tool.Yaschema.HostKeyID();
+ Push (result);
+ State = StateCode.HostKeyID_Start;
+ return result;
+ }
+
+
+ private Goedel.Tool.Yaschema.ClientKeyID NewClientKeyID() {
+ Goedel.Tool.Yaschema.ClientKeyID result = new Goedel.Tool.Yaschema.ClientKeyID();
+ Push (result);
+ State = StateCode.ClientKeyID_Start;
+ return result;
+ }
+
+
+ static Goedel.Tool.Yaschema.YaschemaStructType _Reserved(string Label) {
+ switch (Label) {
+
+ case "Namespace": return Goedel.Tool.Yaschema.YaschemaStructType.Namespace;
+ case "Client": return Goedel.Tool.Yaschema.YaschemaStructType.Client;
+ case "Host": return Goedel.Tool.Yaschema.YaschemaStructType.Host;
+ case "Packet": return Goedel.Tool.Yaschema.YaschemaStructType.Packet;
+ case "Initial": return Goedel.Tool.Yaschema.YaschemaStructType.Initial;
+ case "Respond": return Goedel.Tool.Yaschema.YaschemaStructType.Respond;
+ case "Plaintext": return Goedel.Tool.Yaschema.YaschemaStructType.Plaintext;
+ case "Mezzanine": return Goedel.Tool.Yaschema.YaschemaStructType.Mezzanine;
+ case "Encrypted": return Goedel.Tool.Yaschema.YaschemaStructType.Encrypted;
+ case "Payload": return Goedel.Tool.Yaschema.YaschemaStructType.Payload;
+ case "HostCredential": return Goedel.Tool.Yaschema.YaschemaStructType.HostCredential;
+ case "ClientCredential": return Goedel.Tool.Yaschema.YaschemaStructType.ClientCredential;
+ case "ClientEphemerals": return Goedel.Tool.Yaschema.YaschemaStructType.ClientEphemerals;
+ case "ClientEphemeral": return Goedel.Tool.Yaschema.YaschemaStructType.ClientEphemeral;
+ case "HostEphemerals": return Goedel.Tool.Yaschema.YaschemaStructType.HostEphemerals;
+ case "HostEphemeral": return Goedel.Tool.Yaschema.YaschemaStructType.HostEphemeral;
+ case "Challenge": return Goedel.Tool.Yaschema.YaschemaStructType.Challenge;
+ case "Response": return Goedel.Tool.Yaschema.YaschemaStructType.Response;
+ case "HostKeyID": return Goedel.Tool.Yaschema.YaschemaStructType.HostKeyID;
+ case "ClientKeyID": return Goedel.Tool.Yaschema.YaschemaStructType.ClientKeyID;
+
+ }
+ return Goedel.Tool.Yaschema.YaschemaStructType._Bottom;
+ }
+
+
+ public void Serialize (TextWriter Output)=> Serialize (Output, OutputFormat.Goedel);
+
+ public void Serialize (TextWriter Output, OutputFormat OutputFormat) {
+
+ StructureWriter StructureWriter = StructureWriter.GetStructureWriter (Output, OutputFormat);
+ StructureWriter.StartDocument ();
+ foreach (Goedel.Tool.Yaschema._Choice Entry in Top) {
+ Entry.Serialize (StructureWriter, true);
+ }
+ StructureWriter.EndDocument ();
+ }
+
+
+ void Push (Goedel.Tool.Yaschema._Choice Token) {
+ _StackItem Item = new _StackItem () {
+ State = State,
+ Token = Current
+ };
+
+ Stack.Add (Item);
+
+ //Console.WriteLine ("$$$$PUSH {0}", Current);
+
+ Current = Token;
+ }
+
+ void Pop () {
+ Assert.AssertFalse (Stack.Count == 0, InternalError.Throw);
+
+ _StackItem Item = Stack[Stack.Count -1];
+ State = Item.State;
+ Current = Item.Token;
+
+ Stack.RemoveAt (Stack.Count -1 ) ;
+
+ //Console.WriteLine ("$$$$POP {0}", Current);
+ }
+
+
+
+ public override void Process(TokenType Token, Position Position, string Text) {
+
+ if ((Token == TokenType.SEPARATOR) |
+ (Token == TokenType.NULL) |
+ (Token == TokenType.COMMENT)) {
+ return;
+ }
+ Assert.AssertFalse (Token == TokenType.INVALID, InvalidToken.Throw);
+
+ bool Represent = true;
+
+ while (Represent) {
+ //Console.WriteLine (" {3}: {0} {1} '{2}'", Token, Position, Text, State);
+
+
+ Represent = false;
+ switch (State) {
+ case StateCode._Start: // BEGIN
+ if (Token == TokenType.BEGIN) {
+ State = StateCode._Choice;
+ break;
+ }
+ else {
+ throw new ExpectedStart ();
+ }
+
+ case StateCode._Choice: // LABEL Class | END
+ if (Token == TokenType.LABEL) {
+ Goedel.Tool.Yaschema.YaschemaStructType LabelType = _Reserved (Text);
+ if (false |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.Namespace) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.Client) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.Host)) {
+ Top.Add(New_Choice(Text));
+ }
+ else {
+ throw new Expected("Parser Error Expected [Class]");
+ }
+ break;
+ }
+ if (Token == TokenType.END) {
+ State = StateCode._End;
+ break;
+ }
+ else {
+ throw new ExpectedClass();
+ }
+
+ case StateCode._End: { // -
+ throw new TooManyClose();
+ }
+
+ case StateCode.Namespace_Start:
+ if ((Token == TokenType.LABEL) | (Token == TokenType.LITERAL)) {
+ Goedel.Tool.Yaschema.Namespace Current_Cast = (Goedel.Tool.Yaschema.Namespace)Current;
+ Current_Cast.Id = Registry.TOKEN(Position, Text, TYPE__Name, Current_Cast);
+ State = StateCode.Namespace__Id;
+ break;
+ }
+ throw new Expected("Expected LABEL or LITERAL");
+
+ case StateCode.Namespace__Id:
+ if ((Token == TokenType.LABEL) | (Token == TokenType.LITERAL)) {
+ Goedel.Tool.Yaschema.Namespace Current_Cast = (Goedel.Tool.Yaschema.Namespace)Current;
+ Current_Cast.Class = Registry.TOKEN(Position, Text, TYPE__Label, Current_Cast);
+ State = StateCode.Namespace__Class;
+ break;
+ }
+ throw new Expected("Expected LABEL or LITERAL");
+
+ case StateCode.Namespace__Class:
+ if (Token == TokenType.BEGIN) {
+ State = StateCode.Namespace__Text;
+ break;
+ }
+ else {
+ Pop();
+ Represent = true;
+ break;
+ }
+ case StateCode.Namespace__Text:
+ if (Token == TokenType.END) {
+ Pop();
+ break;
+ }
+ else if (Token == TokenType.TEXT) {
+ Goedel.Tool.Yaschema.Namespace Current_Cast = (Goedel.Tool.Yaschema.Namespace)Current;
+ Current_Cast.Text.Add (Text);
+ break;
+ }
+ throw new Expected("Expected Text");
+
+
+ case StateCode.Client_Start:
+
+ if (Token == TokenType.BEGIN) {
+ State = StateCode.Client__Entries;
+ }
+ else {
+ Pop ();
+ Represent = true;
+ }
+ break;
+ case StateCode.Client__Entries:
+ if (Token == TokenType.END) {
+ Pop();
+ break;
+ }
+
+ // Parser transition for LIST $$$$$
+
+
+ /// Label
+ else {
+ Goedel.Tool.Yaschema.Client Current_Cast = (Goedel.Tool.Yaschema.Client)Current;
+ Current_Cast.Entries.Add (NewPacket ());
+ Represent = true;
+ }
+
+ break;
+
+
+ case StateCode.Host_Start:
+
+ if (Token == TokenType.BEGIN) {
+ State = StateCode.Host__Entries;
+ }
+ else {
+ Pop ();
+ Represent = true;
+ }
+ break;
+ case StateCode.Host__Entries:
+ if (Token == TokenType.END) {
+ Pop();
+ break;
+ }
+
+ // Parser transition for LIST $$$$$
+
+
+ /// Label
+ else {
+ Goedel.Tool.Yaschema.Host Current_Cast = (Goedel.Tool.Yaschema.Host)Current;
+ Current_Cast.Entries.Add (NewPacket ());
+ Represent = true;
+ }
+
+ break;
+
+
+ case StateCode.Packet_Start:
+ if ((Token == TokenType.LABEL) | (Token == TokenType.LITERAL)) {
+ Goedel.Tool.Yaschema.Packet Current_Cast = (Goedel.Tool.Yaschema.Packet)Current;
+ Current_Cast.Id = Registry.ID(Position, Text, TYPE__PacketType, Current_Cast);
+ State = StateCode.Packet__Id;
+ break;
+ }
+ throw new Expected("Expected LABEL or LITERAL");
+
+ case StateCode.Packet__Id:
+ if (Token == TokenType.BEGIN) {
+ State = StateCode.Packet__Options;
+ }
+ else {
+ Pop ();
+ Represent = true;
+ }
+ break;
+ case StateCode.Packet__Options:
+ if (Token == TokenType.END) {
+ Pop();
+ break;
+ }
+
+ // Parser transition for OPTIONS $$$$$
+ else if (Token == TokenType.LABEL) {
+ Goedel.Tool.Yaschema.Packet Current_Cast = (Goedel.Tool.Yaschema.Packet)Current;
+ Goedel.Tool.Yaschema.YaschemaStructType LabelType = _Reserved (Text);
+ switch (LabelType) {
+ case Goedel.Tool.Yaschema.YaschemaStructType.Initial : {
+
+ // Initial Initial
+ Current_Cast.Initial = NewInitial ();
+ break;
+ }
+ case Goedel.Tool.Yaschema.YaschemaStructType.Respond : {
+
+ // Respond Respond
+ Current_Cast.Respond = NewRespond ();
+ break;
+ }
+ case Goedel.Tool.Yaschema.YaschemaStructType.Plaintext : {
+
+ // Plaintext Plaintext
+ Current_Cast.Plaintext = NewPlaintext ();
+ break;
+ }
+ case Goedel.Tool.Yaschema.YaschemaStructType.Mezzanine : {
+
+ // Mezzanine Mezzanine
+ Current_Cast.Mezzanine = NewMezzanine ();
+ break;
+ }
+ case Goedel.Tool.Yaschema.YaschemaStructType.Encrypted : {
+
+ // Encrypted Encrypted
+ Current_Cast.Encrypted = NewEncrypted ();
+ break;
+ }
+ default : {
+ throw new Expected("Parser Error Expected [Initial Respond Plaintext Mezzanine Encrypted ]");
+ }
+ }
+ }
+ break;
+
+ case StateCode.Initial_Start:
+ if (Token == TokenType.BEGIN) {
+ State = StateCode.Initial__Options;
+ }
+ else {
+ Pop ();
+ Represent = true;
+ }
+ break;
+ case StateCode.Initial__Options:
+ if (Token == TokenType.END) {
+ Pop();
+ break;
+ }
+
+ // Parser transition for OPTIONS $$$$$
+ else if (Token == TokenType.LABEL) {
+ Goedel.Tool.Yaschema.Initial Current_Cast = (Goedel.Tool.Yaschema.Initial)Current;
+ Goedel.Tool.Yaschema.YaschemaStructType LabelType = _Reserved (Text);
+ switch (LabelType) {
+ case Goedel.Tool.Yaschema.YaschemaStructType.HostCredential : {
+
+ // HostCredential HostCredential
+ Current_Cast.HostCredential = NewHostCredential ();
+ break;
+ }
+ default : {
+ throw new Expected("Parser Error Expected [HostCredential ]");
+ }
+ }
+ }
+ break;
+
+ case StateCode.Respond_Start:
+
+ if (Token == TokenType.BEGIN) {
+ State = StateCode.Respond__To;
+ }
+ else {
+ Pop ();
+ Represent = true;
+ }
+ break;
+ case StateCode.Respond__To:
+ if (Token == TokenType.END) {
+ Pop();
+ break;
+ }
+
+ // Parser transition for LIST $$$$$
+
+ else if ((Token == TokenType.LABEL) | (Token == TokenType.LITERAL)) {
+ Goedel.Tool.Yaschema.Respond Current_Cast = (Goedel.Tool.Yaschema.Respond)Current;
+ Current_Cast.To.Add ( Registry.REF(Position, Text, TYPE__PacketType, Current_Cast ) );
+ break;
+ }
+
+ break;
+
+
+ case StateCode.Plaintext_Start:
+
+ if (Token == TokenType.BEGIN) {
+ State = StateCode.Plaintext__Entries;
+ }
+ else {
+ Pop ();
+ Represent = true;
+ }
+ break;
+ case StateCode.Plaintext__Entries:
+ if (Token == TokenType.END) {
+ Pop();
+ break;
+ }
+
+ // Parser transition for LIST $$$$$
+
+ else if (Token == TokenType.LABEL) {
+ Goedel.Tool.Yaschema.Plaintext Current_Cast = (Goedel.Tool.Yaschema.Plaintext)Current;
+ Goedel.Tool.Yaschema.YaschemaStructType LabelType = _Reserved (Text);
+ if ( false |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.ClientEphemerals) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.ClientEphemeral) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.HostKeyID) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.HostCredential) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.HostEphemerals) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.Response) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.Challenge) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.Payload) ) {
+ Current_Cast.Entries.Add (New_Choice(Text));
+ }
+ else {
+ throw new Expected ("Parser Error Expected [ClientEphemerals ClientEphemeral HostKeyID HostCredential HostEphemerals Response Challenge Payload ]");
+ }
+ }
+ break;
+
+
+ case StateCode.Mezzanine_Start:
+
+ if (Token == TokenType.BEGIN) {
+ State = StateCode.Mezzanine__Entries;
+ }
+ else {
+ Pop ();
+ Represent = true;
+ }
+ break;
+ case StateCode.Mezzanine__Entries:
+ if (Token == TokenType.END) {
+ Pop();
+ break;
+ }
+
+ // Parser transition for LIST $$$$$
+
+ else if (Token == TokenType.LABEL) {
+ Goedel.Tool.Yaschema.Mezzanine Current_Cast = (Goedel.Tool.Yaschema.Mezzanine)Current;
+ Goedel.Tool.Yaschema.YaschemaStructType LabelType = _Reserved (Text);
+ if ( false |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.ClientCredential) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.ClientKeyID) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.Payload) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.HostEphemeral) |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.HostEphemerals) ) {
+ Current_Cast.Entries.Add (New_Choice(Text));
+ }
+ else {
+ throw new Expected ("Parser Error Expected [ClientCredential ClientKeyID Payload HostEphemeral HostEphemerals ]");
+ }
+ }
+ break;
+
+
+ case StateCode.Encrypted_Start:
+
+ if (Token == TokenType.BEGIN) {
+ State = StateCode.Encrypted__Entries;
+ }
+ else {
+ Pop ();
+ Represent = true;
+ }
+ break;
+ case StateCode.Encrypted__Entries:
+ if (Token == TokenType.END) {
+ Pop();
+ break;
+ }
+
+ // Parser transition for LIST $$$$$
+
+ else if (Token == TokenType.LABEL) {
+ Goedel.Tool.Yaschema.Encrypted Current_Cast = (Goedel.Tool.Yaschema.Encrypted)Current;
+ Goedel.Tool.Yaschema.YaschemaStructType LabelType = _Reserved (Text);
+ if ( false |
+ (LabelType == Goedel.Tool.Yaschema.YaschemaStructType.Payload) ) {
+ Current_Cast.Entries.Add (New_Choice(Text));
+ }
+ else {
+ throw new Expected ("Parser Error Expected [Payload ]");
+ }
+ }
+ break;
+
+
+ case StateCode.Payload_Start:
+ Pop ();
+ Represent = true;
+ break;
+ case StateCode.HostCredential_Start:
+ Pop ();
+ Represent = true;
+ break;
+ case StateCode.ClientCredential_Start:
+ Pop ();
+ Represent = true;
+ break;
+ case StateCode.ClientEphemerals_Start:
+ Pop ();
+ Represent = true;
+ break;
+ case StateCode.ClientEphemeral_Start:
+ Pop ();
+ Represent = true;
+ break;
+ case StateCode.HostEphemerals_Start:
+ Pop ();
+ Represent = true;
+ break;
+ case StateCode.HostEphemeral_Start:
+ Pop ();
+ Represent = true;
+ break;
+ case StateCode.Challenge_Start:
+ Pop ();
+ Represent = true;
+ break;
+ case StateCode.Response_Start:
+ Pop ();
+ Represent = true;
+ break;
+ case StateCode.HostKeyID_Start:
+ Pop ();
+ Represent = true;
+ break;
+ case StateCode.ClientKeyID_Start:
+ Pop ();
+ Represent = true;
+ break;
+
+ default: {
+ throw new UnreachableCode();
+ }
+ }
+ }
+ }
+ }
+ }
+#pragma warning restore IDE0022
+
diff --git a/YASchema/Goedel.Tool.Yashima/YaschemaSchema.gdl b/YASchema/Goedel.Tool.Yashima/YaschemaSchema.gdl
new file mode 100644
index 000000000..bb6236516
--- /dev/null
+++ b/YASchema/Goedel.Tool.Yashima/YaschemaSchema.gdl
@@ -0,0 +1,65 @@
+Copyright "ThresholdSecrets" "2020" MITLicense
+
+Class Goedel.Tool.Yaschema YaschemaStruct
+
+ TopType Namespace
+ Id Token Name
+ Class Token Label
+ Text Text
+
+ TopType Client
+ Entries List Packet
+
+ TopType Host
+ Entries List Packet
+
+ Type Packet
+ Id ID PacketType
+ Options Options
+ Initial Initial Single
+ Respond Respond Single
+ Plaintext Plaintext Single
+ Mezzanine Mezzanine Single
+ Encrypted Encrypted Single
+
+ Type Initial
+ Options Options
+ HostCredential HostCredential Single
+
+ Type Respond
+ To List REF PacketType
+
+ Type Plaintext
+ Entries List Choice
+ ClientEphemerals
+ ClientEphemeral
+ HostKeyID
+ HostCredential
+ HostEphemerals
+ Response
+ Challenge
+ Payload
+
+ Type Mezzanine
+ Entries List Choice
+ ClientCredential
+ ClientKeyID
+ Payload
+ HostEphemeral
+ HostEphemerals
+
+ Type Encrypted
+ Entries List Choice
+ Payload
+
+ Type Payload
+ Type HostCredential
+ Type ClientCredential
+ Type ClientEphemerals
+ Type ClientEphemeral
+ Type HostEphemerals
+ Type HostEphemeral
+ Type Challenge
+ Type Response
+ Type HostKeyID
+ Type ClientKeyID
\ No newline at end of file
diff --git a/YASchema/Goedel.Tool.Yashima/version.version b/YASchema/Goedel.Tool.Yashima/version.version
new file mode 100644
index 000000000..e69de29bb
diff --git a/YASchema/yaschema/AssemblyVersion.cs b/YASchema/yaschema/AssemblyVersion.cs
new file mode 100644
index 000000000..0e0ab4ed1
--- /dev/null
+++ b/YASchema/yaschema/AssemblyVersion.cs
@@ -0,0 +1,6 @@
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyVersionAttribute("3.0.0.538")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("3.0.0.538")]
+
diff --git a/YASchema/yaschema/PHBLogo256.ico b/YASchema/yaschema/PHBLogo256.ico
new file mode 100644
index 000000000..67d73bf31
Binary files /dev/null and b/YASchema/yaschema/PHBLogo256.ico differ
diff --git a/YASchema/yaschema/PacketSchema.yaschema b/YASchema/yaschema/PacketSchema.yaschema
new file mode 100644
index 000000000..b63f20b73
--- /dev/null
+++ b/YASchema/yaschema/PacketSchema.yaschema
@@ -0,0 +1,83 @@
+
+
+
+Client
+
+ ClientInitial
+ Initial
+ Plaintext
+ ClientEphemerals
+ Payload
+
+ ClientExchange
+ Initial
+ HostCredential
+ Plaintext
+ HostKeyID
+ ClientEphemeral
+ Mezzanine
+ ClientCredential
+ Payload
+
+ ClientComplete
+ Respond
+ HostExchange
+ Mezzanine
+ ClientKeyID
+ ClientCredential
+ Encrypted
+ Payload
+
+ ClientCompleteDeferred
+ Respond
+ HostChallenge1
+ HostChallenge2
+ Plaintext
+ HostKeyID
+ ClientEphemeral
+ Response
+ Mezzanine
+ ClientKeyID
+ ClientCredential
+ Encrypted
+ Payload
+
+
+
+Host
+ HostExchange
+ Respond
+ ClientInitial
+ Plaintext
+ HostKeyID
+ HostCredential
+ HostEphemerals
+ Mezzanine
+ Payload
+
+ HostChallenge1
+ Respond
+ ClientInitial
+ Plaintext
+ HostEphemerals
+ HostCredential
+ Challenge
+ Payload
+
+ HostChallenge2
+ Respond
+ ClientExchange
+ Plaintext
+ HostEphemerals
+ Challenge
+ Payload
+
+ HostComplete
+ Respond
+ ClientExchange
+ Mezzanine
+ ClientKeyID
+ HostEphemeral
+ Encrypted
+ Payload
+
diff --git a/YASchema/yaschema/Properties/launchSettings.json b/YASchema/yaschema/Properties/launchSettings.json
new file mode 100644
index 000000000..dd3ae8f34
--- /dev/null
+++ b/YASchema/yaschema/Properties/launchSettings.json
@@ -0,0 +1,9 @@
+{
+ "profiles": {
+ "constant": {
+ "commandName": "Project",
+ "commandLineArgs": "..\\..\\..\\mmm\\Libraries\\Goedel.Protocol.Presentation\\PacketSchema.yaschema /cs",
+ "workingDirectory": "C:\\Users\\hallam\\Work\\mmm\\Libraries\\Goedel.Protocol.Presentation"
+ }
+ }
+}
\ No newline at end of file
diff --git a/YASchema/yaschema/VS.Make b/YASchema/yaschema/VS.Make
new file mode 100644
index 000000000..e1091302b
--- /dev/null
+++ b/YASchema/yaschema/VS.Make
@@ -0,0 +1,46 @@
+
+# Supplemental Makefile for Visual Studios Projects
+#
+# Visual Studio runs tools for most projects but not for shared projects.
+#
+# Prebuild items supported:
+# [None currently]
+#
+# PostBuild items supported:
+# * Copy library to locations on disk
+# * Build ilMerge executables
+# * Postprocess VSIX projects
+# * Copy executables
+
+
+.PHONY : all always clean install publish prebuild prebuildRecurse postbuild postbuildRecurse
+
+MSBuildThisFileDirectory =
+
+LinkFiles = \
+ Goedel.Tool.Core.dll\
+ Goedel.Tool.Yaschema.dll
+
+ToolTargets = \
+ Yaschema.cs
+Yaschema.cs : Yaschema.command
+ commandparse Yaschema.command /cs Yaschema.cs
+
+
+
+prebuildRecurse :
+
+
+postbuildRecurse :
+
+# Non shared project, nothing to do
+prebuild : prebuildRecurse $(ToolTargets)
+ version version.version AssemblyVersion.cs
+
+
+postbuild : postbuildRecurse
+
+
+postbuildwindows :
+ powershell publishtarget yaschema.exe $(LinkFiles)
+
diff --git a/YASchema/yaschema/Yaschema.command b/YASchema/yaschema/Yaschema.command
new file mode 100644
index 000000000..b9168fc77
--- /dev/null
+++ b/YASchema/yaschema/Yaschema.command
@@ -0,0 +1,24 @@
+Class Goedel.Shell.Yaschema YaschemaShell
+ Brief "Yaschema compiler"
+
+ Type NewFile "file"
+ Type ExistingFile "file"
+ Type Flag "flag"
+
+ About "about"
+
+ Command Yaschema "yaschema"
+ DefaultCommand
+ Lazy Lazy "lazy"
+ Brief "Only generate code if source or generator have changed"
+
+
+ Parser Goedel.Tool.Yaschema YaschemaStruct "yaschema"
+
+ Script Goedel.Tool.Yaschema Generate GenerateCS "cs"
+ Brief "Generate code in C#"
+ Default "cs"
+
+ Script Goedel.Tool.Yaschema Generate GenerateMD "md"
+ Brief "Generate Markdown documentation"
+ Default "md"
\ No newline at end of file
diff --git a/YASchema/yaschema/Yaschema.cs b/YASchema/yaschema/Yaschema.cs
new file mode 100644
index 000000000..6ad9376aa
--- /dev/null
+++ b/YASchema/yaschema/Yaschema.cs
@@ -0,0 +1,309 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using Goedel.Command;
+using Goedel.Registry;
+using Goedel.Utilities;
+#pragma warning disable IDE1006
+#pragma warning disable CS1591
+
+namespace Goedel.Shell.Yaschema {
+
+
+
+ public partial class CommandLineInterpreter : CommandLineInterpreterBase {
+
+
+
+
+ /// The command entries
+ public static SortedDictionary Entries;
+ /// The default command.
+ public static DescribeCommandEntry DefaultCommand;
+ /// Description of the comman
+ public static string Description = "";
+
+ static char UnixFlag = '-';
+ static char WindowsFlag = '/';
+
+ ///
+ /// Describe the application invoked by the command.
+ ///
+ /// The command description.
+ /// The set of arguments.
+ /// The first unparsed argument.
+ public static void About (DispatchShell Dispatch, string[] args, int index) =>
+ FileTools.About();
+
+
+ public static DescribeCommandEntry DescribeAbout = new DescribeCommandEntry() {
+ Identifier = "about",
+ HandleDelegate = About,
+ Entries = new List() { }
+ };
+
+
+ static bool IsFlag(char c) =>
+ (c == UnixFlag) | (c == WindowsFlag) ;
+
+
+
+
+
+ static CommandLineInterpreter () {
+ System.OperatingSystem OperatingSystem = System.Environment.OSVersion;
+
+ if (OperatingSystem.Platform == PlatformID.Unix |
+ OperatingSystem.Platform == PlatformID.MacOSX) {
+ FlagIndicator = UnixFlag;
+ }
+ else {
+ FlagIndicator = WindowsFlag;
+ }
+
+ DefaultCommand = _Yaschema._DescribeCommand;
+ Description = "Yaschema compiler";
+
+ Entries = new SortedDictionary () {
+ {"yaschema", _Yaschema._DescribeCommand },
+ {"about", DescribeAbout }
+ }; // End Entries
+
+
+
+ }
+
+ static void Main(string[] args) {
+ var CLI = new CommandLineInterpreter ();
+ CLI.MainMethod (args);
+ }
+
+ public void MainMethod(string[] Args) {
+ YaschemaShell Dispatch = new YaschemaShell ();
+
+ try {
+ MainMethod (Dispatch, Args);
+ }
+ catch (Goedel.Command.ParserException) {
+ Brief(Description, DefaultCommand, Entries);
+ }
+ catch (System.Exception Exception) {
+ Console.WriteLine("Application: {0}", Exception.Message);
+ }
+ }
+
+
+ public void MainMethod(YaschemaShell Dispatch, string[] Args) =>
+ Dispatcher (Entries, DefaultCommand, Dispatch, Args, 0);
+
+
+
+
+ public static void Handle_Yaschema (
+ DispatchShell DispatchIn, string[] Args, int Index) {
+ YaschemaShell Dispatch = DispatchIn as YaschemaShell;
+ Yaschema Options = new Yaschema ();
+ ProcessOptions (Args, Index, Options);
+ Dispatch._PreProcess (Options);
+ Dispatch.Yaschema (Options);
+ }
+
+
+ } // class Main
+
+
+ // The stub class for carrying optional parameters for each command type
+ // As with the main class each consists of an abstract main class
+ // with partial virtual that can be extended as required.
+
+ // All subclasses inherit from the abstract classes Goedel.Regisrty.Dispatch
+ // and Goedel.Command.Type
+
+
+ public class _Yaschema : Goedel.Command.Dispatch {
+
+ public override Goedel.Command.Type[] _Data {get; set;} = new Goedel.Command.Type [] {
+ new Flag (),
+ new ExistingFile (),
+ new NewFile (),
+ new NewFile () } ;
+
+
+
+
+
+ /// Field accessor for parameter [lazy]
+ public virtual Flag Lazy {
+ get => _Data[0] as Flag;
+ set => _Data[0] = value;
+ }
+
+ public virtual string _Lazy {
+ set => _Data[0].Parameter (value);
+ }
+ /// Field accessor for parameter []
+ public virtual ExistingFile YaschemaStruct {
+ get => _Data[1] as ExistingFile;
+ set => _Data[1] = value;
+ }
+
+ public virtual string _YaschemaStruct {
+ set => _Data[1].Parameter (value);
+ }
+ /// Field accessor for option [cs]
+ public virtual NewFile GenerateCS {
+ get => _Data[2] as NewFile;
+ set => _Data[2] = value;
+ }
+
+ public virtual string _GenerateCS {
+ set => _Data[2].Parameter (value);
+ }
+ /// Field accessor for option [md]
+ public virtual NewFile GenerateMD {
+ get => _Data[3] as NewFile;
+ set => _Data[3] = value;
+ }
+
+ public virtual string _GenerateMD {
+ set => _Data[3].Parameter (value);
+ }
+ public override DescribeCommandEntry DescribeCommand {get; set;} = _DescribeCommand;
+
+ public static DescribeCommandEntry _DescribeCommand = new DescribeCommandEntry () {
+ Identifier = "yaschema",
+ Brief = "",
+ HandleDelegate = CommandLineInterpreter.Handle_Yaschema,
+ Lazy = true,
+ IsDefault = true,
+ Entries = new List () {
+ new DescribeEntryParameter () {
+ Identifier = "YaschemaStruct",
+ Default = null, // null if null
+ Brief = "",
+ Index = 1,
+ Key = ""
+ },
+ new DescribeEntryOption () {
+ Identifier = "GenerateCS",
+ Default = "cs", // null if null
+ Brief = "Generate code in C#",
+ Index = 2,
+ Key = "cs"
+ },
+ new DescribeEntryOption () {
+ Identifier = "GenerateMD",
+ Default = "md", // null if null
+ Brief = "Generate Markdown documentation",
+ Index = 3,
+ Key = "md"
+ }
+ }
+ };
+
+ }
+
+ public partial class Yaschema : _Yaschema {
+ } // class Yaschema
+
+
+ public partial class Flag : Goedel.Command._Flag {
+ public Flag(string value=null) : base (value) {}
+ } // Flag
+
+ public partial class File : Goedel.Command._File {
+ public File(string value=null) : base (value) {}
+ } // File
+
+ public partial class NewFile : Goedel.Command._NewFile {
+ public NewFile(string value=null) : base (value) {}
+ } // NewFile
+
+ public partial class ExistingFile : Goedel.Command._ExistingFile {
+ public ExistingFile(string value=null) : base (value) {}
+ } // ExistingFile
+
+ public partial class Integer : Goedel.Command._Integer {
+ public Integer(string value=null) : base (value) {}
+ } // Integer
+
+ public partial class String : Goedel.Command._String {
+ public String(string value=null) : base (value) {}
+ } // String
+
+
+
+ public partial class Enumeration : _Enumeration {
+ public Enumeration(DescribeEntryEnumerate description) : base(description){
+ }
+ } // _Enumeration
+
+ // The stub class just contains routines that echo their arguments and
+ // write 'not yet implemented'
+
+ // Eventually there will be a compiler option to suppress the debugging
+ // to eliminate the redundant code
+ public class _YaschemaShell : global::Goedel.Command.DispatchShell {
+
+ public virtual void Yaschema ( Yaschema Options) {
+ string inputfile = null;
+
+ inputfile = Options.YaschemaStruct.Text;
+
+ Goedel.Tool.Yaschema.YaschemaStruct Parse = new Goedel.Tool.Yaschema.YaschemaStruct() {
+ };
+
+
+ using (Stream infile =
+ new FileStream(inputfile, FileMode.Open, FileAccess.Read)) {
+
+ Lexer Schema = new Lexer(inputfile);
+
+ Schema.Process(infile, Parse);
+ }
+
+
+ // Script output of type GenerateCS cs
+ if (Options.GenerateCS.Text != null) {
+ string outputfile = Options.GenerateCS.Text; // Automatically defaults
+ if (Options.Lazy.Value & FileTools.UpToDate (inputfile, outputfile)) {
+ return;
+ }
+ using (Stream outputStream =
+ new FileStream(outputfile, FileMode.Create, FileAccess.Write)) {
+ using (TextWriter OutputWriter = new StreamWriter(outputStream, Encoding.UTF8)) {
+
+ Goedel.Tool.Yaschema.Generate Script = new Goedel.Tool.Yaschema.Generate () { _Output= OutputWriter };
+
+ Script.GenerateCS (Parse);
+ }
+ }
+ }
+ // Script output of type GenerateMD md
+ if (Options.GenerateMD.Text != null) {
+ string outputfile = Options.GenerateMD.Text; // Automatically defaults
+ if (Options.Lazy.Value & FileTools.UpToDate (inputfile, outputfile)) {
+ return;
+ }
+ using (Stream outputStream =
+ new FileStream(outputfile, FileMode.Create, FileAccess.Write)) {
+ using (TextWriter OutputWriter = new StreamWriter(outputStream, Encoding.UTF8)) {
+
+ Goedel.Tool.Yaschema.Generate Script = new Goedel.Tool.Yaschema.Generate () { _Output= OutputWriter };
+
+ Script.GenerateMD (Parse);
+ }
+ }
+ }
+ }
+
+
+ } // class _YaschemaShell
+
+ public partial class YaschemaShell : _YaschemaShell {
+ } // class YaschemaShell
+
+ } // namespace YaschemaShell
+
+
diff --git a/YASchema/yaschema/version.version b/YASchema/yaschema/version.version
new file mode 100644
index 000000000..3fbf35c01
--- /dev/null
+++ b/YASchema/yaschema/version.version
@@ -0,0 +1,2 @@
+3.0.0.538
+3.0.0.538
diff --git a/YASchema/yaschema/yaschema.csproj b/YASchema/yaschema/yaschema.csproj
new file mode 100644
index 000000000..26b9bcdb7
--- /dev/null
+++ b/YASchema/yaschema/yaschema.csproj
@@ -0,0 +1,47 @@
+
+
+
+ net5.0
+ PHBLogo256.ico
+ Exe
+ Phill Hallam-Baker
+ build$([System.DateTime]::UtcNow.ToString("yyyyMMddHHmmss"))
+ Constant Manager
+ Generates RFC format documentation from OOXML or Markdown source.
+ © 2015-2019
+ Constant Manager
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Yaschema.command
+ True
+ True
+
+
+
+
+
+ Yaschema.cs
+ CommandCS
+
+
+
+
]