<?xml version="1.0"?>
<RBProject version="2010r4.1">
<block type="Project" ID="0">
 <ProjectSavedInVers>2010.041</ProjectSavedInVers>
 <ProjMgrUser></ProjMgrUser>
 <ProjMgrServer></ProjMgrServer>
 <MajorVersion>1</MajorVersion>
 <MinorVersion>0</MinorVersion>
 <SubVersion>0</SubVersion>
 <Release>0</Release>
 <NonRelease>0</NonRelease>
 <Region>0</Region>
 <ShortVersion></ShortVersion>
 <LongVersion></LongVersion>
 <InfoVersion></InfoVersion>
 <AutoIncVersion>0</AutoIncVersion>
 <DefaultViewID>605751295</DefaultViewID>
 <ProjectType>0</ProjectType>
 <DefaultLanguage>0</DefaultLanguage>
 <CurrentLanguage>0</CurrentLanguage>
 <DefaultEncoding>0</DefaultEncoding>
 <BuildFlags>16</BuildFlags>
 <UseBuildsFolder>1</UseBuildsFolder>
 <WebApp>0</WebApp>
 <Icon>
 </Icon>
 <MacCreator></MacCreator>
 <BuildCarbonName>My Application</BuildCarbonName>
 <BuildCarbonMachOName>My Application</BuildCarbonMachOName>
 <BundleIdentifier></BundleIdentifier>
 <BuildSize>4194304</BuildSize>
 <BuildMinSize>2097152</BuildMinSize>
 <BuildSizeAsString>4096</BuildSizeAsString>
 <BuildMinSizeAsString>2048</BuildMinSizeAsString>
 <WinMDICaption></WinMDICaption>
 <BuildWinName>My Application.exe</BuildWinName>
 <BuildWinMDI>0</BuildWinMDI>
 <BuildWinCompanyName></BuildWinCompanyName>
 <BuildWinProductName></BuildWinProductName>
 <BuildWinInternalName></BuildWinInternalName>
 <UseGDIPlus>0</UseGDIPlus>
 <BuildLinuxX86Name>MyApplication</BuildLinuxX86Name>
 <DebuggerCommandLine></DebuggerCommandLine>
</block>
<block type="Module" ID="1591556095">
 <ObjName>App</ObjName>
 <ObjContainerID>0</ObjContainerID>
 <IsClass>1</IsClass>
 <Superclass>Application</Superclass>
 <ItemFlags>1</ItemFlags>
 <IsInterface>0</IsInterface>
 <IsApplicationObject>1</IsApplicationObject>
 <Compatibility></Compatibility>
 <HookInstance>
  <ItemName>UnhandledException</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Function UnhandledException(error As RuntimeException) As Boolean</SourceLine>
   <SourceLine>MsgBox("An Unhandled Error of Type " + error.Message + " Has Ocurred While Attempting To Update!")</SourceLine>
   <SourceLine>End Function</SourceLine>
  </ItemSource>
 </HookInstance>
 <PropertyVal Name="MenuBar">615135231</PropertyVal>
 <ViewBehavior>
 </ViewBehavior>
 <Constant>
  <ItemName>kFileQuitShortcut</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <TextEncoding>134217984</TextEncoding>
  <ItemName>kFileQuitShortcut</ItemName>
  <ItemType>0</ItemType>
  <ItemDef></ItemDef>
  <ItemFlags>0</ItemFlags>
  <ConstantInstance>
   <ItemPlatform>1</ItemPlatform>
   <ItemLanguage>0</ItemLanguage>
   <ItemDef>Cmd+Q</ItemDef>
  </ConstantInstance>
  <ConstantInstance>
   <ItemPlatform>5</ItemPlatform>
   <ItemLanguage>0</ItemLanguage>
   <ItemDef>Ctrl+Q</ItemDef>
  </ConstantInstance>
 </Constant>
 <Constant>
  <ItemName>kFileQuit</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <TextEncoding>134217984</TextEncoding>
  <ItemName>kFileQuit</ItemName>
  <ItemType>0</ItemType>
  <ItemDef>&amp;Quit</ItemDef>
  <ItemFlags>0</ItemFlags>
  <ConstantInstance>
   <ItemPlatform>2</ItemPlatform>
   <ItemLanguage>0</ItemLanguage>
   <ItemDef>E&amp;xit</ItemDef>
  </ConstantInstance>
 </Constant>
 <Constant>
  <ItemName>kEditClear</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <TextEncoding>134217984</TextEncoding>
  <ItemName>kEditClear</ItemName>
  <ItemType>0</ItemType>
  <ItemDef>&amp;Delete</ItemDef>
  <ItemFlags>0</ItemFlags>
  <ConstantInstance>
   <ItemPlatform>2</ItemPlatform>
   <ItemLanguage>0</ItemLanguage>
   <ItemDef>&amp;Delete</ItemDef>
  </ConstantInstance>
  <ConstantInstance>
   <ItemPlatform>5</ItemPlatform>
   <ItemLanguage>0</ItemLanguage>
   <ItemDef>&amp;Delete</ItemDef>
  </ConstantInstance>
 </Constant>
</block>
<block type="Window" ID="605751295">
 <ObjName>MainWin</ObjName>
 <ObjContainerID>0</ObjContainerID>
 <IsClass>1</IsClass>
 <Superclass>Window</Superclass>
 <ItemFlags>1</ItemFlags>
 <IsInterface>0</IsInterface>
 <Compatibility></Compatibility>
 <PropertyVal Name="BalloonHelp"></PropertyVal>
 <PropertyVal Name="ImplicitInstance">True</PropertyVal>
 <PropertyVal Name="MenuBar"></PropertyVal>
 <PropertyVal Name="MacProcID">0</PropertyVal>
 <PropertyVal Name="MinimizeButton">True</PropertyVal>
 <PropertyVal Name="MaximizeButton">False</PropertyVal>
 <PropertyVal Name="LiveResize">False</PropertyVal>
 <PropertyVal Name="Resizeable">False</PropertyVal>
 <PropertyVal Name="CloseButton">True</PropertyVal>
 <PropertyVal Name="MenuBarVisible">True</PropertyVal>
 <PropertyVal Name="FullScreen">False</PropertyVal>
 <PropertyVal Name="Visible">True</PropertyVal>
 <PropertyVal Name="Title">My Really Great App</PropertyVal>
 <PropertyVal Name="Backdrop"></PropertyVal>
 <PropertyVal Name="BackColor">16777215</PropertyVal>
 <PropertyVal Name="HasBackColor">False</PropertyVal>
 <PropertyVal Name="Composite">False</PropertyVal>
 <PropertyVal Name="Frame">0</PropertyVal>
 <PropertyVal Name="MaxHeight">32000</PropertyVal>
 <PropertyVal Name="MaxWidth">32000</PropertyVal>
 <PropertyVal Name="MinHeight">64</PropertyVal>
 <PropertyVal Name="MinWidth">64</PropertyVal>
 <PropertyVal Name="Height">131</PropertyVal>
 <PropertyVal Name="Width">244</PropertyVal>
 <PropertyVal Name="Placement">2</PropertyVal>
 <ViewBehavior>
  <ViewProperty>
   <ObjName>ImplicitInstance</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>True</PropertyValue>
   <EditorType>Boolean</EditorType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Name</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Interfaces</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Super</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Placement</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <ItemType>Integer</ItemType>
   <EditorType>Enum</EditorType>
   <InheritsFrom>Window</InheritsFrom>
   <Enumeration>
    <ItemDef>0 - Default</ItemDef>
    <ItemDef>1 - Parent Window</ItemDef>
    <ItemDef>2 - Main Screen</ItemDef>
    <ItemDef>3 - Parent Window Screen</ItemDef>
    <ItemDef>4 - Stagger</ItemDef>
   </Enumeration>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Width</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>300</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Height</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>300</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MinWidth</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>64</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MinHeight</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>64</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MaxWidth</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>32000</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MaxHeight</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>32000</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Frame</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <ItemType>Integer</ItemType>
   <EditorType>Enum</EditorType>
   <InheritsFrom>Window</InheritsFrom>
   <Enumeration>
    <ItemDef>0 - Document</ItemDef>
    <ItemDef>1 - Movable Modal</ItemDef>
    <ItemDef>2 - Modal Dialog</ItemDef>
    <ItemDef>3 - Floating Window</ItemDef>
    <ItemDef>4 - Plain Box</ItemDef>
    <ItemDef>5 - Shadowed Box</ItemDef>
    <ItemDef>6 - Rounded Window</ItemDef>
    <ItemDef>7 - Global Floating Window</ItemDef>
    <ItemDef>8 - Sheet Window</ItemDef>
    <ItemDef>9 - Metal Window</ItemDef>
    <ItemDef>10 - Drawer Window</ItemDef>
    <ItemDef>11 - Modeless Dialog</ItemDef>
   </Enumeration>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Composite</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>HasBackColor</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>BackColor</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>&amp;hFFFFFF</PropertyValue>
   <ItemType>Color</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Backdrop</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <ItemType>Picture</ItemType>
   <EditorType>Picture</EditorType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Title</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>Untitled</PropertyValue>
   <ItemType>String</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Visible</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>True</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>FullScreen</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MenuBarVisible</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>True</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>CloseButton</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>True</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Resizeable</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>LiveResize</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MaximizeButton</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MinimizeButton</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>True</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MacProcID</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MenuBar</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <ItemType>MenuBar</ItemType>
   <EditorType>MenuBar</EditorType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
 </ViewBehavior>
 <ControlBehavior>
  <Superclass>PushButton</Superclass>
  <HookInstance>
   <ItemName>Action</ItemName>
   <Compatibility></Compatibility>
   <Visible>1</Visible>
   <ItemSource>
    <TextEncoding>134217984</TextEncoding>
    <SourceLine>Sub Action()</SourceLine>
    <SourceLine>//here we simply call the update window. You'll want to remove this window (MainWin) from any app you use this in and place the following code in your "Check For updates" button</SourceLine>
    <SourceLine>updateWin.Show</SourceLine>
    <SourceLine>End Sub</SourceLine>
   </ItemSource>
  </HookInstance>
 </ControlBehavior>
 <ControlBehavior>
  <Superclass>PushButton</Superclass>
  <HookInstance>
   <ItemName>Action</ItemName>
   <Compatibility></Compatibility>
   <Visible>1</Visible>
   <ItemSource>
    <TextEncoding>134217984</TextEncoding>
    <SourceLine>Sub Action()</SourceLine>
    <SourceLine>//This button demonstrates the silent check function.</SourceLine>
    <SourceLine>//here we call the versioncheck.checkVer method and pass the silence property as true.</SourceLine>
    <SourceLine>updateWin.Show   //create the updateWin</SourceLine>
    <SourceLine>updateWin.Hide    //but make it invisible</SourceLine>
    <SourceLine>dim updater As New versioncheck</SourceLine>
    <SourceLine>updater.checkVer(True)  //the "True" parameter indicates that this is a silent check</SourceLine>
    <SourceLine>End Sub</SourceLine>
   </ItemSource>
  </HookInstance>
 </ControlBehavior>
 <Control>
  <ControlClass>PushButton</ControlClass>
  <ItemName>PushButton</ItemName>
  <PropertyVal Name="InitialParent"></PropertyVal>
  <PropertyVal Name="Underline"></PropertyVal>
  <PropertyVal Name="Italic"></PropertyVal>
  <PropertyVal Name="Bold"></PropertyVal>
  <PropertyVal Name="TextUnit">0</PropertyVal>
  <PropertyVal Name="TextSize">10</PropertyVal>
  <PropertyVal Name="TextFont">Ariel</PropertyVal>
  <PropertyVal Name="AutoDeactivate">True</PropertyVal>
  <PropertyVal Name="HelpTag"></PropertyVal>
  <PropertyVal Name="Visible">True</PropertyVal>
  <PropertyVal Name="Enabled">True</PropertyVal>
  <PropertyVal Name="Cancel"></PropertyVal>
  <PropertyVal Name="Default"></PropertyVal>
  <PropertyVal Name="Caption">Check For Updates</PropertyVal>
  <PropertyVal Name="TabStop">True</PropertyVal>
  <PropertyVal Name="TabIndex">0</PropertyVal>
  <PropertyVal Name="TabPanelIndex">0</PropertyVal>
  <PropertyVal Name="LockBottom"></PropertyVal>
  <PropertyVal Name="LockRight"></PropertyVal>
  <PropertyVal Name="LockTop"></PropertyVal>
  <PropertyVal Name="LockLeft"></PropertyVal>
  <PropertyVal Name="Height">22</PropertyVal>
  <PropertyVal Name="Width">114</PropertyVal>
  <PropertyVal Name="Top">37</PropertyVal>
  <PropertyVal Name="Left">63</PropertyVal>
  <PropertyVal Name="Scope">0</PropertyVal>
  <PropertyVal Name="Index">-2147483648</PropertyVal>
  <PropertyVal Name="Name">PushButton1</PropertyVal>
  <PropertyVal Name="Super">PushButton</PropertyVal>
  <ControlIndex>0</ControlIndex>
  <Locked>0</Locked>
 </Control>
 <Control>
  <ControlClass>PushButton</ControlClass>
  <ItemName>PushButton</ItemName>
  <PropertyVal Name="InitialParent"></PropertyVal>
  <PropertyVal Name="Underline"></PropertyVal>
  <PropertyVal Name="Italic"></PropertyVal>
  <PropertyVal Name="Bold"></PropertyVal>
  <PropertyVal Name="TextUnit">0</PropertyVal>
  <PropertyVal Name="TextSize">10</PropertyVal>
  <PropertyVal Name="TextFont">Ariel</PropertyVal>
  <PropertyVal Name="AutoDeactivate">True</PropertyVal>
  <PropertyVal Name="HelpTag"></PropertyVal>
  <PropertyVal Name="Visible">True</PropertyVal>
  <PropertyVal Name="Enabled">True</PropertyVal>
  <PropertyVal Name="Cancel"></PropertyVal>
  <PropertyVal Name="Default"></PropertyVal>
  <PropertyVal Name="Caption">Check For Updates Silently</PropertyVal>
  <PropertyVal Name="TabStop">True</PropertyVal>
  <PropertyVal Name="TabIndex">1</PropertyVal>
  <PropertyVal Name="TabPanelIndex">0</PropertyVal>
  <PropertyVal Name="LockBottom"></PropertyVal>
  <PropertyVal Name="LockRight"></PropertyVal>
  <PropertyVal Name="LockTop"></PropertyVal>
  <PropertyVal Name="LockLeft"></PropertyVal>
  <PropertyVal Name="Height">22</PropertyVal>
  <PropertyVal Name="Width">164</PropertyVal>
  <PropertyVal Name="Top">71</PropertyVal>
  <PropertyVal Name="Left">38</PropertyVal>
  <PropertyVal Name="Scope">0</PropertyVal>
  <PropertyVal Name="Index">-2147483648</PropertyVal>
  <PropertyVal Name="Name">PushButton2</PropertyVal>
  <PropertyVal Name="Super">PushButton</PropertyVal>
  <ControlIndex>1</ControlIndex>
  <Locked>0</Locked>
 </Control>
