Guest User

Untitled

a guest
Feb 5th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 75.75 KB | None | 0 0
  1. 'Copyright (c) Microsoft Corporation. All rights reserved.
  2. '////////////////////////////////////////////////////////////////////////////////////////
  3. '////////////////////////////////////////////////////////////////////////////////////////
  4. CONST wshOK =0
  5. CONST VALUE_ICON_WARNING =16
  6. CONST wshYesNoDialog =4
  7. CONST VALUE_ICON_QUESTIONMARK =32
  8. CONST VALUE_ICON_INFORMATION =64
  9. CONST HKEY_LOCAL_MACHINE =&H80000002
  10. CONST KEY_SET_VALUE =&H0002
  11. CONST KEY_QUERY_VALUE =&H0001
  12. CONST REG_SZ =1
  13. CONST OfficeAppId = "0ff1ce15-a989-479d-af46-f275c6370663"
  14. CONST STR_SYS32PATH = ":\Windows\System32\"
  15. CONST STR_OSPPREARMPATH = "\Microsoft Office\Office15\OSPPREARM.EXE"
  16. CONST STR_OSPPREARMPATH_DEBUG = "\Microsoft Office Debug\Office15\OSPPREARM.EXE"
  17. CONST REG_OSPP = "SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform"
  18. CONST REG_SPP = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
  19. CONST VER_INFO = "Version Info: 2013 1.0 (RTM)"
  20. '////////////////////////////////////////////////////////////////////////////////////////
  21. CONST MSG_NOREGRIGHTS = "Insufficient rights to perform operation."
  22. CONST MSG_ISCMD_ELEVATED = "Ensure cmd.exe is elevated (right click > run as administrator)."
  23. CONST MSG_CREDENTIALFAILURE = "Connection failed with passed credentials."
  24. CONST MSG_FILENOTFOUND = "File not found: "
  25. CONST MSG_SEPERATE = "---------------------------------------"
  26. CONST MSG_PROCESSING = "---Processing--------------------------"
  27. CONST MSG_EXIT = "---Exiting-----------------------------"
  28. CONST MSG_UNSUPPORTED = "Unsupported command passed."
  29. CONST MSG_UNSUPPORTEDOPEROS7 = "The following command is supported on Windows 7 only: "
  30. CONST MSG_UNSUPPORTEDOPEROS8 = "The following command is supported on Windows 8 and above only: "
  31. CONST MSG_UNSUPPORTEDLOCAL = "The following command is supported on local machine only: "
  32. CONST MSG_CREDENTIALERR = "Passing credentials is not supported for this command."
  33. CONST MSG_SUCCESS = "Successfully applied setting."
  34. CONST MSG_NOKMSLICS = "No Office KMS licenses were found on the system."
  35. CONST MSG_ACTATTEMPT = "Installed product key detected - attempting to activate the following product:"
  36. CONST MSG_TOKACTATTEMPT = "Installed product key detected - attempting to token activate the following product:"
  37. CONST MSG_NOKEYSINSTALLED = "<No installed product keys detected>"
  38. CONST MSG_UNINSTALLKEYSUCCESS = "<Product key uninstall successful>"
  39. CONST MSG_ACTSUCCESS = "<Product activation successful>"
  40. CONST MSG_OFFLINEACTSUCCESS = "<Offline product activation successful>"
  41. CONST MSG_KEYINSTALLSUCCESS = "<Product key installation successful>"
  42. CONST MSG_PARTIALKEY = "Last 5 characters of installed product key: "
  43. CONST MSG_UNINSTALLKEY = "Uninstalling product key for: "
  44. CONST MSG_UNRECOGFILE = "Unrecognized file. Office licenses have an .xrm-ms file extension."
  45. CONST MSG_INSTALLLICENSE = "Installing Office license: "
  46. CONST MSG_INSTALLLICSUCCESS = "Office license installed successfully."
  47. CONST MSG_SEARCHEVENTSKMS = "Searching for KMS activation events on machine: "
  48. CONST MSG_SEARCHEVENTSRET = "Searching for Internet activation failure events on machine: "
  49. CONST MSG_NOEVENTSSKMS = "No KMS activation events found on machine: "
  50. CONST MSG_NOEVENTSRET = "No failure events found on machine: "
  51. CONST MSG_OSPPSVC_NOINSTALL = "Error: The Software Protection Platform service is not installed."
  52. CONST MSG_OSPPSVC_NORUN = "Error: The Software Protection Platform service is not running."
  53. 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."
  54. CONST MSG_KEYNOTFOUND = "<Product key not found>"
  55. CONST MSG_CMID = "Client Machine ID (CMID): "
  56. CONST MSG_NOLICENSEFOUND = "<No licenses found>"
  57. CONST MSG_AUTHERR = "Authorization Error: 0x"
  58. CONST MSG_REMILID = "Removed Token-based Activation License with License ID (ILID): "
  59. CONST MSG_NOTFOUNDILID = "License not found with License ID (ILID): "
  60. CONST MSG_KMSLOOKUP = "KMS Lookup Domain: "
  61. CONST MSG_INFO_ONLY = " (for information purposes only as the status is licensed)"
  62. '////////////////////////////////////////////////////////////////////////////////////////
  63. CONST MSG_VLActivationType = "Activation Type Configuration: "
  64. '////////////////////////////////////////////////////////////////////////////////////////
  65. CONST MSG_Act_Recent = "Most recent successful activation client information: "
  66. CONST MSG_KMS_DNS = "KMS machine name from DNS: "
  67. CONST MSG_KMS_DNS_ERR = "DNS auto-discovery: KMS name not available"
  68. CONST MSG_ADInfoAOName = "Activation Object name: "
  69. CONST MSG_ADInfoAODN = "AO DN: "
  70. CONST MSG_ADInfoExtendedPid = "AO extended PID: "
  71. CONST MSG_ADInfoActID = "AO activation ID: "
  72. CONST MSG_ACTIVATION_INTERVAL = "Activation Interval: "
  73. CONST MSG_RENEWAL_INTERVAL = "Renewal Interval: "
  74. CONST MSG_HOST_CACHING = "KMS host caching: "
  75. CONST MSG_HOST_REG_OVERRIDE = "KMS machine registry override defined: "
  76. CONST MSG_DEFAULT_PORT = "1688"
  77. '////////////////////////////////////////////////////////////////////////////////////////
  78. CONST MSG_SKUID = "SKU ID: "
  79. CONST MSG_LICENSENAME = "LICENSE NAME: "
  80. CONST MSG_DESCRIPTION = "LICENSE DESCRIPTION: "
  81. CONST MSG_LICSTATUS = "LICENSE STATUS: "
  82. CONST MSG_LICENSED = " ---LICENSED--- "
  83. CONST MSG_UNLICENSED = " ---UNLICENSED--- "
  84. CONST MSG_OOBGRACE = " ---OOB_GRACE--- "
  85. CONST MSG_OOTGRACE = " ---OOT_GRACE--- "
  86. CONST MSG_NONGENGRACE = " ---NON_GENUINE_GRACE--- "
  87. CONST MSG_NOTIFICATION = " ---NOTIFICATIONS--- "
  88. CONST MSG_EXTENDEDGRACE = " ---EXTENDED GRACE--- "
  89. CONST MSG_LICUNKNOWN = " ---UNKNOWN--- "
  90. CONST MSG_REMAINGRACE = "REMAINING GRACE: "
  91. CONST MSG_LICEXPIRY = "BETA EXPIRATION: "
  92. CONST MSG_ERRCODE = "ERROR CODE: "
  93. CONST MSG_ERRDESC = "ERROR DESCRIPTION: "
  94. CONST MSG_ERRUNKNOWN = "An unknown error occurred."
  95. CONST MSG_ERRCODEVALUE = "An error code must start with '0x'. Example: 0xC004F009"
  96. '////////////////////////////////////////////////////////////////////////////////////////
  97. '////////////////////////////////////////////////////////////////////////////////////////
  98. On Error Resume Next
  99.  
  100. Set WshShell = WSCript.CreateObject("WSCript.Shell")
  101. Set objFSO = CreateObject("Scripting.FileSystemObject")
  102. Set objNetwork = WSCript.CreateObject("WSCript.Network")
  103.  
  104. Dim globalResource, globalErr, foundSlUi, strSluiPath, strLocal, objWMI, objWMI1, wmiErr, productinstances, strValue, Win7, productClass, tokenClass, intIsKms, kmsCounter, isAdActivated
  105. globalResource = ""
  106. globalErr = ""
  107. foundSlUi = False
  108. Win7 = False
  109. kmsCounter = 0
  110. isAdActivated = False
  111.  
  112. currentDir = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))
  113.  
  114. Select Case WSCript.Arguments.Count
  115. Case 0
  116. verifyFileExists currentDir & "ospp.htm"
  117. showIePopUp currentDir & "ospp.htm"
  118. WScript.Quit
  119. Case 1
  120. var1 = WSCript.Arguments(0)
  121. Case 2
  122. var1 = WSCript.Arguments(0)
  123. var2 = WSCript.Arguments(1)
  124. Case 3
  125. var1 = WSCript.Arguments(0)
  126. var2 = WSCript.Arguments(1)
  127. var3 = WSCript.Arguments(2)
  128. Case 4
  129. var1 = WSCript.Arguments(0)
  130. var2 = WSCript.Arguments(1)
  131. var3 = WSCript.Arguments(2)
  132. var4 = WSCript.Arguments(3)
  133. Case Else
  134. End Select
  135. '////////////////////////////////////////////////////////////////////////////////////////
  136. '////////////////////////////////////////////////////////////////////////////////////////
  137. Call Main(var1,var2,var3,var4)
  138. '////////////////////////////////////////////////////////////////////////////////////////
  139. '////////////////////////////////////////////////////////////////////////////////////////
  140. Sub Main(strCommand,strMachine,strUser,strPassword)
  141.  
  142. On Error Resume Next
  143.  
  144. getEngine()
  145. pProcessing()
  146. getSlui()
  147. strLocal = objNetwork.ComputerName
  148. strCommand = LCase(strCommand)
  149.  
  150. Select Case strCommand
  151. Case "/act", "/dstatus", "/dstatusall", "/dinstid", "/dtokils", _
  152. "/remhst", "/stokflag", "/ctokflag", "/dcmid", "/dtokcerts", "/ckms-domain"
  153. connectWMI strMachine,strUser,strPassword,""
  154. performLicAction strCommand,"",""
  155. Case "/dhistoryacterr", "/dhistorykms"
  156. connectWMI strMachine,strUser,strPassword,""
  157. performLicAction strCommand,"",strMachine
  158. Case "/puserops", "/duserops"
  159. connectWMI strMachine,strUser,strPassword,"reg"
  160. performRegAction strCommand
  161. Case "/osppsvcrestart", "/osppsvcauto"
  162. connectWMI strMachine,strUser,strPassword,""
  163. performServiceAction strCommand
  164. Case "/help", "help", "?", "/?", "/?"
  165. verifyFileExists currentDir & "ospp.htm"
  166. showIePopUp currentDir & "ospp.htm"
  167. quitExit()
  168. Case "/regmof"
  169. registerMof "osppwmi.mof"
  170. Case "/rearm"
  171. If strMachine = "" Then
  172. reARM ""
  173. Else
  174. globalPopFailure MSG_UNSUPPORTEDLOCAL & vbCr & strCommand,True
  175. End If
  176. quitExit()
  177. Case "/version"
  178. globalPopSuccess VER_INFO,True
  179. Case Else
  180. pos = InStr(strCommand,":")
  181.  
  182. Select Case pos
  183. Case 7
  184. getCommand = Left(strCommand,6)
  185. Case 8
  186. getCommand = Left(strCommand,7)
  187. Case 13
  188. getCommand = Left(strCommand,12)
  189. Case Else
  190. globalPopFailure MSG_UNSUPPORTED,True
  191. End Select
  192.  
  193. Select Case getCommand
  194. Case "/skms-domain", "/actype", "/inpkey", "/unpkey", "/inslic", "/actcid", "/sethst", "/setprt", "/ddescr", "/rtokil", "/tokact", "/cachst", "/rearm"
  195. strValue = Replace(strCommand,getCommand & ":","")
  196. If strValue = "" Then
  197. globalPopFailure MSG_UNSUPPORTED & " A value is required for: " & strCommand,True
  198. End If
  199.  
  200. If getCommand = "/ddescr" Then
  201. If Left(strValue,2) = "0x" Then
  202. getDescription strValue,""
  203. Else
  204. WScript.Echo MSG_ERRCODEVALUE
  205. quitExit()
  206. End If
  207. ElseIf getCommand = "/rearm" Then
  208. If strMachine = "" Then
  209. reARM strValue
  210. Else
  211. globalPopFailure MSG_UNSUPPORTEDLOCAL & vbCr & strCommand,True
  212. End If
  213. quitExit()
  214. Else
  215. connectWMI strMachine,strUser,strPassword,""
  216. performLicAction getCommand,strValue,""
  217. End If
  218. Case Else
  219. globalPopFailure MSG_UNSUPPORTED,True
  220. End Select
  221. End Select
  222.  
  223. End Sub
  224. '////////////////////////////////////////////////////////////////////////////////////////
  225. '////////////////////////////////////////////////////////////////////////////////////////
  226. Function showIePopUp(strPath)
  227.  
  228. On Error Resume Next
  229.  
  230. Set objExplorer = CreateObject("InternetExplorer.Application")
  231. With objExplorer
  232. .Navigate strPath
  233. .ToolBar = 0
  234. .StatusBar = 0
  235. .Width = 1000
  236. .Height = 593
  237. .Left = 1
  238. .Top = 1
  239. .Visible = 1
  240. End With
  241.  
  242. End Function
  243. '////////////////////////////////////////////////////////////////////////////////////////
  244. '////////////////////////////////////////////////////////////////////////////////////////
  245. Function getEngine()
  246.  
  247. strEngine = LCase(Right(WScript.FullName,12))
  248. If strEngine <> "\cscript.exe" Then
  249. WshShell.Popup "Unable to perform operation. " & WSCript.ScriptName & " requires the cscript engine." & _
  250. vbCr & "Command line example: cscript ospp.vbs ?", _
  251. ,WSCript.ScriptName, VALUE_ICON_WARNING
  252. WScript.Quit
  253. End If
  254.  
  255. End Function
  256. '////////////////////////////////////////////////////////////////////////////////////////
  257. '////////////////////////////////////////////////////////////////////////////////////////
  258. Function WMIDateStringToDate(dtmEventDate)
  259.  
  260. WMIDateStringToDate = CDate(Mid(dtmEventDate, 5, 2) & "/" & _
  261. Mid(dtmEventDate, 7, 2) & "/" & Left(dtmEventDate, 4) _
  262. & " " & Mid (dtmEventDate, 9, 2) & ":" & _
  263. Mid(dtmEventDate, 11, 2) & ":" & Mid(dtmEventDate, _
  264. 13, 2))
  265.  
  266. End Function
  267. '////////////////////////////////////////////////////////////////////////////////////////
  268. '////////////////////////////////////////////////////////////////////////////////////////
  269. Function getDescription(strSearch,cType)
  270.  
  271. If foundSlUi <> True Then
  272. If cType <> "wmi" Then
  273. globalPopFailure "slui.exe not found.",True
  274. quitExit()
  275. End If
  276. Else
  277. Set objScriptExec = WshShell.Exec (strSluiPath & " 0x2a " & strSearch)
  278. readOut = objScriptExec.StdOut.ReadAll
  279. quitExit()
  280. End If
  281.  
  282. End Function
  283. '////////////////////////////////////////////////////////////////////////////////////////
  284. '////////////////////////////////////////////////////////////////////////////////////////
  285. Function checkRegRights(wmiObject,strKeyPath)
  286.  
  287. On Error Resume next
  288.  
  289. wmiObject.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_SET_VALUE, _
  290. bHasAccessRight
  291.  
  292. If bHasAccessRight = True Then
  293. 'Success
  294. Else
  295. globalPopFailure MSG_NOREGRIGHTS & vbCr & MSG_ISCMD_ELEVATED,True
  296. End If
  297.  
  298. End Function
  299. '////////////////////////////////////////////////////////////////////////////////////////
  300. '////////////////////////////////////////////////////////////////////////////////////////
  301. Function quitExit()
  302.  
  303. Set WshShell = Nothing
  304. Set objFSO = Nothing
  305. Set objNetwork = Nothing
  306. Set objWMI = Nothing
  307.  
  308. WScript.Echo MSG_SEPERATE
  309. WScript.Echo MSG_EXIT
  310. WSCript.Quit
  311.  
  312. End Function
  313. '////////////////////////////////////////////////////////////////////////////////////////
  314. '////////////////////////////////////////////////////////////////////////////////////////
  315. Function verifyFileExists(file)
  316.  
  317. If Not objFSO.FileExists(file) Then
  318. If file = currentDir & "slerror.xml" Then
  319. WScript.Echo "[" & MSG_FILENOTFOUND & file & " Unable to display error description.]"
  320. ElseIf file = currentDir & "ospp.htm" Then
  321. globalPopFailure MSG_FILENOTFOUND & vbCr & file,False
  322. quitExit()
  323. Else
  324. globalPopFailure MSG_FILENOTFOUND & vbCr & file,True
  325. End If
  326. End If
  327.  
  328. End Function
  329. '////////////////////////////////////////////////////////////////////////////////////////
  330. '////////////////////////////////////////////////////////////////////////////////////////
  331. Function registerMof(strFile)
  332.  
  333. For Each Drv In objFSO.Drives
  334. If Drv.DriveType=2 Then
  335. If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & "wbem\mofcomp.exe") Then
  336. foundComp = True
  337. strMofExePath = Drv.DriveLetter & STR_SYS32PATH & "wbem\mofcomp.exe"
  338. If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & "wbem\" & strFile) Then
  339. foundMof = True
  340. strOWmi = Drv.DriveLetter & STR_SYS32PATH & "wbem\" & strFile
  341. Set objScriptExec = WshShell.Exec (strMofExePath & " " & strOWmi)
  342. readOut = objScriptExec.StdOut.ReadAll
  343. WScript.Echo readOut
  344. quitExit()
  345. End If
  346. End If
  347. End If
  348. Next
  349.  
  350. If foundComp <> True Then
  351. globalPopFailure MSG_FILENOTFOUND & Replace(STR_SYS32PATH,":","") & "wbem\mofcomp.exe",True
  352. Else
  353. If foundMof <> True Then
  354. globalPopFailure MSG_FILENOTFOUND & Replace(STR_SYS32PATH,":","") & "wbem\osppwmi.mof",True
  355. End If
  356. End If
  357.  
  358. End Function
  359. '////////////////////////////////////////////////////////////////////////////////////////
  360. '////////////////////////////////////////////////////////////////////////////////////////
  361. Function pProcessing()
  362.  
  363. WScript.Echo MSG_PROCESSING
  364. WScript.Echo MSG_SEPERATE
  365.  
  366. End Function
  367. '////////////////////////////////////////////////////////////////////////////////////////
  368. '////////////////////////////////////////////////////////////////////////////////////////
  369. Function getSlui()
  370.  
  371. For Each Drv In objFSO.Drives
  372. If Drv.DriveType=2 Then
  373. If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & "slui.exe") Then
  374. strSluiPath = Drv.DriveLetter & STR_SYS32PATH & "slui.exe"
  375. foundSlUi = True
  376. Exit For
  377. End If
  378. End If
  379. Next
  380.  
  381. End Function
  382. '////////////////////////////////////////////////////////////////////////////////////////
  383. '////////////////////////////////////////////////////////////////////////////////////////
  384. ' Returns the encoding for a givven file.
  385. ' Possible return values: ascii, unicode, unicodeFFFE (big-endian), utf-8
  386. Function GetFileEncoding(strFileName)
  387. Dim strData
  388. Dim strEncoding
  389.  
  390. Set oStream = CreateObject("ADODB.Stream")
  391.  
  392. oStream.Type = 1 'adTypeBinary
  393. oStream.Open
  394. oStream.LoadFromFile(strFileName)
  395.  
  396. ' Default encoding is ascii
  397. strEncoding = "ascii"
  398.  
  399. strData = BinaryToString(oStream.Read(2))
  400.  
  401. ' Check for little endian (x86) unicode preamble
  402. If (Len(strData) = 2) and strData = (Chr(255) + Chr(254)) Then
  403. strEncoding = "unicode"
  404. Else
  405. oStream.Position = 0
  406. strData = BinaryToString(oStream.Read(3))
  407.  
  408. ' Check for utf-8 preamble
  409. If (Len(strData) >= 3) and strData = (Chr(239) + Chr(187) + Chr(191)) Then
  410. strEncoding = "utf-8"
  411. End If
  412. End If
  413.  
  414. oStream.Close
  415.  
  416. GetFileEncoding = strEncoding
  417.  
  418. End Function
  419. '////////////////////////////////////////////////////////////////////////////////////////
  420. '////////////////////////////////////////////////////////////////////////////////////////
  421. ' Converts binary data (VT_UI1 | VT_ARRAY) to a string (BSTR)
  422. Function BinaryToString(dataBinary)
  423. Dim i
  424. Dim str
  425.  
  426. For i = 1 To LenB(dataBinary)
  427. str = str & Chr(AscB(MidB(dataBinary, i, 1)))
  428. Next
  429.  
  430. BinaryToString = str
  431.  
  432. End Function
  433. '////////////////////////////////////////////////////////////////////////////////////////
  434. '////////////////////////////////////////////////////////////////////////////////////////
  435. ' Returns string containing the whole text file data.
  436. ' Supports ascii, unicode (little-endian) and utf-8 encoding.
  437. Function ReadAllTextFile(strFileName)
  438. Dim strData
  439. Set oStream = CreateObject("ADODB.Stream")
  440.  
  441. oStream.Type = 2 'adTypeText
  442. oStream.Open
  443. oStream.Charset = GetFileEncoding(strFileName)
  444. oStream.LoadFromFile(strFileName)
  445.  
  446. strData = oStream.ReadText(-1) 'adReadAll
  447.  
  448. oStream.Close
  449.  
  450. ReadAllTextFile = strData
  451.  
  452. End Function
  453. '////////////////////////////////////////////////////////////////////////////////////////
  454. '////////////////////////////////////////////////////////////////////////////////////////
  455. Function sppErrHandle(strCommand)
  456.  
  457. globalErr = Hex(Err.Number)
  458.  
  459. Select Case Err.Number
  460. Case 0
  461. 'Success
  462. Select Case strCommand
  463. Case "/act","/tokact"
  464. WScript.Echo MSG_ACTSUCCESS
  465. Case "/inpkey"
  466. WScript.Echo MSG_KEYINSTALLSUCCESS
  467. quitExit()
  468. Case "/inslic"
  469. WScript.Echo MSG_INSTALLLICSUCCESS
  470. quitExit()
  471. Case "/ckms-domain","/skms-domain","/actype","/sethst","/setprt","/remhst","/stokflag","/ctokflag","/cachst"
  472. WScript.Echo MSG_SUCCESS
  473. quitExit()
  474. Case "/rtokil"
  475. WScript.Echo MSG_REMILID & UCase(strValue)
  476. quitExit()
  477. Case "/unpkey"
  478. WScript.Echo MSG_UNINSTALLKEYSUCCESS
  479. quitExit()
  480. Case Else
  481. End Select
  482. Case Else
  483. verifyFileExists currentDir & "slerror.xml"
  484. getResource("err" & "0x" & globalErr)
  485. If globalResource = "" Then
  486. If Len(globalErr) <> "8" Then
  487. WScript.Echo MSG_ERRDESC & MSG_ERRUNKNOWN
  488. Else
  489. If foundSlUi = True Then
  490. WScript.Echo MSG_ERRCODE & "0x" & globalErr
  491. WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:0x" & globalErr
  492. Else
  493. WScript.Echo MSG_ERRCODE & "0x" & globalErr
  494. End If
  495. End If
  496. If strCommand <> "/act" Then
  497. quitExit()
  498. End If
  499. Else
  500. WScript.Echo MSG_ERRCODE & "0x" & globalErr
  501. Wscript.Echo MSG_ERRDESC & globalResource
  502. End If
  503.  
  504. If strCommand = "/dtokcerts" Or strCommand = "/ignore" Then
  505. quitExit()
  506. End If
  507. End Select
  508.  
  509. If globalErr = "C004F074" Then
  510. WScript.Echo "To view the activation event history run: cscript " & WScript.ScriptName & " /dhistorykms"
  511. End If
  512.  
  513. globalResource = ""
  514. globalErr = ""
  515. Err.Clear
  516.  
  517. End Function
  518. '////////////////////////////////////////////////////////////////////////////////////////
  519. '////////////////////////////////////////////////////////////////////////////////////////
  520. Function wmiErrHandle()
  521.  
  522. Select Case Err.Number
  523. Case 0
  524. 'Successs
  525. Case 424
  526. globalPopFailure MSG_ERRCODE & Err.Number & vbCr & MSG_ERRDESC & MSG_CREDENTIALFAILURE,True
  527. Case Else
  528. If Err.Description <> "" Then
  529. globalPopFailure MSG_ERRCODE & Err.Number & vbCr & MSG_ERRDESC & Err.Description,True
  530. Else
  531. globalPopFailure "An error occurred while making the connection." & vbCr & MSG_ERRCODE & Err.Number,True
  532. End If
  533. End Select
  534.  
  535. End Function
  536. '////////////////////////////////////////////////////////////////////////////////////////
  537. '////////////////////////////////////////////////////////////////////////////////////////
  538. Function setRegValue(wmiObject,opsValue,strValueName)
  539.  
  540. On Error Resume Next
  541.  
  542. Err.Clear()
  543. If Win7 = True Then
  544. strKeyPath = REG_OSPP
  545. Else
  546. strKeyPath = REG_SPP
  547. End If
  548.  
  549. Select Case strValueName
  550. Case "UserOperations"
  551. wmiObject.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
  552. wmiObject.SetDWORDValue HKEY_LOCAL_MACHINE,_
  553. strKeyPath,strValueName,opsValue
  554. Case Else
  555. End Select
  556.  
  557. wmiErrHandle()
  558. WScript.Echo MSG_SUCCESS
  559. quitExit()
  560.  
  561. End Function
  562. '////////////////////////////////////////////////////////////////////////////////////////
  563. '////////////////////////////////////////////////////////////////////////////////////////
  564. Function getResource(resource)
  565.  
  566. On Error Resume Next
  567. Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
  568. xmlDoc.load(currentDir & "slerror.xml")
  569. Set ElemList = xmlDoc.getElementsByTagName(resource)
  570. resValue = ElemList.item(0).text
  571. globalResource = resValue
  572.  
  573. End Function
  574. '////////////////////////////////////////////////////////////////////////////////////////
  575. '////////////////////////////////////////////////////////////////////////////////////////
  576. Function globalPopSuccess(strSuccess,boolQuit)
  577.  
  578. If boolQuit = True Then
  579. WshShell.Popup strSuccess,,WScript.ScriptName, wshOK + VALUE_ICON_INFORMATION
  580. quitExit()
  581. Else
  582. WshShell.Popup strSuccess,,WScript.ScriptName, wshOK + VALUE_ICON_INFORMATION
  583. End If
  584.  
  585. End Function
  586. '////////////////////////////////////////////////////////////////////////////////////////
  587. '////////////////////////////////////////////////////////////////////////////////////////
  588. Function globalPopFailure(strFailure,boolQuit)
  589.  
  590. If boolQuit = True Then
  591. WshShell.Popup strFailure,,WScript.ScriptName, wshOK + VALUE_ICON_WARNING
  592. quitExit()
  593. Else
  594. WshShell.Popup strFailure,,WScript.ScriptName, wshOK + VALUE_ICON_WARNING
  595. End If
  596.  
  597. End Function
  598. '////////////////////////////////////////////////////////////////////////////////////////
  599. '////////////////////////////////////////////////////////////////////////////////////////
  600. Function connectWMI(strMachine,strUser,strPassword,ctype)
  601.  
  602. On Error Resume Next
  603.  
  604. If ctype = "" Then
  605. If strMachine = "" Or LCase(strMachine) = LCase(strLocal) Then
  606. Set objWMI = GetObject("winmgmts:" _
  607. & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
  608. Else
  609. If strUser = "" And strPassword = "" Then
  610. Set objWMI = GetObject("winmgmts:" _
  611. & "{impersonationLevel=impersonate}!\\" & strMachine & "\root\cimv2")
  612. Else
  613. Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
  614. Set objWMI = objSWbemLocator.ConnectServer _
  615. (strMachine, "\root\cimv2", strUser, strPassword)
  616. wmiErr = CStr(Hex(Err.Number))
  617. If Len(wmiErr) = "8" Then
  618. getDescription "0x" & wmiErr,"wmi"
  619. End If
  620. objWMI.Security_.ImpersonationLevel = 3
  621. End If
  622. End If
  623. Else
  624. If strUser <> "" Then
  625. globalPopFailure MSG_CREDENTIALERR,True
  626. End If
  627.  
  628. If strMachine = "" Or LCase(strMachine) = LCase(strLocal) Then
  629. Set objWMI1 = GetObject("winmgmts:" _
  630. & "{impersonationLevel=impersonate}!\\" & "." & "\root\default:StdRegProv")
  631.  
  632. Set objWMI = GetObject("winmgmts:" _
  633. & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
  634. Else
  635. Set objWMI1 = GetObject("winmgmts:" _
  636. & "{impersonationLevel=impersonate}!\\" & strMachine & "\root\default:StdRegProv")
  637.  
  638. Set objWMI = GetObject("winmgmts:" _
  639. & "{impersonationLevel=impersonate}!\\" & strMachine & "\root\cimv2")
  640. End If
  641. End If
  642.  
  643. wmiErrHandle()
  644. isWin7OS()
  645.  
  646. End Function
  647. '////////////////////////////////////////////////////////////////////////////////////////
  648. '////////////////////////////////////////////////////////////////////////////////////////
  649. Private Function TkaGetSigner()
  650.  
  651. On Error Resume Next
  652.  
  653. If Win7 = True Then
  654. Set TkaGetSigner = WScript.CreateObject("OSPPWMI.OSppWmiTokenActivationSigner")
  655. Else
  656. Set TkaGetSigner = WScript.CreateObject("SPPWMI.SppWmiTokenActivationSigner")
  657. End If
  658.  
  659. If Hex(Err.Number) = "80020009" Then
  660. globalPopFailure MSG_ERRCODE & "0x" & Hex(Err.Number) & vbCr & MSG_ERRDESC & Err.Description,True
  661. End If
  662.  
  663. End Function
  664. '////////////////////////////////////////////////////////////////////////////////////////
  665. '////////////////////////////////////////////////////////////////////////////////////////
  666. Function TkaPrintCertificate(strThumbprint)
  667.  
  668. arrParams = Split(strThumbprint, "|")
  669. WScript.Echo "Thumbprint: " & arrParams(0)
  670. WScript.Echo "Subject: " & arrParams(1)
  671. WScript.Echo "Issuer: " & arrParams(2)
  672. vf = FormatDateTime(CDate(arrParams(3)), vbShortDate)
  673. WScript.Echo "Valid From: " & vf
  674. vt = FormatDateTime(CDate(arrParams(4)), vbShortDate)
  675. WScript.Echo "Valid To: " & vt
  676. WScript.Echo MSG_SEPERATE
  677.  
  678. End Function
  679. '////////////////////////////////////////////////////////////////////////////////////////
  680. '////////////////////////////////////////////////////////////////////////////////////////
  681. Function ExecuteQuery(strSelect,strWhere,strClass)
  682.  
  683. Err.Clear
  684.  
  685. If strWhere = "" Then
  686. Set productinstances = objWMI.ExecQuery("SELECT " & strSelect & " FROM " & strClass)
  687. Else
  688. Set productinstances = objWMI.ExecQuery("SELECT " & strSelect & " FROM " & strClass & " WHERE " & strWhere)
  689. End If
  690.  
  691. sppErrHandle ""
  692.  
  693. End Function
  694. '////////////////////////////////////////////////////////////////////////////////////////
  695. '////////////////////////////////////////////////////////////////////////////////////////
  696. Function performLicAction(strCommand,strValue,strMachine)
  697.  
  698. On Error Resume Next
  699.  
  700. If strCommand = "/dhistorykms" Or strCommand = "/dhistoryacterr" Then
  701. verifyFileExists currentDir & "slerror.xml"
  702. If strCommand = "/dhistorykms" Then
  703. '12288 = KMS Activation event id
  704. eventCode = "12288"
  705. strSrcEvents = MSG_SEARCHEVENTSKMS
  706. strNoEvents = MSG_NOEVENTSSKMS
  707. Else
  708. '8200 = Internet Activation event id
  709. eventCode = "8200"
  710. strSrcEvents = MSG_SEARCHEVENTSRET
  711. strNoEvents = MSG_NOEVENTSRET
  712. End If
  713.  
  714. If strMachine <> "" Then
  715. WScript.Echo strSrcEvents & strMachine
  716. Else
  717. WScript.Echo strSrcEvents & strLocal
  718. End If
  719.  
  720. WScript.Echo "Event ID: " & eventCode
  721. WScript.Echo vbCr
  722. Set objEvents = objWMI.ExecQuery _
  723. ("Select * from Win32_NTLogEvent Where Logfile = 'Application' and " _
  724. & "EventCode = '" & eventCode & "'")
  725. If objEvents.Count > 0 Then
  726. For each objEvent in objEvents
  727. If strCommand = "/dhistoryacterr" Then
  728. i = i + 1
  729. dtmEventDate = objEvent.TimeWritten
  730. strTimeWritten = WMIDateStringToDate(dtmEventDate)
  731. WScript.Echo "Coordinated Universal Time Written: " & strTimeWritten
  732. strReplCrs = Replace(objEvent.Message,vbCrLf,"")
  733. WScript.Echo "MESSAGE: " & strReplCrs
  734. strhr10 = Right(strReplCrs,10)
  735. getResource("err" & strhr10)
  736. If globalResource = "" Then
  737. If foundSlUi = True Then
  738. WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:" & strhr10
  739. Else
  740. WScript.Echo MSG_ERRDESC & "Not available."
  741. End If
  742. Else
  743. Wscript.Echo MSG_ERRDESC & globalResource
  744. End If
  745. WScript.Echo MSG_SEPERATE
  746. Else
  747. strhr10 = Mid(objEvent.Message,90,10)
  748. strReplCrs = Replace(objEvent.Message,vbCrLf,"")
  749. If Right(strReplCrs,2) = " 5" Then
  750. strReplStrs = Replace(strReplCrs,"The client has sent an activation request to the key management service machine.Info:","")
  751. dtmEventDate = objEvent.TimeWritten
  752. strTimeWritten = WMIDateStringToDate(dtmEventDate)
  753. WScript.Echo "Coordinated Universal Time Written: " & strTimeWritten
  754. intColon = InStr(strReplStrs,":")
  755. strErrHost = Left(strReplStrs,intColon)
  756. strErrHost = Trim(strErrHost)
  757. strErrHost = Replace(strErrHost,":","")
  758. WScript.Echo "ERROR/HOST: " & strErrHost
  759. Select Case strhr10
  760. Case "0x00000000"
  761. WScript.Echo MSG_ERRDESC & "N/A"
  762. Case Else
  763. getResource("err" & strhr10)
  764. If globalResource = "" Then
  765. If foundSlUi = True Then
  766. WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:" & strhr10
  767. Else
  768. WScript.Echo MSG_ERRDESC & "Not available."
  769. End If
  770. Else
  771. Wscript.Echo MSG_ERRDESC & globalResource
  772. End If
  773. End Select
  774. WScript.Echo MSG_SEPERATE
  775. End If
  776. End If
  777. Next
  778. Else
  779. WScript.Echo MSG_SEPERATE
  780. If strMachine <> "" Then
  781. WScript.Echo strNoEvents & strMachine
  782. Else
  783. WScript.Echo strNoEvents & strLocal
  784. End If
  785. WScript.Echo MSG_SEPERATE
  786. End If
  787. quitExit()
  788. End If
  789.  
  790. 'Verify osppsvc service is installed for win7 case
  791. If Win7 = True Then
  792. Set colListOfServices = objWMI.ExecQuery _
  793. ("Select * from Win32_Service ")
  794. For Each objService in colListOfServices
  795. If objService.Name = "osppsvc" Then
  796. installed = True
  797. Exit For
  798. End If
  799. Next
  800.  
  801. If installed <> True Then
  802. globalPopFailure MSG_OSPPSVC_NOINSTALL,True
  803. End If
  804. End If
  805.  
  806. Select Case strCommand
  807. 'The following operations are performed @ a service level
  808. Case "/inpkey", "/dcmid", "/inslic", "/cachst", "/stokflag", "/ctokflag", "/dstatus", "/dstatusall"
  809. If Win7 = True Then
  810. For Each objService in objWMI.InstancesOf("OfficeSoftwareProtectionService")
  811. Set objOspp = objService
  812. Exit For
  813. Next
  814. Else
  815. 'Win8 and beyond
  816. For Each objService in objWMI.InstancesOf("SoftwareLicensingService")
  817. Set objOspp = objService
  818. Exit For
  819. Next
  820. End If
  821. Case Else
  822. End Select
  823.  
  824. sppErrHandle ""
  825.  
  826. If strCommand = "/inpkey" Then
  827. i = i + 1
  828. Err.Clear
  829. objOspp.InstallProductKey(strValue)
  830. sppErrHandle(strCommand)
  831. ElseIf strCommand = "/cachst" Then
  832. i = i + 1
  833. If strValue = "true" Then
  834. objOspp.DisableKeyManagementServiceHostCaching(False)
  835. sppErrHandle(strCommand)
  836. ElseIf strValue = "false" Then
  837. objOspp.DisableKeyManagementServiceHostCaching(True)
  838. sppErrHandle(strCommand)
  839. Else
  840. globalPopFailure MSG_UNSUPPORTED & " A TRUE or FALSE value is required for: " & strCommand,True
  841. End If
  842. ElseIf strCommand = "/dcmid" Then
  843. If objOspp.ClientMachineID <> "" Or objOspp.ClientMachineID <> Null Then
  844. WScript.Echo MSG_CMID & objOspp.ClientMachineID
  845. Else
  846. WScript.Echo MSG_CMID & "Not found."
  847. End If
  848. quitExit()
  849. ElseIf strCommand = "/inslic" Then
  850. i = i + 1
  851. If Right(strValue,7) = ".xrm-ms" Then
  852. verifyFileExists strValue
  853. WScript.Echo MSG_INSTALLLICENSE & strValue
  854. Else
  855. globalPopFailure MSG_UNRECOGFILE,True
  856. End If
  857. LicenseData = ReadAllTextFile(strValue)
  858. objOSpp.InstallLicense(LicenseData)
  859. SppErrHandle(strCommand)
  860. ElseIf strCommand = "/stokflag" Then
  861. i = i + 1
  862. If Win7 = True Then
  863. objOspp.DisableKeyManagementServiceActivation(True)
  864. sppErrHandle(strCommand)
  865. Else
  866. 'Unsupported - osppsvc only supports this.
  867. globalPopFailure MSG_UNSUPPORTEDOPEROS7 & vbCr & strCommand,True
  868. End If
  869. ElseIf strCommand = "/ctokflag" Then
  870. i = i + 1
  871. If Win7 = True Then
  872. objOspp.DisableKeyManagementServiceActivation(False)
  873. SppErrHandle(strCommand)
  874. Else
  875. 'Unsupported - osppsvc only supports this.
  876. globalPopFailure MSG_UNSUPPORTEDOPEROS7 & vbCr & strCommand,True
  877. End If
  878. ElseIf strCommand = "/dtokils" Then
  879. Err.Clear
  880. Set objWmiDate = CreateObject("WBemScripting.SWbemDateTime")
  881. ExecuteQuery "ILID, ILVID, AuthorizationStatus, ExpirationDate, Description, AdditionalInfo","",tokenClass
  882.  
  883. For Each instance in productinstances
  884. sppErrHandle ""
  885. i = i + 1
  886. WScript.Echo "License ID (ILID): " & instance.ILID
  887. WScript.Echo "Version ID (ILvID): " & instance.ILVID
  888. If Not IsNull(instance.ExpirationDate) Then
  889. objWmiDate.Value = instance.ExpirationDate
  890. If (objWmiDate.GetFileTime(false) <> 0) Then
  891. WScript.Echo "Expiry Date: " & objWmiDate.GetVarDate
  892. End If
  893. End If
  894. If Not IsNull(instance.AdditionalInfo) Then
  895. WScript.Echo "Additional Info: " & instance.AdditionalInfo
  896. End If
  897. If Not IsNull(instance.AuthorizationStatus) And instance.AuthorizationStatus <> 0 Then
  898. globalErr = CStr(Hex(instance.AuthorizationStatus))
  899. WScript.Echo MSG_AUTHERR & globalErr
  900. quitExit()
  901. Else
  902. WScript.Echo "Description: " & instance.Description
  903. End If
  904. WScript.Echo MSG_SEPERATE
  905. Next
  906. If i = 0 Then
  907. WScript.Echo MSG_NOLICENSEFOUND
  908. End If
  909. quitExit()
  910. ElseIf strCommand = "/rtokil" Then
  911. Err.Clear
  912. ExecuteQuery "ILID, ID","",tokenClass
  913.  
  914. For Each instance in productinstances
  915. sppErrHandle ""
  916. i = i + 1
  917. If LCase(strValue) = LCase(instance.ILID) Then
  918. instance.Uninstall
  919. SppErrHandle(strCommand)
  920. Else
  921. WScript.Echo MSG_NOTFOUNDILID & strValue & " Run /dtokils to display the ILID for installed licenses."
  922. End If
  923. Next
  924. If i = 0 Then
  925. WScript.Echo MSG_NOLICENSEFOUND
  926. End If
  927. quitExit()
  928. ElseIf strCommand = "/dtokcerts" Then
  929. Err.Clear
  930. Set objSigner = TkaGetSigner()
  931. sppErrHandle(strCommand)
  932. ExecuteQuery "ID, Name, ApplicationId, PartialProductKey, Description, LicenseIsAddon ","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL " & "AND LicenseIsAddon = FALSE",productClass
  933.  
  934. For each instance in productinstances
  935. i = i + 1
  936. sppErrHandle ""
  937. iRet = instance.GetTokenActivationGrants(arrGrants)
  938. If Err.Number = 0 Then
  939. arrThumbprints = objSigner.GetCertificateThumbprints(arrGrants)
  940. If Err.Number = 0 Then
  941. For Each strThumbprint in arrThumbprints
  942. TkaPrintCertificate strThumbprint
  943. Next
  944. Else
  945. sppErrHandle ""
  946. End If
  947. Else
  948. sppErrHandle ""
  949. End If
  950. WScript.Echo MSG_SEPERATE
  951. Err.Clear
  952. Next
  953. ElseIf strCommand = "/tokact" Then
  954. Err.Clear
  955. Set objSigner = TkaGetSigner()
  956. sppErrHandle "/ignore"
  957. pos1 = InStr(strValue,":")
  958. If pos1 = 0 Then
  959. 'PIN not passed
  960. strThumbprint = strValue
  961. Else
  962. 'PIN passed
  963. strThumbprint = Left(strValue,pos1 - 1)
  964. strPin = Replace(strValue,strThumbprint & ":","")
  965. End If
  966.  
  967. ExecuteQuery "ID, Name, ApplicationId, PartialProductKey, Description, LicenseIsAddon ","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL " & "AND LicenseIsAddon = FALSE",productClass
  968.  
  969. For each instance in productinstances
  970. i = i + 1
  971. sppErrHandle ""
  972. WScript.Echo MSG_TOKACTATTEMPT
  973. WScript.Echo MSG_SKUID & instance.ID
  974. WScript.Echo MSG_LICENSENAME & instance.Name
  975. WScript.Echo MSG_DESCRIPTION & instance.Description
  976. WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey
  977. iRet = instance.GenerateTokenActivationChallenge(strChallenge)
  978. If Err.Number = 0 Then
  979. strAuthInfo1 = objSigner.Sign(strChallenge, strThumbprint, strPin, strAuthInfo2)
  980. If Err.Number = 0 Then
  981. iRet = instance.DepositTokenActivationResponse(strChallenge, strAuthInfo1, strAuthInfo2)
  982. SppErrHandle(strCommand)
  983. Else
  984. sppErrHandle ""
  985. End If
  986. Else
  987. sppErrHandle ""
  988. End If
  989. WScript.Echo MSG_SEPERATE
  990. Next
  991. Else
  992. Err.Clear
  993. If strCommand = "/dstatus" Or strCommand = "/dstatusall" Then
  994. If Win7 = True Then
  995. ExecuteQuery "ID, ApplicationId, EvaluationEndDate, PartialProductKey, Description, Name, LicenseStatus, LicenseStatusReason, ProductKeyID, GracePeriodRemaining, DiscoveredKeyManagementServiceMachineName, DiscoveredKeyManagementServiceMachinePort, VLActivationInterval, VLRenewalInterval, KeyManagementServiceMachine, KeyManagementServicePort","ApplicationId = '" & OfficeAppId & "' ",productClass
  996. Else
  997. 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
  998. End If
  999. ElseIf strCommand = "/act" Then
  1000. ExecuteQuery "ID, ApplicationId, PartialProductKey, Description, Name","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL ",productClass
  1001. ElseIf strCommand = "/unpkey" Then
  1002. ExecuteQuery "ID, ApplicationId, Description, PartialProductKey, Name, ProductKeyID","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL ",productClass
  1003.  
  1004. ElseIf strCommand = "/dinstid" Or strCommand = "/actcid" Then
  1005. ExecuteQuery "ID, ApplicationId, Description, PartialProductKey, Name, OfflineInstallationId","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL ",productClass
  1006. ElseIf strCommand = "/actype" Or strCommand = "/skms-domain" Or strCommand = "/ckms-domain" Then
  1007. If Win7 = True Then
  1008. 'Unsupported - sppsvc only supports this.
  1009. globalPopFailure MSG_UNSUPPORTEDOPEROS8 & vbCr & strCommand,True
  1010. Else
  1011. ExecuteQuery "ID, Description, PartialProductKey, ApplicationId ","ApplicationId = '" & OfficeAppId & "' ",productClass
  1012. End If
  1013. ElseIf strCommand = "/sethst" Or strCommand = "/setprt" Or strCommand = "/remhst" Then
  1014. ExecuteQuery "ID, Description, PartialProductKey, ApplicationId ","ApplicationId = '" & OfficeAppId & "' ",productClass
  1015. End If
  1016.  
  1017. For Each instance in productinstances
  1018. sppErrHandle ""
  1019. If (LCase(instance.ApplicationId) = OfficeAppId) Then
  1020. If instance.PartialProductKey <> "" Then
  1021. i = i + 1
  1022. End If
  1023. intIsKms = InStr(UCase(instance.Description),"KMS")
  1024. If intIsKms <> 0 Then
  1025. kmsCounter = kmsCounter + 1
  1026. End If
  1027. Select Case strCommand
  1028. Case "/actype"
  1029. Select Case strValue
  1030. Case "0","1","2","3"
  1031. Case Else
  1032. globalPopFailure MSG_UNSUPPORTED & " A value of" & vbCr & _
  1033. "0 (for all)" & vbCr & "1 (for AD)" & vbCr & "2 (for KMS" & vbCr & _
  1034. "3 (for Token)" & vbCr & "Is required for: " & strCommand,True
  1035. End Select
  1036. If intIsKms <> 0 Then
  1037. If strValue <> 0 Then
  1038. instance.SetVLActivationTypeEnabled(strValue)
  1039. Else
  1040. instance.ClearVLActivationTypeEnabled()
  1041. End If
  1042. End If
  1043. sppErrHandle ""
  1044. Case "/skms-domain"
  1045. If intIsKms <> 0 Then
  1046. instance.SetKeyManagementServiceLookupDomain(strValue)
  1047. End If
  1048. sppErrHandle ""
  1049. Case "/ckms-domain"
  1050. If intIsKms <> 0 Then
  1051. instance.ClearKeyManagementServiceLookupDomain()
  1052. End If
  1053. sppErrHandle ""
  1054. Case "/sethst"
  1055. If intIsKms <> 0 Then
  1056. instance.SetKeyManagementServiceMachine(strValue)
  1057. End If
  1058. sppErrHandle ""
  1059. Case "/setprt"
  1060. If intIsKms <> 0 Then
  1061. instance.SetKeyManagementServicePort(strValue)
  1062. End If
  1063. sppErrHandle ""
  1064. Case "/remhst"
  1065. If intIsKms <> 0 Then
  1066. instance.ClearKeyManagementServiceMachine()
  1067. sppErrHandle ""
  1068. instance.ClearKeyManagementServicePort()
  1069. sppErrHandle ""
  1070. End If
  1071. Case "/act"
  1072. WScript.Echo MSG_ACTATTEMPT
  1073. WScript.Echo MSG_SKUID & instance.ID
  1074. WScript.Echo MSG_LICENSENAME & instance.Name
  1075. WScript.Echo MSG_DESCRIPTION & instance.Description
  1076. WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey
  1077. instance.Activate
  1078. SppErrHandle(strCommand)
  1079. WScript.Echo MSG_SEPERATE
  1080. Case "/unpkey"
  1081. If Len(strValue) <> "5" Then
  1082. globalPopFailure MSG_ERRPARTIALKEY,True
  1083. End If
  1084. If UCase(strValue) = instance.PartialProductKey Then
  1085. y = y + 1
  1086. WScript.Echo MSG_UNINSTALLKEY & instance.Name
  1087. instance.UninstallProductKey(instance.ProductKeyID)
  1088. SppErrHandle(strCommand)
  1089. End If
  1090. Case "/dinstid"
  1091. WScript.Echo "Installation ID for: " & instance.Name & ": " & instance.OfflineInstallationId
  1092. WScript.Echo MSG_SEPERATE
  1093. Case "/actcid"
  1094. instance.DepositOfflineConfirmationId instance.OfflineInstallationId, strValue
  1095. If Err.Number = 0 Then
  1096. If telsuccess <> True Then
  1097. WScript.Echo MSG_LICENSENAME & instance.Name
  1098. WScript.Echo MSG_OFFLINEACTSUCCESS
  1099. telsuccess = True
  1100. End If
  1101. Else
  1102. WScript.Echo MSG_LICENSENAME & instance.Name
  1103. sppErrHandle ""
  1104. End If
  1105. WScript.Echo MSG_SEPERATE
  1106. Case "/dstatus", "/dstatusall"
  1107. getInstalled = False
  1108. verifyFileExists currentDir & "slerror.xml"
  1109. licSr = Hex(instance.LicenseStatusReason)
  1110. If strCommand = "/dstatusall" Then
  1111. getInstalled = True
  1112. WScript.Echo MSG_SKUID & instance.ID
  1113. WScript.Echo MSG_LICENSENAME & instance.Name
  1114. WScript.Echo MSG_DESCRIPTION & instance.Description
  1115. Else
  1116. If instance.ProductKeyID <> "" Then
  1117. getInstalled = True
  1118.  
  1119. WScript.Echo MSG_SKUID & instance.ID
  1120. WScript.Echo MSG_LICENSENAME & instance.Name
  1121. WScript.Echo MSG_DESCRIPTION & instance.Description
  1122. 'EvaluationEndDate always returns a value. When an expiry date is not defined "1/1/1601" is returned.
  1123. 'So avoid displaying this against RTM licenses as that date = no expiry defined.
  1124. If instance.EvaluationEndDate <> "" Then
  1125. Set objDate = CreateObject("WBemScripting.SWbemDateTime")
  1126. objDate.Value = instance.EvaluationEndDate
  1127. If objDate.GetVarDate() <> "1/1/1601" Then
  1128. WScript.Echo MSG_LICEXPIRY & objDate.GetVarDate()
  1129. End If
  1130. Set objDate = Nothing
  1131. End If
  1132. End If
  1133. End If
  1134.  
  1135. If getInstalled = True Then
  1136. Select Case instance.LicenseStatus
  1137. Case 0
  1138. WScript.Echo MSG_LICSTATUS & MSG_UNLICENSED
  1139. Case 1
  1140. WScript.Echo MSG_LICSTATUS & MSG_LICENSED
  1141. Case 2
  1142. WScript.Echo MSG_LICSTATUS & MSG_OOBGRACE
  1143. Case 3
  1144. WScript.Echo MSG_LICSTATUS & MSG_OOTGRACE
  1145. Case 4
  1146. WScript.Echo MSG_LICSTATUS & MSG_NONGENGRACE
  1147. Case 5
  1148. WScript.Echo MSG_LICSTATUS & MSG_NOTIFICATION
  1149. Case 6
  1150. WScript.Echo MSG_LICSTATUS & MSG_EXTENDEDGRACE
  1151. Case Else
  1152. WScript.Echo MSG_LICSTATUS & MSG_LICUNKNOWN
  1153. End Select
  1154.  
  1155. If licSr <> "0" Then
  1156. If instance.LicenseStatus <> 1 Then
  1157. WScript.Echo MSG_ERRCODE & "0x" & licSr
  1158. Else
  1159. WScript.Echo MSG_ERRCODE & "0x" & licSr & MSG_INFO_ONLY
  1160. End If
  1161. getResource("err" & "0x" & licSr)
  1162. If globalResource = "" Then
  1163. If foundSlUi <> True Then
  1164. WScript.Echo MSG_ERRDESC & "Not available."
  1165. Else
  1166. WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:0x" & licSr
  1167. End if
  1168. Else
  1169. WScript.Echo MSG_ERRDESC & globalResource
  1170. End If
  1171. End If
  1172.  
  1173. If instance.GracePeriodRemaining <> 0 Then
  1174. dGrace = instance.GracePeriodRemaining / 60 / 24
  1175. rndDown = Int(dGrace)
  1176. WScript.Echo MSG_REMAINGRACE & rndDown & " days " & " (" & instance.GracePeriodRemaining & " minute(s) before expiring" & ")"
  1177. End If
  1178.  
  1179. If instance.PartialProductKey <> "" Then
  1180. WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey
  1181. 'Display additional volume info for KMS licenses
  1182. If intIsKms <> 0 Then
  1183. 'Display activation type set (Win8+).
  1184. If Win7 <> True Then
  1185. Select Case instance.VLActivationTypeEnabled
  1186. Case 1
  1187. WScript.Echo MSG_VLActivationType & "AD"
  1188. Case 2
  1189. WScript.Echo MSG_VLActivationType & "KMS"
  1190. Case 3
  1191. WScript.Echo MSG_VLActivationType & "Token"
  1192. Case Else
  1193. WScript.Echo MSG_VLActivationType & "ALL"
  1194. End Select
  1195.  
  1196. 'Check to see if last activated via AD- display object info (Win8+).
  1197. If instance.VLActivationType = 1 Then
  1198. isAdActivated = True
  1199. WScript.Echo MSG_Act_Recent + "AD"
  1200. WScript.Echo vbTab & MSG_ADInfoAOName & instance.ADActivationObjectName
  1201. WScript.Echo vbTab & MSG_ADInfoAODN & instance.ADActivationObjectDN
  1202. WScript.Echo vbTab & MSG_ADInfoExtendedPid & instance.ADActivationCsvlkPid
  1203. WScript.Echo vbTab & MSG_ADInfoActID & instance.ADActivationCsvlkSkuId
  1204. End If
  1205. End If
  1206.  
  1207. If isAdActivated = False Then
  1208. strKms = instance.DiscoveredKeyManagementServiceMachineName
  1209. strPort = instance.DiscoveredKeyManagementServiceMachinePort
  1210.  
  1211. If IsNull(strKms) Or (strKms = "") Or IsNull(strPort) Or (strPort = 0) Then
  1212. WScript.Echo vbTab & MSG_KMS_DNS_ERR
  1213. Else
  1214. WScript.Echo vbTab & MSG_KMS_DNS & strKMS & ":" & strPort
  1215. End If
  1216.  
  1217. 'Check to see if registry override is defined
  1218. strKms = instance.KeyManagementServiceMachine
  1219. If strKms <> "" And Not IsNull(strKms) Then
  1220. strPort = instance.KeyManagementServicePort
  1221. If (strPort = 0) Then
  1222. strPort = MSG_DEFAULT_PORT
  1223. End If
  1224. WScript.Echo vbTab & MSG_HOST_REG_OVERRIDE & strKms & ":" & strPort
  1225. End If
  1226.  
  1227. WScript.Echo vbTab & MSG_ACTIVATION_INTERVAL & instance.VLActivationInterval & " minutes"
  1228. WScript.Echo vbTab & MSG_RENEWAL_INTERVAL & instance.VLRenewalInterval & " minutes"
  1229.  
  1230. If (objOspp.KeyManagementServiceHostCaching = True) Then
  1231. WScript.Echo vbTab & MSG_HOST_CACHING & "Enabled"
  1232. Else
  1233. WScript.Echo vbTab & MSG_HOST_CACHING & "Disabled"
  1234. End If
  1235.  
  1236. If Win7 <> True Then
  1237. If instance.KeyManagementServiceLookupDomain <> "" Then
  1238. WScript.Echo vbTab & MSG_KMSLOOKUP & instance.KeyManagementServiceLookupDomain
  1239. End If
  1240. End If
  1241. End If
  1242. End If
  1243. End If
  1244. WScript.Echo MSG_SEPERATE
  1245. End If
  1246. Case Else
  1247. End Select
  1248. End If
  1249. Next
  1250. End If
  1251.  
  1252. Select Case strCommand
  1253. Case "/unpkey"
  1254. If y = 0 Then
  1255. WScript.Echo MSG_KEYNOTFOUND
  1256. quitExit()
  1257. End If
  1258. Case "/ckms-domain","/skms-domain","/actype","/sethst","/setprt","/remhst"
  1259. If kmsCounter = 0 Then
  1260. WScript.Echo MSG_NOKMSLICS
  1261. quitExit()
  1262. Else
  1263. sppErrHandle(strCommand)
  1264. End If
  1265. Case Else
  1266. End Select
  1267.  
  1268. If i = 0 Then
  1269. WScript.Echo MSG_NOKEYSINSTALLED
  1270. WScript.Echo MSG_SEPERATE
  1271. End If
  1272. quitExit()
  1273.  
  1274. End Function
  1275. '////////////////////////////////////////////////////////////////////////////////////////
  1276. '////////////////////////////////////////////////////////////////////////////////////////
  1277. Function performRegAction(strCommand)
  1278.  
  1279. On Error Resume Next
  1280.  
  1281. If Win7 = True Then
  1282. Set colListOfServices = objWMI.ExecQuery _
  1283. ("Select * from Win32_Service ")
  1284. For Each objService in colListOfServices
  1285. If objService.Name = "osppsvc" Then
  1286. installed = True
  1287. Exit For
  1288. End If
  1289. Next
  1290.  
  1291. If installed <> True Then
  1292. globalPopFailure MSG_OSPPSVC_NOINSTALL,True
  1293. End If
  1294. checkRegRights objWMI1,REG_OSPP
  1295. Else
  1296. checkRegRights objWMI1,REG_SPP
  1297. End If
  1298.  
  1299. Select Case strCommand
  1300. Case "/puserops"
  1301. setRegValue objWMI1,"1","UserOperations"
  1302. Case "/duserops"
  1303. setRegValue objWMI1,"0","UserOperations"
  1304. End Select
  1305.  
  1306. End Function
  1307. '////////////////////////////////////////////////////////////////////////////////////////
  1308. '////////////////////////////////////////////////////////////////////////////////////////
  1309. Function performServiceAction(strCommand)
  1310.  
  1311. On Error Resume Next
  1312.  
  1313. Set colListOfServices = objWMI.ExecQuery _
  1314. ("Select * from Win32_Service ")
  1315. For Each objService in colListOfServices
  1316. If objService.Name = "osppsvc" Then
  1317. installed = True
  1318. Exit For
  1319. End If
  1320. Next
  1321.  
  1322. If installed <> True Then
  1323. globalPopFailure MSG_OSPPSVC_NOINSTALL,True
  1324. End If
  1325.  
  1326. Set objService = Nothing
  1327. Set colListOfServices = Nothing
  1328.  
  1329. If strCommand = "/osppsvcauto" Then
  1330. Set colListOfServices = objWMI.ExecQuery _
  1331. ("Select * from Win32_Service where StartMode = 'Manual' or StartMode = 'Disabled'")
  1332. For Each objService in colListOfServices
  1333. If LCase(objService.Name) = "osppsvc" Then
  1334. foundOsppNonAuto = True
  1335. objService.Change , , , , "Automatic"
  1336. WScript.Sleep(15000)
  1337. Exit For
  1338. End If
  1339. Next
  1340. If foundOsppNonAuto <> True Then
  1341. WScript.Echo "Service startup type already set to automatic: Office Software Protection Platform"
  1342. quitExit()
  1343. End If
  1344.  
  1345. Set objService = Nothing
  1346. Set colListOfServices = Nothing
  1347. Set colListOfServices = objWMI.ExecQuery _
  1348. ("Select * from Win32_Service where StartMode = 'Auto'")
  1349. For Each objService in colListOfServices
  1350. If LCase(objService.Name) = "osppsvc" Then
  1351. foundOsppAuto = True
  1352. WScript.Echo "Successfully set service startup to automatic:" & objService.DisplayName
  1353. quitExit()
  1354. End If
  1355. Next
  1356.  
  1357. If foundOsppAuto <> True Then
  1358. WScript.Echo "Unsuccessful setting service startup to automatic. " & MSG_ISCMD_ELEVATED
  1359. quitExit()
  1360. End If
  1361. Else
  1362. Set colListOfServices = objWMI.ExecQuery _
  1363. ("Select * from Win32_Service ")
  1364. For Each objService in colListOfServices
  1365. If LCase(objService.Name) = "osppsvc" Then
  1366. Select Case LCase(objService.State)
  1367. Case "running"
  1368. objService.StopService()
  1369. WScript.Sleep(15000)
  1370. objService.StartService()
  1371. WScript.Sleep(15000)
  1372. Case Else
  1373. objService.StartService()
  1374. WScript.Sleep(15000)
  1375. End Select
  1376. Exit For
  1377. End If
  1378. Next
  1379.  
  1380. Set objService = Nothing
  1381. Set colListOfServices = Nothing
  1382. Set colListOfServices = objWMI.ExecQuery _
  1383. ("Select * from Win32_Service ")
  1384. For Each objService in colListOfServices
  1385. If LCase(objService.Name) = "osppsvc" Then
  1386. If LCase(objService.State) = "running" Then
  1387. WScript.Echo "Successfully restarted: " & objService.DisplayName
  1388. quitExit()
  1389. Else
  1390. WScript.Echo "Unsuccessful restart: " & objService.DisplayName & ". Status: " _
  1391. & objService.State & ". " & MSG_ISCMD_ELEVATED
  1392. quitExit()
  1393. End If
  1394. Exit For
  1395. End If
  1396. Next
  1397. End If
  1398.  
  1399. End Function
  1400. '////////////////////////////////////////////////////////////////////////////////////////
  1401. '////////////////////////////////////////////////////////////////////////////////////////
  1402. Function reARM(skuid)
  1403.  
  1404. progFiles = WshShell.ExpandEnvironmentStrings("%ProgramFiles%")
  1405.  
  1406. If objFSO.FileExists(progFiles & STR_OSPPREARMPATH) Then
  1407. rearmPath = progFiles & STR_OSPPREARMPATH
  1408. ElseIf objFSO.FileExists(progFiles & STR_OSPPREARMPATH_DEBUG) Then
  1409. rearmPath = progFiles & STR_OSPPREARMPATH_DEBUG
  1410. Else
  1411. progFilesX86 = WshShell.ExpandEnvironmentStrings("%ProgramFiles(x86)%")
  1412. If objFSO.FileExists(progFilesX86 & STR_OSPPREARMPATH) Then
  1413. rearmPath = progFilesX86 & STR_OSPPREARMPATH
  1414. ElseIf objFSO.FileExists(progFilesX86 & STR_OSPPREARMPATH_DEBUG) Then
  1415. rearmPath = progFilesX86 & STR_OSPPREARMPATH_DEBUG
  1416. Else
  1417. WScript.Echo MSG_FILENOTFOUND & "OSPPREARM.EXE"
  1418. quitExit()
  1419. End If
  1420. End If
  1421.  
  1422. If skuid = "" Then
  1423. Set objScriptExec = WshShell.Exec (rearmPath)
  1424. Else
  1425. Set objScriptExec = WshShell.Exec (rearmPath & " " & skuid)
  1426. End If
  1427.  
  1428. readOut = objScriptExec.StdOut.ReadAll
  1429. WScript.Echo readOut
  1430.  
  1431. End Function
  1432. '////////////////////////////////////////////////////////////////////////////////////////
  1433. '////////////////////////////////////////////////////////////////////////////////////////
  1434. Function isWin7OS()
  1435.  
  1436. Set colOperatingSystems = objWMI.ExecQuery _
  1437. ("Select * from Win32_OperatingSystem")
  1438. For Each objOperatingSystem in colOperatingSystems
  1439. Ver = Split(objOperatingSystem.Version, ".", -1, 1)
  1440. 'Win7
  1441. If (Ver(0) = "6" And Ver(1) = "1" And objOperatingSystem.ProductType = 1) Then
  1442. Win7 = True
  1443. Exit For
  1444. End If
  1445.  
  1446. 'Server2008R2
  1447. If (Ver(0) = "6" And Ver(1) = "1" And (objOperatingSystem.ProductType = 2 Or objOperatingSystem.ProductType = 3)) Then
  1448. Win7 = True
  1449. Exit For
  1450. End If
  1451. Next
  1452.  
  1453. setWmiClasses()
  1454.  
  1455. End Function
  1456. '////////////////////////////////////////////////////////////////////////////////////////
  1457. '////////////////////////////////////////////////////////////////////////////////////////
  1458. Function setWmiClasses()
  1459.  
  1460. If Win7 = True Then
  1461. productClass = "OfficeSoftwareProtectionProduct"
  1462. tokenClass = "OfficeSoftwareProtectionTokenActivationLicense"
  1463. Else
  1464. productClass = "SoftwareLicensingProduct"
  1465. tokenClass = "SoftwareLicensingTokenActivationLicense"
  1466. End If
  1467.  
  1468. End Function
  1469. '////////////////////////////////////////////////////////////////////////////////////////
  1470. '////////////////////////////////////////////////////////////////////////////////////////
  1471.  
  1472. '' SIG '' Begin signature block
  1473. '' SIG '' MIIhkgYJKoZIhvcNAQcCoIIhgzCCIX8CAQExDzANBglg
  1474. '' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
  1475. '' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
  1476. '' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
  1477. '' SIG '' zEwik1Z5edAj7+sqHGDiJNmSFwExtnAcWrZywByYrk+g
  1478. '' SIG '' ggswMIIEuDCCA6CgAwIBAgITMwAAABYRBLSIOIy+wwAA
  1479. '' SIG '' AAAAFjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
  1480. '' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
  1481. '' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
  1482. '' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
  1483. '' SIG '' aWduaW5nIFBDQSAyMDEwMB4XDTEyMDgzMDE3NDkwM1oX
  1484. '' SIG '' DTEzMTEzMDE3NDkwM1owgYMxCzAJBgNVBAYTAlVTMRMw
  1485. '' SIG '' EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
  1486. '' SIG '' b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
  1487. '' SIG '' b24xDTALBgNVBAsTBE1PUFIxHjAcBgNVBAMTFU1pY3Jv
  1488. '' SIG '' c29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEB
  1489. '' SIG '' BQADggEPADCCAQoCggEBAKBQnx1OlLoHCty+lknhPaAG
  1490. '' SIG '' 75W++b1WKluc7x4RLsbW4S2yb8wzLZ4epLGCFspkMamK
  1491. '' SIG '' JoH04y7yHg4cyOFZ4dQjPWV3/+rlt7ONCPYS129JV6SF
  1492. '' SIG '' 4wQe0EKop7LbMAoV0ck1bX+8hl6lPraQZAUkHD6gcWgK
  1493. '' SIG '' Mfd+1JXpLZvKZQV6FAIMCfaz3XFdJh9aCy8JumcybJwV
  1494. '' SIG '' 2Jw8iehHOu+mFN9CPiEeuzHiLNFU9uqAkiuTNHdtkmcm
  1495. '' SIG '' NsEqMdt4E0mrk5XcbKoMAHHAzc3dY+2RV5evjCqExd4N
  1496. '' SIG '' dWWM4NEfQTu7tZLSaTl1mABMbEw9GEMDzmY7nF1OUXiR
  1497. '' SIG '' Qjt+0FrgX0MCAwEAAaOCAScwggEjMB8GA1UdJQQYMBYG
  1498. '' SIG '' CCsGAQUFBwMDBgorBgEEAYI3PQYBMB0GA1UdDgQWBBRr
  1499. '' SIG '' 2fF2+KN4NKT3Rp4n8bC5bM82pjAfBgNVHSMEGDAWgBTm
  1500. '' SIG '' /F97uyIAWORyTrX0IXQjMubvrDBWBgNVHR8ETzBNMEug
  1501. '' SIG '' SaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp
  1502. '' SIG '' L2NybC9wcm9kdWN0cy9NaWNDb2RTaWdQQ0FfMjAxMC0w
  1503. '' SIG '' Ny0wNi5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF
  1504. '' SIG '' BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp
  1505. '' SIG '' L2NlcnRzL01pY0NvZFNpZ1BDQV8yMDEwLTA3LTA2LmNy
  1506. '' SIG '' dDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IB
  1507. '' SIG '' AQBSQvO9uPl8uzKyi9ukLZAQqUK3SJ69+UtczCFgpL2A
  1508. '' SIG '' l2MuKon2m9a8IpIBc56D+/KLa70wWuztMD7uyOF/qDcp
  1509. '' SIG '' 90wfrd4j1yptJQrRMD5D8aq1RTirbkTj0KEDM9daNOUh
  1510. '' SIG '' MSuOKC547WVyB4e1/rwWxKwvZMuizcnqB2p1YuvM5map
  1511. '' SIG '' PMEyOcXRwGxr+gU8K22z+0f9urwcgF0ShtQr2tIsKDJ9
  1512. '' SIG '' VwWEJ4Ef8EFlUgHwaq95DbjtwGOnRNb5ngJVRQ54Xlzb
  1513. '' SIG '' AHrpZSRzEni2UPk2JkiUBO3YQNXhPUM3H5hFnSzjNtpz
  1514. '' SIG '' MFSXah4gXBP5DtiMMLbrPnWEpetjkgotSUu2MIIGcDCC
  1515. '' SIG '' BFigAwIBAgIKYQxSTAAAAAAAAzANBgkqhkiG9w0BAQsF
  1516. '' SIG '' ADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
  1517. '' SIG '' bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
  1518. '' SIG '' FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMp
  1519. '' SIG '' TWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9y
  1520. '' SIG '' aXR5IDIwMTAwHhcNMTAwNzA2MjA0MDE3WhcNMjUwNzA2
  1521. '' SIG '' MjA1MDE3WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
  1522. '' SIG '' V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
  1523. '' SIG '' A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD
  1524. '' SIG '' VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAy
  1525. '' SIG '' MDEwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
  1526. '' SIG '' AQEA6Q5kUHlntcTj/QkATJ6UrPdWaOpE2M/FWE+ppXZ8
  1527. '' SIG '' bUW60zmStKQe+fllguQX0o/9RJwI6GWTzixVhL99COMu
  1528. '' SIG '' K6hBKxi3oktuSUxrFQfe0dLCiR5xlM21f0u0rwjYzIjW
  1529. '' SIG '' axeUOpPOJj/s5v40mFfVHV1J9rIqLtWFu1k/+JC0K4N0
  1530. '' SIG '' yiuzO0bj8EZJwRdmVMkcvR3EVWJXcvhnuSUgNN5dpqWV
  1531. '' SIG '' XqsogM3Vsp7lA7Vj07IUyMHIiiYKWX8H7P8O7YASNUwS
  1532. '' SIG '' pr5SW/Wm2uCLC0h31oVH1RC5xuiq7otqLQVcYMa0Kluc
  1533. '' SIG '' IxxfReMaFB5vN8sZM4BqiU2jamZjeJPVMM+VHwIDAQAB
  1534. '' SIG '' o4IB4zCCAd8wEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0O
  1535. '' SIG '' BBYEFOb8X3u7IgBY5HJOtfQhdCMy5u+sMBkGCSsGAQQB
  1536. '' SIG '' gjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAP
  1537. '' SIG '' BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP
  1538. '' SIG '' 6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeG
  1539. '' SIG '' RWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3Js
  1540. '' SIG '' L3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIz
  1541. '' SIG '' LmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKG
  1542. '' SIG '' Pmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2Vy
  1543. '' SIG '' dHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MIGd
  1544. '' SIG '' BgNVHSAEgZUwgZIwgY8GCSsGAQQBgjcuAzCBgTA9Bggr
  1545. '' SIG '' BgEFBQcCARYxaHR0cDovL3d3dy5taWNyb3NvZnQuY29t
  1546. '' SIG '' L1BLSS9kb2NzL0NQUy9kZWZhdWx0Lmh0bTBABggrBgEF
  1547. '' SIG '' BQcCAjA0HjIgHQBMAGUAZwBhAGwAXwBQAG8AbABpAGMA
  1548. '' SIG '' eQBfAFMAdABhAHQAZQBtAGUAbgB0AC4gHTANBgkqhkiG
  1549. '' SIG '' 9w0BAQsFAAOCAgEAGnTvV08pe8QWhXi4UNMi/AmdrIKX
  1550. '' SIG '' +DT/KiyXlRLl5L/Pv5PI4zSp24G43B4AvtI1b6/lf3mV
  1551. '' SIG '' d+UC1PHr2M1OHhthosJaIxrwjKhiUUVnCOM/PB6T+DCF
  1552. '' SIG '' F8g5QKbXDrMhKeWloWmMIpPMdJjnoUdD8lOswA8waX/+
  1553. '' SIG '' 0iUgbW9h098H1dlyACxphnY9UdumOUjJN2FtB91TGcun
  1554. '' SIG '' 1mHCv+KDqw/ga5uV1n0oUbCJSlGkmmzItx9KGg5pqdfc
  1555. '' SIG '' wX7RSXCqtq27ckdjF/qm1qKmhuyoEESbY7ayaYkGx0aG
  1556. '' SIG '' ehg/6MUdIdV7+QIjLcVBy78dTMgW77Gcf/wiS0mKbhXj
  1557. '' SIG '' pn92W9FTeZGFndXS2z1zNfM8rlSyUkdqwKoTldKOEdqZ
  1558. '' SIG '' Z14yjPs3hdHcdYWch8ZaV4XCv90Nj4ybLeu07s8n07Ve
  1559. '' SIG '' afqkFgQBpyRnc89NT7beBVaXevfpUk30dwVPhcbYC/GO
  1560. '' SIG '' 7UIJ0Q124yNWeCImNr7KsYxuqh3khdpHM2KPpMmRM19x
  1561. '' SIG '' HkCvmGXJIuhCISWKHC1g2TeJQYkqFg/XYTyUaGBS79ZH
  1562. '' SIG '' maCAQO4VgXc+nOBTGBpQHTiVmx5mMxMnORd4hzbOTsNf
  1563. '' SIG '' svU9R1O24OXbC2E9KteSLM43Wj5AQjGkHxAIwlacvyRd
  1564. '' SIG '' UQKdannSF9PawZSOB3slcUSrBmrm1MbfI5qWdcUxghW6
  1565. '' SIG '' MIIVtgIBATCBlTB+MQswCQYDVQQGEwJVUzETMBEGA1UE
  1566. '' SIG '' CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
  1567. '' SIG '' MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgw
  1568. '' SIG '' JgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD
  1569. '' SIG '' QSAyMDEwAhMzAAAAFhEEtIg4jL7DAAAAAAAWMA0GCWCG
  1570. '' SIG '' SAFlAwQCAQUAoIHAMBkGCSqGSIb3DQEJAzEMBgorBgEE
  1571. '' SIG '' AYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3
  1572. '' SIG '' AgEVMC8GCSqGSIb3DQEJBDEiBCD1TJpTGWrIm4napIKJ
  1573. '' SIG '' YhzLZWUWjiXYdz5av5AAR9fYhjBUBgorBgEEAYI3AgEM
  1574. '' SIG '' MUYwRKAigCAATQBpAGMAcgBvAHMAbwBmAHQAIABPAGYA
  1575. '' SIG '' ZgBpAGMAZaEegBxodHRwOi8vb2ZmaWNlLm1pY3Jvc29m
  1576. '' SIG '' dC5jb20gMA0GCSqGSIb3DQEBAQUABIIBAGu21FD/HaKe
  1577. '' SIG '' x/u2c2W5ahMQfqtl1D7pmywem006AtumQmviOOafquMZ
  1578. '' SIG '' mT/jJf9FrrR6tVKN2v8UfTJwIQi1lWlQAyYTA/bOGiI2
  1579. '' SIG '' Uepum9IQyFbbtbqu7RWwqeEGbpugGTHF1H/5nXWTwUfj
  1580. '' SIG '' XGUcySYJhQI20/DcGw0G2TD2xPPT7JfbHviXvH0d2nRW
  1581. '' SIG '' P/10Gi1AmAY7+Koe/jZ6Z7uhzw2TbL1oZpBrvlDzY/0t
  1582. '' SIG '' PopVtLTWf8MMQLD81+oBkj9TcgG684Gu4oYWoXQ2VGxX
  1583. '' SIG '' hxTwJJWmJ/Lk16pxtmfsTDKmbVZQKQq/Kfmot6mBhT+v
  1584. '' SIG '' srzqUZmrI5fj8kmq27NRiYihghMyMIITLgYKKwYBBAGC
  1585. '' SIG '' NwMDATGCEx4wghMaBgkqhkiG9w0BBwKgghMLMIITBwIB
  1586. '' SIG '' AzEPMA0GCWCGSAFlAwQCAQUAMIIBPQYLKoZIhvcNAQkQ
  1587. '' SIG '' AQSgggEsBIIBKDCCASQCAQEGCisGAQQBhFkKAwEwMTAN
  1588. '' SIG '' BglghkgBZQMEAgEFAAQgaPCujLfd+uxBHGfJ4h+nFCAS
  1589. '' SIG '' qeiGNAoy2HNoucsL2xUCBlBkYEUZ2hgTMjAxMjEwMDIw
  1590. '' SIG '' MDA4NTEuMjQ3WjAHAgEBgAIB9KCBuaSBtjCBszELMAkG
  1591. '' SIG '' A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
  1592. '' SIG '' BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
  1593. '' SIG '' dCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUG
  1594. '' SIG '' A1UECxMebkNpcGhlciBEU0UgRVNOOkI4RUMtMzBBNC03
  1595. '' SIG '' MTQ0MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt
  1596. '' SIG '' cCBTZXJ2aWNloIIOxzCCBnEwggRZoAMCAQICCmEJgSoA
  1597. '' SIG '' AAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYT
  1598. '' SIG '' AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
  1599. '' SIG '' EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
  1600. '' SIG '' cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290
  1601. '' SIG '' IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEw
  1602. '' SIG '' MDcwMTIxMzY1NVoXDTI1MDcwMTIxNDY1NVowfDELMAkG
  1603. '' SIG '' A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
  1604. '' SIG '' BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
  1605. '' SIG '' dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0
  1606. '' SIG '' IFRpbWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3
  1607. '' SIG '' DQEBAQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX
  1608. '' SIG '' 9fp/aZRrdFQQ1aUKAIKF++18aEssX8XD5WHCdrc+Zitb
  1609. '' SIG '' 8BVTJwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRDDNdN
  1610. '' SIG '' uDgIs0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG8lhH
  1611. '' SIG '' hjKEHnRhZ5FfgVSxz5NMksHEpl3RYRNuKMYa+YaAu99h
  1612. '' SIG '' /EbBJx0kZxJyGiGKr0tkiVBisV39dx898Fd1rL2KQk1A
  1613. '' SIG '' UdEPnAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6Kgox8NpO
  1614. '' SIG '' BpG2iAg16HgcsOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8
  1615. '' SIG '' wMlEXV4WnAEFTyJNAgMBAAGjggHmMIIB4jAQBgkrBgEE
  1616. '' SIG '' AYI3FQEEAwIBADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xG
  1617. '' SIG '' G8UzaFqFbVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBD
  1618. '' SIG '' AEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w
  1619. '' SIG '' HwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQw
  1620. '' SIG '' VgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNy
  1621. '' SIG '' b3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9v
  1622. '' SIG '' Q2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEB
  1623. '' SIG '' BE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNy
  1624. '' SIG '' b3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXRf
  1625. '' SIG '' MjAxMC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCBkjCB
  1626. '' SIG '' jwYJKwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRw
  1627. '' SIG '' Oi8vd3d3Lm1pY3Jvc29mdC5jb20vUEtJL2RvY3MvQ1BT
  1628. '' SIG '' L2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwA
  1629. '' SIG '' ZQBnAGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABl
  1630. '' SIG '' AG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH
  1631. '' SIG '' 5ohRDeLG4Jg/gXEDPZ2joSFvs+umzPUxvs8F4qn++ldt
  1632. '' SIG '' GTCzwsVmyWrf9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5
  1633. '' SIG '' U4zM9GASinbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/
  1634. '' SIG '' f8Z/8jd9Wj8c8pl5SpFSAK84Dxf1L3mBZdmptWvkx872
  1635. '' SIG '' ynoAb0swRCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+
  1636. '' SIG '' tuWOM7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlK
  1637. '' SIG '' cWOdeyFtw5yjojz6f32WapB4pm3S4Zz5Hfw42JT0xqUK
  1638. '' SIG '' loakvZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45
  1639. '' SIG '' V3aicaoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4Ttx
  1640. '' SIG '' Cd9ddJgiCGHasFAeb73x4QDf5zEHpJM692VHeOj4qEir
  1641. '' SIG '' 995yfmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEegPsb
  1642. '' SIG '' iSpUObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9UJyH3
  1643. '' SIG '' yKxO2ii4sanblrKnQqLJzxlBTeCG+SqaoxFmMNO7dDJL
  1644. '' SIG '' 32N79ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp3lfB0d4w
  1645. '' SIG '' wP3M5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa7wknHNWz
  1646. '' SIG '' fjUeCLraNtvTX4/edIhJEjCCBNEwggO5oAMCAQICCmEH
  1647. '' SIG '' 1FUAAAAAAA4wDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE
  1648. '' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
  1649. '' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
  1650. '' SIG '' b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp
  1651. '' SIG '' bWUtU3RhbXAgUENBIDIwMTAwHhcNMTIwMTA5MjEzNTMx
  1652. '' SIG '' WhcNMTMwNDA5MjE0NTMxWjCBszELMAkGA1UEBhMCVVMx
  1653. '' SIG '' EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl
  1654. '' SIG '' ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
  1655. '' SIG '' dGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNp
  1656. '' SIG '' cGhlciBEU0UgRVNOOkI4RUMtMzBBNC03MTQ0MSUwIwYD
  1657. '' SIG '' VQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNl
  1658. '' SIG '' MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
  1659. '' SIG '' weiiiavCaSU5yAO7J7LMoFhyzUv4QGcC85Sl6EdWInsg
  1660. '' SIG '' nJ4/uPz92BPkJqKQ7+S9iEplO1iwcoUEiARNaVXKHaxz
  1661. '' SIG '' g/vjTPVeJrFRZwdt7mDhCISPS/Jmzo1gPxiQ89ySBo5u
  1662. '' SIG '' 9eCyW35wKULrQhWmxVXzHr3ZvcsT2eqwdL97m4xWCbmI
  1663. '' SIG '' ZSSUTMqApPPv8se3fU23u6A/U6J5jWzxubjJ5HXUXttd
  1664. '' SIG '' reRWpTihDFQ7KcsEyB4MrRJP8qXec6sZ9HUC0HTUB+GR
  1665. '' SIG '' WWqbJRiYCyjH13ViaapBfos7kYb/pPTqtveVi5nDphrs
  1666. '' SIG '' i+jxsygf7gyFNBKBUwfIyW9vAqZ86Be0DwIDAQABo4IB
  1667. '' SIG '' GzCCARcwHQYDVR0OBBYEFMbW5nU1U+/wnbjYtEvuXlMB
  1668. '' SIG '' CGPZMB8GA1UdIwQYMBaAFNVjOlyKMZDzQ3t8RhvFM2ha
  1669. '' SIG '' hW1VMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwu
  1670. '' SIG '' bWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01p
  1671. '' SIG '' Y1RpbVN0YVBDQV8yMDEwLTA3LTAxLmNybDBaBggrBgEF
  1672. '' SIG '' BQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cu
  1673. '' SIG '' bWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljVGltU3Rh
  1674. '' SIG '' UENBXzIwMTAtMDctMDEuY3J0MAwGA1UdEwEB/wQCMAAw
  1675. '' SIG '' EwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZIhvcNAQEL
  1676. '' SIG '' BQADggEBAI0KBSOJ6bP7QV7OBc3Qqr9NuRE/A3XEtCto
  1677. '' SIG '' Oz7ZTYBcGswSypS0o+c2jD54GkUSz8eNIK/HNwpipKCv
  1678. '' SIG '' Yqp9KTUgw66SS/r2uF5LX3RmrPKhLXA4cdGYNlu/BuX+
  1679. '' SIG '' LeyJ2KXql1BCgrU1+xB4fxhe7baUWx9o5rN8N2/4P8L5
  1680. '' SIG '' b4Wlw2clhOvZuKCjtO5YJqk6yH0ESwyoE0ZtnsZaYOcI
  1681. '' SIG '' cZEblJidE2CtM702fe0IaCLIMOffLMQr9T+4gVlPq+1s
  1682. '' SIG '' vCAGEQVMMDkoR1BU37nOc9+Q82n/qBMTgnvQG9ogqcFQ
  1683. '' SIG '' 5skb/6SCon+aXmEWujxcUQfTqh0ixjkd346o0uBTH9yh
  1684. '' SIG '' ggN5MIICYQIBATCB46GBuaSBtjCBszELMAkGA1UEBhMC
  1685. '' SIG '' VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
  1686. '' SIG '' B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
  1687. '' SIG '' b3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMe
  1688. '' SIG '' bkNpcGhlciBEU0UgRVNOOkI4RUMtMzBBNC03MTQ0MSUw
  1689. '' SIG '' IwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2
  1690. '' SIG '' aWNloiUKAQEwCQYFKw4DAhoFAAMVAIMU1+AB1G7ZyJUz
  1691. '' SIG '' KxZvn3EmZVMnoIHCMIG/pIG8MIG5MQswCQYDVQQGEwJV
  1692. '' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
  1693. '' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
  1694. '' SIG '' cmF0aW9uMQ0wCwYDVQQLEwRNT1BSMScwJQYDVQQLEx5u
  1695. '' SIG '' Q2lwaGVyIE5UUyBFU046QjAyNy1DNkY4LTFEODgxKzAp
  1696. '' SIG '' BgNVBAMTIk1pY3Jvc29mdCBUaW1lIFNvdXJjZSBNYXN0
  1697. '' SIG '' ZXIgQ2xvY2swDQYJKoZIhvcNAQEFBQACBQDUFAnFMCIY
  1698. '' SIG '' DzIwMTIxMDAxMTIyMzMzWhgPMjAxMjEwMDIxMjIzMzNa
  1699. '' SIG '' MHcwPQYKKwYBBAGEWQoEATEvMC0wCgIFANQUCcUCAQAw
  1700. '' SIG '' CgIBAAICCfICAf8wBwIBAAICF3EwCgIFANQVW0UCAQAw
  1701. '' SIG '' NgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAaAK
  1702. '' SIG '' MAgCAQACAxbjYKEKMAgCAQACAwehIDANBgkqhkiG9w0B
  1703. '' SIG '' AQUFAAOCAQEAR/OueYR+g/HRIidEawooT2diG+SL852l
  1704. '' SIG '' aPKtFYpQ2evbBhC6mrWYwfJJh7+so1dptvEQ5oCjx2Ko
  1705. '' SIG '' /MSkTqsyLn2cfgT160PMyOeabh4/jMgUGU/C1YnkM4R2
  1706. '' SIG '' K4ShNBu3H6cGxTJMFv3edD+5tEZjPFJvdfJkewL2u+4T
  1707. '' SIG '' Jzbbo/SZ2Mp0mYYNnYlXBbwXy27ZtKeQqwdZO5oqyNlg
  1708. '' SIG '' NwYktOW1REwe9+1YIHfw9IhLPmAjF+ag7+FmKZG1ou1J
  1709. '' SIG '' R95O7apQeOrLONDdraALCmb4JgNntqwy+x+RgmXdnUgo
  1710. '' SIG '' 7mZF2oiDM/NqIWB/mN1ILdPF/ckEXOtLutVGHcEKpdpb
  1711. '' SIG '' EzGCAuMwggLfAgEBMIGKMHwxCzAJBgNVBAYTAlVTMRMw
  1712. '' SIG '' EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
  1713. '' SIG '' b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
  1714. '' SIG '' b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1w
  1715. '' SIG '' IFBDQSAyMDEwAgphB9RVAAAAAAAOMA0GCWCGSAFlAwQC
  1716. '' SIG '' AQUAoIIBKTAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQ
  1717. '' SIG '' AQQwLwYJKoZIhvcNAQkEMSIEIMVDfBvNNWKr5LBboTVX
  1718. '' SIG '' gRlLtx9uanEUsfPaJoM5/ZbLMIHZBgsqhkiG9w0BCRAC
  1719. '' SIG '' DDGByTCBxjCBwzCBqAQUgxTX4AHUbtnIlTMrFm+fcSZl
  1720. '' SIG '' UycwgY8wgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UE
  1721. '' SIG '' CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
  1722. '' SIG '' MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYw
  1723. '' SIG '' JAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0Eg
  1724. '' SIG '' MjAxMAIKYQfUVQAAAAAADjAWBBRjIEaoyFA06dGB75Ys
  1725. '' SIG '' NATncLtMNDANBgkqhkiG9w0BAQsFAASCAQBvTI/fQJ7r
  1726. '' SIG '' /bKY6hyQc46TuKX4MBG5kc4j3qwYY9hBWAfZtebgojiU
  1727. '' SIG '' N4sDMmAQ9RJo6/tAXqtoc2hh/hn3nwJmXbpDzEj50wmB
  1728. '' SIG '' zMnOyo+YNcTkGhV9z3DfdIzLJ6iglM6y3kyy8ySjdXw3
  1729. '' SIG '' X9b4UlqeEetg6mb4S7FtLRnBGPNB9wXLt2Cw3tSSLWbt
  1730. '' SIG '' hLeGi6Xh5AkWaNMz/2SZZIj7vVj/S01BZsGxGpV6BmXP
  1731. '' SIG '' 0UW1gEJSNbqBKPuUsTD1I6aMH7hp57XL9q3np5DHU/Ae
  1732. '' SIG '' q45jBLGD0mx3n73y//7FnQiFKpoRM8l33KGaUkkYHDIM
  1733. '' SIG '' 5XalKnWa59yf/0L8Ls6Bzflz
  1734. '' SIG '' End signature block
Add Comment
Please, Sign In to add comment