Graphics overhaul & minor change to help puzzle

This commit is contained in:
Tim Young 2016-02-03 13:04:18 -06:00
parent 536cd31bb8
commit f50634f889
9 changed files with 386 additions and 454 deletions

View File

@ -25,7 +25,7 @@
<InstallUrl>http://tyounglightsys.ddns.info/EduNetworkBuilder/v1/</InstallUrl> <InstallUrl>http://tyounglightsys.ddns.info/EduNetworkBuilder/v1/</InstallUrl>
<CreateWebPageOnPublish>true</CreateWebPageOnPublish> <CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>publish.htm</WebPage> <WebPage>publish.htm</WebPage>
<ApplicationRevision>25</ApplicationRevision> <ApplicationRevision>26</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion> <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust> <UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted> <PublishWizardCompleted>true</PublishWizardCompleted>
@ -54,10 +54,10 @@
<ApplicationIcon>Resources\NBIco.ico</ApplicationIcon> <ApplicationIcon>Resources\NBIco.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<ManifestCertificateThumbprint>A4F0B3ABDDD27B9830477C7B93C90C41A5706505</ManifestCertificateThumbprint> <ManifestCertificateThumbprint>FC016CC0B0D70B0A6ABDABD9CDB267055A8FCCA3</ManifestCertificateThumbprint>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<ManifestKeyFile>EduNetworkBuilder_TemporaryKey.pfx</ManifestKeyFile> <ManifestKeyFile>EduNetworkBuilder_1_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<GenerateManifests>true</GenerateManifests> <GenerateManifests>true</GenerateManifests>
@ -193,6 +193,7 @@
<EmbeddedResource Include="RTFWindow.resx"> <EmbeddedResource Include="RTFWindow.resx">
<DependentUpon>RTFWindow.cs</DependentUpon> <DependentUpon>RTFWindow.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<None Include="EduNetworkBuilder_1_TemporaryKey.pfx" />
<None Include="EduNetworkBuilder_TemporaryKey.pfx" /> <None Include="EduNetworkBuilder_TemporaryKey.pfx" />
<None Include="Properties\Settings.settings"> <None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator> <Generator>SettingsSingleFileGenerator</Generator>

View File

@ -304,6 +304,13 @@ namespace EduNetworkBuilder
if (myWin.GameRandomGen == null) return null; if (myWin.GameRandomGen == null) return null;
return myWin.myNetwork; return myWin.myNetwork;
} }
public static void MarkToUpdate()
{
BuilderWindow myWin = (BuilderWindow)Application.OpenForms["BuilderWindow"];
if (myWin == null) return;
myWin.NeedsUpdate = true;
}
public static int nextPacketID() public static int nextPacketID()
{ {
BuilderWindow myWin = (BuilderWindow)Application.OpenForms["BuilderWindow"]; BuilderWindow myWin = (BuilderWindow)Application.OpenForms["BuilderWindow"];
@ -500,6 +507,13 @@ namespace EduNetworkBuilder
myWin.SetProgress(HowFar, total); myWin.SetProgress(HowFar, total);
} }
public static void UpdateMessages()
{
BuilderWindow myWin = (BuilderWindow)Application.OpenForms["BuilderWindow"];
if (myWin == null) return;
myWin.UpdateMessages();
}
public static int GetUniqueIdentifier() public static int GetUniqueIdentifier()
{ {
Network myNet = GetNetwork(); Network myNet = GetNetwork();

View File

@ -299,7 +299,19 @@ namespace EduNetworkBuilder
if (ctl == null) return false; if (ctl == null) return false;
ctl.BackColor = WrongColor; ctl.BackColor = WrongColor;
} }
return false; return true;
}
if (TheTest == NetTestType.HelpRequest && dHost == "?Button" && ChangeColor)
{
BuilderWindow myWin = NB.GetBuilderWin();
if (myWin != null)
{
Control ctl = myWin.GetControlNamed("btnHelp");
if (ctl == null) return false;
if(ctl.BackColor != WrongColor)
ctl.BackColor = WrongColor;
}
return true;
} }
Network theNet = NB.GetNetwork(); Network theNet = NB.GetNetwork();
NetworkDevice Source = theNet.GetDeviceFromName(sHost); NetworkDevice Source = theNet.GetDeviceFromName(sHost);
@ -319,6 +331,7 @@ namespace EduNetworkBuilder
//We just solved it for the first time //We just solved it for the first time
TaskWasDone = true; TaskWasDone = true;
NB.PlaySound(NBSoundType.success); NB.PlaySound(NBSoundType.success);
NB.MarkToUpdate();
} }
return false; //No need to color anything return false; //No need to color anything
} }
@ -332,6 +345,7 @@ namespace EduNetworkBuilder
|| TheTest == NetTestType.SuccessfullyPingsAgain) || TheTest == NetTestType.SuccessfullyPingsAgain)
PacketNumber = PacketID; //Track the packetID of the first packet to complete the task PacketNumber = PacketID; //Track the packetID of the first packet to complete the task
NB.PlaySound(NBSoundType.success); NB.PlaySound(NBSoundType.success);
NB.MarkToUpdate();
} }
TaskWasDone = true; TaskWasDone = true;
} }

View File

