├── .gitignore ├── Image ├── Screen │ ├── Interface-1.3.2.jpg │ ├── Interface-1.4.0.jpg │ ├── Interface-1.4.1.jpg │ ├── LD.jpg │ ├── Services.jpg │ └── Time+Lic+Update.jpg └── ico │ ├── RSA-Logo-Source.ico │ ├── RSA-Logo-Text.jpg │ └── RSA-Logo.ico ├── LICENSE ├── README.md ├── README_RU.md └── Sources └── RSA-1.4.1.ps1 /.gitignore: -------------------------------------------------------------------------------- 1 | Sources/RSA-1.1.* 2 | Sources/RSA-1.2.* -------------------------------------------------------------------------------- /Image/Screen/Interface-1.3.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/Interface-1.3.2.jpg -------------------------------------------------------------------------------- /Image/Screen/Interface-1.4.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/Interface-1.4.0.jpg -------------------------------------------------------------------------------- /Image/Screen/Interface-1.4.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/Interface-1.4.1.jpg -------------------------------------------------------------------------------- /Image/Screen/LD.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/LD.jpg -------------------------------------------------------------------------------- /Image/Screen/Services.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/Services.jpg -------------------------------------------------------------------------------- /Image/Screen/Time+Lic+Update.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/Time+Lic+Update.jpg -------------------------------------------------------------------------------- /Image/ico/RSA-Logo-Source.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/ico/RSA-Logo-Source.ico -------------------------------------------------------------------------------- /Image/ico/RSA-Logo-Text.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/ico/RSA-Logo-Text.jpg -------------------------------------------------------------------------------- /Image/ico/RSA-Logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/ico/RSA-Logo.ico -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2022-2023 Lifailon 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a 4 | copy of this software and associated documentation files (the "Software"), 5 | to deal in the Software without restriction, including without limitation 6 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 7 | and/or sell copies of the Software, and to permit persons to whom the 8 | Software is furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 19 | DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | RSA (Remote Shadow Administrator) 3 |

4 | 5 |

6 | English | Русский 7 |

