' VBScript source code
option explicit

const HKEY_LOCAL_MACHINE = &H80000002
Const HARD_DISK = 3
Const W7 = 61
Const WVIS = 60
Const W2K3 = 52
Const WXP = 51
Const W2K = 50
Const NT4 = 40
Const W8 = 62


dim nNotMinReq, nNotRecReq, nOS, nTotalFree, nCount
dim sWelcomeMsg, strComputer, sVersion, sMsg, sMessageString, sSPMajorVersion, sSPMinorVersion, sOrganization
dim sSystemName, sTotalMemory, sProcessor, sProcessorSpeed, sHorizontalRes,	sVerticalRes, sDeviceID, sFreeSpace
dim strKeyPath, strValueName, strValue, sCurrentBandwidth, sAdapterName, sIPAddress 
dim objWMIService, objOperatingSystem, objComputer, objProcessor, objItem, objDisk, oReg
dim colSettings, colItems, colDisks, IPConfigSet, IPConfig, i 
dim sAdapterType, nAdapterTypeId
dim sAddressWidth, sTempFolder

On Error Resume Next
nNotMinReq = 0
nNotRecReq = 0
sWelcomeMsg = "This script will check your PC to see if it meets the requirements for eLation Staking-Mapping Software, click OK to continue"
if(MsgBox(sWelcomeMsg, vbOKCancel, "System Check") = vbOK)then
strComputer = "."
'Check OS and SP
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colSettings
	sVersion = objOperatingSystem.Version
	If(StrComp(sVersion, "6.2.0") = 1) Then
	    sMsg = "       - OK - "
		nOS = W8
	ElseIf(StrComp(sVersion, "6.1.0") = 1) Then
	    sMsg = "       - OK - "
		nOS = W7
	ElseIf(StrComp(sVersion, "6.0.0") = 1) Then
		sMsg = "       - OK - "
		nOS = WVIS
	ElseIf(StrComp(sVersion, "5.2.0") = 1) Then
		sMsg = "       - OK - "
		nOS = W2K3
	ElseIf(StrComp(sVersion, "5.1.0") = 1)then
		sMsg = "       - OK - "
		nOS = WXP
	ElseIf(StrComp(sVersion, "5.0.0") = 1)then
		sMsg = "       - WINDOWS XP OR GREATER REQUIRED -"
		nOS = W2K
		nNotMinReq = 1	
	Else
		sMsg = "       - OS NOT SUPPORTED - "
		nOS = NT4
		nNotMinReq = 1	
	End If		
	sMessageString = "OS Version: " & sVersion & sMsg & VbCrLf
    sSPMajorVersion = objOperatingSystem.ServicePackMajorVersion
    sSPMinorVersion = objOperatingSystem.ServicePackMinorVersion
    Select Case nOS
        Case W8
            sMsg = "             - OK -"
        Case W7
            sMsg = "             - OK -"
        Case WVIS
            sMsg = "             - OK - "		
		Case W2K3
			sMsg = "             - OK - "
		Case WXP
			if(StrComp(sSPMajorVersion, "2") = 1)then
				sMsg = "             - OK - "
			else
				sMsg = "     - SERVICE PACK UPGRADE REQUIRED - "
				nNotMinReq = 1
			end if		
		Case W2K
			sMsg = "     - NOT SUPPORTED - "
			nNotMinReq = 1			
		Case Else 
			sMsg = "       - NOT SUPPORTED - " 
			nNotMinReq = 1
	End Select

    sMessageString = sMessageString & "Service Pack: " & sSPMajorVersion & "." & sSPMinorVersion & sMsg &_
					 VbCrLf & VbCrLf
Next

'Check Memory
Set colSettings = objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")
For Each objComputer in colSettings
	sSystemName = objComputer.Name 
    sMessageString = "eLation Staking-Mapping 5.0 System Requirements Check" & VbCrLf & VbCrLf &_
					 "System Name: " & sSystemName & VbCrLf & VbCrLf & sMessageString
    sTotalMemory = objComputer.TotalPhysicalMemory    
    if(sTotalMemory > 4000000000)then
	    sMsg = "       - OK - "
    elseif(sTotalMemory > 2000000000)then
	    sMsg = "       - ADDITIONAL MEMORY RECOMMENDED - "
	    nNotRecReq = 1
    else
	    sMsg = "       - ADDITIONAL MEMORY REQUIRED - "
	    nNotMinReq = 1
    end if
    sMessageString = sMessageString & "Total Physical Memory: " & sTotalMemory & sMsg & VbCrLf & VbCrLf
