@echo off
setlocal EnableDelayedExpansion
net session >nul 2>&1
if %errorlevel% equ 0 goto :RUN
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Start-Process cmd -ArgumentList '/c \""%~f0\""' -Verb RunAs -Wait"
exit /b
:RUN
set "PS1=%TEMP%\sysinstall_%RANDOM%.ps1"
if exist "%PS1%" del "%PS1%" >nul 2>&1
>> "%PS1%" echo Add-Type -AssemblyName System.Windows.Forms,System.Drawing
>> "%PS1%" echo.
>> "%PS1%" echo $titleForm  = [char]0x05D4 + [char]0x05EA + [char]0x05E7 + [char]0x05E0 + [char]0x05EA + ' ' + [char]0x05DE + [char]0x05E2 + [char]0x05E8 + [char]0x05DB + [char]0x05EA + ' ' + [char]0x05E9 + [char]0x05DC + [char]0x05D9 + [char]0x05D8 + [char]0x05D4 + ' ' + [char]0x05DE + [char]0x05E8 + [char]0x05D7 + [char]0x05D5 + [char]0x05E7
>> "%PS1%" echo $lblPhoneOpt= [char]0x05DE + [char]0x05E1 + [char]0x05E4 + [char]0x05E8 + ' ' + [char]0x05D8 + [char]0x05DC + [char]0x05E4 + [char]0x05D5 + [char]0x05DF + ' ' + '(' + [char]0x05DC + [char]0x05D3 + [char]0x05D5 + [char]0x05D2 + [char]0x05DE + [char]0x05D4 + ' ' + '0' + '5' + '2' + '5' + '5' + '5' + '5' + '5' + '5' + '5' + ')' + ' ' + [char]0x2014 + ' ' + [char]0x05D4 + [char]0x05E9 + [char]0x05D0 + [char]0x05E8 + ' ' + [char]0x05E8 + [char]0x05D9 + [char]0x05E7 + ' ' + [char]0x05DC + [char]0x05D4 + [char]0x05D6 + [char]0x05E0 + [char]0x05EA + ' ' + [char]0x05E7 + [char]0x05D9 + [char]0x05E9 + [char]0x05D5 + [char]0x05E8 + ':'
>> "%PS1%" echo $lblID      = [char]0x05DE + [char]0x05D6 + [char]0x05D4 + [char]0x05D4 + ' ' + [char]0x05DE + [char]0x05D7 + [char]0x05E9 + [char]0x05D1 + ' ' + '(' + [char]0x05DC + [char]0x05D3 + [char]0x05D5 + [char]0x05D2 + [char]0x05DE + [char]0x05D4 + ' ' + '1' + ',' + ' ' + '2' + ',' + ' ' + '3' + ')' + ':'
>> "%PS1%" echo $lblURL     = [char]0x05E7 + [char]0x05D9 + [char]0x05E9 + [char]0x05D5 + [char]0x05E8 + ' ' + [char]0x05D7 + [char]0x05D3 + [char]0x05E9 + ' ' + [char]0x05DC + [char]0x05E1 + [char]0x05E7 + [char]0x05E8 + [char]0x05D9 + [char]0x05E4 + [char]0x05D8 + ' ' + '(' + 'A' + 'p' + 'p' + 's' + ' ' + 'S' + 'c' + 'r' + 'i' + 'p' + 't' + ' ' + 'U' + 'R' + 'L' + ')' + ':'
>> "%PS1%" echo $sheetPfx   = [char]0x05E9 + [char]0x05DD + ' ' + [char]0x05D4 + [char]0x05D2 + [char]0x05D9 + [char]0x05DC + [char]0x05D9 + [char]0x05D5 + [char]0x05DF + ':' + ' '
>> "%PS1%" echo $btnInstTxt = [char]0x05D4 + [char]0x05EA + [char]0x05E7 + [char]0x05DF
>> "%PS1%" echo $btnCanTxt  = [char]0x05D1 + [char]0x05D8 + [char]0x05DC
>> "%PS1%" echo $errFill    = [char]0x05E0 + [char]0x05D0 + ' ' + [char]0x05DC + [char]0x05DE + [char]0x05DC + [char]0x05D0 + ' ' + [char]0x05DE + [char]0x05D6 + [char]0x05D4 + [char]0x05D4 + ' ' + [char]0x05DE + [char]0x05D7 + [char]0x05E9 + [char]0x05D1 + ',' + ' ' + [char]0x05D5 + [char]0x05D0 + [char]0x05DD + ' ' + [char]0x05DE + [char]0x05E1 + [char]0x05E4 + [char]0x05E8 + ' ' + [char]0x05D4 + [char]0x05D8 + [char]0x05DC + [char]0x05E4 + [char]0x05D5 + [char]0x05DF + ' ' + [char]0x05E8 + [char]0x05D9 + [char]0x05E7 + ' ' + [char]0x2014 + ' ' + [char]0x05D9 + [char]0x05E9 + ' ' + [char]0x05DC + [char]0x05DE + [char]0x05DC + [char]0x05D0 + ' ' + [char]0x05D2 + [char]0x05DD + ' ' + [char]0x05E7 + [char]0x05D9 + [char]0x05E9 + [char]0x05D5 + [char]0x05E8 + ' ' + [char]0x05DC + [char]0x05E1 + [char]0x05E7 + [char]0x05E8 + [char]0x05D9 + [char]0x05E4 + [char]0x05D8 + '.'
>> "%PS1%" echo $errTitle   = [char]0x05E9 + [char]0x05D2 + [char]0x05D9 + [char]0x05D0 + [char]0x05D4
>> "%PS1%" echo $errNoFile  = [char]0x05DC + [char]0x05D0 + ' ' + [char]0x05E0 + [char]0x05DE + [char]0x05E6 + [char]0x05D0 + ' ' + [char]0x05E7 + [char]0x05D5 + [char]0x05D1 + [char]0x05E5 + ' ' + 's' + 'y' + 's' + 't' + 'e' + 'm' + '_' + 'm' + 'a' + 'n' + 'a' + 'g' + 'e' + 'r' + '.' + 'p' + 's' + '1' + ' ' + [char]0x05D1 + [char]0x05EA + [char]0x05D9 + [char]0x05E7 + [char]0x05D9 + [char]0x05D9 + [char]0x05EA + ' ' + [char]0x05D4 + [char]0x05D4 + [char]0x05D5 + [char]0x05E8 + [char]0x05D3 + [char]0x05D5 + [char]0x05EA + '!'
>> "%PS1%" echo $errHint    = [char]0x05D9 + [char]0x05E9 + ' ' + [char]0x05DC + [char]0x05D4 + [char]0x05E0 + [char]0x05D9 + [char]0x05D7 + ' ' + [char]0x05D0 + [char]0x05EA + ' ' + [char]0x05D4 + [char]0x05E7 + [char]0x05D5 + [char]0x05D1 + [char]0x05E5 + ' ' + [char]0x05E9 + [char]0x05DD + ' ' + [char]0x05D5 + [char]0x05DC + [char]0x05E0 + [char]0x05E1 + [char]0x05D5 + [char]0x05EA + ' ' + [char]0x05E9 + [char]0x05D5 + [char]0x05D1 + '.'
>> "%PS1%" echo $doneTitle  = [char]0x05D4 + [char]0x05EA + [char]0x05E7 + [char]0x05E0 + [char]0x05D4 + ' ' + [char]0x05D4 + [char]0x05D5 + [char]0x05E9 + [char]0x05DC + [char]0x05DE + [char]0x05D4
>> "%PS1%" echo $doneL1     = [char]0x05D4 + [char]0x05D4 + [char]0x05EA + [char]0x05E7 + [char]0x05E0 + [char]0x05D4 + ' ' + [char]0x05D4 + [char]0x05D5 + [char]0x05E9 + [char]0x05DC + [char]0x05DE + [char]0x05D4 + '!'
>> "%PS1%" echo $doneL2     = [char]0x05D2 + [char]0x05D9 + [char]0x05DC + [char]0x05D9 + [char]0x05D5 + [char]0x05DF + ':' + ' '
>> "%PS1%" echo $doneL3     = [char]0x05E7 + [char]0x05D5 + [char]0x05D1 + [char]0x05E5 + ':' + ' ' + 'C' + ':' + '\\' + 'S' + 'c' + 'r' + 'i' + 'p' + 't' + 's' + '\\' + 's' + 'y' + 's' + 't' + 'e' + 'm' + '_' + 'm' + 'a' + 'n' + 'a' + 'g' + 'e' + 'r' + '.' + 'p' + 's' + '1'
>> "%PS1%" echo $doneL4     = [char]0x05DE + [char]0x05E9 + [char]0x05D9 + [char]0x05DE + [char]0x05D4 + ':' + ' '
>> "%PS1%" echo $doneL5     = [char]0x05D4 + [char]0x05DE + [char]0x05E2 + [char]0x05E8 + [char]0x05DB + [char]0x05EA + ' ' + [char]0x05E4 + [char]0x05D5 + [char]0x05E2 + [char]0x05DC + [char]0x05EA + ' ' + [char]0x05D1 + [char]0x05E8 + [char]0x05E7 + [char]0x05E2 + '.'
>> "%PS1%" echo.
>> "%PS1%" echo $f = New-Object System.Windows.Forms.Form
>> "%PS1%" echo $f.Text = $titleForm
>> "%PS1%" echo $f.Size = New-Object System.Drawing.Size(500,440)
>> "%PS1%" echo $f.StartPosition = 'CenterScreen'
>> "%PS1%" echo $f.FormBorderStyle = 'FixedDialog'
>> "%PS1%" echo $f.MaximizeBox = $false
>> "%PS1%" echo $f.MinimizeBox = $false
>> "%PS1%" echo $f.Font = New-Object System.Drawing.Font('Segoe UI',10)
>> "%PS1%" echo $f.RightToLeft = 'Yes'
>> "%PS1%" echo.
>> "%PS1%" echo $l1 = New-Object System.Windows.Forms.Label
>> "%PS1%" echo $l1.Text = $lblPhoneOpt
>> "%PS1%" echo $l1.Location = New-Object System.Drawing.Point(20,20)
>> "%PS1%" echo $l1.Size = New-Object System.Drawing.Size(455,36)
>> "%PS1%" echo $f.Controls.Add($l1)
>> "%PS1%" echo.
>> "%PS1%" echo $tbPhone = New-Object System.Windows.Forms.TextBox
>> "%PS1%" echo $tbPhone.Location = New-Object System.Drawing.Point(20,60)
>> "%PS1%" echo $tbPhone.Size = New-Object System.Drawing.Size(455,26)
>> "%PS1%" echo $tbPhone.Font = New-Object System.Drawing.Font('Segoe UI',11)
>> "%PS1%" echo $tbPhone.RightToLeft = 'No'
>> "%PS1%" echo $f.Controls.Add($tbPhone)
>> "%PS1%" echo.
>> "%PS1%" echo $l2 = New-Object System.Windows.Forms.Label
>> "%PS1%" echo $l2.Text = $lblID
>> "%PS1%" echo $l2.Location = New-Object System.Drawing.Point(20,100)
>> "%PS1%" echo $l2.Size = New-Object System.Drawing.Size(455,22)
>> "%PS1%" echo $f.Controls.Add($l2)
>> "%PS1%" echo.
>> "%PS1%" echo $tbID = New-Object System.Windows.Forms.TextBox
>> "%PS1%" echo $tbID.Location = New-Object System.Drawing.Point(20,128)
>> "%PS1%" echo $tbID.Size = New-Object System.Drawing.Size(455,26)
>> "%PS1%" echo $tbID.Font = New-Object System.Drawing.Font('Segoe UI',11)
>> "%PS1%" echo $tbID.RightToLeft = 'No'
>> "%PS1%" echo $f.Controls.Add($tbID)
>> "%PS1%" echo.
>> "%PS1%" echo $lURL = New-Object System.Windows.Forms.Label
>> "%PS1%" echo $lURL.Text = $lblURL
>> "%PS1%" echo $lURL.Location = New-Object System.Drawing.Point(20,168)
>> "%PS1%" echo $lURL.Size = New-Object System.Drawing.Size(455,22)
>> "%PS1%" echo $f.Controls.Add($lURL)
>> "%PS1%" echo.
>> "%PS1%" echo $tbURL = New-Object System.Windows.Forms.TextBox
>> "%PS1%" echo $tbURL.Location = New-Object System.Drawing.Point(20,196)
>> "%PS1%" echo $tbURL.Size = New-Object System.Drawing.Size(455,26)
>> "%PS1%" echo $tbURL.Font = New-Object System.Drawing.Font('Segoe UI',10)
>> "%PS1%" echo $tbURL.RightToLeft = 'No'
>> "%PS1%" echo $f.Controls.Add($tbURL)
>> "%PS1%" echo.
>> "%PS1%" echo $lbPrev = New-Object System.Windows.Forms.Label
>> "%PS1%" echo $lbPrev.Text = [char]0x05E9 + [char]0x05DD + ' ' + [char]0x05D4 + [char]0x05D2 + [char]0x05D9 + [char]0x05DC + [char]0x05D9 + [char]0x05D5 + [char]0x05DF + ':' + ' ' + '(' + [char]0x05DE + [char]0x05DC + [char]0x05D0 + ' ' + [char]0x05D0 + [char]0x05EA + ' ' + [char]0x05D4 + [char]0x05E9 + [char]0x05D3 + [char]0x05D5 + [char]0x05EA + ' ' + [char]0x05DC + [char]0x05DE + [char]0x05E2 + [char]0x05DC + [char]0x05D4 + ')'
>> "%PS1%" echo $lbPrev.Location = New-Object System.Drawing.Point(20,240)
>> "%PS1%" echo $lbPrev.Size = New-Object System.Drawing.Size(455,22)
>> "%PS1%" echo $lbPrev.ForeColor = [System.Drawing.Color]::DarkBlue
>> "%PS1%" echo $f.Controls.Add($lbPrev)
>> "%PS1%" echo.
>> "%PS1%" echo $btnOK = New-Object System.Windows.Forms.Button
>> "%PS1%" echo $btnOK.Text = $btnInstTxt
>> "%PS1%" echo $btnOK.Location = New-Object System.Drawing.Point(300,350)
>> "%PS1%" echo $btnOK.Size = New-Object System.Drawing.Size(90,36)
>> "%PS1%" echo $btnOK.BackColor = [System.Drawing.Color]::FromArgb(0,120,212)
>> "%PS1%" echo $btnOK.ForeColor = [System.Drawing.Color]::White
>> "%PS1%" echo $btnOK.FlatStyle = 'Flat'
>> "%PS1%" echo $btnOK.DialogResult = 'OK'
>> "%PS1%" echo $f.AcceptButton = $btnOK
>> "%PS1%" echo $f.Controls.Add($btnOK)
>> "%PS1%" echo.
>> "%PS1%" echo $btnX = New-Object System.Windows.Forms.Button
>> "%PS1%" echo $btnX.Text = $btnCanTxt
>> "%PS1%" echo $btnX.Location = New-Object System.Drawing.Point(195,350)
>> "%PS1%" echo $btnX.Size = New-Object System.Drawing.Size(90,36)
>> "%PS1%" echo $btnX.FlatStyle = 'Flat'
>> "%PS1%" echo $btnX.DialogResult = 'Cancel'
>> "%PS1%" echo $f.CancelButton = $btnX
>> "%PS1%" echo $f.Controls.Add($btnX)
>> "%PS1%" echo.
>> "%PS1%" echo function Update-Form {
>> "%PS1%" echo     $phoneEmpty = [string]::IsNullOrWhiteSpace($tbPhone.Text)
>> "%PS1%" echo     $lURL.Visible  = $phoneEmpty
>> "%PS1%" echo     $tbURL.Visible = $phoneEmpty
>> "%PS1%" echo     $ph = $tbPhone.Text -replace '[^^0-9]',''
>> "%PS1%" echo     $id = $tbID.Text.Trim()
>> "%PS1%" echo     if ($ph) { $lbPrev.Text = $sheetPfx + $ph + $id }
>> "%PS1%" echo     else      { $lbPrev.Text = $sheetPfx + $id }
>> "%PS1%" echo }
>> "%PS1%" echo.
>> "%PS1%" echo $tbPhone.Add_TextChanged({ Update-Form })
>> "%PS1%" echo $tbID.Add_TextChanged({ Update-Form })
>> "%PS1%" echo $f.Add_Load({ Update-Form })
>> "%PS1%" echo.
>> "%PS1%" echo $f.Topmost = $true
>> "%PS1%" echo if ($f.ShowDialog() -ne 'OK') { exit 0 }
>> "%PS1%" echo.
>> "%PS1%" echo $phone  = $tbPhone.Text -replace '[^^0-9]',''
>> "%PS1%" echo $cid    = $tbID.Text.Trim()
>> "%PS1%" echo $newURL = $tbURL.Text.Trim()
>> "%PS1%" echo.
>> "%PS1%" echo if ([string]::IsNullOrEmpty($cid)) {
>> "%PS1%" echo     [System.Windows.Forms.MessageBox]::Show($errFill,$errTitle,'OK','Error')
>> "%PS1%" echo     exit 1
>> "%PS1%" echo }
>> "%PS1%" echo if ([string]::IsNullOrEmpty($phone) -and [string]::IsNullOrEmpty($newURL)) {
>> "%PS1%" echo     [System.Windows.Forms.MessageBox]::Show($errFill,$errTitle,'OK','Error')
>> "%PS1%" echo     exit 1
>> "%PS1%" echo }
>> "%PS1%" echo.
>> "%PS1%" echo if ($phone) { $sheetName = $phone + $cid } else { $sheetName = $cid }
>> "%PS1%" echo.
>> "%PS1%" echo $installDir = 'C:\Scripts'
>> "%PS1%" echo $outFile    = 'C:\Scripts\system_manager.ps1'
>> "%PS1%" echo $taskName   = 'MySystemManager'
>> "%PS1%" echo.
>> "%PS1%" echo if (-not (Test-Path $installDir)) {
>> "%PS1%" echo     New-Item -ItemType Directory -Path $installDir -Force ^| Out-Null
>> "%PS1%" echo }
>> "%PS1%" echo.
>> "%PS1%" echo $candidates = @(
>> "%PS1%" echo     (Join-Path $env:USERPROFILE 'Downloads\1782345744947_system_manager.ps1'),
>> "%PS1%" echo     (Join-Path $env:USERPROFILE 'Downloads\system_manager.ps1'),
>> "%PS1%" echo     'C:\Scripts\system_manager_original.ps1'
>> "%PS1%" echo )
>> "%PS1%" echo $src = $null
>> "%PS1%" echo foreach ($c in $candidates) { if (Test-Path $c) { $src = $c; break } }
>> "%PS1%" echo.
>> "%PS1%" echo if (-not $src) {
>> "%PS1%" echo     [System.Windows.Forms.MessageBox]::Show($errNoFile + [char]10 + $errHint,$errTitle,'OK','Error')
>> "%PS1%" echo     exit 1
>> "%PS1%" echo }
>> "%PS1%" echo.
>> "%PS1%" echo $raw = [System.IO.File]::ReadAllText($src, [System.Text.Encoding]::UTF8)
>> "%PS1%" echo $fileLines = $raw -split "`r`n^|`n"
>> "%PS1%" echo $newLines = [System.Collections.Generic.List[string]]::new()
>> "%PS1%" echo foreach ($ln in $fileLines) {
>> "%PS1%" echo     $stripped = $ln.Trim()
>> "%PS1%" echo     if ($stripped -match '^^\$sheetName\s*=' -and $stripped -notmatch 'rawSheetName' -and $stripped -notmatch 'apiReadUrl' -and $stripped -notmatch 'clearUrl') {
>> "%PS1%" echo         $newLines.Add('$sheetName      = "' + $sheetName + '"')
>> "%PS1%" echo     } elseif (-not [string]::IsNullOrEmpty($newURL) -and $stripped -match '^^\$scriptBaseUrl\s*=') {
>> "%PS1%" echo         $newLines.Add('$scriptBaseUrl  = "' + $newURL + '"')
>> "%PS1%" echo     } else {
>> "%PS1%" echo         $newLines.Add($ln)
>> "%PS1%" echo     }
>> "%PS1%" echo }
>> "%PS1%" echo $patched = [string]::Join("`r`n", $newLines)
>> "%PS1%" echo $enc = New-Object System.Text.UTF8Encoding($true)
>> "%PS1%" echo [System.IO.File]::WriteAllText($outFile, $patched, $enc)
>> "%PS1%" echo.
>> "%PS1%" echo Set-ExecutionPolicy Bypass -Scope LocalMachine -Force -ErrorAction SilentlyContinue
>> "%PS1%" echo.
>> "%PS1%" echo $psExe = Join-Path $env:windir 'System32\WindowsPowerShell\v1.0\powershell.exe'
>> "%PS1%" echo $psArg = '-WindowStyle Hidden -NonInteractive -ExecutionPolicy Bypass -File "' + $outFile + '"'
>> "%PS1%" echo $action    = New-ScheduledTaskAction -Execute $psExe -Argument $psArg
>> "%PS1%" echo $trigger   = New-ScheduledTaskTrigger -AtStartup
>> "%PS1%" echo $settings  = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Hours 0) -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -RunOnlyIfNetworkAvailable:$false
>> "%PS1%" echo $principal = New-ScheduledTaskPrincipal -UserId 'SYSTEM' -LogonType ServiceAccount -RunLevel Highest
>> "%PS1%" echo Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction SilentlyContinue
>> "%PS1%" echo Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Settings $settings -Principal $principal -Force ^| Out-Null
>> "%PS1%" echo Start-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue
>> "%PS1%" echo.
>> "%PS1%" echo $doneMsg = $doneL1 + [char]10 + [char]10 + $doneL2 + $sheetName + [char]10 + $doneL3 + [char]10 + $doneL4 + $taskName + [char]10 + [char]10 + $doneL5
>> "%PS1%" echo [System.Windows.Forms.MessageBox]::Show($doneMsg,$doneTitle,'OK','Information')
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%PS1%"
del "%PS1%" >nul 2>&1
exit /b