8 | 9 | GUI for managing connections to current `RDP` sessions via **Shadow connections**, and also contains a set of functions for remote interaction with the Windows operating system and automation of the administration process. 10 | 11 | Can be used as an alternative to remote connection tools such as [Radmin](https://www.radmin.com) or [TightVNC](https://www.tightvnc.com), which require client-server software installation. Written in Windows PowerShell using [Windows Forms](https://en.wikipedia.org/wiki/Windows_Forms), does not contain module dependencies. Tested on Windows Server 2016, 2019 DC and Windows 10 Pro systems in Russian and English localizations. 12 | 13 | **[🚀 Download RSA.exe](https://github.com/Lifailon/RSA/releases/latest)** 14 | 15 | When you select a server and click the `Query` button, a list of current users is displayed in the form of a table. The host's availability is preliminarily checked by means of `ping` and `WinRM`, as well as `uptime` with output to the status bar. To change the list of computers, select **File - List Change** (`Ctrl+S`) in the menu, and to update the list **List Update** (`Ctrl+R`). When selecting a user, four actions can be performed: **Connect** (Shadow connection) with the ability to request a connection and without (the latter is conveniently configured via `GPO`), disconnecting the user (logging out of the system), displaying a list of running user processes with the ability to terminate them (by editing the mouse button on the selected process - **Stop Process**) and sending the typed message to all users on the server or selected in the table. It is possible to fill the list of servers with **AD computers** (`Ctrl+D`) and also to display the list in table format (`Ctrl+T`) with the ability to sort and interact with the selected computer. 16 | 17 | 18 | 19 | 20 | 21 | 22 | To connect to the server via `RDP`, `mstsc` is used with the `/admin` key, which allows you to connect to the `RDSH` server bypassing the Broker for distributing connections. `cmdkey` is used for authentication, after passing a one-time authentication (`File` - `Authentication`), preliminary authentication occurs for all servers in the list and is valid until the program is closed, which allows you not to store the administrator password in the code, as well as the OS key storage (which can be compromised). 23 | 24 | ## Add-ons 25 | 26 | - **Admin - Services** - displays a list of services on a local or remote computer with the ability to restart and stop them. 27 | - **Admin - All Remote User Process** - is used to display a list of all user processes with the ability to stop them. 28 | - **Admin & WMI - Software** - displays a list of installed software with the ability to remove it 29 | - **WMI - Windows Update** - displays a list of updates with further search by `HotFixID` in `DISM Packages` and removal. 30 | - **Admin - SMB Open Files** - displays a list of network resources used by users on the network with the ability to close their sessions. 31 | - **Admin - Get-Netstat** - displays a list of listening and established TCP connections with conversion of the remote host name (`nslookup`) and the process used. 32 | - **Admin - Get-RemoteDNS** - used to remotely view on a `DC` (does not require installation of the module from the `RSAT`) the list of all `DNS` zones and child records of the selected zone with the ability to delete the selected record. 33 | - **Admin - GPUpdate** - updating group policies on a remote computer. 34 | - **Admin - GPResult** - generating a summary report on the results of group policies in `HTML` format for the specified user on the selected host. 35 | - **Power - Reboot & Power Off** - reboot or power off the host with a 60-second delay. 36 | - **Power - Screen lock & Sleep mode** - enabling/disabling screen lock and sleep mode on a remote computer. 37 | - **Power - Get-ARP & Get-DHCP** - used to find the MAC address of a turned off computer in order to turn it on using `WOL` (Wake-on-Lan). 38 | - **Event** - power logs and five event logs for session analysis (connections and disconnections). 39 | - **Broker** - automation of cmdlets for interaction with the `RDSH` farm. 40 | - **WMI - Logical Disk & Memory** - displays the total and available volume of local disks and RAM. 41 | - **WMI - Drivers** - display a list of drivers. 42 | - **WMI - File Share** - a list of public resources on the host (directories or printers). 43 | - **WMI - Power RDP & Power NLA** - checks the status of `RDP` (Remote Desktop Protocol) and `NLA` (Network Level Authentication) on a remote host with the ability to enable and disable. 44 | - **WMI - Setup** - installing software on a remote computer (via `install-package` or `WMI`). 45 | 46 | ### Scripts for synchronizing computer clocks (w32tm) 47 | 48 | - Displays the current time on the server and the difference with the source server. 49 | - Find out the time source, as well as the frequency and time of the last synchronization (the latter is displayed depending on the language pack on the remote machine). 50 | - Check the server as a time source. 51 | - Change the time source on the remote server to the nearest `DC` (with the `PDC` role) in the subnet. 52 | - Change to an external time source (for example, `ru.pool.ntp.org`). 53 | - Immediately synchronize the time on the remote server with the source. 54 | 55 | ### Scripts for activating corporate licenses in the network (KMS) 56 | 57 | - Find out the OS edition and version, license acquisition channel, key type, activation status and licensing server. 58 | - Find out the address of the KMS server in the network by srv record. 59 | - `GVLK` activator. Contains public keys `GVLK` (Generic Volume License Key) with the ability to activate remotely. 60 | - Manually specify the KMS server (for example, if the KMS server is not published in DNS). 61 | - Request (update) the license from the KMS server. 62 | -------------------------------------------------------------------------------- /README_RU.md: -------------------------------------------------------------------------------- 1 |

2 | RSA (Remote Shadow Administrator) 3 |

4 | 5 |

6 | English | Русский 7 |

8 | 9 | Графический интерфейс для управления подключениями к текущим `RDP` сессиям по средствам **Shadow-подключений**, а так же содержит набор функций для удаленного взаимодействия с операционной системой Windows и автоматизации процесса администрирования. 10 | 11 | Можно использовать как альтернативное средство для удаленного подключения, таким как [Radmin](https://www.radmin.com) или [TightVNC](https://www.tightvnc.com), которые требуют установки программного обеспечения по модели клиент-сервер. Написан на Windows PowerShell с использованием [Windows Forms](https://en.wikipedia.org/wiki/Windows_Forms), не содержит зависимостей в виде модулей. Протестировано на системах Windows Server 2016, 2019 DC и Windows 10 Pro в русской и английской локализациях. 12 | 13 | **[🚀 Скачать RSA.exe](https://github.com/Lifailon/RSA/releases/latest)** 14 | 15 | При выборе сервера и нажатии на кнопку `Query` отображается список текущих пользователей в виде таблицы. Предварительно проверяется доступность хоста по средствам `ping` и `WinRM`, а так же `uptime` с выводом в статус бар. Что бы изменить список компьютеров, выберите в меню **File - List Change** (`Ctrl+S`), а для обновления списка **List Update** (`Ctrl+R`). При выборе пользователя, можно произвести четыре действия: **Connect** (Shadow подключение) с возможностью запроса на подключение и без (последнее удобно настраивается через `GPO`), отключение пользователя (выход из системы), отображение списка запущенных процессов пользователя с возможность их завершения (правкой кнопкой мыши по выбранному процессу - **Stop Process**) и отправка набранного сообщения всем пользователям на сервере или выбранному в таблице. Есть возможность заполнить список серверов **компьютерами AD** (`Ctrl+D`) а так же вывести список в формате таблицы (`Ctrl+T`) с возможность сортировки и взаимодействия с выбранным компьютером. 16 | 17 | 18 | 19 | 20 | 21 | 22 | Для подключение к серверу через `RDP` используется `mstsc` с ключем `/admin`, что позволяет подключаться к `RDSH` серверу минуя Broker для распредиления подключений. Для аутентификации используется `cmdkey`, после прохождения единоразовой аутентификации (`File` - `Authentication`), проиходит предварительная аутентификация для всех серверов в списке и действует до закрытия программы, что позволяет не хранить пароль администратора в коде, а так же хранилище ключей ОС (которые можно скомпрометировать). 23 | 24 | ## Дополнения 25 | 26 | - **Admin - Services** - выводит списка служб на локальном или удаленном компьютере с возможность их перезапуска и остановки. 27 | - **Admin - All Remote User Process** - используется для отображения списка всех пользовательских процессов с возможность их остановки. 28 | - **Admin & WMI - Software** - выводит список установленного программного обспечения с возможность его удаления 29 | - **WMI - Windows Update** - вывода списка обновлений с дальнейшим поиском по `HotFixID` в `DISM Packages` и удалением. 30 | - **Admin - SMB Open Files** - отображение списка используемых сетевых сесурсов пользователями в сети с возможность закрытия их сессии. 31 | - **Admin - Get-Netstat** - вывод списка слушающих и установленных TCP-соединений с преобразованием имени удаленного хоста (`nslookup`) и используемого процесса. 32 | - **Admin - Get-RemoteDNS** - используется для удаленного просмотра на `DC` (не требует установки модуля из состава `RSAT`) списка всех `DNS` зон и дочерних записей выбранной зоны с возможностью удаления выбранной записи. 33 | - **Admin - GPUpdate** - обновление групповых политик на удаленном компьютере. 34 | - **Admin - GPResult** - составление сводного отчёта по результатам групповых политик в формате `HTML` для указанного пользователя на выбранном хосте. 35 | - **Power - Reboot & Power Off** - перезагрузка или выключение хоста с задержкой 60 секунд. 36 | - **Power - Screen lock & Sleep mode** - включение/отключение блокировки экрана и спящего режима на удаленном компьютере. 37 | - **Power - Get-ARP & Get-DHCP** - используются для поиска MAC-адреса выключенного компьютера с целью его включения с помощью `WOL` (Wake-on-Lan). 38 | - **Event** - логи питания и пять журналов событий для анализа сессий (подключений и отключений). 39 | - **Broker** - автоматизация командлетов взаимодействия с фермой `RDSH`. 40 | - **WMI - Logical Disk & Memory** - выводит общий и доступный объём локических дисков и оперативной памяти. 41 | - **WMI - Drivers** - отобразить список драйверов. 42 | - **WMI - File Share** - список общедоступных ресурсов на хосте (директорий или принтеров). 43 | - **WMI - Power RDP & Power NLA** - проверяет статус работы `RDP` (Remote Desktop Protocol) и `NLA` (Network Level Authentication) на удаленно хосте с возможность включения и отключения. 44 | - **WMI - Setup** - установка программного обеспечения на удаленный компьютер (через `install-package` или `WMI`). 45 | 46 | ### Скрипты по синхронизации компьютерных часов (w32tm) 47 | 48 | - Отображает текущее время на сервере и разницу с сервером источника. 49 | - Узнать источник времени, а так же частоту и время последней синхронизации (последнее отображается в зависимости от языкового пакета на удаленной машине). 50 | - Проверка сервера как источника времени. 51 | - Изменить на удаленном сервере источник времени на ближайший `DC` (с ролью `PDC`) в подсети. 52 | - Изменить на внешний источник времени (например, `ru.pool.ntp.org`). 53 | - Незамедлительно синхронизировать время на удаленном сервере с источником. 54 | 55 | ### Скрипты по активации корпоративных лицензий в сети (KMS) 56 | 57 | - Узнать редакцию и версию ОС, канал получения лицензии, тип ключа, статус активации и сервер лицензирования. 58 | - Узнать адрес KMS-сервера в сети по srv-записи. 59 | - `GVLK` активатор. Содержит публичные ключи `GVLK` (Generic Volume License Key) с возможностью удаленной активации. 60 | - Указать в ручную KMS-сервер (например, если KMS-сервер не опубликован в DNS). 61 | - Запросить (обновить) лицензию с KMS-сервера. 62 | -------------------------------------------------------------------------------- /Sources/RSA-1.4.1.ps1: -------------------------------------------------------------------------------- 1 | #region Config 2 | $conf = "$home\Documents\RSA.conf.txt" 3 | if (!(Test-Path $conf)) { 4 | New-Item -Path $conf -ItemType "File" -Value "localhost 5 | server.domain.local" | Out-Null 6 | } 7 | $domain = "$env:userdnsdomain" 8 | $Font = "Arial" 9 | $Size = "12" 10 | #endregion 11 | 12 | #region Language-en 13 | $Text_Language = "Language" 14 | $Text_File = "File" 15 | $Text_Authentication = "Authentication" 16 | $Text_Exit = "Exit" 17 | $Text_UserList = "User List" 18 | $Text_ListChange = "List Change" 19 | $Text_Server = "Server" 20 | $Text_ServerList = "Host List" 21 | $Text_ServerListDomain = "List Domain Computers" 22 | $Text_ServerTableDomain = "Table Domain Computers" 23 | $Text_ListUpdate = "List Update" 24 | $Text_Query = "Query" 25 | $Text_Connect = "Connect" 26 | $Text_Disconnect = "Disconnect" 27 | $Text_Process = "Process" 28 | $Text_Send = "Send" 29 | $Text_Power = "Power" 30 | $Text_Reboot = "Reboot" 31 | $Text_PowerOff = "Power off" 32 | $Text_PowerOn = "Power on" 33 | $Text_Cacel = "Cancel" 34 | $Text_CreenLock = "Screen lock" 35 | $Text_SleepMode = "Sleep mode" 36 | $Text_Restart = "Restart" 37 | $Text_Stop = "Stop" 38 | $Available = "Available" 39 | $NotAvailable = "not available" 40 | $NoUsers = "No login users" 41 | $UpTimeText = "Uptime:" 42 | $LastBoot = "Last boot time:" 43 | $Days = "Days" 44 | $Hours = "Hours" 45 | $Minutes = "Minutes" 46 | $dgvQueryUser = "User" 47 | $dgvQuerySession = "Session" 48 | $dgvQueryStatus = "Status" 49 | $dgvQueryIdleTime = "IdleTime" 50 | $dgvQueryLogonTime = "LogonTime" 51 | $Text_Time = "Time" 52 | $Text_Time_Source = "Time Source" 53 | $Text_Check_Source = "Check Source" 54 | $Text_Change_Domain = "Change Source on PDC" 55 | $Text_Change_External = "Change Source on External" 56 | $Text_Synchronize_Time = "Synchronize Time" 57 | $Text_LD = "Logical Disks" 58 | $Text_Memory = "Memory" 59 | $Text_Setup = "Setup" 60 | $Text_Update = "Update" 61 | $Text_Drivers = "Drivers" 62 | $Text_Volume = "Volume" 63 | $Text_Size = "Size" 64 | $Text_Free = "Free" 65 | $Text_FreeProc = "%Free" 66 | $Text_Admin = "Admin" 67 | $Text_CompManager = "Computer Manager" 68 | $Text_Service = "Service" 69 | $Text_Services = "Services" 70 | $Text_Remote = "Remote" 71 | $Text_Process = "Process" 72 | $Text_Processes = "Processes" 73 | $Text_User = "User" 74 | $Text_Software = "Software" 75 | $Text_Packages = "Packages" 76 | $Text_OpenFiles = "Open Files" 77 | $Text_Open = "Open" 78 | $Text_Path = "Path" 79 | $Text_Event = "Event" 80 | $Text_License = "License" 81 | $Text_DomainServers = "Domain Servers" 82 | $Text_Activator = "Activator" 83 | $Text_Select = "Select" 84 | $Text_SelectAction = "Select Action" 85 | $Text_SelectServer = "Select Server" 86 | $Text_GetLicense = "Get License" 87 | $Text_ToServer = "on server" 88 | $Text_To = "to" 89 | $Text_ALL = "All" 90 | $Text_Connect = "Connect" 91 | $Text_Delete = "Delete" 92 | $Text_Completed = "Completed" 93 | $Text_Result = "Result" 94 | $Text_Close = "Close" 95 | $Text_Scheduled = "Scheduled" 96 | $Text_Error = "Error" 97 | $Text_Successfully = "Successfully" 98 | $Text_inSeconds = "in 60 seconds" 99 | $Text_AlReady = "already" 100 | $Text_Performed = "Authorization performed by user" 101 | $Text_NotPerformed = "Authorization not performed" 102 | $Text_On = "On" 103 | $Text_Off = "Off" 104 | #endregion 105 | 106 | #region ico 107 | Add-Type -assembly System.Windows.Forms 108 | Add-Type -assembly System.Drawing 109 | 110 | $ico_rdp = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command mstsc).Path) 111 | $ico_usr = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command lusrmgr.msc).Path) 112 | $ico_cred = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command netplwiz).Path) 113 | $ico_pad = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command notepad).Path) 114 | $ico_info = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command msinfo32).Path) 115 | $ico_comp = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command compmgmt).Path) 116 | $ico_services = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command services.msc).Path) 117 | $ico_proc = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command taskmgr.exe).Path) 118 | $ico_net = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command ncpa.cpl).Path) 119 | $ico_gp = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command gpedit.msc).Path) 120 | $ico_gpr = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command rsop.msc).Path) 121 | $ico_disk = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command diskmgmt.msc).Path) 122 | $ico_iscsi = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command iscsicpl.exe).Path) 123 | $ico_system = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command sysdm.cpl).Path) 124 | $ico_netfolder = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command fsmgmt.msc).Path) 125 | $ico_report = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command devmgmt.msc).Path) 126 | $ico_event = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command eventvwr.exe).Path) 127 | $ico_soft = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command control.exe).Path) 128 | $ico_upd = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command wusa.exe).Path) 129 | $ico_dism = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command cleanmgr).Path) 130 | $ico_dev = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command devmgmt.msc).Path) 131 | $ico_time = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command timedate.cpl).Path) 132 | $ico_kms = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command msconfig).Path) 133 | $ico_sync = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command mobsync.exe).Path) 134 | $ico_desk = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command desk.cpl).Path) 135 | $ico_regedit = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command regedit).Path) 136 | $ico_perf = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command perfmon.msc).Path) 137 | 138 | $dll_import = @" 139 | using System; 140 | using System.Drawing; 141 | using System.Runtime.InteropServices; 142 | namespace System 143 | { 144 | public class IconExtractor 145 | { 146 | public static Icon Extract(string file, int number, bool largeIcon) 147 | { 148 | IntPtr large; 149 | IntPtr small; 150 | ExtractIconEx(file, number, out large, out small, 1); 151 | try 152 | { 153 | return Icon.FromHandle(largeIcon ? large : small); 154 | } 155 | catch 156 | { 157 | return null; 158 | } 159 | } 160 | [DllImport("Shell32.dll", EntryPoint = "ExtractIconExW", CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] 161 | private static extern int ExtractIconEx(string sFile, int iIndex, out IntPtr piLargeVersion, out IntPtr piSmallVersion, int amountIcons); 162 | } 163 | } 164 | "@ 165 | Add-Type -TypeDefinition $dll_import -ReferencedAssemblies System.Drawing 166 | 167 | $Logo = " 168 | AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHxwVEB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB8cFRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAem5UgHpuVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6blSAem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHpuVIB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAem5UgHpuVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6blSAem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHpuVIB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAem5UgHpuVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6blSAem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHpuVIB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAem5UgHpuVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8cFRAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgGthSt9qX0n/al9J/2pfSf9qX0n/al9J/2pfSf9qX0n/al9J/2pfSf9qX0n/al9J/2pfSf9qX0n/al9J/2pfSf9qX0n/al9J/2pfSf9qX0n/al9J/2thSt96blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAfHBUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFlFv2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFlFvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkWUW/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWUW/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRZRb9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RZRb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFlFv2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFlFvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkWUW/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWUW/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRZRb9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RZRb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFlFv2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFlFvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkWUW/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWUW/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRZRb9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RZRb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFlFv2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFlFvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4cFggeW9Uj3ptU996blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP92alH/dWlQ/3VpUP91aVD/dWlQ/3VpUP91aVD/dWlQ/3VpUP91aVD/dWlQ/3VpUP91aVD/dWlQ/3VpUP91aVD/dWlQ/3VpUP91aVD/dWlQ/3VpUP92alH/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em1T33lvVI94cFggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAcFAQeG9Tn3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP94b1OfgHBQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAenBVMHltVO96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVTvenBVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHpwVTB5bVTvem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVTvenBVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAcFAQem1T33puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96bVPfgHBQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHpuVIB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAcFAQeW1U73puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVO+AcFAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHptVWB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ptVWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW9Uj3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW9UjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//957P/+uSw///qtv/75bH//Oay//zmsv//5bP//+Sy//nisv//67v/+OGx//jhsf//6Lb//ea0//7jsP//5rP//OWz//zntP/647H//+i2//zjsf/+5rL/++Ov///osv/95bH/++Ov//3lsf//6rb/+uOx///otv/34q///ei1//zmsv/85rL//ui0//zmsv/957P//eez//fhrf//6bX/+uSw//zmsv//6Lb//+i2//3mtv/75bX/++W1//zntP/+5rL//+mz//7msv/+5rL/+uSw///ptf/85bP//OWz//zntP/55LH/++az///quP/44a///eez///ns//546//++az//zntP//6Lb//ea0//rjsf/85rL//eWx//vjr//+5rL//uay//zls//85bP//OWz//zls//75bX/++W1//7nt//75LL//ea0///ptf/85LD//uay//7otP/65LD//OWz//fir//85bP//+i2///mtP/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//7msv/44q7//um1//fksf/65rb//Oa2//3mtv/+5LX//+S1///ltv/95LL//ea0//zls//95LL//+i2//zjsf/85bP//ee3//3mtv/75LL//+i2//jhr///67n/+uSw//3mtP/95rT/++Sy//7ntf/75LT/+uOz//rktP/96LX//eix//3mrv/857D/++av//fiq//55a7//+q2//rlsf/+6bX/++ay//fir//34q//+uWy//rntP/55rP/+uWy//rirv//6bX//eSy//7ls//85bP//ea0//jisv/957f/+eOz//vltf/85rb/+uS0//zmtv/75rP/++Sy//3nt//65LT/+uS0//vktP/+57X//+i2//zls///57P//+i0//7msv/+5rL//OWz//zls//85bP//OWz//vltf/75bX/+uOx//7ntf/85bP/+OKy///puf/647X/+uS0//7ouP/95rb//OWz///ntf//57P//+i1//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//+a0//zntP/z4rH/9ua3//bmuP/247j/++a5//rhtf//47b//+Kz///otv/85bP//+a0//7ls//74rD//+e1//vktP//6Lj/+uOz//zltf/75bX/+uS0//3muP/347T/+uO1//vktv/75bX/+eOz//vktP/85bX//ea2//rksP/75q///Oiv///rsv/55a7//ei0//zqtf/047D/9+az//bltP/457b/+um4//not//35bb/9uW0//fmtf/65rb/+uS0//3mtv/+57f/+eKy//7ntf/75LL//OWz//vltf/+6Lj/+eOz//zouP/55bb/+OS1//fitf/657r/9uO2//zlt//95rj/+uK0//nisv/95rb//OWz//rhr///57P//uay//7msv/85bP//OWz//zls//85bP/++W1//vltf/95rT/+uWy//vnuP/55Lf/+ea7//Thtv/55rv/+uW4//jhs///6Ln//uOx//vgrf//5rP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//75LT/9+O0//Tnu//w5Lr/9OS///Hfuv/z4rv/+ua9///luP//4K///eWx///ptf/+5rL//eSy//7nt//75LT//ue1//vksv//6Lj/++S2//vmuf/247j/8uC3//jovv/86sH/8d+2//fkuf/75rn/++S2//3mtv/647H//Oay//3osf/96LH/9OCp//ros//56LX/8OGw//bouP/05bf/8eS4//HkuP/x5Lj/9OS5//Xlu//15Ln/9eS5//bjuP/55rv/9eK3//rluP/45LX//ee3//zls//95rT/9+Cu//7ntf/957f/9uKz//nmuf/147r/9OO8//Dgu//w4br/+OK4//nitP//57n//+q6//vktP//6bf//+a0///mtP/+5rL//uay//zls//85bP//OWz//zls//75bX/++W1//vms//757f/9uO2//Tkuv/x4bz/9eXB//Dduv/14rz//ua8//7ktv/+47H//+u4///lsv/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zjt//657z/6N62/4d+Wf95bEz/hHVV/4F1U/9/bEb/l3dM//3cq///7Lb/+OOs//zkrv/95LL//ui4//njs//85LD//+m1//vktP/55Lf/9eO6//Tkv//u4Lz/f3NP/3xtTP98bkr/hHRP/4Z0S/+GcUT/inND/9jAjP/+5rL/+eOv///ruP/45bL/+Oe2//Xlt//05Ln/8OK4/+zguP+6ror/ppp2/46CXv+Bc0//gXFN/4NzT/+Fc07/g3FM/5iGYf+mlG//ybaQ//LftP/55bb//OW1//7msv//6rb//eSy//rktP/757j/8eC1/5+Pav96bkz/fHNS/35yUP+Gckn/jXZJ/7yjd//64rT/+uK0//7nt///5rT//OOx//7msv/+5rL//OWz//zls//85bP//OWz//vltf/75bX/+uWy//bktf/66r//2cym/4R3V/97cFL/f3BQ/4VyT/+GcEf/jHJE/8esev//47D//+Wy//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//eO7//Tfuf/m3bv/f3pb/3tuVP95bFL/dWtN/4R0UP+VdUz/+din//nhq//86bD//+iy//nhrf/957f//Oa2//3ir///6bb//OW1//ThtP/04r3/7eG//6OZe/9/d1n/fHFV/31zVf95bUv/fW5H/4p0Sv+jjFz/9tuo///ntP/647P//OW3//znuv/x4LX/9eS9/+PVsf+QhGL/f3RU/3pvU/95blL/em5S/3puUv99b1L/f29S/4FvUv9+blH/d2lM/4R3V/+Dc0//hHFL/6SPYv/jzJz//+ez//nhq//95bH//ea0//fkt//15bv/uq6K/3lxU/9zb1P/eHBT/4VyTP+FbkH/oold//jgsv//57n/++S0//7ls///5rT//uWz//7ls//85bP//OWz//zls//85bP/++W1//vltf/55bX/9eW2//Pkvf+6roz/eHBT/3lwVf96blL/gW9Q/4dyTP+NdEj/5siX///qt///5bL//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//64bX/+Oa9/+Lbuv98eFz/e29X/3xuV/95blL/gnFQ/5l2Tv//3Kz//+iw//zqr//95q7//+ez//rktP/75bX//+ez///ksf/847H/+eS3/+7ivv/Lw6X/d3BV/3NsUf91blP/e3BU/3xuUf+EcU7/jHVI/+PKmP//6LL//+Wy//7muP/65Lr/7+C5/+/jv/+om3v/fHFT/3xxVf90bE//d25T/3pvVP97cFX/e3BV/3tuVP99blT/f21W/31uVP9+cVf/eGxQ/3tuTv9+cEz/gHFK/4d0Sf/AqXn//+e1///ms//95LL//OW4//Piu//XzKz/fHZZ/3VxWP92b1T/f3FN/4l0Tv+NdEr/5Mmd//3jtf/+57f//ea0//vksv/+5bP//uWz//7msv/85rL//Oay//zls//85bX/++W1//zouP/x4bb/6N68/5WNcP91blX/d21V/31xWf9+blH/iXNK/6CGWP/+4rP//eKw//zjsf/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//7nr//257b/4t28/3x4X/96blb/fW1W/3pvU/+DcE//nXVL///bp///567//Oms//7orv/+5rD//Oa2//vktv/+57n/++Sy///jsP/85bf/5N/A/3N0Wv95dFv/dG1S/3dvUv97b1P/hnBX/4ZtTf/Dpnn//+q0//rirP/+6LT/+uK0//fkvv/n4sH/nZyA/3RtVP93bVX/dW9S/3VwUf94bVH/fHFV/3twVP96b1P/em5S/3xtU/+AbVj/f2xX/31sV/94bFT/eG9U/3ZwU/91cFH/enBO/4x1T//Conf//+e0///jsP//5Lf/+eS+/+zhwf+jnIH/d3NX/3NtUP93b1H/gXBP/41wS//Jp3z//+O0//3ksv/457T/9uWy//zmsv/+5rL//uaw//7nr//+5rD//uay//7ktv/85Lb/+uS0//TmvP/RzLP/c3Bb/3txWf97blT/eGxU/4NxUv+LcUP/yKl2//zis//+57f//OW1//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//Oiu//bntv/g3b7/enhg/3puVv99blT/eHBT/4FwT/+bdUv//9qp///nr//86K7//Oiu//7msP/95rT/++S2//jktf/55bb//+i4//Pit/+inoH/cnJa/3NvU/92b1T/eXBV/3lrT/+HbU//pIRh//3esf//4q///umy//bkr//75rn/79+6/7Wzlf9sbVP/dW5a/3ZuV/96c1j/e3NV/4FyUv+Ab07/fm9P/4BxUf9/cFD/f3BQ/4FvUv+AbVL/f3FV/3pvVP95cln/cW1U/29rUv97c1b/f2pL/5J1UP/Yt4b//+q1///jtv/547r/7+PB/8a+oP90bVL/eHFW/3pyVf9+b0//jHBN/6WCWv//4bD//+Wv//notf/157P/++az//7ls///5rD//+ev//zor//85rL//uS2//zjt//65rf/8ua+/62qlf9wblz/enBY/3tvU/99blT/hHFQ/5Z4R//rzJX//OKz//rjtf/95rb//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//75bX/8+W7/9/cwP94d2L/em5W/3tuVP92cFP/fXFP/5Z1Tv/82qz/++ay//fosP/757D//uaw///mtP/+5LX/++S0//nmu//r37v/ysKk/3RtUv94cVb/cm1O/3hyVf94cFn/gG9U/45wR//dvIv//+O2///ouP/65q//+Oiz//Xluv/c0av/enFQ/311WP94blb/cmpT/3lyV/93bEz/i3FN/5FxTf/CpYD/7tSv//Pguv/3573/8uK0/+rZrv+6rYf/i4Bg/3lvV/93b1j/dm9U/3htUf9/cVX/hWxK/6iHVv//36n//+Wz//fitf/y5rz/5d24/314X/94cFn/fG9P/4NwTf+Db0z/jHNL/+rLmP//5q7/9+Ww//not//75Lf//uS2///ks///5rD/++iv//nosP/75bX/+eS3//Xitf/s37n/j4ly/3NvXP92b1b/eW1R/4FvUv+Hb0v/r5Ri///mr///47T/++O1//rktP/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//njuf/z477/3dvD/3Z3Y/94blb/em9T/3ZwU/97cU//knVO//varf/55bX/9+az//vmsv/+5rL//+a0//7ktf/647X/8uG6/+TgxP93dV3/eG9U/3xxVf97dVj/dGxP/3lrVP+Dbk7/uZlo///krv/947T/9+Cy///qtv/y47L/6eC6/7uzlf98clT/e29T/3ptU/9+cVf/e21Q/4RxTv+xk2r//96x///it//837P//ei7//Lgsf/66LP/9uax//Tnuf/r4Lr/oJh7/3lyWf96clX/eW5S/31wVv+Db1D/lHNF/9y6hf//5rP/+OWy//bot//t5b3/oJqD/3JrV/99b1L/h3RT/35uUf+DcE3/xKp7///ksf/76br/8uC3//nhvf/74b3//OK6//vktv/157P/9Oez//Xkuf/047z/9eW7/9vPq/9+d17/cGlV/3BrUv98cVX/hnFS/4pwSP/av4z//+mx///ksv//5rf/+OOw//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP/++K6//Pjv//d28P/dndj/3ZvVv96b1P/dnFS/31xTf+Vd07/+9qt//zltf/55rP//Oay//7msv//5rT/++S2//zov//q3rz/nZuD/3JxXP93blP/em9T/3VuVf98cVb/hXBQ/5R4T//32aL//+at///otv/957f/9+Cu//fouv/i4ML/dnVg/3FrVP93a1P/f3BW/4RwUf+IcEz/oodb//fcqf//5rD//+Wz///ltv/85Lb//OW1///qtv/65q//8uOy//LmvP/i3bz/eXVZ/3hvVP97cFX/em1T/4NvUP+Mc0n/tZdm//3lr//75q///ei0/+/ht//Hw6r/c29c/3ttVv96aFH/fG1a/3xuV/+Fc07/f21E/35uSv+EclX/g2xW/4RsVv+DblP/gW9Q/31yTP99ckz/fXBQ/31wUP98cE7/f3RU/3VpUf96b1n/dnBZ/3xxVf+Ea0n/lnlN//fdp///5q7//uOx///ltv/55LH//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//847n/9eO+/93bw/91d2P/dG9W/3hwUv94cFL/f3FN/5l3TP/+2qr//+Wz//zmsv/+5rL//OWz//rmtv/047j/7d+7/87Dp/9xbln/bmtW/3xzWP97b1P/d21V/4BwU/+Lb0b/3b6L///krf//56//++Wx//vksv/75LL/9+e9/83JsP91dWP/dm9b/3tvV/9/cVT/gW1K/4xuRf/cu43//+u1//3lr//546///+i2//rjs//44a///+qz//fjrP/35rX/7eK2/+flwv+0spT/dW5T/3ZrUP9/clj/gG5P/4txTP+iiFr/+uKs//3mrv//6LT/8+K3/+HdwP+JiHP/eG1Z/31tXP95alr/d2lW/31yVP96b0//e29T/3xsVf9/a1n/f2ta/3tsWf94blb/enBS/3pwUv96b1T/em9U/31zVf93bE7/fnFX/3hsVP9zbVb/fXJW/4luSf+1lGb//uSu///rs//+47H//eSy//zntP/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz///ktf/25Lv/39zA/3V4Yv90cFT/enBS/3twUv+EcUz/nndL///ap///5bD//+ev//7msv/55rP/8+a4/+vivP/UzK//e3Rb/3ZxWP96c1r/d2xQ/3xwVP+CcVf/hm9P/7eWZP//5qv//+e0//zns//857D//eix//rjs//y4Lf/ycGk/3JuVv91bVb/eG1S/351VP+CcUr/l3hL///aqv//367//uKz///pu//65LT/++az///rtP/346z//+q2//jmt//v47v/4uC9/66ukP95dVn/dm1S/3puUv+CcFH/iHBM/5+GXP/4363//uaw//7msv/35Lf/6+XC/7GwlP9ybFn/eG5d/3lqV/99b1n/dXFV/3ZyVf90bE//fHBU/31tVv97bVf/dm5X/3RvVv92b1T/eHBT/3pvVP96b1T/eHBT/3dsUP+CdFj/fW5U/3VuVf97cFL/jXFI/9y7iv//5a3//+uz///ksv/95LL//Oe0//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//+Wy//jluP/f3b//dXhi/3RwVP96b1P/fW9S/4hwTP+ed0v//9qp///lsP//5rD//OWz//Tktf/t5b3/5uHA/5GMc/91b1j/dG1U/3ZrUP99cVX/gXFU/4FpS/+WdlL//tym///orf/75bH/+OWy//zor///6rL/++S0//vlu//v4b3/4NW1/8/BpP+5rIz/n5Zw/5KDVf+4l2b//+Gw///muP//5Lf/+eK1//vnuP/45bL/9+Ww//7qs//35LH/9uO4//Llv//n5cP/mpp8/3VxVf91blP/e3BU/3xtTf+McUz/pYVa//nfsP/+57X//OOx//jktf/w57z/086t/3ZzXv9yaln/f29Y/3tsUv9ybVT/dXFV/3txT/9/cU3/fW9S/3twUv94cFP/dnFS/3hwUv96cFL/e29T/3tuVP93blP/eG9U/31tUP9+blH/em9T/35vT/+VeEz/+9qo///nsP/95Kz//+Wz///ntf/55LH//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls///5bD/+uW4/+Dcv/92eWD/dHBU/3pvU/99b1L/hnBN/5p3TP//2az//+O1///ltv/447b/8eO5/+Tgvf+gnoD/c29W/3RuV/90bVT/fXJX/31uTv+HcU7/l3ZP//HMoP//5bL//+iy//nksf/66LP//uqw//7qsf/95LL//OS2//nkt//04bb//Oa9//bku//v47P/9+az///msP//5K7//+az//7ktf/447b/9uO2//nltv/55bX/++W1//rmt//147r/8eXB/766nf9wb1X/eXVZ/3JuUv9wa1L/f3FU/5Z0Sf+3kWH//uS2//rmt//547P/+ua2//PjtP/r4Lr/i4lx/3NwW/94ak3/gG5P/3xuV/94bFD/hXJH/4p2R/+Dc0n/f3NL/4NzTv9+cUv/f3RO/31xTf98bU3/gHJW/3puVv94b1T/gHBT/31uTv9+cFP/gm9M/7GUZ///57L//+av///nr//+5bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz///ks//65Lr/4Ny//3Z5YP90cFT/em9T/3tvU/+Db1D/jnFM//nbsv/74rr/9eG4//TjvP/Owp7/iodo/3JvU/9zblX/dG1U/3lvV/99cVX/hHFQ/52DXv//3bH//+S2///ktf/64a///ee3//ros//65q3/+OSr///otv/84rP//uWz///pt//84rT/9+Gx//notf/456///+Wu///lrv/95bH/+ua2//Xluv/05Lr/9eO6//biuf/24Lf/8d20/7+tiP+NgV//dm9U/3NvVv94cVj/cGlQ/3lzXP9+b0//lHBC/+a+iv/84rP/9+W2//jktP/757f//ee3//Pjuf+vrpL/b29X/390Vv+CclX/fGtW/4VwVf+vlWf//+Wv//bktf/15Ln/9+S3//Xitf/z47j/8ua+/+zdvf/NwaX/eG5W/3puVv99bVD/g3FS/4RxUP+JdE7/4cWW///nsv//5q///+ev//zls//75rP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//+K3//jjvf/f3MD/dnlg/3RwVP94cFP/em9T/31vU/+IdFX/gm9O/3ptTf99clL/e3BS/3dsUP92b1T/dHBU/3dwV/95clf/d29S/3tuTv+slnP/9ty0///itv//5Lf//+K1///ktf/757j/+OS0//njr//+5rL//eSy//7ls//64a///+a0///ksv//57X//+u4//vms//64q7//+m1//Llsf/s5bT/7ua+/+vfvf/QwKP/qpV6/455Wv+FclH/g3NP/3ltS/96c1j/dG9W/3JqU/98cVv/em5W/4JvTv+adkb//92l//7msv/86Lj/+Oe2//jisv//5bb/+OW6/97ewP91eWD/dm9W/3ttV/96Z1j/gGhQ/5x6TP/+3Kb/++S0//vmuf/75Lb//OW3//rluP/25b7/7eLG/6CYgf92blf/eW1V/31tUP+FclH/hnBM/5yEWv//57X//+Ot///mr///56//++az//nms//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls///4rn/9uO+/9/bwv92eWD/dHBU/3hwU/96b1T/em9U/3hsUP97cFT/enNY/3NsUf97cFX/d2xR/3twVf92bVL/dG1S/311WP94blD/gXJS/4NtSv+Mck7/n4hi/+LJn///4rf//+O2//Xhsv/45LX//OWz///ns///5rT//uWz///otP/746///+e1//jhsf/447b/9+a7//PjuP/w5bn/4tqr/6+off+BeFb/d2xQ/3xvWf98blj/e2xS/31tUP98bU3/fnFR/3VtUP94cVb/e29X/3ptU/+Bb1L/h29L/928iv//56///OSu//jlsv/86Lj/+OKy///ktf/247b/6OjE/5OYe/9wbVj/eG5c/3xtXf+GcFf/lXJG/9+6hv//47T/++W1//nksf/55LH//ea4//Dgtv/h3cH/fHlk/3dvWP94bVL/gHBT/4RwTf+Kckj/wKZ4///mtP/+47D//+av///nr//75rP/+eW1//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//7iuf/2477/39vC/3Z5YP92b1T/em9T/3tuVP96b1T/eXBV/3dwVf9xbVH/dm9U/3twVf+AdFj/e21R/35yVv94cFP/dGxO/35xUf+Ab07/g25P/4RwUf9/b1L/hnNQ/6CDV//x06T//+i7//3muf/+5LX//+Sy//3lsf/65LD//+qz//njr//34bH/+OW6//Hjv//p4sH/vbud/4eEZf94bU3/fm9P/35wVP98cFj/c2xZ/3BrVv91blP/fHFV/4FxVP9/cFD/fHJU/3ZsTv9+cFP/gW5N/4xwTf+4mnH//+i2///msP/95a//++Wx///otv/85bX//eO0//fltv/n5Lj/wcWi/25wWv9wblz/cmtY/3ttUf+McEf/tZVk///ntv/+5rL/++ew//nnsv/65rb/8eW7/8TDp/9tcFf/dXBX/3tuVP+CclX/g29M/491R//qzJv//OCx///otv//56///uev//vms//55bX/++az//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OS2//Xkvf/f3MD/dnlg/3ZvVP97b1P/fW5U/31uVP98cVX/dm5R/3lzVv95cVT/eW5Q/4FzVv97a07/e21Q/3huUP+Bd1n/fG9P/4BwU/9+b1X/fm5X/3dqUP+AcVH/inNN/5B1Sf/myZz//eGy///mt///5LL//OWz///qtv/+5rD//Oez//jpu//v5L7/1syu/4uGbf9xclj/b25U/3xvVf+Ab1T/fW1W/3huVv9zbln/c29X/3RwVP94cFP/fG5S/3xsT/9+cVH/gnNS/4BvSP+KdEr/yayA///is//54K7/++Wx//3ns//957P/++Wx//vksv/75LT/++e3//Hltf/i3bb/dnhi/2xtXf93cl3/fHBU/4dxTv+Sd0v/+dyp///mrv/96bD/+eey//Lis//y58H/mpl9/21tVf92b1b/fHBU/39uU/+Ebkv/ooZX///gq///47T//+W2//7msP/+5rD/++W1//vltf/75bX//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//+5rL/9ua4/9/dvv92eWD/dm9U/31uVP+BbFb/g21U/4FvUP9/cE//fHBM/31vS/+Cck7/gHBM/4FyUf+Ac1P/fnJQ/3dsTP96blL/e29X/3VuW/91bFj/em1T/4BwU/98blH/hXJN/6yKXP//36v//+Sz//7ktf/75rP/+uSw//3jrf/75rP/7ua+/87Mqv+BeVz/eW5T/3hxVv93b1L/fHBU/3ttUf94bVH/eXFU/3dxVP92blH/eG1S/3xvVf9/cFb/gm9U/39tTv+Cb0n/taBt/+vTnf/+47D//+i2///ntf//6rj/+uO1//fhsf/65a7//eix//3mtP/75LT//+e1//bluv+ZnIP/aGtb/3RvVv95bVH/fW9T/4NvTP/Zuof//+it///osf/857T/8eO5/+LZuP+Ce2D/dm9W/3pvVP9+cFT/fWxR/4VvTP/NsH3//+St///kt//84rT//Oay//znsP/85bX//OW1//nltf/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//7nr//25rf/392//3h3Yv92b1b/fW5U/4FtVP+EblL/jHRQ/+/ZsP/45Lv/9eO6//Xit//35bz/9OK9//HhvP/z477/8OC8/+HSsf+1qo7/d3Rf/3NuWf96blL/f3FU/3htUv+DcVL/k3BE/8ylcf//6bb/+uOx//3mtP/75LL//+i0//Tis//i3rv/enld/3dtVf94bFT/e3BV/3htUf97b1P/fXJU/3tyUf94b07/e25O/4BxUP+CcVD/gm9O/4JuT/+ah2b/0LqW//Xftf/7463//+et///osv/94rD//uS1//nisv/95rj/+uS0//7psv/75q///OWz//7ktf//5bL/++S3/8PCqP9qblv/dW1W/3puVv94bVf/fm9P/7WWY///563//+av//nitP/v5cP/x8Cl/3puVv95bVX/e3BV/3tvU/+GcVL/jnRM//rbqP//5a7//uS2//3kuP/85rL//Oew//zls//85bX/++az//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//+ev//jluP/g28L/eHZk/3ZvVv97b1P/e29T/4RwTf+XeUr/+tmn//7ktf/75Lb//Oa2//nltf/34rX/++W7//njuv/547n/9+a1/+3jtP/d27z/fXpe/31xVf97bVH/e29X/39vUv+OcUr/pIRT//3krP/75Kz//+e1//zltf/35rX/8um9/6+rj/9yb1r/d29Y/3ptV/93a1P/em9U/3dvUv9/dlX/e3JN/35wTP+Dbk7/ln5a/8asff/mzpr//ue5//fjtP/85rb/+uOz//vktP/95rT//eKw///mt//95bf//OW3//rjs//74rD//+i2//3mtP/647H//+a0///ks//55Lf/4d6//4uKdf91blv/eGxa/3dsWP+Bb1D/l3ZE///fpf//47D/9eO6/+bixv+cmYT/emxV/31tVv91blX/fHFT/5BwTP+6lmj//+Sy///lr//85bX/++S2//zls//+5rL//Oay//zmsv/85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls///5rD/+OW4/+Daw/94dWb/dm5X/3pvU/96b1P/g3FM/5h3Rf//4an//+W0//7ktf/54rD/++az//7ouP/237L//OC3///muP//6rP/+Oq2/+jnwf+vr5H/d2xR/4FxWv96blb/f3FV/4pvTf+Rdkr/9N2l//7orv//5rT//OW3//DktP/g3LP/hX9o/3FpWP91bFj/d2tT/4JzWf9/blP/fnJQ/31wSv+kl2v/2sif//viwP//5r///+Gs///orP/44q7//Om2//fir///6bn/+eS3//3muf/+5rj/+uK0//nhs//85Lb//+m3///otv/54rL//OW1//3mtv/847H//uWz//nnuP/p4bz/sa6S/3VuW/9yaFf/fHFb/4NwT/+Uc0L/4LyG///ntP/y4rj/29rA/3x7Z/96blb/fW9T/3dwV/99cFD/kG5D/+K5iP//57L//+Ow//3nt//45LT//uWz//7msv/85rL/++ay//7ls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//7msv/25br/39rF/3h1Zv92blf/em9U/3tuVP+DcE3/l3dG///dqf/83q3/++Gy///mtP/+57X/+uS0//7nuf//5Lj//uS1///ksf/25bT/4uO7/9DStP9+c1//eWpX/3puVv9+cFT/hW1P/4txSf/q0Zn//+qu///ksv/65rf/7ee4/9XTq/97bVr/fm9f/3luWP94bFD/hHBR/4ZuSv+zmnD/8tur//3rtv/55rP//+W9//vftv//5bL//+uz//rktP/05Lb/9+e8//LiuP/5577/9eG4//Xguv/547n//uS1///otv/64a///+a0///ksf//57X//OW1//vltf/65bH/9+m1/+3kuP/W0q//d3Jd/3JrWP9/c1f/gm9K/5VzSP+ykWD//+ex//Hktv/Gwqn/bGtX/3hyVf94b07/e3BU/4JxUP+ZeEv//9qo///os//+47D//ee3//vltf/85bP//uay//zmsv/75rL//uWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//Oay//Xluv/d2sX/dnZm/3RuV/96b1T/e25U/4NwT/+UdUj//t2r///puv//5rf//OOx//7ntf/136//++S2//zjt//84rT//+Wy//vquf/l5r//xsmv/4B0Yv94aFf/e29X/3hsUP+FblT/kHZR/+PKkv//6qz//uOx//nkt//t6Lv/0c6o/4BxXv98bFz/d2tT/35wU/+Ick//noRc//7erf//6bL//+qt//fkq//95Lj//uW7//visP/647H/+ea5//Hiu/+9r4v/fXFP/4JyTv+Bbkv/gm9O/4l0Tv+jiVr/9tqk///ntP//5rP//+Wv//7jsP/647P//ee3//jlsv/25bL/9Oa2/+rhu/+Jh2//c3Bb/3pwUv+Bbkv/kHJP/5R2Tf/t2qf/8+m6/6Cbgv9xbVr/dnBT/3lwT/9/cFD/h3FN/7aVaP//47H//+ex//7msv/65LT//ee3//zltf/85bP//OWz//vms//+5LX//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//757D/8+a6/9vcwv9zd2T/dG9W/3pvU/97b1P/gXBP/5N6Tv/z2Kb/+uCx//7nt//95LL//ea0//rntP/35bb/++O5//3kuP/546//9OW0/+HfwP+xs53/d2pa/3ttW/95b1f/d2xR/4VvVv+NclD/6NCW///pqf//5LH/+OO2/+zjuP/Z07D/fnBd/3prW/94alT/gXBV/4dxTv+fhlz//t+s///jqv//6qz//+qw//jktf/547n//ea4//znuv/v4Ln/6+G//5WKbv93bFH/gHJW/4FxVP+AcFP/gm9K/6CGV///5K///+ex///jrf//6LD//+Wy//zmtv/54rT//OW1//vktP/85rb/8eK7/7GymP9rcVr/c29T/3xxU/+CbVL/g25P/8m8kP/o4Lj/gHZk/3RrXf95bVX/fnFR/4ZwTf+HbUX/3L6P///kr///5a///Oay//vksv/95rb//uS1//zls//85bP/++az//7ktf/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//vmsv/z5rr/29zC/3V3Y/90b1b/em9T/31vU/+Bb1D/jHRK//ffsf/54LT//OO3///puv/44bH/9+a1//Tktv/55bz/+eO6//bisv/y5bf/4d3A/3RwXf99cGD/d2lX/3huVv98b1X/hW5U/450UP/03aX//+mr///ms//75Lb/8OO3/+fevP9/dGD/fG9f/31vXP98bVP/gW1O/4lyTP/ozp///+Wv///mrv/+6LT/+OW6//HeuP/55rv/8OC2/+7iwP+5rpL/eW9X/3pwWP94bFT/eGpO/4VzVv+Fb0v/wKZ4///jrf//46z//+ix///qsv/54a3//ee3//vktv/75LT//uS1///ltv/z4rf/2dy8/3J5Xv9yblX/eW9X/31sV/+Ab1X/nJNu/8nAnv94bFr/dWha/31xWf9+b0//jHBN/5h4Tf/526r//+iy//vmr//75bH//ue1//zis//+5LX//OW1//zls//85bP//uS1//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//Xluv/f28L/eHdj/3huVv99b1P/gW1U/4NuUv+NdVH/8tmx//7kv//43rb//+O6//viuP/657z/9OS6//Lfuv/04r3/9OO8/8zBm/+Qim3/dnBZ/3hqV/99blv/em1X/39uU/+LcU3/r5Ro//vlsf/+5rD//+Wy//7ls//45bj/8eO//6Gagf90blv/dWxY/3ptV/9/cFb/gHFR/4FvSv+nlWz/5dCj//bjuP/w3br/+OjE//LjvP/az6n/opp9/3ZvVv94blb/em5W/3ltVf98blL/h3JS/4hySf/kzJ7//+e1///nsP//5q3//uSu//zls///6rr/+OKy//rlsv/85rL//+Sx//fltv/q68H/l516/3NvVv94bVn/fnBa/31uVP+Cd1f/nJJ0/3xvWf92a1f/enNY/31uTf+QcUr/xKJ0///ms///6rP/++ew//rlsf//6Lb//OKz//7ktf/85bX//OW1//zltf/+5bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bX/9eW7/9/cwP94d2L/em9U/39uU/+BbVT/gW1U/4RwUf+Cbkv/hnBN/4pxT/+KcEz/iXJM/4NyS/99cEr/hHNS/35vTv99cU//enFQ/3dvUv95blP/fXBW/3xsVf9/b1j/f2pO/49zSv/XvIr//ea0//zls///5LH//+Wy//vktv/y4br/2dG0/3dzW/9xbVX/d3Fa/3RqUv96b1T/e29T/4F0VP9+bkr/gXBP/4NxVP99bVD/fnJO/3lwTv92b1T/eXJZ/3pvVP94a1H/gXJY/35sT/+Fbkj/sJdr//zjt//+5LX//+ex///nr///6LT/++Sy//nisP/96LX//ei0//3osf/746//++i1/+nltf/Gx5//c25V/3ZsWv97bVf/eGpT/31xVf97cFT/emxV/3puVv94cFP/gHJO/5NxRv/0zp7//+Wy//rmr//56LD//Oez///mtP//5LX//uS1//zltf/85bX//OW1//7ls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//nltv/z5bv/3Ny+/3Z2Xv98dFf/eWtP/35vVf9+b1X/e29T/31vUv9/cFD/gW9Q/4NwT/+BcE//e3FP/3pxUP96blL/em9T/3lxU/94cFL/e3BU/35wU/+AcFP/gG5R/4FsUP+Ib03/s5Vm///ms//85bP/+eSx//7msv//5bL//+W2//bjuP/u4sD/trGS/3FxU/9tbFD/d3JZ/3luWP94bVf/eG5W/3hvVP96bVP/fmxV/39uVP96cVD/d3BP/3hxVv97clf/eWtO/4FvUP+DcE//h3FN/5h/U//23K7/++S2//vktv/+5rL//uay//zls//85bP//OWz//zmsv//67T/+OKu///otv/76LX/6+Kw/+PgtP+AemP/dGxb/3tuWP98b1X/e25U/3ptU/98blL/fHBU/3txU/+DcE3/rIha///fq//95bH/+uiz//XlsP/75rL//uay///mtP/+5LX//OS2//zktv/85bX//uWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP/9+S3//Hlvf/d273/eXhe/3dvUv9+clb/emxV/3ltVf94blb/eG9U/3pvU/97b1P/fW9S/3twUv92cFP/dm9U/3pwWP95cFX/d29S/3dvUf96b1H/f3BQ/4NwT/+Fb0v/iXJM/6GIXv//37H//+Gu///ptf/65LD//+e1//zjsf/74bL//ea4//Pjuf/q4bv/uLmS/3BxT/93cVT/dm1S/3lsVv96bVf/eW5Y/3tvV/99bVb/fG1T/3pxUP95clH/dW1Q/31yVP99bk3/hXJN/4t0Tv+fhlz/+t6v///ltv/85Lb/++S2//vltf/75rP/++W1//zls//+5rL//uay///lsv//5rP/+uOz//nltf/467f/7ea7/6Cag/9za1r/eGtV/3tuVP98b1X/fXBW/4BwU/9+blH/e21Q/4RuSv/JpXX//+Su//zmsv/457T/9+az//vmsv/95bH//+Wy//7ktf/85Lb//OS2//zltf/85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//2473/7+G9/+Xew/9+eGH/fG9V/3xuUv97bVb/fG9Z/3ZtWf92bVn/em1X/3puVv97bVb/em5W/3ZuV/92blf/dmxU/3htUv95cE//fHJQ/4BxUf+Cbk//hW9L/4tzSf+znGz/996s///gs///5rX//+21//zlrf/74rD//+W3///ltv/75LT/+eW2//Tlt//s5rn/1dKm/4+IYf+AdFL/gW9S/4FuU/9+b1X/fXBW/3tuVP95bVH/fG9P/39zUf98cE7/e2xL/4VzTv+Jc0r/xKp8//nbqv//5bb//uS1//7ls//85bX/+eW2//fltv/75bX//OWz//7msv//5bL//+Kx///mt//847f/+uW4//Xks//05rz/08yz/3x1Yv96blb/e25U/3tvU/9+cFP/gW9S/4JuT/+GcFT/kHZS/+3Jmf//57H/++Sy//fmtf/65rb/+uWy//7msv//5bL//uS1//zltf/+5Lb//OW1//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//jiuP/14rz/5tm5/4Z7Xf+Ab07/gm9O/4VzVP97a07/e25U/3tuVP99b1L/f29S/39vUv99b1L/e29T/3tvU/96b1H/f3JS/4Z4VP+MfFf/lYJf/6uYc//WvZX/9t6w///nsf/84qz//+i5///ktf/95Kz//uev///puf/64rT//uWz//zls//96LX/9uWy//PltP/16bn/9um9/+LSqP+/qYX/qJJv/455Wf+Bb1D/fXBQ/39zUf+DcE3/gm9M/5uJZP+4p4D/3Mqh//vkt///47D//+q3///ksv/847H//+Wy//zls//35Lf/9+S3//vltf/+5bP//uay///lsv//5bT//+O0//jhs//757j/+OS0//Tktv/n3Lz/lYpv/39xVP9/cFD/fnBM/4FxTf+Cb0z/hHBN/410Uv+XfVX//9+t///lsP/65LT/9+W2//vktv/75LL//+ex//7msP/85bP//OW1//7ktv/+5LX/++az//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//+ez//zls//75rn/+OK4//7nt//+5bP/9+Gx//3ou//147r/9eO6//vkt//75Lb/+eS3//fkt//55Lf/9+S5//flvP/y4br/8t+5//Xjuv/45br/+eS3//rjtv/95rb//+iy///psf/+5rL//+a0//zksP//6bX/+eKy//7nt///5rT//Oay//nksP/557L//Om2//fksf/65rb/+ua3//zjt//64bf/+uG5//fjuv/v47n/7uC2//jhu//+5b3/8+C1//Tktv/35Lf/+eOz///ms///6LL//eSy///ntf//5bL//uay//nltv/55bb//OWz//7msv/+5bP//uay//7krv//6LL/+eaz//notf/857P/9uGu//7qwf/14r3/+OS7//bjuP/35bb/9+e4//bmuP/05Lb/+eS3///ouv//57H//+Ot//rmt//35Lf/+uK0//zjsf//57H//uev//zmsv/85bP//uS1//7ktf/75rP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls///5a///+ez//jhsf/+5bP//+aw///osP/95q7/++av//nltf/75bX//+aw///nr//85rL//Oay//7msv/+5bP//OW1//rjtf/65Lr/++a5//3mtv/75LL/++W1//3nt//446z//emw//7msP/95bH//+i2//zltf/84rP//+e1///otP/957P/+uWx///qtv/34K7//ue1//zls//647H//uWz//zjsf/75LT/++e3//jpuP/45rf//OG1//vgtP/647X/++e3//nltf/96LX//+ez//zhrv//5rT/+eKw//7msv/85rL/++W1//vltf/85bP//uWz//7ls//+5rL//uev//zor//35LH/+eaz//3psv/+6LT/+OCy//zjt//85bf/+eaz//vmsv/76rL/+Oe0//blsv/547P//OWz///nr//85K7/++e4//rkuv/84bX//+O0///osP/7567/++ay//zls//+5LX//uWz//vms//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//vltf/65LT//ea5//3lt///6LT/+uKs//3osf/66LP/+eW2//nltf/+5rD//uev//vmsv/75rL//+Wy///lsv//5bD//+Wv//rlsv/85rb//+a1///ntf/75rL/9eWw//3qt//857P/+uKs///nsf/75bX/+OS1///mt///5LL//eWx//zmsv//6rb/9OGu///puf/64rT//N+y///ouf//57P//Oix//rpsf/456//+uWu//7jsP//5LX//+W2//3mtP/65bH/9+Ku//3otf/65LT//Oa2//zmsv/957P/++az//vms//857D//Oew//zls//85bX//OW1//7ls///5rD//+ex//3lt//85bf/9OKt//7ptf//5bj//OK0//zntP/56LD/++ew//rmr//65q//++ay///mtP//57X//uaw//zmsv/55Lf/++W8///jt///5LX//uev//zorv/757D//OWz//7ktf/+5bP/+eaz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP/+eW2//jktf/747n//ea4//visP//67T/+uav//nnsv/35bb/+eW1//7msv/+56//++ay//vmsv//5bL//+Ww///krv//5q///Oew//vlsf//47L//+Sx//vmsv/157L/9uWy//bjsP//67P//uaw//fjtP/65bj//+a3//7jsf//5bL/++Wx//fir//757f/+OS1//zluP//5bj//+Kz//zmsv/56K//9+mv//nprv//6a///+ix///ltP//47L//eez//vnsP//6rP/+eSw//nltv/55bb//Oay//zmsv/75rP/++az//7nr//+56///OWz//vltf/85bX//uWz///msP//6LX/++C0//7nuv/76bT/++ew///jtv//5LX/+uWx//nor//86bD//Oiv//rmr//85rL//+W0///ltP//57H//ei0//bgtv/847v//+O6///ltv/95q7//emv//vnsP/85rL//uS1//7ls//55rP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHptVa96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ptVa8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe21UcHpuVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/e21UcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4cFggem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP94cFggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6bVWvem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em1VrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHhwWCB5bVTvem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVO94cFggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHptVWB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em1VYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHptVWB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ptVWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHlwU1B5bVTvem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVO95cFNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBwUBB6blSAem1T33puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ptU996blSAgHBQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAenBVMHptVWB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHptVWB6cFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= 169 | " 170 | #endregion 171 | 172 | #region main_form 173 | $main_form = New-Object System.Windows.Forms.Form 174 | $main_form.Text = "Remote Shadow Administrator" 175 | $main_form.Icon = [System.Convert]::FromBase64String($Logo) 176 | $main_form.ShowIcon = $true 177 | $main_form.StartPosition = "CenterScreen" 178 | $main_form.Font = "$Font,$Size" 179 | $main_form.ForeColor = "Black" 180 | $main_form.FormBorderStyle = "FixedSingle" 181 | $main_form.Size = New-Object System.Drawing.Size(1250,860) 182 | $main_form.AutoSize = $true 183 | #endregion 184 | 185 | #region Get-Ping 186 | function Get-Ping { 187 | $ping = ping -n 1 -v 4 $srv 188 | if ($ping -match "TTL") { 189 | $global:ping_out = @("$srv - $Available") 190 | } else { 191 | $global:ping_out = @("$srv - $NotAvailable") 192 | } 193 | } 194 | #endregion 195 | 196 | #region Get-Query-1.2 197 | function Get-Query { 198 | <# 199 | .SYNOPSIS 200 | Module using query.exe for created object powershell 201 | Does not depend on the localization of the OS 202 | .DESCRIPTION 203 | Example: 204 | Get-Query localhost # default 205 | Get-Query 192.168.1.1 206 | Get-Query 192.168.1.1 -proc # all user process list (default -user *) 207 | Get-Query 192.168.1.1 -proc -user username 208 | .LINK 209 | https://github.com/Lifailon/Get-Query 210 | https://github.com/Lifailon/Remote-Shadow-Administrator 211 | #> 212 | Param ( 213 | $srv="localhost", 214 | [switch]$proc, 215 | $user="*" 216 | ) 217 | if (!($proc)) { 218 | $global:Users = New-Object System.Collections.Generic.List[System.Object] 219 | $query = query user /server:$srv 220 | if ($query -ne $null) { 221 | $usr = $query[1..100] 222 | $usr = $usr -replace "(^\s)|(^\>)" 223 | $usr = $usr -replace "\s{2,100}"," " 224 | $split1 = $usr -split "\n" 225 | foreach ($s in $split1) { 226 | $split2 = $s -split "\s" 227 | if ($split2.Count -eq 6) { 228 | if ($split2[2].Length -eq 4) {$status = "Disconnect" 229 | } elseif ($split2[2].Length -eq 6) {$status = "Active" 230 | } elseif ($split2[2].Length -eq 7) {$status = "Active"} 231 | $Users.Add([PSCustomObject]@{ 232 | User = $split2[0] 233 | Session = $null 234 | ID = $split2[1] 235 | Status = $status 236 | IdleTime = $split2[3] 237 | LogonTime = $split2[4]+" "+$split2[5] 238 | }) 239 | } 240 | if ($split2.Count -eq 7) { 241 | if ($split2[3].Length -eq 4) {$status = "Disconnect" 242 | } elseif ($split2[3].Length -eq 6) {$status = "Active" 243 | } elseif ($split2[3].Length -eq 7) {$status = "Active"} 244 | $Users.Add([PSCustomObject]@{ 245 | User = $split2[0] 246 | Session = $split2[1] 247 | ID = $split2[2] 248 | Status = $status 249 | IdleTime = $split2[4] 250 | LogonTime = $split2[5]+" "+$split2[6] 251 | }) 252 | } 253 | } 254 | $Users 255 | } 256 | } 257 | if ($proc) { 258 | $global:Users = New-Object System.Collections.Generic.List[System.Object] 259 | $query = query process $user /server:$srv 260 | if ($query -ne $null) { 261 | $usr = $query[1..5000] 262 | $usr = $usr -replace "(^\s)|(^\>)" 263 | $usr = $usr -replace "\s{2,100}"," " 264 | $split1 = $usr -split "\n" 265 | foreach ($s in $split1) { 266 | $split2 = $s -split "\s" 267 | if ($split2.Count -eq 6) { 268 | $split3 = @($split2[0]) 269 | $split3 += $split2[2..5] 270 | $split2 = $split3 271 | } 272 | if ($split2[0] -match "\(") { 273 | $username = "unknown" 274 | } else { 275 | $username = $split2[0] 276 | } 277 | if ($split2.Count -eq 5) { 278 | $Users.Add([PSCustomObject]@{ 279 | User = $username 280 | Session = $split2[1] 281 | ID = $split2[2] 282 | PID = $split2[3] 283 | Process = $split2[4] 284 | }) 285 | } 286 | if ($split2.Count -eq 4) { 287 | $Users.Add([PSCustomObject]@{ 288 | User = $username 289 | Session = $null 290 | ID = $split2[1] 291 | PID = $split2[2] 292 | Process = $split2[3] 293 | }) 294 | } 295 | } 296 | $Users 297 | } 298 | } 299 | } 300 | #endregion 301 | 302 | #region Get-QueryStopProc 303 | function Get-QueryStopProc { 304 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu 305 | $ContextMenu_services.MenuItems.Add("$Text_Stop $Text_Process",{ 306 | $RowIndex = @($dataGridView.SelectedCells.RowIndex) 307 | $Column_ID_Proc = 3 308 | $dgv_selected_id = $dataGridView.Rows[$RowIndex].Cells[$Column_ID_Proc].FormattedValue 309 | if ($srv -like "localhost") { 310 | Stop-Process -Id $dgv_selected_id -Force 311 | sleep 1 312 | Get-Query $srv -proc -user $Table_UserGlobal 313 | Add-TableProc 314 | } else { 315 | $session = New-PSSession $srv 316 | icm -Session $session {Stop-Process -Id $using:dgv_selected_id -Force} 317 | Remove-PSSession $session 318 | sleep 1 319 | Get-Query $srv -proc -user $Table_UserGlobal 320 | Add-TableProc 321 | } 322 | }) 323 | $main_form.ContextMenu = $ContextMenu_services 324 | 325 | } 326 | #endregion 327 | 328 | #region Get-UserProcess 329 | function Get-UserProcess { 330 | Param ( 331 | [switch]$ogv 332 | ) 333 | if ($srv -like "localhost") { 334 | $global:ps_out = ps | Sort-Object -Descending CPU | select ProcessName,Product,ProductVersion, 335 | @{Name="Processor Time sec"; Expression={[int]$_.CPU}}, 336 | @{Name="Processor Time min"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}}, 337 | @{Name="Memory WS"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}}, 338 | @{Name="Memory PM"; Expression={[string]([int]($_.PM / 1024kb))+"MB"}}, 339 | @{Name="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}}, 340 | Path 341 | if ($ogv) { 342 | $ps_out_ogv = $ps_out | Out-GridView -Title "$dgvQueryUser $Text_Process $Text_ToServer $srv" -PassThru 343 | if ($ps_out_ogv) { 344 | $ps_out_ogv | Stop-Process -Force 345 | } 346 | } 347 | } else { 348 | $global:ps_out = icm $srv {ps -IncludeUserName} | Sort-Object -Descending CPU | select ProcessName,Product, 349 | ProductVersion,UserName, 350 | @{Name="Processor Time sec"; Expression={[int]$_.CPU}}, 351 | @{Name="Processor Time min"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}}, 352 | @{Name="Memory WS"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}}, 353 | @{Name="Memory PM"; Expression={[string]([int]($_.PM / 1024kb))+"MB"}}, 354 | @{Name="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}}, 355 | Path 356 | if ($ogv) { 357 | $ps_out_ogv = $ps_out | Out-GridView -Title "$dgvQueryUser $Text_Process $Text_ToServer $srv" -PassThru 358 | if ($ps_out_ogv) { 359 | $session = New-PSSession $srv 360 | icm -Session $session {Stop-Process -Name $using:ps_out_ogv.ProcessName -Force} 361 | Remove-PSSession $session 362 | } 363 | } 364 | } 365 | } 366 | 367 | function Get-UserProcess-DGV { 368 | $DataGridView.DataSource = $null 369 | $DataGridView.Rows.Clear() 370 | $DataGridView.ColumnCount = 6 371 | $DataGridView.Columns[0].Name = "Process Name" 372 | $DataGridView.Columns[1].Name = "User Name" 373 | $DataGridView.Columns[2].Name = "Processor Time min" 374 | $DataGridView.Columns[3].Name = "Memory WS" 375 | $DataGridView.Columns[4].Name = "Memory PM" 376 | $DataGridView.Columns[5].Name = "RunTime" 377 | $Service_dgv = foreach ($fps in $ps_out) { 378 | $DataGridView.Rows.Add( 379 | $fps.ProcessName, 380 | $fps.UserName, 381 | $fps."Processor Time min", 382 | $fps."Memory WS", 383 | $fps."Memory PM", 384 | $fps.RunTime 385 | ) 386 | } 387 | $Count = $ps_out.Count 388 | $Status.Text = "$Count $Text_Processes $Text_ToServer $srv" 389 | 390 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu 391 | $ContextMenu_services.MenuItems.Add("$Text_Stop $Text_Process",{ 392 | $RowIndex = @($dataGridView.SelectedCells.RowIndex) 393 | $Column_ID_Process = 0 394 | $global:dgv_selected_services = $dataGridView.Rows[$RowIndex].Cells[$Column_ID_Process].FormattedValue 395 | if ($srv -like "localhost") { 396 | $ps_out | ? ProcessName -like $dgv_selected_services | Stop-Process -Force 397 | sleep 1 398 | proc-click 399 | } else { 400 | $ps_kill = $ps_out | ? ProcessName -like $dgv_selected_services 401 | $session = New-PSSession $srv 402 | icm -Session $session {Stop-Process -Name $using:ps_kill.ProcessName -Force} 403 | Remove-PSSession $session 404 | sleep 1 405 | proc-click 406 | } 407 | }) 408 | $main_form.ContextMenu = $ContextMenu_services 409 | } 410 | 411 | function Get-ProcSearch { 412 | $SearchTextBox.Add_TextChanged({ 413 | $search_text = $SearchTextBox.Text 414 | $global:ps_out = @($ProcSearch | Where { 415 | $_.ProcessName -match "$search_text" 416 | }) 417 | Get-UserProcess-DGV 418 | }) 419 | } 420 | 421 | function proc-click { 422 | Get-UserProcess # get current list 423 | $global:ProcSearch = $ps_out # save for further search 424 | Get-UserProcess-DGV # fill out table 425 | Get-ProcSearch # add search 426 | } 427 | #endregion 428 | 429 | #region Creat-and-Add-Table 430 | function Creat-Table { 431 | $DataGridView.DataSource = $null 432 | $DataGridView.Rows.Clear() 433 | $DataGridView.ColumnCount = 6 434 | $DataGridView.Columns[0].Name = $dgvQueryUser 435 | $DataGridView.Columns[1].Name = $dgvQuerySession 436 | $DataGridView.Columns[2].Name = "ID" 437 | $DataGridView.Columns[3].Name = $dgvQueryStatus 438 | $DataGridView.Columns[4].Name = $dgvQueryIdleTime 439 | $DataGridView.Columns[5].Name = $dgvQueryLogonTime 440 | } 441 | 442 | function Add-TableUser { 443 | Creat-Table 444 | 445 | $Service_dgv = foreach ($fuser in $Users) { 446 | $DataGridView.Rows.Add( 447 | $fuser.User, 448 | $fuser.Session, 449 | $fuser.ID, 450 | $fuser.Status, 451 | $fuser.IdleTime, 452 | $fuser.LogonTime 453 | ) 454 | 455 | if ($fuser.Status -like "Active") { 456 | $DataGridView.Rows[-2].Cells[3].Style.BackColor = "lightgreen" 457 | } elseif ($fuser.Status -like "Disconnect") { 458 | $DataGridView.Rows[-2].Cells[3].Style.BackColor = "pink" 459 | } 460 | } 461 | } 462 | 463 | function Add-TableProc { 464 | $DataGridView.DataSource = $null 465 | $DataGridView.Rows.Clear() 466 | $DataGridView.ColumnCount = 5 467 | $DataGridView.Columns[0].Name = $dgvQueryUser 468 | $DataGridView.Columns[1].Name = $dgvQuerySession 469 | $DataGridView.Columns[2].Name = "ID" 470 | $DataGridView.Columns[3].Name = "PID" 471 | $DataGridView.Columns[4].Name = $Text_Process 472 | 473 | $Service_dgv = foreach ($fuser in $Users) { 474 | $DataGridView.Rows.Add( 475 | $fuser.User, 476 | $fuser.Session, 477 | $fuser.ID, 478 | $fuser.PID, 479 | $fuser.Process 480 | ) 481 | } 482 | $UsersProcCount = $Users.Count 483 | $Status.Text = "$UsersProcCount $Text_Processes" 484 | } 485 | #endregion 486 | 487 | #region Get-Uptime 488 | function Get-Uptime { 489 | if ($srv -like "localhost") { 490 | $boottime = Get-CimInstance Win32_OperatingSystem | select LastBootUpTime 491 | } else { 492 | $boottime = Get-CimInstance -ComputerName $srv Win32_OperatingSystem | select LastBootUpTime 493 | } 494 | $datetime = (Get-Date) - $boottime.LastBootUpTime 495 | $global:uptime = [string]$datetime.Days+" $Days "+[string]$datetime.Hours+" $Hours "+ 496 | [string]$datetime.Minutes+" $Minutes | $LastBoot "+[string]$boottime.LastBootUpTime.DateTime 497 | } 498 | #endregion 499 | 500 | #region Button-Query 501 | $Column_ID = 2 # for all clicked to query 502 | $Column_User = 0 503 | 504 | function fun-main { 505 | Get-Ping 506 | $Status.Text = "$ping_out" 507 | if ("$ping_out" -ne "$srv - $NotAvailable") { 508 | Get-Query $srv 509 | if ($Users -ne $null) { 510 | Add-TableUser 511 | } else { 512 | $Status.Text += " | $NoUsers" 513 | } 514 | Get-Uptime 515 | } else { 516 | $uptime = $null 517 | } 518 | if ($uptime.Length -gt 1) { 519 | $Status.Text += " | $UpTimeText $uptime" 520 | } else { 521 | $Status.Text += " | WinRM $NotAvailable" 522 | } 523 | } 524 | #endregion 525 | 526 | #region functions-Srv-List 527 | function list-update { 528 | $ListBox.Items.Clear() 529 | $global:srv_list = Get-Content $conf 530 | foreach ($tmp in $srv_list) {$ListBox.Items.Add($tmp)} 531 | } 532 | 533 | function list-domain { 534 | $Status.Text = "$Text_Connect $Text_To domain: $domain" 535 | $domain_comp = Get-ADComputer -Filter * -Properties * 536 | $global:srv_list = $domain_comp.Name 537 | $ListBox.Items.Clear() 538 | foreach ($tmp in $srv_list) {$ListBox.Items.Add($tmp)} 539 | } 540 | 541 | function table-domain { 542 | $comp_table = Get-ADComputer -Filter * -Properties * | select @{Label="Status"; Expression={ 543 | if ($_.Enabled -eq "True") {$_.Enabled -replace "True","Active"} else {$_.Enabled -replace "False","Blocked"} 544 | }}, @{Label="Name"; Expression={$_.Name}}, @{Label="IP"; Expression={$_.IPv4Address}}, 545 | @{Label="OS"; Expression={$_.OperatingSystem}}, @{Label="User";Expression={$_.ManagedBy -replace "(CN=|,.+)"}}, 546 | @{Label="CreatDate"; Expression={$_.Created}} | sort -Descending "CreatDate" | Out-GridView -Title "domain: $domain" –PassThru 547 | if ($comp_table -ne $null) { 548 | $global:srv = $comp_table.Name 549 | fun-main 550 | } 551 | $comp_table = $null 552 | } 553 | #endregion 554 | 555 | #region Get-Broker 556 | function Get-Broker { 557 | Param ( 558 | [switch]$r, 559 | [switch]$d, 560 | [switch]$c, 561 | [switch]$h 562 | ) 563 | $Status.Text = "Select server with full domain name and with the role RDCB" 564 | $broker = $srv 565 | if ($broker) { 566 | if ($c) { 567 | $Coll = Get-RDRemoteDesktop -ConnectionBroker $broker | Out-GridView -title "Connection to $broker" -PassThru 568 | $CollName = $Coll.CollectionName 569 | } 570 | if ($CollName) { 571 | Get-RDAvailableApp -ConnectionBroker $broker -CollectionName $CollName | Out-GridView -title "Software to $CollName" 572 | } 573 | if ($h) { 574 | Get-RDServer -ConnectionBroker $broker | Out-GridView -title "Connection to $broker" 575 | } 576 | if (($r) -or ($d)) { 577 | $RDCB_out = Get-RDUserSession -ConnectionBroker $broker | select hostserver, UserName, SessionState, CreateTime, DisconnectTime, 578 | unifiedsessionid | Out-GridView -title "Connection to $broker" -PassThru | select hostserver, unifiedsessionid 579 | } 580 | if ($RDCB_out) { 581 | $RDCB_srv = $RDCB_out.HostServer 582 | $RDCB_id = $RDCB_out.UnifiedSessionId 583 | if ($r) { 584 | mstsc /v:"$RDCB_srv" /shadow:"$RDCB_id" /control # /noconsentprompt 585 | } 586 | if ($d) { 587 | Disconnect-RDUser -HostServer $RDCB_srv -UnifiedSessionID $RDCB_id -force 588 | } 589 | } 590 | } 591 | } 592 | #endregion 593 | 594 | #region Get-Soft 595 | function Get-Soft { 596 | Param ( 597 | [switch]$wmi, 598 | [switch]$package 599 | ) 600 | if ($wmi) { 601 | $soft_wmi = gwmi Win32_Product -ComputerName $srv | select Name,Version,Vendor, 602 | InstallDate,InstallLocation,InstallSource | sort -Descending InstallDate | 603 | Out-Gridview -Title "Software to server $srv" -PassThru 604 | $soft_wmi_uninstall = $soft_wmi.Name 605 | if ($soft_wmi_uninstall -ne $null) { 606 | $wshell = New-Object -ComObject Wscript.Shell 607 | $output = $wshell.Popup("Delete $soft_wmi_uninstall to server $srv ?",0,"Select action",4) 608 | } 609 | if ($output -eq "6") { 610 | $uninstall = (gwmi Win32_Product -ComputerName $srv -Filter "Name = '$soft_wmi_uninstall'").Uninstall() 611 | $outcode = $uninstall.ReturnValue 612 | $output = $wshell.Popup("$Text_Result - $outcode (0 - $Text_Completed)",0,"$srv",64) 613 | } 614 | } 615 | if ($package) { 616 | if ($srv -like "localhost") { 617 | $soft_pack = Get-Package -ProviderName msi,Programs | Out-Gridview -Title "Software to server $srv" -PassThru 618 | } else { 619 | $soft_pack = icm $srv {Get-Package} | ? ProviderName -match "(Programs)|(msi)" | Out-Gridview -Title "Software to server $srv" -PassThru 620 | } 621 | if ($soft_pack -ne $null) { 622 | $soft_name = $soft_pack.Name 623 | $wshell = New-Object -ComObject Wscript.Shell 624 | $output = $wshell.Popup("Delete $soft_name to server $srv ?",0,"Select action",4) 625 | } 626 | if ($output -eq "6") { 627 | if ($srv -like "localhost") { 628 | Get-Package -Name "$soft_name" | Uninstall-Package -Force -ForceBootstrap 629 | } else { 630 | $session = New-PSSession $srv 631 | icm -Session $session { 632 | Get-Package -Name "$using:soft_name" | Uninstall-Package -Force -ForceBootstrap 633 | } 634 | Remove-PSSession $session 635 | } 636 | } 637 | } 638 | } 639 | #endregion 640 | 641 | #region Get-Netstat 642 | function Get-Netstat { 643 | if ($srv -like "localhost") { 644 | Get-NetTCPConnection -State Established,Listen | sort -Descending State | select CreationTime,LocalAddress,LocalPort,RemotePort, 645 | @{name="RemoteHostName";expression={((nslookup $_.RemoteAddress)[3]) -replace ".+:\s+"}},RemoteAddress, 646 | State,@{name="ProcessName";expression={(ps -Id $_.OwningProcess).ProcessName}}, 647 | @{name="ProcessPath";expression={(ps -Id $_.OwningProcess).Path}} | Out-GridView -Title "Local netstat" 648 | } 649 | else { 650 | icm $srv {Get-NetTCPConnection -State Established,Listen | sort -Descending State | select CreationTime,LocalAddress,LocalPort, 651 | RemotePort,RemoteAddress, 652 | State,@{name="ProcessName";expression={(ps -Id $_.OwningProcess).ProcessName}}, 653 | @{name="ProcessPath";expression={(ps -Id $_.OwningProcess).Path}}} | select CreationTime,LocalAddress,LocalPort,RemotePort, 654 | @{name="RemoteHostName";expression={((nslookup $_.RemoteAddress)[3]) -replace ".+:\s+"}}, 655 | RemoteAddress,State,ProcessName,ProcessPath | Out-GridView -Title "Remote netstat to server: $srv" 656 | } 657 | } 658 | #endregion 659 | 660 | #region Get-RemoteDNS 661 | function Get-RemoteDNS { 662 | $zone = icm $srv {Get-DnsServerZone} | select ZoneName,ZoneType,DynamicUpdate,ReplicationScope,SecureSecondaries, 663 | DirectoryPartitionName | Out-GridView -Title "DNS Server: $srv" –PassThru 664 | $zone_name = $zone.ZoneName 665 | if ($zone_name -ne $null) { 666 | $A = icm $srv { 667 | Get-DnsServerResourceRecord -ZoneName $using:zone_name | sort RecordType | select RecordType,HostName, @{ 668 | Label="IPAddress"; Expression={$_.RecordData.IPv4Address.IPAddressToString}},TimeToLive,Timestamp 669 | } | select RecordType,HostName,IPAddress,TimeToLive,Timestamp | Out-GridView -Title "DNS Server: $srv | Zone: $zone_name" –PassThru 670 | } 671 | if ($A -ne $null) { 672 | $RT = $A.RecordType 673 | $HN = $A.HostName 674 | $wshell = New-Object -ComObject Wscript.Shell 675 | $output = $wshell.Popup("Romove record $HN (type: $RT)",0,"Select",4) 676 | if ($output -eq 6) { 677 | icm $srv { 678 | Remove-DnsServerResourceRecord -ZoneName $using:zone_name -RRType $using:RT -Name $using:HN –Force 679 | } 680 | } 681 | } 682 | } 683 | #endregion 684 | 685 | #region functions-Admin 686 | function comp-manager { 687 | compmgmt.msc /computer=\\$srv 688 | } 689 | 690 | function services-view-ogv { 691 | $Service = Get-Service -computername "$srv" | Out-GridView -Title "$Text_Services $Text_ToServer $srv" –PassThru 692 | $Service_out = $Service.Name 693 | if ($Service_out -ne $null) { 694 | $wshell = New-Object -ComObject Wscript.Shell 695 | $output = $wshell.Popup("$Text_Restart $Text_Service - $Service_out $Text_ToServer $srv ?",0,"$Text_SelectAction",2) 696 | if ($output -eq "4") {Get-Service -computername $srv | Where {$_.Name -Like $Service_out} | Restart-Service} 697 | if ($output -eq "3") {Get-Service -computername $srv | Where {$_.Name -Like $Service_out} | Stop-Service} 698 | $status_services = Get-Service -computername $srv | Where {$_.Name -Like $Service_out} 699 | $status_services = $status_services.Status 700 | $output = $wshell.Popup("$Service_out - $status_services",0,"$srv",64) 701 | $Service_out = $null 702 | } 703 | } 704 | 705 | function services-view { 706 | $DataGridView.DataSource = $null 707 | $DataGridView.Rows.Clear() 708 | $DataGridView.ColumnCount = 3 709 | $DataGridView.Columns[0].Name = "Status" 710 | $DataGridView.Columns[1].Name = "Name" 711 | $DataGridView.Columns[2].Name = "Display Name" 712 | $Service_dgv = foreach ($gs in $Service) { 713 | $DataGridView.Rows.Add( 714 | $gs.Status, 715 | $gs.Name, 716 | $gs.DisplayName 717 | ) 718 | } 719 | $DataGridView.Rows | ForEach-Object { 720 | if ($_.Cells["Status"].Value -eq "Running") { 721 | $_.Cells[0] | %{$_.Style.BackColor = "lightgreen"} 722 | } elseif ($_.Cells["Status"].Value -eq "Stopped") { 723 | $_.Cells[0] | %{$_.Style.BackColor = "pink"} 724 | }} 725 | $Count = $Service.Count 726 | $Status.Text = "$Count $Text_Services $Text_ToServer $srv" 727 | 728 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu 729 | $ContextMenu_services.MenuItems.Add("$Text_Restart $Text_Service",{ 730 | $RowIndex = @($dataGridView.SelectedCells.RowIndex) 731 | $Column_ID_Service = 1 732 | $global:dgv_selected_services = $dataGridView.Rows[$RowIndex].Cells[$Column_ID_Service].FormattedValue 733 | services-restart 734 | }) 735 | $ContextMenu_services.MenuItems.Add("$Text_Stop $Text_Service",{ 736 | $RowIndex = @($dataGridView.SelectedCells.RowIndex) 737 | $Column_ID_Service = 1 738 | $global:dgv_selected_services = $dataGridView.Rows[$RowIndex].Cells[$Column_ID_Service].FormattedValue 739 | services-stop 740 | }) 741 | $main_form.ContextMenu = $ContextMenu_services 742 | } 743 | 744 | function services-restart { 745 | $wshell = New-Object -ComObject Wscript.Shell 746 | $output = $wshell.Popup("$Text_Restart $Text_Service - $dgv_selected_services $Text_ToServer $srv ?",0,"$Text_SelectAction",4) 747 | if ($output -eq "6") {Get-Service -computername $srv | Where {$_.Name -Like $dgv_selected_services} | Restart-Service} 748 | $global:Service = Get-Service -computername "$srv" | Sort Name 749 | [string]$status_services = ($Service | Where {$_.Name -Like $dgv_selected_services}).Status 750 | $Status.Text = "$dgv_selected_services - $status_services" 751 | $dgv_selected_services = $null 752 | 753 | $global:Service = Get-Service -computername $srv | Sort Name 754 | $global:Service_search = $Service 755 | services-view 756 | services-search 757 | } 758 | 759 | function services-stop { 760 | $wshell = New-Object -ComObject Wscript.Shell 761 | $output = $wshell.Popup("$Text_Stop $Text_Services $dgv_selected_services $Text_ToServer $srv ?",0,"$Text_SelectAction",4) 762 | if ($output -eq "6") {Get-Service -computername $srv | Where {$_.Name -Like $dgv_selected_services} | Stop-Service} 763 | $global:Service = Get-Service -computername "$srv" | Sort Name 764 | [string]$status_services = ($Service | Where {$_.Name -Like $dgv_selected_services}).Status 765 | $Status.Text = "$dgv_selected_services - $status_services" 766 | $dgv_selected_services = $null 767 | 768 | $global:Service = Get-Service -computername $srv | Sort Name 769 | $global:Service_search = $Service 770 | services-view 771 | services-search 772 | } 773 | 774 | function services-search { 775 | $SearchTextBox.Add_TextChanged({ 776 | $search_text = $SearchTextBox.Text 777 | $global:Service = @($Service_search | Where { 778 | $_.Name -match "$search_text" 779 | }) 780 | services-view 781 | }) 782 | } 783 | 784 | ### Out Get-Package to DGV 785 | #function view-soft { 786 | #$software = icm $srv {Get-Package -ProviderName msi} 787 | #$DataGridView.DataSource = $null 788 | #$DataGridView.Rows.Clear() 789 | #$DataGridView.ColumnCount = 3 790 | #$DataGridView.Columns[0].Name = "Name" 791 | #$DataGridView.Columns[1].Name = "Version" 792 | #$DataGridView.Columns[2].Name = "Source" 793 | #$Service_dgv = foreach ($gpack in $software) { 794 | #$DataGridView.Rows.Add( 795 | #$gpack.Name, 796 | #$gpack.Version, 797 | #$gpack.Source 798 | #) 799 | #} 800 | # 801 | ### Delete Software 802 | #$ContextMenu_services = New-Object System.Windows.Forms.ContextMenu 803 | #$ContextMenu_services.MenuItems.Add("$Text_Delete $Text_Software",{ 804 | #$global:dgv_selected_soft = $DataGridView.SelectedCells.Value 805 | #$wshell = New-Object -ComObject Wscript.Shell 806 | #$output = $wshell.Popup("$Text_Delete $dgv_selected_soft $Text_ToServer $srv ?",0,"$Text_SelectAction",4) 807 | #if ($output -eq "6") { 808 | #remove-soft 809 | #} 810 | #}) 811 | #$main_form.ContextMenu = $ContextMenu_services 812 | #} 813 | # 814 | #function remove-soft { 815 | #$Status.Text = "$Text_Delete...10%"; sleep 1 816 | #$session = New-PSSession $srv 817 | #$Status.Text = "$Text_Delete...20%"; sleep 1 818 | #icm -Session $session {$dgv_selected_soft = $using:dgv_selected_soft} 819 | #$Status.Text = "$Text_Delete...30%"; sleep 1 820 | #icm -Session $session {if ($dgv_selected_soft -ne $null) { 821 | #Get-Package -Name "$dgv_selected_soft" | Uninstall-Package} 822 | #} 823 | #$Status.Text = "$Text_Delete...50%"; sleep 1 824 | #icm -Session $session {$dgv_selected_soft = $null} 825 | #$Status.Text = "$Text_Delete...70%"; sleep 1 826 | #Disconnect-PSSession $session 827 | #$Status.Text = "$Text_Delete...80%"; sleep 1 828 | #Remove-PSSession $session 829 | #$Status.Text = "$Text_Delete...90%"; sleep 1 830 | #$dgv_selected_soft = $null 831 | #$Status.Text = "$Text_Delete...100%"; sleep 1 832 | #$Status.Text = "$Text_Delete...100% - $Text_Completed"; sleep 1 833 | #view-soft 834 | #} 835 | 836 | function Get-DISM { 837 | if ($srv -like "localhost") { 838 | $dismName = dism /Online /Get-Packages /format:table | 839 | Out-Gridview -Title "DISM $Text_Packages $Text_ToServer $srv" –PassThru 840 | if ($dismName -ne $null) { 841 | $dismNamePars = $dismName -replace "\|.+" 842 | $dismNamePars = $dismNamePars -replace "\s" 843 | $wshell = New-Object -ComObject Wscript.Shell 844 | $output = $wshell.Popup("Delete Update $dismNamePars to server $srv ?",0,"Select action",4) 845 | if ($output -eq "6") { 846 | dism /Online /Remove-Package /PackageName:$dismNamePars /quiet /norestart 847 | } 848 | } 849 | } else { 850 | $session = New-PSSession $srv 851 | $dismName = icm -Session $session {dism /Online /Get-Packages /format:table} | 852 | Out-Gridview -Title "DISM $Text_Packages $Text_ToServer $srv" –PassThru 853 | if ($dismName -ne $null) { 854 | $dismNamePars = $dismName -replace "\|.+" 855 | $dismNamePars = $dismNamePars -replace "\s" 856 | $wshell = New-Object -ComObject Wscript.Shell 857 | $output = $wshell.Popup("Delete Update $dismNamePars to server $srv ?",0,"Select action",4) 858 | if ($output -eq "6") { 859 | icm -Session $session {$dismNamePars = $using:dismNamePars} 860 | icm -Session $session {dism /Online /Remove-Package /PackageName:$dismNamePars /quiet /norestart} 861 | Remove-PSSession $session 862 | } 863 | } 864 | } 865 | wmi-upd 866 | } 867 | 868 | function SMB-files-ogv { 869 | $session = New-CIMSession –Computername $srv 870 | Get-SmbOpenFile -CIMSession $session | select ClientUserName,ClientComputerName,Path,SessionID | 871 | Out-GridView -PassThru –title "$Text_Open $Text_File $Text_ToServer $srv" | 872 | Close-SmbOpenFile -CIMSession $session -Confirm:$false –Force 873 | } 874 | 875 | function SMB-files { 876 | $session = New-CIMSession –Computername $srv 877 | $open_smb = Get-SmbOpenFile -CIMSession $session 878 | 879 | $DataGridView.DataSource = $null 880 | $DataGridView.Rows.Clear() 881 | $DataGridView.ColumnCount = 4 882 | $DataGridView.Columns[0].Name = "User Name" 883 | $DataGridView.Columns[1].Name = "Client Computer Name" 884 | $DataGridView.Columns[2].Name = "Path" 885 | $DataGridView.Columns[3].Name = "File ID" 886 | $Service_dgv = foreach ($smbf in $open_smb) { 887 | $DataGridView.Rows.Add( 888 | $smbf.ClientUserName, 889 | $smbf.ClientComputerName, 890 | $smbf.Path, 891 | $smbf.FileId 892 | ) 893 | } 894 | 895 | $OpenFilesCount = $open_smb.Count 896 | $Status.Text = "$OpenFilesCount $Text_Open $Text_Files" 897 | 898 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu 899 | $ContextMenu_services.MenuItems.Add("$Text_Close $Text_File",{ 900 | $Column_ID_File = 3 901 | $RowIndex = @($dataGridView.SelectedCells.RowIndex) 902 | $ID_File_Value = $dataGridView.Rows[$RowIndex].Cells[$Column_ID_File].FormattedValue 903 | 904 | $session = New-CIMSession –Computername $srv 905 | Close-SmbOpenFile -CIMSession $session -FileId $ID_File_Value -Confirm:$false –Force 906 | SMB-files 907 | Remove-CimSession $session 908 | }) 909 | $main_form.ContextMenu = $ContextMenu_services 910 | } 911 | 912 | function gp-upd { 913 | $gpupdate_result = Invoke-Command -ComputerName $srv -ScriptBlock { 914 | gpupdate /force 915 | } 916 | if ($gpupdate_result -match "successfully") { 917 | $Status.Text = "Group policy successfully to server $srv" 918 | } else { 919 | $Status.Text = "Error applyed group policy to server $srv" 920 | } 921 | } 922 | 923 | function gp-res { 924 | $usr = Read-Host "Enter user name:" 925 | $path = "C:\Users\$env:UserName\desktop\GPResult-$srv-$usr.html" 926 | GPRESULT /S $srv /user $usr /H $path 927 | ii $path 928 | } 929 | #endregion 930 | 931 | #region functions-Power 932 | function power-reboot { 933 | shutdown /r /f /t 60 /m \\$srv /c "$Text_Scheduled $Text_Restart $Text_inSeconds" 934 | 935 | if ($lastexitcode -eq 0) { 936 | $Status.Text = "$Text_Successfully $Text_Scheduled $Text_Restart $Text_ToServer $srv" 937 | } 938 | if (($lastexitcode -ne 0) -and ($lastexitcode -eq 1190)) { 939 | $Status.Text = "$Text_Restart $Text_AlReady $Text_Scheduled" 940 | } 941 | if (($lastexitcode -ne 0) -and ($lastexitcode -ne 1190)) { 942 | $Status.Text = "$Text_Error $Text_Restart" 943 | } 944 | } 945 | 946 | function power-off { 947 | shutdown /s /f /t 60 /m \\$srv 948 | 949 | if ($lastexitcode -eq 0) { 950 | $Status.Text = "$Text_Successfully $Text_Scheduled $Text_PowerOff $Text_ToServer $srv" 951 | } else { 952 | $Status.Text = "$Text_Error $Text_PowerOff" 953 | } 954 | } 955 | 956 | function power-cancel { 957 | shutdown /a /m \\$srv 958 | 959 | if ($lastexitcode -eq 0) { 960 | $Status.Text = "$Text_Cacel $Text_Restart $Text_ToServer $srv" 961 | } 962 | if (($lastexitcode -ne 0) -and ($lastexitcode -eq 1116)) { 963 | $Status.Text = "$Text_Restart $Text_AlReady $Text_Cacel" 964 | } 965 | if (($lastexitcode -ne 0) -and ($lastexitcode -ne 1116)) { 966 | $Status.Text = "$Text_Error $Text_Cacel" 967 | } 968 | } 969 | 970 | function power-monitor { 971 | $wshell = New-Object -ComObject Wscript.Shell 972 | $output = $wshell.Popup("Disable screen lock, click yes 973 | Change time screen lock, click no",0,"$Text_SelectAction",3) 974 | if ($output -eq "6") {$timeout = "0"} 975 | if ($output -eq "7") {$timeout = Read-Host "Enter time to minutes"} 976 | if (($output -eq "6") -or ($output -eq "7")) { 977 | $session = New-PSSession $srv 978 | icm -Session $session {$timeout = $using:timeout} 979 | icm -Session $session {powercfg -change -monitor-timeout-ac $timeout} 980 | icm -Session $session {powercfg -change -monitor-timeout-dc $timeout} 981 | Remove-PSSession $session 982 | } 983 | } 984 | 985 | function power-standby { 986 | $wshell = New-Object -ComObject Wscript.Shell 987 | $output = $wshell.Popup("Disable sleep mode, click yes 988 | Change time sleep mode, click no",0,"$Text_SelectAction",3) 989 | if ($output -eq "6") {$timeout = "0"} 990 | if ($output -eq "7") {$timeout = Read-Host "Enter time to minutes"} 991 | if (($output -eq "6") -or ($output -eq "7")) { 992 | $session = New-PSSession $srv 993 | icm -Session $session {$timeout = $using:timeout} 994 | icm -Session $session {powercfg -x -standby-timeout-ac $timeout} 995 | icm -Session $session {powercfg -x -standby-timeout-dc $timeout} 996 | Remove-PSSession $session 997 | } 998 | } 999 | 1000 | function power-wol { 1001 | [string]$mac_out = $outputBox_message.text 1002 | $wshell = New-Object -ComObject Wscript.Shell 1003 | $output = $wshell.Popup("MAC: $mac_out ?",0,"$Text_PowerOn",4) 1004 | if ($output -eq "6") { 1005 | $global:mac = $mac_out; 1006 | wol-pack 1007 | }} 1008 | 1009 | function wol-pack { 1010 | $BroadcastProxy=[System.Net.IPAddress]::Broadcast 1011 | $Ports = 0,7,9 1012 | 1013 | $synchronization = [byte[]](,0xFF * 6) 1014 | $bmac = $mac -Split '-' | ForEach-Object { [byte]('0x' + $_) } 1015 | $packet = $synchronization + $bmac * 16 1016 | 1017 | $UdpClient = New-Object System.Net.Sockets.UdpClient 1018 | ForEach ($port in $Ports) {$UdpClient.Connect($BroadcastProxy, $port) 1019 | $UdpClient.Send($packet, $packet.Length) | Out-Null} 1020 | $UdpClient.Close() 1021 | $Status.Text = "WOL package sent" 1022 | } 1023 | 1024 | function Get-DHCP { 1025 | $mac = Invoke-Command -ComputerName $srv -ScriptBlock {Get-DhcpServerv4Scope | Get-DhcpServerv4Lease} | 1026 | select AddressState,HostName,IPAddress,ClientId,DnsRegistration,DnsRR,ScopeId,ServerIP | 1027 | Out-GridView -Title "HDCP Server: $srv" –PassThru 1028 | $mac = $mac.ClientId 1029 | $outputBox_message.ForeColor = [System.Drawing.SystemColors]::WindowText 1030 | $outputBox_message.text = $mac 1031 | } 1032 | #endregion 1033 | 1034 | #region Get-ARP 1035 | function Get-ARP { 1036 | Param ( 1037 | $proxy = $srv 1038 | ) 1039 | #$search = Read-Host "Enter hostname or ip-address for search MAC-Address on server $srv" 1040 | if ($proxy -like "localhost") { 1041 | $arp = arp -a 1042 | } else { 1043 | $arp = icm $proxy {arp -a} 1044 | } 1045 | $mac = $arp[3..260] 1046 | $mac = $mac -replace "^\s\s" 1047 | $mac = $mac -replace "\s{1,50}"," " 1048 | $mac_coll = New-Object System.Collections.Generic.List[System.Object] 1049 | foreach ($m in $mac) { 1050 | $smac = $m -split " " 1051 | $mac_coll.Add([PSCustomObject]@{ 1052 | IP = $smac[0]; 1053 | MAC = $smac[1]; 1054 | Type = $smac[2] 1055 | }) 1056 | } 1057 | #if ($search) { 1058 | #if ($search -NotMatch "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}") { 1059 | ##$ns = nslookup $search 1060 | ##$ns = $ns[-2] 1061 | ##$global:ns = $ns -replace "Address:\s{1,10}" 1062 | #$rdns = Resolve-DnsName $search -ErrorAction Ignore 1063 | #$ns = $rdns.IPAddress 1064 | #if ($ns -eq $null) { 1065 | #return 1066 | #} 1067 | #} else { 1068 | #$ns = $search 1069 | #} 1070 | #$mac_coll = $mac_coll | ? ip -Match $ns 1071 | #} 1072 | $mac_coll 1073 | } 1074 | #endregion 1075 | 1076 | #region Get-EventTS 1077 | #function event-sys { 1078 | #Get-EventLog -ComputerName $srv -LogName System -Newest 100 -EntryType Error,Warning | 1079 | #select TimeWritten,EventID,EntryType,Source,Message | 1080 | #Out-Gridview -Title "$Text_Event System $srv" 1081 | #} 1082 | # 1083 | #function event-app { 1084 | #Get-EventLog -ComputerName $srv -LogName Application -Newest 100 -EntryType Error,Warning | 1085 | #select TimeWritten,EventID,EntryType,Source,Message | 1086 | #Out-Gridview -Title "$Text_Event Application $srv" 1087 | #} 1088 | ### 1089 | # -LogName Security 1090 | # EventID: 1091 | # 4624 - An account was successfully logged on 1092 | # 4625 - An account failed to log on (LogonType: 10/3 — RDP service, 7 Reconnect Session, 5 – mstsc.exe /admin) 1093 | # 4634 - An account was logged off 1094 | # 4647 - User initiated logoff 1095 | # 4778 - A session was reconnected to a Window Station 1096 | # 4779 - A session was disconnected from a Window Station 1097 | # TS-LSM: 1098 | # 39 - Session has been disconnected by session 1099 | # 39 - Session has been disconnected, reason code 1100 | # reason code 0 - No additional information is available 1101 | # reason code 5 - The client connection was replaced by another connection 1102 | # reason code 11 - User activity has initiated the disconnect 1103 | ### 1104 | 1105 | function event-power { 1106 | Get-WinEvent -ComputerName $srv -FilterHashtable @{logname='System';id=1074} | select TimeCreated,Message | 1107 | Out-Gridview -Title "$Text_Event $Text_Power $srv" 1108 | } 1109 | 1110 | function Get-EventTS { 1111 | Param ( 1112 | [switch]$connect, 1113 | [switch]$logon, 1114 | [switch]$logoff, 1115 | [switch]$disconnect, 1116 | [switch]$reconnect 1117 | ) 1118 | if ($connect) { 1119 | $RDPAuths = Get-WinEvent -ComputerName $srv -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" ` 1120 | -FilterXPath '' 1121 | [xml[]]$xml = $RDPAuths | Foreach {$_.ToXml()} 1122 | $EventData = Foreach ($event in $xml.Event) { 1123 | New-Object PSObject -Property @{ 1124 | "Connection Time" = (Get-Date ($event.System.TimeCreated.SystemTime) -Format 'yyyy-MM-dd hh:mm K') 1125 | "User Name" = $event.UserData.EventXML.Param1 1126 | "User Address" = $event.UserData.EventXML.Param3 1127 | "Event ID" = $event.System.EventID 1128 | }} 1129 | $EventData | Out-Gridview -Title "TS-Remote-Connection-Manager to server $srv" 1130 | } 1131 | 1132 | if (!($connect)) { 1133 | if ($logon) { 1134 | $FilterXPath = '' 1135 | } 1136 | if ($logoff) { 1137 | $FilterXPath = '' 1138 | } 1139 | if ($disconnect) { 1140 | $FilterXPath = '' 1141 | } 1142 | if ($reconnect) { 1143 | $FilterXPath = '' 1144 | } 1145 | $RDPAuths = Get-WinEvent -ComputerName $srv -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" ` 1146 | -FilterXPath $FilterXPath 1147 | [xml[]]$xml = $RDPAuths | Foreach {$_.ToXml()} 1148 | $EventData = Foreach ($event in $xml.Event) { 1149 | New-Object PSObject -Property @{ 1150 | "Connection Time" = (Get-Date ($event.System.TimeCreated.SystemTime) -Format 'yyyy-MM-dd hh:mm K') 1151 | "User Name" = $event.UserData.EventXML.User 1152 | "User ID" = $event.UserData.EventXML.SessionID 1153 | "User Address" = $event.UserData.EventXML.Address 1154 | "Event ID" = $event.System.EventID 1155 | }} 1156 | $EventData | Out-Gridview -Title "TS-Local-Session-Manager to server $srv" 1157 | } 1158 | } 1159 | #endregion 1160 | 1161 | #region functions-Time 1162 | function net-time { 1163 | $net_time = net time \\$srv 1164 | $regtime = $net_time -match "$srv" 1165 | $regtime = $regtime -replace "$srv" 1166 | $regtime = $regtime -replace "Current time at \\\\ is " 1167 | $global:nettime = $regtime 1168 | $Status.Text = "Current time $Text_ToServer $srv - $nettime. " 1169 | 1170 | $span = new-timespan -Start (get-date) -end (icm $srv {get-date}) 1171 | [string]$diff = $span.TotalSeconds 1172 | $Status.Text += "Time difference: $diff seconds" 1173 | } 1174 | 1175 | function check-time { 1176 | [string]$in_time = icm $srv {w32tm /query /status} 1177 | if ($in_time -match "Last") { 1178 | [string]$in_time = $in_time -replace ".+(?<= Last)" 1179 | [string]$in_time = $in_time -replace "^","Last" 1180 | } else { 1181 | [string]$in_time = icm $srv {w32tm /query /source} 1182 | } 1183 | $wshell = New-Object -ComObject Wscript.Shell 1184 | $output = $wshell.Popup("$in_time",0,"$srv",64) 1185 | } 1186 | 1187 | function time-test { 1188 | $in_time = w32tm /stripchart /computer:$srv /dataonly /samples:1 1189 | if ($in_time -match "0x800705B4") { 1190 | $Status.Text = "Error on time source $srv" 1191 | } else {$Status.Text = "Available time source $srv"} 1192 | } 1193 | 1194 | function sync-PDC { 1195 | $session = New-PSSession $srv 1196 | icm -Session $session {Get-Service | Where {$_.Name -match "w32time"} | stop-service} 1197 | $Status.Text = "10%...Sto Service"; sleep 5 1198 | icm -Session $session {w32tm.exe /unregister} 1199 | $Status.Text = "20%...Reset Settings"; sleep 10 1200 | $Status.Text = "30%...Reset Settings"; sleep 10 1201 | $Status.Text = "40%...Reset Settings"; sleep 5 1202 | $Status.Text = "50%...Time Setting"; sleep 5 1203 | icm -Session $session {w32tm.exe /register} 1204 | $Status.Text = "60%...Time Setting"; sleep 5 1205 | $Status.Text = "70%...Time Setting"; sleep 5 1206 | icm -Session $session {Get-Service | Where {$_.Name -match "w32time"} | start-service} 1207 | $Status.Text = "80%...Time Setting"; sleep 5 1208 | icm -Session $session {w32tm /config /syncfromflags:domhier /update} 1209 | $Status.Text = "90%...Start Service"; sleep 5 1210 | icm -Session $session {Get-Service | Where {$_.Name -match "w32time"} | restart-service} 1211 | Remove-PSSession $session 1212 | $Status.Text = "100%...Ready" 1213 | } 1214 | 1215 | function sync-external { 1216 | $session = New-PSSession $srv 1217 | $servertime = Read-Host "Enter name source time" 1218 | icm -Session $session {$servertime = $using:servertime} 1219 | if ($servertime -ne $null) { 1220 | icm -Session $session { 1221 | w32tm.exe /config /manualpeerlist:"$servertime,0x8" /syncfromflags:manual /reliable:yes /update 1222 | } 1223 | } 1224 | icm -Session $session {Get-Service | Where {$_.Name -match "w32time"} | restart-service} 1225 | Remove-PSSession $session 1226 | $Status.Text = "$servertime selected from an external source to server $srv" 1227 | } 1228 | 1229 | function sync-time { 1230 | icm $srv {w32tm /resync /rediscover} 1231 | $Status.Text = "Synced" 1232 | } 1233 | #endregion 1234 | 1235 | #region functions-KMS 1236 | function kms-status { 1237 | $wmios = gwmi Win32_OperatingSystem -computername $srv 1238 | $os = $wmios.Caption 1239 | 1240 | $check = icm $srv {Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" | where {$_.PartialProductKey}} 1241 | $kms_ver = $check.LicenseFamily 1242 | $kms_channel = $check.Description 1243 | $kms_key = $check.ProductKeyChannel 1244 | $kms_check = $check.LicenseStatus 1245 | if ($kms_check -eq 0) {$kms_status = "Server not activated"} 1246 | if ($kms_check -eq 1) {$kms_status = "Server activated"} 1247 | if ($kms_check -eq 2) {$kms_status = "OOBGrace"} 1248 | if ($kms_check -eq 3) {$kms_status = "OOTGrace (not activate automatically or more than 180 days have passed)"} 1249 | if ($kms_check -eq 4) {$kms_status = "NonGenuineGrace"} 1250 | if ($kms_check -eq 5) {$kms_status = "The trial period for Windows is over"} 1251 | if ($kms_check -eq 6) {$kms_status = "ExtendedGrace (You can extend the trial version of Windows several times by using: slmgr /rearm)"} 1252 | 1253 | $kms_ip = $check.DiscoveredKeyManagementServiceMachineIpAddress 1254 | if ($check.DiscoveredKeyManagementServiceMachineName -gt 0) {$kms_name = $check.DiscoveredKeyManagementServiceMachineName} 1255 | if ($check.KeyManagementServiceMachine -gt 0) {$kms_name = $check.KeyManagementServiceMachine} 1256 | if ($check.DiscoveredKeyManagementServiceMachinePort -gt 0) {$kms_port = $check.DiscoveredKeyManagementServiceMachinePort} 1257 | if ($check.KeyManagementServicePort -gt 0) {$kms_port = $check.KeyManagementServicePort} 1258 | $ip_port = "$kms_ip"+":"+"$kms_port" 1259 | 1260 | $wshell = New-Object -ComObject Wscript.Shell 1261 | $output = $wshell.Popup( 1262 | "Operating System: $os 1263 | Edition: $kms_ver 1264 | Channel: $kms_channel 1265 | Key: $kms_key 1266 | Status: $kms_status ($kms_check) 1267 | License Server: $kms_name ($ip_port)", 1268 | 64,"$srv") 1269 | } 1270 | 1271 | function kms-domain { 1272 | $kms_domain = nslookup -type=srv _vlmcs._tcp.$domain 1273 | #$kms_domain = $kms_domain -Match "(hostname|port)" 1274 | $kms_domain = $kms_domain -Match "(hostname)" 1275 | [string]$kms_domain = $kms_domain -replace ".+(?<== )" 1276 | $Status.Text = "KMS-Server Address $kms_domain in domain $domain" 1277 | } 1278 | 1279 | function gvlk-managment { 1280 | $main_form_gvlk = New-Object System.Windows.Forms.Form 1281 | $main_form_gvlk.Text = "Generic Volume License Key Activator" 1282 | $main_form_gvlk.ShowIcon = $false 1283 | $main_form_gvlk.StartPosition = "CenterScreen" 1284 | $main_form_gvlk.Font = "$Font,$Size" 1285 | $main_form_gvlk.ForeColor = "Black" 1286 | $main_form_gvlk.Size = New-Object System.Drawing.Size(290,390) 1287 | $main_form_gvlk.FormBorderStyle = "FixedSingle" 1288 | $main_form_gvlk.AutoSize = $true 1289 | 1290 | $ListBox_gvlk = New-Object System.Windows.Forms.ListBox 1291 | $ListBox_gvlk.Location = New-Object System.Drawing.Point(10,10) 1292 | $ListBox_gvlk.Size = New-Object System.Drawing.Size(250,300) 1293 | $ListBox_gvlk.Items.Add("Windows Server 2016 Datacenter") 1294 | $ListBox_gvlk.Items.Add("Windows Server 2016 Standart") 1295 | $ListBox_gvlk.Items.Add("Windows Server 2019 Datacenter") 1296 | $ListBox_gvlk.Items.Add("Windows Server 2019 Standart") 1297 | $ListBox_gvlk.Items.Add("Windows Server 2022 Datacenter") 1298 | $ListBox_gvlk.Items.Add("Windows Server 2022 Standart") 1299 | $ListBox_gvlk.Items.Add("Windows 10 Professional") 1300 | $main_form_gvlk.Controls.add($ListBox_gvlk) 1301 | 1302 | $button_gvlk = New-Object System.Windows.Forms.Button 1303 | $button_gvlk.Text = "Select Edition" 1304 | $button_gvlk.Location = New-Object System.Drawing.Point(10,310) 1305 | $button_gvlk.Size = New-Object System.Drawing.Size(100,30) 1306 | $main_form_gvlk.Controls.Add($button_gvlk) 1307 | 1308 | $button_gvlk.Add_Click({ 1309 | $global:gvlk_key = $ListBox_gvlk.selectedItem 1310 | $main_form_gvlk.close() 1311 | }) 1312 | 1313 | $main_form_gvlk.ShowDialog() 1314 | 1315 | if ($gvlk_key -eq "Windows Server 2016 Datacenter") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk CB7KF-BWN84-R7R2Y-793K2-8XDDG}} 1316 | if ($gvlk_key -eq "Windows Server 2016 Standart") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY}} 1317 | if ($gvlk_key -eq "Windows Server 2019 Datacenter") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk WMDGN-G9PQG-XVVXX-R3X43-63DFG}} 1318 | if ($gvlk_key -eq "Windows Server 2019 Standart") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk N69G4-B89J2-4G8F4-WWYCC-J464C}} 1319 | if ($gvlk_key -eq "Windows Server 2022 Datacenter") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk WX4NM-KYWYW-QJJR4-XV3QB-6VM33}} 1320 | if ($gvlk_key -eq "Windows Server 2022 Standart") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk VDYBN-27WPP-V4HQT-9VMD4-VMK7H}} 1321 | if ($gvlk_key -eq "Windows 10 Professional") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX}} 1322 | if ($gvlk_key -eq $null) { 1323 | 1324 | $Status.Text = "Edition not selected"} else { 1325 | $Status.Text = "Public GVLK Key Activation for edition $gvlk_key completed on server $srv"} 1326 | $gvlk_key = $null 1327 | } 1328 | 1329 | function kms-server { 1330 | $kms_srv_enter = Read-Host "Enter KMS-Server address" 1331 | $Status.Text = "Selected KMS-Server: $kms_srv_enter" 1332 | $port_default = "1688" 1333 | $kms_srv_port = "$kms_srv_enter"+":"+"$port_default" 1334 | $session = New-PSSession $srv 1335 | icm -Session $session {$kms_srv_port = $using:kms_srv_port} 1336 | icm -Session $session {cscript $env:windir\system32\slmgr.vbs /skms $kms_srv_port} 1337 | Remove-PSSession $session 1338 | } 1339 | 1340 | function kms-lic { 1341 | icm $srv {cscript $env:windir\system32\slmgr.vbs /ato} 1342 | $Status.Text = "Activation completed" 1343 | } 1344 | #endregion 1345 | 1346 | #region functions-WMI 1347 | function Get-SizeDisk { 1348 | $DataGridView.DataSource = $null 1349 | $DataGridView.Rows.Clear() 1350 | $DataGridView.ColumnCount = 4 1351 | $datagridview.Columns[0].Name = $Text_Volume 1352 | $datagridview.Columns[1].Name = $Text_Size 1353 | $datagridview.Columns[2].Name = $Text_Free 1354 | $datagridview.Columns[3].Name = $Text_FreeProc 1355 | 1356 | gwmi Win32_logicalDisk -ComputerName $srv | foreach{ 1357 | $dataGridView.Rows.Add($_.DeviceID,[string]([int]($_.Size/1Gb))+" ГБ",[string]([int]($_.FreeSpace/1Gb))+" ГБ",[string]([int]($_.FreeSpace/$_.Size*100))+" %") 1358 | } 1359 | 1360 | $DataGridView.Rows | ForEach-Object { 1361 | if ($_.Cells[$Text_FreeProc].Value -gt "15") { 1362 | $_.Cells[3] | %{$_.Style.BackColor = "lightgreen"} 1363 | } elseif ($_.Cells[$Text_FreeProc].Value -eq $null) { 1364 | } elseif ($_.Cells[$Text_FreeProc].Value -le "15") { 1365 | $_.Cells[3] | %{$_.Style.BackColor = "pink"} 1366 | }} 1367 | } 1368 | 1369 | function Get-SizeMem { 1370 | if ($srv -like "localhost") { 1371 | $memory = Get-ComputerInfo 1372 | } else { 1373 | $memory = Invoke-Command -ComputerName $srv -ScriptBlock {Get-ComputerInfo} 1374 | } 1375 | $memout = $memory | select @{ 1376 | Label="Size"; Expression={[string]($_.CsPhyicallyInstalledMemory/1mb)+" Gb"}}, 1377 | @{Label="Free"; Expression={[string]([int]($_.OsFreePhysicalMemory/1kb))+" Mb"}} 1378 | $DataGridView.DataSource = $null 1379 | $DataGridView.Rows.Clear() 1380 | $DataGridView.ColumnCount = 2 1381 | $DataGridView.Columns[0].Name = "Size" 1382 | $DataGridView.Columns[1].Name = "Free" 1383 | $DataGridView.Rows.Add( 1384 | $memout.Size, 1385 | $memout.Free 1386 | ) 1387 | } 1388 | 1389 | function wmi-upd { 1390 | $HotFixID = Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName "$srv" 1391 | $DataGridView.DataSource = $null 1392 | $DataGridView.Rows.Clear() 1393 | $DataGridView.ColumnCount = 4 1394 | $DataGridView.Columns[0].Name = "HotFixID" 1395 | $DataGridView.Columns[1].Name = "Description" 1396 | $DataGridView.Columns[2].Name = "InstalledBy" 1397 | $DataGridView.Columns[3].Name = "InstalledOn" 1398 | $Service_dgv = foreach ($upd in $HotFixID) { 1399 | $DataGridView.Rows.Add($upd.HotFixID,$upd.Description,$upd.InstalledBy,$upd.InstalledOn) 1400 | } 1401 | 1402 | $HotFixIDCount = $HotFixID.Count 1403 | $Status.Text = "$HotFixIDCount updates" 1404 | 1405 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu 1406 | $ContextMenu_services.MenuItems.Add("Copy ID",{ 1407 | $dgv_selected_upd = $DataGridView.SelectedCells.Value 1408 | Set-Clipboard $dgv_selected_upd 1409 | $status.Text = "Update $dgv_selected_upd copy to clipboard, use to search in DISM" 1410 | }) 1411 | $main_form.ContextMenu = $ContextMenu_services 1412 | } 1413 | 1414 | function wmi-drivers { 1415 | gwmi -ComputerName $srv Win32_SystemDriver | Out-Gridview -Title "$Text_Drivers $Text_ToServer $srv" 1416 | } 1417 | 1418 | ### Out Drivers to DGV 1419 | #function wmi-drivers-dgv { 1420 | #$drivers = gwmi -ComputerName $srv Win32_SystemDriver 1421 | #$DataGridView.DataSource = $null 1422 | #$DataGridView.Rows.Clear() 1423 | #$DataGridView.ColumnCount = 3 1424 | #$DataGridView.Columns[0].Name = "Name" 1425 | #$DataGridView.Columns[1].Name = "Display Name" 1426 | #$DataGridView.Columns[2].Name = "Status" 1427 | #$Service_dgv = foreach ($drs in $drivers) { 1428 | #$DataGridView.Rows.Add($drs.Name,$drs.DisplayName,$drs.State) 1429 | #} 1430 | #$DataGridView.Rows | ForEach-Object { 1431 | #if ($_.Cells["Status"].Value -eq "Running") { 1432 | #$_.Cells[2] | %{$_.Style.BackColor = "lightgreen"} 1433 | #} elseif ($_.Cells["Status"].Value -eq "Stopped") { 1434 | #$_.Cells[2] | %{$_.Style.BackColor = "pink"} 1435 | #}} 1436 | #} 1437 | 1438 | function wmi-share { 1439 | $DataGridView.DataSource = $null 1440 | $DataGridView.Rows.Clear() 1441 | $DataGridView.ColumnCount = 0 1442 | $share = Get-WmiObject -ComputerName $srv -Class Win32_Share | Select Name,Path 1443 | $list = New-Object System.collections.ArrayList 1444 | $list.AddRange($share) 1445 | $dataGridView.DataSource = $list 1446 | 1447 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu 1448 | $ContextMenu_services.MenuItems.Add("$Text_Open $Text_Path",{ 1449 | $RowIndex = @($dataGridView.SelectedCells.RowIndex) 1450 | $Column_Path = 0 1451 | $dgv_selected_share = $dataGridView.Rows[$RowIndex].Cells[$Column_Path].FormattedValue 1452 | 1453 | $path_smb = "\\$srv\"+"$dgv_selected_share" 1454 | ii $path_smb 1455 | }) 1456 | $main_form.ContextMenu = $ContextMenu_services 1457 | } 1458 | 1459 | function wmi-rdp { 1460 | $rdp = Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace root\CIMV2\TerminalServices -Computer $srv -Authentication 6 1461 | $rdp_status = $rdp.AllowTSConnections 1462 | if ($rdp_status -eq 1) {$rdp_var = "$Text_On"} elseif ($rdp_status -eq 0) {$rdp_var = "$Text_Off"} 1463 | $wshell = New-Object -ComObject Wscript.Shell 1464 | $output = $wshell.Popup("Remote Desktop Protocol - $rdp_var, $Text_ToServer $srv ` 1465 | $Text_On - click yes ` 1466 | $Text_Off - click no",0,"$Text_SelectAction",3) 1467 | if ($output -eq "6") { 1468 | (Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace root\CIMV2\TerminalServices -Computer $srv ` 1469 | -Authentication 6).SetAllowTSConnections(1,1) 1470 | } 1471 | if ($output -eq "7") { 1472 | (Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace root\CIMV2\TerminalServices -Computer $srv ` 1473 | -Authentication 6).SetAllowTSConnections(0,0) 1474 | } 1475 | } 1476 | 1477 | function wmi-nla { 1478 | $nla = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\Terminalservices -ComputerName $srv -Filter "TerminalName='RDP-tcp'") 1479 | if ($nla.UserAuthenticationRequired -eq 1) {$nla_out = "$Text_On"} elseif ($nla.UserAuthenticationRequired -eq 0) {$nla_out = "$Text_Off"} 1480 | $wshell = New-Object -ComObject Wscript.Shell 1481 | $output = $wshell.Popup("Network Level Authentication - $nla_out, $Text_ToServer $srv ` 1482 | $Text_On - click yes ` 1483 | $Text_Off - click no",0,"$Text_SelectAction",3) 1484 | if ($output -eq "6") { 1485 | (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\Terminalservices -ComputerName $srv ` 1486 | -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(1) 1487 | } 1488 | if ($output -eq "7") { 1489 | (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\Terminalservices -ComputerName $srv ` 1490 | -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(0) 1491 | } 1492 | } 1493 | #endregion 1494 | 1495 | #region functions-install 1496 | function openfile { 1497 | $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog 1498 | $OpenFileDialog.Filter = "msi (*.msi)|*.msi" 1499 | $OpenFileDialog.InitialDirectory = ".\" 1500 | $OpenFileDialog.Title = "Select File" 1501 | $getKey = $OpenFileDialog.ShowDialog() 1502 | [string]$global:path_msi = $OpenFileDialog.FileNames 1503 | [string]$global:name_msi = $OpenFileDialog.SafeFileName 1504 | $status.Text = "Selected File: $path_msi" 1505 | } 1506 | 1507 | function wmi-install { 1508 | openfile 1509 | $wshell = New-Object -ComObject Wscript.Shell 1510 | if ($path_msi -ne $null) { 1511 | $output = $wshell.Popup("$Text_Setup $name_msi $Text_ToServer $srv ?",0,"$Text_SelectAction",4) 1512 | } 1513 | if ($output -eq "6") {wmi-installer} 1514 | } 1515 | 1516 | function wmi-installer { 1517 | #$Status.Text = "Setup start $name_msi on $srv" 1518 | #$install = Invoke-CimMethod -ComputerName $srv -ClassName Win32_Product -MethodName Install -Arguments @{PackageLocation=$path_msi} 1519 | #$install_out = $install.ReturnValue 1520 | #if ($install_out -eq "0") {$status.Text = "Setup $name_msi on $srv successfully completed"} else { 1521 | #$status.Text = "Setup Error ($install_out)" 1522 | #} 1523 | ############################################################ 1524 | #$Status.Text = "Setup start $name_msi on $srv" 1525 | #$install = (Get-WMIObject -Authentication PacketPrivacy -ComputerName $srv -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install($path_msi) 1526 | #$install_out = $install.ReturnValue 1527 | #if ($install_out -eq "0") {$status.Text = "Setup $name_msi on $srv successfully completed"} else { 1528 | #$status.Text = "Setup Error ($install_out)" 1529 | #} 1530 | ############################################################ 1531 | $session = New-PSSession $srv 1532 | icm -Session $session {$path_msi = $using:path_msi} 1533 | $Status.Text = "Setup start $name_msi on $srv" 1534 | $install = icm -Session $session {Install-Package -Name $path_msi -Force -Verbose} 1535 | icm -Session $session {$path_msi = $null} 1536 | Disconnect-PSSession $session 1537 | Remove-PSSession $session 1538 | $path_msi = $null 1539 | [string]$inst_out = $install.Status 1540 | if ($install -ne $null) {$Status.Text = "Setup completed ($inst_out)"} else { 1541 | $Status.Text = "Setup Error" 1542 | } 1543 | } 1544 | #endregion 1545 | 1546 | #region Get-Invent-1.1 1547 | function Get-Invent { 1548 | <# 1549 | .SYNOPSIS 1550 | Remote and local hardware inventory via WMI 1551 | .DESCRIPTION 1552 | Example: 1553 | Get-Invent server-01 1554 | Get-Invent localhost # default localhost 1555 | Get-Invent -Full server-01 # full report 1556 | .LINK 1557 | https://github.com/Lifailon/Get-Invent 1558 | #> 1559 | Param ( 1560 | $srv="localhost", 1561 | [switch]$Full 1562 | ) 1563 | $Collection = New-Object System.Collections.Generic.List[System.Object] 1564 | $SYS = gwmi Win32_ComputerSystem -computername $srv 1565 | $OS = gwmi Win32_OperatingSystem -computername $srv 1566 | $BB = gwmi Win32_BaseBoard -computername $srv 1567 | $BBv = $BB.Manufacturer+" "+$BB.Product+" "+$BB.Version 1568 | $CPU = gwmi Win32_Processor -computername $srv | select Name, 1569 | @{Label="Core"; Expression={$_.NumberOfCores}}, 1570 | @{Label="Thread"; Expression={$_.NumberOfLogicalProcessors}} 1571 | $Memory = gwmi Win32_PhysicalMemory -computername $srv | select Manufacturer,PartNumber, 1572 | ConfiguredClockSpeed,@{Label="Memory"; Expression={[string]($_.Capacity/1Mb)}} 1573 | $MEMs = $Memory.Memory | Measure -Sum 1574 | $PhysicalDisk = gwmi Win32_DiskDrive -computername $srv | select Model, 1575 | @{Label="Size"; Expression={[int]($_.Size/1Gb)}} 1576 | $PDs = $PhysicalDisk.Size | Measure -Sum 1577 | $LogicalDisk = gwmi Win32_logicalDisk -ComputerName $srv | where {$_.Size -ne $null} | select @{ 1578 | Label="Value"; Expression={$_.DeviceID}}, @{Label="AllSize"; Expression={ 1579 | ([int]($_.Size/1Gb))}},@{Label="FreeSize"; Expression={ 1580 | ([int]($_.FreeSpace/1Gb))}}, @{Label="Free%"; Expression={ 1581 | [string]([int]($_.FreeSpace/$_.Size*100))+" %"}} 1582 | $LDs = $LogicalDisk.AllSize | Measure -Sum 1583 | $VideoCard = gwmi Win32_VideoController -computername $srv | select @{ 1584 | Label="VideoCard"; Expression={$_.Name}}, @{Label="Display"; Expression={ 1585 | [string]$_.CurrentHorizontalResolution+"x"+[string]$_.CurrentVerticalResolution}}, 1586 | @{Label="vRAM"; Expression={($_.AdapterRAM/1Gb)}} 1587 | $VCs = $VideoCard.vRAM | Measure -Sum 1588 | $NetworkAdapter = gwmi Win32_NetworkAdapter -computername $srv | where { 1589 | $_.Macaddress -ne $null} | select Manufacturer, @{ 1590 | Label="NetworkAdapter"; Expression={$_.Name}},Macaddress 1591 | $NAs = $NetworkAdapter | Measure 1592 | $Collection.Add([PSCustomObject]@{ 1593 | Host = $SYS.Name 1594 | Owner = $SYS.PrimaryOwnerName 1595 | OS = $OS.Caption 1596 | MotherBoard = $BBv 1597 | CPU = $CPU[0].Name 1598 | Core = $CPU[0].Core 1599 | Thread = $CPU[0].Thread 1600 | MemoryAll = [String]$MEMs.Sum+" Mb" 1601 | MemorySlots = $MEMs.Count 1602 | PhysicalDiskCount = $PDs.Count 1603 | LogicalDiskCount = $LDs.Count 1604 | LogicalDiskAllSize = [String]$LDs.Sum+" Gb" 1605 | VideoCardCount = $VCs.Count 1606 | VideoCardAllSize = [String]$VCs.Sum+" Gb" 1607 | NetworkAdapterCount = $NAs.Count 1608 | }) 1609 | $Collection 1610 | 1611 | if ($full) { 1612 | $CollectionMEM = New-Object System.Collections.Generic.List[System.Object] 1613 | $Memory | %{ 1614 | $CollectionMEM.Add([PSCustomObject]@{ 1615 | MemoryModel = [String]$_.ConfiguredClockSpeed+" Mhz "+$_.Manufacturer+" "+$_.PartNumber 1616 | Memory = [string]($_.Memory)+" Mb" 1617 | }) 1618 | } 1619 | 1620 | $CollectionPD = New-Object System.Collections.Generic.List[System.Object] 1621 | $PhysicalDisk | %{ 1622 | $CollectionPD.Add([PSCustomObject]@{ 1623 | PhysicalDiskModel = $_.Model 1624 | Size = [string]$_.Size+" Gb" 1625 | }) 1626 | } 1627 | 1628 | $CollectionLD = New-Object System.Collections.Generic.List[System.Object] 1629 | $LogicalDisk | %{ 1630 | $CollectionLD.Add([PSCustomObject]@{ 1631 | LogicalDisk = $_.Value 1632 | AllSize = [string]$_.AllSize+" Gb" 1633 | FreeSize = [string]$_.FreeSize+" Gb" 1634 | Free = $_."Free%" 1635 | }) 1636 | } 1637 | 1638 | $CollectionVC = New-Object System.Collections.Generic.List[System.Object] 1639 | $VideoCard | %{ 1640 | $CollectionVC.Add([PSCustomObject]@{ 1641 | VideoCard = $_.VideoCard 1642 | Display = $_.Display 1643 | vRAM = [string]$_.vRAM+" Gb" 1644 | }) 1645 | } 1646 | 1647 | $CollectionMEM 1648 | $CollectionPD 1649 | $CollectionLD 1650 | $CollectionVC 1651 | $NetworkAdapter 1652 | } 1653 | } 1654 | #endregion 1655 | 1656 | #region functions-cred-rdp 1657 | function srv-cred { 1658 | $user = $env:USERDNSDOMAIN + "\" + $env:username 1659 | $cred = Get-Credential $user 1660 | $global:username = $Cred.UserName 1661 | $global:password = $Cred.GetNetworkCredential().password 1662 | if ($password -ne $null) {$Status.Text = "$Text_Performed $username"} 1663 | if ($password -eq $null) {$Status.Text = "$Text_NotPerformed"} 1664 | } 1665 | #endregion 1666 | 1667 | #region Form-srv-List 1668 | $GroupBox_srv = New-Object System.Windows.Forms.GroupBox 1669 | $GroupBox_srv.Text = $Text_ServerList 1670 | $GroupBox_srv.AutoSize = $true 1671 | $GroupBox_srv.Location = New-Object System.Drawing.Point(10,55) 1672 | $GroupBox_srv.Size = New-Object System.Drawing.Size(300,735) 1673 | $main_form.Controls.Add($GroupBox_srv) 1674 | 1675 | $outputBox_Search_Srv = New-Object System.Windows.Forms.TextBox 1676 | $outputBox_Search_Srv.Location = New-Object System.Drawing.Point(10,25) 1677 | $outputBox_Search_Srv.Size = New-Object System.Drawing.Size(280,25) 1678 | $GroupBox_srv.Controls.Add($outputBox_Search_Srv) 1679 | 1680 | $outputBox_Search_Srv.Add_TextChanged({ 1681 | $search_text = $outputBox_Search_Srv.Text 1682 | $search_list = $srv_list -match $search_text 1683 | $srv_list_count = $search_list.Count 1684 | $ListBox.Items.Clear() 1685 | foreach ($tmp in $search_list) {$ListBox.Items.Add($tmp)} 1686 | $Status.Text = "$srv_list_count computers count" 1687 | }) 1688 | 1689 | $ListBox = New-Object System.Windows.Forms.ListBox 1690 | $ListBox.Location = New-Object System.Drawing.Point(10,50) 1691 | $ListBox.Size = New-Object System.Drawing.Size(280,630) 1692 | $GroupBox_srv.Controls.add($ListBox) 1693 | 1694 | $ContextMenu = New-Object System.Windows.Forms.ContextMenu 1695 | $ContextMenu.MenuItems.Add($Text_ListUpdate,{list-update}) 1696 | $ContextMenu.MenuItems.Add($Text_ListChange,{ii $conf}) 1697 | $ContextMenu.MenuItems.Add($Text_ServerListDomain,{list-domain}) 1698 | $ListBox.ContextMenu = $ContextMenu 1699 | 1700 | $button_1 = New-Object System.Windows.Forms.Button 1701 | $button_1.Text = " $Text_Query" 1702 | $button_1.Image = $ico_usr 1703 | $button_1.ImageAlign = "MiddleLeft" 1704 | $button_1.TextAlign = "MiddleLeft" 1705 | $button_1.Location = New-Object System.Drawing.Point(8,680) 1706 | $button_1.Size = New-Object System.Drawing.Size(135,40) 1707 | $GroupBox_srv.Controls.Add($button_1) 1708 | 1709 | $button_1.Add_Click({ 1710 | $button_1.Enabled = $false 1711 | $global:srv = $ListBox.selectedItem 1712 | fun-main 1713 | $button_1.Enabled = $true 1714 | }) 1715 | 1716 | $button_mstsc = New-Object System.Windows.Forms.Button 1717 | $button_mstsc.Text = " $Text_Connect" 1718 | $button_mstsc.Image = $ico_rdp 1719 | $button_mstsc.ImageAlign = "MiddleLeft" 1720 | $button_mstsc.Location = New-Object System.Drawing.Point(155,680) 1721 | $button_mstsc.Size = New-Object System.Drawing.Size(135,40) 1722 | $GroupBox_srv.Controls.Add($button_mstsc) 1723 | 1724 | $button_mstsc.Add_Click({ 1725 | $Status.Text = "Connection to server: $srv" 1726 | if ($password -ne $Null) { 1727 | cmdkey /generic:"TERMSRV/$srv" /user:"$username" /pass:"$password" 1728 | } 1729 | mstsc /admin /v:$srv 1730 | Start-Sleep -Seconds 1 1731 | cmdkey /delete:"TERMSRV/$srv" 1732 | }) 1733 | #endregion 1734 | 1735 | #region Form-User-List-DGV 1736 | $GroupBox_usr = New-Object System.Windows.Forms.GroupBox 1737 | $GroupBox_usr.Text = $Text_UserList 1738 | $GroupBox_usr.AutoSize = $true 1739 | $GroupBox_usr.Location = New-Object System.Drawing.Point(320,55) 1740 | $GroupBox_usr.Size = New-Object System.Drawing.Size(910,735) 1741 | $main_form.Controls.Add($GroupBox_usr) 1742 | 1743 | $dataGridView = New-Object System.Windows.Forms.DataGridView 1744 | $dataGridView.Location = New-Object System.Drawing.Point(10,25) 1745 | $dataGridView.Size = New-Object System.Drawing.Size(890,640) 1746 | $dataGridView.AutoSizeColumnsMode = "Fill" 1747 | $dataGridView.Font = "$Font,10" 1748 | $dataGridView.AutoSize = $false 1749 | $dataGridView.MultiSelect = $false 1750 | $dataGridView.ReadOnly = $true 1751 | $GroupBox_usr.Controls.Add($dataGridView) 1752 | 1753 | $button_2 = New-Object System.Windows.Forms.Button 1754 | $button_2.Text = $Text_Connect 1755 | $button_2.Location = New-Object System.Drawing.Point(8,680) 1756 | $button_2.Size = New-Object System.Drawing.Size(140,40) 1757 | $button_2.Image = [System.IconExtractor]::Extract("imageres.dll", 194, $true) 1758 | $button_2.ImageAlign = "MiddleLeft" 1759 | $GroupBox_usr.Controls.Add($button_2) 1760 | 1761 | $button_2.Add_Click({ 1762 | $RowIndex = @($dataGridView.SelectedCells.RowIndex) 1763 | $id = $dataGridView.Rows[$RowIndex].Cells[$Column_ID].FormattedValue 1764 | $Table_User = $dataGridView.Rows[$RowIndex].Cells[$Column_User].FormattedValue 1765 | 1766 | $wshell = New-Object -ComObject Wscript.Shell 1767 | $output = $wshell.Popup("Consent prompt connect to user $Table_User ?",0,"Select action",3) 1768 | if ($output -eq "6") {mstsc /shadow:$id /v:$srv /control} 1769 | if ($output -eq "7") {mstsc /shadow:$id /v:$srv /control /noconsentprompt} 1770 | }) 1771 | 1772 | $button_3 = New-Object System.Windows.Forms.Button 1773 | $button_3.Text = " $text_Disconnect" 1774 | $button_3.Location = New-Object System.Drawing.Point(160,680) 1775 | $button_3.Size = New-Object System.Drawing.Size(140,40) 1776 | $button_3.Image = [System.IconExtractor]::Extract("dsuiext.dll", 27, $true) 1777 | $button_3.ImageAlign = "MiddleLeft" 1778 | $GroupBox_usr.Controls.Add($button_3) 1779 | 1780 | $button_3.Add_Click({ 1781 | $RowIndex = @($dataGridView.SelectedCells.RowIndex) 1782 | $id = $dataGridView.Rows[$RowIndex].Cells[$Column_ID].FormattedValue 1783 | $Table_User = $dataGridView.Rows[$RowIndex].Cells[$Column_User].FormattedValue 1784 | 1785 | $wshell = New-Object -ComObject Wscript.Shell 1786 | $Output = $wshell.Popup("Disconnect user $Table_User ?",0,"Select action",4) 1787 | if ($output -eq "6") {logoff $id /server:$srv /v} 1788 | Get-Query $srv 1789 | Add-TableUser 1790 | }) 1791 | 1792 | $button_Proc = New-Object System.Windows.Forms.Button 1793 | $button_Proc.Text = " $Text_User $Text_Process" 1794 | $button_Proc.Location = New-Object System.Drawing.Point(310,680) 1795 | $button_Proc.Size = New-Object System.Drawing.Size(150,40) 1796 | $button_Proc.Image = $ico_proc 1797 | $button_Proc.ImageAlign = "MiddleLeft" 1798 | $button_Proc.TextAlign = "MiddleLeft" 1799 | $GroupBox_usr.Controls.Add($button_Proc) 1800 | 1801 | $button_Proc.Add_Click({ 1802 | $RowIndex = @($dataGridView.SelectedCells.RowIndex) 1803 | $id = $dataGridView.Rows[$RowIndex].Cells[$Column_ID].FormattedValue 1804 | $Global:Table_UserGlobal = $dataGridView.Rows[$RowIndex].Cells[$Column_User].FormattedValue 1805 | 1806 | Get-Query $srv -proc -user $Table_UserGlobal 1807 | Add-TableProc 1808 | Get-QueryStopProc 1809 | }) 1810 | #endregion 1811 | 1812 | #region Form-Message 1813 | $watermark_Message = "Enter the message to send to users" 1814 | $outputBox_Enter = { 1815 | if ($outputBox_message.Text -like $watermark_Message) { 1816 | $outputBox_message.Text = "" 1817 | $outputBox_message.ForeColor = [System.Drawing.SystemColors]::WindowText 1818 | }} 1819 | $outputBox_Leave = { 1820 | if ($outputBox_message.Text -like "") { 1821 | $outputBox_message.Text = $watermark_Message 1822 | $outputBox_message.ForeColor = [System.Drawing.Color]::LightGray 1823 | }} 1824 | 1825 | $outputBox_message = New-Object System.Windows.Forms.TextBox 1826 | $outputBox_message.Location = New-Object System.Drawing.Point(470,680) 1827 | $outputBox_message.Size = New-Object System.Drawing.Size(290,40) 1828 | $outputBox_message.MultiLine = $True 1829 | $outputBox_message.Font = "$Font,11" 1830 | $outputBox_message.ForeColor = [System.Drawing.Color]::LightGray 1831 | $outputBox_message.add_Enter($outputBox_Enter) 1832 | $outputBox_message.add_Leave($outputBox_Leave) 1833 | $outputBox_message.Text = $watermark_Message 1834 | $GroupBox_usr.Controls.Add($outputBox_message) 1835 | 1836 | $VScrollBar = New-Object System.Windows.Forms.VScrollBar 1837 | $outputBox_message.Scrollbars = "Vertical" 1838 | 1839 | $button_6 = New-Object System.Windows.Forms.Button 1840 | $button_6.Text = " $Text_Send" 1841 | $button_6.TextAlign = "MiddleLeft" 1842 | $button_6.Location = New-Object System.Drawing.Point(770,680) 1843 | $button_6.Size = New-Object System.Drawing.Size(130,40) 1844 | $button_6.Image = [System.IconExtractor]::Extract("accessibilitycpl.dll", 1, $true) 1845 | $button_6.ImageAlign = "MiddleLeft" 1846 | $GroupBox_usr.Controls.Add($button_6) 1847 | 1848 | $button_6.Add_Click({ 1849 | $RowIndex = @($dataGridView.SelectedCells.RowIndex) 1850 | $id = $dataGridView.Rows[$RowIndex].Cells[$Column_ID].FormattedValue 1851 | $Table_User = $dataGridView.Rows[$RowIndex].Cells[$Column_User].FormattedValue 1852 | 1853 | $text = $outputBox_message.Text 1854 | $wshell = New-Object -ComObject Wscript.Shell 1855 | $output = $wshell.Popup("To send a message to all users, click yes 1856 | To send a message to user $Table_User, click no",0,"$srv",3) 1857 | if ($output -eq "6") {msg * /server:$srv $text} 1858 | if ($output -eq "7") {msg $id /server:$srv $text} 1859 | if ($lastexitcode -eq 0) {$Status.Text = "Message sent"} else {$Status.Text = "Message not sent"} 1860 | }) 1861 | #endregion 1862 | 1863 | #region menu-File 1864 | $Menu = New-Object System.Windows.Forms.MenuStrip 1865 | $Menu.BackColor = "white" 1866 | $main_form.MainMenuStrip = $Menu 1867 | $main_form.Controls.Add($Menu) 1868 | 1869 | $menuItem_file = New-Object System.Windows.Forms.ToolStripMenuItem 1870 | $menuItem_file.Text = $Text_File 1871 | $Menu.Items.Add($menuItem_file) 1872 | 1873 | $menuItem_file_cred = New-Object System.Windows.Forms.ToolStripMenuItem 1874 | $menuItem_file_cred.Text = $Text_Authentication 1875 | $menuItem_file_cred.Image = [System.IconExtractor]::Extract("shell32.dll", 44, $true) 1876 | $menuItem_file_cred.ShortcutKeys = "Control, U" 1877 | $menuItem_file_cred.Add_Click({srv-cred}) 1878 | $menuItem_file.DropDownItems.Add($menuItem_file_cred) 1879 | 1880 | $menuItem_file_pad = New-Object System.Windows.Forms.ToolStripMenuItem 1881 | $menuItem_file_pad.Text = $Text_ListChange 1882 | $menuItem_file_pad.Image = $ico_pad 1883 | $menuItem_file_pad.ShortcutKeys = "Control, S" 1884 | $menuItem_file_pad.Add_Click({ii $conf}) 1885 | $menuItem_file.DropDownItems.Add($menuItem_file_pad) 1886 | 1887 | $menuItem_file_update = New-Object System.Windows.Forms.ToolStripMenuItem 1888 | $menuItem_file_update.Text = $Text_ListUpdate 1889 | $menuItem_file_update.ShortcutKeys = "Control, R" 1890 | $menuItem_file_update.Add_Click({list-update}) 1891 | $menuItem_file.DropDownItems.Add($menuItem_file_update) 1892 | 1893 | $menuItem_file_domain = New-Object System.Windows.Forms.ToolStripMenuItem 1894 | $menuItem_file_domain.Text = $Text_ServerListDomain 1895 | $menuItem_file_domain.ShortcutKeys = "Control, D" 1896 | $menuItem_file_domain.Add_Click({list-domain}) 1897 | $menuItem_file.DropDownItems.Add($menuItem_file_domain) 1898 | 1899 | $menuItem_file_domain_table = New-Object System.Windows.Forms.ToolStripMenuItem 1900 | $menuItem_file_domain_table.Text = $Text_ServerTableDomain 1901 | $menuItem_file_domain_table.ShortcutKeys = "Control, T" 1902 | $menuItem_file_domain_table.Add_Click({table-domain}) 1903 | $menuItem_file.DropDownItems.Add($menuItem_file_domain_table) 1904 | 1905 | $menuItem_file_exit = New-Object System.Windows.Forms.ToolStripMenuItem 1906 | $menuItem_file_exit.Text = $Text_Exit 1907 | $menuItem_file_exit.ShortcutKeys = "Control, W" 1908 | $menuItem_file_exit.Add_Click({$main_form.Close()}) 1909 | $menuItem_file.DropDownItems.Add($menuItem_file_exit) 1910 | #endregion 1911 | 1912 | #region menu-Admin 1913 | $menuItem_admin = New-Object System.Windows.Forms.ToolStripMenuItem 1914 | $menuItem_admin.Text = $Text_Admin 1915 | $Menu.Items.Add($menuItem_admin) 1916 | 1917 | $menuItem_admin_comp = New-Object System.Windows.Forms.ToolStripMenuItem 1918 | $menuItem_admin_comp.Text = $Text_CompManager 1919 | $menuItem_admin_comp.Image = [System.IconExtractor]::Extract("imageres.dll", 186, $true) 1920 | $menuItem_admin_comp.Add_Click({comp-manager}) 1921 | $menuItem_admin.DropDownItems.Add($menuItem_admin_comp) 1922 | 1923 | $menuItem_admin_services = New-Object System.Windows.Forms.ToolStripMenuItem 1924 | $menuItem_admin_services.Text = $Text_Services 1925 | $menuItem_admin_services.Image = [System.IconExtractor]::Extract("imageres.dll", 109, $true) 1926 | $menuItem_admin_services.Add_Click({services-view-ogv}) 1927 | $menuItem_admin.DropDownItems.Add($menuItem_admin_services) 1928 | 1929 | $menuItem_admin_QueryProc = New-Object System.Windows.Forms.ToolStripMenuItem 1930 | $menuItem_admin_QueryProc.Text = "$Text_All $Text_Remote $Text_User $Text_Process (Get-Query)" 1931 | $menuItem_admin_QueryProc.Image = $ico_proc 1932 | $menuItem_admin_QueryProc.Add_Click({ 1933 | Get-Query $srv -proc | Out-GridView -Title "$Text_All $Text_Remote $Text_User $Text_Process $Text_ToServer $srv" 1934 | }) 1935 | $menuItem_admin.DropDownItems.Add($menuItem_admin_QueryProc) 1936 | 1937 | $menuItem_admin_process = New-Object System.Windows.Forms.ToolStripMenuItem 1938 | $menuItem_admin_process.Text = "$Text_All $Text_Remote $Text_User $Text_Process (Get-UserProcess)" 1939 | $menuItem_admin_process.Image = [System.IconExtractor]::Extract("imageres.dll", 144, $true) 1940 | $menuItem_admin_process.Add_Click({Get-UserProcess -ogv}) 1941 | $menuItem_admin.DropDownItems.Add($menuItem_admin_process) 1942 | 1943 | $menuItem_admin_software_remove = New-Object System.Windows.Forms.ToolStripMenuItem 1944 | $menuItem_admin_software_remove.Text = "$Text_Software (Get-Package)" 1945 | $menuItem_admin_software_remove.Image = [System.IconExtractor]::Extract("shell32.dll", 21, $true) 1946 | $menuItem_admin_software_remove.Add_Click({ 1947 | Get-Soft -package 1948 | }) 1949 | $menuItem_admin.DropDownItems.Add($menuItem_admin_software_remove) 1950 | 1951 | $menuItem_admin_dism = New-Object System.Windows.Forms.ToolStripMenuItem 1952 | $menuItem_admin_dism.Text = "DISM $Text_Packages" 1953 | $menuItem_admin_dism.Image = [System.IconExtractor]::Extract("shell32.dll", 162, $true) 1954 | $menuItem_admin_dism.Add_Click({Get-DISM}) 1955 | $menuItem_admin.DropDownItems.Add($menuItem_admin_dism) 1956 | 1957 | $menuItem_admin_SMB = New-Object System.Windows.Forms.ToolStripMenuItem 1958 | $menuItem_admin_SMB.Text = "SMB $Text_OpenFiles" 1959 | $menuItem_admin_SMB.Image = [System.IconExtractor]::Extract("imageres.dll", 169, $true) 1960 | $menuItem_admin_SMB.Add_Click({SMB-files-ogv}) 1961 | $menuItem_admin.DropDownItems.Add($menuItem_admin_SMB) 1962 | 1963 | $menuItem_admin_TCP = New-Object System.Windows.Forms.ToolStripMenuItem 1964 | $menuItem_admin_TCP.Text = "Get-Netstat" 1965 | $menuItem_admin_TCP.Image = [System.IconExtractor]::Extract("imageres.dll", 20, $true) 1966 | $menuItem_admin_TCP.Add_Click({Get-Netstat}) 1967 | $menuItem_admin.DropDownItems.Add($menuItem_admin_TCP) 1968 | 1969 | $menuItem_admin_dnsz = New-Object System.Windows.Forms.ToolStripMenuItem 1970 | $menuItem_admin_dnsz.Text = "Get-RemoteDNS" 1971 | $menuItem_admin_dnsz.Add_Click({Get-RemoteDNS}) 1972 | $menuItem_admin.DropDownItems.Add($menuItem_admin_dnsz) 1973 | 1974 | $menuItem_admin_gpu = New-Object System.Windows.Forms.ToolStripMenuItem 1975 | $menuItem_admin_gpu.Text = "GPUpdate" 1976 | $menuItem_admin_gpu.Add_Click({gp-upd}) 1977 | $menuItem_admin.DropDownItems.Add($menuItem_admin_gpu) 1978 | 1979 | $menuItem_admin_gpr = New-Object System.Windows.Forms.ToolStripMenuItem 1980 | $menuItem_admin_gpr.Text = "GPResult" 1981 | $menuItem_admin_gpr.Add_Click({gp-res}) 1982 | $menuItem_admin.DropDownItems.Add($menuItem_admin_gpr) 1983 | #endregion 1984 | 1985 | #region menu-Power 1986 | $menuItem_power = New-Object System.Windows.Forms.ToolStripMenuItem 1987 | $menuItem_power.Text = $Text_Power 1988 | $Menu.Items.Add($menuItem_power) 1989 | 1990 | $menuItem_power_reboot = New-Object System.Windows.Forms.ToolStripMenuItem 1991 | $menuItem_power_reboot.Text = $Text_Reboot 1992 | $menuItem_power_reboot.Image = [System.IconExtractor]::Extract("shell32.dll", 238, $true) 1993 | $menuItem_power_reboot.Add_Click({power-reboot}) 1994 | $menuItem_power.DropDownItems.Add($menuItem_power_reboot) 1995 | 1996 | $menuItem_power_off = New-Object System.Windows.Forms.ToolStripMenuItem 1997 | $menuItem_power_off.Text = $Text_PowerOff 1998 | $menuItem_power_off.Image = [System.IconExtractor]::Extract("shell32.dll", 27, $true) 1999 | $menuItem_power_off.Add_Click({power-off}) 2000 | $menuItem_power.DropDownItems.Add($menuItem_power_off) 2001 | 2002 | $menuItem_power_cancel = New-Object System.Windows.Forms.ToolStripMenuItem 2003 | $menuItem_power_cancel.Text = $Text_Cacel 2004 | $menuItem_power_cancel.Image = [System.IconExtractor]::Extract("imageres.dll", 255, $true) 2005 | $menuItem_power_cancel.Add_Click({power-cancel}) 2006 | $menuItem_power.DropDownItems.Add($menuItem_power_cancel) 2007 | 2008 | $menuItem_power_monitor = New-Object System.Windows.Forms.ToolStripMenuItem 2009 | $menuItem_power_monitor.Text = $Text_CreenLock 2010 | $menuItem_power_monitor.Add_Click({power-monitor}) 2011 | $menuItem_power.DropDownItems.Add($menuItem_power_monitor) 2012 | 2013 | $menuItem_power_standby = New-Object System.Windows.Forms.ToolStripMenuItem 2014 | $menuItem_power_standby.Text = $Text_SleepMode 2015 | $menuItem_power_standby.Add_Click({power-standby}) 2016 | $menuItem_power.DropDownItems.Add($menuItem_power_standby) 2017 | 2018 | $menuItem_power_mac = New-Object System.Windows.Forms.ToolStripMenuItem 2019 | $menuItem_power_mac.Text = "Get-ARP" 2020 | $menuItem_power_mac.Add_Click({ 2021 | $mac_out = Get-ARP | Out-GridView -Title "ARP Table to server $srv" -PassThru 2022 | if ($mac_out -ne $null) { 2023 | $outputBox_message.ForeColor = [System.Drawing.SystemColors]::WindowText 2024 | $outputBox_message.text = $mac_out.MAC 2025 | } 2026 | }) 2027 | $menuItem_power.DropDownItems.Add($menuItem_power_mac) 2028 | 2029 | $menuItem_power_dhcp = New-Object System.Windows.Forms.ToolStripMenuItem 2030 | $menuItem_power_dhcp.Text = "Get-DHCP" 2031 | $menuItem_power_dhcp.Add_Click({Get-DHCP}) 2032 | $menuItem_power.DropDownItems.Add($menuItem_power_dhcp) 2033 | 2034 | $menuItem_power_wol = New-Object System.Windows.Forms.ToolStripMenuItem 2035 | $menuItem_power_wol.Text = "Wake-on-Lan" 2036 | $menuItem_power_wol.Add_Click({power-wol}) 2037 | $menuItem_power.DropDownItems.Add($menuItem_power_wol) 2038 | #endregion 2039 | 2040 | #region menu-Event 2041 | $menuItem_event = New-Object System.Windows.Forms.ToolStripMenuItem 2042 | $menuItem_event.Text = $Text_Event 2043 | $Menu.Items.Add($menuItem_event) 2044 | 2045 | #$menuItem_event_sys = New-Object System.Windows.Forms.ToolStripMenuItem 2046 | #$menuItem_event_sys.Text = "System" 2047 | #$menuItem_event_sys.Add_Click({event-sys}) 2048 | #$menuItem_event.DropDownItems.Add($menuItem_event_sys) 2049 | # 2050 | #$menuItem_event_app = New-Object System.Windows.Forms.ToolStripMenuItem 2051 | #$menuItem_event_app.Text = "Application" 2052 | #$menuItem_event_app.Add_Click({event-app}) 2053 | #$menuItem_event.DropDownItems.Add($menuItem_event_app) 2054 | 2055 | $menuItem_event_power = New-Object System.Windows.Forms.ToolStripMenuItem 2056 | $menuItem_event_power.Text = $Text_Power 2057 | $menuItem_event_power.Add_Click({event-power}) 2058 | $menuItem_event.DropDownItems.Add($menuItem_event_power) 2059 | 2060 | $menuItem_event_ts_connect = New-Object System.Windows.Forms.ToolStripMenuItem 2061 | $menuItem_event_ts_connect.Text = "Remote Connection" 2062 | $menuItem_event_ts_connect.Add_Click({Get-EventTS -connect}) 2063 | $menuItem_event.DropDownItems.Add($menuItem_event_ts_connect) 2064 | 2065 | $menuItem_event_ts_logon = New-Object System.Windows.Forms.ToolStripMenuItem 2066 | $menuItem_event_ts_logon.Text = "Session Logon" 2067 | $menuItem_event_ts_logon.Add_Click({Get-EventTS -logon}) 2068 | $menuItem_event.DropDownItems.Add($menuItem_event_ts_logon) 2069 | 2070 | $menuItem_event_ts_logoff = New-Object System.Windows.Forms.ToolStripMenuItem 2071 | $menuItem_event_ts_logoff.Text = "Session Logoff" 2072 | $menuItem_event_ts_logoff.Add_Click({Get-EventTS -logoff}) 2073 | $menuItem_event.DropDownItems.Add($menuItem_event_ts_logoff) 2074 | 2075 | $menuItem_event_ts_disconnect = New-Object System.Windows.Forms.ToolStripMenuItem 2076 | $menuItem_event_ts_disconnect.Text = "Session Disconnection" 2077 | $menuItem_event_ts_disconnect.Add_Click({Get-EventTS -disconnect}) 2078 | $menuItem_event.DropDownItems.Add($menuItem_event_ts_disconnect) 2079 | 2080 | $menuItem_event_ts_reconnection = New-Object System.Windows.Forms.ToolStripMenuItem 2081 | $menuItem_event_ts_reconnection.Text = "Session Reconnection" 2082 | $menuItem_event_ts_reconnection.Add_Click({Get-EventTS -reconnect}) 2083 | $menuItem_event.DropDownItems.Add($menuItem_event_ts_reconnection) 2084 | #endregion 2085 | 2086 | #region menu-Broker 2087 | $menuItem_Broker = New-Object System.Windows.Forms.ToolStripMenuItem 2088 | $menuItem_Broker.Text = "Broker" 2089 | $Menu.Items.Add($menuItem_Broker) 2090 | 2091 | $menuItem_Broker_RDP = New-Object System.Windows.Forms.ToolStripMenuItem 2092 | $menuItem_Broker_RDP.Text = "Connection to User" 2093 | $menuItem_Broker_RDP.Add_Click({Get-Broker -r}) 2094 | $menuItem_Broker.DropDownItems.Add($menuItem_Broker_RDP) 2095 | 2096 | $menuItem_Broker_Disc = New-Object System.Windows.Forms.ToolStripMenuItem 2097 | $menuItem_Broker_Disc.Text = "Disconnect User" 2098 | $menuItem_Broker_Disc.Add_Click({Get-Broker -d}) 2099 | $menuItem_Broker.DropDownItems.Add($menuItem_Broker_Disc) 2100 | 2101 | $menuItem_Broker_Soft = New-Object System.Windows.Forms.ToolStripMenuItem 2102 | $menuItem_Broker_Soft.Text = "Collection List and Software" 2103 | $menuItem_Broker_Soft.Add_Click({Get-Broker -c}) 2104 | $menuItem_Broker.DropDownItems.Add($menuItem_Broker_Soft) 2105 | 2106 | $menuItem_Broker_Roles = New-Object System.Windows.Forms.ToolStripMenuItem 2107 | $menuItem_Broker_Roles.Text = "Hosts List and Roles" 2108 | $menuItem_Broker_Roles.Add_Click({Get-Broker -h}) 2109 | $menuItem_Broker.DropDownItems.Add($menuItem_Broker_Roles) 2110 | #endregion 2111 | 2112 | #region menu-Time 2113 | $menuItem_Time = New-Object System.Windows.Forms.ToolStripMenuItem 2114 | $menuItem_Time.Text = $Text_Time 2115 | $Menu.Items.Add($menuItem_Time) 2116 | 2117 | $menuItem_Time_Time = New-Object System.Windows.Forms.ToolStripMenuItem 2118 | $menuItem_Time_Time.Text = $Text_Time 2119 | $menuItem_Time_Time.Image = [System.IconExtractor]::Extract("shell32.dll", 239, $true) 2120 | $menuItem_Time_Time.Add_Click({net-time}) 2121 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Time) 2122 | 2123 | $menuItem_Time_Check_Time = New-Object System.Windows.Forms.ToolStripMenuItem 2124 | $menuItem_Time_Check_Time.Text = $Text_Time_Source 2125 | $menuItem_Time_Check_Time.Image = $ico_time 2126 | $menuItem_Time_Check_Time.Add_Click({check-time}) 2127 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Check_Time) 2128 | 2129 | $menuItem_Time_Test_Time = New-Object System.Windows.Forms.ToolStripMenuItem 2130 | $menuItem_Time_Test_Time.Text = $Text_Check_Source 2131 | $menuItem_Time_Test_Time.Add_Click({time-test}) 2132 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Test_Time) 2133 | 2134 | $menuItem_Time_Sync_Domain = New-Object System.Windows.Forms.ToolStripMenuItem 2135 | $menuItem_Time_Sync_Domain.Text = $Text_Change_Domain 2136 | $menuItem_Time_Sync_Domain.Add_Click({sync-PDC}) 2137 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Sync_Domain) 2138 | 2139 | $menuItem_Time_Sync_External = New-Object System.Windows.Forms.ToolStripMenuItem 2140 | $menuItem_Time_Sync_External.Text = $Text_Change_External 2141 | $menuItem_Time_Sync_External.Add_Click({sync-external}) 2142 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Sync_External) 2143 | 2144 | $menuItem_Time_Sync_Time = New-Object System.Windows.Forms.ToolStripMenuItem 2145 | $menuItem_Time_Sync_Time.Text = $Text_Synchronize_Time 2146 | $menuItem_Time_Sync_Time.Add_Click({sync-time}) 2147 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Sync_Time) 2148 | #endregion 2149 | 2150 | #region menu-KMS 2151 | $menuItem_kms = New-Object System.Windows.Forms.ToolStripMenuItem 2152 | $menuItem_kms.Text = "KMS" 2153 | $Menu.Items.Add($menuItem_kms) 2154 | 2155 | $menuItem_kms_status = New-Object System.Windows.Forms.ToolStripMenuItem 2156 | $menuItem_kms_status.Text = $Text_License 2157 | $menuItem_kms_status.Image = [System.IconExtractor]::Extract("accessibilitycpl.dll", 14, $true) 2158 | $menuItem_kms_status.Add_Click({kms-status}) 2159 | $menuItem_kms.DropDownItems.Add($menuItem_kms_status) 2160 | 2161 | $menuItem_kms_domain = New-Object System.Windows.Forms.ToolStripMenuItem 2162 | $menuItem_kms_domain.Text = $Text_DomainServers 2163 | $menuItem_kms_domain.Add_Click({kms-domain}) 2164 | $menuItem_kms.DropDownItems.Add($menuItem_kms_domain) 2165 | 2166 | $menuItem_kms_gvlk = New-Object System.Windows.Forms.ToolStripMenuItem 2167 | $menuItem_kms_gvlk.Text = "GVLK $Text_Activator" 2168 | $menuItem_kms_gvlk.Add_Click({gvlk-managment}) 2169 | $menuItem_kms.DropDownItems.Add($menuItem_kms_gvlk) 2170 | 2171 | $menuItem_kms_srv = New-Object System.Windows.Forms.ToolStripMenuItem 2172 | $menuItem_kms_srv.Text = "$Text_SelectServer KMS" 2173 | $menuItem_kms_srv.Add_Click({kms-server}) 2174 | $menuItem_kms.DropDownItems.Add($menuItem_kms_srv) 2175 | 2176 | $menuItem_kms_lic = New-Object System.Windows.Forms.ToolStripMenuItem 2177 | $menuItem_kms_lic.Text = $Text_GetLicense 2178 | $menuItem_kms_lic.Add_Click({kms-lic}) 2179 | $menuItem_kms.DropDownItems.Add($menuItem_kms_lic) 2180 | #endregion 2181 | 2182 | #region menu-WMI 2183 | $menuItem_wmi = New-Object System.Windows.Forms.ToolStripMenuItem 2184 | $menuItem_wmi.Text = "WMI" 2185 | $Menu.Items.Add($menuItem_wmi) 2186 | 2187 | $menuItem_wmi_disk = New-Object System.Windows.Forms.ToolStripMenuItem 2188 | $menuItem_wmi_disk.Text = $Text_LD 2189 | $menuItem_wmi_disk.Image = [System.IconExtractor]::Extract("imageres.dll", 293, $true) 2190 | $menuItem_wmi_disk.Add_Click({Get-SizeDisk}) 2191 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_disk) 2192 | 2193 | $menuItem_wmi_memory = New-Object System.Windows.Forms.ToolStripMenuItem 2194 | $menuItem_wmi_memory.Text = $Text_Memory 2195 | $menuItem_wmi_memory.Image = [System.IconExtractor]::Extract("imageres.dll", 315, $true) 2196 | $menuItem_wmi_memory.Add_Click({Get-SizeMem}) 2197 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_memory) 2198 | 2199 | $menuItem_wmi_software = New-Object System.Windows.Forms.ToolStripMenuItem 2200 | $menuItem_wmi_software.Text = $Text_Software 2201 | $menuItem_wmi_software.Image = $ico_soft 2202 | $menuItem_wmi_software.Add_Click({ 2203 | Get-Soft -wmi 2204 | }) 2205 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_software) 2206 | 2207 | $menuItem_wmi_update = New-Object System.Windows.Forms.ToolStripMenuItem 2208 | $menuItem_wmi_update.Text = "Windows $Text_Update" 2209 | $menuItem_wmi_update.Image = [System.IconExtractor]::Extract("shell32.dll", 46, $true) 2210 | $menuItem_wmi_update.Add_Click({wmi-upd}) 2211 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_update) 2212 | 2213 | $menuItem_wmi_drivers = New-Object System.Windows.Forms.ToolStripMenuItem 2214 | $menuItem_wmi_drivers.Text = $Text_Drivers 2215 | $menuItem_wmi_drivers.Image = [System.IconExtractor]::Extract("imageres.dll", 142, $true) 2216 | $menuItem_wmi_drivers.Add_Click({wmi-drivers}) 2217 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_drivers) 2218 | 2219 | $menuItem_wmi_share = New-Object System.Windows.Forms.ToolStripMenuItem 2220 | $menuItem_wmi_share.Text = "$Text_File Share" 2221 | $menuItem_wmi_share.Image = [System.IconExtractor]::Extract("imageres.dll", 205, $true) 2222 | $menuItem_wmi_share.Add_Click({wmi-share}) 2223 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_share) 2224 | 2225 | $menuItem_wmi_rdp = New-Object System.Windows.Forms.ToolStripMenuItem 2226 | $menuItem_wmi_rdp.Text = "$Text_Power RDP" 2227 | $menuItem_wmi_rdp.Image = $ico_rdp 2228 | $menuItem_wmi_rdp.Add_Click({wmi-rdp}) 2229 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_rdp) 2230 | 2231 | $menuItem_wmi_nla = New-Object System.Windows.Forms.ToolStripMenuItem 2232 | $menuItem_wmi_nla.Text = "$Text_Power NLA" 2233 | $menuItem_wmi_nla.Image = [System.IconExtractor]::Extract("shell32.dll", 174, $true) 2234 | $menuItem_wmi_nla.Add_Click({wmi-nla}) 2235 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_nla) 2236 | 2237 | $menuItem_wmi_install = New-Object System.Windows.Forms.ToolStripMenuItem 2238 | $menuItem_wmi_install.Text = "$Text_Setup (Beta)" 2239 | $menuItem_wmi_install.Image = $ico_upd 2240 | $menuItem_wmi_install.Add_Click({wmi-install}) 2241 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_install) 2242 | #endregion 2243 | 2244 | #region menu-Inventory 2245 | $menuItem_Invent = New-Object System.Windows.Forms.ToolStripMenuItem 2246 | $menuItem_Invent.Text = "Inventory" 2247 | $Menu.Items.Add($menuItem_Invent) 2248 | 2249 | $menuItem_Invent_HTML = New-Object System.Windows.Forms.ToolStripMenuItem 2250 | $menuItem_Invent_HTML.Text = "Get-Invent-Out-HTML" 2251 | $menuItem_Invent_HTML.Image = [System.IconExtractor]::Extract("setupapi.dll", 27, $true) 2252 | $menuItem_Invent_HTML.Add_Click({ 2253 | $GetInventPath = "$home\Desktop\Get-Invent-$srv.html" 2254 | Get-Invent $srv -full | ConvertTo-Html -as List > $GetInventPath 2255 | ii $GetInventPath 2256 | $Status.Text = "Saved to $GetInventPath" 2257 | }) 2258 | $menuItem_Invent.DropDownItems.Add($menuItem_Invent_HTML) 2259 | #endregion 2260 | 2261 | #region menu-LOW 2262 | $mainToolStrip = New-Object System.Windows.Forms.ToolStrip 2263 | $mainToolStrip.Location = New-Object System.Drawing.Point(0,25) 2264 | $mainToolStrip.ImageScalingSize = New-Object System.Drawing.Size(22,40) 2265 | $mainToolStrip.Size = New-Object System.Drawing.Size(1250,28) 2266 | $mainToolStrip.AutoSize = $false 2267 | $mainToolStrip.Anchor = "Top" 2268 | $main_form.Controls.Add($mainToolStrip) 2269 | 2270 | $toolStripCred = New-Object System.Windows.Forms.ToolStripButton 2271 | $toolStripCred.ToolTipText = $Text_Authentication 2272 | $toolStripCred.Image = [System.IconExtractor]::Extract("shell32.dll", 44, $true) 2273 | $toolStripCred.Add_Click({srv-cred}) 2274 | $mainToolStrip.Items.Add($toolStripCred) 2275 | 2276 | $toolStripComp = New-Object System.Windows.Forms.ToolStripButton 2277 | $toolStripComp.ToolTipText = $Text_CompManager 2278 | $toolStripComp.Image = [System.IconExtractor]::Extract("imageres.dll", 186, $true) 2279 | $toolStripComp.Add_Click({comp-manager}) 2280 | $mainToolStrip.Items.Add($toolStripComp) 2281 | 2282 | $toolStripLog = New-Object System.Windows.Forms.ToolStripButton 2283 | $toolStripLog.ToolTipText = $Text_Event 2284 | $toolStripLog.Image = $ico_event 2285 | $toolStripLog.Add_Click({eventvwr $srv}) 2286 | $mainToolStrip.Items.Add($toolStripLog) 2287 | 2288 | $toolStripDisk = New-Object System.Windows.Forms.ToolStripButton 2289 | $toolStripDisk.ToolTipText = $Text_LD 2290 | $toolStripDisk.Image = [System.IconExtractor]::Extract("imageres.dll", 293, $true) 2291 | $toolStripDisk.Add_Click({Get-SizeDisk}) 2292 | $mainToolStrip.Items.Add($toolStripDisk) 2293 | 2294 | $toolStripMem = New-Object System.Windows.Forms.ToolStripButton 2295 | $toolStripMem.ToolTipText = $Text_Memory 2296 | $toolStripMem.Image = [System.IconExtractor]::Extract("imageres.dll", 315, $true) 2297 | $toolStripMem.Add_Click({Get-SizeMem}) 2298 | $mainToolStrip.Items.Add($toolStripMem) 2299 | 2300 | $toolStripServices = New-Object System.Windows.Forms.ToolStripButton 2301 | $toolStripServices.ToolTipText = $Text_Services 2302 | $toolStripServices.Image = [System.IconExtractor]::Extract("imageres.dll", 109, $true) 2303 | $toolStripServices.Add_Click({ 2304 | $global:Service = Get-Service -computername $srv | Sort Name 2305 | $global:Service_search = $Service 2306 | services-view 2307 | services-search 2308 | }) 2309 | $mainToolStrip.Items.Add($toolStripServices) 2310 | 2311 | $toolStripProcess = New-Object System.Windows.Forms.ToolStripButton 2312 | $toolStripProcess.ToolTipText = "$Text_ALL $Text_User $Text_Process (Get-Process)" 2313 | $toolStripProcess.Image = [System.IconExtractor]::Extract("imageres.dll", 144, $true) 2314 | $toolStripProcess.Add_Click({ 2315 | proc-click 2316 | }) 2317 | $mainToolStrip.Items.Add($toolStripProcess) 2318 | 2319 | $toolStripShare = New-Object System.Windows.Forms.ToolStripButton 2320 | $toolStripShare.ToolTipText = "$Text_File Share" 2321 | $toolStripShare.Image = [System.IconExtractor]::Extract("imageres.dll", 205, $true) 2322 | $toolStripShare.Add_Click({wmi-share}) 2323 | $mainToolStrip.Items.Add($toolStripShare) 2324 | 2325 | $toolStripSMB = New-Object System.Windows.Forms.ToolStripButton 2326 | $toolStripSMB.ToolTipText = "SMB $Text_OpenFiles" 2327 | $toolStripSMB.Image = [System.IconExtractor]::Extract("imageres.dll", 169, $true) 2328 | $toolStripSMB.Add_Click({SMB-files}) 2329 | $mainToolStrip.Items.Add($toolStripSMB) 2330 | 2331 | $toolStripUpdate = New-Object System.Windows.Forms.ToolStripButton 2332 | $toolStripUpdate.ToolTipText = "Windows $Text_Update" 2333 | $toolStripUpdate.Image = [System.IconExtractor]::Extract("shell32.dll", 46, $true) 2334 | $toolStripUpdate.Add_Click({wmi-upd}) 2335 | $mainToolStrip.Items.Add($toolStripUpdate) 2336 | 2337 | $toolStripDISM = New-Object System.Windows.Forms.ToolStripButton 2338 | $toolStripDISM.ToolTipText = "DISM $Text_Packages" 2339 | $toolStripDISM.Image = [System.IconExtractor]::Extract("shell32.dll", 162, $true) 2340 | $toolStripDISM.Add_Click({Get-DISM}) 2341 | $mainToolStrip.Items.Add($toolStripDISM) 2342 | 2343 | $toolStripSoftPackage = New-Object System.Windows.Forms.ToolStripButton 2344 | $toolStripSoftPackage.ToolTipText = "$Text_Software (Get-Package)" 2345 | $toolStripSoftPackage.Image = [System.IconExtractor]::Extract("shell32.dll", 21, $true) 2346 | $toolStripSoftPackage.Add_Click({ 2347 | Get-Soft -package 2348 | }) 2349 | $mainToolStrip.Items.Add($toolStripSoftPackage) 2350 | 2351 | $toolStripSoftWMI = New-Object System.Windows.Forms.ToolStripButton 2352 | $toolStripSoftWMI.ToolTipText = "$Text_Software (WMI)" 2353 | $toolStripSoftWMI.Image = $ico_soft 2354 | $toolStripSoftWMI.Add_Click({ 2355 | Get-Soft -wmi 2356 | }) 2357 | $mainToolStrip.Items.Add($toolStripSoftWMI) 2358 | 2359 | #$toolStripDrivers = New-Object System.Windows.Forms.ToolStripButton 2360 | #$toolStripDrivers.ToolTipText = $Text_Drivers 2361 | #$toolStripDrivers.Image = [System.IconExtractor]::Extract("imageres.dll", 142, $true) 2362 | #$toolStripDrivers.Add_Click({wmi-drivers-dgv}) 2363 | #$mainToolStrip.Items.Add($toolStripDrivers) 2364 | 2365 | $toolStripTCP = New-Object System.Windows.Forms.ToolStripButton 2366 | $toolStripTCP.ToolTipText = "TCP Viewer" 2367 | $toolStripTCP.Image = [System.IconExtractor]::Extract("imageres.dll", 20, $true) 2368 | $toolStripTCP.Add_Click({Get-Netstat}) 2369 | $mainToolStrip.Items.Add($toolStripTCP) 2370 | 2371 | $toolStripTime = New-Object System.Windows.Forms.ToolStripButton 2372 | $toolStripTime.ToolTipText = $Text_Time 2373 | $toolStripTime.Image = [System.IconExtractor]::Extract("shell32.dll", 239, $true) 2374 | $toolStripTime.Add_Click({net-time}) 2375 | $mainToolStrip.Items.Add($toolStripTime) 2376 | 2377 | $toolStripWDS = New-Object System.Windows.Forms.ToolStripButton 2378 | $toolStripWDS.ToolTipText = $Text_License 2379 | $toolStripWDS.Image = [System.IconExtractor]::Extract("accessibilitycpl.dll", 14, $true) 2380 | $toolStripWDS.Add_Click({kms-status}) 2381 | $mainToolStrip.Items.Add($toolStripWDS) 2382 | 2383 | $SearchTextBox = New-Object System.Windows.Forms.ToolStripTextBox 2384 | $SearchTextBox.Size = New-Object System.Drawing.Size(150) 2385 | $SearchTextBox.Font = "$Font,11" 2386 | $mainToolStrip.Items.Add($SearchTextBox) 2387 | #endregion 2388 | 2389 | #region watermark-find 2390 | #$watermark = "Find" 2391 | # 2392 | #$TextBox_Enter = { 2393 | #if ($SearchTextBox.Text -like $watermark) { 2394 | #$SearchTextBox.Text = "" 2395 | #$SearchTextBox.ForeColor = [System.Drawing.SystemColors]::WindowText 2396 | #}} 2397 | # 2398 | #$TextBox_Leave = { 2399 | #if ($SearchTextBox.Text -like "") { 2400 | #$SearchTextBox.Text = $watermark 2401 | #$SearchTextBox.ForeColor = [System.Drawing.Color]::LightGray 2402 | #}} 2403 | # 2404 | #$SearchTextBox.ForeColor = [System.Drawing.Color]::LightGray 2405 | #$SearchTextBox.add_Enter($TextBox_Enter) 2406 | #$SearchTextBox.add_Leave($TextBox_Leave) 2407 | #$SearchTextBox.Text = $watermark 2408 | #endregion 2409 | 2410 | #region status 2411 | $StatusStrip = New-Object System.Windows.Forms.StatusStrip 2412 | $StatusStrip.BackColor = "white" 2413 | $StatusStrip.Font = "$Font,9" 2414 | $main_form.Controls.Add($statusStrip) 2415 | 2416 | $Status = New-Object System.Windows.Forms.ToolStripMenuItem 2417 | $StatusStrip.Items.Add($Status) 2418 | $Status.Text = "©Telegram @kup57" 2419 | 2420 | list-update 2421 | Creat-Table 2422 | $main_form.ShowDialog() 2423 | #endregion 2424 | --------------------------------------------------------------------------------