@ -28,6 +28,7 @@ namespace EduNetworkBuilder
List<NetworkComponent> NetComponents = new List<NetworkComponent>(); List<NetworkComponent> NetComponents = new List<NetworkComponent>();
//should have background image //should have background image
Image TheNetImage = new Bitmap(1024, 1024); Image TheNetImage = new Bitmap(1024, 1024);
Image TheNetImageBackground = new Bitmap(1024,1024);
public int itemsize = 100; //The size of network components public int itemsize = 100; //The size of network components
PictureBox myPBox=null; PictureBox myPBox=null;
private int UniqueIdentifier = 100; //This gets used for all sorts of things. is auto-incremented every time someone asks for one private int UniqueIdentifier = 100; //This gets used for all sorts of things. is auto-incremented every time someone asks for one
@ -46,6 +47,9 @@ namespace EduNetworkBuilder
private bool AlreadyChosenTimeout = false; private bool AlreadyChosenTimeout = false;
private int DefaultTimeout = 10; private int DefaultTimeout = 10;
private int NumberOfSecondsForTimeout = 10; private int NumberOfSecondsForTimeout = 10;
private List<Rectangle> PacketRectangles = new List<Rectangle>();
private bool previously_had_packets = false; //used on "tick" to determine if we are starting from scratch
public Network(string Name) public Network(string Name)
{ {
@ -291,6 +295,10 @@ namespace EduNetworkBuilder
public void RegisterDisplayArea(PictureBox What) public void RegisterDisplayArea(PictureBox What)
{ {
myPBox = What; myPBox = What;
myPBox.BackgroundImage = TheNetImageBackground;
myPBox.BackgroundImageLayout = ImageLayout.Stretch;
Print();
myPBox.Invalidate();
} }
public Point clickedPos(Point pixelClickedOn) public Point clickedPos(Point pixelClickedOn)
@ -502,8 +510,10 @@ namespace EduNetworkBuilder
foreach (NetTest nt in NetTests) foreach (NetTest nt in NetTests)
{ {
if (nt.ColorItemsIfNeeded(HintsToDisplay != NetTestVerbosity.none)) //only change the color if we are not "none" if (nt.ColorItemsIfNeeded(HintsToDisplay != NetTestVerbosity.none)) //only change the color if we are not "none"
{
PuzzleCount++; PuzzleCount++;
} }
}
if (report_as_done && PuzzleCount == 0 && PreviouslyUnsolved) if (report_as_done && PuzzleCount == 0 && PreviouslyUnsolved)
{ {
//The puzzle was just solved //The puzzle was just solved
@ -511,16 +521,19 @@ namespace EduNetworkBuilder
} }
} }
public void Print(PaintEventArgs e) public void UpdateImage()
{ {
//we have the whole thing to print, and the display image already done
TestForCompletion(false); TestForCompletion(false);
if(isDirty() || _isDirty) //we have the whole thing to print, and the display image already done
if (isDirty() || _isDirty)
{ {
TheNetImage= new Bitmap(TheNetImage.Width, TheNetImage.Height); if(TheNetImage == null)
TheNetImage = new Bitmap(TheNetImage.Width, TheNetImage.Height);
SolidBrush theBrush = new SolidBrush(SystemColors.Control);
Graphics.FromImage(TheNetImage).FillRectangle(theBrush, new Rectangle(0,0, TheNetImage.Width, TheNetImage.Height));
//re-generate the image //re-generate the image
//Do all the links first //Do all the links first
foreach(NetworkComponent NC in NetComponents) foreach (NetworkComponent NC in NetComponents)
{ {
if (NC.GetType().ToString() == "EduNetworkBuilder.NetworkLink") if (NC.GetType().ToString() == "EduNetworkBuilder.NetworkLink")
NC.Print(TheNetImage, false); NC.Print(TheNetImage, false);
@ -531,21 +544,43 @@ namespace EduNetworkBuilder
if (NC.GetType().ToString() == "EduNetworkBuilder.NetworkDevice") if (NC.GetType().ToString() == "EduNetworkBuilder.NetworkDevice")
NC.Print(TheNetImage, ShowLabels); NC.Print(TheNetImage, ShowLabels);
} }
//Write the whole thing to the background image.
Graphics.FromImage(TheNetImageBackground).DrawImage(TheNetImage, 0, 0);
} }
if (myPackets.Count > 0) myPBox.Invalidate();//redraw it
_isDirty = false;
}
public void EraseOldPackets()
{ {
Image tempNetImage = new Bitmap(TheNetImage); //Make sure we draw a fresh image.
foreach(Packet pkt in myPackets) Graphics.FromImage(TheNetImageBackground).DrawImage(TheNetImage, 0, 0);
foreach(Rectangle rec in PacketRectangles)
{ {
pkt.Print(tempNetImage); //Print all the packets over the network image Invalidate(rec);
} }
e.Graphics.DrawImage(tempNetImage, 0, 0, myPBox.Width, myPBox.Height); PacketRectangles.Clear();
tempNetImage.Dispose();
} }
else
public void DrawPackets()
{ {
e.Graphics.DrawImage(TheNetImage, 0, 0, myPBox.Width, myPBox.Height); foreach (Packet pkt in myPackets)
{
pkt.Print(TheNetImageBackground); //Print all the packets over the network image
Invalidate(pkt.PacketRectangle());
PacketRectangles.Add(pkt.PacketRectangle());
} }
//myPBox.Refresh();
}
public void Print()
{
//we have the whole thing to print, and the display image already done
InvalidateEverything();
UpdateImage();
EraseOldPackets();
DrawPackets();
_isDirty = false; _isDirty = false;
} }
@ -555,6 +590,28 @@ namespace EduNetworkBuilder
{ {
nc.IsDirty = true; nc.IsDirty = true;
} }
_isDirty = true;
UpdateImage();
}
public void Invalidate(Rectangle area)
{
//Figure out the area we are looking at
if (myPBox.BackgroundImageLayout == ImageLayout.Stretch)
{
double width_ratio = myPBox.ClientRectangle.Width / TheNetImage.Width;
double height_ratio = myPBox.ClientRectangle.Height / TheNetImage.Height;
int x, y, width, height;
x = (int)(area.X * width_ratio);
y = (int)(area.Y * height_ratio);
width = (int)(area.Width * width_ratio);
height = (int)(area.Height * height_ratio);
Rectangle newRec = new Rectangle(x, y, width, height);
//Now we invalidate the adjusted rectangle
myPBox.Invalidate(newRec);
}
} }
public List<string> arp(UInt32 IP) public List<string> arp(UInt32 IP)
@ -757,8 +814,16 @@ namespace EduNetworkBuilder
OldVal = nt.TaskWasDone; OldVal = nt.TaskWasDone;
nt.SetDone(); nt.SetDone();
if (nt.TaskWasDone != OldVal) if (nt.TaskWasDone != OldVal)
{
BuilderWindow myWin = NB.GetBuilderWin();
if (myWin == null) return true;
Control ctl = myWin.GetControlNamed("btnHelp");
if (ctl == null) return false;
ctl.BackColor = Control.DefaultBackColor;
return true; return true;
} }
}
} }
return false; return false;
@ -884,44 +949,59 @@ namespace EduNetworkBuilder
} }
public void ProcessPackets() public void ProcessPackets()
{
//This functionality is now done in 'Tick'
return; //exit early. Rest is done in tick
}
public void Tick()
{
EraseOldPackets();
//if (myPackets.Count > 50)
//Console.WriteLine("Packets: " + myPackets.Count.ToString());
if (myPackets.Count > 0)
{
if (!previously_had_packets)
{ {
AlreadyChosenTimeout = false; //we do this at the beginning of processing AlreadyChosenTimeout = false; //we do this at the beginning of processing
NumberOfSecondsForTimeout = DefaultTimeout; NumberOfSecondsForTimeout = DefaultTimeout;
NetworkStartTime = DateTime.Now; NetworkStartTime = DateTime.Now;
while(myPackets.Count > 0) }
{
ProcessPacketsOnce(); ProcessPacketsOnce();
if (!ProcessingShouldContinue()) if(!ProcessingShouldContinue())
{ {
//We it has all been taken care of
//we need to break out for some reason }
myPBox.Refresh(); DrawPackets();
break; //myPBox.Refresh();
previously_had_packets = true;
} }
else else
{ {
myPBox.Refresh(); if(previously_had_packets)
NB.Delay(5); {
}
}
//remove any IP connection tracking info //remove any IP connection tracking info
NetworkDevice ND; NetworkDevice ND;
foreach(NetworkComponent nc in NetComponents) foreach (NetworkComponent nc in NetComponents)
{ {
if(NB.GetComponentType(nc) == GeneralComponentType.device) if (NB.GetComponentType(nc) == GeneralComponentType.device)
{ {
ND = (NetworkDevice)nc; ND = (NetworkDevice)nc;
ND.ClearIPConnectionInfo(); ND.ClearIPConnectionInfo();
} }
} }
DebugPausePoint WhatIsSet = NB.GetDebugPauseSetting(); DebugPausePoint WhatIsSet = NB.GetDebugPauseSetting();
if(WhatIsSet != 0) if (WhatIsSet != 0)
{ {
Console.WriteLine(NB.Translate("N_ProssPackDone")); Console.WriteLine(NB.Translate("N_ProssPackDone"));
} }
TestForCompletion(true); //Now, report on the progress if we solved something in the middle of the packets going out TestForCompletion(true); //Now, report on the progress if we solved something in the middle of the packets going out
AlreadyChosenTimeout = false; AlreadyChosenTimeout = false;
NB.SetProgress(0, NumberOfSecondsForTimeout); NB.SetProgress(0, NumberOfSecondsForTimeout);
NB.UpdateMessages();
}
previously_had_packets = false;
}
} }
public void AddMessage(PacketMessage toAdd) public void AddMessage(PacketMessage toAdd)

View File

@ -432,7 +432,6 @@
this.pbNetworkView.Size = new System.Drawing.Size(366, 300); this.pbNetworkView.Size = new System.Drawing.Size(366, 300);
this.pbNetworkView.TabIndex = 1; this.pbNetworkView.TabIndex = 1;
this.pbNetworkView.TabStop = false; this.pbNetworkView.TabStop = false;
this.pbNetworkView.Paint += new System.Windows.Forms.PaintEventHandler(this.pbNetworkView_Paint);
this.pbNetworkView.DoubleClick += new System.EventHandler(this.pbNetworkView_DoubleClick); this.pbNetworkView.DoubleClick += new System.EventHandler(this.pbNetworkView_DoubleClick);
this.pbNetworkView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbNetworkView_MouseDown); this.pbNetworkView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbNetworkView_MouseDown);
this.pbNetworkView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbNetworkView_MouseMove); this.pbNetworkView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbNetworkView_MouseMove);

