' Windows Installer utility to generate a transform from two databases
' For use with Windows Scripting Host, CScript.exe or WScript.exe
' Copyright (c) Microsoft Corporation. All rights reserved.
' Demonstrates use of Database.GenerateTransform and MsiDatabaseGenerateTransform
'
Option Explicit

Const msiOpenDatabaseModeReadOnly     = 0
Const msiOpenDatabaseModeTransact     = 1
Const msiOpenDatabaseModeCreate       = 3

If Wscript.Arguments.Count < 2 Then
	Wscript.Echo "Windows Installer database tranform generation utility" &_
		vbNewLine & " 1st argument is the path to the original installer database" &_
		vbNewLine & " 2nd argument is the path to the updated installer database" &_
		vbNewLine & " 3rd argument is the path to the transform file to generate" &_
		vbNewLine & " If the 3rd argument is omitted, the databases are only compared" &_
		vbNewLine &_
		vbNewLine & "Copyright (C) Microsoft Corporation.  All rights reserved."
	Wscript.Quit 1
End If

' Connect to Windows Installer object
On Error Resume Next
Dim installer : Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError

' Open databases and generate transform
Dim database1 : Set database1 = installer.OpenDatabase(Wscript.Arguments(0), msiOpenDatabaseModeReadOnly) : CheckError
Dim database2 : Set database2 = installer.OpenDatabase(Wscript.Arguments(1), msiOpenDatabaseModeReadOnly) : CheckError
Dim transform:transform = ""  'Simply compare if no output transform file supplied
If Wscript.Arguments.Count >= 3 Then transform = Wscript.Arguments(2)
Dim different:different = Database2.GenerateTransform(Database1, transform) : CheckError
If Not different Then Wscript.Echo "Databases are identical" Else If transform = Empty Then Wscript.Echo "Databases are different"

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 '' MIIpbQYJKoZIhvcNAQcCoIIpXjCCKVoCAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' LEOvI1OL4Ms+i8VD+9Lv0JnljZ8+Z42whrFijf9Ua/Cg
'' SIG '' gg3hMIIGvTCCBKWgAwIBAgITMwAAABxIn4HfobC3dwAA
'' SIG '' AAAAHDANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UEBhMC
'' SIG '' VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
'' SIG '' B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
'' SIG '' b3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3Qg
'' SIG '' Q2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMjQw
'' SIG '' ODA4MjEzNjIzWhcNMzUwNjIzMjIwNDAxWjBfMQswCQYD
'' SIG '' VQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMTAwLgYDVQQDEydNaWNyb3NvZnQgV2luZG93
'' SIG '' cyBDb2RlIFNpZ25pbmcgUENBIDIwMjQwggIiMA0GCSqG
'' SIG '' SIb3DQEBAQUAA4ICDwAwggIKAoICAQCafWt9J8F2Ki6u
'' SIG '' 49U0/8wrbe78VPggo/uwZIn0vwdoFyhlOzlfUl0SRj9c
'' SIG '' hbOaeo6bGIuHGMxeegFdABJphI1fME9pbz1OQYTd8Fd9
'' SIG '' B6mDyGBI+T91l39JFw/X741H9RgLVxK4ifMOwCzWlRJv
'' SIG '' UbOHjwNGbGB2gm1OZAVCUA17++oWnznEIHRQgNyN82LX
'' SIG '' 819rzsMfO7gzmgrsijkWYofXN803/kywuUGC8oVTAZw1
'' SIG '' xBwzq72sPdg0siKqXYEVqbn86gxctXoFY5KF2YW/vaWf
'' SIG '' YXlMzV014TqF83sYemMwC+H5QVpvgXNYUMhEnpxLwSc5
'' SIG '' 1ftubt4e+444DFGOOPll0OLvanXQ3v1OUngGikb74m5o
'' SIG '' uM+0EaS72bJWtAj4jlBs9NA6ObH5AtBMJbEs3zN/vAPa
'' SIG '' 7MhVToFg1T87ffDiT9hKGhDqvBhPRgqDdou/+AthQsH3
'' SIG '' 9QUgkyVmTtVnK9jLXiROlMRlfooQPJzedWDyg9nWBqHs
'' SIG '' K170cwv9R6FHkr5WX9Jn/RhxLb75GyVUUaOjwX9Jnebf
'' SIG '' O1W9ZjP3yKdXsqcmsZl5IKXAcLspbDqtpElTiecAT6Gh
'' SIG '' LLCZHjHCpxLrrvvlCnQx5UtA7bGIzdEJzrnL03UrHb4c
'' SIG '' yjkoyRd11aq/X9gveOS10+a8SiB1CBAwXDWFOgSgwx+q
'' SIG '' 36SjjgkopQIDAQABo4IBRjCCAUIwDgYDVR0PAQH/BAQD
'' SIG '' AgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBQe
'' SIG '' gt8O14yz1wI0gw7aq61lua+47DAZBgkrBgEEAYI3FAIE
'' SIG '' DB4KAFMAdQBiAEMAQTAPBgNVHRMBAf8EBTADAQH/MB8G
'' SIG '' A1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYG
'' SIG '' A1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9z
'' SIG '' b2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0Nl
'' SIG '' ckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQRO
'' SIG '' MEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9z
'' SIG '' b2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIw
'' SIG '' MTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEBDAUAA4ICAQBD
'' SIG '' X/jfP7vplIw7XPW7aAOdkQXNF1Q0gTEATKsbueoVxwcL
'' SIG '' nLVFrNVwagwzCBQh7vXOmP1BfkzfBCII57owKSmJhz+H
'' SIG '' +BDNwEUppc66ReaMzicdAQORVL9Y5qXX/9mW6qbwsZcb
'' SIG '' /xtUeCo60ppqjx87OooMN2+0U24+wcSEvHziJMGFkIQd
'' SIG '' ny45YPtx0qwxjxSIaSCVlWpjCEe2u9jhqJ43X+Oa7KcK
'' SIG '' iB7sp2VOGr8va7gf0YYW8JvnzG/ATHnCGk5pKIcfxGWe
'' SIG '' RjVnDeqE2FtxtgTNwd2M51pJfbeLIT+tHzLnvtpLHRxl
'' SIG '' khPBFU3UphlHY9I61HOOpRlRSSEhd/zMXMZ5TXj9Socq
'' SIG '' /mc0+BLbPyO5rn6Wi5y2pczEdsyLoRjgFlrMHrG47Rc5
'' SIG '' FVBYA0dklvdNyNFypWzxAOqvHqRxifa6MYfOZ7BCnATV
'' SIG '' MOEnKevCgqkqRQWiosldbJHfpfFOdFjXjzG/Qc89DnwE
'' SIG '' mpfL+bEBvg1tNZDfiPkSlCGzOSOdMCY4h8pkBTQ7G6Gx
'' SIG '' cfSPeZghBD1O31Gd1U/xzlFW5Jl+5bSAv3kALuRjvH7v
'' SIG '' nHhEzMm726MVDOHWDQvj86KFMX5gtA7ikcAdtW1/fmnL
'' SIG '' iAZMSJuBHdztfcNVS6AO1DTlLie8+jUNlv/qu3J3zj5d
'' SIG '' kFS+KpYAm5VE9r5kKZZVdzCCBxwwggUEoAMCAQICEzMA
'' SIG '' AACTIsPyKjHn45EAAAAAAJMwDQYJKoZIhvcNAQEMBQAw
'' SIG '' XzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29m
'' SIG '' dCBDb3Jwb3JhdGlvbjEwMC4GA1UEAxMnTWljcm9zb2Z0
'' SIG '' IFdpbmRvd3MgQ29kZSBTaWduaW5nIFBDQSAyMDI0MB4X
'' SIG '' DTI1MDUwODE4MjUxMFoXDTI2MDUwNjE4MjUxMFowfzEL
'' SIG '' MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
'' SIG '' EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
'' SIG '' c29mdCBDb3Jwb3JhdGlvbjEpMCcGA1UEAxMgTWljcm9z
'' SIG '' b2Z0IFdpbmRvd3MgS2l0cyBQdWJsaXNoZXIwggIiMA0G
'' SIG '' CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC1QY/67PaQ
'' SIG '' pbWdpt4tt8q8kpv2T36a1JuvEdZeu8rR7fRF2E7oZHf6
'' SIG '' XrDlpmu8Qf1dZABr20S2v5PgYeCsQI230NYj/f+OdTJU
'' SIG '' RO5+WNkHC/4IwpMJd/EZPGA2/rMgdHC+4rqhssJ/Dt66
'' SIG '' s9wib39ghaETCPPqMG527IAPK5s4EGlVjnd+K44YCBUv
'' SIG '' uW52kt/WifhGTQXgzxz6E/hT0oLJ+A6W3YfRP45UXf0H
'' SIG '' f0CxLfoWhfsIrYfDymBjAUqIJxDKToigCN47rxUDeJY7
'' SIG '' SBzSK9MxfAhAo6A8n+npcMv4SaEI6ZPf8wifAqNLfnVz
'' SIG '' +RxBsU6CpAmuAojfy9cVn/o9QfLGVsyo8bOOVLEk0TMy
'' SIG '' 3urGhRhHZyNOJbuDvwUQWbZumFXc/briJOOapfWA2ua6
'' SIG '' rh7xGzPvT9epsiUmkzMCE7ihiolSbukbOtalKQUzZwF/
'' SIG '' U1jhPnQ1LGeFEHr6Q6GnlvWHus4CTGAsPNpC7Koqxu+o
'' SIG '' bOCZ2yLQj85kB732NV4j5gwrveHzSWF92ZFNm76027vj
'' SIG '' h3naiuD3K+gzJsM74VlziPSoaMdirKE8OWwFMzokUuna
'' SIG '' vg5A6HM6rMUOZ0+HdMWq17Wlew/2mYjPG1hJIQhjPWRq
'' SIG '' h2x4gyZMOFzKGPf5zpk9Nyhg7RLHUKeaPxV4v4dapnKw
'' SIG '' Fe5gktligpr7KQIDAQABo4IBrzCCAaswDgYDVR0PAQH/
'' SIG '' BAQDAgeAMB8GA1UdJQQYMBYGCisGAQQBgjcKAxQGCCsG
'' SIG '' AQUFBwMDMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFFIv
'' SIG '' q4ZMSMQi4ghdi+kangFORpsAMEUGA1UdEQQ+MDykOjA4
'' SIG '' MR4wHAYDVQQLExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x
'' SIG '' FjAUBgNVBAUTDTIyOTkwMys1MDQ1NzYwHwYDVR0jBBgw
'' SIG '' FoAUHoLfDteMs9cCNIMO2qutZbmvuOwwagYDVR0fBGMw
'' SIG '' YTBfoF2gW4ZZaHR0cDovL3d3dy5taWNyb3NvZnQuY29t
'' SIG '' L3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwV2luZG93cyUy
'' SIG '' MENvZGUlMjBTaWduaW5nJTIwUENBJTIwMjAyNC5jcmww
'' SIG '' dwYIKwYBBQUHAQEEazBpMGcGCCsGAQUFBzAChltodHRw
'' SIG '' Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRz
'' SIG '' L01pY3Jvc29mdCUyMFdpbmRvd3MlMjBDb2RlJTIwU2ln
'' SIG '' bmluZyUyMFBDQSUyMDIwMjQuY3J0MA0GCSqGSIb3DQEB
'' SIG '' DAUAA4ICAQBQT/wL+kINN/MKl08zfpQ5majTXpznkVo6
'' SIG '' o89vkP+z2H6mfPWLBAVbV7Nim+eMDjtBZMmb3dajbo42
'' SIG '' Ew5quS9SNtD/EsDZ/IQAQEMJZiVI8bvkE0vDn9zFrV/g
'' SIG '' bQMmGYM22mrKsWo2kysolgvQ/3hCLZyrpWWcHGIvdmgP
'' SIG '' wtMuMsvb+bzTedo15gC97MTcDCgrEBQjOfWYwQ0AX0dD
'' SIG '' md745eqSOBSG+6vtLuN9/goSCwVRzH85aBSZG6yf3rs7
'' SIG '' G+tIv38LddCnA7pD9EPV+eUEsenhoJHi5xWIMk5lYBEp
'' SIG '' dT96C18bECUsvH8mTe95TXhwKdFtAkzGT45Oe9gld14y
'' SIG '' FfPAg+1XmLAtgKEnEhLNM6RPzHf1qfR5bpwCP7XsoNg8
'' SIG '' UURqem2ANWVJLmV0bB/3/iwBkffZHvTwa1E9xTFkUARz
'' SIG '' Qrw9nAXoUr0aYdc7+A/pgo6dWGwIF81yw8YY1RzqFmEA
'' SIG '' P24Vx0VflEGalO1sNFjwUI/xT0fdvEdLnPVykHFnCYfw
'' SIG '' HIoJPjACBH3De/8ZdOOTQPLn4BtbT5Dszf8pj9UQxq3D
'' SIG '' lVecV4dPT+74MLXdGEpxpWID/RUXIkaAudPrSoB/Wkcc
'' SIG '' z7Vpti6a3LZLeQulQcgoDtHhdHWlDQVIDg9p1Wx1F7cT
'' SIG '' UH8FyYAFr998Oimf5Pw7DJ53pJ70Aas0ajGCGuQwghrg
'' SIG '' AgEBMHYwXzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1p
'' SIG '' Y3Jvc29mdCBDb3Jwb3JhdGlvbjEwMC4GA1UEAxMnTWlj
'' SIG '' cm9zb2Z0IFdpbmRvd3MgQ29kZSBTaWduaW5nIFBDQSAy
'' SIG '' MDI0AhMzAAAAkyLD8iox5+ORAAAAAACTMA0GCWCGSAFl
'' SIG '' AwQCAQUAoIGoMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3
'' SIG '' AgEEMC8GCSqGSIb3DQEJBDEiBCCA3zro2lLseLGO2M/3
'' SIG '' aSmOZAVhoekEC6Ojv4plXA2WhzBaBgorBgEEAYI3AgEM
'' SIG '' MUwwSqAkgCIATQBpAGMAcgBvAHMAbwBmAHQAIABXAGkA
'' SIG '' bgBkAG8AdwBzoSKAIGh0dHA6Ly93d3cubWljcm9zb2Z0
'' SIG '' LmNvbS93aW5kb3dzMA0GCSqGSIb3DQEBAQUABIICAAQU
'' SIG '' YLHFgCVlEJLy2VL7jVGVPtEcieoFnNax8xNXln0+NpQU
'' SIG '' cbt1k6974OJ4KT/1Ov7QcSbVeJ5Ssq5a0KS7begAB58Z
'' SIG '' 5f9t8ACN0kmejEKFu/BEL7RJgLJoS1HpnvzXifd8QjgX
'' SIG '' GgbAbvDww4lupmUA1LxaDVirZ/ZrCEPOhdn+fh2w8sEd
'' SIG '' 0hRwJcjqVSfXkewyqNmIlonCrqzk1n/21X0asD+ciA/U
'' SIG '' hnquDU4sNuXjQx8h37zR2SGrdmC/+6hBb2639P4ZmZnb
'' SIG '' zcdT8PPvgkG4JXajGh5lDlPW0U9YQ1iqgs1/4e1NrNIF
'' SIG '' 71ZHVF7FmWe8mgXBmFCMxt4CJ95Z5iUy8oFIM4zi6OHc
'' SIG '' I3tDxPQWU28CNaHihli7hL15csX5aALsRzNfRvbX+3RL
'' SIG '' 8mn32e4s7cEAnpU+aNfl4rjNmTM1vf8lAVb0ugBHWnAj
'' SIG '' qu2gDsmfchst4WvC+QFIIBWQ3KL3oUpi3eaSnU9mxk+e
'' SIG '' 0g21arrjPY6QioL9mCI1/nmTzAJKxSeLll9L77oRGS/8
'' SIG '' XP0wUbb58HXd+f0L+FYFdPz1ysIbEpRqsMDG420P9EmV
'' SIG '' I9mXtB9deAcTwftWFjXgZZKaksQ7V1eP4g3+0U3zeVpt
'' SIG '' sXLMiO5Por3UxfJu4+CSx+9dixa/eejo1yotmna9x0+z
'' SIG '' +Z3fwYQYhmn3/MiVGhgDoYIXlDCCF5AGCisGAQQBgjcD
'' SIG '' AwExgheAMIIXfAYJKoZIhvcNAQcCoIIXbTCCF2kCAQMx
'' SIG '' DzANBglghkgBZQMEAgEFADCCAVIGCyqGSIb3DQEJEAEE
'' SIG '' oIIBQQSCAT0wggE5AgEBBgorBgEEAYRZCgMBMDEwDQYJ
'' SIG '' YIZIAWUDBAIBBQAEIORIoxdACcUhwDMqJ+6ygKczSGfo
'' SIG '' ZqlpNNgIEyi6cWHOAgZpb52xWzsYEzIwMjYwMTI3MDMy
'' SIG '' MjMzLjc2NlowBIACAfSggdGkgc4wgcsxCzAJBgNVBAYT
'' SIG '' AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
'' SIG '' EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
'' SIG '' cG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVy
'' SIG '' aWNhIE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQg
'' SIG '' VFNTIEVTTjozNzAzLTA1RTAtRDk0NzElMCMGA1UEAxMc
'' SIG '' TWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaCCEeow
'' SIG '' ggcgMIIFCKADAgECAhMzAAACCkeyFNnusrMPAAEAAAIK
'' SIG '' MA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMw
'' SIG '' EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
'' SIG '' b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
'' SIG '' b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1w
'' SIG '' IFBDQSAyMDEwMB4XDTI1MDEzMDE5NDI1N1oXDTI2MDQy
'' SIG '' MjE5NDI1N1owgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
'' SIG '' EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
'' SIG '' HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAj
'' SIG '' BgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlv
'' SIG '' bnMxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjozNzAz
'' SIG '' LTA1RTAtRDk0NzElMCMGA1UEAxMcTWljcm9zb2Z0IFRp
'' SIG '' bWUtU3RhbXAgU2VydmljZTCCAiIwDQYJKoZIhvcNAQEB
'' SIG '' BQADggIPADCCAgoCggIBALLs3PASlvsGnACT0snTRerf
'' SIG '' RNxONzA1nzRPEC0BuFJonaTCckDUC78Oj398QGMAe/oy
'' SIG '' a23d+Y8N4gmdDtUF4irxFx+NyOts8iDfADm/kxB+U81I
'' SIG '' E069xdE/59mcDLQQsPN+ckecKRk2xBRnsYXsvFQtMo5h
'' SIG '' jZgnDhOuZweiGRjoOMJnLGGqYZDDB1uOg9ZFti7+jMV6
'' SIG '' b/J8k/KNUGqXXTrxtxWHnwDxzkIPpNY38ve743L7s7z4
'' SIG '' O96vqoFPjgTLul89kxnUeLvK8Iu/ksbNIHqjY4PkYhnL
'' SIG '' vPiSHxRgd3OOf1bH5BnbbfdIlAq1mGkju4d/egxODTNq
'' SIG '' dB/PuaC515+YYGtASDWjHef7dOLOHQP3NWY1A/2wWOw9
'' SIG '' C00Zn0gP0fwD6QUifHiatLEDZLIYw5BzGUYzfSS0goze
'' SIG '' KoK4URT0IdUyk33j/V+XhPo+icn7+hYmoWVq1i4wq/Zn
'' SIG '' y6KmucVwDEKk6wMhUE70rW8d4AyJBBSVwT0IPnfojVgu
'' SIG '' eY7aodqA8+ZeF04asdScJS2inbV6W6QeHvmr/nMf46c1
'' SIG '' 6Snm52mNA1kK+JgBl0ewueRTQ19QCvqvVSoNxKrXJ/lG
'' SIG '' LCKYHxKOx2YeWXiA+OapWLT+uaczWgARCbc/JZxNBCJt
'' SIG '' guK4o3tjiKjlslNXCb69FFuknlQv8PfcL//uqcdt6hYF
'' SIG '' AgMBAAGjggFJMIIBRTAdBgNVHQ4EFgQUAq8XQQSPgDI9
'' SIG '' 9jxb+quwC9+1nCQwHwYDVR0jBBgwFoAUn6cVXQBeYl2D
'' SIG '' 9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0
'' SIG '' cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwv
'' SIG '' TWljcm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIw
'' SIG '' MTAoMSkuY3JsMGwGCCsGAQUFBwEBBGAwXjBcBggrBgEF
'' SIG '' BQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br
'' SIG '' aW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBUaW1lLVN0YW1w
'' SIG '' JTIwUENBJTIwMjAxMCgxKS5jcnQwDAYDVR0TAQH/BAIw
'' SIG '' ADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8B
'' SIG '' Af8EBAMCB4AwDQYJKoZIhvcNAQELBQADggIBALCTc9bQ
'' SIG '' LKM5qpcIw66xN17t6nYLA//FXUnej0oCIpJ2rxrZRHlE
'' SIG '' IdiGcmx56bB4xQfaQ15+mcCHYGfwfaikPO0MmSPw5hF3
'' SIG '' 8pDKwTXY3Bpjco7ABbxGDw51e/l9Rkiw5aCmuQJAzRWg
'' SIG '' Ud1dgTGQk3cTMFtQJTDfJviAAU8rnpP7pw+kjwwkskJB
'' SIG '' cc0yC2LZBmFf0qR9EB98VgwVymxsj6jOILkGuuTffrVw
'' SIG '' kUeGAQlHQnjaeplMZKBSkMYdJkBEao1wBXmH45AMt4Xa
'' SIG '' ndRHH8/oxxSDWcnaAw9gGwP5vB30HRz9chn0y3e6OUQs
'' SIG '' +mSKOMJ1JnGHO7YzdJlYmvnu5j4UL4uym8g4fU6mh9qe
'' SIG '' HckYOiw1wAS73JQxYqwQEyeAPpVZBJBhnpf0XzTMKh5n
'' SIG '' BOrSL0C6OdjPPHlbZ8SBl6NG7orUYIBKbO02VgmUAKOp
'' SIG '' p9ZGh9OqQmFX8na/3tfeu4O9+m465ChS1UDBesOwbY04
'' SIG '' G69Wyjkp1bniEFKzP/j45EHiouerj8Y21qNQeispEocY
'' SIG '' 6AWjwMppcb5Q0A3CEY3EdsgtJrn0/ETEyAKMFE/fzbzI
'' SIG '' Yqyq5ITPMs1afPlp/1mZ4fjzT1/Ai20jjUmS6Jj1fqGY
'' SIG '' yYti/w5jfi+84r7PLGRL70FQtUA/qC37JodoGWuWfwaL
'' SIG '' j90GvbLpKuv/nqDQMIIHcTCCBVmgAwIBAgITMwAAABXF
'' SIG '' 52ueAptJmQAAAAAAFTANBgkqhkiG9w0BAQsFADCBiDEL
'' SIG '' MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
'' SIG '' EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
'' SIG '' c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9z
'' SIG '' b2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw
'' SIG '' MTAwHhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1
'' SIG '' WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu
'' SIG '' Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV
'' SIG '' TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1N
'' SIG '' aWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCAiIw
'' SIG '' DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOThpkzn
'' SIG '' tHIhC3miy9ckeb0O1YLT/e6cBwfSqWxOdcjKNVf2AX9s
'' SIG '' SuDivbk+F2Az/1xPx2b3lVNxWuJ+Slr+uDZnhUYjDLWN
'' SIG '' E893MsAQGOhgfWpSg0S3po5GawcU88V29YZQ3MFEyHFc
'' SIG '' UTE3oAo4bo3t1w/YJlN8OWECesSq/XJprx2rrPY2vjUm
'' SIG '' ZNqYO7oaezOtgFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W
'' SIG '' 7IVWTe/dvI2k45GPsjksUZzpcGkNyjYtcI4xyDUoveO0
'' SIG '' hyTD4MmPfrVUj9z6BVWYbWg7mka97aSueik3rMvrg0Xn
'' SIG '' Rm7KMtXAhjBcTyziYrLNueKNiOSWrAFKu75xqRdbZ2De
'' SIG '' +JKRHh09/SDPc31BmkZ1zcRfNN0Sidb9pSB9fvzZnkXf
'' SIG '' tnIv231fgLrbqn427DZM9ituqBJR6L8FA6PRc6ZNN3SU
'' SIG '' HDSCD/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1DTsEzOUyO
'' SIG '' ArxCaC4Q6oRRRuLRvWoYWmEBc8pnol7XKHYC4jMYcten
'' SIG '' IPDC+hIK12NvDMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh
'' SIG '' 8zYGNRiER9vcG9H9stQcxWv2XFJRXRLbJbqvUAV6bMUR
'' SIG '' HXLvjflSxIUXk8A8FdsaN8cIFRg/eKtFtvUeh17aj54W
'' SIG '' cmnGrnu3tz5q4i6tAgMBAAGjggHdMIIB2TASBgkrBgEE
'' SIG '' AYI3FQEEBQIDAQABMCMGCSsGAQQBgjcVAgQWBBQqp1L+
'' SIG '' ZMSavoKRPEY1Kc8Q/y8E7jAdBgNVHQ4EFgQUn6cVXQBe
'' SIG '' Yl2D9OXSZacbUzUZ6XIwXAYDVR0gBFUwUzBRBgwrBgEE
'' SIG '' AYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3
'' SIG '' dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9z
'' SIG '' aXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsGAQUFBwMIMBkG
'' SIG '' CSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQE
'' SIG '' AwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaA
'' SIG '' FNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0w
'' SIG '' S6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9w
'' SIG '' a2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEw
'' SIG '' LTA2LTIzLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYB
'' SIG '' BQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w
'' SIG '' a2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMu
'' SIG '' Y3J0MA0GCSqGSIb3DQEBCwUAA4ICAQCdVX38Kq3hLB9n
'' SIG '' ATEkW+Geckv8qW/qXBS2Pk5HZHixBpOXPTEztTnXwnE2
'' SIG '' P9pkbHzQdTltuw8x5MKP+2zRoZQYIu7pZmc6U03dmLq2
'' SIG '' HnjYNi6cqYJWAAOwBb6J6Gngugnue99qb74py27YP0h1
'' SIG '' AdkY3m2CDPVtI1TkeFN1JFe53Z/zjj3G82jfZfakVqr3
'' SIG '' lbYoVSfQJL1AoL8ZthISEV09J+BAljis9/kpicO8F7BU
'' SIG '' hUKz/AyeixmJ5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tu
'' SIG '' PywJeBTpkbKpW99Jo3QMvOyRgNI95ko+ZjtPu4b6MhrZ
'' SIG '' lvSP9pEB9s7GdP32THJvEKt1MMU0sHrYUP4KWN1APMdU
'' SIG '' bZ1jdEgssU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz
'' SIG '' 138eW0QBjloZkWsNn6Qo3GcZKCS6OEuabvshVGtqRRFH
'' SIG '' qfG3rsjoiV5PndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xB
'' SIG '' Zj1p/cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7
'' SIG '' Fx0ViY1w/ue10CgaiQuPNtq6TPmb/wrpNPgkNWcr4A24
'' SIG '' 5oyZ1uEi6vAnQj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784
'' SIG '' cETRkPHIqzqKOghif9lwY1NNje6CbaUFEMFxBmoQtB1V
'' SIG '' M1izoXBm8qGCA00wggI1AgEBMIH5oYHRpIHOMIHLMQsw
'' SIG '' CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
'' SIG '' MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z
'' SIG '' b2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3Nv
'' SIG '' ZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYDVQQLEx5u
'' SIG '' U2hpZWxkIFRTUyBFU046MzcwMy0wNUUwLUQ5NDcxJTAj
'' SIG '' BgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZp
'' SIG '' Y2WiIwoBATAHBgUrDgMCGgMVANEAxUmUDpsqr3dWe7dS
'' SIG '' QmCbkeVhoIGDMIGApH4wfDELMAkGA1UEBhMCVVMxEzAR
'' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
'' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
'' SIG '' bjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAg
'' SIG '' UENBIDIwMTAwDQYJKoZIhvcNAQELBQACBQDtIqzYMCIY
'' SIG '' DzIwMjYwMTI3MDMxNzQ0WhgPMjAyNjAxMjgwMzE3NDRa
'' SIG '' MHQwOgYKKwYBBAGEWQoEATEsMCowCgIFAO0irNgCAQAw
'' SIG '' BwIBAAICCfcwBwIBAAICExkwCgIFAO0j/lgCAQAwNgYK
'' SIG '' KwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAqAKMAgC
'' SIG '' AQACAwehIKEKMAgCAQACAwGGoDANBgkqhkiG9w0BAQsF
'' SIG '' AAOCAQEAmYCf7LbzXp4ENRL6WXGr7cSntSboFPAUFoL9
'' SIG '' sSnX+SmGjwWSy4DYdlrfZmWK4j74RpeD6MPGvnddXXvV
'' SIG '' K3tKTH+UdM/JK+2OBW5NlppaTtljfC4FD5FRKJqSCCsH
'' SIG '' QkYCFZcHVH8bCVnw/cFkfrW6hZSOE0AkK8rkLlPJnF5t
'' SIG '' 6FKpLPoDO7ivVuj8iS+WD1fDvZAP/n0hiwIjvaq3e/uy
'' SIG '' 0r+X1srg9deWgiErM0H8JXvPdHfQx5bDqxvLE6/XD7dT
'' SIG '' PkuvAgxZ2THS17t5RGMs0l9txZ26FvOmYMBfhM5Aq2jd
'' SIG '' 5g1KAvnpmz4tiXGrvCCbC1c7TyOShseBiBxHs/qvMDGC
'' SIG '' BA0wggQJAgEBMIGTMHwxCzAJBgNVBAYTAlVTMRMwEQYD
'' SIG '' VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
'' SIG '' MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x
'' SIG '' JjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD
'' SIG '' QSAyMDEwAhMzAAACCkeyFNnusrMPAAEAAAIKMA0GCWCG
'' SIG '' SAFlAwQCAQUAoIIBSjAaBgkqhkiG9w0BCQMxDQYLKoZI
'' SIG '' hvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEIATEzaAhguKG
'' SIG '' ATczDOuy15OFZkspb5Ssr95sNuxOabD9MIH6BgsqhkiG
'' SIG '' 9w0BCRACLzGB6jCB5zCB5DCBvQQgTZrL/LR6kr9fdnTc
'' SIG '' pNyWioTy70hdG107sx7HSHD35JowgZgwgYCkfjB8MQsw
'' SIG '' CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
'' SIG '' MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z
'' SIG '' b2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3Nv
'' SIG '' ZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAgpHshTZ
'' SIG '' 7rKzDwABAAACCjAiBCAgvW4z3CbpYfKSJiWH+x6xrGVU
'' SIG '' HbAzbA90DWWvGkEytzANBgkqhkiG9w0BAQsFAASCAgAg
'' SIG '' dEdK4y5CcdxiBDnlx9o+zByZgEERlrGsvd7h97JsGz4d
'' SIG '' dnJ98hPanWAjurL4p7Vr6KNaFJzA07Z1LDD2EQiSKOBr
'' SIG '' CqH+nJpR6olAOWJcQIKteqOb8N2nQKPoNwOrXScxppm4
'' SIG '' f1lbXjZ4msUjeTCunw6PKtQq22G8J/XiWeRP9AXRWNIM
'' SIG '' 0zrI6GhVYcR6t2zZhtIknoBJrdGqxVQekzV8xZB1d4hf
'' SIG '' nZ+UVehgmw4Pl5BhyD4XtcW7d979Cx2tgvTAEJG/usRk
'' SIG '' PuG4Kd6NUdb/WcUTyTZUguKsn1NTmYCr/S7I5WtzjpPv
'' SIG '' ElaDAs2akRYx6YwTtndZzMEU5+LKsktaKL22krbEk6zP
'' SIG '' JH9MsoTrd/bhQi0Ar2YPkHFaUoZ47sqxFEl4JXG+/xSL
'' SIG '' in3IP3HMOcuxiG1j9pxA8MC7dbdtIIj8Tyrl5qCWnhdK
'' SIG '' nshYaKji+7A2TjLyI/DezrYN40X39I3lxBYHOH7arFuz
'' SIG '' gfin1vGrT1Oevf268Gti3/Qx4uo4HZ6f4yioDgAfq6Wt
'' SIG '' hCPF0fePj6PDgR6SfOke641ESyPR/VDi33zCLrK2+2GZ
'' SIG '' sy/QdQfM4bUgYxgEYUcwMDAEi6oep4e0FuAr5ITlDWq0
'' SIG '' vgMuQQaCZwdNbpmvdlmHKjek+cNH9uDYihs8ThuQ3581
'' SIG '' Y0YJNYoKvW9ZG/kRv3Ds3Q==
'' SIG '' End signature block