</block>
<block type="Window" ID="893569023">
 <ObjName>updateWin</ObjName>
 <ObjContainerID>0</ObjContainerID>
 <IsClass>1</IsClass>
 <Superclass>Window</Superclass>
 <ItemFlags>1</ItemFlags>
 <IsInterface>0</IsInterface>
 <Compatibility></Compatibility>
 <Property>
  <ItemName>cancel</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>cancel As Boolean</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>cancel As Boolean = False</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <PropertyVal Name="BalloonHelp"></PropertyVal>
 <PropertyVal Name="ImplicitInstance">True</PropertyVal>
 <PropertyVal Name="MenuBar"></PropertyVal>
 <PropertyVal Name="MacProcID">0</PropertyVal>
 <PropertyVal Name="MinimizeButton">False</PropertyVal>
 <PropertyVal Name="MaximizeButton">False</PropertyVal>
 <PropertyVal Name="LiveResize">False</PropertyVal>
 <PropertyVal Name="Resizeable">False</PropertyVal>
 <PropertyVal Name="CloseButton">False</PropertyVal>
 <PropertyVal Name="MenuBarVisible">True</PropertyVal>
 <PropertyVal Name="FullScreen">False</PropertyVal>
 <PropertyVal Name="Visible">True</PropertyVal>
 <PropertyVal Name="Title">Check For Updates</PropertyVal>
 <PropertyVal Name="Backdrop"></PropertyVal>
 <PropertyVal Name="BackColor">16777215</PropertyVal>
 <PropertyVal Name="HasBackColor">False</PropertyVal>
 <PropertyVal Name="Composite">False</PropertyVal>
 <PropertyVal Name="Frame">3</PropertyVal>
 <PropertyVal Name="MaxHeight">32000</PropertyVal>
 <PropertyVal Name="MaxWidth">32000</PropertyVal>
 <PropertyVal Name="MinHeight">64</PropertyVal>
 <PropertyVal Name="MinWidth">64</PropertyVal>
 <PropertyVal Name="Height">116</PropertyVal>
 <PropertyVal Name="Width">337</PropertyVal>
 <PropertyVal Name="Placement">2</PropertyVal>
 <ViewBehavior>
  <ViewProperty>
   <ObjName>ImplicitInstance</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>True</PropertyValue>
   <EditorType>Boolean</EditorType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Name</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Interfaces</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Super</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Placement</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <ItemType>Integer</ItemType>
   <EditorType>Enum</EditorType>
   <InheritsFrom>Window</InheritsFrom>
   <Enumeration>
    <ItemDef>0 - Default</ItemDef>
    <ItemDef>1 - Parent Window</ItemDef>
    <ItemDef>2 - Main Screen</ItemDef>
    <ItemDef>3 - Parent Window Screen</ItemDef>
    <ItemDef>4 - Stagger</ItemDef>
   </Enumeration>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Width</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>300</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Height</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>300</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MinWidth</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>64</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MinHeight</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>64</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MaxWidth</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>32000</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MaxHeight</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>32000</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Frame</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <ItemType>Integer</ItemType>
   <EditorType>Enum</EditorType>
   <InheritsFrom>Window</InheritsFrom>
   <Enumeration>
    <ItemDef>0 - Document</ItemDef>
    <ItemDef>1 - Movable Modal</ItemDef>
    <ItemDef>2 - Modal Dialog</ItemDef>
    <ItemDef>3 - Floating Window</ItemDef>
    <ItemDef>4 - Plain Box</ItemDef>
    <ItemDef>5 - Shadowed Box</ItemDef>
    <ItemDef>6 - Rounded Window</ItemDef>
    <ItemDef>7 - Global Floating Window</ItemDef>
    <ItemDef>8 - Sheet Window</ItemDef>
    <ItemDef>9 - Metal Window</ItemDef>
    <ItemDef>10 - Drawer Window</ItemDef>
    <ItemDef>11 - Modeless Dialog</ItemDef>
   </Enumeration>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Composite</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>HasBackColor</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>BackColor</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>&amp;hFFFFFF</PropertyValue>
   <ItemType>Color</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Backdrop</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <ItemType>Picture</ItemType>
   <EditorType>Picture</EditorType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Title</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>Untitled</PropertyValue>
   <ItemType>String</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Visible</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>True</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>FullScreen</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MenuBarVisible</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>True</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>CloseButton</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>True</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Resizeable</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>LiveResize</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MaximizeButton</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MinimizeButton</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>True</PropertyValue>
   <ItemType>Boolean</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MacProcID</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <ItemType>Integer</ItemType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>MenuBar</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Appearance</PropertyGroup>
   <ItemType>MenuBar</ItemType>
   <EditorType>MenuBar</EditorType>
   <InheritsFrom>Window</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>cancel</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
  </ViewProperty>
 </ViewBehavior>
 <ControlBehavior>
  <Superclass>Label</Superclass>
 </ControlBehavior>
 <ControlBehavior>
  <Superclass>Label</Superclass>
 </ControlBehavior>
 <ControlBehavior>
  <Superclass>ProgressBar</Superclass>
 </ControlBehavior>
 <ControlBehavior>
  <Superclass>PushButton</Superclass>
  <HookInstance>
   <ItemName>Action</ItemName>
   <Compatibility></Compatibility>
   <Visible>1</Visible>
   <ItemSource>
    <TextEncoding>134217984</TextEncoding>
    <SourceLine>Sub Action()</SourceLine>
    <SourceLine>Select case me.Caption</SourceLine>
    <SourceLine>case "Cancel"</SourceLine>
    <SourceLine>cancel = True</SourceLine>
    <SourceLine>Status.Caption = "Operation Cancelled"</SourceLine>
    <SourceLine>startTry.Caption = "Retry"</SourceLine>
    <SourceLine>me.Caption = "Close"</SourceLine>
    <SourceLine></SourceLine>
    <SourceLine>case "Done"</SourceLine>
    <SourceLine>Status.Caption = "Finished"</SourceLine>
    <SourceLine>self.Close</SourceLine>
    <SourceLine>case "Close"</SourceLine>
    <SourceLine>self.Close</SourceLine>
    <SourceLine>end Select</SourceLine>
    <SourceLine>End Sub</SourceLine>
   </ItemSource>
  </HookInstance>
 </ControlBehavior>
 <ControlBehavior>
  <Superclass>ListBox</Superclass>
 </ControlBehavior>
 <ControlBehavior>
  <Superclass>DisclosureTriangle</Superclass>
  <HookInstance>
   <ItemName>Action</ItemName>
   <Compatibility></Compatibility>
   <Visible>1</Visible>
   <ItemSource>
    <TextEncoding>134217984</TextEncoding>
    <SourceLine>Sub Action()</SourceLine>
    <SourceLine>if me.Value = True then</SourceLine>
    <SourceLine>self.Height = 240</SourceLine>
    <SourceLine>else</SourceLine>
    <SourceLine>self.Height = 116</SourceLine>
    <SourceLine>end if</SourceLine>
    <SourceLine>End Sub</SourceLine>
   </ItemSource>
  </HookInstance>
 </ControlBehavior>
 <ControlBehavior>
  <Superclass>Label</Superclass>
 </ControlBehavior>
 <ControlBehavior>
  <Superclass>PushButton</Superclass>
  <HookInstance>
   <ItemName>Action</ItemName>
   <Compatibility></Compatibility>
   <Visible>1</Visible>
   <ItemSource>
    <TextEncoding>134217984</TextEncoding>
    <SourceLine>Sub Action()</SourceLine>
    <SourceLine>if me.Caption = "Retry" then</SourceLine>
    <SourceLine>SpecialFolder.Temporary.Child("myapp.upd").Delete</SourceLine>
    <SourceLine>end if</SourceLine>
    <SourceLine>dim updater As New versioncheck</SourceLine>
    <SourceLine>updater.checkVer(False)</SourceLine>
    <SourceLine></SourceLine>
    <SourceLine>End Sub</SourceLine>
   </ItemSource>
  </HookInstance>
 </ControlBehavior>
 <Control>
  <ControlClass>Label</ControlClass>
  <ItemName>Label</ItemName>
  <PropertyVal Name="InitialParent"></PropertyVal>
  <PropertyVal Name="DataField"></PropertyVal>
  <PropertyVal Name="DataSource"></PropertyVal>
  <PropertyVal Name="Underline"></PropertyVal>
  <PropertyVal Name="Italic"></PropertyVal>
  <PropertyVal Name="Bold"></PropertyVal>
  <PropertyVal Name="TextUnit">0</PropertyVal>
  <PropertyVal Name="TextSize">0</PropertyVal>
  <PropertyVal Name="TextFont">System</PropertyVal>
  <PropertyVal Name="AutoDeactivate">True</PropertyVal>
  <PropertyVal Name="HelpTag"></PropertyVal>
  <PropertyVal Name="Transparent">False</PropertyVal>
  <PropertyVal Name="Selectable">False</PropertyVal>
  <PropertyVal Name="Visible">True</PropertyVal>
  <PropertyVal Name="Enabled">True</PropertyVal>
  <PropertyVal Name="Multiline"></PropertyVal>
  <PropertyVal Name="TextColor">0</PropertyVal>
  <PropertyVal Name="TextAlign">0</PropertyVal>
  <PropertyVal Name="Text">Status:</PropertyVal>
  <PropertyVal Name="TabIndex">0</PropertyVal>
  <PropertyVal Name="TabPanelIndex">0</PropertyVal>
  <PropertyVal Name="LockBottom"></PropertyVal>
  <PropertyVal Name="LockRight"></PropertyVal>
  <PropertyVal Name="LockTop"></PropertyVal>
  <PropertyVal Name="LockLeft"></PropertyVal>
  <PropertyVal Name="Height">20</PropertyVal>
  <PropertyVal Name="Width">37</PropertyVal>
  <PropertyVal Name="Top">0</PropertyVal>
  <PropertyVal Name="Left">13</PropertyVal>
  <PropertyVal Name="Scope">0</PropertyVal>
  <PropertyVal Name="Index">-2147483648</PropertyVal>
  <PropertyVal Name="Name">StaticText1</PropertyVal>
  <PropertyVal Name="TabStop">True</PropertyVal>
  <PropertyVal Name="Super">Label</PropertyVal>
  <ControlIndex>0</ControlIndex>
  <Locked>0</Locked>
 </Control>
 <Control>
  <ControlClass>Label</ControlClass>
  <ItemName>Label</ItemName>
  <PropertyVal Name="InitialParent"></PropertyVal>
  <PropertyVal Name="DataField"></PropertyVal>
  <PropertyVal Name="DataSource"></PropertyVal>
  <PropertyVal Name="Underline"></PropertyVal>
  <PropertyVal Name="Italic"></PropertyVal>
  <PropertyVal Name="Bold">True</PropertyVal>
  <PropertyVal Name="TextUnit">0</PropertyVal>
  <PropertyVal Name="TextSize">0</PropertyVal>
  <PropertyVal Name="TextFont">System</PropertyVal>
  <PropertyVal Name="AutoDeactivate">True</PropertyVal>
  <PropertyVal Name="HelpTag"></PropertyVal>
  <PropertyVal Name="Transparent">False</PropertyVal>
  <PropertyVal Name="Selectable">False</PropertyVal>
  <PropertyVal Name="Visible">True</PropertyVal>
  <PropertyVal Name="Enabled">True</PropertyVal>
  <PropertyVal Name="Multiline"></PropertyVal>
  <PropertyVal Name="TextColor">0</PropertyVal>
  <PropertyVal Name="TextAlign">0</PropertyVal>
  <PropertyVal Name="Text"></PropertyVal>
  <PropertyVal Name="TabIndex">1</PropertyVal>
  <PropertyVal Name="TabPanelIndex">0</PropertyVal>
  <PropertyVal Name="LockBottom"></PropertyVal>
  <PropertyVal Name="LockRight"></PropertyVal>
  <PropertyVal Name="LockTop"></PropertyVal>
  <PropertyVal Name="LockLeft"></PropertyVal>
  <PropertyVal Name="Height">20</PropertyVal>
  <PropertyVal Name="Width">305</PropertyVal>
  <PropertyVal Name="Top">14</PropertyVal>
  <PropertyVal Name="Left">32</PropertyVal>
  <PropertyVal Name="Scope">0</PropertyVal>
  <PropertyVal Name="Index">-2147483648</PropertyVal>
  <PropertyVal Name="Name">Status</PropertyVal>
  <PropertyVal Name="TabStop">True</PropertyVal>
  <PropertyVal Name="Super">Label</PropertyVal>
  <ControlIndex>1</ControlIndex>
  <Locked>0</Locked>
 </Control>
 <Control>
  <ControlClass>ProgressBar</ControlClass>
  <ItemName>ProgressBar</ItemName>
  <PropertyVal Name="InitialParent"></PropertyVal>
  <PropertyVal Name="Maximum">100</PropertyVal>
  <PropertyVal Name="Value">0</PropertyVal>
  <PropertyVal Name="Enabled">True</PropertyVal>
  <PropertyVal Name="AutoDeactivate">True</PropertyVal>
  <PropertyVal Name="HelpTag"></PropertyVal>
  <PropertyVal Name="Visible">True</PropertyVal>
  <PropertyVal Name="TabPanelIndex">0</PropertyVal>
  <PropertyVal Name="LockBottom"></PropertyVal>
  <PropertyVal Name="LockRight"></PropertyVal>
  <PropertyVal Name="LockTop"></PropertyVal>
  <PropertyVal Name="LockLeft"></PropertyVal>
  <PropertyVal Name="Height">12</PropertyVal>
  <PropertyVal Name="Width">313</PropertyVal>
  <PropertyVal Name="Top">52</PropertyVal>
  <PropertyVal Name="Left">13</PropertyVal>
  <PropertyVal Name="Scope">0</PropertyVal>
  <PropertyVal Name="Index">-2147483648</PropertyVal>
  <PropertyVal Name="Name">ProgressBar1</PropertyVal>
  <PropertyVal Name="TabIndex">2</PropertyVal>
  <PropertyVal Name="TabStop">True</PropertyVal>
  <PropertyVal Name="Super">ProgressBar</PropertyVal>
  <ControlIndex>2</ControlIndex>
  <Locked>0</Locked>
 </Control>
 <Control>
  <ControlClass>PushButton</ControlClass>
  <ItemName>PushButton</ItemName>
  <PropertyVal Name="InitialParent"></PropertyVal>
  <PropertyVal Name="Underline"></PropertyVal>
  <PropertyVal Name="Italic"></PropertyVal>
  <PropertyVal Name="Bold"></PropertyVal>
  <PropertyVal Name="TextUnit">0</PropertyVal>
  <PropertyVal Name="TextSize">0</PropertyVal>
  <PropertyVal Name="TextFont">System</PropertyVal>
  <PropertyVal Name="AutoDeactivate">True</PropertyVal>
  <PropertyVal Name="HelpTag"></PropertyVal>
  <PropertyVal Name="Visible">True</PropertyVal>
  <PropertyVal Name="Enabled">True</PropertyVal>
  <PropertyVal Name="Cancel">True</PropertyVal>
  <PropertyVal Name="Default"></PropertyVal>
  <PropertyVal Name="Caption">Cancel</PropertyVal>
  <PropertyVal Name="TabStop">True</PropertyVal>
  <PropertyVal Name="TabIndex">3</PropertyVal>
  <PropertyVal Name="TabPanelIndex">0</PropertyVal>
  <PropertyVal Name="LockBottom"></PropertyVal>
  <PropertyVal Name="LockRight"></PropertyVal>
  <PropertyVal Name="LockTop"></PropertyVal>
  <PropertyVal Name="LockLeft"></PropertyVal>
  <PropertyVal Name="Height">22</PropertyVal>
  <PropertyVal Name="Width">80</PropertyVal>
  <PropertyVal Name="Top">88</PropertyVal>
  <PropertyVal Name="Left">169</PropertyVal>
  <PropertyVal Name="Scope">0</PropertyVal>
  <PropertyVal Name="Index">-2147483648</PropertyVal>
  <PropertyVal Name="Name">stopDone</PropertyVal>
  <PropertyVal Name="Super">PushButton</PropertyVal>
  <ControlIndex>3</ControlIndex>
  <Locked>0</Locked>
 </Control>
 <Control>
  <ControlClass>ListBox</ControlClass>
  <ItemName>ListBox</ItemName>
  <PropertyVal Name="InitialParent"></PropertyVal>
  <PropertyVal Name="DataField"></PropertyVal>
  <PropertyVal Name="DataSource"></PropertyVal>
  <PropertyVal Name="AutoHideScrollbars">True</PropertyVal>
  <PropertyVal Name="ColumnsResizable"></PropertyVal>
  <PropertyVal Name="SelectionType">0</PropertyVal>
  <PropertyVal Name="RequiresSelection"></PropertyVal>
  <PropertyVal Name="EnableDragReorder"></PropertyVal>
  <PropertyVal Name="EnableDrag"></PropertyVal>
  <PropertyVal Name="Hierarchical"></PropertyVal>
  <PropertyVal Name="Underline"></PropertyVal>
  <PropertyVal Name="Italic"></PropertyVal>
  <PropertyVal Name="Bold"></PropertyVal>
  <PropertyVal Name="TextUnit">0</PropertyVal>
  <PropertyVal Name="TextSize">0</PropertyVal>
  <PropertyVal Name="TextFont">System</PropertyVal>
  <PropertyVal Name="_ScrollOffset">0</PropertyVal>
  <PropertyVal Name="_ScrollWidth">-1</PropertyVal>
  <PropertyVal Name="DefaultRowHeight">-1</PropertyVal>
  <PropertyVal Name="GridLinesVertical">0</PropertyVal>
  <PropertyVal Name="GridLinesHorizontal">0</PropertyVal>
  <PropertyVal Name="ScrollBarVertical">True</PropertyVal>
  <PropertyVal Name="ScrollbarHorizontal"></PropertyVal>
  <PropertyVal Name="HeadingIndex">-1</PropertyVal>
  <PropertyVal Name="InitialValue"></PropertyVal>
  <PropertyVal Name="UseFocusRing">True</PropertyVal>
  <PropertyVal Name="HasHeading"></PropertyVal>
  <PropertyVal Name="ColumnWidths"></PropertyVal>
  <PropertyVal Name="ColumnCount">1</PropertyVal>
  <PropertyVal Name="Border">True</PropertyVal>
  <PropertyVal Name="Enabled">True</PropertyVal>
  <PropertyVal Name="AutoDeactivate">True</PropertyVal>
  <PropertyVal Name="HelpTag"></PropertyVal>
  <PropertyVal Name="Visible">True</PropertyVal>
  <PropertyVal Name="TabStop">True</PropertyVal>
  <PropertyVal Name="TabIndex">4</PropertyVal>
  <PropertyVal Name="TabPanelIndex">0</PropertyVal>
  <PropertyVal Name="LockBottom"></PropertyVal>
  <PropertyVal Name="LockRight"></PropertyVal>
  <PropertyVal Name="LockTop"></PropertyVal>
  <PropertyVal Name="LockLeft"></PropertyVal>
  <PropertyVal Name="Height">100</PropertyVal>
  <PropertyVal Name="Width">313</PropertyVal>
  <PropertyVal Name="Top">128</PropertyVal>
  <PropertyVal Name="Left">13</PropertyVal>
  <PropertyVal Name="Scope">0</PropertyVal>
  <PropertyVal Name="Index">-2147483648</PropertyVal>
  <PropertyVal Name="Name">Log</PropertyVal>
  <PropertyVal Name="Super">ListBox</PropertyVal>
  <ControlIndex>4</ControlIndex>
  <Locked>0</Locked>
 </Control>
 <Control>
  <ControlClass>DisclosureTriangle</ControlClass>
  <ItemName>DisclosureTriangle</ItemName>
  <PropertyVal Name="AcceptFocus">False</PropertyVal>
  <PropertyVal Name="Facing">0</PropertyVal>
  <PropertyVal Name="Value">False</PropertyVal>
  <PropertyVal Name="Enabled">True</PropertyVal>
  <PropertyVal Name="AutoDeactivate">True</PropertyVal>
  <PropertyVal Name="HelpTag"></PropertyVal>
  <PropertyVal Name="Visible">True</PropertyVal>
  <PropertyVal Name="InitialParent"></PropertyVal>
  <PropertyVal Name="TabStop">True</PropertyVal>
  <PropertyVal Name="TabIndex">5</PropertyVal>
  <PropertyVal Name="TabPanelIndex">0</PropertyVal>
  <PropertyVal Name="LockBottom"></PropertyVal>
  <PropertyVal Name="LockRight"></PropertyVal>
  <PropertyVal Name="LockTop"></PropertyVal>
  <PropertyVal Name="LockLeft"></PropertyVal>
  <PropertyVal Name="Height">18</PropertyVal>
  <PropertyVal Name="Width">18</PropertyVal>
  <PropertyVal Name="Top">98</PropertyVal>
  <PropertyVal Name="Left">13</PropertyVal>
  <PropertyVal Name="Scope">0</PropertyVal>
  <PropertyVal Name="Index">-2147483648</PropertyVal>
  <PropertyVal Name="Name">DisclosureTriangle1</PropertyVal>
  <PropertyVal Name="Super">DisclosureTriangle</PropertyVal>
  <ControlIndex>5</ControlIndex>
  <Locked>0</Locked>
 </Control>
 <Control>
  <ControlClass>Label</ControlClass>
  <ItemName>Label</ItemName>
  <PropertyVal Name="InitialParent"></PropertyVal>
  <PropertyVal Name="DataField"></PropertyVal>
  <PropertyVal Name="DataSource"></PropertyVal>
  <PropertyVal Name="Underline"></PropertyVal>
  <PropertyVal Name="Italic"></PropertyVal>
  <PropertyVal Name="Bold"></PropertyVal>
  <PropertyVal Name="TextUnit">0</PropertyVal>
  <PropertyVal Name="TextSize">0</PropertyVal>
  <PropertyVal Name="TextFont">System</PropertyVal>
  <PropertyVal Name="AutoDeactivate">True</PropertyVal>
  <PropertyVal Name="HelpTag"></PropertyVal>
  <PropertyVal Name="Transparent">False</PropertyVal>
  <PropertyVal Name="Selectable">False</PropertyVal>
  <PropertyVal Name="Visible">True</PropertyVal>
  <PropertyVal Name="Enabled">True</PropertyVal>
  <PropertyVal Name="Multiline"></PropertyVal>
  <PropertyVal Name="TextColor">0</PropertyVal>
  <PropertyVal Name="TextAlign">0</PropertyVal>
  <PropertyVal Name="Text"></PropertyVal>
  <PropertyVal Name="TabIndex">6</PropertyVal>
  <PropertyVal Name="TabPanelIndex">0</PropertyVal>
  <PropertyVal Name="LockBottom"></PropertyVal>
  <PropertyVal Name="LockRight"></PropertyVal>
  <PropertyVal Name="LockTop"></PropertyVal>
  <PropertyVal Name="LockLeft"></PropertyVal>
  <PropertyVal Name="Height">20</PropertyVal>
  <PropertyVal Name="Width">280</PropertyVal>
  <PropertyVal Name="Top">31</PropertyVal>
  <PropertyVal Name="Left">17</PropertyVal>
  <PropertyVal Name="Scope">0</PropertyVal>
  <PropertyVal Name="Index">-2147483648</PropertyVal>
  <PropertyVal Name="Name">StaticText3</PropertyVal>
  <PropertyVal Name="TabStop">True</PropertyVal>
  <PropertyVal Name="Super">Label</PropertyVal>
  <ControlIndex>6</ControlIndex>
  <Locked>0</Locked>
 </Control>
 <Control>
  <ControlClass>PushButton</ControlClass>
  <ItemName>PushButton</ItemName>
  <PropertyVal Name="InitialParent"></PropertyVal>
  <PropertyVal Name="Underline"></PropertyVal>
  <PropertyVal Name="Italic"></PropertyVal>
  <PropertyVal Name="Bold"></PropertyVal>
  <PropertyVal Name="TextUnit">0</PropertyVal>
  <PropertyVal Name="TextSize">0</PropertyVal>
  <PropertyVal Name="TextFont">System</PropertyVal>
  <PropertyVal Name="AutoDeactivate">True</PropertyVal>
  <PropertyVal Name="HelpTag"></PropertyVal>
  <PropertyVal Name="Visible">True</PropertyVal>
  <PropertyVal Name="Enabled">True</PropertyVal>
  <PropertyVal Name="Cancel"></PropertyVal>
  <PropertyVal Name="Default"></PropertyVal>
  <PropertyVal Name="Caption">Start</PropertyVal>
  <PropertyVal Name="TabStop">True</PropertyVal>
  <PropertyVal Name="TabIndex">7</PropertyVal>
  <PropertyVal Name="TabPanelIndex">0</PropertyVal>
  <PropertyVal Name="LockBottom"></PropertyVal>
  <PropertyVal Name="LockRight"></PropertyVal>
  <PropertyVal Name="LockTop"></PropertyVal>
  <PropertyVal Name="LockLeft"></PropertyVal>
  <PropertyVal Name="Height">22</PropertyVal>
  <PropertyVal Name="Width">80</PropertyVal>
  <PropertyVal Name="Top">88</PropertyVal>
  <PropertyVal Name="Left">87</PropertyVal>
  <PropertyVal Name="Scope">0</PropertyVal>
  <PropertyVal Name="Index">-2147483648</PropertyVal>
  <PropertyVal Name="Name">startTry</PropertyVal>
  <PropertyVal Name="Super">PushButton</PropertyVal>
  <ControlIndex>7</ControlIndex>
  <Locked>0</Locked>
 </Control>
