daily pastebin goal
32%
SHARE
TWEET

Install.ps1 x86

a guest May 16th, 2018 130 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $Authorization = @"
  2. using System;
  3. using System.Runtime.InteropServices;
  4.  
  5. public class AdjProcessPriv
  6. {
  7. [DllImport("kernel32.dll")]
  8. public static extern uint WTSGetActiveConsoleSessionId();
  9. [DllImport("Wtsapi32.dll", SetLastError = true)]
  10. public static extern uint WTSQueryUserToken(uint SessionId, ref IntPtr phToken);
  11. [DllImport("advapi32.dll", SetLastError = true)]
  12. public static extern uint ImpersonateLoggedOnUser(IntPtr hToken);
  13. [DllImport("advapi32.dll", EntryPoint = "CreateProcessAsUser", SetLastError = true, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  14. public static extern bool CreateProcessAsUser(IntPtr hToken, String lpApplicationName, String lpCommandLine, IntPtr lpProcessAttributes,
  15. IntPtr lpThreadAttributes, bool bInheritHandle, uint dwCreationFlags, IntPtr lpEnvironment, String lpCurrentDirectory,
  16. ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation);
  17.  
  18. [DllImport("userenv.dll", SetLastError = true)]
  19. public static extern bool CreateEnvironmentBlock(ref IntPtr lpEnvironment, IntPtr hToken, bool bInherit);
  20. [DllImport("userenv.dll", SetLastError = true)]
  21. [return: MarshalAs(UnmanagedType.Bool)]
  22. public static extern bool DestroyEnvironmentBlock(IntPtr lpEnvironment);
  23.  
  24. [DllImport("kernel32.dll", SetLastError = true)]
  25. public static extern bool CloseHandle(IntPtr hSnapshot);
  26.  
  27. [DllImport("kernel32.dll", SetLastError = true)]
  28. public static extern uint WaitForSingleObject(IntPtr hHandle, uint dwMilliseconds);
  29.  
  30. [DllImport("shell32.dll")]
  31. public static extern IntPtr ShellExecute(
  32. IntPtr hwnd,
  33. string lpszOp,
  34. string lpszFile,
  35. string lpszParams,
  36. string lpszDir,
  37. int FsShowCmd
  38. );
  39.  
  40. public enum WTS_CONNECTSTATE_CLASS
  41. {
  42.    WTSActive,
  43.    WTSConnected,
  44.    WTSConnectQuery,
  45.    WTSShadow,
  46.    WTSDisconnected,
  47.    WTSIdle,
  48.    WTSListen,
  49.    WTSReset,
  50.    WTSDown,
  51.    WTSInit
  52. }
  53. [StructLayout(LayoutKind.Sequential)]
  54. public struct PROCESS_INFORMATION
  55. {
  56.    public IntPtr hProcess;
  57.    public IntPtr hThread;
  58.    public uint dwProcessId;
  59.    public uint dwThreadId;
  60. }
  61. [StructLayout(LayoutKind.Sequential)]
  62. public struct STARTUPINFO
  63. {
  64.    public int cb;
  65.    public String lpReserved;
  66.    public String lpDesktop;
  67.    public String lpTitle;
  68.    public uint dwX;
  69.    public uint dwY;
  70.    public uint dwXSize;
  71.    public uint dwYSize;
  72.    public uint dwXCountChars;
  73.    public uint dwYCountChars;
  74.    public uint dwFillAttribute;
  75.    public uint dwFlags;
  76.    public short wShowWindow;
  77.    public short cbReserved2;
  78.    public IntPtr lpReserved2;
  79.    public IntPtr hStdInput;
  80.    public IntPtr hStdOutput;
  81.    public IntPtr hStdError;
  82. }
  83.  
  84. public static uint LaunchUserProcess(string appPath, string cmdLine)
  85. {
  86.    uint processId = 0;
  87.    var hImpersonationToken = IntPtr.Zero;
  88.    uint activeSessionId = WTSGetActiveConsoleSessionId();
  89.    uint userToken = WTSQueryUserToken(activeSessionId, ref hImpersonationToken);
  90.    if (userToken != 0)
  91.    {
  92.        if (ImpersonateLoggedOnUser(hImpersonationToken) != 0)
  93.         {
  94.            var startInfo = new STARTUPINFO();
  95.            var procInfo = new PROCESS_INFORMATION();
  96.            var pEnv = IntPtr.Zero;
  97.            startInfo.cb = Marshal.SizeOf(typeof(STARTUPINFO));
  98.            CreateEnvironmentBlock(ref pEnv, hImpersonationToken, false);
  99.            if (CreateProcessAsUser(hImpersonationToken,
  100.                    appPath,    
  101.                    cmdLine,    
  102.                    IntPtr.Zero,
  103.                    IntPtr.Zero,
  104.                    false,
  105.                    0,
  106.                    IntPtr.Zero,
  107.                    null,    
  108.                    ref startInfo,
  109.                    out procInfo))
  110.                {                  
  111.                    processId = procInfo.dwProcessId;
  112.                    WaitForSingleObject(procInfo.hProcess, 5000);
  113.                }
  114.  
  115.                if (pEnv != IntPtr.Zero)
  116.                {
  117.                    DestroyEnvironmentBlock(pEnv);
  118.                }
  119.                CloseHandle(procInfo.hThread);
  120.                CloseHandle(procInfo.hProcess);
  121.  
  122.        }  
  123.        CloseHandle(hImpersonationToken);
  124.    }
  125.    if(processId == 0)
  126.    {
  127.        var shellInfo = ShellExecute(IntPtr.Zero, "", appPath, cmdLine, null, 0);
  128.        if(shellInfo.ToInt32() > 32)
  129.        {
  130.            processId = (uint)(shellInfo.ToInt32());
  131.        }
  132.    }
  133.    return processId;
  134. }
  135. }
  136. "@
  137. $type = Add-Type $Authorization  -passthru
  138.  
  139. $PackageName = "LenovoBatteryGaugePackage"
  140. $PathToPluginDir = "$env:ProgramData\Lenovo\ImController\Plugins"
  141. $PathToPackageDir = "$PathToPluginDir\$PackageName"
  142. $LogFileName = ("$PackageName" + ".Install." + (Get-Date -Format "-yyyy_MM_dd-HH-mm-ss") + ".txt")
  143. $PathToLogsDir = "$env:ProgramData\Lenovo\Modern\Logs"
  144. $PathToLogFile = "$PathToLogsDir\$LogFileName"
  145. $UninstallFileName = "Uninstall.ps1"
  146. $InstallFileName = $MyInvocation.MyCommand.Name
  147. [bool]$EnableLogging = $false
  148. try { $EnableLogging = ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Wow6432Node\Lenovo\Modern\Logs" -Name "ImController.Service") -eq 0 ) } catch{}
  149.  
  150. $PSDefaultParameterValues["Write-Log:pathToLogFile"]=$PathToLogFile
  151. $PSDefaultParameterValues["Write-Log:enableLogging"]=$EnableLogging
  152.  
  153. Function Check-Is64BitProcess()
  154. {
  155.     return [Environment]::Is64BitProcess
  156. }
  157.  
  158. Function Check-Is64BitOS()
  159. {
  160.     return [Environment]::Is64BitOperatingSystem
  161. }
  162.  
  163. Function Check-IsWow64()
  164. {
  165.     return !(Check-Is64BitProcess) -and (Check-Is64BitOS)
  166. }
  167.  
  168. Function Check-Is64BitPackage()
  169. {
  170.     return $PSScriptRoot.ToLower().Contains("x64".ToLower())
  171. }
  172.  
  173. function Write-Log
  174. {
  175.     [CmdletBinding()]
  176.     param(
  177.         [Parameter(
  178.             Mandatory=$false,
  179.             Position=1,
  180.             ValueFromPipeline=$true
  181.         )]
  182.         [PSObject[]]$inputObject,
  183.         [string]$pathToLogFile=".\" + [System.IO.Path]::GetFileName($MyInvocation.ScriptName) + ".log",
  184.         [bool]$enableLogging=$true
  185.     )
  186.  
  187.     $obj=$null
  188.     if($input -ne $null)
  189.     {
  190.         $obj=$input
  191.     }
  192.     else
  193.     {
  194.         $obj=$inputObject
  195.     }
  196.  
  197.     Out-Host -InputObject $obj
  198.     if($enableLogging)
  199.     {
  200.         if( -not(Test-Path $pathToLogFile)) { New-Item -Path (Split-Path $pathToLogFile) -Name (Split-Path $pathToLogFile -leaf) -ItemType File -force | Out-Null }
  201.         Out-File -InputObject $obj -FilePath $pathToLogFile -Encoding unicode -Append -Width 200
  202.     }
  203. }
  204.  
  205. Function UninstallMsi($prodCode)
  206. {
  207.     $uninstallString = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$prodCode" -Name "UninstallString" -ErrorAction SilentlyContinue).UninstallString
  208.     if (($UninstallString -ne $null) -and ($uninstallString.Length -ne 0)) {
  209.         Write-Log "start uninstall msi package for PRODCODE $prodCode"
  210.         $MSIEXECPATH = "$env:SystemRoot\System32\MsiExec.exe"
  211.         Write-Log "Start-Process -NoNewWindow -Wait -FilePath $MSIEXECPATH `"/X$prodCode /quiet /noreboot`""
  212.         Start-Process -NoNewWindow -Wait -FilePath $MSIEXECPATH "/X$prodCode /quiet /noreboot" *>&1 | Write-Log
  213.     }
  214.     else
  215.     {
  216.         Write-Log "cannot find uninstall entry for program PRODCODE $prodCode"
  217.     }
  218. }
  219.  
  220. function GetCurrentActiveUserSID
  221. {
  222.     $activeUser = Get-WmiObject Win32_ComputerSystem -ComputerName $env:computername -EA stop | Select UserName -Unique|%{"{0}" -f $_.UserName.ToString().Split('\')[1]}
  223.     $objUser = New-Object System.Security.Principal.NTAccount("$activeUser")
  224.     $strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
  225.     $strSID.Value
  226. }
  227.  
  228. if(Check-Is64BitOS)
  229. {
  230.     $OS_BITNESS=64
  231. }
  232. else
  233. {
  234.     $OS_BITNESS=32
  235. }
  236.    
  237. if(Check-Is64BitProcess)
  238. {
  239.     $PS_BITNESS=64
  240. }
  241. else
  242. {
  243.     $PS_BITNESS=32
  244. }
  245.  
  246. if(Check-Is64BitPackage)
  247. {
  248.     $PK_BITNESS=64
  249. }
  250. else
  251. {
  252.     $PK_BITNESS=32
  253. }
  254.  
  255. if ($OS_BITNESS -eq 64)
  256. {
  257.     $arch="x64"
  258.     $PRODCODE64="{CBEDEC16-C4F5-4255-99E4-5884EFEDD1BC}"
  259.     $PRODCODE32="{01DBFF2E-73FD-4CC3-98CE-B39260D80D8C}"
  260.     $PRODCODE64_OLD="{B8D3ED8D-A295-44C2-8AE1-56823D44AD1F}"
  261.     $PRODCODE32_OLD="{840DE7EE-4816-4402-BEE4-80517B3233A3}"
  262. }
  263. else
  264. {
  265.     $arch="x86"
  266.     $PRODCODE32="{01DBFF2E-73FD-4CC3-98CE-B39260D80D8C}"
  267.     $PRODCODE32_OLD="{840DE7EE-4816-4402-BEE4-80517B3233A3}"
  268. }
  269.  
  270. $applicationName = "$env:SystemRoot\system32\rundll32.exe"
  271. $commandline = " $env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\LenovoBatteryGaugePackage.dll, "
  272. $ShowBg="ShowBatteryGauge"
  273. $HideBg="HideBatteryGauge"
  274.  
  275. Function BatteryGaugeIconControl($cmdstring)
  276. {
  277.     $commandParam = $commandline + $cmdstring
  278.     $processId = $type[0]::LaunchUserProcess($applicationName, $commandParam)
  279.     if($processId -ne 0)
  280.     {
  281.         Write-Log "Launch a user process sucessful"
  282.     }
  283.     else
  284.     {
  285.         Write-Log "Launch a user process failure"
  286.     }
  287.     return $processId
  288. }
  289.  
  290. Write-Log "Below logs come from $PSCommandPath"
  291. Write-Log "Operating System is $OS_BITNESS bit"
  292. Write-Log "Process is $PS_BITNESS bit"
  293. Write-Log "Package is $PK_BITNESS Bit"
  294.  
  295. if ($PS_BITNESS -eq 32)
  296. {
  297.     if ($PK_BITNESS -eq 64)
  298.     {
  299.         if ($OS_BITNESS -eq 32)
  300.         {
  301.             Write-Log "cannot install a 64 bit package in an 32 bit os."
  302.         }
  303.         else
  304.         {
  305.             Write-Log "Package bitness is 64 but process is 32.  Relaunching as 64"
  306.             $PS64BITPATH="$env:SystemRoot\SysNative\WindowsPowerShell\v1.0\PowerShell.exe"
  307.             Write-Log "Start-Process -NoNewWindow -Wait -FilePath $PS64BITPATH -ArgumentList `"$PSCommandPath`""
  308.             Start-Process -NoNewWindow -Wait -FilePath $PS64BITPATH -ArgumentList "$PSCommandPath" *>&1 | Write-Log
  309.             Write-Log "Completed re-running as 64 bit"
  310.             Exit
  311.         }
  312.     }
  313. }
  314. elseif ($PS_BITNESS -eq 64)
  315. {
  316.     if ($PK_BITNESS -eq 32)
  317.     {
  318.         Write-Log "Package bitness is 32 but process is 64.  Relaunching as 32"
  319.         $PS32BITPATH="$env:SystemRoot\SysWOW64\WindowsPowerShell\v1.0\PowerShell.exe"
  320.         Write-Log "Start-Process -NoNewWindow -Wait -FilePath $PS32BITPATH -ArgumentList `"$PSCommandPath`""
  321.         Start-Process -NoNewWindow -Wait -FilePath $PS32BITPATH -ArgumentList "$PSCommandPath" *>&1 | Write-Log
  322.         Write-Log "Completed re-running as 32 bit"
  323.         Exit
  324.     }
  325. }
  326. else
  327. {
  328.     Write-Log "Package bitness unknown, will exit."
  329. }
  330.  
  331.  
  332. # ::**************************************************************************************************
  333. # :: This section run only when current scripts running in package folder
  334. # ::    1. Call uninstall.ps1 in the package folder if it has been install in this PC, and then delete package folder
  335. # ::    2. Create package folder and copy content to it
  336. # ::    3. Call install.ps1 in the package folder
  337. # ::
  338. # ::**************************************************************************************************
  339. if ($PSScriptRoot -ne "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch")
  340. {
  341.     #::***********************************************************************************************
  342.     #:: [Check whether pinned battery gauge to taskbar previously]
  343.     #::
  344.     #::
  345.     #::***********************************************************************************************
  346.     $SID = GetCurrentActiveUserSID
  347.     New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS *>&1 | Write-Log
  348.     $Pinned = (Get-ItemProperty -Path HKU:$SID\SOFTWARE\Lenovo\BatteryGauge -Name "ShowInTaskbar" -ErrorAction SilentlyContinue).ShowInTaskbar
  349.     if ($Pinned -eq 1)
  350.     {
  351.         Write-Log "The battery gauge had been pinned to task tray previously"
  352.     }
  353.     else
  354.     {
  355.         Write-Log "The battery gauge had NOT been pinned to task tray previously"
  356.     }
  357.  
  358.     if (Test-Path "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\$UninstallFileName")
  359.     {
  360.         Write-Log "Uninstall old version by call $UninstallFileName under package folder"
  361.         Write-Log "Push-Location `"$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\`""
  362.         Push-Location "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\" *>&1 | Write-Log
  363.         $PSPATH="$env:SystemRoot\System32\WindowsPowerShell\v1.0\PowerShell.exe"
  364.         Write-Log "Start-Process -NoNewWindow -Wait -FilePath $PSPATH -ArgumentList `"$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\$UninstallFileName`""
  365.         Start-Process -NoNewWindow -Wait -FilePath $PSPATH -ArgumentList "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\$UninstallFileName ForUpdate" *>&1 | Write-Log
  366.         Write-Log "Pop-Location"
  367.         Pop-location *>&1 | Write-Log
  368.        
  369.         Write-Log "Remove old version package folder"
  370.         Write-Log "Remove-Item -Recurse -Force `"$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage`""
  371.         Remove-Item -Recurse -Force "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage" *>&1 | Write-Log
  372.     }
  373.    
  374.     Write-Log "Make package folder for new version"
  375.     Write-Log "New-Item `"$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\`" -type directory"
  376.     New-Item "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\" -type directory *>&1 | Write-Log
  377.  
  378.     ## ::************************************************************************************************
  379.     ## :: [Rename the LenovoBatteryGaugePackage.dll file if this file haven't been removed. There was   ]
  380.     ## :: [issue which will lead this dll cannot unload from explorer due to in-use, then cannot replace]
  381.     ## :: [Can remove this operation from next version, since already fixed the in-use issue in the dll ]
  382.     ## ::************************************************************************************************
  383.     $rand=Get-Random
  384.     if(Test-Path -Path "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\x64\LenovoBatteryGaugePackage.dll" -PathType Leaf)
  385.     {
  386.         Write-Log "Rename-Item -Path `"$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\x64\LenovoBatteryGaugePackage.dll`" -NewName `"$rand.dll`""
  387.         Rename-Item -Path "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\x64\LenovoBatteryGaugePackage.dll" -NewName "$rand.dll"
  388.         New-ItemProperty -Path HKU:$SID\SOFTWARE\Lenovo\BatteryGauge -Name "ShowInTaskbar" -Value $Pinned -PropertyType DWORD -Force
  389.     }
  390.  
  391.     if(Test-Path -Path "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\x86\LenovoBatteryGaugePackage.dll" -PathType Leaf)
  392.     {
  393.         Write-Log "Rename-Item -Path `"$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\x86\LenovoBatteryGaugePackage.dll`" -NewName `"$rand.dll`""
  394.         Rename-Item -Path "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\x86\LenovoBatteryGaugePackage.dll" -NewName "$rand.dll"
  395.         New-ItemProperty -Path HKU:$SID\SOFTWARE\Lenovo\BatteryGauge -Name "ShowInTaskbar" -Value $Pinned -PropertyType DWORD -Force
  396.     }
  397.    
  398.     Remove-PSDrive -Name HKU *>&1 | Write-Log
  399.  
  400.     Write-Log "Copy new version package contents to package folder, and give neccessary privileage"
  401.     Write-Log "Copy-Item `"$PSScriptRoot\..\*`" `"$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\`" -force -recurse -verbose"
  402.     Copy-Item "$PSScriptRoot\..\*" "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\" -force -recurse -verbose *>&1 | Write-Log
  403.        
  404.     Write-Log "Install new version by call $InstallFileName under package folder"
  405.     Write-Log "Push-Location `"$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\`""
  406.     Push-Location "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\" *>&1 | Write-Log
  407.     $PSPATH="$env:SystemRoot\System32\WindowsPowerShell\v1.0\PowerShell.exe"
  408.     Write-Log "Start-Process -NoNewWindow -Wait -FilePath $PSPATH -ArgumentList `"$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\$InstallFileName`""
  409.     Start-Process -NoNewWindow -Wait -FilePath $PSPATH -ArgumentList "$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\$InstallFileName $Pinned" *>&1 | Write-Log
  410.  
  411.     Write-Log "Pop-location"
  412.     Pop-location *>&1 | Write-Log
  413.     Write-Log "completed re-running in the package folder"
  414.    
  415.     Write-Log "Remove temporary install package folder"
  416.     Write-Log "Remove-Item -Recurse -Force `"$PSScriptRoot\..`""
  417.     Remove-Item -Recurse -Force "$PSScriptRoot\.." *>&1 | Write-Log
  418.        
  419.     Exit
  420. }
  421.  
  422. # ::***********************************************************************************************
  423. # :: [Uninstall old Lenovo Battery Gauge ]
  424. # ::
  425. # ::
  426. # ::***********************************************************************************************
  427. if (Get-Variable ProdCode64 -ErrorAction SilentlyContinue) {
  428.     UninstallMsi($ProdCode64)
  429. }
  430. if (Get-Variable ProdCode32 -ErrorAction SilentlyContinue) {
  431.     UninstallMsi($ProdCode32)
  432. }
  433. if (Get-Variable ProdCode64_OLD -ErrorAction SilentlyContinue) {
  434.     UninstallMsi($ProdCode64_OLD)
  435. }
  436. if (Get-Variable ProdCode32_OLD -ErrorAction SilentlyContinue) {
  437.     UninstallMsi($ProdCode32_OLD)
  438. }
  439.  
  440. # ::***********************************************************************************************
  441. # :: [Kill QuickSetting.exe process ]
  442. # ::
  443. # ::
  444. # ::***********************************************************************************************
  445. Write-Log "Start-Process -NoNewWindow -Wait -FilePath taskkill.exe -ArgumentList `"/F /T /IM QuickSetting.exe`""
  446. Start-Process -NoNewWindow -Wait -FilePath taskkill.exe -ArgumentList "/F /T /IM QuickSetting.exe" *>&1 | Write-Log
  447.  
  448. # ::***********************************************************************************************
  449. # :: [Register PluginsContract.dll ]
  450. # ::
  451. # ::
  452. # ::***********************************************************************************************
  453. Write-Log "Start-Process -NoNewWindow -Wait -FilePath $env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\RegAsm.exe -ArgumentList `"/silent $env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\PluginsContract.dll`""
  454. Start-Process -NoNewWindow -Wait -FilePath $env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\RegAsm.exe -ArgumentList "/silent $env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\PluginsContract.dll" *>&1 | Write-Log
  455. if($? -ne $true)
  456. {
  457.     Write-Log "Registry PluginsContract.dll into system return code $LastExitCode"
  458. }
  459.  
  460. # ::***********************************************************************************************
  461. # :: [Register LenovoBatteryGaugePackage.dll ]
  462. # ::
  463. # ::
  464. # ::***********************************************************************************************
  465. Write-Log "Start-Process -NoNewWindow -Wait -FilePath regsvr32.exe -ArgumentList `"/s $env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\LenovoBatteryGaugePackage.dll`""
  466. Start-Process -NoNewWindow -Wait -FilePath regsvr32.exe -ArgumentList "/s $env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\LenovoBatteryGaugePackage.dll" *>&1 | Write-Log
  467. if($? -ne $true)
  468. {
  469.     Write-Log "Registry battery gauge to system return code $LastExitCode"
  470. }
  471.  
  472. # ::***********************************************************************************************
  473. # :: [Create Lenovo Battery Gauge Registry Entries ]
  474. # ::
  475. # ::
  476. # ::***********************************************************************************************
  477. Write-Log "Start-Process -NoNewWindow -Wait -FilePath reg.exe -ArgumentList `"add HKLM\Software\Lenovo\QuickSetting /f`""
  478. Start-Process -NoNewWindow -Wait -FilePath reg.exe -ArgumentList "add HKLM\Software\Lenovo\QuickSetting /f" *>&1 | Write-Log
  479. if($? -ne $true)
  480. {
  481.     Write-Log "Add registry key `"HKLM\Software\Lenovo\QuickSetting`" return code $LastExitCode"
  482. }
  483.  
  484. Write-Log "Start-Process -NoNewWindow -Wait -FilePath reg.exe -ArgumentList `"add HKLM\Software\Lenovo\QuickSetting /v Path /t REG_SZ /d $env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\ /f`""
  485. Start-Process -NoNewWindow -Wait -FilePath reg.exe -ArgumentList "add HKLM\Software\Lenovo\QuickSetting /v Path /t REG_SZ /d `"$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\\`" /f" *>&1 | Write-Log
  486. if($? -ne $true)
  487. {
  488.     Write-Log "Add registry value `"Path`" to `"HKLM\Software\Lenovo\QuickSetting`" return code $LastExitCode"
  489. }
  490.  
  491. Write-Log "Start-Process -NoNewWindow -Wait -FilePath reg.exe -ArgumentList `"add HKLM\Software\Lenovo\QuickSetting /v Location /t REG_SZ /d $env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\QuickSetting.exe /f`""
  492. Start-Process -NoNewWindow -Wait -FilePath reg.exe -ArgumentList "add HKLM\Software\Lenovo\QuickSetting /v Location /t REG_SZ /d `"$env:ProgramData\Lenovo\ImController\Plugins\LenovoBatteryGaugePackage\$arch\QuickSetting.exe`" /f" *>&1 | Write-Log
  493. if($? -ne $true)
  494. {
  495.     Write-Log "Add registry value `"Location`" to `"HKLM\Software\Lenovo\QuickSetting`" return code $LastExitCode"
  496. }
  497.  
  498. # ::***********************************************************************************************
  499. # :: [ Pin to task bar if needed]
  500. # ::
  501. # ::
  502. # ::***********************************************************************************************
  503. Write-Log "installing param is: $($args[0])"
  504. if ($($args[0]) -eq 1)
  505. {
  506.     if(BatteryGaugeIconControl($ShowBg) -ne 0 )
  507.     {
  508.         Write-Log "Show battery gauge icon on task tray sucessful"
  509.     }
  510.     else
  511.     {
  512.         Write-Log "Show battery gauge icon on task tray failure"
  513.     }
  514. }
  515.  
  516. Write-Log "success"
  517. Exit
  518.  
  519. # SIG # Begin signature block
  520. # MIIcZQYJKoZIhvcNAQcCoIIcVjCCHFICAQExDzANBglghkgBZQMEAgEFADB5Bgor
  521. # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
  522. # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBgZ2F4VJoIbmF8
  523. # 3QYfGeL/aMdCm5VwMndTgCls1qcQ7KCCF2AwggPuMIIDV6ADAgECAhB+k+v7fMZO
  524. # WepLmnfUBvw7MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJaQTEVMBMGA1UE
  525. # CBMMV2VzdGVybiBDYXBlMRQwEgYDVQQHEwtEdXJiYW52aWxsZTEPMA0GA1UEChMG
  526. # VGhhd3RlMR0wGwYDVQQLExRUaGF3dGUgQ2VydGlmaWNhdGlvbjEfMB0GA1UEAxMW
  527. # VGhhd3RlIFRpbWVzdGFtcGluZyBDQTAeFw0xMjEyMjEwMDAwMDBaFw0yMDEyMzAy
  528. # MzU5NTlaMF4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3Jh
  529. # dGlvbjEwMC4GA1UEAxMnU3ltYW50ZWMgVGltZSBTdGFtcGluZyBTZXJ2aWNlcyBD
  530. # QSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsayzSVRLlxwS
  531. # CtgleZEiVypv3LgmxENza8K/LlBa+xTCdo5DASVDtKHiRfTot3vDdMwi17SUAAL3
  532. # Te2/tLdEJGvNX0U70UTOQxJzF4KLabQry5kerHIbJk1xH7Ex3ftRYQJTpqr1SSwF
  533. # eEWlL4nO55nn/oziVz89xpLcSvh7M+R5CvvwdYhBnP/FA1GZqtdsn5Nph2Upg4XC
  534. # YBTEyMk7FNrAgfAfDXTekiKryvf7dHwn5vdKG3+nw54trorqpuaqJxZ9YfeYcRG8
  535. # 4lChS+Vd+uUOpyyfqmUg09iW6Mh8pU5IRP8Z4kQHkgvXaISAXWp4ZEXNYEZ+VMET
  536. # fMV58cnBcQIDAQABo4H6MIH3MB0GA1UdDgQWBBRfmvVuXMzMdJrU3X3vP9vsTIAu
  537. # 3TAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0
  538. # ZS5jb20wEgYDVR0TAQH/BAgwBgEB/wIBADA/BgNVHR8EODA2MDSgMqAwhi5odHRw
  539. # Oi8vY3JsLnRoYXd0ZS5jb20vVGhhd3RlVGltZXN0YW1waW5nQ0EuY3JsMBMGA1Ud
  540. # JQQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIBBjAoBgNVHREEITAfpB0wGzEZ
  541. # MBcGA1UEAxMQVGltZVN0YW1wLTIwNDgtMTANBgkqhkiG9w0BAQUFAAOBgQADCZuP
  542. # ee9/WTCq72i1+uMJHbtPggZdN1+mUp8WjeockglEbvVt61h8MOj5aY0jcwsSb0ep
  543. # rjkR+Cqxm7Aaw47rWZYArc4MTbLQMaYIXCp6/OJ6HVdMqGUY6XlAYiWWbsfHN2qD
  544. # IQiOQerd2Vc/HXdJhyoWBl6mOGoiEqNRGYN+tjCCBKMwggOLoAMCAQICEA7P9DjI
  545. # /r81bgTYapgbGlAwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxHTAbBgNV
  546. # BAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1hbnRlYyBUaW1l
  547. # IFN0YW1waW5nIFNlcnZpY2VzIENBIC0gRzIwHhcNMTIxMDE4MDAwMDAwWhcNMjAx
  548. # MjI5MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29y
  549. # cG9yYXRpb24xNDAyBgNVBAMTK1N5bWFudGVjIFRpbWUgU3RhbXBpbmcgU2Vydmlj
  550. # ZXMgU2lnbmVyIC0gRzQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCi
  551. # Yws5RLi7I6dESbsO/6HwYQpTk7CY260sD0rFbv+GPFNVDxXOBD8r/amWltm+YXkL
  552. # W8lMhnbl4ENLIpXuwitDwZ/YaLSOQE/uhTi5EcUj8mRY8BUyb05Xoa6IpALXKh7N
  553. # S+HdY9UXiTJbsF6ZWqidKFAOF+6W22E7RVEdzxJWC5JH/Kuu9mY9R6xwcueS51/N
  554. # ELnEg2SUGb0lgOHo0iKl0LoCeqF3k1tlw+4XdLxBhircCEyMkoyRLZ53RB9o1qh0
  555. # d9sOWzKLVoszvdljyEmdOsXF6jML0vGjG/SLvtmzV4s73gSneiKyJK4ux3DFvk6D
  556. # Jgj7C72pT5kI4RAocqrNAgMBAAGjggFXMIIBUzAMBgNVHRMBAf8EAjAAMBYGA1Ud
  557. # JQEB/wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDBzBggrBgEFBQcBAQRn
  558. # MGUwKgYIKwYBBQUHMAGGHmh0dHA6Ly90cy1vY3NwLndzLnN5bWFudGVjLmNvbTA3
  559. # BggrBgEFBQcwAoYraHR0cDovL3RzLWFpYS53cy5zeW1hbnRlYy5jb20vdHNzLWNh
  560. # LWcyLmNlcjA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vdHMtY3JsLndzLnN5bWFu
  561. # dGVjLmNvbS90c3MtY2EtZzIuY3JsMCgGA1UdEQQhMB+kHTAbMRkwFwYDVQQDExBU
  562. # aW1lU3RhbXAtMjA0OC0yMB0GA1UdDgQWBBRGxmmjDkoUHtVM2lJjFz9eNrwN5jAf
  563. # BgNVHSMEGDAWgBRfmvVuXMzMdJrU3X3vP9vsTIAu3TANBgkqhkiG9w0BAQUFAAOC
  564. # AQEAeDu0kSoATPCPYjA3eKOEJwdvGLLeJdyg1JQDqoZOJZ+aQAMc3c7jecshaAba
  565. # tjK0bb/0LCZjM+RJZG0N5sNnDvcFpDVsfIkWxumy37Lp3SDGcQ/NlXTctlzevTcf
  566. # Q3jmeLXNKAQgo6rxS8SIKZEOgNER/N1cdm5PXg5FRkFuDbDqOJqxOtoJcRD8HHm0
  567. # gHusafT9nLYMFivxf1sJPZtb4hbKE4FtAC44DagpjyzhsvRaqQGvFZwsL0kb2yK7
  568. # w/54lFHDhrGCiF3wPbRRoXkzKy57udwgCRNx62oZW8/opTBXLIlJP7nPf8m/PiJo
  569. # Y1OavWl0rMUdPH+S4MO8HNgEdTCCBLkwggOhoAMCAQICEEAaxGQhsxMhAw675BIa
  570. # xR0wDQYJKoZIhvcNAQELBQAwgb0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJp
  571. # U2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgG
  572. # A1UECxMxKGMpIDIwMDggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1
  573. # c2Ugb25seTE4MDYGA1UEAxMvVmVyaVNpZ24gVW5pdmVyc2FsIFJvb3QgQ2VydGlm
  574. # aWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwNDAyMDAwMDAwWhcNMzcxMjAxMjM1OTU5
  575. # WjCBvTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYD
  576. # VQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBW
  577. # ZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQD
  578. # Ey9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
  579. # eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMdhN16xATTbYtcVm/9Y
  580. # WowjI9ZgjpHXkJiDeuZYGTiMxfblZIW0onH77b252s1NALTILXOlx2lxlR85PLJE
  581. # B5zoDvpNSsQh3ylhjzIiYYLFhx9ujHxfFiBRRNFwT1fq4xzjzHnuWNgOwrNFk8As
  582. # 55oXK3sAN3pBM3jhM+LzEBp/hyy+9vX3QuLlv4diiV8AS9/F3eR1RDJBOh5xbmnL
  583. # C3VGCNHK0iuV0M/7uUBrZIxXTfwTEXmE7V5U9jSfCAHzECUGF0ra8R16ZmuYYGak
  584. # 2e/SLoLx8O8J6kTJFWriA24z06yfVQDH9ghqlLlf3OAz8YRg+VsnEbT8FvK7VmqA
  585. # JY0CAwEAAaOBsjCBrzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjBt
  586. # BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa
  587. # BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j
  588. # b20vdnNsb2dvLmdpZjAdBgNVHQ4EFgQUtnf6aUhHn1MS1cLqBzJ2B9GXBxkwDQYJ
  589. # KoZIhvcNAQELBQADggEBAEr4+LAD5ixne+SUd2PMbkz5fQ4N3Mi5NblwT2P6JPps
  590. # g4xHnTtj85r5djKVkbF3vKyavrHkMSHGgZVWWg6xwtSxplms8WPLuEwdWZBK75AW
  591. # KB9arhD7gVA4DGzM8T3D9WPjs+MhySQ56f0VZkb0GxHQTXOjfUb5Pe2oX2LU8T/4
  592. # 4HRXKxidgbTEKNqUl6Vw66wdvgcR8NXb3eWM8NUysIPmV+KPv76hqr89HbXUOOrX
  593. # sFw6T2o/j8BmbGOq6dmkFvSB0ZUUDn3NlTTZ0o9wc4F7nH69mGHYRYeYkMXrhjDG
  594. # Nb/w/8NViINL7wWSBnHyuJiTt+zNgmHxOOZPl5gqWo0wggS7MIIDo6ADAgECAhBe
  595. # aloGbfZB2JYM7qNu88tLMA0GCSqGSIb3DQEBCwUAMIGEMQswCQYDVQQGEwJVUzEd
  596. # MBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVj
  597. # IFRydXN0IE5ldHdvcmsxNTAzBgNVBAMTLFN5bWFudGVjIENsYXNzIDMgU0hBMjU2
  598. # IENvZGUgU2lnbmluZyBDQSAtIEcyMB4XDTE3MTEyODAwMDAwMFoXDTE4MTEyMDIz
  599. # NTk1OVowbDELMAkGA1UEBhMCVVMxFzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMRQw
  600. # EgYDVQQHDAtNb3JyaXN2aWxsZTEPMA0GA1UECgwGTGVub3ZvMQwwCgYDVQQLDANH
  601. # MDgxDzANBgNVBAMMBkxlbm92bzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
  602. # ggEBAMkbsV4DJ2Kv995qSNCYf/vJ001JkObdtW4dibreW2Y/fvIed9ztjXFnGoTZ
  603. # 6tyJJdanw9+fTK3UNuE0GvaLraq2B2argT08VsOggKOh6nTCeSt50/bkvaLHBxeR
  604. # Qhwc8rO1HeDuJre8+P1RTCzMS5Nkzpb2bTm3kC4D4ZHonST4s5CxHVC7dIo6dqNt
  605. # qzR+FDaTn+Vl2rxcC8oUs7AEEOz5acVriBX3Xah03e8roY0JUGVRvO96tRAZLC6O
  606. # +nubZce3wnsOitXQt8KKxaZOnvyeBlX0IgnJtYr+WRktLyeQtoNoWTimiPD/0PFI
  607. # 5j0Nt8qWaZ4Jj088Wd1Xr+4s4NkCAwEAAaOCAT4wggE6MAkGA1UdEwQCMAAwDgYD
  608. # VR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMGEGA1UdIARaMFgwVgYG
  609. # Z4EMAQQBMEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUG
  610. # CCsGAQUFBwICMBkMF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBhMB8GA1UdIwQYMBaA
  611. # FNTABiJJ6zlL3ZPiXKG4R3YJcgNYMCsGA1UdHwQkMCIwIKAeoByGGmh0dHA6Ly9y
  612. # Yi5zeW1jYi5jb20vcmIuY3JsMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYT
  613. # aHR0cDovL3JiLnN5bWNkLmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL3JiLnN5bWNi
  614. # LmNvbS9yYi5jcnQwDQYJKoZIhvcNAQELBQADggEBAAJtYMiLmB2sXEPJnwuYI2Nz
  615. # vm5h9kK8QkMNMWSukmVGuik8DVWCOjRHCvkyc9lPODs7ALNVU9RbMJibZK431H98
  616. # pUp+4yIPNCEodl1m0PuxTTRYWuM1VMNBq+fwxwM6zFecc81coOtVBfUrxv8ZW777
  617. # +1I0Ko+zAtXnrvYES8z6cAbk8R7ueeZMEydAeyZp/30F43T3qDUU8BxMQD/FAx6b
  618. # Rq6ohCjJ2DHnWvMKK3kgSli34iNz2bEheQkZ23S0cwDL1RsEy5Cys6eusTJ9ubGB
  619. # huxBmgvTtogafcNzBSwe6Cfc32FnSz7YqYXJZiz4Jq7Vpme83HeRJVzRrWwjlK8w
  620. # ggVHMIIEL6ADAgECAhB8GzU1SufbdOdBXxFpymuoMA0GCSqGSIb3DQEBCwUAMIG9
  621. # MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsT
  622. # FlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlT
  623. # aWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1Zl
  624. # cmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X
  625. # DTE0MDcyMjAwMDAwMFoXDTI0MDcyMTIzNTk1OVowgYQxCzAJBgNVBAYTAlVTMR0w
  626. # GwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMg
  627. # VHJ1c3QgTmV0d29yazE1MDMGA1UEAxMsU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYg
  628. # Q29kZSBTaWduaW5nIENBIC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
  629. # AoIBAQDXlUPU3N9nrjn7UqS2JjEEcOm3jlsqujdpNZWPu8Aw54bYc7vf69F2P4pW
  630. # justS/BXGE6xjaUz0wt1I9VqeSfdo9P3Dodltd6tHPH1NbQiUa8iocFdS5B/wFlO
  631. # q515qQLXHkmxO02H/sJ4q7/vUq6crwjZOeWaUT5pXzAQTnFjbFjh8CAzGw90vlvL
  632. # EuHbjMSAlHK79kWansElC/ujHJ7YpglwcezAR0yPfcPeGc4+7gRyjhfT//CyBTIZ
  633. # TNOwHJ/+pXggQnBBsCaMbwDIOgARQXpBsKeKkQSgmXj0d7TzYCrmbFAEtxRg/w1R
  634. # 9KiLhP4h2lxeffUpeU+wRHRvbXL/AgMBAAGjggF4MIIBdDAuBggrBgEFBQcBAQQi
  635. # MCAwHgYIKwYBBQUHMAGGEmh0dHA6Ly9zLnN5bWNkLmNvbTASBgNVHRMBAf8ECDAG
  636. # AQH/AgEAMGYGA1UdIARfMF0wWwYLYIZIAYb4RQEHFwMwTDAjBggrBgEFBQcCARYX
  637. # aHR0cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9k
  638. # LnN5bWNiLmNvbS9ycGEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3Muc3ltY2Iu
  639. # Y29tL3VuaXZlcnNhbC1yb290LmNybDATBgNVHSUEDDAKBggrBgEFBQcDAzAOBgNV
  640. # HQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVN5bWFudGVjUEtJ
  641. # LTEtNzI0MB0GA1UdDgQWBBTUwAYiSes5S92T4lyhuEd2CXIDWDAfBgNVHSMEGDAW
  642. # gBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEAf+vKp+qL
  643. # dkLrPo4gVDDjt7nc+kg+FscPRZUQzSeGo2bzAu1x+KrCVZeRcIP5Un5SaTzJ8eCU
  644. # RoAYu6HUpFam8x0AkdWG80iH4MvENGggXrTL+QXtnK9wUye56D5+UaBpcYvcUe2A
  645. # OiUyn0SvbkMo0yF1u5fYi4uM/qkERgSF9xWcSxGNxCwX/tVuf5riVpLxlrOtLfn0
  646. # 39qJmc6yOETA90d7yiW5+ipoM5tQct6on9TNLAs0vYsweEDgjY4nG5BvGr4IFYFd
  647. # 6y/iUedRHsl4KeceZb847wFKAQkkDhbEFHnBQTc00D2RUpSd4WjvCPDiaZxnbpAL
  648. # GpNx1CYCw8BaIzGCBFswggRXAgEBMIGZMIGEMQswCQYDVQQGEwJVUzEdMBsGA1UE
  649. # ChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0
  650. # IE5ldHdvcmsxNTAzBgNVBAMTLFN5bWFudGVjIENsYXNzIDMgU0hBMjU2IENvZGUg
  651. # U2lnbmluZyBDQSAtIEcyAhBealoGbfZB2JYM7qNu88tLMA0GCWCGSAFlAwQCAQUA
  652. # oIGEMBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZIhvcNAQkDMQwGCisG
  653. # AQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcN
  654. # AQkEMSIEII5CIqS6M7K9pYH8kNNSj+tyS+ulkqKpodTBEfr/vImYMA0GCSqGSIb3
  655. # DQEBAQUABIIBAI1PmmgK0tq8l/ongqEAVGm2OfOkiv3T3IYEzySy5jfK53nggLW2
  656. # vUqDYgX3f3o+xn8AkMMD6ud67ZmUwyC9WJT7rMYky49lQZxgD3puau5TTlAWyeQt
  657. # +g7qs562J2ZqcdTPCgZk5SDatKGgvEG7VDIr4Lxbz80qlBfuSOzHT4yRRCfzPZIm
  658. # RjYSH4kiEmHP2+qjg67zvJsBhIClBaO6+fpgM1RSth97MXYsWg8mZSE4ey3GRugZ
  659. # +tU0tKnjFyPcIyhxcOc615X2U7ySbC2Vn4JJV7Ulh1dOLsSJge/oZmiup4RQGnTg
  660. # ghDr4Qa5n/35Wlo5NT5TM3JbFUWhuCo7VmGhggILMIICBwYJKoZIhvcNAQkGMYIB
  661. # +DCCAfQCAQEwcjBeMQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29y
  662. # cG9yYXRpb24xMDAuBgNVBAMTJ1N5bWFudGVjIFRpbWUgU3RhbXBpbmcgU2Vydmlj
  663. # ZXMgQ0EgLSBHMgIQDs/0OMj+vzVuBNhqmBsaUDAJBgUrDgMCGgUAoF0wGAYJKoZI
  664. # hvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTgwNDI0MDk1NDQ0
  665. # WjAjBgkqhkiG9w0BCQQxFgQUr/avqW3a5suHjTcIAVNGYDW8kCgwDQYJKoZIhvcN
  666. # AQEBBQAEggEALQdQaiV4FuobMdGtZTqhZ0gVE1ggQE6Vd3ruSHWLfSqu0dlyA9LA
  667. # Rg4XGui1lCA/sLCgyquWG7oMzW2PwyWDxt6Cw/3mHyUCBnRU6GxPl/MdQP38pM3D
  668. # xfDrc93YLar+dmCWJmSdbXrUJRphP3KR+Blp6AN2sKucKTqgqQk2OoWKuurVgFKE
  669. # /SMJKbH9KBdy3vEAyGwS87G6DYzW/11kNblL9e0m7RMchS/jO+sjix5lPAZyu2xp
  670. # G1+BQQW6MsgvhfZCwV3mV6QP/KPorJvPBrGDZf1PLg4tLBY20faG4jomBORj4oAz
  671. # 3n1CWQnpkrIR5CnvJr3lhqSX4BY1T+Enbw==
  672. # SIG # End signature block
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top