' Windows Installer database table export for use with Windows Scripting Host
' Copyright (c) Microsoft Corporation. All rights reserved.
' Demonstrates the use of the Database.Export method and MsiDatabaseExport API
'
Option Explicit

Const msiOpenDatabaseModeReadOnly     = 0

Dim shortNames:shortNames = False
Dim argCount:argCount = Wscript.Arguments.Count
Dim iArg:iArg = 0
If (argCount < 3) Then
	Wscript.Echo "Windows Installer database table export utility" &_
		vbNewLine & " 1st argument is path to MSI database (installer package)" &_
		vbNewLine & " 2nd argument is path to folder to contain the exported table(s)" &_
		vbNewLine & " Subseqent arguments are table names to export (case-sensitive)" &_
		vbNewLine & " Specify '*' to export all tables, including _SummaryInformation" &_
		vbNewLine & " Specify /s or -s anywhere before table list to force short names" &_
		vbNewLine &_
		vbNewLine & " Copyright (C) Microsoft Corporation.  All rights reserved."
	Wscript.Quit 1
End If

On Error Resume Next
Dim installer : Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError

Dim database : Set database = installer.OpenDatabase(NextArgument, msiOpenDatabaseModeReadOnly) : CheckError
Dim folder : folder = NextArgument
Dim table, view, record
While iArg < argCount
	table = NextArgument
	If table = "*" Then
		Set view = database.OpenView("SELECT `Name` FROM _Tables")
		view.Execute : CheckError
		Do
			Set record = view.Fetch : CheckError
			If record Is Nothing Then Exit Do
			table = record.StringData(1)
			Export table, folder : CheckError
		Loop
		Set view = Nothing
		table = "_SummaryInformation" 'not an actual table
		Export table, folder : Err.Clear  ' ignore if no summary information
	Else
		Export table, folder : CheckError
	End If
Wend
Wscript.Quit(0)            

Sub Export(table, folder)
	Dim file : If shortNames Then file = Left(table, 8) & ".idt" Else file = table & ".idt"
	database.Export table, folder, file
End Sub

Function NextArgument
	Dim arg, chFlag
	Do
		arg = Wscript.Arguments(iArg)
		iArg = iArg + 1
		chFlag = AscW(arg)
		If (chFlag = AscW("/")) Or (chFlag = AscW("-")) Then
			chFlag = UCase(Right(arg, Len(arg)-1))
			If chFlag = "S" Then 
				shortNames = True
			Else
				Wscript.Echo "Invalid option flag:", arg : Wscript.Quit 1
			End If
		Else
			Exit Do
		End If
	Loop
	NextArgument = arg
End Function

Sub CheckError
	Dim message, errRec
	If Err = 0 Then Exit Sub
	message = Err.Source & " " & Hex(Err) & ": " & Err.Description
	If Not installer Is Nothing Then
		Set errRec = installer.LastErrorRecord
		If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText
	End If
	Wscript.Echo message
	Wscript.Quit 2
End Sub