</block>
<block type="Module" ID="1792860159">
 <ObjName>versioncheck</ObjName>
 <ObjContainerID>0</ObjContainerID>
 <IsClass>1</IsClass>
 <Superclass>HTTPSocket</Superclass>
 <ItemFlags>1</ItemFlags>
 <IsInterface>0</IsInterface>
 <Compatibility></Compatibility>
 <HookInstance>
  <ItemName>DownloadComplete</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Sub DownloadComplete(url as string, httpStatus as integer, headers as internetHeaders, file as folderItem)</SourceLine>
   <SourceLine>//This event fires when the file being downloaded has completed downloading.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//It checks which file it downloaded (the myapp.upd file or the actual updates) and calles the appropriate method.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//It also check to see whether the user has cancelled and, if so, deletes the temporary file.</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>if updateWin.cancel = False then</SourceLine>
   <SourceLine>//See the comments in the HeadersReceived event for details</SourceLine>
   <SourceLine>updateWin.Log.AddRow("Transfer Complete")</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Complete"</SourceLine>
   <SourceLine>if update = False then</SourceLine>
   <SourceLine>checkforupdate()</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>launchUpdate()</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>Exception err as NilObjectException</SourceLine>
   <SourceLine>self.Close</SourceLine>
   <SourceLine>End Sub</SourceLine>
  </ItemSource>
 </HookInstance>
 <HookInstance>
  <ItemName>Connected</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Sub Connected()</SourceLine>
   <SourceLine>//The code below is executed when the socket first makes a connection to the server. This event will fire twice: first when the myapp.upd file is retrieved, and second when (if) the updated file is downloaded.</SourceLine>
   <SourceLine>//This code merely updates the status indicators in the updateWin to reflect the current state.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//The code check to see whether the update in question is a silent one and whether it's downloading the myupp.upd file or an actual update.</SourceLine>
   <SourceLine>//If it is a silent check and the file being downloaded is the myapp.upd file, then no user notification is given. Otherwise, the updateWin is changed to reflect the status.</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>if update = True and isSilent = False then</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Connection Established"</SourceLine>
   <SourceLine>updateWin.Log.AddRow("Connection Established")</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>End Sub</SourceLine>
  </ItemSource>
 </HookInstance>
 <HookInstance>
  <ItemName>Error</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Sub Error(code as integer)</SourceLine>
   <SourceLine>//HTTPSocket error codes and user notification</SourceLine>
   <SourceLine>if isSilent = True and update = True then</SourceLine>
   <SourceLineBreakpoint>2</SourceLineBreakpoint>
   <SourceLine>MsgBox("HTTP Error: " + str(code) + " occured while attempting to update.")</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>updateWin.Status.Caption = "An Error Ocurred While Updating."</SourceLine>
   <SourceLine>updateWin.Log.AddRow("Error " + str(code) + " ocurred during transfer")</SourceLine>
   <SourceLine>Select case code</SourceLine>
   <SourceLine>case 100</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 100, driver error")</SourceLine>
   <SourceLine>case 102</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 102, Connection Lost")</SourceLine>
   <SourceLine>case 103</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 103, Unresolved Host")</SourceLine>
   <SourceLine>case 105</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 105, Port Bind Error")</SourceLine>
   <SourceLine>case 106</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 106, Invalid Socket State")</SourceLine>
   <SourceLine>case 107</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 107, Invalid Port")</SourceLine>
   <SourceLine>case 108</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 108, Out Of Memory")</SourceLine>
   <SourceLine>case 400</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 400, Bad Request")</SourceLine>
   <SourceLine>case 401</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 401, Unauthorized")</SourceLine>
   <SourceLine>case 414</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 414, Request-URI Too Long")</SourceLine>
   <SourceLine>case 500</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 500, Internal Server Error")</SourceLine>
   <SourceLine>case 505</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 505, HTTP Version Not Supported")</SourceLine>
   <SourceLine>case 509</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Returned Was: 509, Bandwidth Limit Exceeded")</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Error Type Unknown or Undefined. Error Code:" + str(code))</SourceLine>
   <SourceLine>end Select</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>updateWin.ProgressBar1.Value = updateWin.ProgressBar1.Maximum</SourceLine>
   <SourceLine>updateWin.stopDone.Caption = "Close"</SourceLine>
   <SourceLine>updateWin.startTry.Caption = "Retry"</SourceLine>
   <SourceLine>updateWin.startTry.Enabled = True</SourceLine>
   <SourceLine>Exception err as NilObjectException</SourceLine>
   <SourceLine>self.Close</SourceLine>
   <SourceLine>End Sub</SourceLine>
  </ItemSource>
 </HookInstance>
 <HookInstance>
  <ItemName>ReceiveProgress</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Sub ReceiveProgress(bytesReceived as integer, totalBytes as integer, newData as string)</SourceLine>
   <SourceLine>//This event fires several times per second while a file is being downloaded. The code below merely updates the updateWin UI to reflect the current state of the transfer, </SourceLine>
   <SourceLine>//as well as checking to see whether the user has clicked the cancel button.</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>if updateWin.cancel = False then</SourceLine>
   <SourceLine>//See the comments in the HeadersReceived event for details</SourceLine>
   <SourceLine>updateWin.ProgressBar1.value=(bytesReceived/totalBytes)*100</SourceLine>
   <SourceLine>updateWin.StaticText3.Caption = prettyBytes(bytesReceived)</SourceLine>
   <SourceLine>if updateWin.Log.Cell(updateWin.Log.LastIndex,0) &lt;&gt; "Beginning Transfer" then</SourceLine>
   <SourceLine>updateWin.Log.AddRow("Beginning Transfer")</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>Select case updateWin.Status.Caption</SourceLine>
   <SourceLine>case "Receiving"</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Receiving."</SourceLine>
   <SourceLine>case "Receiving."</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Receiving.."</SourceLine>
   <SourceLine>case "Receiving.."</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Receiving..."</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Receiving"</SourceLine>
   <SourceLine>end Select</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>updInfo.localFile.Delete</SourceLine>
   <SourceLine>MsgBox("Transfer Aborted")</SourceLine>
   <SourceLine>updateWin.Log.AddRow("Update Aborted!")</SourceLine>
   <SourceLine>self.Disconnect</SourceLine>
   <SourceLine>self.Close</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>End Sub</SourceLine>
  </ItemSource>
 </HookInstance>
 <HookInstance>
  <ItemName>HeadersReceived</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Sub HeadersReceived(headers as internetHeaders, httpStatus as integer)</SourceLine>
   <SourceLine>//Here we catch several common HTTP status codes for redirection and authorization and File Not Found Errors</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//Each redirect increments the redirCount value by one. More than five redirects and we give up.</SourceLine>
   <SourceLine>Static redirCount As Integer</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>Select case httpStatus</SourceLine>
   <SourceLine>Case 301, 302  //Moved</SourceLine>
   <SourceLine>redirCount = redirCount + 1</SourceLine>
   <SourceLine>if redirCount &gt; 5 then</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Server Error. Please Try Again Later."</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Server reports 301 or 302: Moved.")</SourceLine>
   <SourceLine>updateWin.Log.AddRow("          Already followed five redirects. Fail.")</SourceLine>
   <SourceLine>updateWin.startTry.Caption = "Retry"</SourceLine>
   <SourceLine>updateWin.startTry.Enabled = True</SourceLine>
   <SourceLine>updateWin.stopDone.Caption = "Close"</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Server reports 301 or 302: Moved. Following Redirect")</SourceLine>
   <SourceLine>updateaddress = headers.CommaSeparatedValues("Location")  //retrieve redirect URI from header, put it in the updateaddress property</SourceLine>
   <SourceLine>updInfo.localFile.Delete </SourceLine>
   <SourceLine>checkVer(isSilent)</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>case 403  //Access Denied or Password Required</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Server Error. Please Try Again Later."</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Server reports 403: Forbidden! Unable To Download")</SourceLine>
   <SourceLine>updateWin.startTry.Caption = "Retry"</SourceLine>
   <SourceLine>updateWin.startTry.Enabled = True</SourceLine>
   <SourceLine>updateWin.stopDone.Caption = "Close"</SourceLine>
   <SourceLine>self.Close   //Nothing can be done: die</SourceLine>
   <SourceLine>case 404  //File not found</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Server Error. Please Try Again Later."</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Server reports 404: File Not Found! Unable To Download!")</SourceLine>
   <SourceLine>updateWin.startTry.Caption = "Retry"</SourceLine>
   <SourceLine>updateWin.startTry.Enabled = True</SourceLine>
   <SourceLine>updateWin.stopDone.Caption = "Close"</SourceLine>
   <SourceLine>updateWin.cancel = True</SourceLine>
   <SourceLine>self.Close  //Nothing can be done: die</SourceLine>
   <SourceLine>case 200  //Everything's OK, proceed normally</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Receiving data."</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Headers received")</SourceLine>
   <SourceLine>else   //If the server sends back a response code other than 301, 302, 403, 404, or 200</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Server Error. Please Try Again Later."</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     Unexpected HTTP Response: " + str(httpStatus) + ". Cannot Continue.")</SourceLine>
   <SourceLine>updateWin.startTry.Caption = "Retry"</SourceLine>
   <SourceLine>updateWin.stopDone.Caption = "Close"</SourceLine>
   <SourceLine>self.Close   //Nothing can be done: die</SourceLine>
   <SourceLine>end Select</SourceLine>
   <SourceLine>End Sub</SourceLine>
  </ItemSource>
 </HookInstance>
 <Method>
  <ItemName>checkVer</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Sub checkVer(silence As Boolean)</SourceLine>
   <SourceLine>//This method is the first to be called. It performs several functions then connects to your webserver (defined in the updateaddress string variable) and downloads a small text file. Also defined</SourceLine>
   <SourceLine>//here is the HTTP "User-Agent" string. You can change this to whatever you like, and it should show up in your server's logs (this is a neat little way to see how often people are updating.)</SourceLine>
   <SourceLine>//Refer to the sample myapp.upd file included in the archive for a look at what the update file contains.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//Then a check is first performed to see whether this is a "silent" update or not. If it is, then the updateWin window is hidden.</SourceLine>
   <SourceLine>//The parameter "silence" is passed from the calling statement, true for silent false for not silent. If not silent, the progress bar is made visible</SourceLine>
   <SourceLine>//and the window is shown.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//Next, the updateFile FolderItem is instantiated in the system's temporary folder.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//You can name your update file anything you want provided you update the code in this method as well as in the downloadcomplete event.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//After connecting to the server, the file is downloaded to the folderitem defined below as updFile</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//the me.get() method will cause several of the event handlers to fire as the download commences (connected), is going (HeadersRecieved, ReceiveProgress), </SourceLine>
   <SourceLine>//ends (DownloadComplete), or errors out (Error).</SourceLine>
   <SourceLine>updateWin.cancel = False</SourceLine>
   <SourceLine>updateWin.startTry.Enabled = False</SourceLine>
   <SourceLine>isSilent = silence</SourceLine>
   <SourceLine>if isSilent = True Then</SourceLine>
   <SourceLine>updateWin.Visible = False</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>updInfo = New UpdateInformation</SourceLine>
   <SourceLine>updInfo.localFile = SpecialFolder.Temporary.Child("myapp.upd")</SourceLine>
   <SourceLine>updateWin.Log.AddRow("Connecting to Server")</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Attempting Connection..."</SourceLine>
   <SourceLine>me.SetRequestHeader("User-Agent", "App Updater 1.8")</SourceLine>
   <SourceLine>me.Get(updateaddress, updInfo.localFile)</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>Exception Err</SourceLine>
   <SourceLine>handleException(Err)</SourceLine>
   <SourceLine>End Sub</SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <AliasName></AliasName>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
  <ItemParams>silence As Boolean</ItemParams>
  <ItemResult></ItemResult>
 </Method>
 <Method>
  <ItemName>getupdate</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Sub getupdate()</SourceLine>
   <SourceLine>//This method connects to your webserver and downloads the updated version of the app  from the URI specified in the update file that was downloaded in </SourceLine>
   <SourceLine>//the checkver method and parsed in the checkforupdate method.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//The code below instantiates the upgrdFile FolderItem in the user's Temporary Files folder using the name of the file being downloaded.</SourceLine>
   <SourceLine>//For example, http://www.example.com/downloads/updates/myApp.exe would yield "myApp.exe" as the upgradename</SourceLine>
   <SourceLine>//The file is then downloaded by passing the updInfo(2) property to Get() along with the upgrade FolderItem as its target.</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>if updateWin.Visible = False then</SourceLine>
   <SourceLine>updateWin.Visible = True</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>updInfo.fileName = NthField(updInfo.URL, "/", CountFields(updInfo.URL, "/"))</SourceLine>
   <SourceLine>if updInfo.fileName = "" then</SourceLine>
   <SourceLine>updInfo.fileName = NthField(updInfo.URL, "/", (CountFields(updInfo.URL, "/") - 1))</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>if usebrowser = False then</SourceLine>
   <SourceLine>updInfo.localFile = SpecialFolder.Temporary.Child(updInfo.fileName)</SourceLine>
   <SourceLine>me.SetRequestHeader("User-Agent", "App Updater 1.8")</SourceLine>
   <SourceLine>me.Get(updInfo.URL, updInfo.localFile)</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>ShowURL(updInfo.URL)</SourceLine>
   <SourceLine>updateWin.stopDone.Caption = "Done" </SourceLine>
   <SourceLine>updateWin.startTry.Enabled = False</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>End Sub</SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <AliasName></AliasName>
  <ItemFlags>33</ItemFlags>
  <Shared>0</Shared>
  <ItemParams></ItemParams>
  <ItemResult></ItemResult>
 </Method>
 <Method>
  <ItemName>checkforupdate</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Sub checkforupdate()</SourceLine>
   <SourceLine>//This method is called by the DownloadComplete event if the update property is set to false.</SourceLine>
   <SourceLine>//The update property is instantiated as false and is only set to true after this method runs.</SourceLine>
   <SourceLine>//See the Notes section for details about using the update property.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//The code below assumes that the file containing the version info which was downloaded is named "myapp.upd"</SourceLine>
   <SourceLine>//You can change this to whatever you like provided you update the necessary properties. See the Notes section for info about using the myapp.upd file.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//The parseUpdFile method is called which returns a Boolean based on success or failure to parse the myapp.upd file.</SourceLine>
   <SourceLine>//The parseUpdFile method will populate the updInfo UpdateInformation class:</SourceLine>
   <SourceLine>//     "Name" is the name of the program; Required</SourceLine>
   <SourceLine>//     "Version" is the latest available version number, as a str(double); Required</SourceLine>
   <SourceLine>//     "URL" is the URI to download the latest version of the program; Required</SourceLine>
   <SourceLine>//     "RequireConfirm" is whether or not to show a special message to the user (see notes on RequireOK); Optional</SourceLine>
   <SourceLine>//     "ConfirmTitle" is the window title of the special message, if used; Optional</SourceLine>
   <SourceLine>//     "ConfirmMessage" is the special message itself; Optional</SourceLine>
   <SourceLine>//     "FileType" is the File Type declaration. At this time, this isn't used much; Optional</SourceLine>
   <SourceLine>//     "Verify" is whether an MD5 checksum is provided/will be checked</SourceLine>
   <SourceLine>//     "Checksum" is the MD5sum (hex) of the file being downloaded</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//The currentversion value is then compared the the "Version" value. If the currentversion value is greater than or equal to the "Version" value, then the user is notified that they have the latest version.</SourceLine>
   <SourceLine>//Otherwise, the user is asked whether they want to update to the latest version. If they click yes, then the update property is set to True and the getupdate() method is called.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//The myapp.upd file can include four optional parameters: requireOK, confimTitle, confirmMessage, and filetype. The first three parameters allow you to optionally require the user to read</SourceLine>
   <SourceLine>//a custom message before continuing. This message can be any string and is diplayed in a message box. If no custom message is provided, the default message is used.</SourceLine>
   <SourceLine>//Refer to the notes section for how to use this.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//The fourth parameter, filetype, can tell the program what type of file the upgrade file is. There are two built-in possibilities: "exe" and "arc" for "executable" and "archive" respectively.</SourceLine>
   <SourceLine>//The use of this parameter is useful if your target platform is POSIX compliant (Unix-type systems like Linux) and you are using an executable file as the upgrade file.</SourceLine>
   <SourceLine>//Since most POSIX systems require that executable be explicitly marked as executable, setting this parameter to "exe" will cause the launchupdate method to attempt</SourceLine>
   <SourceLine>//to chmod +x the file before executing it. The default is "arc" which does nothing to the file. Future editions of this project may expand this.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//Note: Any or all of the optional paramers may be used. However, if requireConfirm is NOT set to "yes" then the other two associated parameters are ignored.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//Refer to the Notes section on further uses for the myapp.upd file.</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>if parseUpdFile() = False then    //If failed, error out</SourceLine>
   <SourceLine>Raise new UnsupportedFormatException</SourceLine>
   <SourceLine>Else</SourceLine>
   <SourceLine>try</SourceLine>
   <SourceLine>if currentversion &gt;= updInfo.Version Then      //compare the versions</SourceLine>
   <SourceLine>if Not isSilent then</SourceLine>
   <SourceLine>MsgBox("You Have The Latest Version of " + updInfo.Name)     //Up to date already</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Done. Already the latest version."</SourceLine>
   <SourceLine>updateWin.Log.AddRow("All operations completed. No new versions were available.")</SourceLine>
   <SourceLine>updateWin.startTry.Enabled = True</SourceLine>
   <SourceLine>updateWin.startTry.Caption = "Retry"</SourceLine>
   <SourceLine>updateWin.stopDone.Caption = "Done"</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>self.Close            //Die</SourceLine>
   <SourceLine>else </SourceLine>
   <SourceLine>//Ask for confirmation, update status and log</SourceLine>
   <SourceLine>updateWin.Status.Caption = "New version available. Please confirm download."</SourceLine>
   <SourceLine>updateWin.Log.AddRow("New version found. Awaiting user confirmation.")</SourceLine>
   <SourceLine>dim x as Integer</SourceLine>
   <SourceLine>if updInfo.RequireConfirm Then</SourceLine>
   <SourceLine>x = MsgBox(updInfo.ConfirmMessage, 33, updInfo.ConfirmMessage)</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>x = MsgBox("A New Version Is Available!" + EndOfLine + "Would You Like To Download The Update Now?", 33, "New Version Available")    //Generic confirmation</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>if x = 1 then</SourceLine>
   <SourceLine>//User clicked Yes</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Downloading latest version..."</SourceLine>
   <SourceLine>updateWin.Log.AddRow("Download commenced.")</SourceLine>
   <SourceLine>update = True     //Update is available</SourceLine>
   <SourceLine>getupdate()        //So get it</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>//User clicked No</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Upgrade Canceled."</SourceLine>
   <SourceLine>updateWin.Log.AddRow("User declined to upgrade. Done.")</SourceLine>
   <SourceLine>updateWin.startTry.Enabled = True</SourceLine>
   <SourceLine>updateWin.startTry.Caption = "Retry"</SourceLine>
   <SourceLine>updateWin.stopDone.Caption = "Done"</SourceLine>
   <SourceLine>updateWin.ProgressBar1.Value = updateWin.ProgressBar1.Maximum</SourceLine>
   <SourceLine>self.Close     //Die</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>Catch</SourceLine>
   <SourceLine>MsgBox("Error!")</SourceLine>
   <SourceLine>self.Close</SourceLine>
   <SourceLine>end try</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>End Sub</SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <AliasName></AliasName>
  <ItemFlags>33</ItemFlags>
  <Shared>0</Shared>
  <ItemParams></ItemParams>
  <ItemResult></ItemResult>
 </Method>
 <Method>
  <ItemName>launchUpdate</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Sub launchUpdate()</SourceLine>
   <SourceLine>//This is the final step in upgrading the program.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//The user is asked whether they want to launch the update now or save it to their desktop for later use.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//In either event, both temporary files will be deleted at the end. Cleanliness is next to godliness...</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//The update is launched using the operating system's built-in file associations. For example, if the upgrade file is a ZIP or RAR archive file, then the user's</SourceLine>
   <SourceLine>//default archive program will launch with the upgrade file. If the file is an executable, at least under Windows, then the executable will be executed. To specify</SourceLine>
   <SourceLine>//the filetype, refer to the notes in the checkforupdates method.</SourceLine>
   <SourceLine>//</SourceLine>
   <SourceLine>//This whole method needs to be improved substantially to accommodate more filetypes and to more intelligently run them.</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>dim fileVerified As Boolean = True</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>if updInfo.Verify then</SourceLine>
   <SourceLine>fileVerified = verifyMD5()</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>if fileVerified then</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>updateWin.Status.Caption = "Complete"</SourceLine>
   <SourceLine>dim x As Integer = MsgBox("Download Complete, Would You Like To Launch The Update?", 36, "Download Complete")</SourceLine>
   <SourceLine>if x = 6 then</SourceLine>
   <SourceLine>updateWin.Status.Caption = "Launching Update"</SourceLine>
   <SourceLine>#if TargetLinux then</SourceLine>
   <SourceLine>if Uppercase(updInfo.FileType) = "EXE" then</SourceLine>
   <SourceLine>dim sh As new Shell</SourceLine>
   <SourceLine>sh.Execute("chmod +x " + updInfo.localFile.AbsolutePath)</SourceLine>
   <SourceLine>if sh.ErrorCode &lt;&gt; 0 then</SourceLine>
   <SourceLine>MsgBox("Unable to set execute bit!")</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>updInfo.localFile.Launch(True)</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>updInfo.localFile.Launch(True)</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>#else</SourceLine>
   <SourceLine>updInfo.localFile.Launch(True)</SourceLine>
   <SourceLine>#endif</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>//Quit                        //Uncomment this line to kill the current app</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>updateWin.Status.Caption = "New Version Saved To Desktop"</SourceLine>
   <SourceLine>updateWin.Log.AddRow("Upgrade Not Installed. File saved to desktop.")</SourceLine>
   <SourceLine>MsgBox("The Update File Has Been Saved To Your Desktop")</SourceLine>
   <SourceLine>updInfo.localFile.MoveFileTo SpecialFolder.Desktop</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>MsgBox("File Failed Verification!")</SourceLine>
   <SourceLine>self.Close</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>updateWin.stopDone.Caption = "Done"</SourceLine>
   <SourceLine>updateWin.status.Caption = "Complete"</SourceLine>
   <SourceLine>updateWin.startTry.Enabled = False</SourceLine>
   <SourceLine>self.Close</SourceLine>
   <SourceLine>End Sub</SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <AliasName></AliasName>
  <ItemFlags>33</ItemFlags>
  <Shared>0</Shared>
  <ItemParams></ItemParams>
  <ItemResult></ItemResult>
 </Method>
 <Method>
  <ItemName>parseUpdFile</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Function parseUpdFile() As Boolean</SourceLine>
   <SourceLine>dim myAppFile As FolderItem = SpecialFolder.Temporary.Child("myapp.upd")</SourceLine>
   <SourceLine>dim tis As TextInputStream</SourceLine>
   <SourceLine>dim lineFromFile As String</SourceLine>
   <SourceLine>tis = tis.Open(myAppFile)</SourceLine>
   <SourceLine>While Not tis.EOF</SourceLine>
   <SourceLine>lineFromFile = tis.ReadLine</SourceLine>
   <SourceLine>if left(lineFromFile, 2).Trim &lt;&gt; "//" and InStr(lineFromFile, "=") &gt; 0 then</SourceLine>
   <SourceLine>Select case Uppercase(NthField(lineFromFile, "=", 1)).Trim</SourceLine>
   <SourceLine>case "NAME"</SourceLine>
   <SourceLine>updInfo.Name = NthField(lineFromFile, "=", 2).Trim</SourceLine>
   <SourceLine>case "VERSION"</SourceLine>
   <SourceLine>updInfo.Version = Val(NthField(lineFromFile, "=", 2))</SourceLine>
   <SourceLine>case "URL"</SourceLine>
   <SourceLine>updInfo.URL = NthField(lineFromFile, "=", 2).Trim</SourceLine>
   <SourceLine>case "REQUIRE CONFIRM"</SourceLine>
   <SourceLine>if Uppercase(NthField(lineFromFile, "=", 2).Trim) = "YES" then updInfo.RequireConfirm = True</SourceLine>
   <SourceLine>case "CONFIRM TITLE"</SourceLine>
   <SourceLine>updInfo.ConfirmTitle = NthField(lineFromFile, "=", 2).Trim</SourceLine>
   <SourceLine>case "CONFIRM MESSAGE"</SourceLine>
   <SourceLine>updInfo.ConfirmMessage = NthField(lineFromFile, "=", 2).Trim</SourceLine>
   <SourceLine>case "FILETYPE"</SourceLine>
   <SourceLine>updInfo.FileType = NthField(lineFromFile, "=", 2).Trim</SourceLine>
   <SourceLine>case "CHECKMD5"</SourceLine>
   <SourceLine>If Uppercase(NthField(lineFromFile, "=", 2).Trim) = "YES" Then updInfo.Verify = True</SourceLine>
   <SourceLine>case "MD5SUM"</SourceLine>
   <SourceLine>updInfo.Checksum = NthField(lineFromFile, "=", 2).Trim</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>Continue</SourceLine>
   <SourceLine>end Select</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>wend</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>Return True</SourceLine>
   <SourceLine>End Function</SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <AliasName></AliasName>
  <ItemFlags>33</ItemFlags>
  <Shared>0</Shared>
  <ItemParams></ItemParams>
  <ItemResult>Boolean</ItemResult>
 </Method>
 <Method>
  <ItemName>prettyBytes</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Function prettyBytes(bytes As Integer) As string</SourceLine>
   <SourceLine>//Makes the display of bytes downloaded prettier</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>dim prettyString As String</SourceLine>
   <SourceLine>dim prettyDouble As Double</SourceLine>
   <SourceLine>if bytes &lt;= 512000 then</SourceLine>
   <SourceLine>prettyDouble = bytes / 1024</SourceLine>
   <SourceLine>prettyString = "KB"</SourceLine>
   <SourceLine>ElseIf bytes &gt; 512000 then</SourceLine>
   <SourceLine>prettyDouble = bytes / 1048576</SourceLine>
   <SourceLine>prettyString = "MB"</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>prettyString =format(prettyDouble, "###,##0.00") + prettyString</SourceLine>
   <SourceLine>Return prettyString</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>End Function</SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <AliasName></AliasName>
  <ItemFlags>33</ItemFlags>
  <Shared>0</Shared>
  <ItemParams>bytes As Integer</ItemParams>
  <ItemResult>string</ItemResult>
 </Method>
 <Method>
  <ItemName>verifyMD5</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Function verifyMD5() As Boolean</SourceLine>
   <SourceLine>//Calculates the MD5 Checksum of the file, converts the checksum into hex, and compares it to the checksum provided in the update file.</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>dim checkSum, fileInput, s As String</SourceLine>
   <SourceLine>dim tis As TextInputStream</SourceLine>
   <SourceLine>dim v as integer</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>updateWin.Log.AddRow("Verifying File Integrity")</SourceLine>
   <SourceLine>tis = tis.Open(updInfo.localFile)</SourceLine>
   <SourceLine>fileInput = tis.ReadAll</SourceLine>
   <SourceLine>tis.Close</SourceLine>
   <SourceLine>checkSum = MD5(fileInput)</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>for n as Integer=1 to LenB(checkSum)</SourceLine>
   <SourceLine>v = AscB(MidB(checkSum, n, 1))</SourceLine>
   <SourceLine>s = s + RightB("00"+Hex(v),2)+""</SourceLine>
   <SourceLine>next</SourceLine>
   <SourceLine>checkSum =  LeftB(s, LenB(s)-LenB(""))</SourceLine>
   <SourceLine></SourceLine>
   <SourceLine>if checkSum &lt;&gt; updInfo.Checksum then</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     File Not Verified.")</SourceLine>
   <SourceLine>Return False</SourceLine>
   <SourceLine>else</SourceLine>
   <SourceLine>updateWin.Log.AddRow("     File Verified!")</SourceLine>
   <SourceLine>Return True</SourceLine>
   <SourceLine>end if</SourceLine>
   <SourceLine>End Function</SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <AliasName></AliasName>
  <ItemFlags>33</ItemFlags>
  <Shared>0</Shared>
  <ItemParams></ItemParams>
  <ItemResult>Boolean</ItemResult>
 </Method>
 <Method>
  <ItemName>handleException</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Sub handleException(err As RuntimeException)</SourceLine>
   <SourceLine>MsgBox(Err.Message)</SourceLine>
   <SourceLine>updateWin.Close</SourceLine>
   <SourceLine>Self.Close</SourceLine>
   <SourceLine>End Sub</SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <AliasName></AliasName>
  <ItemFlags>33</ItemFlags>
  <Shared>0</Shared>
  <ItemParams>err As RuntimeException</ItemParams>
  <ItemResult></ItemResult>
 </Method>
 <Note>
  <ItemName>changelog</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <NoteLine>changelog</NoteLine>
   <NoteLine>This is version 1.9 of the AppUpdater REALbasic Class from Boredom Software.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Changes from 1.8:</NoteLine>
   <NoteLine>*Significant refactoring</NoteLine>
   <NoteLine>*Replaced the updInfo array with a class</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Changes from 1.7:</NoteLine>
   <NoteLine>*Cancelling actually works now.</NoteLine>
   <NoteLine>*Progress bar gets updated properly if a new version is downloaded after a silent check.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Changes from 1.6:</NoteLine>
   <NoteLine>*Removed fixBytes() method as it became redundant</NoteLine>
   <NoteLine>*Modified prettyBytes() per anonymous suggestion</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Changes from 1.5:</NoteLine>
   <NoteLine>*MD5 Verification</NoteLine>
   <NoteLine>*Minor cleanup</NoteLine>
   <NoteLine>*Changed license to GNU LGPL 3.0</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Jumped over versions 1.3 and 1.4 because this is a pretty major update.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Changes From Version 1.2:</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>*Refactored most of the code</NoteLine>
   <NoteLine>*Added custom message options</NoteLine>
   <NoteLine>*redid the comments to make the code more readable!</NoteLine>
   <NoteLine>*changed the format of the myapp.upd file to be more robust and flexible</NoteLine>
   <NoteLine>*Added support for 301 and 302 HTTP redirects</NoteLine>
   <NoteLine>*General Maintenance</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Changes From Version 1.0:</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>*Fixed the progressbar</NoteLine>
   <NoteLine>*Fixed an error when comparing version numbers</NoteLine>
   <NoteLine>*Added functionality to read the HTTP headers of a download to determine the filesize</NoteLine>
   <NoteLine>*Added the fixBytes method to convert raw bytes into KB, MB, etc.</NoteLine>
   <NoteLine>*Refactored the silent update so that it actually works right :-|</NoteLine>
   <NoteLine>*Several minor bug fixes and flow control optimizations.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Updating Your App from Version 1.0, 1.1 or version 1.2:</NoteLine>
   <NoteLine>is going to be a pain in the ass. You should just basically replace the old version with this one and treat it as though it's the first time you've seen it.</NoteLine>
   <NoteLine>But updating is recommended as this version is vastly superior, plus I will no longer be providing support for 1.0 - 1.2!</NoteLine>
  </ItemSource>
  <ItemFlags>0</ItemFlags>
 </Note>
 <Note>
  <ItemName>Legal Notes &amp; Stuff</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <NoteLine>Legal Notes &amp; Stuff</NoteLine>
   <NoteLine>This project is free software, licensed under the GNU Lesser General Public License version 3.0 (http://www.gnu.org/copyleft/lesser.html)</NoteLine>
   <NoteLine>Copyright (c)2008-10 Boredom Software, All Rights Reserved</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Requirements:</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>You are free to use and modify this project, compile it into your free or commercial program(s) for no fee. Any changes or modifications you </NoteLine>
   <NoteLine>make must be made available under the same license.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>If you do use this in your program, I'd appreciate knowing about it. You can E-mail me at andrew@boredomsoft.org</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Any questions, comments, and suggestions are also welcome!</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine></NoteLine>
  </ItemSource>
  <ItemFlags>0</ItemFlags>
 </Note>
 <Note>
  <ItemName>General Notes</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <NoteLine>General Notes</NoteLine>
   <NoteLine>This project, if not changed, will connect to my webserver and download a dummy file when run. I don't have any plans on discontinuing this, but I make no promise that</NoteLine>
   <NoteLine>the dummy file will always be there. Have a look at the URL in the updateaddress property for the update file's address (should be the same file as is distributed with the source.)</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine></NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Properties And Their Meanings/uses</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>updateWin.cancel</NoteLine>
   <NoteLine>       This property is instantiated as false and gets set to True if the user clicks on the cancel button in updateWin. The receiveprogress checks for this.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>currentversion</NoteLine>
   <NoteLine>       The numeric version number of the current app. This value is a double so that decimal numbers like 1.005 can be used. Version numbers like</NoteLine>
   <NoteLine>       1.21.32 or 1.43a cannot be used unless you change the datatype to Variant or String.</NoteLine>
   <NoteLine>       If you change the datatype, you will need to change how the class compares the currentversion value with the newversion value in the checkforupdate method.</NoteLine>
   <NoteLine>       It's probably a better idea to NOT hard code this value but to read it from a file or registry key. Not implemented here for the sake of simplicity.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>isSilent</NoteLine>
   <NoteLine>       This is a Boolean value which is set by passing a boolean in to the checkVer method (which is how you should call this class, see the MainWin.Pushbutton1 &amp; 2 's Action event). </NoteLine>
   <NoteLine>       When set to False, the updateWin is shown throughout the process.</NoteLine>
   <NoteLine>       When set to True, the updateWin is only shown if a new version is available and the user is prompted to download the new version. </NoteLine>
   <NoteLine>       Set this to True if you plan on using some method which will call this class periodically, as in an automatic update scheme.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>update </NoteLine>
   <NoteLine>       This Boolean value is used by the class in the DownloadComplete event to decide which set of code to execute. You should not alter this property.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>UpdateInformation Class</NoteLine>
   <NoteLine>        This class has several properties which describe the upgrade listed in the update file. See the parseUpdFile() method and the notes in the </NoteLine>
   <NoteLine>        checkforupdate() method. This</NoteLine>
   <NoteLine>        array replaces the old string array from previous versions.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>updateaddress</NoteLine>
   <NoteLine>       This is a string value that needs to be changed to point to the small text file on your web server that contains information about the latest version that is available. </NoteLine>
   <NoteLine>       Throughout this class, that file called myapp.upd. As this is merely a text file, it can be called anything you want. However, if you choose a name other than </NoteLine>
   <NoteLine>       myapp.upd, you will need to change all references to myapp.upd accordingly. In the comments throughout this class, I refer to this file as the update file. </NoteLine>
   <NoteLine>       This should not be confused with the upgrade file, which is the actual updated version of the program. so, update = text file, upgrade = executable (or archive)</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>usebrowser</NoteLine>
   <NoteLine>       This is a Boolean value which is by default set to False. Set this value to True if you want to launch the upgradeURI in the user's browser rather than </NoteLine>
   <NoteLine>      directly download it. This is useful if you host your upgrade file on a third party server that doesn't allow direct downloads like File Hippo or Download.com. </NoteLine>
   <NoteLine>      If you set this value to True then make sure that the upgradeURI value points to the appropriate web page.</NoteLine>
   <NoteLine></NoteLine>
  </ItemSource>
  <ItemFlags>0</ItemFlags>
 </Note>
 <Note>
  <ItemName>Read me</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <NoteLine>Read me</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>This is a method to have the ability to check for a newer version of your program online either via user action (a "Check for Updates" button, for example) or </NoteLine>
   <NoteLine>through automatic means.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>You will need to have access to some sort of online file hosting to use this. Access to the file you upload must be via a direct HTTP GET request; this class does </NoteLine>
   <NoteLine>not support any dynamic page generation or authentication (yet). It does honor HTTP redirects using the 301 or 302 HTTP status codes.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>The update file which is queried by this class must contain the following (see the example file, myapp.upd, included for syntax and all): the app's name; the most </NoteLine>
   <NoteLine>current version number; the URI to download the latest version.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>The optional parameters in the myapp.upd file are requireOK, messageTitle, messageText, and filetype. They are discussed in more detail in the comments of the </NoteLine>
   <NoteLine>checkforupdates and parseUpdFile methods, as well as in the myapp.upd Notes. </NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>The default behavior of this class is to download the updated version of the app, save the upgrade to SpecialFolder.Temporary.Child(updInfo(1)), launch the </NoteLine>
   <NoteLine>downloaded executable (or archive using the system file associations), then close itself. You can override this behavior by changing the usebrowser property </NoteLine>
   <NoteLine>to true. This will then load the URI passed in the update file in the user's default browser (for example, if you use something like FileFront to host the upgrade </NoteLine>
   <NoteLine>and the user needs to fill in extra data or CAPTCHA's)</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Refer to the Notes section for a run down of all the properties, as well as to know which ones need to be changed and which ones should be left alone.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>See the MainWin for examples of how to call the class both silently and non-silently.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>If you run this project without modification, it (should) connect to my webserver and download a dummy update. This way, you can see how it works without actually</NoteLine>
   <NoteLine>mucking around in the code or uploading anything to you server. However, I can't guarentee that this will always be the case!</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine></NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Reading the comments before the code in each method/event should prove enlightening to anyone haveing difficulties! </NoteLine>
   <NoteLine>Nevertheless, if you have questions, comments, suggestions, or criticism please feel free to e-mail me at andrew@boredomsoft.org</NoteLine>
  </ItemSource>
  <ItemFlags>0</ItemFlags>
 </Note>
 <Note>
  <ItemName>What not To Touch</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <NoteLine>What not To Touch</NoteLine>
   <NoteLine>There are a number of methods, events and properties in this class that you needn't mess with unless you really want to.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Things you can change if you feel like it:</NoteLine>
   <NoteLine>*Connected event</NoteLine>
   <NoteLine>*Error event</NoteLine>
   <NoteLine>*HeadersReceived event</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Things you can change if you know a better way (and will tell me!)</NoteLine>
   <NoteLine>* the prettyBytes Method simply converts raw byte numbers into nicer KB and MB numbers. </NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Things you shouldn't fuck with unless you know what you're doing. These are all automatically populated, so don't worry about them.</NoteLine>
   <NoteLine>* updateWin.cancel property</NoteLine>
   <NoteLine>* update property</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Everything else requires at least a little attention on your part.</NoteLine>
  </ItemSource>
  <ItemFlags>0</ItemFlags>
 </Note>
 <Note>
  <ItemName>Definitions</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <NoteLine>Definitions</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Throughout the comments I try to use a uniform set of terms to discuss various things. Here's the word list:</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>update, upd</NoteLine>
   <NoteLine>        I use the term "update" or the abbreviation "upd" to refer to the act of checking for an updated version of the app. I also use it to refer to the small text</NoteLine>
   <NoteLine>        file that's downloaded containing the version information (called "myapp.upd" throughout)</NoteLine>
   <NoteLine>        The property called "update" is used to determine whether the current file being downloaded is the update file or the upgrade file. It starts out as false and then is</NoteLine>
   <NoteLine>        changed to true in the checkforupdate method.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>upgrade, upgrd</NoteLine>
   <NoteLine>        I use the term "upgrade" or the abbreviation "upgrd" to refer to the actual file that will upgrade the app. This could be an executable file, an archive file, whatever.</NoteLine>
   <NoteLine>&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</NoteLine>
  </ItemSource>
  <ItemFlags>0</ItemFlags>
 </Note>
 <Note>
  <ItemName>myapp.upd Notes</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <NoteLine>myapp.upd Notes</NoteLine>
   <NoteLine>The myapp.upd file is the core of this entire excercise. It contains the necessary information to compare the latest version number to the current version number,</NoteLine>
   <NoteLine>the location to download the latest version from, the name of the program, plus options to display a customized message to the user before downloading and </NoteLine>
   <NoteLine>controlling how the upgrade file is handled.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>The basic structure of the myapp.upd file is like this:</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>//Begin File</NoteLine>
   <NoteLine>Name=My Super App</NoteLine>
   <NoteLine>Version=1.1</NoteLine>
   <NoteLine>URL=http://www.boredomsoft.org/Test/update.rar</NoteLine>
   <NoteLine>//Blah blah blah</NoteLine>
   <NoteLine>Require Confirm=Yes</NoteLine>
   <NoteLine>Confirm Title=Please Read This</NoteLine>
   <NoteLine>Confirm Message=You must agree to give me your soul before downloading. Click OK to agree</NoteLine>
   <NoteLine>Filetype=arc</NoteLine>
   <NoteLine>CheckMD5=yes</NoteLine>
   <NoteLine>//Blah! Blah, blahblah</NoteLine>
   <NoteLine>MD5Sum=b5eb1515c9246d07c9e500a2d2d57ea3</NoteLine>
   <NoteLine>//Blah?</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Basically this is a key=value system. Key names musn't be changed, but the values can contain any data in string form (strings cannot contain equals signs, though.) Comment lines are denoted by double slashes: //</NoteLine>
   <NoteLine>The key=value pairs can be given in any order, interspersed with any number of comment lines. One key=value pair or comment per line!</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Of the nine key=value pairs, six are optional and three are mandatory. The mandatory ones are:</NoteLine>
   <NoteLine>Name=</NoteLine>
   <NoteLine>Version=</NoteLine>
   <NoteLine>URL=</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>The four optional parameters that you can use are:</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>require: if you include the Require=Yes key=value pair, then the program will display a message box prior to downloading the upgrade</NoteLine>
   <NoteLine>confirmTitle: if the "require=Yes" pair is present, this is the title of the message box that will be presented</NoteLine>
   <NoteLine>confirmMessage: if the "require=Yes" pair is present, this is the text of the message presented</NoteLine>
   <NoteLine>filetype: defines how the program should handle the upgrade file. Currently, only the "exe" option is honored. The other option, "arc", is the default behavior anyway.</NoteLine>
   <NoteLine>CheckMD5: yes, or no. Whether or not to check the file's MD5Sum</NoteLine>
   <NoteLine>MD5Sum:  The hex representation of the files MD5 checksum.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>Key=value pairs are NOT case sensitive.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine></NoteLine>
  </ItemSource>
  <ItemFlags>0</ItemFlags>
 </Note>
 <Note>
  <ItemName>How To Integrate into your app</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <NoteLine>How To Integrate into your app</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>You ought to be able to simply drag and drop the versioncheck and UpdateInformation classes from one IDE window into another to import it. You should also import the updateWin window</NoteLine>
   <NoteLine>or recreate it in your app using the same names (or change the names in the versioncheck class.) You will then need to write some of your own code to create a</NoteLine>
   <NoteLine>means of calling the updateWin Window (for user-invoked updates) or versioncheck.checkVer(True) (for automatic, silent checking) into your app.</NoteLine>
   <NoteLine></NoteLine>
   <NoteLine>This class was written using REALbasic 20010R4.1. This version has some important differences in how it references SpecialFolders as well as other changes. You</NoteLine>
   <NoteLine>will need to alter the code to work in older versions of the IDE and compiler.</NoteLine>
  </ItemSource>
  <ItemFlags>0</ItemFlags>
 </Note>
 <Property>
  <ItemName>updateaddress</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>updateaddress As string</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>updateaddress As string = "http://www.boredomsoft.org/update/myapp.upd"</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>usebrowser</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>usebrowser As boolean</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>usebrowser As boolean = false</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>update</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>update As boolean</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>update As boolean = false</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>isSilent</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>isSilent As boolean</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>isSilent As boolean = false</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>currentversion</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>currentversion As Double</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>currentversion As Double</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>updInfo</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>updInfo As UpdateInformation</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>updInfo As UpdateInformation</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <ViewBehavior>
  <ViewProperty>
   <ObjName>Name</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <InheritsFrom>HTTPSocket</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Index</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <ItemType>Integer</ItemType>
   <InheritsFrom>HTTPSocket</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Super</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <InheritsFrom>HTTPSocket</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Left</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <InheritsFrom>HTTPSocket</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Top</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <InheritsFrom>HTTPSocket</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Address</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Behavior</PropertyGroup>
   <InheritsFrom>HTTPSocket</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Port</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Behavior</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <InheritsFrom>HTTPSocket</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>defaultPort</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <InheritsFrom>HTTPSocket</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>httpProxyAddress</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <InheritsFrom>HTTPSocket</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>httpProxyPort</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <InheritsFrom>HTTPSocket</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>yield</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <InheritsFrom>HTTPSocket</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>updateaddress</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <PropertyValue>http://www.boredomsoft.com/myapp.upd</PropertyValue>
   <ItemType>string</ItemType>
   <EditorType>MultiLineEditor</EditorType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>usebrowser</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <PropertyValue>false</PropertyValue>
   <ItemType>boolean</ItemType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>update</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <PropertyValue>false</PropertyValue>
   <ItemType>boolean</ItemType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>isSilent</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <PropertyValue>false</PropertyValue>
   <ItemType>boolean</ItemType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>currentversion</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <ItemType>Double</ItemType>
  </ViewProperty>
 </ViewBehavior>
</block>
<block type="BuildAutomation" ID="1856352255">
 <ObjName>Build Automation</ObjName>
 <ObjContainerID>0</ObjContainerID>
</block>
<block type="BuildStepsList" ID="1805809663">
 <ObjName>Linux</ObjName>
 <ObjContainerID>1856352255</ObjContainerID>
</block>
<block type="BuildProjectStep" ID="499390463">
 <ObjName>Build</ObjName>
 <ObjContainerID>1805809663</ObjContainerID>
</block>
<block type="BuildStepsList" ID="1865861119">
 <ObjName>Mac OS X</ObjName>
 <ObjContainerID>1856352255</ObjContainerID>
</block>
<block type="BuildProjectStep" ID="1915445247">
 <ObjName>Build</ObjName>
 <ObjContainerID>1865861119</ObjContainerID>
</block>
<block type="BuildStepsList" ID="1876174847">
 <ObjName>Windows</ObjName>
 <ObjContainerID>1856352255</ObjContainerID>
</block>
<block type="BuildProjectStep" ID="1585274879">
 <ObjName>Build</ObjName>
 <ObjContainerID>1876174847</ObjContainerID>
</block>
<block type="Module" ID="1360855039">
 <ObjName>UpdateInformation</ObjName>
 <ObjContainerID>0</ObjContainerID>
 <IsClass>1</IsClass>
 <ItemFlags>1</ItemFlags>
 <IsInterface>0</IsInterface>
 <Compatibility></Compatibility>
 <Property>
  <ItemName>Name</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Name As String</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>Name As String</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>Version</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Version As Double</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>Version As Double</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>URL</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>URL As String</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>URL As String</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>FileType</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>FileType As String</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>FileType As String</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>Verify</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Verify As Boolean</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>Verify As Boolean = False</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>Checksum</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>Checksum As String</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>Checksum As String</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>RequireConfirm</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>RequireConfirm As Boolean</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>RequireConfirm As Boolean = False</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>ConfirmMessage</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>ConfirmMessage As String</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>ConfirmMessage As String</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>ConfirmTitle</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>ConfirmTitle As String</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>ConfirmTitle As String</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>fileName</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>fileName As String</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>fileName As String</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <Property>
  <ItemName>localFile</ItemName>
  <Compatibility></Compatibility>
  <Visible>1</Visible>
  <ItemSource>
   <TextEncoding>134217984</TextEncoding>
   <SourceLine>localFile As FolderItem</SourceLine>
   <SourceLine></SourceLine>
  </ItemSource>
  <TextEncoding>134217984</TextEncoding>
  <ItemDeclaration>localFile As FolderItem</ItemDeclaration>
  <ItemFlags>0</ItemFlags>
  <Shared>0</Shared>
 </Property>
 <ViewBehavior>
  <ViewProperty>
   <ObjName>Name</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <InheritsFrom>Object</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Index</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <PropertyValue>-2147483648</PropertyValue>
   <InheritsFrom>Object</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Super</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>ID</PropertyGroup>
   <InheritsFrom>Object</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Left</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <InheritsFrom>Object</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Top</ObjName>
   <Visible>1</Visible>
   <PropertyGroup>Position</PropertyGroup>
   <PropertyValue>0</PropertyValue>
   <InheritsFrom>Object</InheritsFrom>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Version</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <ItemType>Double</ItemType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>URL</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <ItemType>String</ItemType>
   <EditorType>MultiLineEditor</EditorType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>FileType</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <ItemType>String</ItemType>
   <EditorType>MultiLineEditor</EditorType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Verify</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>Checksum</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <ItemType>String</ItemType>
   <EditorType>MultiLineEditor</EditorType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>RequireConfirm</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <PropertyValue>False</PropertyValue>
   <ItemType>Boolean</ItemType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>ConfirmMessage</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <ItemType>String</ItemType>
   <EditorType>MultiLineEditor</EditorType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>ConfirmTitle</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <ItemType>String</ItemType>
   <EditorType>MultiLineEditor</EditorType>
  </ViewProperty>
  <ViewProperty>
   <ObjName>fileName</ObjName>
   <PropertyGroup>Behavior</PropertyGroup>
   <ItemType>String</ItemType>
  </ViewProperty>
 </ViewBehavior>
</block>
<block type="UIState" ID="0">
 <WindowState>
  <OpenTab>
   <ObjContainerID>0</ObjContainerID>
   <EditSplit>235</EditSplit>
   <ProjectListSortColumn>1</ProjectListSortColumn>
   <ProjectListColumnSortDirection>1</ProjectListColumnSortDirection>
  </OpenTab>
  <OpenTab>
   <ObjContainerID>1792860159</ObjContainerID>
   <AlternateEditorID>1</AlternateEditorID>
   <LeftSplitter>272</LeftSplitter>
   <EmptyEventState>0</EmptyEventState>
   <CodeItemID>0</CodeItemID>
  </OpenTab>
  <LastLocation>versioncheck.What not To Touch</LastLocation>
  <EditBounds><Rect left="0" top="50" width="1440" height="820"/></EditBounds>
 </WindowState>
 <WarningPreferences>
  <ItemName>5</ItemName>
  <ItemData>0</ItemData>
  <ItemName>6</ItemName>
  <ItemData>0</ItemData>
  <ItemName>7</ItemName>
  <ItemData>0</ItemData>
 </WarningPreferences>
</block>
</RBProject>