View File

@ -37,6 +37,8 @@ namespace EduNetworkBuilder
private CultureInfo LanguageCulture = null; private CultureInfo LanguageCulture = null;
public string ChosenLanguage = "en"; //The language to try to load public string ChosenLanguage = "en"; //The language to try to load
private List<Control> HelpTopicButtons = new List<Control>(); private List<Control> HelpTopicButtons = new List<Control>();
private System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();
public bool NeedsUpdate = false; //Do we do an update next tick
public BuilderWindow() public BuilderWindow()
{ {
@ -72,9 +74,23 @@ namespace EduNetworkBuilder
this.KeyPreview = true; this.KeyPreview = true;
this.KeyUp += GenericKeyDown; this.KeyUp += GenericKeyDown;
myTimer.Interval = 10;
myTimer.Tick += Tick;
myTimer.Start();
LoadPuzzleInfo(); LoadPuzzleInfo();
} }
private void Tick(object sender, EventArgs e)
{
if (NeedsUpdate)
{
UpdateVisuals();
NeedsUpdate = false;
}
myNetwork.Tick();
}
private void LanguagifyComponents() private void LanguagifyComponents()
{ {
msMainMenuStrip.Text = NB.Translate("NB_msMainMenuStrip"); msMainMenuStrip.Text = NB.Translate("NB_msMainMenuStrip");
@ -249,7 +265,7 @@ namespace EduNetworkBuilder
bool didsomething = myNetwork.NoteActionDone(NetTestType.HelpRequest, MouseHoverOver.hostname, myNetwork.HintsToDisplay.ToString()); bool didsomething = myNetwork.NoteActionDone(NetTestType.HelpRequest, MouseHoverOver.hostname, myNetwork.HintsToDisplay.ToString());
if (didsomething) if (didsomething)
{ {
pbNetworkView.Invalidate(); UpdateVisuals();
myNetwork.TestForCompletion(true); myNetwork.TestForCompletion(true);
} }
} }
@ -319,7 +335,7 @@ namespace EduNetworkBuilder
} }
} }
private void UpdateMessages() public void UpdateMessages()
{ {
//redo this later //redo this later
lbMessages.Items.Clear(); lbMessages.Items.Clear();
@ -364,6 +380,7 @@ namespace EduNetworkBuilder
{ {
UpdateMenu(); UpdateMenu();
UpdateMessages(); UpdateMessages();
UpdateVisuals();
processing = true; processing = true;
Text = NB.Translate("NB_UpdteFrmName"); Text = NB.Translate("NB_UpdteFrmName");
if (myNetwork.NetTitle.GetText() != "") if (myNetwork.NetTitle.GetText() != "")
@ -648,7 +665,7 @@ namespace EduNetworkBuilder
} }
myNetwork.TestForCompletion(true); myNetwork.TestForCompletion(true);
pbNetworkView.Update(); pbNetworkView.Update();
pbNetworkView.Invalidate(); UpdateVisuals();
} }
@ -658,7 +675,7 @@ namespace EduNetworkBuilder
myNetwork.ProcessPackets(); myNetwork.ProcessPackets();
UpdateMessages(); UpdateMessages();
pbNetworkView.Update(); pbNetworkView.Update();
pbNetworkView.Invalidate(); UpdateVisuals();
myNetwork.TestForCompletion(true); myNetwork.TestForCompletion(true);
} }
@ -675,8 +692,7 @@ namespace EduNetworkBuilder
} }
UpdateLinks(); UpdateLinks();
myNetwork.TestForCompletion(true); myNetwork.TestForCompletion(true);
pbNetworkView.Update(); UpdateVisuals();
pbNetworkView.Invalidate();
} }
private void pbNetworkView_Delete_Click(object sender, EventArgs e) private void pbNetworkView_Delete_Click(object sender, EventArgs e)
@ -696,8 +712,7 @@ namespace EduNetworkBuilder
} }
UpdateLinks(); UpdateLinks();
myNetwork.TestForCompletion(true); myNetwork.TestForCompletion(true);
pbNetworkView.Update(); UpdateVisuals();
pbNetworkView.Invalidate();
} }
private void pbNetworkView_Ping_Click(object sender, EventArgs e) private void pbNetworkView_Ping_Click(object sender, EventArgs e)
@ -793,7 +808,7 @@ namespace EduNetworkBuilder
LinkEditor myEditor = new LinkEditor(ItemClickedOn, ReleasedOn); LinkEditor myEditor = new LinkEditor(ItemClickedOn, ReleasedOn);
myEditor.ShowDialog(); myEditor.ShowDialog();
UpdateLinks(); UpdateLinks();
pbNetworkView.Invalidate(); //In case any changes have been made UpdateVisuals(); //In case any changes have been made
} }
else if (ItemClickedOn == null) else if (ItemClickedOn == null)
{ {
@ -860,6 +875,7 @@ namespace EduNetworkBuilder
{ {
ItemClickedOn = (NetworkDevice)NC; ItemClickedOn = (NetworkDevice)NC;
} }
UpdateVisuals();
} }
else //Drag the item else //Drag the item
{ {
@ -867,17 +883,17 @@ namespace EduNetworkBuilder
{ {
ItemClickedOn.ChangeLocation(CenteredLocation); ItemClickedOn.ChangeLocation(CenteredLocation);
UpdateLinks(); UpdateLinks();
pbNetworkView.Invalidate(); UpdateVisuals();
} }
} }
} }
LastClick = DateTime.Now; LastClick = DateTime.Now;
} }
private void pbNetworkView_Paint(object sender, PaintEventArgs e) private void UpdateVisuals()
{ {
myNetwork.Print();
myNetwork.Print(e); pbNetworkView.Invalidate();
} }
private void pbNetworkView_MouseDown(object sender, MouseEventArgs e) private void pbNetworkView_MouseDown(object sender, MouseEventArgs e)
@ -917,7 +933,7 @@ namespace EduNetworkBuilder
myWin.Close(); myWin.Close();
} }
pbNetworkView.Invalidate(); myNetwork.Print();
UpdateMessages(); UpdateMessages();
btnReset(); btnReset();
myNetwork.HintsToDisplay = NetTestVerbosity.none; myNetwork.HintsToDisplay = NetTestVerbosity.none;
@ -1015,7 +1031,7 @@ namespace EduNetworkBuilder
private void BuilderWindow_ResizeEnd(object sender, EventArgs e) private void BuilderWindow_ResizeEnd(object sender, EventArgs e)
{ {
pbNetworkView.Invalidate(); UpdateVisuals();
} }
private void aboutToolStripMenuItem_Click(object sender, EventArgs e) private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
@ -1179,7 +1195,7 @@ namespace EduNetworkBuilder
OptionsWindow tWindow = new OptionsWindow(myNetwork); OptionsWindow tWindow = new OptionsWindow(myNetwork);
tWindow.ShowDialog(); tWindow.ShowDialog();
myNetwork.UpdateDeviceSizes(); myNetwork.UpdateDeviceSizes();
pbNetworkView.Invalidate();
UpdateForm(); UpdateForm();
} }
@ -1227,7 +1243,7 @@ namespace EduNetworkBuilder
bool didsomething = myNetwork.NoteActionDone(NetTestType.HelpRequest, "", "?Button"); bool didsomething = myNetwork.NoteActionDone(NetTestType.HelpRequest, "", "?Button");
if (didsomething) if (didsomething)
{ {
pbNetworkView.Invalidate(); UpdateForm();
myNetwork.TestForCompletion(true); myNetwork.TestForCompletion(true);
} }
} }
@ -1247,28 +1263,28 @@ namespace EduNetworkBuilder
{ {
if (processing) return; if (processing) return;
myNetwork.HintsToDisplay = NetTestVerbosity.none; myNetwork.HintsToDisplay = NetTestVerbosity.none;
pbNetworkView.Invalidate(); UpdateForm();
} }
private void rbHelp2_CheckedChanged(object sender, EventArgs e) private void rbHelp2_CheckedChanged(object sender, EventArgs e)
{ {
if (processing) return; if (processing) return;
myNetwork.HintsToDisplay = NetTestVerbosity.basic; myNetwork.HintsToDisplay = NetTestVerbosity.hints;
pbNetworkView.Invalidate(); UpdateForm();
} }
private void rbHelp3_CheckedChanged(object sender, EventArgs e) private void rbHelp3_CheckedChanged(object sender, EventArgs e)
{ {
if (processing) return; if (processing) return;
myNetwork.HintsToDisplay = NetTestVerbosity.hints; myNetwork.HintsToDisplay = NetTestVerbosity.basic;
pbNetworkView.Invalidate(); UpdateForm();
} }
private void rbHelp4_CheckedChanged(object sender, EventArgs e) private void rbHelp4_CheckedChanged(object sender, EventArgs e)
{ {
if (processing) return; if (processing) return;
myNetwork.HintsToDisplay = NetTestVerbosity.full; myNetwork.HintsToDisplay = NetTestVerbosity.full;
pbNetworkView.Invalidate(); UpdateForm();
} }