Next

'Check Processor
Set colSettings = objWMIService.ExecQuery _
    ("Select * from Win32_Processor")
nCount = 0
For Each objProcessor in colSettings 
    nCount = nCount + 1
    sProcessor = ""
    sProcessor = objProcessor.Name
    if(sProcessor = "")then
        sProcessor = objProcessor.Description
    end if
    sProcessorSpeed = objProcessor.MaxClockSpeed
    sAddressWidth = objProcessor.AddressWidth
    if(sProcessorSpeed > 2000)then
        sMsg = "       - OK - "
    elseif(sProcessorSpeed > 1500)then
		sMsg = "       - FASTER PROCESSOR RECOMMENDED -"
		nNotRecReq = 1
	else
		sMsg = "       - FASTER PROCESSOR REQUIRED -"
		nNotMinReq = 1
    end if
    
    if(nCount = 1)then
        sMessageString = sMessageString & "Processor: " & sProcessor & VbCrLf
        sMessageString = sMessageString & "Processor Speed: " & sProcessorSpeed & sMsg & VbCrLf
        sMessageString = sMessageString & "Processor Type: " & sAddressWidth & " bit" & VbCrLf
    end if        	
Next
sMessageString = sMessageString & "Processor Count: " & nCount & VbCrLf
sMessageString = sMessageString & VbCrLf

'Check Video Resolution
Set colItems = objWMIService.ExecQuery("Select * from Win32_VideoController")
nCount = 0
For Each objItem in colItems
    nCount = nCount + 1
	sHorizontalRes = objItem.CurrentHorizontalResolution
	sVerticalRes = objItem.CurrentVerticalResolution	
	if((sHorizontalRes < 1600)Or(sVerticalRes < 1024))then
		sMsg = "       - 1600 x 1024 or GREATER RECOMMENDED - "
		nNotRecReq = 1
    else
		sMsg = "       - OK - "		
    end if
    if(nCount = 1)then        
        sMessageString = sMessageString & "Video Resolution: " & sHorizontalRes & " x " &_
		    			 sVerticalRes & sMsg & VbCrLf & VbCrLf	
	end if
Next
 
'Check free space
Set colDisks = objWMIService.ExecQuery _
    ("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")
nTotalFree = 0
For Each objDisk in colDisks
    sDeviceID = objDisk.DeviceID
    sFreeSpace = objDisk.FreeSpace
    nTotalFree = nTotalFree + sFreeSpace  
    if(sFreeSpace > 2000000000)then
        sMsg = "       - OK - "
    else
		sMsg = "       - INADEQUATE FREE SPACE - "		
    end if
    sMessageString = sMessageString & "Disk " & sDeviceID & " Free Disk Space: " & sFreeSpace &_
					 sMsg & VbCrLf      
Next
if(nTotalFree < 2000000000)then
	nNotMinReq = 1
end if

sMessageString = sMessageString & VbCrLf

'Check for Frameworks
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
strValueName = "Version"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	sMsg = "       - OK - "		
Else	
	sMsg = "       - NOT INSTALLED - "		
End If		
sMessageString = sMessageString & "Microsoft Framework 4.0 " & sMsg & VbCrLf & VbCrLf       
     
      

'Check for Visio
sMessageString = sMessageString & "Microsoft Visio is required for Staking" & VbCrLf        
'Check for Visio 2007
strKeyPath = "SOFTWARE\Microsoft\Office\12.0\Visio"
strValueName = "InstalledVersion"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	sMsg = "       - OK - "		
Else
    'try 64 bit install path
    strKeyPath = "SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Visio"
    strValue = ""
    oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
    If(StrComp(strValue, "") = 1) Then
	    sMsg = "       - OK - "	
	else	
	    sMsg = "       - NOT INSTALLED -"		
	end if
