|
‘Copyright (c) Microsoft Corporation. All rights reserved. |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
CONST wshOK =0 |
|
CONST VALUE_ICON_WARNING =16 |
|
CONST wshYesNoDialog =4 |
|
CONST VALUE_ICON_QUESTIONMARK =32 |
|
CONST VALUE_ICON_INFORMATION =64 |
|
CONST HKEY_LOCAL_MACHINE =&H80000002 |
|
CONST KEY_SET_VALUE =&H0002 |
|
CONST KEY_QUERY_VALUE =&H0001 |
|
CONST REG_SZ =1 |
|
CONST OfficeAppId = «0ff1ce15-a989-479d-af46-f275c6370663» |
|
CONST STR_SYS32PATH = «:WindowsSystem32» |
|
CONST STR_OSPPREARMPATH = «Microsoft OfficeOffice15OSPPREARM.EXE» |
|
CONST STR_OSPPREARMPATH_DEBUG = «Microsoft Office DebugOffice15OSPPREARM.EXE» |
|
CONST REG_OSPP = «SOFTWAREMicrosoftOfficeSoftwareProtectionPlatform» |
|
CONST REG_SPP = «SOFTWAREMicrosoftWindows NTCurrentVersionSoftwareProtectionPlatform» |
|
CONST VER_INFO = «Version Info: 2013 1.0 (RTM)» |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
CONST MSG_NOREGRIGHTS = «Insufficient rights to perform operation.» |
|
CONST MSG_ISCMD_ELEVATED = «Ensure cmd.exe is elevated (right click > run as administrator).» |
|
CONST MSG_CREDENTIALFAILURE = «Connection failed with passed credentials.» |
|
CONST MSG_FILENOTFOUND = «File not found: « |
|
CONST MSG_SEPERATE = «—————————————« |
|
CONST MSG_PROCESSING = «—Processing—————————« |
|
CONST MSG_EXIT = «—Exiting——————————« |
|
CONST MSG_UNSUPPORTED = «Unsupported command passed.» |
|
CONST MSG_UNSUPPORTEDOPEROS7 = «The following command is supported on Windows 7 only: « |
|
CONST MSG_UNSUPPORTEDOPEROS8 = «The following command is supported on Windows 8 and above only: « |
|
CONST MSG_UNSUPPORTEDLOCAL = «The following command is supported on local machine only: « |
|
CONST MSG_CREDENTIALERR = «Passing credentials is not supported for this command.» |
|
CONST MSG_SUCCESS = «Successfully applied setting.» |
|
CONST MSG_NOKMSLICS = «No Office KMS licenses were found on the system.» |
|
CONST MSG_ACTATTEMPT = «Installed product key detected — attempting to activate the following product:» |
|
CONST MSG_TOKACTATTEMPT = «Installed product key detected — attempting to token activate the following product:» |
|
CONST MSG_NOKEYSINSTALLED = «<No installed product keys detected>» |
|
CONST MSG_UNINSTALLKEYSUCCESS = «<Product key uninstall successful>» |
|
CONST MSG_ACTSUCCESS = «<Product activation successful>» |
|
CONST MSG_OFFLINEACTSUCCESS = «<Offline product activation successful>» |
|
CONST MSG_KEYINSTALLSUCCESS = «<Product key installation successful>» |
|
CONST MSG_PARTIALKEY = «Last 5 characters of installed product key: « |
|
CONST MSG_UNINSTALLKEY = «Uninstalling product key for: « |
|
CONST MSG_UNRECOGFILE = «Unrecognized file. Office licenses have an .xrm-ms file extension.» |
|
CONST MSG_INSTALLLICENSE = «Installing Office license: « |
|
CONST MSG_INSTALLLICSUCCESS = «Office license installed successfully.» |
|
CONST MSG_SEARCHEVENTSKMS = «Searching for KMS activation events on machine: « |
|
CONST MSG_SEARCHEVENTSRET = «Searching for Internet activation failure events on machine: « |
|
CONST MSG_NOEVENTSSKMS = «No KMS activation events found on machine: « |
|
CONST MSG_NOEVENTSRET = «No failure events found on machine: « |
|
CONST MSG_OSPPSVC_NOINSTALL = «Error: The Software Protection Platform service is not installed.» |
|
CONST MSG_OSPPSVC_NORUN = «Error: The Software Protection Platform service is not running.» |
|
CONST MSG_ERRPARTIALKEY = «The last 5 characters of an installed product key are required to run this option. Run the /dstatus option to display the partial product key.» |
|
CONST MSG_KEYNOTFOUND = «<Product key not found>» |
|
CONST MSG_CMID = «Client Machine ID (CMID): « |
|
CONST MSG_NOLICENSEFOUND = «<No licenses found>» |
|
CONST MSG_AUTHERR = «Authorization Error: 0x» |
|
CONST MSG_REMILID = «Removed Token-based Activation License with License ID (ILID): « |
|
CONST MSG_NOTFOUNDILID = «License not found with License ID (ILID): « |
|
CONST MSG_KMSLOOKUP = «KMS Lookup Domain: « |
|
CONST MSG_INFO_ONLY = » (for information purposes only as the status is licensed)» |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
CONST MSG_VLActivationType = «Activation Type Configuration: « |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
CONST MSG_Act_Recent = «Most recent successful activation client information: « |
|
CONST MSG_KMS_DNS = «KMS machine name from DNS: « |
|
CONST MSG_KMS_DNS_ERR = «DNS auto-discovery: KMS name not available» |
|
CONST MSG_ADInfoAOName = «Activation Object name: « |
|
CONST MSG_ADInfoAODN = «AO DN: « |
|
CONST MSG_ADInfoExtendedPid = «AO extended PID: « |
|
CONST MSG_ADInfoActID = «AO activation ID: « |
|
CONST MSG_ACTIVATION_INTERVAL = «Activation Interval: « |
|
CONST MSG_RENEWAL_INTERVAL = «Renewal Interval: « |
|
CONST MSG_HOST_CACHING = «KMS host caching: « |
|
CONST MSG_HOST_REG_OVERRIDE = «KMS machine registry override defined: « |
|
CONST MSG_DEFAULT_PORT = «1688» |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
CONST MSG_SKUID = «SKU ID: « |
|
CONST MSG_LICENSENAME = «LICENSE NAME: « |
|
CONST MSG_DESCRIPTION = «LICENSE DESCRIPTION: « |
|
CONST MSG_LICSTATUS = «LICENSE STATUS: « |
|
CONST MSG_LICENSED = » —LICENSED— « |
|
CONST MSG_UNLICENSED = » —UNLICENSED— « |
|
CONST MSG_OOBGRACE = » —OOB_GRACE— « |
|
CONST MSG_OOTGRACE = » —OOT_GRACE— « |
|
CONST MSG_NONGENGRACE = » —NON_GENUINE_GRACE— « |
|
CONST MSG_NOTIFICATION = » —NOTIFICATIONS— « |
|
CONST MSG_EXTENDEDGRACE = » —EXTENDED GRACE— « |
|
CONST MSG_LICUNKNOWN = » —UNKNOWN— « |
|
CONST MSG_REMAINGRACE = «REMAINING GRACE: « |
|
CONST MSG_LICEXPIRY = «BETA EXPIRATION: « |
|
CONST MSG_ERRCODE = «ERROR CODE: « |
|
CONST MSG_ERRDESC = «ERROR DESCRIPTION: « |
|
CONST MSG_ERRUNKNOWN = «An unknown error occurred.» |
|
CONST MSG_ERRCODEVALUE = «An error code must start with ‘0x’. Example: 0xC004F009» |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
On Error Resume Next |
|
|
|
Set WshShell = WSCript.CreateObject(«WSCript.Shell») |
|
Set objFSO = CreateObject(«Scripting.FileSystemObject») |
|
Set objNetwork = WSCript.CreateObject(«WSCript.Network») |
|
|
|
Dim globalResource, globalErr, foundSlUi, strSluiPath, strLocal, objWMI, objWMI1, wmiErr, productinstances, strValue, Win7, productClass, tokenClass, intIsKms, kmsCounter, isAdActivated |
|
globalResource = «» |
|
globalErr = «» |
|
foundSlUi = False |
|
Win7 = False |
|
kmsCounter = 0 |
|
isAdActivated = False |
|
|
|
currentDir = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, «»)) |
|
|
|
Select Case WSCript.Arguments.Count |
|
Case 0 |
|
verifyFileExists currentDir & «ospp.htm» |
|
showIePopUp currentDir & «ospp.htm» |
|
WScript.Quit |
|
Case 1 |
|
var1 = WSCript.Arguments(0) |
|
Case 2 |
|
var1 = WSCript.Arguments(0) |
|
var2 = WSCript.Arguments(1) |
|
Case 3 |
|
var1 = WSCript.Arguments(0) |
|
var2 = WSCript.Arguments(1) |
|
var3 = WSCript.Arguments(2) |
|
Case 4 |
|
var1 = WSCript.Arguments(0) |
|
var2 = WSCript.Arguments(1) |
|
var3 = WSCript.Arguments(2) |
|
var4 = WSCript.Arguments(3) |
|
Case Else |
|
End Select |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Call Main(var1,var2,var3,var4) |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Sub Main(strCommand,strMachine,strUser,strPassword) |
|
|
|
On Error Resume Next |
|
|
|
getEngine() |
|
pProcessing() |
|
getSlui() |
|
strLocal = objNetwork.ComputerName |
|
strCommand = LCase(strCommand) |
|
|
|
Select Case strCommand |
|
Case «/act», «/dstatus», «/dstatusall», «/dinstid», «/dtokils», _ |
|
«/remhst», «/stokflag», «/ctokflag», «/dcmid», «/dtokcerts», «/ckms-domain» |
|
connectWMI strMachine,strUser,strPassword,«» |
|
performLicAction strCommand,«»,«» |
|
Case «/dhistoryacterr», «/dhistorykms» |
|
connectWMI strMachine,strUser,strPassword,«» |
|
performLicAction strCommand,«»,strMachine |
|
Case «/puserops», «/duserops» |
|
connectWMI strMachine,strUser,strPassword,«reg» |
|
performRegAction strCommand |
|
Case «/osppsvcrestart», «/osppsvcauto» |
|
connectWMI strMachine,strUser,strPassword,«» |
|
performServiceAction strCommand |
|
Case «/help», «help», «?», «/?», «/?» |
|
verifyFileExists currentDir & «ospp.htm» |
|
showIePopUp currentDir & «ospp.htm» |
|
quitExit() |
|
Case «/regmof» |
|
registerMof «osppwmi.mof» |
|
Case «/rearm» |
|
If strMachine = «» Then |
|
reARM «» |
|
Else |
|
globalPopFailure MSG_UNSUPPORTEDLOCAL & vbCr & strCommand,True |
|
End If |
|
quitExit() |
|
Case «/version» |
|
globalPopSuccess VER_INFO,True |
|
Case Else |
|
pos = InStr(strCommand,«:») |
|
|
|
Select Case pos |
|
Case 7 |
|
getCommand = Left(strCommand,6) |
|
Case 8 |
|
getCommand = Left(strCommand,7) |
|
Case 13 |
|
getCommand = Left(strCommand,12) |
|
Case Else |
|
globalPopFailure MSG_UNSUPPORTED,True |
|
End Select |
|
|
|
Select Case getCommand |
|
Case «/skms-domain», «/actype», «/inpkey», «/unpkey», «/inslic», «/actcid», «/sethst», «/setprt», «/ddescr», «/rtokil», «/tokact», «/cachst», «/rearm» |
|
strValue = Replace(strCommand,getCommand & «:»,«») |
|
If strValue = «» Then |
|
globalPopFailure MSG_UNSUPPORTED & » A value is required for: « & strCommand,True |
|
End If |
|
|
|
If getCommand = «/ddescr» Then |
|
If Left(strValue,2) = «0x» Then |
|
getDescription strValue,«» |
|
Else |
|
WScript.Echo MSG_ERRCODEVALUE |
|
quitExit() |
|
End If |
|
ElseIf getCommand = «/rearm» Then |
|
If strMachine = «» Then |
|
reARM strValue |
|
Else |
|
globalPopFailure MSG_UNSUPPORTEDLOCAL & vbCr & strCommand,True |
|
End If |
|
quitExit() |
|
Else |
|
connectWMI strMachine,strUser,strPassword,«» |
|
performLicAction getCommand,strValue,«» |
|
End If |
|
Case Else |
|
globalPopFailure MSG_UNSUPPORTED,True |
|
End Select |
|
End Select |
|
|
|
End Sub |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function showIePopUp(strPath) |
|
|
|
On Error Resume Next |
|
|
|
Set objExplorer = CreateObject(«InternetExplorer.Application») |
|
With objExplorer |
|
.Navigate strPath |
|
.ToolBar = 0 |
|
.StatusBar = 0 |
|
.Width = 1000 |
|
.Height = 593 |
|
.Left = 1 |
|
.Top = 1 |
|
.Visible = 1 |
|
End With |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function getEngine() |
|
|
|
strEngine = LCase(Right(WScript.FullName,12)) |
|
If strEngine <> «cscript.exe» Then |
|
WshShell.Popup «Unable to perform operation. « & WSCript.ScriptName & » requires the cscript engine.» & _ |
|
vbCr & «Command line example: cscript ospp.vbs ?», _ |
|
,WSCript.ScriptName, VALUE_ICON_WARNING |
|
WScript.Quit |
|
End If |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function WMIDateStringToDate(dtmEventDate) |
|
|
|
WMIDateStringToDate = CDate(Mid(dtmEventDate, 5, 2) & «/» & _ |
|
Mid(dtmEventDate, 7, 2) & «/» & Left(dtmEventDate, 4) _ |
|
& » « & Mid (dtmEventDate, 9, 2) & «:» & _ |
|
Mid(dtmEventDate, 11, 2) & «:» & Mid(dtmEventDate, _ |
|
13, 2)) |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function getDescription(strSearch,cType) |
|
|
|
If foundSlUi <> True Then |
|
If cType <> «wmi» Then |
|
globalPopFailure «slui.exe not found.»,True |
|
quitExit() |
|
End If |
|
Else |
|
Set objScriptExec = WshShell.Exec (strSluiPath & » 0x2a « & strSearch) |
|
readOut = objScriptExec.StdOut.ReadAll |
|
quitExit() |
|
End If |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function checkRegRights(wmiObject,strKeyPath) |
|
|
|
On Error Resume next |
|
|
|
wmiObject.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_SET_VALUE, _ |
|
bHasAccessRight |
|
|
|
If bHasAccessRight = True Then |
|
‘Success |
|
Else |
|
globalPopFailure MSG_NOREGRIGHTS & vbCr & MSG_ISCMD_ELEVATED,True |
|
End If |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function quitExit() |
|
|
|
Set WshShell = Nothing |
|
Set objFSO = Nothing |
|
Set objNetwork = Nothing |
|
Set objWMI = Nothing |
|
|
|
WScript.Echo MSG_SEPERATE |
|
WScript.Echo MSG_EXIT |
|
WSCript.Quit |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function verifyFileExists(file) |
|
|
|
If Not objFSO.FileExists(file) Then |
|
If file = currentDir & «slerror.xml» Then |
|
WScript.Echo «[« & MSG_FILENOTFOUND & file & » Unable to display error description.]» |
|
ElseIf file = currentDir & «ospp.htm» Then |
|
globalPopFailure MSG_FILENOTFOUND & vbCr & file,False |
|
quitExit() |
|
Else |
|
globalPopFailure MSG_FILENOTFOUND & vbCr & file,True |
|
End If |
|
End If |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function registerMof(strFile) |
|
|
|
For Each Drv In objFSO.Drives |
|
If Drv.DriveType=2 Then |
|
If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & «wbemmofcomp.exe») Then |
|
foundComp = True |
|
strMofExePath = Drv.DriveLetter & STR_SYS32PATH & «wbemmofcomp.exe» |
|
If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & «wbem» & strFile) Then |
|
foundMof = True |
|
strOWmi = Drv.DriveLetter & STR_SYS32PATH & «wbem» & strFile |
|
Set objScriptExec = WshShell.Exec (strMofExePath & » « & strOWmi) |
|
readOut = objScriptExec.StdOut.ReadAll |
|
WScript.Echo readOut |
|
quitExit() |
|
End If |
|
End If |
|
End If |
|
Next |
|
|
|
If foundComp <> True Then |
|
globalPopFailure MSG_FILENOTFOUND & Replace(STR_SYS32PATH,«:»,«») & «wbemmofcomp.exe»,True |
|
Else |
|
If foundMof <> True Then |
|
globalPopFailure MSG_FILENOTFOUND & Replace(STR_SYS32PATH,«:»,«») & «wbemosppwmi.mof»,True |
|
End If |
|
End If |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function pProcessing() |
|
|
|
WScript.Echo MSG_PROCESSING |
|
WScript.Echo MSG_SEPERATE |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function getSlui() |
|
|
|
For Each Drv In objFSO.Drives |
|
If Drv.DriveType=2 Then |
|
If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & «slui.exe») Then |
|
strSluiPath = Drv.DriveLetter & STR_SYS32PATH & «slui.exe» |
|
foundSlUi = True |
|
Exit For |
|
End If |
|
End If |
|
Next |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘ Returns the encoding for a givven file. |
|
‘ Possible return values: ascii, unicode, unicodeFFFE (big-endian), utf-8 |
|
Function GetFileEncoding(strFileName) |
|
Dim strData |
|
Dim strEncoding |
|
|
|
Set oStream = CreateObject(«ADODB.Stream») |
|
|
|
oStream.Type = 1 ‘adTypeBinary |
|
oStream.Open |
|
oStream.LoadFromFile(strFileName) |
|
|
|
‘ Default encoding is ascii |
|
strEncoding = «ascii» |
|
|
|
strData = BinaryToString(oStream.Read(2)) |
|
|
|
‘ Check for little endian (x86) unicode preamble |
|
If (Len(strData) = 2) and strData = (Chr(255) + Chr(254)) Then |
|
strEncoding = «unicode» |
|
Else |
|
oStream.Position = 0 |
|
strData = BinaryToString(oStream.Read(3)) |
|
|
|
‘ Check for utf-8 preamble |
|
If (Len(strData) >= 3) and strData = (Chr(239) + Chr(187) + Chr(191)) Then |
|
strEncoding = «utf-8» |
|
End If |
|
End If |
|
|
|
oStream.Close |
|
|
|
GetFileEncoding = strEncoding |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘ Converts binary data (VT_UI1 | VT_ARRAY) to a string (BSTR) |
|
Function BinaryToString(dataBinary) |
|
Dim i |
|
Dim str |
|
|
|
For i = 1 To LenB(dataBinary) |
|
str = str & Chr(AscB(MidB(dataBinary, i, 1))) |
|
Next |
|
|
|
BinaryToString = str |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘ Returns string containing the whole text file data. |
|
‘ Supports ascii, unicode (little-endian) and utf-8 encoding. |
|
Function ReadAllTextFile(strFileName) |
|
Dim strData |
|
Set oStream = CreateObject(«ADODB.Stream») |
|
|
|
oStream.Type = 2 ‘adTypeText |
|
oStream.Open |
|
oStream.Charset = GetFileEncoding(strFileName) |
|
oStream.LoadFromFile(strFileName) |
|
|
|
strData = oStream.ReadText(-1) ‘adReadAll |
|
|
|
oStream.Close |
|
|
|
ReadAllTextFile = strData |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function sppErrHandle(strCommand) |
|
|
|
globalErr = Hex(Err.Number) |
|
|
|
Select Case Err.Number |
|
Case 0 |
|
‘Success |
|
Select Case strCommand |
|
Case «/act»,«/tokact» |
|
WScript.Echo MSG_ACTSUCCESS |
|
Case «/inpkey» |
|
WScript.Echo MSG_KEYINSTALLSUCCESS |
|
quitExit() |
|
Case «/inslic» |
|
WScript.Echo MSG_INSTALLLICSUCCESS |
|
quitExit() |
|
Case «/ckms-domain»,«/skms-domain»,«/actype»,«/sethst»,«/setprt»,«/remhst»,«/stokflag»,«/ctokflag»,«/cachst» |
|
WScript.Echo MSG_SUCCESS |
|
quitExit() |
|
Case «/rtokil» |
|
WScript.Echo MSG_REMILID & UCase(strValue) |
|
quitExit() |
|
Case «/unpkey» |
|
WScript.Echo MSG_UNINSTALLKEYSUCCESS |
|
quitExit() |
|
Case Else |
|
End Select |
|
Case Else |
|
verifyFileExists currentDir & «slerror.xml» |
|
getResource(«err» & «0x» & globalErr) |
|
If globalResource = «» Then |
|
If Len(globalErr) <> «8» Then |
|
WScript.Echo MSG_ERRDESC & MSG_ERRUNKNOWN |
|
Else |
|
If foundSlUi = True Then |
|
WScript.Echo MSG_ERRCODE & «0x» & globalErr |
|
WScript.Echo MSG_ERRDESC & «Run the following: cscript ospp.vbs /ddescr:0x» & globalErr |
|
Else |
|
WScript.Echo MSG_ERRCODE & «0x» & globalErr |
|
End If |
|
End If |
|
If strCommand <> «/act» Then |
|
quitExit() |
|
End If |
|
Else |
|
WScript.Echo MSG_ERRCODE & «0x» & globalErr |
|
Wscript.Echo MSG_ERRDESC & globalResource |
|
End If |
|
|
|
If strCommand = «/dtokcerts» Or strCommand = «/ignore» Then |
|
quitExit() |
|
End If |
|
End Select |
|
|
|
If globalErr = «C004F074» Then |
|
WScript.Echo «To view the activation event history run: cscript « & WScript.ScriptName & » /dhistorykms» |
|
End If |
|
|
|
globalResource = «» |
|
globalErr = «» |
|
Err.Clear |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function wmiErrHandle() |
|
|
|
Select Case Err.Number |
|
Case 0 |
|
‘Successs |
|
Case 424 |
|
globalPopFailure MSG_ERRCODE & Err.Number & vbCr & MSG_ERRDESC & MSG_CREDENTIALFAILURE,True |
|
Case Else |
|
If Err.Description <> «» Then |
|
globalPopFailure MSG_ERRCODE & Err.Number & vbCr & MSG_ERRDESC & Err.Description,True |
|
Else |
|
globalPopFailure «An error occurred while making the connection.» & vbCr & MSG_ERRCODE & Err.Number,True |
|
End If |
|
End Select |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function setRegValue(wmiObject,opsValue,strValueName) |
|
|
|
On Error Resume Next |
|
|
|
Err.Clear() |
|
If Win7 = True Then |
|
strKeyPath = REG_OSPP |
|
Else |
|
strKeyPath = REG_SPP |
|
End If |
|
|
|
Select Case strValueName |
|
Case «UserOperations» |
|
wmiObject.CreateKey HKEY_LOCAL_MACHINE,strKeyPath |
|
wmiObject.SetDWORDValue HKEY_LOCAL_MACHINE,_ |
|
strKeyPath,strValueName,opsValue |
|
Case Else |
|
End Select |
|
|
|
wmiErrHandle() |
|
WScript.Echo MSG_SUCCESS |
|
quitExit() |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function getResource(resource) |
|
|
|
On Error Resume Next |
|
Set xmlDoc = CreateObject(«Msxml2.DOMDocument.6.0») |
|
xmlDoc.load(currentDir & «slerror.xml») |
|
Set ElemList = xmlDoc.getElementsByTagName(resource) |
|
resValue = ElemList.item(0).text |
|
globalResource = resValue |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function globalPopSuccess(strSuccess,boolQuit) |
|
|
|
If boolQuit = True Then |
|
WshShell.Popup strSuccess,,WScript.ScriptName, wshOK + VALUE_ICON_INFORMATION |
|
quitExit() |
|
Else |
|
WshShell.Popup strSuccess,,WScript.ScriptName, wshOK + VALUE_ICON_INFORMATION |
|
End If |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function globalPopFailure(strFailure,boolQuit) |
|
|
|
If boolQuit = True Then |
|
WshShell.Popup strFailure,,WScript.ScriptName, wshOK + VALUE_ICON_WARNING |
|
quitExit() |
|
Else |
|
WshShell.Popup strFailure,,WScript.ScriptName, wshOK + VALUE_ICON_WARNING |
|
End If |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function connectWMI(strMachine,strUser,strPassword,ctype) |
|
|
|
On Error Resume Next |
|
|
|
If ctype = «» Then |
|
If strMachine = «» Or LCase(strMachine) = LCase(strLocal) Then |
|
Set objWMI = GetObject(«winmgmts:» _ |
|
& «{impersonationLevel=impersonate}!\» & «.» & «rootcimv2») |
|
Else |
|
If strUser = «» And strPassword = «» Then |
|
Set objWMI = GetObject(«winmgmts:» _ |
|
& «{impersonationLevel=impersonate}!\» & strMachine & «rootcimv2») |
|
Else |
|
Set objSWbemLocator = CreateObject(«WbemScripting.SWbemLocator») |
|
Set objWMI = objSWbemLocator.ConnectServer _ |
|
(strMachine, «rootcimv2», strUser, strPassword) |
|
wmiErr = CStr(Hex(Err.Number)) |
|
If Len(wmiErr) = «8» Then |
|
getDescription «0x» & wmiErr,«wmi» |
|
End If |
|
objWMI.Security_.ImpersonationLevel = 3 |
|
End If |
|
End If |
|
Else |
|
If strUser <> «» Then |
|
globalPopFailure MSG_CREDENTIALERR,True |
|
End If |
|
|
|
If strMachine = «» Or LCase(strMachine) = LCase(strLocal) Then |
|
Set objWMI1 = GetObject(«winmgmts:» _ |
|
& «{impersonationLevel=impersonate}!\» & «.» & «rootdefault:StdRegProv») |
|
|
|
Set objWMI = GetObject(«winmgmts:» _ |
|
& «{impersonationLevel=impersonate}!\» & «.» & «rootcimv2») |
|
Else |
|
Set objWMI1 = GetObject(«winmgmts:» _ |
|
& «{impersonationLevel=impersonate}!\» & strMachine & «rootdefault:StdRegProv») |
|
|
|
Set objWMI = GetObject(«winmgmts:» _ |
|
& «{impersonationLevel=impersonate}!\» & strMachine & «rootcimv2») |
|
End If |
|
End If |
|
|
|
wmiErrHandle() |
|
isWin7OS() |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Private Function TkaGetSigner() |
|
|
|
On Error Resume Next |
|
|
|
If Win7 = True Then |
|
Set TkaGetSigner = WScript.CreateObject(«OSPPWMI.OSppWmiTokenActivationSigner») |
|
Else |
|
Set TkaGetSigner = WScript.CreateObject(«SPPWMI.SppWmiTokenActivationSigner») |
|
End If |
|
|
|
If Hex(Err.Number) = «80020009» Then |
|
globalPopFailure MSG_ERRCODE & «0x» & Hex(Err.Number) & vbCr & MSG_ERRDESC & Err.Description,True |
|
End If |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function TkaPrintCertificate(strThumbprint) |
|
|
|
arrParams = Split(strThumbprint, «|») |
|
WScript.Echo «Thumbprint: « & arrParams(0) |
|
WScript.Echo «Subject: « & arrParams(1) |
|
WScript.Echo «Issuer: « & arrParams(2) |
|
vf = FormatDateTime(CDate(arrParams(3)), vbShortDate) |
|
WScript.Echo «Valid From: « & vf |
|
vt = FormatDateTime(CDate(arrParams(4)), vbShortDate) |
|
WScript.Echo «Valid To: « & vt |
|
WScript.Echo MSG_SEPERATE |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function ExecuteQuery(strSelect,strWhere,strClass) |
|
|
|
Err.Clear |
|
|
|
If strWhere = «» Then |
|
Set productinstances = objWMI.ExecQuery(«SELECT « & strSelect & » FROM « & strClass) |
|
Else |
|
Set productinstances = objWMI.ExecQuery(«SELECT « & strSelect & » FROM « & strClass & » WHERE « & strWhere) |
|
End If |
|
|
|
sppErrHandle «» |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function performLicAction(strCommand,strValue,strMachine) |
|
|
|
On Error Resume Next |
|
|
|
If strCommand = «/dhistorykms» Or strCommand = «/dhistoryacterr» Then |
|
verifyFileExists currentDir & «slerror.xml» |
|
If strCommand = «/dhistorykms» Then |
|
‘12288 = KMS Activation event id |
|
eventCode = «12288» |
|
strSrcEvents = MSG_SEARCHEVENTSKMS |
|
strNoEvents = MSG_NOEVENTSSKMS |
|
Else |
|
‘8200 = Internet Activation event id |
|
eventCode = «8200» |
|
strSrcEvents = MSG_SEARCHEVENTSRET |
|
strNoEvents = MSG_NOEVENTSRET |
|
End If |
|
|
|
If strMachine <> «» Then |
|
WScript.Echo strSrcEvents & strMachine |
|
Else |
|
WScript.Echo strSrcEvents & strLocal |
|
End If |
|
|
|
WScript.Echo «Event ID: « & eventCode |
|
WScript.Echo vbCr |
|
Set objEvents = objWMI.ExecQuery _ |
|
(«Select * from Win32_NTLogEvent Where Logfile = ‘Application’ and « _ |
|
& «EventCode = ‘» & eventCode & «‘») |
|
If objEvents.Count > 0 Then |
|
For each objEvent in objEvents |
|
If strCommand = «/dhistoryacterr» Then |
|
i = i + 1 |
|
dtmEventDate = objEvent.TimeWritten |
|
strTimeWritten = WMIDateStringToDate(dtmEventDate) |
|
WScript.Echo «Coordinated Universal Time Written: « & strTimeWritten |
|
strReplCrs = Replace(objEvent.Message,vbCrLf,«») |
|
WScript.Echo «MESSAGE: « & strReplCrs |
|
strhr10 = Right(strReplCrs,10) |
|
getResource(«err» & strhr10) |
|
If globalResource = «» Then |
|
If foundSlUi = True Then |
|
WScript.Echo MSG_ERRDESC & «Run the following: cscript ospp.vbs /ddescr:» & strhr10 |
|
Else |
|
WScript.Echo MSG_ERRDESC & «Not available.» |
|
End If |
|
Else |
|
Wscript.Echo MSG_ERRDESC & globalResource |
|
End If |
|
WScript.Echo MSG_SEPERATE |
|
Else |
|
strhr10 = Mid(objEvent.Message,90,10) |
|
strReplCrs = Replace(objEvent.Message,vbCrLf,«») |
|
If Right(strReplCrs,2) = » 5″ Then |
|
strReplStrs = Replace(strReplCrs,«The client has sent an activation request to the key management service machine.Info:»,«») |
|
dtmEventDate = objEvent.TimeWritten |
|
strTimeWritten = WMIDateStringToDate(dtmEventDate) |
|
WScript.Echo «Coordinated Universal Time Written: « & strTimeWritten |
|
intColon = InStr(strReplStrs,«:») |
|
strErrHost = Left(strReplStrs,intColon) |
|
strErrHost = Trim(strErrHost) |
|
strErrHost = Replace(strErrHost,«:»,«») |
|
WScript.Echo «ERROR/HOST: « & strErrHost |
|
Select Case strhr10 |
|
Case «0x00000000» |
|
WScript.Echo MSG_ERRDESC & «N/A» |
|
Case Else |
|
getResource(«err» & strhr10) |
|
If globalResource = «» Then |
|
If foundSlUi = True Then |
|
WScript.Echo MSG_ERRDESC & «Run the following: cscript ospp.vbs /ddescr:» & strhr10 |
|
Else |
|
WScript.Echo MSG_ERRDESC & «Not available.» |
|
End If |
|
Else |
|
Wscript.Echo MSG_ERRDESC & globalResource |
|
End If |
|
End Select |
|
WScript.Echo MSG_SEPERATE |
|
End If |
|
End If |
|
Next |
|
Else |
|
WScript.Echo MSG_SEPERATE |
|
If strMachine <> «» Then |
|
WScript.Echo strNoEvents & strMachine |
|
Else |
|
WScript.Echo strNoEvents & strLocal |
|
End If |
|
WScript.Echo MSG_SEPERATE |
|
End If |
|
quitExit() |
|
End If |
|
|
|
‘Verify osppsvc service is installed for win7 case |
|
If Win7 = True Then |
|
Set colListOfServices = objWMI.ExecQuery _ |
|
(«Select * from Win32_Service «) |
|
For Each objService in colListOfServices |
|
If objService.Name = «osppsvc» Then |
|
installed = True |
|
Exit For |
|
End If |
|
Next |
|
|
|
If installed <> True Then |
|
globalPopFailure MSG_OSPPSVC_NOINSTALL,True |
|
End If |
|
End If |
|
|
|
Select Case strCommand |
|
‘The following operations are performed @ a service level |
|
Case «/inpkey», «/dcmid», «/inslic», «/cachst», «/stokflag», «/ctokflag», «/dstatus», «/dstatusall» |
|
If Win7 = True Then |
|
For Each objService in objWMI.InstancesOf(«OfficeSoftwareProtectionService») |
|
Set objOspp = objService |
|
Exit For |
|
Next |
|
Else |
|
‘Win8 and beyond |
|
For Each objService in objWMI.InstancesOf(«SoftwareLicensingService») |
|
Set objOspp = objService |
|
Exit For |
|
Next |
|
End If |
|
Case Else |
|
End Select |
|
|
|
sppErrHandle «» |
|
|
|
If strCommand = «/inpkey» Then |
|
i = i + 1 |
|
Err.Clear |
|
objOspp.InstallProductKey(strValue) |
|
sppErrHandle(strCommand) |
|
ElseIf strCommand = «/cachst» Then |
|
i = i + 1 |
|
If strValue = «true» Then |
|
objOspp.DisableKeyManagementServiceHostCaching(False) |
|
sppErrHandle(strCommand) |
|
ElseIf strValue = «false» Then |
|
objOspp.DisableKeyManagementServiceHostCaching(True) |
|
sppErrHandle(strCommand) |
|
Else |
|
globalPopFailure MSG_UNSUPPORTED & » A TRUE or FALSE value is required for: « & strCommand,True |
|
End If |
|
ElseIf strCommand = «/dcmid» Then |
|
If objOspp.ClientMachineID <> «» Or objOspp.ClientMachineID <> Null Then |
|
WScript.Echo MSG_CMID & objOspp.ClientMachineID |
|
Else |
|
WScript.Echo MSG_CMID & «Not found.» |
|
End If |
|
quitExit() |
|
ElseIf strCommand = «/inslic» Then |
|
i = i + 1 |
|
If Right(strValue,7) = «.xrm-ms» Then |
|
verifyFileExists strValue |
|
WScript.Echo MSG_INSTALLLICENSE & strValue |
|
Else |
|
globalPopFailure MSG_UNRECOGFILE,True |
|
End If |
|
LicenseData = ReadAllTextFile(strValue) |
|
objOSpp.InstallLicense(LicenseData) |
|
SppErrHandle(strCommand) |
|
ElseIf strCommand = «/stokflag» Then |
|
i = i + 1 |
|
If Win7 = True Then |
|
objOspp.DisableKeyManagementServiceActivation(True) |
|
sppErrHandle(strCommand) |
|
Else |
|
‘Unsupported — osppsvc only supports this. |
|
globalPopFailure MSG_UNSUPPORTEDOPEROS7 & vbCr & strCommand,True |
|
End If |
|
ElseIf strCommand = «/ctokflag» Then |
|
i = i + 1 |
|
If Win7 = True Then |
|
objOspp.DisableKeyManagementServiceActivation(False) |
|
SppErrHandle(strCommand) |
|
Else |
|
‘Unsupported — osppsvc only supports this. |
|
globalPopFailure MSG_UNSUPPORTEDOPEROS7 & vbCr & strCommand,True |
|
End If |
|
ElseIf strCommand = «/dtokils» Then |
|
Err.Clear |
|
Set objWmiDate = CreateObject(«WBemScripting.SWbemDateTime») |
|
ExecuteQuery «ILID, ILVID, AuthorizationStatus, ExpirationDate, Description, AdditionalInfo»,«»,tokenClass |
|
|
|
For Each instance in productinstances |
|
sppErrHandle «» |
|
i = i + 1 |
|
WScript.Echo «License ID (ILID): « & instance.ILID |
|
WScript.Echo «Version ID (ILvID): « & instance.ILVID |
|
If Not IsNull(instance.ExpirationDate) Then |
|
objWmiDate.Value = instance.ExpirationDate |
|
If (objWmiDate.GetFileTime(false) <> 0) Then |
|
WScript.Echo «Expiry Date: « & objWmiDate.GetVarDate |
|
End If |
|
End If |
|
If Not IsNull(instance.AdditionalInfo) Then |
|
WScript.Echo «Additional Info: « & instance.AdditionalInfo |
|
End If |
|
If Not IsNull(instance.AuthorizationStatus) And instance.AuthorizationStatus <> 0 Then |
|
globalErr = CStr(Hex(instance.AuthorizationStatus)) |
|
WScript.Echo MSG_AUTHERR & globalErr |
|
quitExit() |
|
Else |
|
WScript.Echo «Description: « & instance.Description |
|
End If |
|
WScript.Echo MSG_SEPERATE |
|
Next |
|
If i = 0 Then |
|
WScript.Echo MSG_NOLICENSEFOUND |
|
End If |
|
quitExit() |
|
ElseIf strCommand = «/rtokil» Then |
|
Err.Clear |
|
ExecuteQuery «ILID, ID»,«»,tokenClass |
|
|
|
For Each instance in productinstances |
|
sppErrHandle «» |
|
i = i + 1 |
|
If LCase(strValue) = LCase(instance.ILID) Then |
|
instance.Uninstall |
|
SppErrHandle(strCommand) |
|
Else |
|
WScript.Echo MSG_NOTFOUNDILID & strValue & » Run /dtokils to display the ILID for installed licenses.» |
|
End If |
|
Next |
|
If i = 0 Then |
|
WScript.Echo MSG_NOLICENSEFOUND |
|
End If |
|
quitExit() |
|
ElseIf strCommand = «/dtokcerts» Then |
|
Err.Clear |
|
Set objSigner = TkaGetSigner() |
|
sppErrHandle(strCommand) |
|
ExecuteQuery «ID, Name, ApplicationId, PartialProductKey, Description, LicenseIsAddon «,«ApplicationId = ‘» & OfficeAppId & «‘ « & «AND PartialProductKey <> NULL « & «AND LicenseIsAddon = FALSE»,productClass |
|
|
|
For each instance in productinstances |
|
i = i + 1 |
|
sppErrHandle «» |
|
iRet = instance.GetTokenActivationGrants(arrGrants) |
|
If Err.Number = 0 Then |
|
arrThumbprints = objSigner.GetCertificateThumbprints(arrGrants) |
|
If Err.Number = 0 Then |
|
For Each strThumbprint in arrThumbprints |
|
TkaPrintCertificate strThumbprint |
|
Next |
|
Else |
|
sppErrHandle «» |
|
End If |
|
Else |
|
sppErrHandle «» |
|
End If |
|
WScript.Echo MSG_SEPERATE |
|
Err.Clear |
|
Next |
|
ElseIf strCommand = «/tokact» Then |
|
Err.Clear |
|
Set objSigner = TkaGetSigner() |
|
sppErrHandle «/ignore» |
|
pos1 = InStr(strValue,«:») |
|
If pos1 = 0 Then |
|
‘PIN not passed |
|
strThumbprint = strValue |
|
Else |
|
‘PIN passed |
|
strThumbprint = Left(strValue,pos1 — 1) |
|
strPin = Replace(strValue,strThumbprint & «:»,«») |
|
End If |
|
|
|
ExecuteQuery «ID, Name, ApplicationId, PartialProductKey, Description, LicenseIsAddon «,«ApplicationId = ‘» & OfficeAppId & «‘ « & «AND PartialProductKey <> NULL « & «AND LicenseIsAddon = FALSE»,productClass |
|
|
|
For each instance in productinstances |
|
i = i + 1 |
|
sppErrHandle «» |
|
WScript.Echo MSG_TOKACTATTEMPT |
|
WScript.Echo MSG_SKUID & instance.ID |
|
WScript.Echo MSG_LICENSENAME & instance.Name |
|
WScript.Echo MSG_DESCRIPTION & instance.Description |
|
WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey |
|
iRet = instance.GenerateTokenActivationChallenge(strChallenge) |
|
If Err.Number = 0 Then |
|
strAuthInfo1 = objSigner.Sign(strChallenge, strThumbprint, strPin, strAuthInfo2) |
|
If Err.Number = 0 Then |
|
iRet = instance.DepositTokenActivationResponse(strChallenge, strAuthInfo1, strAuthInfo2) |
|
SppErrHandle(strCommand) |
|
Else |
|
sppErrHandle «» |
|
End If |
|
Else |
|
sppErrHandle «» |
|
End If |
|
WScript.Echo MSG_SEPERATE |
|
Next |
|
Else |
|
Err.Clear |
|
If strCommand = «/dstatus» Or strCommand = «/dstatusall» Then |
|
If Win7 = True Then |
|
ExecuteQuery «ID, ApplicationId, EvaluationEndDate, PartialProductKey, Description, Name, LicenseStatus, LicenseStatusReason, ProductKeyID, GracePeriodRemaining, DiscoveredKeyManagementServiceMachineName, DiscoveredKeyManagementServiceMachinePort, VLActivationInterval, VLRenewalInterval, KeyManagementServiceMachine, KeyManagementServicePort»,«ApplicationId = ‘» & OfficeAppId & «‘ «,productClass |
|
Else |
|
ExecuteQuery «ID, ApplicationId, EvaluationEndDate, PartialProductKey, Description, Name, LicenseStatus, LicenseStatusReason, ProductKeyID, GracePeriodRemaining, KeyManagementServiceLookupDomain, VLActivationType, ADActivationObjectName, ADActivationObjectDN, ADActivationCsvlkPid, ADActivationCsvlkSkuId, VLActivationTypeEnabled, DiscoveredKeyManagementServiceMachineName, DiscoveredKeyManagementServiceMachinePort, VLActivationInterval, VLRenewalInterval, KeyManagementServiceMachine, KeyManagementServicePort»,«ApplicationId = ‘» & OfficeAppId & «‘ «,productClass |
|
End If |
|
ElseIf strCommand = «/act» Then |
|
ExecuteQuery «ID, ApplicationId, PartialProductKey, Description, Name»,«ApplicationId = ‘» & OfficeAppId & «‘ « & «AND PartialProductKey <> NULL «,productClass |
|
ElseIf strCommand = «/unpkey» Then |
|
ExecuteQuery «ID, ApplicationId, Description, PartialProductKey, Name, ProductKeyID»,«ApplicationId = ‘» & OfficeAppId & «‘ « & «AND PartialProductKey <> NULL «,productClass |
|
|
|
ElseIf strCommand = «/dinstid» Or strCommand = «/actcid» Then |
|
ExecuteQuery «ID, ApplicationId, Description, PartialProductKey, Name, OfflineInstallationId»,«ApplicationId = ‘» & OfficeAppId & «‘ « & «AND PartialProductKey <> NULL «,productClass |
|
ElseIf strCommand = «/actype» Or strCommand = «/skms-domain» Or strCommand = «/ckms-domain» Then |
|
If Win7 = True Then |
|
‘Unsupported — sppsvc only supports this. |
|
globalPopFailure MSG_UNSUPPORTEDOPEROS8 & vbCr & strCommand,True |
|
Else |
|
ExecuteQuery «ID, Description, PartialProductKey, ApplicationId «,«ApplicationId = ‘» & OfficeAppId & «‘ «,productClass |
|
End If |
|
ElseIf strCommand = «/sethst» Or strCommand = «/setprt» Or strCommand = «/remhst» Then |
|
ExecuteQuery «ID, Description, PartialProductKey, ApplicationId «,«ApplicationId = ‘» & OfficeAppId & «‘ «,productClass |
|
End If |
|
|
|
For Each instance in productinstances |
|
sppErrHandle «» |
|
If (LCase(instance.ApplicationId) = OfficeAppId) Then |
|
If instance.PartialProductKey <> «» Then |
|
i = i + 1 |
|
End If |
|
intIsKms = InStr(UCase(instance.Description),«KMS») |
|
If intIsKms <> 0 Then |
|
kmsCounter = kmsCounter + 1 |
|
End If |
|
Select Case strCommand |
|
Case «/actype» |
|
Select Case strValue |
|
Case «0»,«1»,«2»,«3» |
|
Case Else |
|
globalPopFailure MSG_UNSUPPORTED & » A value of» & vbCr & _ |
|
«0 (for all)» & vbCr & «1 (for AD)» & vbCr & «2 (for KMS» & vbCr & _ |
|
«3 (for Token)» & vbCr & «Is required for: « & strCommand,True |
|
End Select |
|
If intIsKms <> 0 Then |
|
If strValue <> 0 Then |
|
instance.SetVLActivationTypeEnabled(strValue) |
|
Else |
|
instance.ClearVLActivationTypeEnabled() |
|
End If |
|
End If |
|
sppErrHandle «» |
|
Case «/skms-domain» |
|
If intIsKms <> 0 Then |
|
instance.SetKeyManagementServiceLookupDomain(strValue) |
|
End If |
|
sppErrHandle «» |
|
Case «/ckms-domain» |
|
If intIsKms <> 0 Then |
|
instance.ClearKeyManagementServiceLookupDomain() |
|
End If |
|
sppErrHandle «» |
|
Case «/sethst» |
|
If intIsKms <> 0 Then |
|
instance.SetKeyManagementServiceMachine(strValue) |
|
End If |
|
sppErrHandle «» |
|
Case «/setprt» |
|
If intIsKms <> 0 Then |
|
instance.SetKeyManagementServicePort(strValue) |
|
End If |
|
sppErrHandle «» |
|
Case «/remhst» |
|
If intIsKms <> 0 Then |
|
instance.ClearKeyManagementServiceMachine() |
|
sppErrHandle «» |
|
instance.ClearKeyManagementServicePort() |
|
sppErrHandle «» |
|
End If |
|
Case «/act» |
|
WScript.Echo MSG_ACTATTEMPT |
|
WScript.Echo MSG_SKUID & instance.ID |
|
WScript.Echo MSG_LICENSENAME & instance.Name |
|
WScript.Echo MSG_DESCRIPTION & instance.Description |
|
WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey |
|
instance.Activate |
|
SppErrHandle(strCommand) |
|
WScript.Echo MSG_SEPERATE |
|
Case «/unpkey» |
|
If Len(strValue) <> «5» Then |
|
globalPopFailure MSG_ERRPARTIALKEY,True |
|
End If |
|
If UCase(strValue) = instance.PartialProductKey Then |
|
y = y + 1 |
|
WScript.Echo MSG_UNINSTALLKEY & instance.Name |
|
instance.UninstallProductKey(instance.ProductKeyID) |
|
SppErrHandle(strCommand) |
|
End If |
|
Case «/dinstid» |
|
WScript.Echo «Installation ID for: « & instance.Name & «: « & instance.OfflineInstallationId |
|
WScript.Echo MSG_SEPERATE |
|
Case «/actcid» |
|
instance.DepositOfflineConfirmationId instance.OfflineInstallationId, strValue |
|
If Err.Number = 0 Then |
|
If telsuccess <> True Then |
|
WScript.Echo MSG_LICENSENAME & instance.Name |
|
WScript.Echo MSG_OFFLINEACTSUCCESS |
|
telsuccess = True |
|
End If |
|
Else |
|
WScript.Echo MSG_LICENSENAME & instance.Name |
|
sppErrHandle «» |
|
End If |
|
WScript.Echo MSG_SEPERATE |
|
Case «/dstatus», «/dstatusall» |
|
getInstalled = False |
|
verifyFileExists currentDir & «slerror.xml» |
|
licSr = Hex(instance.LicenseStatusReason) |
|
If strCommand = «/dstatusall» Then |
|
getInstalled = True |
|
WScript.Echo MSG_SKUID & instance.ID |
|
WScript.Echo MSG_LICENSENAME & instance.Name |
|
WScript.Echo MSG_DESCRIPTION & instance.Description |
|
Else |
|
If instance.ProductKeyID <> «» Then |
|
getInstalled = True |
|
|
|
WScript.Echo MSG_SKUID & instance.ID |
|
WScript.Echo MSG_LICENSENAME & instance.Name |
|
WScript.Echo MSG_DESCRIPTION & instance.Description |
|
‘EvaluationEndDate always returns a value. When an expiry date is not defined «1/1/1601» is returned. |
|
‘So avoid displaying this against RTM licenses as that date = no expiry defined. |
|
If instance.EvaluationEndDate <> «» Then |
|
Set objDate = CreateObject(«WBemScripting.SWbemDateTime») |
|
objDate.Value = instance.EvaluationEndDate |
|
If objDate.GetVarDate() <> «1/1/1601» Then |
|
WScript.Echo MSG_LICEXPIRY & objDate.GetVarDate() |
|
End If |
|
Set objDate = Nothing |
|
End If |
|
End If |
|
End If |
|
|
|
If getInstalled = True Then |
|
Select Case instance.LicenseStatus |
|
Case 0 |
|
WScript.Echo MSG_LICSTATUS & MSG_UNLICENSED |
|
Case 1 |
|
WScript.Echo MSG_LICSTATUS & MSG_LICENSED |
|
Case 2 |
|
WScript.Echo MSG_LICSTATUS & MSG_OOBGRACE |
|
Case 3 |
|
WScript.Echo MSG_LICSTATUS & MSG_OOTGRACE |
|
Case 4 |
|
WScript.Echo MSG_LICSTATUS & MSG_NONGENGRACE |
|
Case 5 |
|
WScript.Echo MSG_LICSTATUS & MSG_NOTIFICATION |
|
Case 6 |
|
WScript.Echo MSG_LICSTATUS & MSG_EXTENDEDGRACE |
|
Case Else |
|
WScript.Echo MSG_LICSTATUS & MSG_LICUNKNOWN |
|
End Select |
|
|
|
If licSr <> «0» Then |
|
If instance.LicenseStatus <> 1 Then |
|
WScript.Echo MSG_ERRCODE & «0x» & licSr |
|
Else |
|
WScript.Echo MSG_ERRCODE & «0x» & licSr & MSG_INFO_ONLY |
|
End If |
|
getResource(«err» & «0x» & licSr) |
|
If globalResource = «» Then |
|
If foundSlUi <> True Then |
|
WScript.Echo MSG_ERRDESC & «Not available.» |
|
Else |
|
WScript.Echo MSG_ERRDESC & «Run the following: cscript ospp.vbs /ddescr:0x» & licSr |
|
End if |
|
Else |
|
WScript.Echo MSG_ERRDESC & globalResource |
|
End If |
|
End If |
|
|
|
If instance.GracePeriodRemaining <> 0 Then |
|
dGrace = instance.GracePeriodRemaining / 60 / 24 |
|
rndDown = Int(dGrace) |
|
WScript.Echo MSG_REMAINGRACE & rndDown & » days « & » (« & instance.GracePeriodRemaining & » minute(s) before expiring» & «)» |
|
End If |
|
|
|
If instance.PartialProductKey <> «» Then |
|
WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey |
|
‘Display additional volume info for KMS licenses |
|
If intIsKms <> 0 Then |
|
‘Display activation type set (Win8+). |
|
If Win7 <> True Then |
|
Select Case instance.VLActivationTypeEnabled |
|
Case 1 |
|
WScript.Echo MSG_VLActivationType & «AD» |
|
Case 2 |
|
WScript.Echo MSG_VLActivationType & «KMS» |
|
Case 3 |
|
WScript.Echo MSG_VLActivationType & «Token» |
|
Case Else |
|
WScript.Echo MSG_VLActivationType & «ALL» |
|
End Select |
|
|
|
‘Check to see if last activated via AD- display object info (Win8+). |
|
If instance.VLActivationType = 1 Then |
|
isAdActivated = True |
|
WScript.Echo MSG_Act_Recent + «AD» |
|
WScript.Echo vbTab & MSG_ADInfoAOName & instance.ADActivationObjectName |
|
WScript.Echo vbTab & MSG_ADInfoAODN & instance.ADActivationObjectDN |
|
WScript.Echo vbTab & MSG_ADInfoExtendedPid & instance.ADActivationCsvlkPid |
|
WScript.Echo vbTab & MSG_ADInfoActID & instance.ADActivationCsvlkSkuId |
|
End If |
|
End If |
|
|
|
If isAdActivated = False Then |
|
strKms = instance.DiscoveredKeyManagementServiceMachineName |
|
strPort = instance.DiscoveredKeyManagementServiceMachinePort |
|
|
|
If IsNull(strKms) Or (strKms = «») Or IsNull(strPort) Or (strPort = 0) Then |
|
WScript.Echo vbTab & MSG_KMS_DNS_ERR |
|
Else |
|
WScript.Echo vbTab & MSG_KMS_DNS & strKMS & «:» & strPort |
|
End If |
|
|
|
‘Check to see if registry override is defined |
|
strKms = instance.KeyManagementServiceMachine |
|
If strKms <> «» And Not IsNull(strKms) Then |
|
strPort = instance.KeyManagementServicePort |
|
If (strPort = 0) Then |
|
strPort = MSG_DEFAULT_PORT |
|
End If |
|
WScript.Echo vbTab & MSG_HOST_REG_OVERRIDE & strKms & «:» & strPort |
|
End If |
|
|
|
WScript.Echo vbTab & MSG_ACTIVATION_INTERVAL & instance.VLActivationInterval & » minutes» |
|
WScript.Echo vbTab & MSG_RENEWAL_INTERVAL & instance.VLRenewalInterval & » minutes» |
|
|
|
If (objOspp.KeyManagementServiceHostCaching = True) Then |
|
WScript.Echo vbTab & MSG_HOST_CACHING & «Enabled» |
|
Else |
|
WScript.Echo vbTab & MSG_HOST_CACHING & «Disabled» |
|
End If |
|
|
|
If Win7 <> True Then |
|
If instance.KeyManagementServiceLookupDomain <> «» Then |
|
WScript.Echo vbTab & MSG_KMSLOOKUP & instance.KeyManagementServiceLookupDomain |
|
End If |
|
End If |
|
End If |
|
End If |
|
End If |
|
WScript.Echo MSG_SEPERATE |
|
End If |
|
Case Else |
|
End Select |
|
End If |
|
Next |
|
End If |
|
|
|
Select Case strCommand |
|
Case «/unpkey» |
|
If y = 0 Then |
|
WScript.Echo MSG_KEYNOTFOUND |
|
quitExit() |
|
End If |
|
Case «/ckms-domain»,«/skms-domain»,«/actype»,«/sethst»,«/setprt»,«/remhst» |
|
If kmsCounter = 0 Then |
|
WScript.Echo MSG_NOKMSLICS |
|
quitExit() |
|
Else |
|
sppErrHandle(strCommand) |
|
End If |
|
Case Else |
|
End Select |
|
|
|
If i = 0 Then |
|
WScript.Echo MSG_NOKEYSINSTALLED |
|
WScript.Echo MSG_SEPERATE |
|
End If |
|
quitExit() |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function performRegAction(strCommand) |
|
|
|
On Error Resume Next |
|
|
|
If Win7 = True Then |
|
Set colListOfServices = objWMI.ExecQuery _ |
|
(«Select * from Win32_Service «) |
|
For Each objService in colListOfServices |
|
If objService.Name = «osppsvc» Then |
|
installed = True |
|
Exit For |
|
End If |
|
Next |
|
|
|
If installed <> True Then |
|
globalPopFailure MSG_OSPPSVC_NOINSTALL,True |
|
End If |
|
checkRegRights objWMI1,REG_OSPP |
|
Else |
|
checkRegRights objWMI1,REG_SPP |
|
End If |
|
|
|
Select Case strCommand |
|
Case «/puserops» |
|
setRegValue objWMI1,«1»,«UserOperations» |
|
Case «/duserops» |
|
setRegValue objWMI1,«0»,«UserOperations» |
|
End Select |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function performServiceAction(strCommand) |
|
|
|
On Error Resume Next |
|
|
|
Set colListOfServices = objWMI.ExecQuery _ |
|
(«Select * from Win32_Service «) |
|
For Each objService in colListOfServices |
|
If objService.Name = «osppsvc» Then |
|
installed = True |
|
Exit For |
|
End If |
|
Next |
|
|
|
If installed <> True Then |
|
globalPopFailure MSG_OSPPSVC_NOINSTALL,True |
|
End If |
|
|
|
Set objService = Nothing |
|
Set colListOfServices = Nothing |
|
|
|
If strCommand = «/osppsvcauto» Then |
|
Set colListOfServices = objWMI.ExecQuery _ |
|
(«Select * from Win32_Service where StartMode = ‘Manual’ or StartMode = ‘Disabled'») |
|
For Each objService in colListOfServices |
|
If LCase(objService.Name) = «osppsvc» Then |
|
foundOsppNonAuto = True |
|
objService.Change , , , , «Automatic» |
|
WScript.Sleep(15000) |
|
Exit For |
|
End If |
|
Next |
|
If foundOsppNonAuto <> True Then |
|
WScript.Echo «Service startup type already set to automatic: Office Software Protection Platform» |
|
quitExit() |
|
End If |
|
|
|
Set objService = Nothing |
|
Set colListOfServices = Nothing |
|
Set colListOfServices = objWMI.ExecQuery _ |
|
(«Select * from Win32_Service where StartMode = ‘Auto'») |
|
For Each objService in colListOfServices |
|
If LCase(objService.Name) = «osppsvc» Then |
|
foundOsppAuto = True |
|
WScript.Echo «Successfully set service startup to automatic:» & objService.DisplayName |
|
quitExit() |
|
End If |
|
Next |
|
|
|
If foundOsppAuto <> True Then |
|
WScript.Echo «Unsuccessful setting service startup to automatic. « & MSG_ISCMD_ELEVATED |
|
quitExit() |
|
End If |
|
Else |
|
Set colListOfServices = objWMI.ExecQuery _ |
|
(«Select * from Win32_Service «) |
|
For Each objService in colListOfServices |
|
If LCase(objService.Name) = «osppsvc» Then |
|
Select Case LCase(objService.State) |
|
Case «running» |
|
objService.StopService() |
|
WScript.Sleep(15000) |
|
objService.StartService() |
|
WScript.Sleep(15000) |
|
Case Else |
|
objService.StartService() |
|
WScript.Sleep(15000) |
|
End Select |
|
Exit For |
|
End If |
|
Next |
|
|
|
Set objService = Nothing |
|
Set colListOfServices = Nothing |
|
Set colListOfServices = objWMI.ExecQuery _ |
|
(«Select * from Win32_Service «) |
|
For Each objService in colListOfServices |
|
If LCase(objService.Name) = «osppsvc» Then |
|
If LCase(objService.State) = «running» Then |
|
WScript.Echo «Successfully restarted: « & objService.DisplayName |
|
quitExit() |
|
Else |
|
WScript.Echo «Unsuccessful restart: « & objService.DisplayName & «. Status: « _ |
|
& objService.State & «. « & MSG_ISCMD_ELEVATED |
|
quitExit() |
|
End If |
|
Exit For |
|
End If |
|
Next |
|
End If |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function reARM(skuid) |
|
|
|
progFiles = WshShell.ExpandEnvironmentStrings(«%ProgramFiles%») |
|
|
|
If objFSO.FileExists(progFiles & STR_OSPPREARMPATH) Then |
|
rearmPath = progFiles & STR_OSPPREARMPATH |
|
ElseIf objFSO.FileExists(progFiles & STR_OSPPREARMPATH_DEBUG) Then |
|
rearmPath = progFiles & STR_OSPPREARMPATH_DEBUG |
|
Else |
|
progFilesX86 = WshShell.ExpandEnvironmentStrings(«%ProgramFiles(x86)%») |
|
If objFSO.FileExists(progFilesX86 & STR_OSPPREARMPATH) Then |
|
rearmPath = progFilesX86 & STR_OSPPREARMPATH |
|
ElseIf objFSO.FileExists(progFilesX86 & STR_OSPPREARMPATH_DEBUG) Then |
|
rearmPath = progFilesX86 & STR_OSPPREARMPATH_DEBUG |
|
Else |
|
WScript.Echo MSG_FILENOTFOUND & «OSPPREARM.EXE» |
|
quitExit() |
|
End If |
|
End If |
|
|
|
If skuid = «» Then |
|
Set objScriptExec = WshShell.Exec (rearmPath) |
|
Else |
|
Set objScriptExec = WshShell.Exec (rearmPath & » « & skuid) |
|
End If |
|
|
|
readOut = objScriptExec.StdOut.ReadAll |
|
WScript.Echo readOut |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function isWin7OS() |
|
|
|
Set colOperatingSystems = objWMI.ExecQuery _ |
|
(«Select * from Win32_OperatingSystem») |
|
For Each objOperatingSystem in colOperatingSystems |
|
Ver = Split(objOperatingSystem.Version, «.», —1, 1) |
|
‘Win7 |
|
If (Ver(0) = «6» And Ver(1) = «1» And objOperatingSystem.ProductType = 1) Then |
|
Win7 = True |
|
Exit For |
|
End If |
|
|
|
‘Server2008R2 |
|
If (Ver(0) = «6» And Ver(1) = «1» And (objOperatingSystem.ProductType = 2 Or objOperatingSystem.ProductType = 3)) Then |
|
Win7 = True |
|
Exit For |
|
End If |
|
Next |
|
|
|
setWmiClasses() |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
Function setWmiClasses() |
|
|
|
If Win7 = True Then |
|
productClass = «OfficeSoftwareProtectionProduct» |
|
tokenClass = «OfficeSoftwareProtectionTokenActivationLicense» |
|
Else |
|
productClass = «SoftwareLicensingProduct» |
|
tokenClass = «SoftwareLicensingTokenActivationLicense» |
|
End If |
|
|
|
End Function |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
‘//////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
» SIG » Begin signature block |
|
» SIG » MIIhkgYJKoZIhvcNAQcCoIIhgzCCIX8CAQExDzANBglg |
|
» SIG » hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor |
|
» SIG » BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC |
|
» SIG » AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg |
|
» SIG » zEwik1Z5edAj7+sqHGDiJNmSFwExtnAcWrZywByYrk+g |
|
» SIG » ggswMIIEuDCCA6CgAwIBAgITMwAAABYRBLSIOIy+wwAA |
|
» SIG » AAAAFjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV |
|
» SIG » UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH |
|
» SIG » UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv |
|
» SIG » cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT |
|
» SIG » aWduaW5nIFBDQSAyMDEwMB4XDTEyMDgzMDE3NDkwM1oX |
|
» SIG » DTEzMTEzMDE3NDkwM1owgYMxCzAJBgNVBAYTAlVTMRMw |
|
» SIG » EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt |
|
» SIG » b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp |
|
» SIG » b24xDTALBgNVBAsTBE1PUFIxHjAcBgNVBAMTFU1pY3Jv |
|
» SIG » c29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEB |
|
» SIG » BQADggEPADCCAQoCggEBAKBQnx1OlLoHCty+lknhPaAG |
|
» SIG » 75W++b1WKluc7x4RLsbW4S2yb8wzLZ4epLGCFspkMamK |
|
» SIG » JoH04y7yHg4cyOFZ4dQjPWV3/+rlt7ONCPYS129JV6SF |
|
» SIG » 4wQe0EKop7LbMAoV0ck1bX+8hl6lPraQZAUkHD6gcWgK |
|
» SIG » Mfd+1JXpLZvKZQV6FAIMCfaz3XFdJh9aCy8JumcybJwV |
|
» SIG » 2Jw8iehHOu+mFN9CPiEeuzHiLNFU9uqAkiuTNHdtkmcm |
|
» SIG » NsEqMdt4E0mrk5XcbKoMAHHAzc3dY+2RV5evjCqExd4N |
|
» SIG » dWWM4NEfQTu7tZLSaTl1mABMbEw9GEMDzmY7nF1OUXiR |
|
» SIG » Qjt+0FrgX0MCAwEAAaOCAScwggEjMB8GA1UdJQQYMBYG |
|
» SIG » CCsGAQUFBwMDBgorBgEEAYI3PQYBMB0GA1UdDgQWBBRr |
|
» SIG » 2fF2+KN4NKT3Rp4n8bC5bM82pjAfBgNVHSMEGDAWgBTm |
|
» SIG » /F97uyIAWORyTrX0IXQjMubvrDBWBgNVHR8ETzBNMEug |
|
» SIG » SaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp |
|
» SIG » L2NybC9wcm9kdWN0cy9NaWNDb2RTaWdQQ0FfMjAxMC0w |
|
» SIG » Ny0wNi5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF |
|
» SIG » BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp |
|
» SIG » L2NlcnRzL01pY0NvZFNpZ1BDQV8yMDEwLTA3LTA2LmNy |
|
» SIG » dDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IB |
|
» SIG » AQBSQvO9uPl8uzKyi9ukLZAQqUK3SJ69+UtczCFgpL2A |
|
» SIG » l2MuKon2m9a8IpIBc56D+/KLa70wWuztMD7uyOF/qDcp |
|
» SIG » 90wfrd4j1yptJQrRMD5D8aq1RTirbkTj0KEDM9daNOUh |
|
» SIG » MSuOKC547WVyB4e1/rwWxKwvZMuizcnqB2p1YuvM5map |
|
» SIG » PMEyOcXRwGxr+gU8K22z+0f9urwcgF0ShtQr2tIsKDJ9 |
|
» SIG » VwWEJ4Ef8EFlUgHwaq95DbjtwGOnRNb5ngJVRQ54Xlzb |
|
» SIG » AHrpZSRzEni2UPk2JkiUBO3YQNXhPUM3H5hFnSzjNtpz |
|
» SIG » MFSXah4gXBP5DtiMMLbrPnWEpetjkgotSUu2MIIGcDCC |
|
» SIG » BFigAwIBAgIKYQxSTAAAAAAAAzANBgkqhkiG9w0BAQsF |
|
» SIG » ADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp |
|
» SIG » bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT |
|
» SIG » FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMp |
|
» SIG » TWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9y |
|
» SIG » aXR5IDIwMTAwHhcNMTAwNzA2MjA0MDE3WhcNMjUwNzA2 |
|
» SIG » MjA1MDE3WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMK |
|
» SIG » V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG |
|
» SIG » A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD |
|
» SIG » VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAy |
|
» SIG » MDEwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC |
|
» SIG » AQEA6Q5kUHlntcTj/QkATJ6UrPdWaOpE2M/FWE+ppXZ8 |
|
» SIG » bUW60zmStKQe+fllguQX0o/9RJwI6GWTzixVhL99COMu |
|
» SIG » K6hBKxi3oktuSUxrFQfe0dLCiR5xlM21f0u0rwjYzIjW |
|
» SIG » axeUOpPOJj/s5v40mFfVHV1J9rIqLtWFu1k/+JC0K4N0 |
|
» SIG » yiuzO0bj8EZJwRdmVMkcvR3EVWJXcvhnuSUgNN5dpqWV |
|
» SIG » XqsogM3Vsp7lA7Vj07IUyMHIiiYKWX8H7P8O7YASNUwS |
|
» SIG » pr5SW/Wm2uCLC0h31oVH1RC5xuiq7otqLQVcYMa0Kluc |
|
» SIG » IxxfReMaFB5vN8sZM4BqiU2jamZjeJPVMM+VHwIDAQAB |
|
» SIG » o4IB4zCCAd8wEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0O |
|
» SIG » BBYEFOb8X3u7IgBY5HJOtfQhdCMy5u+sMBkGCSsGAQQB |
|
» SIG » gjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAP |
|
» SIG » BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP |
|
» SIG » 6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeG |
|
» SIG » RWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3Js |
|
» SIG » L3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIz |
|
» SIG » LmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKG |
|
» SIG » Pmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2Vy |
|
» SIG » dHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MIGd |
|
» SIG » BgNVHSAEgZUwgZIwgY8GCSsGAQQBgjcuAzCBgTA9Bggr |
|
» SIG » BgEFBQcCARYxaHR0cDovL3d3dy5taWNyb3NvZnQuY29t |
|
» SIG » L1BLSS9kb2NzL0NQUy9kZWZhdWx0Lmh0bTBABggrBgEF |
|
» SIG » BQcCAjA0HjIgHQBMAGUAZwBhAGwAXwBQAG8AbABpAGMA |
|
» SIG » eQBfAFMAdABhAHQAZQBtAGUAbgB0AC4gHTANBgkqhkiG |
|
» SIG » 9w0BAQsFAAOCAgEAGnTvV08pe8QWhXi4UNMi/AmdrIKX |
|
» SIG » +DT/KiyXlRLl5L/Pv5PI4zSp24G43B4AvtI1b6/lf3mV |
|
» SIG » d+UC1PHr2M1OHhthosJaIxrwjKhiUUVnCOM/PB6T+DCF |
|
» SIG » F8g5QKbXDrMhKeWloWmMIpPMdJjnoUdD8lOswA8waX/+ |
|
» SIG » 0iUgbW9h098H1dlyACxphnY9UdumOUjJN2FtB91TGcun |
|
» SIG » 1mHCv+KDqw/ga5uV1n0oUbCJSlGkmmzItx9KGg5pqdfc |
|
» SIG » wX7RSXCqtq27ckdjF/qm1qKmhuyoEESbY7ayaYkGx0aG |
|
» SIG » ehg/6MUdIdV7+QIjLcVBy78dTMgW77Gcf/wiS0mKbhXj |
|
» SIG » pn92W9FTeZGFndXS2z1zNfM8rlSyUkdqwKoTldKOEdqZ |
|
» SIG » Z14yjPs3hdHcdYWch8ZaV4XCv90Nj4ybLeu07s8n07Ve |
|
» SIG » afqkFgQBpyRnc89NT7beBVaXevfpUk30dwVPhcbYC/GO |
|
» SIG » 7UIJ0Q124yNWeCImNr7KsYxuqh3khdpHM2KPpMmRM19x |
|
» SIG » HkCvmGXJIuhCISWKHC1g2TeJQYkqFg/XYTyUaGBS79ZH |
|
» SIG » maCAQO4VgXc+nOBTGBpQHTiVmx5mMxMnORd4hzbOTsNf |
|
» SIG » svU9R1O24OXbC2E9KteSLM43Wj5AQjGkHxAIwlacvyRd |
|
» SIG » UQKdannSF9PawZSOB3slcUSrBmrm1MbfI5qWdcUxghW6 |
|
» SIG » MIIVtgIBATCBlTB+MQswCQYDVQQGEwJVUzETMBEGA1UE |
|
» SIG » CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe |
|
» SIG » MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgw |
|
» SIG » JgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD |
|
» SIG » QSAyMDEwAhMzAAAAFhEEtIg4jL7DAAAAAAAWMA0GCWCG |
|
» SIG » SAFlAwQCAQUAoIHAMBkGCSqGSIb3DQEJAzEMBgorBgEE |
|
» SIG » AYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3 |
|
» SIG » AgEVMC8GCSqGSIb3DQEJBDEiBCD1TJpTGWrIm4napIKJ |
|
» SIG » YhzLZWUWjiXYdz5av5AAR9fYhjBUBgorBgEEAYI3AgEM |
|
» SIG » MUYwRKAigCAATQBpAGMAcgBvAHMAbwBmAHQAIABPAGYA |
|
» SIG » ZgBpAGMAZaEegBxodHRwOi8vb2ZmaWNlLm1pY3Jvc29m |
|
» SIG » dC5jb20gMA0GCSqGSIb3DQEBAQUABIIBAGu21FD/HaKe |
|
» SIG » x/u2c2W5ahMQfqtl1D7pmywem006AtumQmviOOafquMZ |
|
» SIG » mT/jJf9FrrR6tVKN2v8UfTJwIQi1lWlQAyYTA/bOGiI2 |
|
» SIG » Uepum9IQyFbbtbqu7RWwqeEGbpugGTHF1H/5nXWTwUfj |
|
» SIG » XGUcySYJhQI20/DcGw0G2TD2xPPT7JfbHviXvH0d2nRW |
|
» SIG » P/10Gi1AmAY7+Koe/jZ6Z7uhzw2TbL1oZpBrvlDzY/0t |
|
» SIG » PopVtLTWf8MMQLD81+oBkj9TcgG684Gu4oYWoXQ2VGxX |
|
» SIG » hxTwJJWmJ/Lk16pxtmfsTDKmbVZQKQq/Kfmot6mBhT+v |
|
» SIG » srzqUZmrI5fj8kmq27NRiYihghMyMIITLgYKKwYBBAGC |
|
» SIG » NwMDATGCEx4wghMaBgkqhkiG9w0BBwKgghMLMIITBwIB |
|
» SIG » AzEPMA0GCWCGSAFlAwQCAQUAMIIBPQYLKoZIhvcNAQkQ |
|
» SIG » AQSgggEsBIIBKDCCASQCAQEGCisGAQQBhFkKAwEwMTAN |
|
» SIG » BglghkgBZQMEAgEFAAQgaPCujLfd+uxBHGfJ4h+nFCAS |
|
» SIG » qeiGNAoy2HNoucsL2xUCBlBkYEUZ2hgTMjAxMjEwMDIw |
|
» SIG » MDA4NTEuMjQ3WjAHAgEBgAIB9KCBuaSBtjCBszELMAkG |
|
» SIG » A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO |
|
» SIG » BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m |
|
» SIG » dCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUG |
|
» SIG » A1UECxMebkNpcGhlciBEU0UgRVNOOkI4RUMtMzBBNC03 |
|
» SIG » MTQ0MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt |
|
» SIG » cCBTZXJ2aWNloIIOxzCCBnEwggRZoAMCAQICCmEJgSoA |
|
» SIG » AAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYT |
|
» SIG » AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH |
|
» SIG » EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y |
|
» SIG » cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290 |
|
» SIG » IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEw |
|
» SIG » MDcwMTIxMzY1NVoXDTI1MDcwMTIxNDY1NVowfDELMAkG |
|
» SIG » A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO |
|
» SIG » BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m |
|
» SIG » dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0 |
|
» SIG » IFRpbWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3 |
|
» SIG » DQEBAQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX |
|
» SIG » 9fp/aZRrdFQQ1aUKAIKF++18aEssX8XD5WHCdrc+Zitb |
|
» SIG » 8BVTJwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRDDNdN |
|
» SIG » uDgIs0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG8lhH |
|
» SIG » hjKEHnRhZ5FfgVSxz5NMksHEpl3RYRNuKMYa+YaAu99h |
|
» SIG » /EbBJx0kZxJyGiGKr0tkiVBisV39dx898Fd1rL2KQk1A |
|
» SIG » UdEPnAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6Kgox8NpO |
|
» SIG » BpG2iAg16HgcsOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8 |
|
» SIG » wMlEXV4WnAEFTyJNAgMBAAGjggHmMIIB4jAQBgkrBgEE |
|
» SIG » AYI3FQEEAwIBADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xG |
|
» SIG » G8UzaFqFbVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBD |
|
» SIG » AEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w |
|
» SIG » HwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQw |
|
» SIG » VgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNy |
|
» SIG » b3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9v |
|
» SIG » Q2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEB |
|
» SIG » BE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNy |
|
» SIG » b3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXRf |
|
» SIG » MjAxMC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCBkjCB |
|
» SIG » jwYJKwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRw |
|
» SIG » Oi8vd3d3Lm1pY3Jvc29mdC5jb20vUEtJL2RvY3MvQ1BT |
|
» SIG » L2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwA |
|
» SIG » ZQBnAGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABl |
|
» SIG » AG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH |
|
» SIG » 5ohRDeLG4Jg/gXEDPZ2joSFvs+umzPUxvs8F4qn++ldt |
|
» SIG » GTCzwsVmyWrf9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5 |
|
» SIG » U4zM9GASinbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/ |
|
» SIG » f8Z/8jd9Wj8c8pl5SpFSAK84Dxf1L3mBZdmptWvkx872 |
|
» SIG » ynoAb0swRCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+ |
|
» SIG » tuWOM7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlK |
|
» SIG » cWOdeyFtw5yjojz6f32WapB4pm3S4Zz5Hfw42JT0xqUK |
|
» SIG » loakvZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45 |
|
» SIG » V3aicaoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4Ttx |
|
» SIG » Cd9ddJgiCGHasFAeb73x4QDf5zEHpJM692VHeOj4qEir |
|
» SIG » 995yfmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEegPsb |
|
» SIG » iSpUObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9UJyH3 |
|
» SIG » yKxO2ii4sanblrKnQqLJzxlBTeCG+SqaoxFmMNO7dDJL |
|
» SIG » 32N79ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp3lfB0d4w |
|
» SIG » wP3M5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa7wknHNWz |
|
» SIG » fjUeCLraNtvTX4/edIhJEjCCBNEwggO5oAMCAQICCmEH |
|
» SIG » 1FUAAAAAAA4wDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE |
|
» SIG » BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV |
|
» SIG » BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD |
|
» SIG » b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp |
|
» SIG » bWUtU3RhbXAgUENBIDIwMTAwHhcNMTIwMTA5MjEzNTMx |
|
» SIG » WhcNMTMwNDA5MjE0NTMxWjCBszELMAkGA1UEBhMCVVMx |
|
» SIG » EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl |
|
» SIG » ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh |
|
» SIG » dGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNp |
|
» SIG » cGhlciBEU0UgRVNOOkI4RUMtMzBBNC03MTQ0MSUwIwYD |
|
» SIG » VQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNl |
|
» SIG » MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA |
|
» SIG » weiiiavCaSU5yAO7J7LMoFhyzUv4QGcC85Sl6EdWInsg |
|
» SIG » nJ4/uPz92BPkJqKQ7+S9iEplO1iwcoUEiARNaVXKHaxz |
|
» SIG » g/vjTPVeJrFRZwdt7mDhCISPS/Jmzo1gPxiQ89ySBo5u |
|
» SIG » 9eCyW35wKULrQhWmxVXzHr3ZvcsT2eqwdL97m4xWCbmI |
|
» SIG » ZSSUTMqApPPv8se3fU23u6A/U6J5jWzxubjJ5HXUXttd |
|
» SIG » reRWpTihDFQ7KcsEyB4MrRJP8qXec6sZ9HUC0HTUB+GR |
|
» SIG » WWqbJRiYCyjH13ViaapBfos7kYb/pPTqtveVi5nDphrs |
|
» SIG » i+jxsygf7gyFNBKBUwfIyW9vAqZ86Be0DwIDAQABo4IB |
|
» SIG » GzCCARcwHQYDVR0OBBYEFMbW5nU1U+/wnbjYtEvuXlMB |
|
» SIG » CGPZMB8GA1UdIwQYMBaAFNVjOlyKMZDzQ3t8RhvFM2ha |
|
» SIG » hW1VMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwu |
|
» SIG » bWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01p |
|
» SIG » Y1RpbVN0YVBDQV8yMDEwLTA3LTAxLmNybDBaBggrBgEF |
|
» SIG » BQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cu |
|
» SIG » bWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljVGltU3Rh |
|
» SIG » UENBXzIwMTAtMDctMDEuY3J0MAwGA1UdEwEB/wQCMAAw |
|
» SIG » EwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZIhvcNAQEL |
|
» SIG » BQADggEBAI0KBSOJ6bP7QV7OBc3Qqr9NuRE/A3XEtCto |
|
» SIG » Oz7ZTYBcGswSypS0o+c2jD54GkUSz8eNIK/HNwpipKCv |
|
» SIG » Yqp9KTUgw66SS/r2uF5LX3RmrPKhLXA4cdGYNlu/BuX+ |
|
» SIG » LeyJ2KXql1BCgrU1+xB4fxhe7baUWx9o5rN8N2/4P8L5 |
|
» SIG » b4Wlw2clhOvZuKCjtO5YJqk6yH0ESwyoE0ZtnsZaYOcI |
|
» SIG » cZEblJidE2CtM702fe0IaCLIMOffLMQr9T+4gVlPq+1s |
|
» SIG » vCAGEQVMMDkoR1BU37nOc9+Q82n/qBMTgnvQG9ogqcFQ |
|
» SIG » 5skb/6SCon+aXmEWujxcUQfTqh0ixjkd346o0uBTH9yh |
|
» SIG » ggN5MIICYQIBATCB46GBuaSBtjCBszELMAkGA1UEBhMC |
|
» SIG » VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT |
|
» SIG » B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw |
|
» SIG » b3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMe |
|
» SIG » bkNpcGhlciBEU0UgRVNOOkI4RUMtMzBBNC03MTQ0MSUw |
|
» SIG » IwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2 |
|
» SIG » aWNloiUKAQEwCQYFKw4DAhoFAAMVAIMU1+AB1G7ZyJUz |
|
» SIG » KxZvn3EmZVMnoIHCMIG/pIG8MIG5MQswCQYDVQQGEwJV |
|
» SIG » UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH |
|
» SIG » UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv |
|
» SIG » cmF0aW9uMQ0wCwYDVQQLEwRNT1BSMScwJQYDVQQLEx5u |
|
» SIG » Q2lwaGVyIE5UUyBFU046QjAyNy1DNkY4LTFEODgxKzAp |
|
» SIG » BgNVBAMTIk1pY3Jvc29mdCBUaW1lIFNvdXJjZSBNYXN0 |
|
» SIG » ZXIgQ2xvY2swDQYJKoZIhvcNAQEFBQACBQDUFAnFMCIY |
|
» SIG » DzIwMTIxMDAxMTIyMzMzWhgPMjAxMjEwMDIxMjIzMzNa |
|
» SIG » MHcwPQYKKwYBBAGEWQoEATEvMC0wCgIFANQUCcUCAQAw |
|
» SIG » CgIBAAICCfICAf8wBwIBAAICF3EwCgIFANQVW0UCAQAw |
|
» SIG » NgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAaAK |
|
» SIG » MAgCAQACAxbjYKEKMAgCAQACAwehIDANBgkqhkiG9w0B |
|
» SIG » AQUFAAOCAQEAR/OueYR+g/HRIidEawooT2diG+SL852l |
|
» SIG » aPKtFYpQ2evbBhC6mrWYwfJJh7+so1dptvEQ5oCjx2Ko |
|
» SIG » /MSkTqsyLn2cfgT160PMyOeabh4/jMgUGU/C1YnkM4R2 |
|
» SIG » K4ShNBu3H6cGxTJMFv3edD+5tEZjPFJvdfJkewL2u+4T |
|
» SIG » Jzbbo/SZ2Mp0mYYNnYlXBbwXy27ZtKeQqwdZO5oqyNlg |
|
» SIG » NwYktOW1REwe9+1YIHfw9IhLPmAjF+ag7+FmKZG1ou1J |
|
» SIG » R95O7apQeOrLONDdraALCmb4JgNntqwy+x+RgmXdnUgo |
|
» SIG » 7mZF2oiDM/NqIWB/mN1ILdPF/ckEXOtLutVGHcEKpdpb |
|
» SIG » EzGCAuMwggLfAgEBMIGKMHwxCzAJBgNVBAYTAlVTMRMw |
|
» SIG » EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt |
|
» SIG » b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp |
|
» SIG » b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1w |
|
» SIG » IFBDQSAyMDEwAgphB9RVAAAAAAAOMA0GCWCGSAFlAwQC |
|
» SIG » AQUAoIIBKTAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQ |
|
» SIG » AQQwLwYJKoZIhvcNAQkEMSIEIMVDfBvNNWKr5LBboTVX |
|
» SIG » gRlLtx9uanEUsfPaJoM5/ZbLMIHZBgsqhkiG9w0BCRAC |
|
» SIG » DDGByTCBxjCBwzCBqAQUgxTX4AHUbtnIlTMrFm+fcSZl |
|
» SIG » UycwgY8wgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UE |
|
» SIG » CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe |
|
» SIG » MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYw |
|
» SIG » JAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0Eg |
|
» SIG » MjAxMAIKYQfUVQAAAAAADjAWBBRjIEaoyFA06dGB75Ys |
|
» SIG » NATncLtMNDANBgkqhkiG9w0BAQsFAASCAQBvTI/fQJ7r |
|
» SIG » /bKY6hyQc46TuKX4MBG5kc4j3qwYY9hBWAfZtebgojiU |
|
» SIG » N4sDMmAQ9RJo6/tAXqtoc2hh/hn3nwJmXbpDzEj50wmB |
|
» SIG » zMnOyo+YNcTkGhV9z3DfdIzLJ6iglM6y3kyy8ySjdXw3 |
|
» SIG » X9b4UlqeEetg6mb4S7FtLRnBGPNB9wXLt2Cw3tSSLWbt |
|
» SIG » hLeGi6Xh5AkWaNMz/2SZZIj7vVj/S01BZsGxGpV6BmXP |
|
» SIG » 0UW1gEJSNbqBKPuUsTD1I6aMH7hp57XL9q3np5DHU/Ae |
|
» SIG » q45jBLGD0mx3n73y//7FnQiFKpoRM8l33KGaUkkYHDIM |
|
» SIG » 5XalKnWa59yf/0L8Ls6Bzflz |
|
» SIG » End signature block |