View File

@ -899,6 +899,8 @@ namespace EduNetworkBuilder
{ {
Brush brush = new SolidBrush(Color.FromArgb(128, BackgroundColor.R, BackgroundColor.G, BackgroundColor.B)); Brush brush = new SolidBrush(Color.FromArgb(128, BackgroundColor.R, BackgroundColor.G, BackgroundColor.B));
Graphics.FromImage(BaseImage).FillRectangle(brush, Location); Graphics.FromImage(BaseImage).FillRectangle(brush, Location);
Network myNet = NB.GetNetwork();
myNet.Invalidate(Location);
} }
Graphics.FromImage(BaseImage).DrawImage(MyImage, MyLocation.X, MyLocation.Y, Size, Size); Graphics.FromImage(BaseImage).DrawImage(MyImage, MyLocation.X, MyLocation.Y, Size, Size);

View File

@ -358,7 +358,7 @@ namespace EduNetworkBuilder
myDirection = nb_direction.to_dst; myDirection = nb_direction.to_dst;
else else
myDirection = nb_direction.to_src; myDirection = nb_direction.to_src;
Console.WriteLine(NB.Translate("P_StartingOnLink") + string.Format(" SMAC: {0} DMAC: {1}",sourceMAC,destMAC)); //Console.WriteLine(NB.Translate("P_StartingOnLink") + string.Format(" SMAC: {0} DMAC: {1}",sourceMAC,destMAC));
AddMessage(DebugLevel.debug, " " + NB.Translate("P_StartingOnLink")); AddMessage(DebugLevel.debug, " " + NB.Translate("P_StartingOnLink"));
} }

View File