End If		
sMessageString = sMessageString & "Microsoft Visio 2007: " & sMsg & VbCrLf   
'Check for Visio 2010
strKeyPath = "SOFTWARE\Microsoft\Office\14.0\Visio"
strValueName = "InstalledVersion"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	sMsg = "       - OK - "		
Else
    'try 64 bit install path
    strKeyPath = "SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Visio"
    strValue = ""
    oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
    If(StrComp(strValue, "") = 1) Then
	    sMsg = "       - OK - "	
	else	
	    sMsg = "       - NOT INSTALLED -"		
	end if
End If		
sMessageString = sMessageString & "Microsoft Visio 2010: " & sMsg & VbCrLf & VbCrLf  


'Check for ACAD
sMessageString = sMessageString & "AutoCAD is required for Mapping" & VbCrLf        
'check for 2013
sMsg = "       - NOT INSTALLED -"		
strKeyPath = "SOFTWARE\Autodesk\AutoCAD\R19.0\ACAD-B001:409"
strValueName = "Location"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	sMsg = "       - OK - "		
End If		
strKeyPath = "SOFTWARE\Autodesk\AutoCAD\R19.0\ACAD-B002:409"
strValueName = "Location"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	sMsg = "       - OK - "		
End If		
strKeyPath = "SOFTWARE\Autodesk\AutoCAD\R19.1\ACAD-C001:409"
strValueName = "Location"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	sMsg = "       - OK - "		
End If		
strKeyPath = "SOFTWARE\Autodesk\AutoCAD\R19.1\ACAD-C002:409"
strValueName = "Location"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	sMsg = "       - OK - "		
End If		

strKeyPath = "SOFTWARE\Wow6432Node\Autodesk\AutoCAD\R19.0\ACAD-B001:409"
strValueName = "Location"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	sMsg = "       - OK - "		
End If		
strKeyPath = "SOFTWARE\Wow6432Node\Autodesk\AutoCAD\R19.0\ACAD-B002:409"
strValueName = "Location"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	sMsg = "       - OK - "		
End If		
strKeyPath = "SOFTWARE\Wow6432Node\Autodesk\AutoCAD\R19.1\ACAD-C001:409"
strValueName = "Location"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	sMsg = "       - OK - "		
End If		
strKeyPath = "SOFTWARE\Wow6432Node\Autodesk\AutoCAD\R19.1\ACAD-C002:409"
strValueName = "Location"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	sMsg = "       - OK - "		
End If		
sMessageString = sMessageString & "AutoCAD 2013: " & sMsg & VbCrLf & VbCrLf  



'Check for SQL or MSDE
strKeyPath = "SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion"
strValueName = "CSDVersion"
strValue = ""
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
If(StrComp(strValue, "") = 1) Then
	'have value - see if SP level is OK
	If(StrComp(strValue, "8.00.2030") = 1) Then
		sMsg = "       - OK - "		
	Else
		sMsg = "  - SERVICE PACK 4 or > REQUIRED - "		
	End If
Else	
	'check for 2005
	strValueName = "CurrentVersion"
    strValue = ""
    oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
    If(StrComp(strValue, "") = 1) Then
	    'have value - see if SP level is OK
	    If(StrComp(strValue, "9.00.1399.06") = 1) Then
		    sMsg = "       - OK - "		
	    Else
		    sMsg = "  - OK - "		
	    End If
	Else
	    sMsg = "  - NOT INSTALLED - "	    		
    End If	
    	
End If		
sMessageString = sMessageString & "Microsoft SQL Server or MSDE: " & sMsg & VbCrLf & VbCrLf  