'' SIG '' Begin signature block
'' SIG '' MIIiDQYJKoZIhvcNAQcCoIIh/jCCIfoCAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' VI4Hnca1EkyTrUPvd2CuA7Hjy/dDS98JnuMo4x3O0eig
'' SIG '' gguOMIIFFjCCA/6gAwIBAgITMwAAAJVQuoOZkVqDgQAA
'' SIG '' AAAAlTANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
'' SIG '' aWduaW5nIFBDQSAyMDEwMB4XDTE0MTIxOTE4MzEwN1oX
'' SIG '' DTE2MDMxOTE4MzEwN1owgY4xCzAJBgNVBAYTAlVTMRMw
'' SIG '' EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
'' SIG '' b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
'' SIG '' b24xDTALBgNVBAsTBE1PUFIxKTAnBgNVBAMTIE1pY3Jv
'' SIG '' c29mdCBXaW5kb3dzIEtpdHMgUHVibGlzaGVyMIIBIjAN
'' SIG '' BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvDD1gX3s
'' SIG '' BodDLEOp7fHOPwgW2wnuL77dBmAaV7dmcZ3cMeEbk4dq
'' SIG '' OElWVtGRqtNTmLqXBalWpuPCxRPwD474iWPZS16UIx6T
'' SIG '' YDaO+ihGG3DYM+AT5ZXsIdeqpGWOrRTRENF1yGGFkj0x
'' SIG '' l/cCNez86FfELxmDWLkSIRO78lj529IkefkZYwxu9NYV
'' SIG '' WQKDCmTBeVKKWMH9qU+jZ7WFijDuvCF8n9MAkuXkBHMr
'' SIG '' Fa7bOJ4856+3aJcQKUn0oExDVrnbU6j4Fl0YecJhujgb
'' SIG '' J+OXp92DJ6N2g1AiWgJkLrJbF6oYNfwWJEo+AYjHaLhm
'' SIG '' FkUxkxzkhMMCeEjltKZO2pmo+wIDAQABo4IBejCCAXYw
'' SIG '' HwYDVR0lBBgwFgYIKwYBBQUHAwMGCisGAQQBgjcKAxQw
'' SIG '' HQYDVR0OBBYEFBLc0XUcP6o1OxHLdh3IVqfWZf3IMFEG
'' SIG '' A1UdEQRKMEikRjBEMQ0wCwYDVQQLEwRNT1BSMTMwMQYD
'' SIG '' VQQFEyozMTYxOCs1MGJhMDk5Ny0xYTI5LTQ0NDMtYWY3
'' SIG '' Ni04MzAzNjVkNGY1MzUwHwYDVR0jBBgwFoAU5vxfe7si
'' SIG '' AFjkck619CF0IzLm76wwVgYDVR0fBE8wTTBLoEmgR4ZF
'' SIG '' aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwv
'' SIG '' cHJvZHVjdHMvTWljQ29kU2lnUENBXzIwMTAtMDctMDYu
'' SIG '' Y3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+
'' SIG '' aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0
'' SIG '' cy9NaWNDb2RTaWdQQ0FfMjAxMC0wNy0wNi5jcnQwDAYD
'' SIG '' VR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAQEAKi05
'' SIG '' 6P5EVKK87a+8Q6RdibegZWwhzT6X4I8hD2wBAk4r5NMg
'' SIG '' BLaKXmE53NbKhbZEAiVdmbaL0lVxDBrLsUqCrcvyQ0Dx
'' SIG '' AaVq/OPmhESVVCUUfUMNX2mzNYNV7g9dgT9QJBWNEWWM
'' SIG '' SIHPJGr8f7hZuULnADcNnUlU6ifNJF1Lqm/N51LKslzZ
'' SIG '' 8HO4UD62MnujSrYGM8WjSSzOcX5ZsutuiGAz/fNu7TTH
'' SIG '' XSxNlKHc4XNnZ21l3eZj5++WCHKTiV1FLxhqMCZJvPmu
'' SIG '' elZeD8lfKIZkq1LDvRY9ywfykjQNuE2V12ki7Ens8p+M
'' SIG '' JuQntDoA0rvCec/yfCFJARqws0PhYjCCBnAwggRYoAMC
'' SIG '' AQICCmEMUkwAAAAAAAMwDQYJKoZIhvcNAQELBQAwgYgx
'' SIG '' CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
'' SIG '' MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
'' SIG '' b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jv
'' SIG '' c29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAy
'' SIG '' MDEwMB4XDTEwMDcwNjIwNDAxN1oXDTI1MDcwNjIwNTAx
'' SIG '' N1owfjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
'' SIG '' bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
'' SIG '' FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMf
'' SIG '' TWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMDCC
'' SIG '' ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOkO
'' SIG '' ZFB5Z7XE4/0JAEyelKz3VmjqRNjPxVhPqaV2fG1FutM5
'' SIG '' krSkHvn5ZYLkF9KP/UScCOhlk84sVYS/fQjjLiuoQSsY
'' SIG '' t6JLbklMaxUH3tHSwokecZTNtX9LtK8I2MyI1msXlDqT
'' SIG '' ziY/7Ob+NJhX1R1dSfayKi7VhbtZP/iQtCuDdMorsztG
'' SIG '' 4/BGScEXZlTJHL0dxFViV3L4Z7klIDTeXaallV6rKIDN
'' SIG '' 1bKe5QO1Y9OyFMjByIomCll/B+z/Du2AEjVMEqa+Ulv1
'' SIG '' ptrgiwtId9aFR9UQucboqu6Lai0FXGDGtCpbnCMcX0Xj
'' SIG '' GhQebzfLGTOAaolNo2pmY3iT1TDPlR8CAwEAAaOCAeMw
'' SIG '' ggHfMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTm
'' SIG '' /F97uyIAWORyTrX0IXQjMubvrDAZBgkrBgEEAYI3FAIE
'' SIG '' DB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0T
'' SIG '' AQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo
'' SIG '' 0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRw
'' SIG '' Oi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9k
'' SIG '' dWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmww
'' SIG '' WgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRw
'' SIG '' Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01p
'' SIG '' Y1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBnQYDVR0g
'' SIG '' BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUH
'' SIG '' AgEWMWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9QS0kv
'' SIG '' ZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYBBQUHAgIw
'' SIG '' NB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBT
'' SIG '' AHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQEL
'' SIG '' BQADggIBABp071dPKXvEFoV4uFDTIvwJnayCl/g0/yos
'' SIG '' l5US5eS/z7+TyOM0qduBuNweAL7SNW+v5X95lXflAtTx
'' SIG '' 69jNTh4bYaLCWiMa8IyoYlFFZwjjPzwek/gwhRfIOUCm
'' SIG '' 1w6zISnlpaFpjCKTzHSY56FHQ/JTrMAPMGl//tIlIG1v
'' SIG '' YdPfB9XZcgAsaYZ2PVHbpjlIyTdhbQfdUxnLp9Zhwr/i
'' SIG '' g6sP4GubldZ9KFGwiUpRpJpsyLcfShoOaanX3MF+0Ulw
'' SIG '' qratu3JHYxf6ptaipobsqBBEm2O2smmJBsdGhnoYP+jF
'' SIG '' HSHVe/kCIy3FQcu/HUzIFu+xnH/8IktJim4V46Z/dlvR
'' SIG '' U3mRhZ3V0ts9czXzPK5UslJHasCqE5XSjhHamWdeMoz7
'' SIG '' N4XR3HWFnIfGWleFwr/dDY+Mmy3rtO7PJ9O1Xmn6pBYE
'' SIG '' AackZ3PPTU+23gVWl3r36VJN9HcFT4XG2Avxju1CCdEN
'' SIG '' duMjVngiJja+yrGMbqod5IXaRzNij6TJkTNfcR5Ar5hl
'' SIG '' ySLoQiElihwtYNk3iUGJKhYP12E8lGhgUu/WR5mggEDu
'' SIG '' FYF3PpzgUxgaUB04lZseZjMTJzkXeIc2zk7DX7L1PUdT
'' SIG '' tuDl2wthPSrXkizON1o+QEIxpB8QCMJWnL8kXVECnWp5
'' SIG '' 0hfT2sGUjgd7JXFEqwZq5tTG3yOalnXFMYIV1zCCFdMC
'' SIG '' AQEwgZUwfjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh
'' SIG '' c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
'' SIG '' BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UE
'' SIG '' AxMfTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAx
'' SIG '' MAITMwAAAJVQuoOZkVqDgQAAAAAAlTANBglghkgBZQME
'' SIG '' AgEFAKCBxjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIB
'' SIG '' BDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAv
'' SIG '' BgkqhkiG9w0BCQQxIgQgdhz/wWEP2iEm77S4KoOguv5f
'' SIG '' C14+wxC3aRFW1EY1TyIwWgYKKwYBBAGCNwIBDDFMMEqg
'' SIG '' JIAiAE0AaQBjAHIAbwBzAG8AZgB0ACAAVwBpAG4AZABv
'' SIG '' AHcAc6EigCBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v
'' SIG '' d2luZG93czANBgkqhkiG9w0BAQEFAASCAQAY5eX3I2iY
'' SIG '' HaFfWXZwtScKqU+l/Cx0Ojgmh7cBUIKsHub5+Ak5zrf8
'' SIG '' HZvFGVpNY+jG5HgV+TvhZrKp2x260Mhpp4HGZ6R2DSeA
'' SIG '' IBX7SSr1h7I0JYD7l8qfQ3nLnRfEyx6kqdRB72iTPIF7
'' SIG '' N8XYzSymRKNTZTY2AbpWJIcpF9M1sibaPS6Ecw/UDZqJ
'' SIG '' gY8sJe3kwavZVJTsESH5xO+pt8Kv9dtnlxuwpHC+1VKj
'' SIG '' uhBgFliwkNDI/mH+S1c8Ivn3j36ZpeoASgShkXcctAr6
'' SIG '' DT5L04jI57UHM362hrZRYTdlYVII2IiZp1/uepYD/Sdb
'' SIG '' 6Kq/kAXWfBtLCVjpcQ0hyGStoYITSTCCE0UGCisGAQQB
'' SIG '' gjcDAwExghM1MIITMQYJKoZIhvcNAQcCoIITIjCCEx4C
'' SIG '' AQMxDzANBglghkgBZQMEAgEFADCCATkGCyqGSIb3DQEJ
'' SIG '' EAEEoIIBKASCASQwggEgAgEBBgorBgEEAYRZCgMBMDEw
'' SIG '' DQYJYIZIAWUDBAIBBQAEINQYqLOGOiTbtgUKF1ZWUNsE
'' SIG '' SGuIGQt8ySwm5akMzH0pAgZVfDQcHdAYDzIwMTUwNzEw
'' SIG '' MDUwMzA5WjAHAgEBgAIB9KCBuaSBtjCBszELMAkGA1UE
'' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
'' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
'' SIG '' b3Jwb3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UE
'' SIG '' CxMebkNpcGhlciBEU0UgRVNOOkJCRUMtMzBDQS0yREJF
'' SIG '' MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT
'' SIG '' ZXJ2aWNloIIO0DCCBnEwggRZoAMCAQICCmEJgSoAAAAA
'' SIG '' AAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVT
'' SIG '' MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
'' SIG '' ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
'' SIG '' YXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENl
'' SIG '' cnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEwMDcw
'' SIG '' MTIxMzY1NVoXDTI1MDcwMTIxNDY1NVowfDELMAkGA1UE
'' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
'' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
'' SIG '' b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp
'' SIG '' bWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3DQEB
'' SIG '' AQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX9fp/
'' SIG '' aZRrdFQQ1aUKAIKF++18aEssX8XD5WHCdrc+Zitb8BVT
'' SIG '' JwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRDDNdNuDgI
'' SIG '' s0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG8lhHhjKE
'' SIG '' HnRhZ5FfgVSxz5NMksHEpl3RYRNuKMYa+YaAu99h/EbB
'' SIG '' Jx0kZxJyGiGKr0tkiVBisV39dx898Fd1rL2KQk1AUdEP
'' SIG '' nAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6Kgox8NpOBpG2
'' SIG '' iAg16HgcsOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8wMlE
'' SIG '' XV4WnAEFTyJNAgMBAAGjggHmMIIB4jAQBgkrBgEEAYI3
'' SIG '' FQEEAwIBADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xGG8Uz
'' SIG '' aFqFbVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEw
'' SIG '' CwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYD
'' SIG '' VR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYD
'' SIG '' VR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3Nv
'' SIG '' ZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9vQ2Vy
'' SIG '' QXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4w
'' SIG '' TDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3Nv
'' SIG '' ZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXRfMjAx
'' SIG '' MC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCBkjCBjwYJ
'' SIG '' KwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRwOi8v
'' SIG '' d3d3Lm1pY3Jvc29mdC5jb20vUEtJL2RvY3MvQ1BTL2Rl
'' SIG '' ZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBn
'' SIG '' AGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABlAG0A
'' SIG '' ZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH5ohR
'' SIG '' DeLG4Jg/gXEDPZ2joSFvs+umzPUxvs8F4qn++ldtGTCz
'' SIG '' wsVmyWrf9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5U4zM
'' SIG '' 9GASinbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/f8Z/
'' SIG '' 8jd9Wj8c8pl5SpFSAK84Dxf1L3mBZdmptWvkx872ynoA
'' SIG '' b0swRCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+tuWO
'' SIG '' M7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlKcWOd
'' SIG '' eyFtw5yjojz6f32WapB4pm3S4Zz5Hfw42JT0xqUKloak
'' SIG '' vZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45V3ai
'' SIG '' caoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4TtxCd9d
'' SIG '' dJgiCGHasFAeb73x4QDf5zEHpJM692VHeOj4qEir995y
'' SIG '' fmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEegPsbiSpU
'' SIG '' ObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9UJyH3yKxO
'' SIG '' 2ii4sanblrKnQqLJzxlBTeCG+SqaoxFmMNO7dDJL32N7
'' SIG '' 9ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp3lfB0d4wwP3M
'' SIG '' 5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa7wknHNWzfjUe
'' SIG '' CLraNtvTX4/edIhJEjCCBNowggPCoAMCAQICEzMAAABW
'' SIG '' 1FP3yuRWLPgAAAAAAFYwDQYJKoZIhvcNAQELBQAwfDEL
'' SIG '' MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
'' SIG '' EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
'' SIG '' c29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9z
'' SIG '' b2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcNMTUwMzIw
'' SIG '' MTczMjI4WhcNMTYwNjIwMTczMjI4WjCBszELMAkGA1UE
'' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
'' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
'' SIG '' b3Jwb3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UE
'' SIG '' CxMebkNpcGhlciBEU0UgRVNOOkJCRUMtMzBDQS0yREJF
'' SIG '' MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT
'' SIG '' ZXJ2aWNlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
'' SIG '' CgKCAQEApwlZl14b5yy23kBo8+GPMvRORtdD5lCHTuLh
'' SIG '' +TK/KWcUbmo53w8j8oVCRTVUcBCMXNkHnQDaBe2aNd/q
'' SIG '' lcTxBggB0jOsfcdvUENVaIHqhyFw2jn0HC7/1HvY1o+y
'' SIG '' yCU0QENh248yY9kTGlqKXg86rW961/Nsi8/93vn4ynoo
'' SIG '' ciZn6oDXPRoJT/c91r+exOviUBTvFnwhCHYzDkUloC8T
'' SIG '' 9cQPaQYqmBf05MdTcAF3h1Ehhyzda6nEbJQ2AG0erVGv
'' SIG '' pnpbco4R24YkZwsBF39iIsVBxkBCFt9Susk+a8sGOo0K
'' SIG '' d4gKUbPiM+E1SPIzraHLfJind6eOTfVIH3L2iQtwOwID
'' SIG '' AQABo4IBGzCCARcwHQYDVR0OBBYEFOjoxisPXJ4Y2wS8
'' SIG '' J9JmJs9oaFKJMB8GA1UdIwQYMBaAFNVjOlyKMZDzQ3t8
'' SIG '' RhvFM2hahW1VMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6
'' SIG '' Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1
'' SIG '' Y3RzL01pY1RpbVN0YVBDQV8yMDEwLTA3LTAxLmNybDBa
'' SIG '' BggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6
'' SIG '' Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWlj
'' SIG '' VGltU3RhUENBXzIwMTAtMDctMDEuY3J0MAwGA1UdEwEB
'' SIG '' /wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZI
'' SIG '' hvcNAQELBQADggEBAJFIz0p4AhzHi0nPTe2vZQXUEXXy
'' SIG '' sNSS/1NFfgTB552zKl1ZOdYeg+ZRGmNCSGJ9SdMkigts
'' SIG '' MnXkFgoDbfIkdljjEtQvJ0P+O3XX5I555CgHiL7pGukX
'' SIG '' VPUV6WNpol/Sz9T0NEeEh8kxyTM2KZ2Z3EXaLD7omdyZ
'' SIG '' JB5bk+1EgdoOQsWvgZarmbyQDAUaNfO4R4DJTjs+RrOS
'' SIG '' XGS0GHm8SQ9GxumhG+j2OM6vsf1RgGNrjEiubj56c0QM
'' SIG '' ocy8jbsp7BhTbdHizGNlX1Lj81lpYTU2Kq3u4e1xBuH6
'' SIG '' +65oSzeLpkvQwFWQMeNkrt3o7rHq3HLKNJbyLeds67D1
'' SIG '' L1pV/UWhggN5MIICYQIBATCB46GBuaSBtjCBszELMAkG
'' SIG '' A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
'' SIG '' BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
'' SIG '' dCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUG
'' SIG '' A1UECxMebkNpcGhlciBEU0UgRVNOOkJCRUMtMzBDQS0y
'' SIG '' REJFMSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt
'' SIG '' cCBTZXJ2aWNloiUKAQEwCQYFKw4DAhoFAAMVAD56hsFT
'' SIG '' HYPp3koWvyC28XTqEw1voIHCMIG/pIG8MIG5MQswCQYD
'' SIG '' VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
'' SIG '' A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
'' SIG '' IENvcnBvcmF0aW9uMQ0wCwYDVQQLEwRNT1BSMScwJQYD
'' SIG '' VQQLEx5uQ2lwaGVyIE5UUyBFU046NTdGNi1DMUUwLTU1
'' SIG '' NEMxKzApBgNVBAMTIk1pY3Jvc29mdCBUaW1lIFNvdXJj
'' SIG '' ZSBNYXN0ZXIgQ2xvY2swDQYJKoZIhvcNAQEFBQACBQDZ
'' SIG '' SY++MCIYDzIwMTUwNzEwMDAyNjM4WhgPMjAxNTA3MTEw
'' SIG '' MDI2MzhaMHcwPQYKKwYBBAGEWQoEATEvMC0wCgIFANlJ
'' SIG '' j74CAQAwCgIBAAICGZACAf8wBwIBAAICGQUwCgIFANlK
'' SIG '' 4T4CAQAwNgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGE
'' SIG '' WQoDAaAKMAgCAQACAxbjYKEKMAgCAQACAwehIDANBgkq
'' SIG '' hkiG9w0BAQUFAAOCAQEAKEkt7ETQOkJp+sFgvahWaRyJ
'' SIG '' TIX20nJ2NUDU6b8pqr8yT27Swj6HiKtG8eUmc9UHHQNW
'' SIG '' uNGzaW722Id2123+7BeGjxH2eXBxjD3bu7Z4Egt28n7C
'' SIG '' 8jxgYVhW0TWXEvi38gUi0H3jR2c2P4uF4kgXEGcvPEYw
'' SIG '' 8szq2mh+3daDfmUpqbLlC1cFqN4Q44zbYSz/MSiaU1Uy
'' SIG '' w+0lzaokbrkvHdevSBk633PeFJg4XMCR+DPScDmBIe2Y
'' SIG '' E/MsUYcDufFO97SWRq/oj50hvsNNMKzhfVV1K76QaZYK
'' SIG '' AB8xbmXTjGIvnYW0Kxs4zCEZJm5J23N4hpS04ahp9rjM
'' SIG '' lsRgH8ns6TGCAvUwggLxAgEBMIGTMHwxCzAJBgNVBAYT
'' SIG '' AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
'' SIG '' EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
'' SIG '' cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1l
'' SIG '' LVN0YW1wIFBDQSAyMDEwAhMzAAAAVtRT98rkViz4AAAA
'' SIG '' AABWMA0GCWCGSAFlAwQCAQUAoIIBMjAaBgkqhkiG9w0B
'' SIG '' CQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIE
'' SIG '' IG3U3XOo98lt0mlsXs3JDPRQcZ7qE+zUy5wmxlVR8rU8
'' SIG '' MIHiBgsqhkiG9w0BCRACDDGB0jCBzzCBzDCBsQQUPnqG
'' SIG '' wVMdg+neSha/ILbxdOoTDW8wgZgwgYCkfjB8MQswCQYD
'' SIG '' VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
'' SIG '' A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
'' SIG '' IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg
'' SIG '' VGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAFbUU/fK5FYs
'' SIG '' +AAAAAAAVjAWBBQr5tn53nA4xwelxJA0YSs4wG/80zAN
'' SIG '' BgkqhkiG9w0BAQsFAASCAQBiDGV7ZHVWyC1siswiMmjC
'' SIG '' OOnG868ISr0nbHr/Z02N9yheGgZZy3LKZFHKqXMfVu9Z
'' SIG '' ohQrMFKI0DojUW+5j4VHZXTGmJyCKITXdb6D4AF7wUqb
'' SIG '' H9xoUsEgQNLpGNc3yQXjDmS5ZepV44yh37o5mz21tkxt
'' SIG '' o4L9bb7al3AGlctliw9r29tLK8tKkrtUYAWPPgydyISa
'' SIG '' a+byn2OA7e/sFGceYYMiuDXwehst6oh8Tp0grCszqwGD
'' SIG '' y6abKdLkdLv1YUb00VX1Wqc+zh4MLsOGBMFyDqWRhmtd
'' SIG '' K/I9ze9JeUYcwYKzrJJlbfNi9Xd0W4rxqcmh7RtQAuJj
'' SIG '' SR66cP8YMRLO
'' SIG '' End signature block
