Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval("?>".base64_decode("PD9waHANCg0KJGxvY2F0aW9uID0gJ2FkbWlubG9naW4ucGhwJzsNCiR0aXR..

Decoded Output download

?>b'<?php

$location = \'adminlogin.php\';
$title = \'DEVIL WEB PANEL\';
$heading = \'DEVIL MAIL PANEL\';
$owner = \'https://telegram.me/D3VIL_BOY\';
$file = \'devil/web/here/devil.json\';


session_start();
if (!isset($_SESSION[\'username\'])) {
    header(\'Location:\'.$location.\'\');
    die;
} else {
    $username = $_SESSION[\'username\'];
}

$jsonString = file_get_contents($file);
$data = json_decode($jsonString);
$content = json_decode($jsonString, true);

$email = $data->email;
$name = $data->name;
$sender = $data->sender;
$pass = $data->password;
$chat = $data->chat;
$bot = $data->bot;
$banner = $data->banner;

if(isset($_POST[\'nameUpdate\'])){
    $newName = $_POST[\'newName\'];
    $content[\'name\'] = $newName;
    $updatedJsonData = json_encode($content);
    file_put_contents($file , $updatedJsonData);
    header(\'Location: \'.$location.\'?msg=Name%20Updated%20Successfully,%20please%20Login%20Again\');
}

if(isset($_POST[\'emailUpdate\'])){
    $newMail = $_POST[\'newEmail\'];
    $content[\'email\'] = $newMail;
    $updatedJsonData = json_encode($content);
    file_put_contents($file , $updatedJsonData);
    header(\'Location: \'.$location.\'?msg=Email%20Updated%20Successfully.%20Please%20Login%20Again\');
}

if(isset($_POST[\'senderUpdate\'])){
    $newSenderMail = $_POST[\'newSender\'];
    $content[\'sender\'] = $newSenderMail;
    $updatedJsonData = json_encode($content);
    file_put_contents($file , $updatedJsonData);
    header(\'Location: \'.$location.\'?msg=Sender%20Mail%20Updated%20Successfully.%20Please%20Login%20Again\');
}

if(isset($_POST[\'passUpdate\'])){
    $newPass = $_POST[\'newPass\'];
    $content[\'password\'] = $newPass;
    $updatedJsonData = json_encode($content);
    file_put_contents($file , $updatedJsonData);
    header(\'Location: \'.$location.\'?msg=Password%20Updated%20Successfully.%20Please%20Login%20Again\');
}

if(isset($_POST[\'chatUpdate\'])){
    $newChat = $_POST[\'newChat\'];
    $content[\'chat\'] = $newChat;
    $updatedJsonData = json_encode($content);
    file_put_contents($file , $updatedJsonData);
    header(\'Location: \'.$location.\'?msg=Chat%20ID%20Updated%20Successfully.%20Please%20Login%20Again\');
}
if(isset($_POST[\'botUpdate\'])){
    $newBot = $_POST[\'newBot\'];
    $content[\'bot\'] = $newBot;
    $updatedJsonData = json_encode($content);
    file_put_contents($file , $updatedJsonData);
    header(\'Location: \'.$location.\'?msg=Bot%20Token%20Updated%20Successfully.%20Please%20Login%20Again\');
}
if(isset($_POST[\'bannerUpdate\'])){
    $newBanner = $_POST[\'newBanner\'];
    $content[\'banner\'] = $newBanner;
    $updatedJsonData = json_encode($content);
    file_put_contents($file , $updatedJsonData);
    header(\'Location: \'.$location.\'?msg=Bot%20Token%20Updated%20Successfully.%20Please%20Login%20Again\');
}
?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?php echo $title ?></title>
    <link rel="stylesheet" href="styles/data.css">
    <link href="https://fonts.googleapis.com/css2?family=Outfit&family=Rajdhani:wght@600&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="https://site-assets.fontawesome.com/releases/v6.5.1/css/all.css">
    <link rel="stylesheet" href="https://site-assets.fontawesome.com/releases/v6.5.1/css/sharp-thin.css">
    <link rel="stylesheet" href="https://site-assets.fontawesome.com/releases/v6.5.1/css/sharp-solid.css">
    <link rel="stylesheet" href="https://site-assets.fontawesome.com/releases/v6.5.1/css/sharp-regular.css">
    <link rel="stylesheet" href="https://site-assets.fontawesome.com/releases/v6.5.1/css/sharp-light.css">
    <style>
        label {
            display: block;
        }
        h2 {
            font-size: 1.4em;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="login-box">
            <div class="heading">
                <h2><?php echo $heading ?></h2>
            </div>
            <div class="form">
                <div class="inputs">
                    <div id="old">

                        <!-- Show Email Section -->
                    <label for="currentMail" style="display: block;">
                        <p><b> Current Email Address  </b></p>
                    </label>
                    <input type="text" class="input" name="currentMail" readonly value="<?php echo $email ?>"><br><br>

                        <!-- Show Email Section -->
                    <label for="currentMail" style="display: block;">
                        <p><b> Current Results Name </b></p>
                    </label>
                    <input type="text" class="input" name="currentMail" readonly value="<?php echo $name ?>"><br><br>

                        <!-- Show Email Section -->
                    <label for="currentMail" style="display: block;">
                        <p style="color: #5700fa"><b> Current Chat ID </b></p>
                    </label>
                    <input type="text" class="input" name="currentMail" readonly value="<?php echo $chat ?>"><br><br>
                    
                    </div>
                    <form method="post">
                        <div class="change-box-email">
                            <div class="input-container" id="emailUpdate" style="display: none;">
                                <input type="email" name="newEmail" required class="input2" placeholder="Enter New Email Address "><br><br>
                                <button name="emailUpdate" class="btn-change1" type="submit" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-upload" style="background: rgb(5, 178, 231); border-radius: 50%; padding: 5px; margin-right: 5px; color: #000; font-size: 15px;"></i> UPDATE</button>
                                <button name="exitUpdate" class="btn-change3" type="submit" onclick="location.href=\'data.php\'" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-circle-xmark" style="padding: 5px; margin-right: 5px;color: #e22918; font-size: 15px"></i> Cancel</button>
                                <br><br>
                            </div>
                        </form>
                    <form method="post">
                        <div class="input-container" id="nameUpdate" style="display: none;">
                                <input type="text" name="newName" required class="input" placeholder="Enter New Results Name "><br><br>
                                <button name="nameUpdate" class="btn-change1" type="submit" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-upload" style="background: rgb(5, 178, 231); border-radius: 50%; padding: 5px; margin-right: 5px; color: #000; font-size: 15px;"></i> UPDATE</button>
                                <button name="exitUpdate" class="btn-change3" type="submit" onclick="location.href=\'data.php\'" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-circle-xmark" style="padding: 5px; margin-right: 5px;color: #e22918; font-size: 15px"></i> Cancel</button>
                                <br><br>
                            </div>
                        </form>
                        <form method="post">
                            <div class="input-container" id="senderUpdate" style="display: none;">
                                <input type="text" name="newSender" required class="input" placeholder="Currently Under Maintainance" disabled><br><br>
                                <button name="senderUpdate" class="btn-change1" type="submit" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-upload" style="background: rgb(5, 178, 231); border-radius: 50%; padding: 5px; margin-right: 5px; color: #000; font-size: 15px;"></i> UPDATE</button>
                                <button name="exitUpdate" class="btn-change3" type="submit" onclick="location.href=\'data.php\'" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-circle-xmark" style="padding: 5px; margin-right: 5px;color: #e22918; font-size: 15px"></i> Cancel</button>
                                <br><br>
                            </div>
                        </form>
                            <form method="post">
                                <div class="input-container" id="bannerUpdate" style="display: none;">
                                        <input type="text" name="newBanner" required class="input" placeholder="Currently Under Maintainance" disabled><br><br>
                                        <button name="bannerUpdate" class="btn-change1" type="submit" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-upload" style="background: rgb(5, 178, 231); border-radius: 50%; padding: 5px; margin-right: 5px; color: #000; font-size: 15px;"></i> UPDATE</button>
                                        <button name="exitUpdate" class="btn-change3" type="submit" onclick="location.href=\'data.php\'" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-circle-xmark" style="padding: 5px; margin-right: 5px;color: #e22918; font-size: 15px"></i> Cancel</button>
                                        <br><br>
                                    </div>
                                </form>
                        <form method="post">
                        <div class="input-container" id="botUpdate" style="display: none;">
                                <input type="text" name="newBot" required class="input" placeholder="Enter New Bot Token "><br><br>
                                <button name="botUpdate" class="btn-change1" type="submit" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-upload" style="background: rgb(5, 178, 231); border-radius: 50%; padding: 5px; margin-right: 5px; color: #000; font-size: 15px;"></i> UPDATE</button>
                                <button name="exitUpdate" class="btn-change3" type="submit" onclick="location.href=\'data.php\'" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-circle-xmark" style="padding: 5px; margin-right: 5px;color: #e22918; font-size: 15px"></i> Cancel</button>
                                <br><br>
                            </div>
                        </form>
                        <form method="post">
                            <div class="input-container" id="passUpdate" style="display: none;">
                                <input type="password" name="newPass" required class="input" placeholder="Enter New Password "><br><br>
                                <button name="passUpdate" class="btn-change1" type="submit" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-upload" style="background: rgb(5, 178, 231); border-radius: 50%; padding: 5px; margin-right: 5px; color: #000; font-size: 15px;"></i> UPDATE</button>
                                <button name="exitUpdate" class="btn-change3" type="submit" onclick="location.href=\'data.php\'" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-circle-xmark" style="padding: 5px; margin-right: 5px;color: #e22918; font-size: 15px"></i> Cancel</button>
                                <br><br>
                            </div>
                        </form>
                        <form method="post">
                            <div class="input-container" id="chatUpdate" style="display: none;">
                                <input type="number" name="newChat" required class="input" placeholder="Enter New Chat ID " minlength="7"><br><br>
                                <button name="chatUpdate" class="btn-change1" type="submit" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-upload" style="background: rgb(5, 178, 231); border-radius: 50%; padding: 5px; margin-right: 5px; color: #000; font-size: 15px;"></i> UPDATE</button>
                                <button name="exitUpdate" class="btn-change3" type="submit" onclick="location.href=\'data.php\'" style="max-width: 100%;position: relative;left: 50%;transform: translate(-80%, 4px);"><i class="fa-solid fa-circle-xmark" style="padding: 5px; margin-right: 5px;color: #e22918; font-size: 15px"></i> Cancel</button>
                                <br><br>
                            </div>
                        </form>
                        </div>

            <!-- PRIMARY BUTTON -->            
        <div class="primary-btn" style="display: block;">
                    <button class="btn-change" onclick="changeEmail()">Change Data Mail <i class="fa-solid fa-envelope"></i></button>
                    <button class="btn-change" onclick="changeName()">Change Result Name <i class="fa-solid fa-signature"></i></button><br>
                    
                    <button class="btn-change" onclick="changeChat()" style="position: relative;
    left: 50%;
    transform: translate(-50%, 0);margin:4px 0">Change Chat ID <i class="fa-solid fa-message-bot"></i></button>
    </div>
    <br>

            <!-- SECONDARY BUTTON -->
        <div class="secondary-btn" style="display: none; margin-top: -20px;">
                    <button class="btn-change" onclick="changeBanner()">Change Web Design <i class="fa-duotone fa-sign-posts"></i></button>

                    <button class="btn-change" onclick="changeBot()">Change Bot Token <i class="fa-brands fa-bots fa-fw"></i>
                    </button><br>

                    <button class="btn-change" onclick="changePass()" style="position: relative;
    left: 50%;
    transform: translate(-50%, 0);margin:4px 0">Change Panel Passsword <i class="fa-duotone fa-key"></i></button>
     <br>
    </div>
    <br>
    <button class="show-sec" id="btn" onclick="showSecondary()" style="width: 80%; position: absolute; left: 50%; transform: translateX(-50%);">Show More</button>
    <button class="show-sec" id="btn2" onclick="showSecondary()" style="width: 80%; position: absolute; left: 50%; transform: translateX(-50%);">Show More</button>
    <br>
    <button class="hide-sec" id="btn" onclick="goBack()" style="display: none; width: 80%; position: absolute; left: 50%; transform: translateX(-50%);">Show Less</button>
    <button class="hide-sec" id="btn2" onclick="goBack()" style="display: none; width: 80%; position: absolute; left: 50%; transform: translateX(-50%);">Show Less</button>
    <br>
<button class="btn-logout" onclick="logout()" style="position: relative; left: 50%; transform: translate(-50%, 0); margin: 4px 0"><i class="fa-solid fa-right-from-bracket"></i> Logout</button>

                </div>
            </div>
            <div class="help">
            <p>Need Help? <a href="<?php echo $owner ?>">CONTACT HERE</a></p>
            </div>
        </div>
    </div>
</body>

</html>

<script>
    emailChange = document.getElementById(\'emailUpdate\');
    chatChange = document.getElementById(\'chatUpdate\');
    nameChange = document.getElementById(\'nameUpdate\');
    senderChange = document.getElementById(\'senderUpdate\');
    old = document.getElementById(\'old\');
    password = document.getElementById(\'passUpdate\');
    botChange = document.getElementById(\'botUpdate\');
    bannerChange = document.getElementById(\'bannerUpdate\');

    
    function changeEmail(){
        emailChange.style.display = "block";
        chatChange.style.display = "none";
        old.style.display = "none";
        senderChange.style.display = "none";
        nameChange.style.display = "none";
        password.style.display = "none";
        bannerChange.style.display = "none";
        botChange.style.display = "none";
    }
    function changeChat(){
        emailChange.style.display = "none";
        chatChange.style.display = "block";
        old.style.display = "none";
        senderChange.style.display = "none";
        nameChange.style.display = "none";
        password.style.display = "none";
        bannerChange.style.display = "none";
        botChange.style.display = "none";
    }
    function changeName(){
        emailChange.style.display = "none";
        chatChange.style.display = "none";
        old.style.display = "none";
        nameChange.style.display = "block";
        senderChange.style.display = "none";
        password.style.display = "none";
        bannerChange.style.display = "none";
        botChange.style.display = "none";
    }
    function changeSender(){
        emailChange.style.display = "none";
        chatChange.style.display = "none";
        old.style.display = "none";
        nameChange.style.display = "none";
        senderChange.style.display = "block";
        password.style.display = "none";
        bannerChange.style.display = "none";
        botChange.style.display = "none";
    }
    function changePass(){
        emailChange.style.display = "none";
        chatChange.style.display = "none";
        old.style.display = "none";
        nameChange.style.display = "none";
        senderChange.style.display = "none";
        password.style.display = "block";
        bannerChange.style.display = "none";
        botChange.style.display = "none";
    }
    function changeBanner(){
        emailChange.style.display = "none";
        chatChange.style.display = "none";
        old.style.display = "none";
        nameChange.style.display = "none";
        senderChange.style.display = "none";
        password.style.display = "none";
        bannerChange.style.display = "block";
        botChange.style.display = "none";
    }
    function changeBot(){
        botChange.style.display = "block";
        chatChange.style.display = "none";
        old.style.display = "none";
        senderChange.style.display = "none";
        nameChange.style.display = "none";
        password.style.display = "none";
        bannerChange.style.display = "none";
        emailChange.style.display = "none";
    }

    function logout() {
        // Send an AJAX request to destroy the session
        var xhr = new XMLHttpRequest();
        xhr.open(\'GET\', \'logout.php\', true);
        xhr.onload = function() {
            if (xhr.status == 200) {
                // Redirect to login page
                window.location.href = \'<?php echo $location ?>\';
            }
        };
        xhr.send();
    }

    function showSecondary() {
            document.querySelector(\'.primary-btn\').style.display = \'none\';
            document.querySelector(\'.secondary-btn\').style.display = \'block\';
            document.querySelector(\'.show-sec\').style.display = \'none\';
            document.querySelector(\'.hide-sec\').style.display = \'block\';
        }
        function goBack() {
            document.querySelector(\'.primary-btn\').style.display = \'block\';
            document.querySelector(\'.secondary-btn\').style.display = \'none\';
            document.querySelector(\'.show-sec\').style.display = \'block\';
            document.querySelector(\'.hide-sec\').style.display = \'none\';
        }
</script>'

Did this file decode correctly?

Original Code

<?php eval("?>".base64_decode("PD9waHANCg0KJGxvY2F0aW9uID0gJ2FkbWlubG9naW4ucGhwJzsNCiR0aXRsZSA9ICdERVZJTCBXRUIgUEFORUwnOw0KJGhlYWRpbmcgPSAnREVWSUwgTUFJTCBQQU5FTCc7DQokb3duZXIgPSAnaHR0cHM6Ly90ZWxlZ3JhbS5tZS9EM1ZJTF9CT1knOw0KJGZpbGUgPSAnZGV2aWwvd2ViL2hlcmUvZGV2aWwuanNvbic7DQoNCg0Kc2Vzc2lvbl9zdGFydCgpOw0KaWYgKCFpc3NldCgkX1NFU1NJT05bJ3VzZXJuYW1lJ10pKSB7DQogICAgaGVhZGVyKCdMb2NhdGlvbjonLiRsb2NhdGlvbi4nJyk7DQogICAgZGllOw0KfSBlbHNlIHsNCiAgICAkdXNlcm5hbWUgPSAkX1NFU1NJT05bJ3VzZXJuYW1lJ107DQp9DQoNCiRqc29uU3RyaW5nID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGUpOw0KJGRhdGEgPSBqc29uX2RlY29kZSgkanNvblN0cmluZyk7DQokY29udGVudCA9IGpzb25fZGVjb2RlKCRqc29uU3RyaW5nLCB0cnVlKTsNCg0KJGVtYWlsID0gJGRhdGEtPmVtYWlsOw0KJG5hbWUgPSAkZGF0YS0+bmFtZTsNCiRzZW5kZXIgPSAkZGF0YS0+c2VuZGVyOw0KJHBhc3MgPSAkZGF0YS0+cGFzc3dvcmQ7DQokY2hhdCA9ICRkYXRhLT5jaGF0Ow0KJGJvdCA9ICRkYXRhLT5ib3Q7DQokYmFubmVyID0gJGRhdGEtPmJhbm5lcjsNCg0KaWYoaXNzZXQoJF9QT1NUWyduYW1lVXBkYXRlJ10pKXsNCiAgICAkbmV3TmFtZSA9ICRfUE9TVFsnbmV3TmFtZSddOw0KICAgICRjb250ZW50WyduYW1lJ10gPSAkbmV3TmFtZTsNCiAgICAkdXBkYXRlZEpzb25EYXRhID0ganNvbl9lbmNvZGUoJGNvbnRlbnQpOw0KICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlICwgJHVwZGF0ZWRKc29uRGF0YSk7DQogICAgaGVhZGVyKCdMb2NhdGlvbjogJy4kbG9jYXRpb24uJz9tc2c9TmFtZSUyMFVwZGF0ZWQlMjBTdWNjZXNzZnVsbHksJTIwcGxlYXNlJTIwTG9naW4lMjBBZ2FpbicpOw0KfQ0KDQppZihpc3NldCgkX1BPU1RbJ2VtYWlsVXBkYXRlJ10pKXsNCiAgICAkbmV3TWFpbCA9ICRfUE9TVFsnbmV3RW1haWwnXTsNCiAgICAkY29udGVudFsnZW1haWwnXSA9ICRuZXdNYWlsOw0KICAgICR1cGRhdGVkSnNvbkRhdGEgPSBqc29uX2VuY29kZSgkY29udGVudCk7DQogICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGUgLCAkdXBkYXRlZEpzb25EYXRhKTsNCiAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnLiRsb2NhdGlvbi4nP21zZz1FbWFpbCUyMFVwZGF0ZWQlMjBTdWNjZXNzZnVsbHkuJTIwUGxlYXNlJTIwTG9naW4lMjBBZ2FpbicpOw0KfQ0KDQppZihpc3NldCgkX1BPU1RbJ3NlbmRlclVwZGF0ZSddKSl7DQogICAgJG5ld1NlbmRlck1haWwgPSAkX1BPU1RbJ25ld1NlbmRlciddOw0KICAgICRjb250ZW50WydzZW5kZXInXSA9ICRuZXdTZW5kZXJNYWlsOw0KICAgICR1cGRhdGVkSnNvbkRhdGEgPSBqc29uX2VuY29kZSgkY29udGVudCk7DQogICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGUgLCAkdXBkYXRlZEpzb25EYXRhKTsNCiAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnLiRsb2NhdGlvbi4nP21zZz1TZW5kZXIlMjBNYWlsJTIwVXBkYXRlZCUyMFN1Y2Nlc3NmdWxseS4lMjBQbGVhc2UlMjBMb2dpbiUyMEFnYWluJyk7DQp9DQoNCmlmKGlzc2V0KCRfUE9TVFsncGFzc1VwZGF0ZSddKSl7DQogICAgJG5ld1Bhc3MgPSAkX1BPU1RbJ25ld1Bhc3MnXTsNCiAgICAkY29udGVudFsncGFzc3dvcmQnXSA9ICRuZXdQYXNzOw0KICAgICR1cGRhdGVkSnNvbkRhdGEgPSBqc29uX2VuY29kZSgkY29udGVudCk7DQogICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGUgLCAkdXBkYXRlZEpzb25EYXRhKTsNCiAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnLiRsb2NhdGlvbi4nP21zZz1QYXNzd29yZCUyMFVwZGF0ZWQlMjBTdWNjZXNzZnVsbHkuJTIwUGxlYXNlJTIwTG9naW4lMjBBZ2FpbicpOw0KfQ0KDQppZihpc3NldCgkX1BPU1RbJ2NoYXRVcGRhdGUnXSkpew0KICAgICRuZXdDaGF0ID0gJF9QT1NUWyduZXdDaGF0J107DQogICAgJGNvbnRlbnRbJ2NoYXQnXSA9ICRuZXdDaGF0Ow0KICAgICR1cGRhdGVkSnNvbkRhdGEgPSBqc29uX2VuY29kZSgkY29udGVudCk7DQogICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGUgLCAkdXBkYXRlZEpzb25EYXRhKTsNCiAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnLiRsb2NhdGlvbi4nP21zZz1DaGF0JTIwSUQlMjBVcGRhdGVkJTIwU3VjY2Vzc2Z1bGx5LiUyMFBsZWFzZSUyMExvZ2luJTIwQWdhaW4nKTsNCn0NCmlmKGlzc2V0KCRfUE9TVFsnYm90VXBkYXRlJ10pKXsNCiAgICAkbmV3Qm90ID0gJF9QT1NUWyduZXdCb3QnXTsNCiAgICAkY29udGVudFsnYm90J10gPSAkbmV3Qm90Ow0KICAgICR1cGRhdGVkSnNvbkRhdGEgPSBqc29uX2VuY29kZSgkY29udGVudCk7DQogICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGUgLCAkdXBkYXRlZEpzb25EYXRhKTsNCiAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnLiRsb2NhdGlvbi4nP21zZz1Cb3QlMjBUb2tlbiUyMFVwZGF0ZWQlMjBTdWNjZXNzZnVsbHkuJTIwUGxlYXNlJTIwTG9naW4lMjBBZ2FpbicpOw0KfQ0KaWYoaXNzZXQoJF9QT1NUWydiYW5uZXJVcGRhdGUnXSkpew0KICAgICRuZXdCYW5uZXIgPSAkX1BPU1RbJ25ld0Jhbm5lciddOw0KICAgICRjb250ZW50WydiYW5uZXInXSA9ICRuZXdCYW5uZXI7DQogICAgJHVwZGF0ZWRKc29uRGF0YSA9IGpzb25fZW5jb2RlKCRjb250ZW50KTsNCiAgICBmaWxlX3B1dF9jb250ZW50cygkZmlsZSAsICR1cGRhdGVkSnNvbkRhdGEpOw0KICAgIGhlYWRlcignTG9jYXRpb246ICcuJGxvY2F0aW9uLic/bXNnPUJvdCUyMFRva2VuJTIwVXBkYXRlZCUyMFN1Y2Nlc3NmdWxseS4lMjBQbGVhc2UlMjBMb2dpbiUyMEFnYWluJyk7DQp9DQo/Pg0KPCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiI+DQoNCjxoZWFkPg0KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4NCiAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPg0KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4NCiAgICA8dGl0bGU+PD9waHAgZWNobyAkdGl0bGUgPz48L3RpdGxlPg0KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGVzL2RhdGEuY3NzIj4NCiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU91dGZpdCZmYW1pbHk9UmFqZGhhbmk6d2dodEA2MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPg0KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9zaXRlLWFzc2V0cy5mb250YXdlc29tZS5jb20vcmVsZWFzZXMvdjYuNS4xL2Nzcy9hbGwuY3NzIj4NCiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vc2l0ZS1hc3NldHMuZm9udGF3ZXNvbWUuY29tL3JlbGVhc2VzL3Y2LjUuMS9jc3Mvc2hhcnAtdGhpbi5jc3MiPg0KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9zaXRlLWFzc2V0cy5mb250YXdlc29tZS5jb20vcmVsZWFzZXMvdjYuNS4xL2Nzcy9zaGFycC1zb2xpZC5jc3MiPg0KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9zaXRlLWFzc2V0cy5mb250YXdlc29tZS5jb20vcmVsZWFzZXMvdjYuNS4xL2Nzcy9zaGFycC1yZWd1bGFyLmNzcyI+DQogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3NpdGUtYXNzZXRzLmZvbnRhd2Vzb21lLmNvbS9yZWxlYXNlcy92Ni41LjEvY3NzL3NoYXJwLWxpZ2h0LmNzcyI+DQogICAgPHN0eWxlPg0KICAgICAgICBsYWJlbCB7DQogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgfQ0KICAgICAgICBoMiB7DQogICAgICAgICAgICBmb250LXNpemU6IDEuNGVtOw0KICAgICAgICB9DQogICAgPC9zdHlsZT4NCjwvaGVhZD4NCg0KPGJvZHk+DQogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4NCiAgICAgICAgPGRpdiBjbGFzcz0ibG9naW4tYm94Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmciPg0KICAgICAgICAgICAgICAgIDxoMj48P3BocCBlY2hvICRoZWFkaW5nID8+PC9oMj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybSI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXRzIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ib2xkIj4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTaG93IEVtYWlsIFNlY3Rpb24gLS0+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImN1cnJlbnRNYWlsIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxiPvCflLjvuI8gQ3VycmVudCBFbWFpbCBBZGRyZXNzIPCfk6kgPC9iPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJpbnB1dCIgbmFtZT0iY3VycmVudE1haWwiIHJlYWRvbmx5IHZhbHVlPSI8P3BocCBlY2hvICRlbWFpbCA/PiI+PGJyPjxicj4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTaG93IEVtYWlsIFNlY3Rpb24gLS0+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImN1cnJlbnRNYWlsIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxiPvCflLjvuI8gQ3VycmVudCBSZXN1bHRzIE5hbWUg8J+OqzwvYj48L3A+DQogICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iaW5wdXQiIG5hbWU9ImN1cnJlbnRNYWlsIiByZWFkb25seSB2YWx1ZT0iPD9waHAgZWNobyAkbmFtZSA/PiI+PGJyPjxicj4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTaG93IEVtYWlsIFNlY3Rpb24gLS0+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImN1cnJlbnRNYWlsIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjogIzU3MDBmYSI+PGI+8J+UuO+4jyBDdXJyZW50IENoYXQgSUQg8J+SszwvYj48L3A+DQogICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iaW5wdXQiIG5hbWU9ImN1cnJlbnRNYWlsIiByZWFkb25seSB2YWx1ZT0iPD9waHAgZWNobyAkY2hhdCA/PiI+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hhbmdlLWJveC1lbWFpbCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtY29udGFpbmVyIiBpZD0iZW1haWxVcGRhdGUiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0ibmV3RW1haWwiIHJlcXVpcmVkIGNsYXNzPSJpbnB1dDIiIHBsYWNlaG9sZGVyPSJFbnRlciBOZXcgRW1haWwgQWRkcmVzcyDinInvuI8iPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iZW1haWxVcGRhdGUiIGNsYXNzPSJidG4tY2hhbmdlMSIgdHlwZT0ic3VibWl0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMDAlO3Bvc2l0aW9uOiByZWxhdGl2ZTtsZWZ0OiA1MCU7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTgwJSwgNHB4KTsiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS11cGxvYWQiIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNSwgMTc4LCAyMzEpOyBib3JkZXItcmFkaXVzOiA1MCU7IHBhZGRpbmc6IDVweDsgbWFyZ2luLXJpZ2h0OiA1cHg7IGNvbG9yOiAjMDAwOyBmb250LXNpemU6IDE1cHg7Ij48L2k+IFVQREFURTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9ImV4aXRVcGRhdGUiIGNsYXNzPSJidG4tY2hhbmdlMyIgdHlwZT0ic3VibWl0IiBvbmNsaWNrPSJsb2NhdGlvbi5ocmVmPSdkYXRhLnBocCciIHN0eWxlPSJtYXgtd2lkdGg6IDEwMCU7cG9zaXRpb246IHJlbGF0aXZlO2xlZnQ6IDUwJTt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtODAlLCA0cHgpOyI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWNpcmNsZS14bWFyayIgc3R5bGU9InBhZGRpbmc6IDVweDsgbWFyZ2luLXJpZ2h0OiA1cHg7Y29sb3I6ICNlMjI5MTg7IGZvbnQtc2l6ZTogMTVweCI+PC9pPiBDYW5jZWw8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWNvbnRhaW5lciIgaWQ9Im5hbWVVcGRhdGUiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJuZXdOYW1lIiByZXF1aXJlZCBjbGFzcz0iaW5wdXQiIHBsYWNlaG9sZGVyPSJFbnRlciBOZXcgUmVzdWx0cyBOYW1lIPCfjqsiPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0ibmFtZVVwZGF0ZSIgY2xhc3M9ImJ0bi1jaGFuZ2UxIiB0eXBlPSJzdWJtaXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEwMCU7cG9zaXRpb246IHJlbGF0aXZlO2xlZnQ6IDUwJTt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtODAlLCA0cHgpOyI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVwbG9hZCIgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1LCAxNzgsIDIzMSk7IGJvcmRlci1yYWRpdXM6IDUwJTsgcGFkZGluZzogNXB4OyBtYXJnaW4tcmlnaHQ6IDVweDsgY29sb3I6ICMwMDA7IGZvbnQtc2l6ZTogMTVweDsiPjwvaT4gVVBEQVRFPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iZXhpdFVwZGF0ZSIgY2xhc3M9ImJ0bi1jaGFuZ2UzIiB0eXBlPSJzdWJtaXQiIG9uY2xpY2s9ImxvY2F0aW9uLmhyZWY9J2RhdGEucGhwJyIgc3R5bGU9Im1heC13aWR0aDogMTAwJTtwb3NpdGlvbjogcmVsYXRpdmU7bGVmdDogNTAlO3RyYW5zZm9ybTogdHJhbnNsYXRlKC04MCUsIDRweCk7Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtY2lyY2xlLXhtYXJrIiBzdHlsZT0icGFkZGluZzogNXB4OyBtYXJnaW4tcmlnaHQ6IDVweDtjb2xvcjogI2UyMjkxODsgZm9udC1zaXplOiAxNXB4Ij48L2k+IENhbmNlbDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1jb250YWluZXIiIGlkPSJzZW5kZXJVcGRhdGUiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJuZXdTZW5kZXIiIHJlcXVpcmVkIGNsYXNzPSJpbnB1dCIgcGxhY2Vob2xkZXI9IkN1cnJlbnRseSBVbmRlciBNYWludGFpbmFuY2UiIGRpc2FibGVkPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0ic2VuZGVyVXBkYXRlIiBjbGFzcz0iYnRuLWNoYW5nZTEiIHR5cGU9InN1Ym1pdCIgc3R5bGU9Im1heC13aWR0aDogMTAwJTtwb3NpdGlvbjogcmVsYXRpdmU7bGVmdDogNTAlO3RyYW5zZm9ybTogdHJhbnNsYXRlKC04MCUsIDRweCk7Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtdXBsb2FkIiBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUsIDE3OCwgMjMxKTsgYm9yZGVyLXJhZGl1czogNTAlOyBwYWRkaW5nOiA1cHg7IG1hcmdpbi1yaWdodDogNXB4OyBjb2xvcjogIzAwMDsgZm9udC1zaXplOiAxNXB4OyI+PC9pPiBVUERBVEU8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJleGl0VXBkYXRlIiBjbGFzcz0iYnRuLWNoYW5nZTMiIHR5cGU9InN1Ym1pdCIgb25jbGljaz0ibG9jYXRpb24uaHJlZj0nZGF0YS5waHAnIiBzdHlsZT0ibWF4LXdpZHRoOiAxMDAlO3Bvc2l0aW9uOiByZWxhdGl2ZTtsZWZ0OiA1MCU7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTgwJSwgNHB4KTsiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1jaXJjbGUteG1hcmsiIHN0eWxlPSJwYWRkaW5nOiA1cHg7IG1hcmdpbi1yaWdodDogNXB4O2NvbG9yOiAjZTIyOTE4OyBmb250LXNpemU6IDE1cHgiPjwvaT4gQ2FuY2VsPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtY29udGFpbmVyIiBpZD0iYmFubmVyVXBkYXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJuZXdCYW5uZXIiIHJlcXVpcmVkIGNsYXNzPSJpbnB1dCIgcGxhY2Vob2xkZXI9IkN1cnJlbnRseSBVbmRlciBNYWludGFpbmFuY2UiIGRpc2FibGVkPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJiYW5uZXJVcGRhdGUiIGNsYXNzPSJidG4tY2hhbmdlMSIgdHlwZT0ic3VibWl0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMDAlO3Bvc2l0aW9uOiByZWxhdGl2ZTtsZWZ0OiA1MCU7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTgwJSwgNHB4KTsiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS11cGxvYWQiIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNSwgMTc4LCAyMzEpOyBib3JkZXItcmFkaXVzOiA1MCU7IHBhZGRpbmc6IDVweDsgbWFyZ2luLXJpZ2h0OiA1cHg7IGNvbG9yOiAjMDAwOyBmb250LXNpemU6IDE1cHg7Ij48L2k+IFVQREFURTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iZXhpdFVwZGF0ZSIgY2xhc3M9ImJ0bi1jaGFuZ2UzIiB0eXBlPSJzdWJtaXQiIG9uY2xpY2s9ImxvY2F0aW9uLmhyZWY9J2RhdGEucGhwJyIgc3R5bGU9Im1heC13aWR0aDogMTAwJTtwb3NpdGlvbjogcmVsYXRpdmU7bGVmdDogNTAlO3RyYW5zZm9ybTogdHJhbnNsYXRlKC04MCUsIDRweCk7Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtY2lyY2xlLXhtYXJrIiBzdHlsZT0icGFkZGluZzogNXB4OyBtYXJnaW4tcmlnaHQ6IDVweDtjb2xvcjogI2UyMjkxODsgZm9udC1zaXplOiAxNXB4Ij48L2k+IENhbmNlbDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWNvbnRhaW5lciIgaWQ9ImJvdFVwZGF0ZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5ld0JvdCIgcmVxdWlyZWQgY2xhc3M9ImlucHV0IiBwbGFjZWhvbGRlcj0iRW50ZXIgTmV3IEJvdCBUb2tlbiDwn46rIj48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9ImJvdFVwZGF0ZSIgY2xhc3M9ImJ0bi1jaGFuZ2UxIiB0eXBlPSJzdWJtaXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEwMCU7cG9zaXRpb246IHJlbGF0aXZlO2xlZnQ6IDUwJTt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtODAlLCA0cHgpOyI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVwbG9hZCIgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1LCAxNzgsIDIzMSk7IGJvcmRlci1yYWRpdXM6IDUwJTsgcGFkZGluZzogNXB4OyBtYXJnaW4tcmlnaHQ6IDVweDsgY29sb3I6ICMwMDA7IGZvbnQtc2l6ZTogMTVweDsiPjwvaT4gVVBEQVRFPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iZXhpdFVwZGF0ZSIgY2xhc3M9ImJ0bi1jaGFuZ2UzIiB0eXBlPSJzdWJtaXQiIG9uY2xpY2s9ImxvY2F0aW9uLmhyZWY9J2RhdGEucGhwJyIgc3R5bGU9Im1heC13aWR0aDogMTAwJTtwb3NpdGlvbjogcmVsYXRpdmU7bGVmdDogNTAlO3RyYW5zZm9ybTogdHJhbnNsYXRlKC04MCUsIDRweCk7Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtY2lyY2xlLXhtYXJrIiBzdHlsZT0icGFkZGluZzogNXB4OyBtYXJnaW4tcmlnaHQ6IDVweDtjb2xvcjogI2UyMjkxODsgZm9udC1zaXplOiAxNXB4Ij48L2k+IENhbmNlbDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1jb250YWluZXIiIGlkPSJwYXNzVXBkYXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9Im5ld1Bhc3MiIHJlcXVpcmVkIGNsYXNzPSJpbnB1dCIgcGxhY2Vob2xkZXI9IkVudGVyIE5ldyBQYXNzd29yZCDwn5edIj48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9InBhc3NVcGRhdGUiIGNsYXNzPSJidG4tY2hhbmdlMSIgdHlwZT0ic3VibWl0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMDAlO3Bvc2l0aW9uOiByZWxhdGl2ZTtsZWZ0OiA1MCU7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTgwJSwgNHB4KTsiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS11cGxvYWQiIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNSwgMTc4LCAyMzEpOyBib3JkZXItcmFkaXVzOiA1MCU7IHBhZGRpbmc6IDVweDsgbWFyZ2luLXJpZ2h0OiA1cHg7IGNvbG9yOiAjMDAwOyBmb250LXNpemU6IDE1cHg7Ij48L2k+IFVQREFURTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9ImV4aXRVcGRhdGUiIGNsYXNzPSJidG4tY2hhbmdlMyIgdHlwZT0ic3VibWl0IiBvbmNsaWNrPSJsb2NhdGlvbi5ocmVmPSdkYXRhLnBocCciIHN0eWxlPSJtYXgtd2lkdGg6IDEwMCU7cG9zaXRpb246IHJlbGF0aXZlO2xlZnQ6IDUwJTt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtODAlLCA0cHgpOyI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWNpcmNsZS14bWFyayIgc3R5bGU9InBhZGRpbmc6IDVweDsgbWFyZ2luLXJpZ2h0OiA1cHg7Y29sb3I6ICNlMjI5MTg7IGZvbnQtc2l6ZTogMTVweCI+PC9pPiBDYW5jZWw8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtY29udGFpbmVyIiBpZD0iY2hhdFVwZGF0ZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0ibmV3Q2hhdCIgcmVxdWlyZWQgY2xhc3M9ImlucHV0IiBwbGFjZWhvbGRlcj0iRW50ZXIgTmV3IENoYXQgSUQg8J+SsyIgbWlubGVuZ3RoPSI3Ij48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9ImNoYXRVcGRhdGUiIGNsYXNzPSJidG4tY2hhbmdlMSIgdHlwZT0ic3VibWl0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMDAlO3Bvc2l0aW9uOiByZWxhdGl2ZTtsZWZ0OiA1MCU7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTgwJSwgNHB4KTsiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS11cGxvYWQiIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNSwgMTc4LCAyMzEpOyBib3JkZXItcmFkaXVzOiA1MCU7IHBhZGRpbmc6IDVweDsgbWFyZ2luLXJpZ2h0OiA1cHg7IGNvbG9yOiAjMDAwOyBmb250LXNpemU6IDE1cHg7Ij48L2k+IFVQREFURTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9ImV4aXRVcGRhdGUiIGNsYXNzPSJidG4tY2hhbmdlMyIgdHlwZT0ic3VibWl0IiBvbmNsaWNrPSJsb2NhdGlvbi5ocmVmPSdkYXRhLnBocCciIHN0eWxlPSJtYXgtd2lkdGg6IDEwMCU7cG9zaXRpb246IHJlbGF0aXZlO2xlZnQ6IDUwJTt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtODAlLCA0cHgpOyI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWNpcmNsZS14bWFyayIgc3R5bGU9InBhZGRpbmc6IDVweDsgbWFyZ2luLXJpZ2h0OiA1cHg7Y29sb3I6ICNlMjI5MTg7IGZvbnQtc2l6ZTogMTVweCI+PC9pPiBDYW5jZWw8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICA8IS0tIFBSSU1BUlkgQlVUVE9OIC0tPiAgICAgICAgICAgIA0KICAgICAgICA8ZGl2IGNsYXNzPSJwcmltYXJ5LWJ0biIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+DQogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1jaGFuZ2UiIG9uY2xpY2s9ImNoYW5nZUVtYWlsKCkiPkNoYW5nZSBEYXRhIE1haWwgPGkgY2xhc3M9ImZhLXNvbGlkIGZhLWVudmVsb3BlIj48L2k+PC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1jaGFuZ2UiIG9uY2xpY2s9ImNoYW5nZU5hbWUoKSI+Q2hhbmdlIFJlc3VsdCBOYW1lIDxpIGNsYXNzPSJmYS1zb2xpZCBmYS1zaWduYXR1cmUiPjwvaT48L2J1dHRvbj48YnI+DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tY2hhbmdlIiBvbmNsaWNrPSJjaGFuZ2VDaGF0KCkiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgbGVmdDogNTAlOw0KICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO21hcmdpbjo0cHggMCI+Q2hhbmdlIENoYXQgSUQgPGkgY2xhc3M9ImZhLXNvbGlkIGZhLW1lc3NhZ2UtYm90Ij48L2k+PC9idXR0b24+DQogICAgPC9kaXY+DQogICAgPGJyPg0KDQogICAgICAgICAgICA8IS0tIFNFQ09OREFSWSBCVVRUT04gLS0+DQogICAgICAgIDxkaXYgY2xhc3M9InNlY29uZGFyeS1idG4iIHN0eWxlPSJkaXNwbGF5OiBub25lOyBtYXJnaW4tdG9wOiAtMjBweDsiPg0KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tY2hhbmdlIiBvbmNsaWNrPSJjaGFuZ2VCYW5uZXIoKSI+Q2hhbmdlIFdlYiBEZXNpZ24gPGkgY2xhc3M9ImZhLWR1b3RvbmUgZmEtc2lnbi1wb3N0cyI+PC9pPjwvYnV0dG9uPg0KDQogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1jaGFuZ2UiIG9uY2xpY2s9ImNoYW5nZUJvdCgpIj5DaGFuZ2UgQm90IFRva2VuIDxpIGNsYXNzPSJmYS1icmFuZHMgZmEtYm90cyBmYS1mdyI+PC9pPg0KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj48YnI+DQoNCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWNoYW5nZSIgb25jbGljaz0iY2hhbmdlUGFzcygpIiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOw0KICAgIGxlZnQ6IDUwJTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTttYXJnaW46NHB4IDAiPkNoYW5nZSBQYW5lbCBQYXNzc3dvcmQgPGkgY2xhc3M9ImZhLWR1b3RvbmUgZmEta2V5Ij48L2k+PC9idXR0b24+DQogICAgIDxicj4NCiAgICA8L2Rpdj4NCiAgICA8YnI+DQogICAgPGJ1dHRvbiBjbGFzcz0ic2hvdy1zZWMiIGlkPSJidG4iIG9uY2xpY2s9InNob3dTZWNvbmRhcnkoKSIgc3R5bGU9IndpZHRoOiA4MCU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7Ij5TaG93IE1vcmU8L2J1dHRvbj4NCiAgICA8YnV0dG9uIGNsYXNzPSJzaG93LXNlYyIgaWQ9ImJ0bjIiIG9uY2xpY2s9InNob3dTZWNvbmRhcnkoKSIgc3R5bGU9IndpZHRoOiA4MCU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7Ij5TaG93IE1vcmU8L2J1dHRvbj4NCiAgICA8YnI+DQogICAgPGJ1dHRvbiBjbGFzcz0iaGlkZS1zZWMiIGlkPSJidG4iIG9uY2xpY2s9ImdvQmFjaygpIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgd2lkdGg6IDgwJTsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsiPlNob3cgTGVzczwvYnV0dG9uPg0KICAgIDxidXR0b24gY2xhc3M9ImhpZGUtc2VjIiBpZD0iYnRuMiIgb25jbGljaz0iZ29CYWNrKCkiIHN0eWxlPSJkaXNwbGF5OiBub25lOyB3aWR0aDogODAlOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOyI+U2hvdyBMZXNzPC9idXR0b24+DQogICAgPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYnRuLWxvZ291dCIgb25jbGljaz0ibG9nb3V0KCkiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IGxlZnQ6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7IG1hcmdpbjogNHB4IDAiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1yaWdodC1mcm9tLWJyYWNrZXQiPjwvaT4gTG9nb3V0PC9idXR0b24+DQoNCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVscCI+DQogICAgICAgICAgICA8cD5OZWVkIEhlbHA/IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJG93bmVyID8+Ij5DT05UQUNUIEhFUkU8L2E+PC9wPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KPC9ib2R5Pg0KDQo8L2h0bWw+DQoNCjxzY3JpcHQ+DQogICAgZW1haWxDaGFuZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW1haWxVcGRhdGUnKTsNCiAgICBjaGF0Q2hhbmdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXRVcGRhdGUnKTsNCiAgICBuYW1lQ2hhbmdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hbWVVcGRhdGUnKTsNCiAgICBzZW5kZXJDaGFuZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VuZGVyVXBkYXRlJyk7DQogICAgb2xkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29sZCcpOw0KICAgIHBhc3N3b3JkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bhc3NVcGRhdGUnKTsNCiAgICBib3RDaGFuZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm90VXBkYXRlJyk7DQogICAgYmFubmVyQ2hhbmdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jhbm5lclVwZGF0ZScpOw0KDQogICAgDQogICAgZnVuY3Rpb24gY2hhbmdlRW1haWwoKXsNCiAgICAgICAgZW1haWxDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7DQogICAgICAgIGNoYXRDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgb2xkLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIHNlbmRlckNoYW5nZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBuYW1lQ2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIHBhc3N3b3JkLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIGJhbm5lckNoYW5nZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBib3RDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICB9DQogICAgZnVuY3Rpb24gY2hhbmdlQ2hhdCgpew0KICAgICAgICBlbWFpbENoYW5nZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBjaGF0Q2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOw0KICAgICAgICBvbGQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgc2VuZGVyQ2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIG5hbWVDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgcGFzc3dvcmQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgYmFubmVyQ2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIGJvdENoYW5nZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgIH0NCiAgICBmdW5jdGlvbiBjaGFuZ2VOYW1lKCl7DQogICAgICAgIGVtYWlsQ2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIGNoYXRDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgb2xkLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIG5hbWVDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7DQogICAgICAgIHNlbmRlckNoYW5nZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBwYXNzd29yZC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBiYW5uZXJDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgYm90Q2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgfQ0KICAgIGZ1bmN0aW9uIGNoYW5nZVNlbmRlcigpew0KICAgICAgICBlbWFpbENoYW5nZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBjaGF0Q2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIG9sZC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBuYW1lQ2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIHNlbmRlckNoYW5nZS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCiAgICAgICAgcGFzc3dvcmQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgYmFubmVyQ2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIGJvdENoYW5nZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgIH0NCiAgICBmdW5jdGlvbiBjaGFuZ2VQYXNzKCl7DQogICAgICAgIGVtYWlsQ2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIGNoYXRDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgb2xkLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIG5hbWVDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgc2VuZGVyQ2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIHBhc3N3b3JkLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOw0KICAgICAgICBiYW5uZXJDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgYm90Q2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgfQ0KICAgIGZ1bmN0aW9uIGNoYW5nZUJhbm5lcigpew0KICAgICAgICBlbWFpbENoYW5nZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBjaGF0Q2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIG9sZC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBuYW1lQ2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIHNlbmRlckNoYW5nZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBwYXNzd29yZC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBiYW5uZXJDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7DQogICAgICAgIGJvdENoYW5nZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgIH0NCiAgICBmdW5jdGlvbiBjaGFuZ2VCb3QoKXsNCiAgICAgICAgYm90Q2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOw0KICAgICAgICBjaGF0Q2hhbmdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIG9sZC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBzZW5kZXJDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgbmFtZUNoYW5nZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBwYXNzd29yZC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBiYW5uZXJDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgZW1haWxDaGFuZ2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBsb2dvdXQoKSB7DQogICAgICAgIC8vIFNlbmQgYW4gQUpBWCByZXF1ZXN0IHRvIGRlc3Ryb3kgdGhlIHNlc3Npb24NCiAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOw0KICAgICAgICB4aHIub3BlbignR0VUJywgJ2xvZ291dC5waHAnLCB0cnVlKTsNCiAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT0gMjAwKSB7DQogICAgICAgICAgICAgICAgLy8gUmVkaXJlY3QgdG8gbG9naW4gcGFnZQ0KICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJzw/cGhwIGVjaG8gJGxvY2F0aW9uID8+JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfTsNCiAgICAgICAgeGhyLnNlbmQoKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBzaG93U2Vjb25kYXJ5KCkgew0KICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnByaW1hcnktYnRuJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWNvbmRhcnktYnRuJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2hvdy1zZWMnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhpZGUtc2VjJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAgICAgIH0NCiAgICAgICAgZnVuY3Rpb24gZ29CYWNrKCkgew0KICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnByaW1hcnktYnRuJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2Vjb25kYXJ5LWJ0bicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2hvdy1zZWMnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oaWRlLXNlYycpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgICAgIH0NCjwvc2NyaXB0Pg==")); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 67d94b6c0a5edc5d0d4c2886f907445c
Eval Count 1
Decode Time 57 ms