'Get IP address
Set IPConfigSet = objWMIService.ExecQuery _
    ("Select IPAddress from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
 
For Each IPConfig in IPConfigSet
    If Not IsNull(IPConfig.IPAddress) Then 
        For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
            sIPAddress = IPConfig.IPAddress(i)
            sMessageString = sMessageString & "IP Address: " & sIPAddress & VbCrLf
        Next
    End If
Next

if(len(sMessageString) > 935)then
    'need to truncate to display last message
    sMessageString = Left(sMessageString, 935)
    sMessageString = sMessageString & VbCrLf
end if

if(nNotMinReq = 1)then
	sMessageString = sMessageString & VbCrLf & "This system DOES NOT meet eLation Staking-Mapping MINIMUM hardware requirements." 
elseif(nNotRecReq = 1)then
	sMessageString = sMessageString & VbCrLf & "This system meets eLation Staking-Mapping MINIMUM hardware requirements." 
else
	sMessageString = sMessageString & VbCrLf & "This system meets eLation Staking-Mapping RECOMMENDED hardware requirements." 
end if
 
MsgBox sMessageString, vbOKOnly, "System Check"

Set IPConfigSet = nothing
Set colItems = nothing
Set oReg = nothing
Set colDisks = nothing
Set colSettings = nothing
Set objWMIService = nothing

if(MsgBox("Do you want to save the results and email to Innovative Systems?",vbYesNo, "Save Results") = vbYes)then
	eMailAndSave(sMessageString)
end if

end if 

'end of main script

function eMailAndSave(sString)
	dim objFSO
	dim objTextFile
	dim objShell
	dim objEmail
	dim sCompanyName
			
	on error resume next
	
	sCompanyName = InputBox("Please enter your Company Name","Company Name")
			
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	if(IsObject(objFSO))then
	    Set objShell = CreateObject("WScript.Shell")
	    if(IsObject(objShell))then
			sTempFolder = objShell.ExpandEnvironmentStrings("%TEMP%")
			set objShell = nothing
		end if		
		Set objTextFile = objFSO.OpenTextFile(sTempFolder & "\eLationMappingCheck.txt", 2, True)
		if(IsObject(objTextFile))then
			objTextFile.WriteLine(sString)
			objTextFile.Close
			set objTextFile = nothing
			Set objShell = CreateObject("WScript.Shell")
			if(IsObject(objShell))then
				objShell.Run "notepad.exe " & sTempFolder & "\eLationMappingCheck.txt" 
				set objShell = nothing
			end if
		end if
		set objFSO = nothing
	end if	
		
	Set objEmail = CreateObject("CDO.Message")
	if(IsObject(objEmail))then
		objEmail.From = "eLationCheck@innovsys.com"
		objEmail.To = "eLationSysChk@innovsys.com"
		objEmail.Subject = "eLation Check from " & sCompanyName 
		objEmail.Textbody = sString
		objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
		objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.innovsys.com" 
		objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
		objEmail.Configuration.Fields.Update
		objEmail.Send
		set objEmail = nothing
	end if

end function




'' SIG '' Begin signature block
'' SIG '' MIITWAYJKoZIhvcNAQcCoIITSTCCE0UCAQExCzAJBgUr
'' SIG '' DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
'' SIG '' gjcCAR4wJAIBAQQQTvApFpkntU2P5azhDxfrqwIBAAIB
'' SIG '' AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFN/D9OTiaJtL
'' SIG '' GC9j4wNYZiRJC5z5oIIQYTCCBNMwggO7oAMCAQICEBja
'' SIG '' 0Z4mfei7SiFYzcxrO0owDQYJKoZIhvcNAQEFBQAwgcox
'' SIG '' CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwg
'' SIG '' SW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0
'' SIG '' d29yazE6MDgGA1UECxMxKGMpIDIwMDYgVmVyaVNpZ24s
'' SIG '' IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFF
'' SIG '' MEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMyBQdWJsaWMg
'' SIG '' UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt
'' SIG '' IEc1MB4XDTA2MTEwODAwMDAwMFoXDTM2MDcxNjIzNTk1
'' SIG '' OVowgcoxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJp
'' SIG '' U2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
'' SIG '' c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDIwMDYgVmVy
'' SIG '' aVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug
'' SIG '' b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMyBQ
'' SIG '' dWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
'' SIG '' cml0eSAtIEc1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
'' SIG '' MIIBCgKCAQEAryQICCl6NZ5gDKrnSztO3Hy8PEUcuyvg
'' SIG '' /ikC+VcIo2SFFSf18a3IMYldIugqqqZCs4/4uVW3sbdL
'' SIG '' s/6PfgdX7O9D22ZiFWHPYA2k2N744MNiCD1UE+tJyllU
'' SIG '' hSblK48bn+v1oZHCM0nYQ2NqUkvSj+hwUU3RiWl7x3D2
'' SIG '' s9wSdNt7XUtW05a/FXehsPSiJfKvHJJnGOX0BgTvkLnk
'' SIG '' AOTdOrUZ/wK69Dzu4IvrN4vs9Nes8vbwPa/ddZEzGR0c
'' SIG '' QMt0JBkhk9kU/qwqUseP1QRJ5I1jR4g8aYPL/ke9K35P
'' SIG '' xZWuDp3U0UPAZ3PjFAh+5T+fc7gzCs9dPzSHloruU+gl
'' SIG '' FQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYD
'' SIG '' VR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw
'' SIG '' WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l
'' SIG '' 0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dv
'' SIG '' LnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1UdDgQW
'' SIG '' BBR/02Wnwt3su/AwCfNDOfoCrzMxMzANBgkqhkiG9w0B
'' SIG '' AQUFAAOCAQEAkyRKMF9iz9gamC896tyZLb139qV5Ijjs
'' SIG '' xKegeBKtYg5FcGTF55dmLZgJfl+v1swoZfIBqggaR975
'' SIG '' +XySWghpIA3ZPm1uPA1u2OYGkUAYufjB7d/bQargliDJ
'' SIG '' zWQVOIHJlO6ihCkLE2+O2wzdJQLbpIsZRNJBegVpSlhP
'' SIG '' YMp+gmoLAqolFzm123/nhGUqlYq9ht5egRaDLRDM3v2o
'' SIG '' giptKB8NC8Tl5xomGeH0EW8QtZX850IFMtvOnVFeKLae
'' SIG '' hdNb76V9RUByjrcOaw4G+zM1SHG4nSeLxGVfDYZ2nER6
'' SIG '' 9pVc9l0yCDOkVLYYP2hc8kJKhThUg1/R6CzyrBHWqO1j
'' SIG '' ajCCBXgwggRgoAMCAQICEEKHWrwZF7XVOGQi/nE/GBcw
'' SIG '' DQYJKoZIhvcNAQEFBQAwgbQxCzAJBgNVBAYTAlVTMRcw
'' SIG '' FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMW
'' SIG '' VmVyaVNpZ24gVHJ1c3QgTmV0d29yazE7MDkGA1UECxMy
'' SIG '' VGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZlcmlz
'' SIG '' aWduLmNvbS9ycGEgKGMpMTAxLjAsBgNVBAMTJVZlcmlT
'' SIG '' aWduIENsYXNzIDMgQ29kZSBTaWduaW5nIDIwMTAgQ0Ew
'' SIG '' HhcNMTEwMzE3MDAwMDAwWhcNMTQwNDAzMjM1OTU5WjCB
'' SIG '' uzELMAkGA1UEBhMCVVMxFTATBgNVBAgTDFNvdXRoIERh
'' SIG '' a290YTERMA8GA1UEBxMITWl0Y2hlbGwxIDAeBgNVBAoU
'' SIG '' F0lubm92YXRpdmUgU3lzdGVtcywgTExDMT4wPAYDVQQL
'' SIG '' EzVEaWdpdGFsIElEIENsYXNzIDMgLSBNaWNyb3NvZnQg
'' SIG '' U29mdHdhcmUgVmFsaWRhdGlvbiB2MjEgMB4GA1UEAxQX
'' SIG '' SW5ub3ZhdGl2ZSBTeXN0ZW1zLCBMTEMwggEiMA0GCSqG
'' SIG '' SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMKDQNMoLmqpkx
'' SIG '' V81dYvsAz6VcQgcASTG2UzGbad2FyCoLRfo8qdubFrt3
'' SIG '' oFB6QSJUCf+l1xrif0ij4OQvc7EWR2qbDU+WKzUx7YX7
'' SIG '' xSaW77ZmuhzbTVPEHPsllmc/NkMTrSGrOuv3Pez00KuT
'' SIG '' nBqABiEqZmubKSO3z4wluL355BnqsafGopXPhNRPVzqY
'' SIG '' yxNaMXzSvU7qEaiRSdMdBsEkKtkel3zXR6DGmPjcFxGz
'' SIG '' 3A9XRpBUHKc03PoyDCsLjF10M0PnTxYpnHdPWgocv6m1
'' SIG '' szBtr21eAETBgXUjstwilsaj4SLdO8+31CNxDv41iIkS
'' SIG '' gbCSNGPV43AY3WfHjNPBAgMBAAGjggF7MIIBdzAJBgNV
'' SIG '' HRMEAjAAMA4GA1UdDwEB/wQEAwIHgDBABgNVHR8EOTA3
'' SIG '' MDWgM6Axhi9odHRwOi8vY3NjMy0yMDEwLWNybC52ZXJp
'' SIG '' c2lnbi5jb20vQ1NDMy0yMDEwLmNybDBEBgNVHSAEPTA7
'' SIG '' MDkGC2CGSAGG+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0
'' SIG '' dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwEwYDVR0l
'' SIG '' BAwwCgYIKwYBBQUHAwMwcQYIKwYBBQUHAQEEZTBjMCQG
'' SIG '' CCsGAQUFBzABhhhodHRwOi8vb2NzcC52ZXJpc2lnbi5j
'' SIG '' b20wOwYIKwYBBQUHMAKGL2h0dHA6Ly9jc2MzLTIwMTAt
'' SIG '' YWlhLnZlcmlzaWduLmNvbS9DU0MzLTIwMTAuY2VyMB8G
'' SIG '' A1UdIwQYMBaAFM+Zqep7JvRLyY6P1/AFJu/j0qedMBEG
'' SIG '' CWCGSAGG+EIBAQQEAwIEEDAWBgorBgEEAYI3AgEbBAgw
'' SIG '' BgEBAAEB/zANBgkqhkiG9w0BAQUFAAOCAQEAxW1dkfzR
'' SIG '' g596uqDjEtgPeHWeHPOks8vmol4x2QdTv1J9UTvdr6ad
'' SIG '' t5p8s9a8ZSRmXpx69ymKjJoEw3ysylg9wDuBy5M4ohUb
'' SIG '' Fn1nraNukd1+Kc8CO64TYAIx6XqzJhb2HOQ8g3wonZeb
'' SIG '' LuDFo6dMCykmmWBVt+xU65H2BK3MKO2WtG2z4hbSuSds
'' SIG '' 0VaG35H9GmlKUpxCsDvaKBXM2pXlpzErd4sI1/JzXXp+
'' SIG '' PBrSubbxnr6txCLyGrEUd9NFP1KCNjA8mbyyrwUJlD6X
'' SIG '' GDrpPpBocVTXLYo9OZRZkX0K4Stt3rszhp7cA48jz1+k
'' SIG '' +NovK+Fejqxf3uaaBDTTjyql3zCCBgowggTyoAMCAQIC
'' SIG '' EFIA5aolVvwahu2WydRLM8cwDQYJKoZIhvcNAQEFBQAw
'' SIG '' gcoxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2ln
'' SIG '' biwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3Qg
'' SIG '' TmV0d29yazE6MDgGA1UECxMxKGMpIDIwMDYgVmVyaVNp
'' SIG '' Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s
'' SIG '' eTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMyBQdWJs
'' SIG '' aWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
'' SIG '' eSAtIEc1MB4XDTEwMDIwODAwMDAwMFoXDTIwMDIwNzIz
'' SIG '' NTk1OVowgbQxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5W
'' SIG '' ZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24g
'' SIG '' VHJ1c3QgTmV0d29yazE7MDkGA1UECxMyVGVybXMgb2Yg
'' SIG '' dXNlIGF0IGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9y
'' SIG '' cGEgKGMpMTAxLjAsBgNVBAMTJVZlcmlTaWduIENsYXNz
'' SIG '' IDMgQ29kZSBTaWduaW5nIDIwMTAgQ0EwggEiMA0GCSqG
'' SIG '' SIb3DQEBAQUAA4IBDwAwggEKAoIBAQD1I0tepdeKuzLp
'' SIG '' 1Ff37+THJn6tGZj+qJ19lPY2axDXdYEwfwRof8srdR7N
'' SIG '' HQiM32mUpzejnHuA4Jnh7jdNX847FO6G1ND1JzW8JQs4
'' SIG '' p4xjnRejCKWrsPvNamKCTNUh2hvZ8eOEO4oqT4VbkAFP
'' SIG '' yad2EH8nA3y+rn59wd35BbwbSJxp58CkPDxBAD7fluXF
'' SIG '' 5JRx1lUBxwAmSkA8taEmqQynbYCOkCV7z78/HOsvlvrl
'' SIG '' h3fGtVayejtUMFMb32I0/x7R9FqTKIXlTBdOflv9pJOZ
'' SIG '' f9/N76R17+8V9kfn+Bly2C40Gqa0p0x+vbtPDD1X8TDW
'' SIG '' pjaO1oB21xkupc1+NC2JAgMBAAGjggH+MIIB+jASBgNV
'' SIG '' HRMBAf8ECDAGAQH/AgEAMHAGA1UdIARpMGcwZQYLYIZI
'' SIG '' AYb4RQEHFwMwVjAoBggrBgEFBQcCARYcaHR0cHM6Ly93
'' SIG '' d3cudmVyaXNpZ24uY29tL2NwczAqBggrBgEFBQcCAjAe
'' SIG '' GhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMA4G
'' SIG '' A1UdDwEB/wQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBb
'' SIG '' MFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIaBBSP
'' SIG '' 5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9n
'' SIG '' by52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjA0BgNVHR8E
'' SIG '' LTArMCmgJ6AlhiNodHRwOi8vY3JsLnZlcmlzaWduLmNv
'' SIG '' bS9wY2EzLWc1LmNybDA0BggrBgEFBQcBAQQoMCYwJAYI
'' SIG '' KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZlcmlzaWduLmNv
'' SIG '' bTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwMw
'' SIG '' KAYDVR0RBCEwH6QdMBsxGTAXBgNVBAMTEFZlcmlTaWdu
'' SIG '' TVBLSS0yLTgwHQYDVR0OBBYEFM+Zqep7JvRLyY6P1/AF
'' SIG '' Ju/j0qedMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5
'' SIG '' +gKvMzEzMA0GCSqGSIb3DQEBBQUAA4IBAQBWIuY0pMRh
'' SIG '' y0i5Aa1WqGQP2YyRxLvMDOWteqAif99HOEotbNF/cRp8
'' SIG '' 7HCpsfBP5A8MU/oVXv50mEkkhYEmHJEUR7BMY4y7oTTU
'' SIG '' xkXoDYUmcwPQqYxkbdxxkuZFBWAVWVE5/FgUa/7UpO15
'' SIG '' awgMQXLnNyIGCb4j6T9Emh7pYZ3MsZBc/D3SjaxCPWU2
'' SIG '' 1LQ9QCiPmxDPIybMSyDLkB9djEw0yjzY5TfWb6UgvTTr
'' SIG '' JtmuDefFmvehtCGRM2+G6Fi7JXx0Dlj+dRtjP84xfJuP
'' SIG '' G5aexVN2hFucrZH6rO2Tul3IIVPCglNjrxINUIcRGz1U
'' SIG '' UpaKLJw9khoImgUux5OlSJHTMYICYzCCAl8CAQEwgckw
'' SIG '' gbQxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2ln
'' SIG '' biwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3Qg
'' SIG '' TmV0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0
'' SIG '' IGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEgKGMp
'' SIG '' MTAxLjAsBgNVBAMTJVZlcmlTaWduIENsYXNzIDMgQ29k
'' SIG '' ZSBTaWduaW5nIDIwMTAgQ0ECEEKHWrwZF7XVOGQi/nE/
'' SIG '' GBcwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
'' SIG '' MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
'' SIG '' AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
'' SIG '' DQEJBDEWBBS9zZmBxxYrG9Zk2lygvetfAyyccjANBgkq
'' SIG '' hkiG9w0BAQEFAASCAQBwZ7OLKA3ryA/SbOLZJzS2LeK7
'' SIG '' mtUnXkomxO0O99AaP5/VE1lGcQxVJZV51B/6rxUy0JAG
'' SIG '' yMMFsma5ukxrFdYq2hCKND9yOGTPaQR2nmrjQT5kXiYP
'' SIG '' MG7jzFLhp5Qj/pfCyAcJvBzNjW6wBb6Ue2a5XiG2+6oc
'' SIG '' qo4E43JtdNZeuOqeATht2xskm6hG9WnNGQpwDPon3NZH
'' SIG '' ARURZ4ivFhbfrjFiyOYckCARkRIW0y87oLcpCdD5YEjj
'' SIG '' J0QulhSpphEutEsQ3V53hTMJXKdoMwm2OaSFhj9Dgis/
'' SIG '' 1RAeYQgTbDOmpO9Etu0n0KIvenx4/vWWGltZtgAeCq3x
'' SIG '' 7AczewdQ
'' SIG '' End signature block