@ -1,381 +1,187 @@
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;} {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}}
{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\*\generator Riched20 10.0.10586}{\*\mmathPr\mnaryLim0\mdispDef1\mwrapIndent1440 }\viewkind4\uc1
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;} \pard\nowidctlpar\sa200\sl276\slmult1\b\f0\fs22\lang9 Version 1.0.26\par
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} \b0 * Major graphics overhaul\par
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} - Packets move on timer\par
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} - Graphics drawn "smarter"\par
{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} - Result is that things flow smoother. Loopback2 also works much nicer. \par
{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f430\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f431\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} * Fixed minor issue with "help" puzzle\par
{\f433\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f434\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f437\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f438\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);} * Made help "?" button turn red when it is part of the puzzle\b\par
{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} Version 1.0.25\par
{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} \b0 * Minor changes to help file\par
{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} * Fixed size of labels on IP-Address editor box\par
{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} * Hide gateway label when we do not need it. (ip-address editor)\par
{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} * rename "mixed network" puzzle to be "adding devices" (the puzzle was about adding devices)\par
{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;} * Changed layout of many messages\par
{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;} * Save the level we are working on. Allows us to finish level 5 before level 3 if we want to.\par
{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} * Make network-loop puzzles sit next to each-other\par
{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} * Make it so network-loop2 puzzle asks for second ping after first one finishes \par
{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} * Lots of work towards the French translation\b\par
{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} Version 1.0.24 \par
{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} \b0 * Add sound when ctrl-s is pressed so we know we saved.\par
{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} * Add sound fail when save is canceled (will use it later if ctrl-s fails)\par
{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} * Added some wireless puzzles\par
{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} * Fix issue with WAP not forwarding packets correctly\par
{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} * Clear out old status message if we do something. So we do not say "saved" forever...\par
{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} * Fixed bad gateway on wireless router issue\par
{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} * Fixed wbridge misbehaving. (issue with gateway)\par
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} * Added wireless items to help and context help topics\par
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} * Thanks to Peter Wilson for so much of the translation backbone.\par
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; * Lots of translation string changes. The French translation should be soon in coming.\par
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1 \b Version 1.0.23 09/20/2015\par
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \b0 * Fixed issues with broadcast packets\par
\ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* * Fixed a network loop issue\par
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1 * Fixed issue with multiple interfaces and being able to go out a different interface than we came in on\par
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused * Fixed many small bugs that crept in when fixing other bugs. Now all puzzles seem to play correctly\b\par
Normal Table;}}{\*\rsidtbl \rsid553838\rsid16400754}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator tim.young@lightsys.org} Version 1.0.22 09/01/2015\b0\par
{\creatim\yr2015\mo11\dy25\hr9\min57}{\revtim\yr2015\mo11\dy25\hr9\min58}{\version2}{\edmins1}{\nofpages8}{\nofwords1472}{\nofchars8394}{\nofcharsws9847}{\vern86}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} * Added ssid and keys for wireless links\par
\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect * Wireless will auto-disconnect if link is too long\par
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701 * Wireless will auto-connect if ssid and key match, if link is short enough\par
\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot553838 \nouicompat \fet0{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1 * Packets will drop on wireless links if distance is too great\par
\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5 * wport has no interface (cannot edit IP address)\par
\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang * wireless router works properly - forwards broadcast packets\par
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 * wireless router handles dhcp requests properly (both responds to it but also passes it on)\par
\fs22\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.25 * right-clicking light and microwave no longer has ping, arp, edit, and other context menus\par
\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 * Minor changes to help file * added net-test for DHCP server status (on/off)\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed size of labels on IP-Address editor box * If multiple DHCP servers, client randomly chooses which to keep.\par
\par \hich\af39\dbch\af31505\loch\f39 * Hide gateway label when we do not need it. (ip-address editor) *Add Wireless Puzzle\par
\par \hich\af39\dbch\af31505\loch\f39 * rename "mixed network" puzzle to be "adding devices" (the puzzle was about adding devices) *Fix many wireless device bugs\line\b Version 1.0.21 08/15/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * Changed layout of many messages * Added a microwave and fluorescent light. They corrupt data when packets run close to them.\par
\par \hich\af39\dbch\af31505\loch\f39 * Save the level we are working on. Allows us to finish level 5 before level 3 if we want to. * Added some packet corruption puzzles\par
\par \hich\af39\dbch\af31505\loch\f39 * Make network-loop puzzles sit next to each-other * Fixed window resize-on-load issue where the help window popped up first, then the builder window resized over to hide the help window. \par
\par \hich\af39\dbch\af31505\loch\f39 * Make it so network-loop2 puzzle asks for second ping after first one finis\hich\af39\dbch\af31505\loch\f39 hes \b Version 1.0.20 08/12/2015\b0\par
\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid553838 \hich\af39\dbch\af31505\loch\f39 * Lots of work towards the French translation}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid553838 * wports do not display on tooltips or when printing the device info\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.24 * Added ctrl-s to quick-save a network we are working on\par
\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 * Add sound when ctrl-s is pressed so we know we saved. * commented out wireless devices for now - doing a big demo and wireless is not yet complete\par
\par \hich\af39\dbch\af31505\loch\f39 * Add sound fail when save is canceled (will use it later if ctrl-s fails) * added search box to help\par
\par \hich\af39\dbch\af31505\loch\f39 * Added some wireless puzzles \b Version 1.0.19 08/08/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * Fix issue with WAP not forwarding packets correctly *Updated context help for most puzzles that introduce new ideas.\par
\par \hich\af39\dbch\af31505\loch\f39 * Clear out old st\hich\af39\dbch\af31505\loch\f39 atus message if we do something. So we do not say "saved" forever... * Sorted Help topics when adding them in net-tests.\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed bad gateway on wireless router issue * Added some images to the help to help clarify things.\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed wbridge misbehaving. (issue with gateway) * Start with the help windows being the same "height" as the network window.\par
\par \hich\af39\dbch\af31505\loch\f39 * Added wireless items to help and context help topics * Open Help so it can be kept open while the puzzles progress.\par
\par \hich\af39\dbch\af31505\loch\f39 * Thanks to Peter Wilson for so much\hich\af39\dbch\af31505\loch\f39 of the translation backbone. * Deal with minimized state better (used to shrink window to smallest possible state)\par
\par \hich\af39\dbch\af31505\loch\f39 * Lots of translation string changes. The French translation should be soon in coming. * Remember size and location of main window between uses.\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.23 09/20/2015 \b Version 1.0.18 08/08/2015\b0\par
\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 * Fixed issues with broadcast packets * Added Context Help for puzzles.\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed a network loop issue - Each puzzle can have context help\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed issue with multiple interfaces and \hich\af39\dbch\af31505\loch\f39 being able to go out a different interface than we came in on - There is a net-test to have us read help\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed many small bugs that crept in when fixing other bugs. Now all puzzles seem to play correctly}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 * fixed minor problem with a "ding" sound when we load a puzzle that has something locked.\par
\par \hich\af39\dbch\af31505\loch\f39 Version 1.0.22 09/01/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 \b Version 1.0.17 08/01/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * Added ssid and keys for wireless links * Added more help\par
\par \hich\af39\dbch\af31505\loch\f39 * Wireless will auto-dis\hich\af39\dbch\af31505\loch\f39 connect if link is too long * Much progress made in preparing for a French translation\par
\par \hich\af39\dbch\af31505\loch\f39 * Wireless will auto-connect if ssid and key match, if link is short enough * allow for Puzzle's description to be in another language\par
\par \hich\af39\dbch\af31505\loch\f39 * Packets will drop on wireless links if distance is too great * Added more to help\par
\par \hich\af39\dbch\af31505\loch\f39 * wport has no interface (cannot edit IP address) * Removed edit -> cut, paste, copy, undo. They never did anything. So why have them?\par
\par \hich\af39\dbch\af31505\loch\f39 * wireless router works properly - forwards broadcast packets * Save box starts in the directory of the file we opened (if we have one)\par
\par \hich\af39\dbch\af31505\loch\f39 * wireless router handles dhcp requests properly (both responds to it but also passes it on) * Choose a language at startup if one has never been chosen, and have option to change language.\par
\par \hich\af39\dbch\af31505\loch\f39 * right-clicking light and microwave no longer has ping, arp, edit, and other context menus * Added another puzzle, showing what happens (or does not happen) if we have two networks that use the same IP addresses, and we want to build a VPN between them.\par
\par \hich\af39\dbch\af31505\loch\f39 * added n\hich\af39\dbch\af31505\loch\f39 et-test for DHCP server status (on/off) \b Version 1.0.16 07/18/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * If multiple DHCP servers, client randomly chooses which to keep. * Added ability to break links (bad network wire)\par
\par \hich\af39\dbch\af31505\loch\f39 *Add Wireless Puzzle * "connection lights" on network cards / ports when we edit devices\par
\par \hich\af39\dbch\af31505\loch\f39 *Fix many wireless device bugs\line }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.21 08/15/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 * Test for "needs link to" does not succeed if the link in question is a broken link\par
\f39\lang9\langfe1033\langnp9\insrsid16400754 * Added a puzzle to show you how to find broken links \par
\par \hich\af39\dbch\af31505\loch\f39 * Added a microwave and fluorescent light. They corrupt data when pa\hich\af39\dbch\af31505\loch\f39 ckets run close to them. * Used broken links in other puzzles\par
\par \hich\af39\dbch\af31505\loch\f39 * Added some packet corruption puzzles * Fixed bug: switches could not use DHCP for many different reasons. Now it works for them.\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed window resize-on-load issue where the help window popped up first, then the builder window resized over to hide the help window. \b Version 1.0.15 07/11/2015\b0\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.20 08/12/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Added ping time progress bar\par
\par \hich\af39\dbch\af31505\loch\f39 * wports do not display on \hich\af39\dbch\af31505\loch\f39 tooltips or when printing the device info * Fixed issue with things timing out before they completed. If the network screen is too large, it makes it go just a tiny bit slower and various things would fail. When the first packet successfully makes it to the far end, it recomputes the time needed and gives extra time.\par
\par \hich\af39\dbch\af31505\loch\f39 * Added ctrl-s to quick-save a network we are working on * Added context menu ping. If an item is supposed to ping something, right-clicking adds the ping test to the menu. Takes some of the guess-work out of things.\par
\par \hich\af39\dbch\af31505\loch\f39 * commented out wireless devices for now - doing a big demo and wireless is not yet complete * Fixed minor issue with this change log. Had two 1.0.11 versions & somehow was stating we were at version 10.x.x instead of 1.x.x (sigh) \par
\par \hich\af39\dbch\af31505\loch\f39 * added search box to help * Fixed the VPNify puzzle. Had a goof in it.\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.19 08/08/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Made it so you cannot connect a link to a VPN. A VPN should be a virtual connection, not a physical connection.\par
\par \hich\af39\dbch\af31505\loch\f39 *Updated c\hich\af39\dbch\af31505\loch\f39 ontext help for most puzzles that introduce new ideas. \b Version 1.0.14 07/10/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * Sorted Help topics when adding them in net-tests. * When we finish a puzzle, allow us to auto-open the "next puzzle" box.\par
\par \hich\af39\dbch\af31505\loch\f39 * Added some images to the help to help clarify things. * Added lots more puzzles\par
\par \hich\af39\dbch\af31505\loch\f39 * Start with the help windows being the same "height" as the network window. * Added more help & documentation\par
\par \hich\af39\dbch\af31505\loch\f39 * Open Help so i\hich\af39\dbch\af31505\loch\f39 t can be kept open while the puzzles progress. * Made it so test for local IP also checked to make sure the subnet-masks matched\par
\par \hich\af39\dbch\af31505\loch\f39 * Deal with minimized state better (used to shrink window to smallest possible state) * Made it so the test for a matching route compared netmasks\par
\par \hich\af39\dbch\af31505\loch\f39 * Remember size and location of main window between uses. * Added a printer object\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.18 08/08/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Added a copier object\par
\par \hich\af39\dbch\af31505\loch\f39 * Added Context Help for puzzles. \b Version 1.0.13 06/21/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 - E\hich\af39\dbch\af31505\loch\f39 ach puzzle can have context help * Fixed issues with arp - arp could go through routers. Now works correctly\par
\par \hich\af39\dbch\af31505\loch\f39 - There is a net-test to have us read help * Made it test for puzzle completion after adding devices\par
\par \hich\af39\dbch\af31505\loch\f39 * fixed minor problem with a "ding" sound when we load a puzzle that has something locked. * Made it test for completion after changing / deleting devices\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.17 08/01/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Let you delete / add NICs on PCs, primarily so we can solve the duplicate MAC puzzle\par
\par \hich\af39\dbch\af31505\loch\f39 * Added more help * Replaced the "Network Loop" puzzle with the correct one.\par
\par \hich\af39\dbch\af31505\loch\f39 * Much progress made in preparing for a French translation \b Version 1.0.12 06/20/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * allow for Puzzle's description to be in another language * Added VPN and TUN nic types\par
\par \hich\af39\dbch\af31505\loch\f39 * Added more to help * Fixed numerous small bugs\par
\par \hich\af39\dbch\af31505\loch\f39 * Removed edit -> cut, paste, copy, undo. They never did anything. So why have them? * Fixed bug with early solution to failed ping test\par
\par \hich\af39\dbch\af31505\loch\f39 * Save box starts in the direc\hich\af39\dbch\af31505\loch\f39 tory of the file we opened (if we have one) * Added "ding" when a test is solved.\par
\par \hich\af39\dbch\af31505\loch\f39 * Choose a language at startup if one has never been chosen, and have option to change language. * Added a "firewall" network that has a firewall and vpns\par
\par \hich\af39\dbch\af31505\loch\f39 * Added another puzzle, showing what happens (or does not happen) if we have two networks that use the same IP addr\hich\af39\dbch\af31505\loch\f39 esses, and we want to build a VPN between them. * Added numerous firewall / vpn puzzles\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.16 07/18/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Fixed a DNS issue. It now more intelligently finds the right IP address when you ping it\par
\par \hich\af39\dbch\af31505\loch\f39 * Added ability to break links (bad network wire) \b Version 1.0.11 06/14/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * "connection lights" on network cards / ports when we edit devices * Added the ability to lock various important features to make puzzles better\par
\par \hich\af39\dbch\af31505\loch\f39 * Test for "needs link to" does not succeed if the link in ques\hich\af39\dbch\af31505\loch\f39 tion is a broken link * Able to add interfaces (multiple IPs on a Network Card)\par
\par \hich\af39\dbch\af31505\loch\f39 * Added a puzzle to show you how to find broken links * Right-click context menu to add net-tests. \par
\par \hich\af39\dbch\af31505\loch\f39 * Used broken links in other puzzles * Del key now deletes the last item we had clicked on\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed bug: switches could not use DHCP for many different reasons. Now it works for them. * Can add NICs (on some devices)\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.15 07/11/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Can delete NICs\par
\par \hich\af39\dbch\af31505\loch\f39 * Added ping time prog\hich\af39\dbch\af31505\loch\f39 ress bar * Fixed minor bug with broadcast pinging solving ping test for individual computers\par
\par \hich\af39\dbch\af31505\loch\f39 \b Version 1.0.10 06/13/2015\b0\par
* Fixed issue with things timing out before they completed. If the network screen is too large, it makes it go just a tiny bit slower and various things would fail. When the first packet successfully makes it to the far end, it recomputes the ti * Renamed puzzles to manage them easier\par
\hich\af39\dbch\af31505\loch\f39 me needed and gives extra time. * Deal with duplicate IPs, and what happens when a packet returns to a computer that did not send it.\par
\par \hich\af39\dbch\af31505\loch\f39 * Added context menu ping. If an item is supposed to ping something, right-clicking adds the ping test to the menu. Takes some of the guess-work out of things. * Change to the help window so you can keep the window open while working with the puzzle.\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed minor issue with this change log. Had two 1.0.11 vers\hich\af39\dbch\af31505\loch\f39 ions & somehow was stating we were at version 10.x.x instead of 1.x.x (sigh) * Change to the donation link. Not that it will ever be used, but it makes me feel better having a few places for people to donate to if they wish.\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed the VPNify puzzle. Had a goof in it. * Minor change for how broadcast packets work, specifically dealing with duplicate IP addresses.\par
\par \hich\af39\dbch\af31505\loch\f39 * Made it so you cannot connect a link to a VPN. A VPN should be a virtual connection, not a physical connection. * Added a "firewall" device & WAN port with masquerade\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.14 \hich\af39\dbch\af31505\loch\f39 07/10/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Added a FailedPing test so we can ping things that must fail (show the firewall works)\par
* added more to the help\par
\par \hich\af39\dbch\af31505\loch\f39 * When we finish a puzzle, allow us to auto-open the "next puzzle" box. * added more puzzles\par
\par \hich\af39\dbch\af31505\loch\f39 * Added lots more puzzles \b Version 1.0.0.9 05/29/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * Added more help & documentation * Add a grid to the network map. It makes things easier to straighten up\par
\par \hich\af39\dbch\af31505\loch\f39 * Made it so test for local IP also checked to make sure the subnet-masks matched * Sorted and organized the puzzles\par
\par \hich\af39\dbch\af31505\loch\f39 * Made it so the test for a matching route compared netmasks * Made a level for each puzzle.\par
\par \hich\af39\dbch\af31505\loch\f39 * Added a printer object * Tracked the puzzles which have been completed\par
\par \hich\af39\dbch\af31505\loch\f39 * Added a copier object * When we open the puzzle list, we now show the first level of puzzles that have an uncompleted puzzle.\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.13 06/21/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Added more "tests", viewing help, pinging, arp, and dhcp.\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed issues with arp - arp could go through routers. Now works correctly * Reset buttons when we load a new network.\par
\par \hich\af39\dbch\af31505\loch\f39 * Made it test for puzzle completion after\hich\af39\dbch\af31505\loch\f39 adding devices * Added a bunch more puzzles\par
\par \hich\af39\dbch\af31505\loch\f39 * Made it test for completion after changing / deleting devices * Sometimes the remembered IP gets annoying when it remembers odd gateways and numbers we cannot change. Fixed that in many cases.\par
\par \hich\af39\dbch\af31505\loch\f39 * Let you delete / add NICs on PCs, primarily so we can solve the duplicate MAC puzzle \b Version 1.0.0.8 05/25/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * Replaced the "Network Loop" puzzle with the correct one. * Always Start with level0 puzzles for now\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.12 06/20/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Fixed the icon when program running\par
\par \hich\af39\dbch\af31505\loch\f39 * A\hich\af39\dbch\af31505\loch\f39 dded VPN and TUN nic types * Added an infrastructure for Puzzles (needs work)\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed numerous small bugs * Added a number of basic puzzles\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed bug with early solution to failed ping test * Fixed DHCP Leases. Now it clears leases when you change the DHCP server range.\par
\par \hich\af39\dbch\af31505\loch\f39 * Added "ding" when a test is solved. \b Version 1.0.0.7 05/16/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * Added a "firewall" network that has a firewall and vpns * Added file association so we can double-click an enbx file\par
\par \hich\af39\dbch\af31505\loch\f39 * Added numerous firewall / vpn puzzles * Fixed the icon so it looks right (removed left edge)\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed a DNS\hich\af39\dbch\af31505\loch\f39 issue. It now more intelligently finds the right IP address when you ping it \b Version 1.0.0.6 05/16/2015\b0\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.11 06/14/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Able to delete a route (right click route and delete it)\par
\par \hich\af39\dbch\af31505\loch\f39 * Added the ability to lock various important features to make puzzles better * Add map title as something we can load/save\par
\par \hich\af39\dbch\af31505\loch\f39 * Able to add interfaces (multiple IPs on a Network Card) * Add message as something we can load and save\par
\par \hich\af39\dbch\af31505\loch\f39 * Right-click\hich\af39\dbch\af31505\loch\f39 context menu to add net-tests. * Changing size of items affects all items\par
\par \hich\af39\dbch\af31505\loch\f39 * Del key now deletes the last item we had clicked on * Allow entering a hostname in the IP address field (ping / gateway)\par
\par \hich\af39\dbch\af31505\loch\f39 * Can add NICs (on some devices) \b Version 1.0.0.5 04/26/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * Can delete NICs * Fixed ping from switch\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed minor bug with broadcast pinging solving ping test for individual computers * Fixed error message when pinging IP that does not exist\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.10 06/13/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 \b Version 1.0.0.4 04/26/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * Renamed puzzles to manage them easier * Fixed broadcast ping\par
\par \hich\af39\dbch\af31505\loch\f39 * Deal with duplicate IPs, and what happens when a packet returns to a computer that did not send it. *Fixed dhcp request error\par
\par \hich\af39\dbch\af31505\loch\f39 * Change to the help window so you can keep the window open while working with the puzzle. \b Version 1.0.0.3 04/15/2015\par
\par \hich\af39\dbch\af31505\loch\f39 * Change to the donatio\hich\af39\dbch\af31505\loch\f39 n link. Not that it will ever be used, but it makes me feel better having a few places for people to donate to if they wish. \b0 * Added "file" -> "new" to erase and start a clean new network\par
\par \hich\af39\dbch\af31505\loch\f39 * Minor change for how broadcast packets work, specifically dealing with duplicate IP addresses. * Fixed pc2 to have gateway on "solved"->"Two Networks"\par
\par \hich\af39\dbch\af31505\loch\f39 * Added a "firewall" device & WAN\hich\af39\dbch\af31505\loch\f39 port with masquerade * Fixed - only machines capable of doing DHCP do dhcp request if we do DHCP request on all\par
\par \hich\af39\dbch\af31505\loch\f39 * Added a FailedPing test so we can ping things that must fail (show the firewall works) * Changed - major overhaul to tcp-stack.\par
\par \hich\af39\dbch\af31505\loch\f39 * added more to the help * Downgrade - Arp temporarily removed from system while tcp-stack overhaul completed\par
\par \hich\af39\dbch\af31505\loch\f39 * added more puzzles \b Version 1.0.0.2 4/19/2015\b0\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.9 05/29/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Added IP-Phone\par
\par \hich\af39\dbch\af31505\loch\f39 * Add a grid to the network map. It makes things easier to straighten\hich\af39\dbch\af31505\loch\f39 up * Packets terminate at the far end - this makes it easier to see packets go both directions\par
\par \hich\af39\dbch\af31505\loch\f39 * Sorted and organized the puzzles * Packets are randomized in transit - Allows packets to arrive at slightly different times\par
\par \hich\af39\dbch\af31505\loch\f39 * Made a level for each puzzle. \b Version 1.0.0.1 4/11/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * Tracked the puzzles which have been completed * DHCP selection on nics is not functioning correctly\par
\par \hich\af39\dbch\af31505\loch\f39 * When we open the puzzle list, we now show the first level of puzzles that have an uncompleted puzzle. * Various small bug-fixes\par
\par \hich\af39\dbch\af31505\loch\f39 * Added more "tests", viewing hel\hich\af39\dbch\af31505\loch\f39 p, pinging, arp, and dhcp. \b Version 1.0.0.0 4/10/2015\b0\par
\par \hich\af39\dbch\af31505\loch\f39 * Reset buttons when we load a new network. This is the initial alpha build\par
\par \hich\af39\dbch\af31505\loch\f39 * Added a bunch more puzzles * basic pinging\par
\par \hich\af39\dbch\af31505\loch\f39 * Sometimes the remembered IP gets annoying when it remembers odd gateways and numbers we cannot change. Fixed that in many cases. * basic arp\par
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.8 05/25/\hich\af39\dbch\af31505\loch\f39 2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 * Routers\par
* Switches/Hubs\par
\par \hich\af39\dbch\af31505\loch\f39 * Always Start with level0 puzzles for now * PCs/Laptops\par
\par \hich\af39\dbch\af31505\loch\f39 * Fixed the icon when program running * Network Links (ethernet)\par
\par \hich\af39\dbch\af31505\loch\f39 * Added an infrastructure for Puzzles (needs work) * Basic DHCP\par
\par \hich\af39\dbch\af31505\loch\f39 * Added a number of basic puzzles }
\par \hich\af39\dbch\af31505\loch\f39 * Fixed DHCP Leases. Now it clears leases when you change the DHCP server range.
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Ver\hich\af39\dbch\af31505\loch\f39 sion 1.0.0.7 05/16/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754
\par \hich\af39\dbch\af31505\loch\f39 * Added file association so we can double-click an enbx file
\par \hich\af39\dbch\af31505\loch\f39 * Fixed the icon so it looks right (removed left edge)
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.6 05/16/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754
\par \hich\af39\dbch\af31505\loch\f39 * Able to delete a route (right click route and delete it)
\par \hich\af39\dbch\af31505\loch\f39 * Add map title as something we can load/save
\par \hich\af39\dbch\af31505\loch\f39 * Add message as something we can load and save
\par \hich\af39\dbch\af31505\loch\f39 * Changing size of items affects all items
\par \hich\af39\dbch\af31505\loch\f39 * Allow entering a hostname in the IP address field (ping / gateway)
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.5 04/26/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754
\par \hich\af39\dbch\af31505\loch\f39 * Fixed ping from swi\hich\af39\dbch\af31505\loch\f39 tch
\par \hich\af39\dbch\af31505\loch\f39 * Fixed error message when pinging IP that does not exist
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.4 04/26/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754
\par \hich\af39\dbch\af31505\loch\f39 * Fixed broadcast ping
\par \hich\af39\dbch\af31505\loch\f39 *Fixed dhcp request error
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.3 04/15/2015
\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 * Added "file" -> "new" to erase and start a clean new network
\par \hich\af39\dbch\af31505\loch\f39 * Fixed pc2 to have gate\hich\af39\dbch\af31505\loch\f39 way on "solved"->"Two Networks"
\par \hich\af39\dbch\af31505\loch\f39 * Fixed - only machines capable of doing DHCP do dhcp request if we do DHCP request on all
\par \hich\af39\dbch\af31505\loch\f39 * Changed - major overhaul to tcp-stack.
\par \hich\af39\dbch\af31505\loch\f39 * Downgrade - Arp temporarily removed from system while tcp-stack overhaul completed
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version\hich\af39\dbch\af31505\loch\f39 1.0.0.2 4/19/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754
\par \hich\af39\dbch\af31505\loch\f39 * Added IP-Phone
\par \hich\af39\dbch\af31505\loch\f39 * Packets terminate at the far end - this makes it easier to see packets go both directions
\par \hich\af39\dbch\af31505\loch\f39 * Packets are randomized in transit - Allows packets to arrive at slightly different times
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.1 4/11/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754
\par \hich\af39\dbch\af31505\loch\f39 * DHCP \hich\af39\dbch\af31505\loch\f39 selection on nics is not functioning correctly
\par \hich\af39\dbch\af31505\loch\f39 * Various small bug-fixes
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid16400754 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.0 4/10/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754
\par \hich\af39\dbch\af31505\loch\f39 This is the initial alpha build
\par \hich\af39\dbch\af31505\loch\f39 * basic pinging
\par \hich\af39\dbch\af31505\loch\f39 * basic arp
\par \hich\af39\dbch\af31505\loch\f39 * Routers
\par \hich\af39\dbch\af31505\loch\f39 * Switches/Hubs
\par \hich\af39\dbch\af31505\loch\f39 * PCs/Laptops
\par \hich\af39\dbch\af31505\loch\f39 * Network Links (ethernet)
\par \hich\af39\dbch\af31505\loch\f39 * Basic DHCP}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16400754
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210007b740aaca0600008f1a0000160000007468656d652f7468656d652f
7468656d65312e786d6cec595b8bdb46147e2ff43f08bd3bbe49be2cf1065bb69336bb49889d943cceda636bb2238dd18c776342a0244f7d2914d2d28706fad6
87521a68a0a12ffd310b1bdaf447f4cc489667ec71f6420aa1640d8b34face996fce39face48ba7aed51449d239c70c2e2965bbe52721d1c8fd898c4d3967b6f
d82f345c870b148f1165316eb90bccdd6bbb9f7e7215ed881047d801fb98efa0961b0a31db2916f9088611bfc26638866b13964448c069322d8e13740c7e235a
ac944ab5628448ec3a318ac0ededc9848cb033942edddda5f31e85d358703930a2c940bac68685c28e0fcb12c1173ca089738468cb8579c6ec78881f09d7a188
0bb8d0724beacf2dee5e2da29dcc888a2db69a5d5ffd657699c1f8b0a2e64ca607f9a49ee77bb576ee5f01a8d8c4f5eabd5aaf96fb5300341ac14a532eba4fbf
d3ec74fd0cab81d2438bef6ebd5b2d1b78cd7f758373db973f03af40a97f6f03dfef07104503af4029dedfc07b5ebd1278065e81527c6d035f2fb5bb5eddc02b
5048497cb8812ef9b56ab05c6d0e99307ac30a6ffa5ebf5ec99caf50500d7975c929262c16db6a2d420f59d2078004522448ec88c50c4fd008aa3840941c24c4
d923d3100a6f8662c661b85429f54b55f82f7f9e3a5211413b1869d6921730e11b43928fc34709998996fb39787535c8e9ebd7274f5f9d3cfdfde4d9b393a7bf
66732b5786dd0d144f75bbb73f7df3cf8b2f9dbf7ffbf1edf36fd3a9d7f15cc7bff9e5ab377ffcf92ef7b0e255284ebf7bf9e6d5cbd3efbffeebe7e716efed04
1de8f0218930776ee163e72e8b608116fef820b998c5304444b768c7538e622467b1f8ef89d040df5a208a2cb80e36e3783f01a9b101afcf1f1a8407613217c4
e2f1661819c07dc6688725d628dc947369611ecee3a97df264aee3ee2274649b3b40b191e5de7c061a4b6c2e83101b34ef50140b34c531168ebcc60e31b6acee
0121465cf7c928619c4d84f380381d44ac21199203a39a56463748047959d80842be8dd8ecdf773a8cda56ddc5472612ee0d442de487981a61bc8ee602453697
4314513de07b48843692834532d2713d2e20d3534c99d31b63ce6d36b71358af96f49b2033f6b4efd345642213410e6d3ef710633ab2cb0e831045331b7640e2
50c77ec60fa144917387091b7c9f9977883c873ca0786bbaef136ca4fb6c35b8070aab535a1588bc324f2cb9bc8e9951bf83059d20aca4061a80a1eb1189cf14
f93579f7ff3b7907113dfde1856545ef47d2ed8e8d7c5c50ccdb09b1de4d37d6247c1b6e5db803968cc987afdb5d348fef60b855369bd747d9fe28dbeeff5eb6
b7ddcfef5fac57fa0cd22db7ade9765d6ddea3ad7bf709a174201614ef71b57de7d095c67d189476eab915e7cf72b3100ee59d0c1318b86982948d9330f10511
e1204433d8e3975de964ca33d753eecc1887adbf1ab6fa96783a8ff6d9387d642d97e5e3692a1e1c89d578c9cfc7e17143a4e85a7df51896bb576ca7ea717949
40da5e8484369949a26a21515f0eca20a98773089a85845ad97b61d1b4b06848f7cb546db0006a795660dbe4c066abe5fa1e9880113c55218ac7324f69aa97d9
55c97c9f99de164ca302600fb1ac8055a69b92ebd6e5c9d5a5a5768e4c1b24b4723349a8c8a81ec64334c65975cad1f3d0b868ae9bab941af46428d47c505a2b
1af5c6bb585c36d760b7ae0d34d69582c6ce71cbad557d2899119ab5dc093cfac3613483dae172bb8be814de9f8d4492def097519659c24517f1300db8129d54
0d222270e25012b55cb9fc3c0d34561aa2b8952b20081f2cb926c8ca87460e926e26194f267824f4b46b2332d2e929287caa15d6abcafcf26069c9e690ee4138
3e760ee83cb98ba0c4fc7a5906704c38bc012aa7d11c1378a5990bd9aafed61a5326bbfa3b455543e938a2b310651d4517f314aea43ca7a3cef2186867d99a21
a05a48b2467830950d560faad14df3ae9172d8da75cf369291d34473d5330d55915dd3ae62c60ccb36b016cbcb35798dd532c4a0697a874fa57b5d729b4bad5b
db27e45d02029ec7cfd275cfd110346aabc90c6a92f1a60c4bcdce46cddeb15ce019d4ced32434d5af2dddaec52def11d6e960f0529d1fecd6ab168626cb7da5
8ab4faf6a17f9e60070f413cbaf022784e0557a9848f0f09820dd140ed4952d9805be491c86e0d3872e60969b98f4b7edb0b2a7e502835fc5ec1ab7aa542c36f
570b6ddfaf967b7eb9d4ed549e4063116154f6d3ef2e7d780d4517d9d71735bef105265abe69bb32625191a92f2c45455c7d812957b67f81710888cee35aa5df
ac363bb542b3daee17bc6ea7516806b54ea15b0beadd7e37f01bcdfe13d7395260af5d0dbc5aaf51a89583a0e0d54a927ea359a87b954adbabb71b3daffd24db
c6c0ca53f9c86201e155bc76ff050000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72
656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c08
2e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd0
8a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa
4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f
6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72
656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f746865
6d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210007b740aaca0600008f1a00001600000000000000000000000000d60200
007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027000000000000000000000000
00d40900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cf0a00000000}
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;
\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text;
\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;
\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;
\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1;
\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision;
\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;
\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1;
\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;
\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;
\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;
\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;
\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;
\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;
\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000
4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000b045
b2b79127d101feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000105000000000000}}