Nicolas Le Gland


<?php
    // Static configuration for the site
    $g_sSiteDomain = 'www.nicolas.legland.fr';
    $g_sSiteZone = 'legland.fr';
    // Runtime configuration for this execution
    date_default_timezone_set​('UTC')​;
    $g_fRequestTime = microtime​(true)​;
    $g_iRequestTime = ​(int)​​($g_fRequestTime)​;
    $g_sSiteDirectory = dirname​(__FILE__)​;
    // Dynamic configuration that depend on the request
    $g_bAgentApple = false;
    $g_bAgentDeveloper = false;
    $g_bAgentMobile = false;
    $g_bAgentText = false;
    $g_bAgentValidator = false;
    $g_bRequestEncryption = false;
    $g_sRequestPath = '/';
    $g_sRequestProtocol = 'http://';
    $g_bRequestRedirection = false;
    if ​(is_array​($_SERVER)​)
    {
        // Parse agent
        if ​(true
            && array_key_exists​('HTTP_USER_AGENT', $_SERVER)
            && is_string​($_SERVER​['HTTP_USER_AGENT']​)
        )
        {
            // Apple device
            $g_bAgentApple =
            ​(false
                ||  is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            'iPad'             )​)
                ||  is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            'iPod'             )​)
                ||  is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            'iPhone'           )​)
            )​;
            // Crawler bot
            $g_bAgentCrawler =
            ​(false
                ||                   ​($_SERVER​['HTTP_USER_AGENT']​         === 'Site Analyzer'    )
                ||                   ​($_SERVER​['HTTP_USER_AGENT']​         === 'SiteAnalyzerBot'  )
            )​;
            // Parse host
            if ​(true
                && array_key_exists​('REMOTE_ADDR', $_SERVER)
                && is_string​($_SERVER​['REMOTE_ADDR']​)
            )
            {
                // Developer mode
                $g_bAgentDeveloper =
                ​(​(true
                    )​ && ​(false
                        || ​('93.19.181.11' === $_SERVER​['REMOTE_ADDR']​)
                        || ​('185.84.18.22' === $_SERVER​['REMOTE_ADDR']​)
                    )​ && ​(false
                        ||           ​(substr​($_SERVER​['HTTP_USER_AGENT']​, 0, 41)​ === 'Mozilla/5.0 ​(Windows NT 10.0; Win64; x64)​')
                        || is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            'iPad'                               )​)
                        || is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            'iPhone'                             )​)
                    )
                )​;
            }
            // Legacy browser
            $g_bAgentLegacy =
            ​(true
                &&  is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            'Mozilla/4.'       )​)
                && !is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            '​(compatible;'     )​)
            )​;
            // Mobile device
            $g_bAgentMobile =
            ​(false
                ||  is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            'iPod'             )​)
                ||  is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            'iPhone'           )​)
            )​;
            // Text browser
            $g_bAgentText =
            ​(false
                ||                   ​($_SERVER​['HTTP_USER_AGENT']​         === 'Links'            )
                ||            ​(substr​($_SERVER​['HTTP_USER_AGENT']​, 0,  9)​ === 'edbrowse/'        )
                ||            ​(substr​($_SERVER​['HTTP_USER_AGENT']​, 0,  5)​ === 'Lynx/'            )
                ||            ​(substr​($_SERVER​['HTTP_USER_AGENT']​, 0,  7)​ === 'ELinks/'          )
                ||            ​(substr​($_SERVER​['HTTP_USER_AGENT']​, 0,  7)​ === 'Links ​('          )
                ||            ​(substr​($_SERVER​['HTTP_USER_AGENT']​, 0,  7)​ === 'retawq/'          )
                ||            ​(substr​($_SERVER​['HTTP_USER_AGENT']​, 0, 12)​ === 'W3CLineMode/'     )
                ||            ​(substr​($_SERVER​['HTTP_USER_AGENT']​, 0,  4)​ === 'w3m/'             )
                ||  is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            '​(text)​'           )​)
                ||  is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            '​(textmode'        )​)
            )​;
            // HTML validator
            $g_bAgentValidator =
            ​(false
                ||  is_integer​(strpos​($_SERVER​['HTTP_USER_AGENT']​,            'validator.w3.org' )​)
            )​;
        }
        // Parse location
        if ​(true
            && array_key_exists​('REQUEST_URI', $_SERVER)
            && is_string​($_SERVER​['REQUEST_URI']​)
            && ​('' !== $_SERVER​['REQUEST_URI']​)
        )
        {
            // Location
            $g_sRequestPath = $_SERVER​['REQUEST_URI']​;
        }
        // Parse protocol
        if ​(​(false
            )​ || ​(true
                && array_key_exists​('REQUEST_SCHEME', $_SERVER)
                && ​('https' === $_SERVER​['REQUEST_SCHEME']​)
            )​ || ​(true
                && array_key_exists​('HTTPS',          $_SERVER)
                && ​('off'   !== $_SERVER​['HTTPS']​)
            )
        )
        {
            // Encrypted protocol
            $g_bRequestEncryption = true;
            $g_sRequestProtocol = 'https://';
        }
        // Parse redirection
        if ​(true
            && array_key_exists​('REDIRECT_URL', $_SERVER)
            && is_string​($_SERVER​['REDIRECT_URL']​)
            && ​('' !== $_SERVER​['REDIRECT_URL']​)
        )
        {
            // Redirection
            $g_sRequestPath = $_SERVER​['REDIRECT_URL']​;
            $g_bRequestRedirection = true;
        }
        // Parse time
        if ​(true
            && array_key_exists​('REQUEST_TIME', $_SERVER)
            && is_integer​($_SERVER​['REQUEST_TIME']​)
        )
        {
            // Time
            $g_iRequestTime = $_SERVER​['REQUEST_TIME']​;
        }
        // Parse time
        if ​(true
            && array_key_exists​('REQUEST_TIME_FLOAT', $_SERVER)
            && is_float​($_SERVER​['REQUEST_TIME_FLOAT']​)
        )
        {
            // Time
            $g_fRequestTime = $_SERVER​['REQUEST_TIME_FLOAT']​;
        }
    }
    $g_bRequestSource = ​('/index.php' === $g_sRequestPath)​;
    $g_sResponsePath = $g_sSiteDirectory.str_replace​('/', DIRECTORY_SEPARATOR, $g_sRequestPath)​;
    $g_sSiteAbsolute = $g_sRequestProtocol.$g_sSiteDomain.'/';
    $g_sSiteRelative = '';
    // Download a remote URL and cache it as a local file for a given duration
    function gCache​($a_sUrl, $a_sFile, $a_iDuration)
    {
        // Validate cache
        if ​(false
            || !is_file​($a_sFile)
            || ​(filemtime​($a_sFile)​ + $a_iDuration < time​()​)
        )
        {
            // Check wrapper
            if ​(in_array​('https', stream_get_wrappers​()​)​)
            {
                // Download over HTTPS
                $l_sUrl = 'https://'.$a_sUrl;
            }
            else
            {
                // Download over HTTP
                $l_sUrl = 'http://'.$a_sUrl;
            }
            // Find certificate
            $l_sRoot = ini_get​('curl.cainfo')​;
            if ​(!​(true
                && is_string​($l_sRoot)
                && is_file​($l_sRoot)
                && is_readable​($l_sRoot)
            )​)
            {
                $l_sRoot = '/usr/local/share/certs/ca-root-nss.crt';
            }
            // Download file
            $l_sContent = file_get_contents​($l_sUrl, false, stream_context_create​(array
            ​(
                'ssl' => array
                ​(
                    'cafile' => $l_sRoot,
                )​,
            )​)​)​;
            if ​(true
                && is_string​($l_sContent)
                && ​('' !== $l_sContent)
            )
            {
                file_put_contents​($a_sFile, $l_sContent)​;
            }
        }
    }
    // Output HTML body tag
    function gBody​($a_bIndex = true)
    {
        // Import global
        global $g_bAgentValidator;
        // Body
        echo '<body';
        if ​(true !== $a_bIndex)
        {
            // Class
            echo ' class="robots-nocontent"';
        }
        if ​(true !== $g_bAgentValidator)
        {
            // Margin
            echo ' hspace="0"';
        }
        echo ' itemscope="itemscope" itemtype="http://schema.org/WebPage"';
        if ​(true !== $g_bAgentValidator)
        {
            // Margin
            echo ' leftmargin="0" marginheight="0" marginwidth="0" topmargin="0" vspace="0"';
        }
        if ​(true === $a_bIndex)
        {
            echo '
        >';
        }
        else
        {
            echo '><!--googleoff: all--><!--noindex--><!--
        -->';
        }
    }
    // Output HTML header
    function gHead​($a_bIndex = true, $a_sDescription = 'Research&nbsp;engineer at Nintendo European&nbsp;Research&nbsp;and&nbsp;Development', $a_sKeyword = 'nicolas,​legland', $a_sTitle = 'Nicolas Le&nbsp;Gland', $a_sTitleShort = 'Nicolas')
    {
        // Import global
        global $g_bAgentCrawler, $g_bAgentDeveloper, $g_bAgentMobile, $g_bAgentValidator, $g_sSiteAbsolute, $g_sSiteDomain, $g_sSiteRelative;
        // Filter argument
        $l_sDescription = htmlentities​(html_entity_decode​($a_sDescription)​)​;
        $l_sKeyword = htmlentities​(html_entity_decode​($a_sKeyword)​)​;
        $l_sTitle = htmlentities​(html_entity_decode​($a_sTitle)​)​;
        $l_sTitleShort = htmlentities​(html_entity_decode​($a_sTitleShort)​)​;
        // Determine line ending
        if ​(true !== $g_bAgentCrawler)
        {
            // Tweak HTML head so that stripping tags produces an empty string
            $l_sEmpty = '
        />';
            $l_sEnd = '
         >';
        }
        else
        {
            // Favor meta-data indexing in case of broken crawler bots parsing
            $l_sEmpty = ' />
        ';
            $l_sEnd = '>
        ';
        }
        // Description
        echo
'<!DOCTYPE html
><html dir="ltr" lang="en"';
        // Application cache
        if ​(​(true !== $g_bAgentDeveloper)​ && ​(true !== $g_bAgentValidator)​)
        {
            echo ' manifest="', $g_sSiteRelative, 'index.appcache"';
        }
        // OpenGraph namespace
        if ​(true !== $g_bAgentValidator)
        {
            echo ' xmlns:og="http://ogp.me/ns#"';
        }
        echo
'
    ><head', $l_sEnd,
        '<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"', $l_sEmpty,
        '<title>', $l_sTitle, '</title', $l_sEnd;
        // Test index
        if ​(true === $a_bIndex)
        {
            // Generate meta-data
            echo
        '<meta content="Nicolas Le&nbsp;Gland" name="author"', $l_sEmpty,
        '<meta content="', $l_sKeyword, '" name="keywords"', $l_sEmpty,
        '<meta content="', $l_sDescription, '" name="description"', $l_sEmpty;
            // Description for OpenGraph
            echo
        '<meta content="', $l_sDescription, '" property="og:description"', $l_sEmpty,
        '<meta content="', $l_sTitle, '" property="og:title"', $l_sEmpty,
        '<meta content="website" property="og:type"', $l_sEmpty,
        '<meta content="', $g_sSiteAbsolute, '" property="og:url"', $l_sEmpty,
        '<meta content="', $g_sSiteAbsolute, 'photo.jpg" property="og:image"', $l_sEmpty,
        '<meta content="http://', $g_sSiteDomain, '/photo.jpg" property="og:image:url"', $l_sEmpty,
        '<meta content="https://', $g_sSiteDomain, '/photo.jpg" property="og:image:secure_url"', $l_sEmpty,
        '<meta content="image/jpeg" property="og:image:type"', $l_sEmpty,
        '<meta content="256" property="og:image:width"', $l_sEmpty,
        '<meta content="256" property="og:image:height"', $l_sEmpty;
            // Description for Twitter
            echo
        '<meta content="summary" name="twitter:card"', $l_sEmpty,
        '<meta content="nicolaslegland" name="twitter:site"', $l_sEmpty,
        '<meta content="', $l_sTitle, '" name="twitter:title"', $l_sEmpty,
        '<meta content="', $l_sDescription, '" name="twitter:description"', $l_sEmpty,
        '<meta content="', $g_sSiteAbsolute, 'photo.jpg" name="twitter:image:src"', $l_sEmpty,
        '<meta content="', $g_sSiteDomain, '" name="twitter:domain"', $l_sEmpty;
        }
        else
        {
            // Prevent index
            echo
        '<meta content="noarchive,​ noindex,​ noodp,​ noydir" name="googlebot"', $l_sEmpty;
            if ​(true !== $g_bAgentValidator)
            {
                echo
        '<meta content="noarchive,​ noindex,​ noodp,​ noydir" name="msnbot"', $l_sEmpty;
            }
            echo
        '<meta content="noarchive,​ noindex,​ noodp,​ noydir" name="robots"', $l_sEmpty,
        '<meta content="noarchive,​ noindex,​ noodp,​ noydir" name="slurp"', $l_sEmpty,
        '<meta content="noarchive,​ noindex,​ noodp,​ noydir" name="teoma"', $l_sEmpty;
        }
        // iOS capabilities
        echo
        '<meta content="yes" name="apple-mobile-web-app-capable"', $l_sEmpty,
        '<meta content="black" name="apple-mobile-web-app-status-bar-style"', $l_sEmpty,
        '<meta content="';
        if ​(true !== $g_bAgentMobile)
        {
            echo $l_sTitle;
        }
        else
        {
            echo $l_sTitleShort;
        }
        echo
        '" name="apple-mobile-web-app-title"', $l_sEmpty,
        '<meta content="telephone=no" name="format-detection"', $l_sEmpty,
        '<meta content="width=device-width,​ initial-scale=1,​ maximum-scale=1,​ user-scalable=0" name="viewport"', $l_sEmpty;
        // Windows Phone capabilities
        echo
        '<meta content="', $l_sTitleShort, '" name="application-name"', $l_sEmpty;
        // Meta-data
        echo
        '<link href="', $g_sSiteAbsolute, '" rel="canonical"', $l_sEmpty;
        // Favicon
        echo
        '<link href="favicon-192x192.png" rel="icon" sizes="192x192" type="image/png"', $l_sEmpty,
        '<link href="favicon-160x160.png" rel="icon" sizes="160x160" type="image/png"', $l_sEmpty,
        '<link href="favicon-96x96.png" rel="icon" sizes="96x96" type="image/png"', $l_sEmpty,
        '<link href="favicon-32x32.png" rel="icon" sizes="32x32" type="image/png"', $l_sEmpty,
        '<link href="favicon-16x16.png" rel="icon" sizes="16x16" type="image/png"', $l_sEmpty;
        // Favicon for iOS
        echo
        '<link href="apple-touch-icon-180x180.png" rel="apple-touch-icon" sizes="180x180"', $l_sEmpty,
        '<link href="apple-touch-icon-152x152.png" rel="apple-touch-icon" sizes="152x152"', $l_sEmpty,
        '<link href="apple-touch-icon-144x144.png" rel="apple-touch-icon" sizes="144x144"', $l_sEmpty,
        '<link href="apple-touch-icon-120x120.png" rel="apple-touch-icon" sizes="120x120"', $l_sEmpty,
        '<link href="apple-touch-icon-114x114.png" rel="apple-touch-icon" sizes="114x114"', $l_sEmpty,
        '<link href="apple-touch-icon-76x76.png" rel="apple-touch-icon" sizes="76x76"', $l_sEmpty,
        '<link href="apple-touch-icon-72x72.png" rel="apple-touch-icon" sizes="72x72"', $l_sEmpty,
        '<link href="apple-touch-icon-60x60.png" rel="apple-touch-icon" sizes="60x60"', $l_sEmpty,
        '<link href="apple-touch-icon-57x57.png" rel="apple-touch-icon" sizes="57x57"', $l_sEmpty;
        // Favicon for Windows Phone
        echo
        '<meta content="#ffffff" name="msapplication-TileColor"', $l_sEmpty,
        '<meta content="mstile-144x144.png" name="msapplication-TileImage"', $l_sEmpty;
    }
    // Output a text file as HTML content
    function gHtml​($a_sFile)
    {
        // Import global
        global $g_sSiteDirectory;
        // Parse file
        $l_sContent = str_replace​(array​("\r\n", "\r")​, "\n", file_get_contents​($a_sFile)​)​;
        // Check block type
        if ​(is_integer​(strpos​($l_sContent, '-----BEGIN PGP ARMORED FILE-----'."\n")​)​)
        {
            // Armored file
            $l_sDescription = 'OpenPGP ASCII&nbsp;armor,​ printable encoding scheme for binary data stream.';
            $l_sKeyword = 'armor,​ascii,​gnupg,​gpg,​openpgp,​pgp';
            $l_sTitle = 'ASCII armored file';
            $l_sTitleShort = 'ASCII armor';
        }
        else if ​(is_integer​(strpos​($l_sContent, '-----BEGIN PGP PUBLIC KEY BLOCK-----'."\n")​)​)
        {
            // Public key
            $l_sDescription = 'OpenPGP public&nbsp;key in ASCII&nbsp;armor,​ printable encoding scheme for binary data stream.';
            $l_sKeyword = 'block,​key,​gnupg,​gpg,​openpgp,​pgp,​public';
            $l_sTitle = 'Public key';
            $l_sTitleShort = 'Public key';
            // Check comment begin
            $l_iBegin = strpos​($l_sContent, "\n".'Comment: ')​;
            if ​(false !== $l_iBegin)
            {
                // Check comment end
                $l_iBegin += 10;
                $l_iEnd = strpos​($l_sContent, "\n", $l_iBegin)​;
                if ​(false !== $l_iEnd)
                {
                    // Read comment
                    $l_sDescription = trim​(substr​($l_sContent, $l_iBegin, $l_iEnd - $l_iBegin)​)​;
                    if ​(1 === preg_match​('/ ​[0-9 ]​+​[DRg]​\/​(​[0-9A-F]​{8})​​(?: ​[0-9]​{4}-​[0-1]​​[0-9]​-​[0-3]​​[0-9]​)​ /', ' '.$l_sDescription.' ', $l_a_sMatch)​)
                    {
                        // Extract key identifier
                        $l_sTitle = trim​($l_a_sMatch​[0]​)​;
                        $l_sTitleShort = '0x'.trim​($l_a_sMatch​[1]​)​;
                    }
                    else
                    {
                        // Use plain comment
                        $l_sTitle = $l_sDescription;
                        list​($l_sTitleShort)​ = explode​(' ', trim​($l_sDescription)​)​;
                    }
                }
            }
        }
        else if ​(is_integer​(strpos​($l_sContent, '-----BEGIN PGP SIGNED MESSAGE-----'."\n")​)​)
        {
            // Signed message
            $l_sDescription = 'OpenPGP signed&nbsp;message in ASCII&nbsp;armor,​ printable encoding scheme for binary data stream.';
            $l_sKeyword = 'gnupg,​gpg,​message,​openpgp,​pgp,​signed';
            $l_sTitle = 'Signed message';
            $l_sTitleShort = 'Message';
        }
        else
        {
            // Text file
            $l_sDescription = 'Plain text file.';
            $l_sKeyword = 'file,​plain,​text';
            $l_sTitle = 'Plain text file';
            $l_sTitleShort = 'Text file';
        }
        // Head
        gHead​(true, $l_sDescription, $l_sKeyword, $l_sTitle, $l_sTitleShort)​;
        echo
         '<style type="text/css"><!--
';
        gStyle​('text')​;
        echo
'       //--></style
    ></head
    >';
        // Body
        gBody​()​;
        echo
         '<textarea cols="77" onkeydown="return false" oncut="return false" rows="', substr_count​($l_sContent, "\n")​ + 1, '"
>', str_replace​("\n", '
', $l_sContent)​, '</textarea
    ></body
></html>';
    }
    // Format an icon link
    function gLink​($a_sIcon, $a_iPosition, $a_sText, $a_sHtml, $a_sUrl, $a_sSeparator)
    {
        // Import global
        global $g_bAgentLegacy, $g_bAgentValidator, $g_sSiteRelative;
        // Format output
        $r_sContent =
                                ' <span
                                class="icon"';
        if ​(true === $g_bAgentLegacy)
        {
            $r_sContent .= '><nobr';
        }
        $r_sContent .= '
                                    ><a href="'.$a_sUrl.'" itemprop="sameAs" rel="external me" title="'.$a_sText.'"
                                        ><img';
        if ​(true !== $g_bAgentValidator)
        {
            $r_sContent .= ' align="middle"';
        }
        $r_sContent .= ' alt="'.$a_sText.'"';
        if ​(true !== $g_bAgentValidator)
        {
            $r_sContent .= ' border="0"';
        }
        $r_sContent .= ' height="16" src="'.$g_sSiteRelative;
        if ​(true !== $g_bAgentLegacy)
        {
            $r_sContent .= 'icon.gif" style="background-position:0 -'.$a_iPosition.'px';
        }
        else
        {
            $r_sContent .= $a_sIcon;
        }
        $r_sContent .= '" width="16"';
        if ​(true !== $g_bAgentLegacy)
        {
            $r_sContent .= '
                                        />';
        }
        else
        {
            $r_sContent .= ' />
                                        ';
        }
        $r_sContent .=
                                        $a_sHtml.'</a
                                    >'.$a_sSeparator;
        if ​(true !== $g_bAgentLegacy)
        {
            $r_sContent .=
                                    '</span
                                >';
        }
        else
        {
            $r_sContent .=
                                    '</nobr
                                ></span>';
        }
        return $r_sContent;
    }
    // Return a MIME content type header
    function gMime​($a_sFile)
    {
        switch ​(substr​($a_sFile,​ -4)​)
        {
            case '.asc':
            case '.txt':
            {
                return 'text/plain;charset=utf-8';
            }
            case '.pgp':
            case '.gpg';
            {
                // https://tools.ietf.org/html/rfc4880#section-4.2
                $l_iTag = ord​(file_get_contents​($a_sFile, false, null, 0, 1)​)​;
                if ​(0x40 === ​($l_iTag & 0x40)​)
                {
                    // New format
                    $l_iType = $l_iTag & 0x3F;
                }
                else
                {
                    // Old format
                    $l_iType = ​($l_iTag & 0x3C)​ >> 2;
                }
                // https://tools.ietf.org/html/rfc4880#section-4.3
                switch ​($l_iType)
                {
                    case 1: // Session key,​ encrypted with public key
                    case 3: // Session key,​ encrypted with symmetric key
                    {
                        return 'application/pgp-encrypted';
                    }
                    case 5: // Secret key
                    case 6: // Public key
                    {
                        return 'application/pgp-keys';
                    }
                    case 2: // Signature
                    case 4: // Signature,​ prepended for one-pass
                    {
                        return 'application/pgp-signature';
                    }
                }
                break;
            }
            case '.url':
            {
                return 'text/x-url';
            }
        }
        return 'application/octet-stream';
    }
    // Output a HTTP redirection
    function gRedirect​($a_sUrl = null)
    {
        // Check argument
        if ​(null === $a_sUrl)
        {
            // Import global
            global $g_sSiteAbsolute;
            $a_sUrl = $g_sSiteAbsolute;
        }
        // Header
        header​('Cache-Control: max-age=604800,​ public')​;
        header​('Content-Language: en')​;
        header​('Content-Type: text/html;charset=utf-8')​;
        header​('Location: '.$a_sUrl)​;
        // Head
        gHead​()​;
        echo
         '<script nonce="inline/head" type="text/javascript"><!--
        //<!​[CDATA​[
top.location.href = \'', $a_sUrl, '\';
        //]​]​>
        //--></script
    ></head
    >';
        // Body
        gBody​()​;
        echo '<h1
        >Nicolas Le&nbsp;Gland</h1><a
        href="', $a_sUrl, '">', $a_sUrl, '</a
    ></body
></html>';
    }
    // Output a PHP file as HTML content
    function gSource​($a_sFile)
    {
        // Page content
        echo
'           <tbody class="code">
';
        // Plain text substitution on file content
        $l_h_sTextMap = array
        ​(
            "\r\n" => "\n",
            "\r" => "\n",
            "\n'\t" => "\n'   ",
        )​;
        // HTML substitution on highlighted string
        $l_h_sHtmlMap = array
        ​(
            '&nbsp;' => ' ',
        )​;
        foreach ​(array
        ​(
            'b70' => 'comment',
            '00b' => 'default',
            'bbb' => 'html',
            '070' => 'keyword',
            '777' => 'string',
        )
        as $l_sColor => $l_sClass)
        {
            $l_sColor = '#'.$l_sColor;
            ini_set​('highlight.'.$l_sClass, $l_sColor)​;
            $l_h_sHtmlMap​[' style="color: '.$l_sColor.'"']​ = ' class="'.$l_sClass.'"';
        }
        // Regular expression substitution on line
        $l_h_sPatternMap = array
        ​(
            // Move spaces out of block
            '/​( +)​<\/span>/' => '</span>\1',
            '/​(<span class="​[^"]​+">)​​( +)​/' => '\2\1',
            // Remove empty blocks
            '/<span class="​[^"]​+"><\/span>/' => '',
        )​;
        // Insert breakable space
        $l_sSpace = '&#8203;';
        $l_h_sSpaceMap = array
        ​(
            '​[' => $l_sSpace.'​[',
            ']​' => ']​'.$l_sSpace,
            '​(' => $l_sSpace.'​(',
            ')​' => ')​'.$l_sSpace,
            ',​' => ',​'.$l_sSpace,
            $l_sSpace.'</span>' => '</span>',
            '  ' => '&nbsp; ',
            '&nbsp;  ' => '&nbsp; &nbsp;',
        )​;
        // Loop through file line list
        $l_sBlock = null;
        foreach ​(explode​('<br />', preg_replace​(array_keys​($l_h_sPatternMap)​, array_values​($l_h_sPatternMap)​, str_replace​(array_keys​($l_h_sHtmlMap)​, array_values​($l_h_sHtmlMap)​, substr​(highlight_string​(str_replace​(array_keys​($l_h_sTextMap)​, array_values​($l_h_sTextMap)​, file_get_contents​($a_sFile)​)​, true)​, 33,​ -16)​)​)​)​ as $l_iLine => $l_sLine)
        {
            // Check split block
            if ​('</span>' === substr​($l_sLine, 0, 7)​)
            {
                // Remove split block
                $l_sLine = substr​($l_sLine, 7)​;
                $l_sBlock = null;
            }
            // Check pending block
            if ​(null !== $l_sBlock)
            {
                // Reopen split block
                $l_sLine = $l_sBlock.$l_sLine;
                $l_sBlock = null;
            }
            // Compare block begin and end
            if ​(substr_count​($l_sLine, '</span>')​ < substr_count​($l_sLine, '<span ')​)
            {
                // Close last block
                $l_sLine .= '</span>';
                $l_sBlock = substr​($l_sLine, strrpos​($l_sLine, '<span class="')​)​;
                $l_sBlock = substr​($l_sBlock, 0, strpos​($l_sBlock, '>')​ + 1)​;
            }
            // Allow line break and preserve spaces outside of block
            echo
'               <tr
                    ><td class="line" value="',​ ​($l_iLine + 1)​, '"></td
                    ><td>', str_replace​(array_keys​($l_h_sSpaceMap)​, array_values​($l_h_sSpaceMap)​, preg_replace​(array_keys​($l_h_sPatternMap)​, array_values​($l_h_sPatternMap)​, $l_sLine)​)​, '</td
                ></tr>
';
        }
    }
    // Inline CSS
    function gStyle​($a_sName)
    {
        global $g_sSiteDirectory;
        readfile​($g_sSiteDirectory.DIRECTORY_SEPARATOR.$a_sName.'.css')​;
        echo '
';
    }
    // Direct access
    if ​(true !== $g_bRequestRedirection)
    {
        // Header
        header​('Cache-Control: max-age=3600,​ public')​;
        header​('Content-Language: en')​;
        header​('Content-Type: text/html;charset=utf-8')​;
        // Head
        gHead​(true !== $g_bRequestSource)​;
        echo
         '<style type="text/css">
';
        gStyle​('reset')​;
        gStyle​('font')​;
        gStyle​('index')​;
        if ​(true === $g_bRequestSource)
        {
            gStyle​('code')​;
        }
        echo
'
        </style
        ><script nonce="inline/head" type="text/javascript"><!--
        //<!​[CDATA​[
if ​(top && top.location && window && window.location && ​(top.location !== window.location)​)
{
    top.location = window.location;
}
if ​(\'undefined\' != typeof​(document.write)​)
{
    if ​(false
        || ​(\'undefined\' == typeof​(document.createElement)​)
        || ​(\'undefined\' == typeof​(document.getElementsByTagName)​)
    )
    {
        document.write​(\'<link href="', $g_sSiteRelative, 'online.css" rel="stylesheet" type="text/css" />\')​;
    }
}
        //]​]​>
        //--></script
        ><noscript
            ><link href="', $g_sSiteRelative, 'online.css" rel="stylesheet" type="text/css"
        /></noscript
    ></head
    >';
        // Body
        gBody​(true !== $g_bRequestSource)​;
        // Page top
        echo '<table';
        if ​(true !== $g_bAgentValidator)
        {
            echo ' border="0" cellpadding="0" cellspacing="0"';
        }
        echo '
            ><thead
                ><tr
                    ><td';
        // PHP code
        if ​(true === $g_bRequestSource)
        {
            // Span line index and content
            echo
                    ' colspan="2"';
        }
        echo
                    '
                        ><header
                            ><h1>Nicolas Le&nbsp;Gland</h1
                            ><hr
                        /></header
                    ></td
                ></tr
            ></thead
            >';
        // HTML output
        if ​(true !== $g_bRequestSource)
        {
            // Page content
            echo
            '<tbody
                ><tr
                    ><td
                        ><div class="hidden"
                            ><div
                                >Author: <a href="https://plus.google.com/+nicolaslegland/about?rel=author" rel="external me author" title="Google+">Nicolas Le&nbsp;Gland</a
                            ></div
                            ><div
                                >Profile: <a href="https://plus.google.com/+nicolaslegland/about" rel="external me" title="Google+">Nicolas Le&nbsp;Gland</a
                            ></div
                            ><div
                                >Publisher: <a href="https://plus.google.com/+nicolaslegland/about?rel=publisher" rel="external me publisher" title="Google+">Nicolas Le&nbsp;Gland</a
                            ></div
                        ></div
                        ><div class="h-card hcard vcard" id="author" itemref="tel" itemprop="about accountablePerson author copyrightHolder creator editor provider reviewedBy translator" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Person"
                            ><a class="image" href="', $g_sSiteAbsolute, 'photo.png" title="Nicolas Le&nbsp;Gland"
                                ><img alt="Photo"';
            if ​(true !== $g_bAgentValidator)
            {
                echo ' border="0"';
            }
            echo
                                ' class="photo u-photo" height="256" itemprop="image" src="', $g_sSiteAbsolute, 'photo.jpg" title="Nicolas Le&nbsp;Gland" width="256"
                            /></a
                            ><div class="hidden"
                                ><span class="fn n p-name" itemprop="name"
                                    ><span class="given-name p-given-name">Nicolas</span
                                    > <span class="family-name p-family-name">Le&nbsp;Gland</span
                                ></span
                            ></div
                            ><div class="block"
                                ><div
                                    >&#12523;&#12464;&#12521;&#12531; &#12491;&#12467;&#12521;</div
                                ><div class="phonetic"
                                    >nik&#596;l&#593; l&#601; gl&#593;&#771;</div
                                ><div
                                    >&quot;<span class="nickname p-nickname" itemprop="alternateName"
                                        >Nescaf&eacute;</span
                                    >&quot;<span class="hidden" itemprop="memberOf" itemref="mail-other" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Organization"
                                        > on <a class="external" href="http://www.langochat.net/" itemprop="url" title="LangoChat.net"
                                            ><span content="LangoChat.net" itemprop="name" title="LangoChat.net">LangoChat</span
                                        ></a
                                    >.</span
                                ></div
                                ><div
                                    ><span class="title p-job-title" itemprop="jobTitle">Research&nbsp;engineer</span
                                    > at <span class="org p-org" itemprop="worksFor" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Corporation"
                                        ><span itemprop="brand" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Organization"
                                            ><a class="external" href="', $g_sRequestProtocol, 'www.nintendo.com/countryselector" itemprop="url" title="Nintendo"
                                                ><span class="organization-name p-organization-name" itemprop="name">Nintendo</span
                                            ></a
                                        ></span
                                        > <span itemprop="department" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Organization"
                                            ><a class="external" href="http://www.nerd.nintendo.com/" itemprop="url" title="Nintendo European&nbsp;Research&nbsp;and&nbsp;Development"
                                                ><span class="organization-unit p-organization-unit" content="Nintendo European&nbsp;Research&nbsp;and&nbsp;Development" itemprop="name">European&nbsp;Research&nbsp;and&nbsp;Development</span
                                            ></a
                                        ></span
                                    ></span
                                >.</div
                                ><div>I&nbsp;deal&nbsp;with the nuts&nbsp;and&nbsp;bolts,​ not the fancy&nbsp;stuff.</div
                                ><div
                                    >Born on <time class="bday dt-bday" itemprop="birthDate">1982-05-03</time
                                    > in <span itemprop="birthPlace" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Place"
                                        ><a class="external" href="http://en.wikipedia.org/wiki/Paris" itemprop="url" title="Wikip&acute;edia"
                                            ><span itemprop="name">Paris</span
                                        ></a
                                    ></span
                                    >,​&nbsp;<span itemprop="nationality" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Country"
                                        ><a class="external" href="http://en.wikipedia.org/wiki/France" itemprop="url" title="Wikip&acute;edia"
                                            ><span itemprop="name">France</span
                                        ></a
                                    ></span
                                >.</div
                            ></div
                            ><br
                            /><div class="adr h-addr p-adr" itemprop="homeLocation" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Place"
                                ><h2><span class="type">Home</span></h2
                                ><div itemprop="address" itemref="mail-home tel-home tel-home-fax" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/PostalAddress"
                                    ><div itemprop="streetAddress"
                                        ><span class="street-address p-street-address">268 boulevard <a
                                            class="external" href="https://en.wikipedia.org/wiki/Fran%C3%A7ois-Vincent_Raspail" title="Wikip&acute;edia">Raspail</a
                                        ></span
                                    ></div
                                    ><div
                                        ><span class="postal-code p-postal-code" itemprop="postalCode">75014</span
                                        > <span class="locality p-locality" itemprop="addressLocality">Paris</span
                                    ></div
                                    ><div class="country p-country-name" itemprop="addressCountry">France</div
                                ></div
                                >​(<span class="h-geo p-geo" itemprop="geo" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/GeoCoordinates"
                                      ><abbr class="latitude p-latitude"   content="48.836944" itemprop="latitude"  title="48.836944">48&deg;50\'13N</abbr
                                    >,​ <abbr class="longitude p-longitude" content= "2.331389" itemprop="longitude" title= "2.331389" >2&deg;19\'53E</abbr
                                ></span
                                >: <a class="external" href="https://www.google.com/maps/place/Nicolas+Le+Gland,​+268+boulevard+Raspail,​+75014+Paris,​+France/@48.836944,​2.331389,​100m/data=!3m2!1e3!4b1" title="Google Maps">map</a
                                >,​ <a class="external" href="https://www.google.com/maps/place/Nicolas+Le+Gland,​+268+boulevard+Raspail,​+75014+Paris,​+France/@48.836944,​2.331389,​3a,​75y,​277.46h,​108.25t/data=!3m6!1e1!3m4!1ss6FzZipX1Q3KCG9vYGh9YQ!2e0!7i16384!8i8192" title="Street View">view</a>,​ <a
                                class="external" href="https://www.facebook.com/nolwennnicolasmarianneetcorentin" title="Facebook">web</a
                            >)​</div
                            ><div class="adr h-addr p-adr" itemprop="workLocation" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Place"
                                ><h2><span class="type">Work</span></h2
                                ><div itemprop="address" itemref="mail-work tel-work tel-work-fax" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/PostalAddress"
                                    ><div itemprop="streetAddress"
                                        ><span class="extended-address p-extended-address">Nintendo European&nbsp;Research&nbsp;and&nbsp;Development</span
                                        >,​<div
                                            > <span class="street-address p-street-address"
                                                >128 <a class="external" href="http://en.wikipedia.org/wiki/Rue_de_Rivoli" title="Wikip&acute;edia">rue de Rivoli</a
                                            ></span
                                        ></div
                                    ></div
                                    ><div
                                        ><span class="postal-code p-postal-code" itemprop="postalCode">75001</span
                                        > <span class="locality p-locality" itemprop="addressLocality">Paris</span
                                    ></div
                                    ><div class="country p-country-name" itemprop="addressCountry">France</div
                                ></div
                                >​(<span class="geo h-geo p-geo u-geo" itemprop="geo" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/GeoCoordinates"
                                      ><abbr class="latitude p-latitude"   content="48.859875" itemprop="latitude"  title="48.859875">48&deg;51\'35N</abbr
                                    >,​ <abbr class="longitude p-longitude" content= "2.344615" itemprop="longitude" title= "2.344615" >2&deg;20\'41E</abbr
                                ></span
                                >: <a class="external" href="https://www.google.com/maps/place/Nintendo+European+Research+and+Development,​+128+rue+de+Rivoli,​+75001+Paris,​+France/@48.859875,​2.344615,​208m/data=!3m2!1e3!4b1!4m2!3m1!1s0x0:0x0" title="Google Maps">map</a
                                >,​ <a class="external" href="https://www.google.com/maps/place/Nintendo+European+Research+and+Development,​+128+rue+de+Rivoli,​+75001+Paris,​+France/@48.857,​2.347,​291a,​35y,​327.68h,​33.16t/data=!3m1!1e3!4m2!3m1!1s0x47e66e21df9d0b57:0x9f7905f200f1b593" title="Street View">view</a
                                >,​ <a class="external" href="http://www.nerd.nintendo.com/" title="Nintendo European&nbsp;Research&nbsp;and&nbsp;Development">web</a
                            >)​</div
                            ><br
                            /><div class="block"
                                ><h2>Mail</h2
                                ><div itemscope="itemscope" itemtype="http://schema.org/PostalAddress"
                                    >Home: <a class="email u-email" content="nicolas@legland.fr" href="mailto:nicolas@legland.fr" id="mail-home" itemprop="email" rel="me" title="Nicolas Le&nbsp;Gland &lt;nicolas@legland.fr&gt;">nicolas@legland.fr</a><span class="hidden"> ​(<span class="type">pref</span>erred)​</span
                                ></div
                                ><div itemscope="itemscope" itemtype="http://schema.org/PostalAddress"
                                    >Work: <a class="email u-email" content="nicolas.legland@nerd.nintendo.com" href="mailto:nicolas.legland@nerd.nintendo.com" id="mail-work" itemprop="email" rel="me" title="Nicolas Le&nbsp;Gland &lt;nicolas.legland@nerd.nintendo.com&gt;">nicolas.legland@nerd.nintendo.com</a
                                ></div
                                ><div itemscope="itemscope" itemtype="http://schema.org/PostalAddress"
                                    >Other: <a class="email u-email" content="nescafe@0x00ff00ff.com" href="mailto:nescafe@0x00ff00ff.com" id="mail-other" itemprop="email" rel="me" title="Nicolas &quot;Nescaf&eacute;&quot; Le&nbsp;Gland &lt;nescafe@0x00ff00ff.com&gt;">nescafe@0x00ff00ff.com</a
                                ></div
                            ></div
                            ><div class="block"
                                ><h2>Phone</h2
                                ><div class="tel p-tel pref" itemscope="itemscope" itemtype="http://schema.org/PostalAddress"
                                    ><span class="type">Cell</span
                                    >: <a content="+33663250582" href="tel:+33663250582" id="tel" itemprop="telephone" title="Call"><span class="value"
                                        >+33</span>&nbsp;<span class="value"
                                          >6</span>&nbsp;<span class="value"
                                         >63</span>&nbsp;<span class="value"
                                         >25</span>&nbsp;<span class="value"
                                         >05</span>&nbsp;<span class="value"
                                         >82</span
                                    ></a
                                    > ​(<a class="apple" href="facetime:+33663250582" title="Facetime">facetime</a><span class="osx"
                                        >,​ <a href="imessage:+33663250582" title="iMessage">imessage</a
                                    ></span
                                    >';
            if ​(true !== $g_bAgentText)
            {
                echo
                                    '<span class="ios"
                                        >,​ <a href="sms:+33663250582" title="iMessage">imessage</a
                                    ></span
                                    >';
            }
            echo
                                    '<span class="hidden">,​ </span
                                    ><a class="not-apple" href="sms:+33663250582" title="SMS">sms</a
                                    ><span class="hidden"
                                        >,​ <span class="type">pref</span
                                    >erred</span
                                >)​</div
                                ><div class="tel p-tel" itemscope="itemscope" itemtype="http://schema.org/PostalAddress"
                                    ><span class="type">Home</span
                                    >: <a content="+33950527514" href="tel:+33950527514" id="tel-home" itemprop="telephone" title="Call"><span class="value"
                                        >+33</span>&nbsp;<span class="value"
                                          >9</span>&nbsp;<span class="value"
                                         >50</span>&nbsp;<span class="value"
                                         >52</span>&nbsp;<span class="value"
                                         >75</span>&nbsp;<span class="value"
                                         >14</span
                                    ></a
                                ></div
                                ><div class="tel p-tel-fax" itemscope="itemscope" itemtype="http://schema.org/PostalAddress"
                                    ><span class="type">Home</span>&nbsp;<span class="type">fax</span
                                    >: <a content="+33955527514" href="fax:+33955527514" id="tel-home-fax" itemprop="faxNumber" title="Fax"><span class="value"
                                        >+33</span>&nbsp;<span class="value"
                                          >9</span>&nbsp;<span class="value"
                                         >55</span>&nbsp;<span class="value"
                                         >52</span>&nbsp;<span class="value"
                                         >75</span>&nbsp;<span class="value"
                                         >14</span
                                    ></a
                                ></div
                                ><div class="tel p-tel" itemscope="itemscope" itemtype="http://schema.org/PostalAddress"
                                    ><span class="type">Work</span
                                    >: <a content="+33153300365" href="tel:+33153300365" id="tel-work" itemprop="telephone" title="Call"><span class="value"
                                        >+33</span>&nbsp;<span class="value"
                                          >1</span>&nbsp;<span class="value"
                                         >53</span>&nbsp;<span class="value"
                                         >30</span>&nbsp;<span class="value"
                                         >03</span>&nbsp;<span class="value"
                                         >65</span
                                    ></a
                                ></div
                                ><div class="tel p-tel-fax" itemscope="itemscope" itemtype="http://schema.org/PostalAddress"
                                    ><span class="type">Work</span>&nbsp;<span class="type">fax</span
                                    >: <a content="+33153300122" href="fax:+33153300122" id="tel-work-fax" itemprop="faxNumber" title="Fax"><span class="value"
                                        >+33</span>&nbsp;<span class="value"
                                          >1</span>&nbsp;<span class="value"
                                         >53</span>&nbsp;<span class="value"
                                         >30</span>&nbsp;<span class="value"
                                         >01</span>&nbsp;<span class="value"
                                         >22</span
                                    ></a
                                ></div
                            ></div
                            ><div class="block"
                                ><h2>Contact</h2
                                ><div
                                    >Friend: 3DS&nbsp;<a class="external" href="http://dsinparis.fr/les-codes-amis-3ds/" title="DS in Paris">2535-3634-5751</a>,​ Mario&nbsp;Run 0667-6690-1570,​ SW-0180-2477-2045</div
                                ><div
                                    >Geek: <a href="', $g_sSiteRelative, 'geekcode.txt" title="Geek code">GCC/CS/SS</a
                                    > ​(<a class="external" href="http://www.0x00ff00ff.com/geekcode/?url=', $g_sSiteAbsolute, 'geekcode.txt" title="0x00FF00FF">decode</a
                                >)​</div
                                ><div
                                    >PGP: <a class="external" href="http://pool.sks-keyservers.net:11371/pks/lookup?op=index&amp;search=0xB6D11647DBD59522670EB91FB4156B9700000000" title="SKS Keyservers">0x00000000</a
                                    > ​(<a href="', $g_sSiteRelative, 'public.asc" rel="me" title="ASCII armored GPG public key">armor</a
                                    >,​ <a href="', $g_sSiteRelative, 'public.gpg" rel="me" title="GPG public key">binary</a
                                    >,​ <a href="', $g_sSiteRelative, 'public.txt" title="GPG public key debug dump">dump</a
                                    >,​ <a class="external" href="http://pgp.cs.uu.nl/mk_path.cgi?STAT=0xB6D11647DBD59522670EB91FB4156B9700000000" title="GPG public key statistics">stat</a
                                >)​</div
>';
            if ​(true !== $g_bAgentText)
            {
                echo
                                '<div class="hidden"
                                    ><span class="key u-key"><span class="type">PGP</span>: <a class="value" href="', $g_sSiteAbsolute, 'public.asc" rel="me" title="GPG public key">', $g_sSiteAbsolute, 'public.asc</a></span
                                ></div
>';
            }
            echo
                                '<div
                                    >Web: <a class="u-uid url u-url" href="', $g_sSiteAbsolute, '" itemprop="url" rel="me" title="Nicolas Le&nbsp;Gland">', $g_sSiteDomain, '</a
                                    > ​(';
            if ​(true !== $g_bAgentText)
            {
                echo
                                    '<span class="ios"
                                        ><a href="', $g_sSiteRelative, 'ios.vcf" rel="me" title="vCard">card</a
                                    ></span
                                    ><span class="osx"
                                        ><a href="', $g_sSiteRelative, 'osx.vcf" rel="me" title="vCard">card</a
                                    ></span
                                    ><span class="not-apple"
                                        >';
            }
            echo
                                        '<a href="', $g_sSiteRelative, 'contact.vcf" rel="me" title="vCard">card</a';
            if ​(true !== $g_bAgentText)
            {
                echo '
                                    ></span';
            }
            echo
                                '>)​</div
                            ></div
                            ><div class="block"
                                ><h2>Profile</h2
                                ><img alt="Mii" class="u-logo" height="154" onerror="this.src=\'', $g_sSiteRelative, 'mii.gif\';" src="', $g_sSiteRelative, 'mii.png" title="Nicolas Le&nbsp;Gland" width="130"
                                /><div
                                    >You can find me on',
                                    gLink​('airbnb.gif', 0, 'Airbnb', 'Airbnb', 'https://www.airbnb.com/c/nicolasl764', ',​')​,
                                    gLink​('allocine.gif', 16, 'AlloCin&eacute;', 'AlloCin&eacute;', 'http://www.allocine.fr/membre-Z20100327134617803182754/', ',​')​,
                                    gLink​('amazon.gif', 32, 'Amazon.com', 'Amazon<span class="tld">.com</span>', 'https://www.amazon.com/hz/wishlist/ls/3KSU4I6Z9E7YH?type=wishlist&amp;filter=unpurchased&amp;sort=price-asc', ',​')​,
                                    gLink​('amazon.gif', 32, 'Amazon.fr', 'Amazon<span class="tld">.fr</span>', 'https://www.amazon.fr/hz/wishlist/ls/27ZKMKDLXPF6V?type=wishlist&amp;filter=unpurchased&amp;sort=price-asc', ',​')​,
                                    gLink​('badoo.gif', 48, 'Badoo', 'Badoo', $g_sRequestProtocol.'badoo.com/nescafe/', ',​')​,
                                    gLink​('bitly.gif', 64, 'Bitly', 'Bitly', 'https://bitly.com/u/nicolaslegland', ',​')​,
                                    gLink​('blogspot.gif', 80, 'Blogger', 'Blogger', 'https://www.blogger.com/profile/03167999290187409875', ',​')​,
                                    gLink​('blogspot.gif', 80, 'Blogspot', 'Blogspot', 'http://nicolaslegland.blogspot.fr/', ',​')​,
                                    gLink​('clubxtrem.gif', 96, 'Clubxtrem', 'Clubxtrem', 'http://www.clubxtrem.net/userinfo.php?uid=16144', ',​')​,
                                    gLink​('coderwall.gif', 112, 'coderwall', 'coderwall', 'https://coderwall.com/nicolaslegland', ',​')​,
                                    gLink​('copainsdavant.gif', 128, 'Copains d\'avant', 'Copains d\'avant', 'http://copainsdavant.linternaute.com/p/nicolas-le-gland-886319', ',​')​,
                                    gLink​('dailymotion.gif', 144, 'Dailymotion', 'Dailymotion', $g_sRequestProtocol.'www.dailymotion.com/nicolaslegland', ',​')​,
                                    gLink​('dalnet.gif', 160, 'DALnet', 'DALnet', 'https://users.dal.net/userinfo.php?nick=nescafe', ',​')​,
                                    gLink​('dandyid.gif', 176, 'DandyID', 'DandyID', $g_sRequestProtocol.'www.dandyid.org/id/nicolaslegland', ',​')​,
                                    gLink​('danstonchat.gif', 192, 'DansTonChat', 'DansTonChat', 'http://danstonchat.com/geek/nescafe.html', ',​')​,
                                    gLink​('deezer.gif', 208, 'Deezer', 'Deezer', $g_sRequestProtocol.'www.deezer.com/profile/1950464', ',​')​,
                                    gLink​('delicious.gif', 224, 'Delicious', 'Delicious', 'https://delicious.com/nicolaslegland', ',​')​,
                                    gLink​('deviantart.gif', 240, 'DeviantArt', 'DeviantArt', $g_sRequestProtocol.'nicolaslegland.deviantart.com/', ',​')​,
                                    gLink​('diaspora.gif', 256, 'Diaspora', 'Diaspora', 'https://diasp.org/people/a8b2d8d47d0b3967', ',​')​,
                                    gLink​('digg.gif', 272, 'Digg', 'Digg', $g_sRequestProtocol.'digg.com/u/4e2c5cc8060d4e9a95ae5fd3ae9abba1/deeper', ',​')​,
                                    gLink​('discogs.gif', 288, 'Discogs', 'Discogs', 'http://www.discogs.com/user/nicolaslegland', ',​')​,
                                    gLink​('discord.gif', 304, 'Discord', 'Discord', 'https://discordapp.com/users/136828504183406592', ',​')​,
                                    gLink​('doctissimo.gif', 320, 'Doctissimo', 'Doctissimo', 'http://club.doctissimo.fr/nicolas-le-gland/', ',​')​,
                                    gLink​('dotabuff.gif', 336, 'Dotabuff', 'Dotabuff', $g_sRequestProtocol.'www.dotabuff.com/players/48614', ',​')​,
                                    gLink​('dribbble.gif', 352, 'Dribbble', 'Dribbble', 'https://dribbble.com/nicolaslegland', ',​')​,
                                    gLink​('dropbox.gif', 368, 'Dropbox', 'Dropbox', 'https://www.dropbox.com/sh/r2so02kucmzvjvr/AABw0BaxzGjaa8gyoPpnCHJma', ',​')​,
                                    gLink​('dsinparis.gif', 384, 'DS in Paris', 'DS in Paris', 'http://forum.danstonchat.com/read.php?13,​32427,​105127#msg-105127', ',​')​,
                                    gLink​('ebay.gif', 400, 'eBay', 'eBay', 'http://www.ebay.com/usr/nicolas.legland', ',​')​,
                                    gLink​('facebook.gif', 416, 'Facebook', 'Facebook', 'https://www.facebook.com/nicolas.legland', ',​')​,
                                    gLink​('flavors.gif', 432, 'Flavors.me', 'Flavors<span class="tld">.me</span>', 'http://nicolaslegland.flavors.me/', ',​')​,
                                    gLink​('flickr.gif', 448, 'Flickr', 'Flickr', 'https://www.flickr.com/photos/nicolaslegland/', ',​')​,
                                    gLink​('foursquare.gif', 464, 'Foursquare', 'Foursquare', 'https://foursquare.com/nicolaslegland', ',​')​,
                                    gLink​('friendfeed.gif', 480, 'FriendFeed', 'FriendFeed', $g_sRequestProtocol.'friendfeed.com/nicolaslegland', ',​')​,
                                    gLink​('friendster.gif', 496, 'Friendster', 'Friendster', 'http://www.friendster.com/profiles/99510552', ',​')​,
                                    gLink​('generationnt.gif', 512, 'G&eacute;n&eacute;ration NT', 'G&eacute;n&eacute;ration NT', 'http://www.generation-nt.com/membres/507622.html', ',​')​,
                                    gLink​('gcn.gif', 528, 'Games Creators Network', 'Games Creators Network', 'http://forum.games-creators.org/memberlist.php?mode=viewprofile&amp;u=419', ',​')​,
                                    gLink​('gametrailers.gif', 544, 'GameTrailers', 'GameTrailers', 'http://www.gametrailers.com/#openUserProfile=34706A02026A70340001026A7034', ',​')​,
                                    gLink​('getsatisfaction.gif', 560, 'Get Satisfaction', 'Get Satisfaction', 'https://getsatisfaction.com/people/nicolaslegland', ',​')​,
                                    gLink​('github.gif', 576, 'GitHub', 'GitHub', 'https://github.com/nicolaslegland', ',​')​,
                                    gLink​('google-plus.gif', 592, 'Google+', 'Google+', 'https://plus.google.com/+nicolaslegland/about', ',​')​,
                                    gLink​('google.gif', 608, 'Google Calendar', 'Google Calendar', 'http://www.google.com/calendar/embed?src=8l4tn0ga4e7nbq4l1itsuqpafo@group.calendar.google.com', ',​')​,
                                    gLink​('google.gif', 608, 'Google Maps', 'Google Maps', $g_sRequestProtocol.'www.google.com/mapmaker?gw=66&amp;uid=203725838592539463928', ',​')​,
                                    gLink​('gswot.gif', 624, 'GSWoT', 'GSWoT', 'https://plus.google.com/116354058025450874991/about', ',​')​,
                                    gLink​('hi5.gif', 640, 'Hi5', 'Hi5', $g_sRequestProtocol.'www.hi5.com/nicolaslegland', ',​')​,
                                    gLink​('ichcb.gif', 656, 'I Can Has Cheezburger', 'I Can Has Cheezburger', $g_sRequestProtocol.'app.cheezburger.com/nescafe/', ',​')​,
                                    gLink​('icq.gif', 672, 'ICQ', 'ICQ', $g_sRequestProtocol.'www.icq.com/people/76383301', ',​')​,
                                    gLink​('instagram.gif', 688, 'Instagram', 'Instagram', 'https://www.instagram.com/nicolaslegland/', ',​')​,
                                    gLink​('jeuxvideo.gif', 704, 'JeuxVideo.com', 'JeuxVideo<span class="tld">.com</span>', $g_sRequestProtocol.'www.jeuxvideo.com/profil/nesca?mode=infos', ',​')​,
                                    gLink​('keybase.gif', 720, 'Keybase', 'Keybase', 'https://keybase.io/nicolaslegland', ',​')​,
                                    gLink​('klear.gif', 736, 'Klear', 'Klear', $g_sRequestProtocol.'klear.com/profile/nicolaslegland', ',​')​,
                                    gLink​('klout.gif', 752, 'Klout', 'Klout', 'https://klout.com/#/nicolaslegland', ',​')​,
                                    gLink​('kraland.gif', 768, 'Kraland', 'Kraland', 'http://www.kraland.org/main.php?p=6_1&amp;p1=175', ',​')​,
                                    gLink​('laposte.gif', 784, 'La Poste', 'La Poste', 'https://www.idn.laposte.fr/public-profile/nld-nhd7', ',​')​,
                                    gLink​('last.fm.gif', 800, 'Last.fm', 'Last<span class="tld">.fm</span>', 'http://www.last.fm/user/nicolaslegland/', ',​')​,
                                    gLink​('leplus.gif', 816, 'Le Plus', 'Le Plus', $g_sRequestProtocol.'leplus.nouvelobs.com/nicolaslegland', ',​')​,
                                    gLink​('linkedin.gif', 832, 'LinkedIn', 'LinkedIn', 'https://www.linkedin.com/in/nicolaslegland', ',​')​,
                                    gLink​('mariomakerhub.gif', 848, 'Mario Maker Hub', 'Mario Maker Hub', 'http://www.mariomakerhub.com/makers/nescafe', ',​')​,
                                    gLink​('mastodon.gif', 864, 'Mastodon.social', 'Mastodon<span class="tld">.social</span>', 'https://mastodon.social/@nicolaslegland', ',​')​,
                                    gLink​('mastodon.gif', 864, 'Mastodon.xyz', 'Mastodon<span class="tld">.xyz</span>', 'https://mastodon.xyz/@nicolaslegland', ',​')​,
                                    gLink​('miiverse.gif', 880, 'Miiverse', 'Miiverse', 'https://archiverse.guide/users/Nescafe', ',​')​,
                                    gLink​('mobygames.gif', 896, 'MobyGames', 'MobyGames', $g_sRequestProtocol.'www.mobygames.com/developer/sheet/view/developerId,​248676/', ',​')​,
                                    gLink​('msn.gif', 912, 'MSN', 'MSN', 'https://profile.live.com/cid-ffad5a53f82a681f/messenger', ',​')​,
                                    gLink​('myspace.gif', 928, 'MySpace', 'MySpace', 'https://myspace.com/nicolaslegland', ',​')​,
                                    gLink​('naymz.gif', 944, 'Naymz', 'Naymz', $g_sRequestProtocol.'www.naymz.com/nicolaslegland2422692', ',​')​,
                                    gLink​('neogaf.gif', 960, 'NeoGAF', 'NeoGAF', 'http://www.neogaf.com/forum/member.php?u=126166', ',​')​,
                                    gLink​('netlog.gif', 976, 'Netlog', 'Netlog', 'http://netlog.com/nicolaslegland', ',​')​,
                                    gLink​('netvibes.gif', 992, 'Netvibes', 'Netvibes', $g_sRequestProtocol.'www.netvibes.com/nicolaslegland', ',​')​,
                                    gLink​('nintendolife.gif', 1008, 'Nintendo Life', 'Nintendo Life', 'http://www.nintendolife.com/users/nescafe', ',​')​,
                                    gLink​('openclassrooms.gif', 1024, 'OpenClassrooms', 'OpenClassrooms', $g_sRequestProtocol.'openclassrooms.com/membres/nescafe', ',​')​,
                                    gLink​('panoramio.gif', 1040, 'Panoramio', 'Panoramio', 'http://www.panoramio.com/user/3229067', ',​')​,
                                    gLink​('paypal.gif', 1056, 'PayPal', 'PayPal', 'https://www.paypal.me/nicolaslegland', ',​')​,
                                    gLink​('photobucket.gif', 1072, 'Photobucket', 'Photobucket', 'http://photobucket.com/nicolaslegland', ',​')​,
                                    gLink​('plaxo.gif', 1088, 'Plaxo', 'Plaxo', 'http://www.plaxo.com/profile/show/nicolaslegland', ',​')​,
                                    gLink​('psn.gif', 1104, 'PlayStation Network', 'PlayStation Network', 'http://eu.playstation.com/psn/mypsn/trophies-compare/?onlineid=nescafe-on-play', ',​')​,
                                    gLink​('pocket.gif', 1120, 'Pocket', 'Pocket', 'http://getpocket.com/users/nescafe/', ',​')​,
                                    gLink​('pouet.gif', 1136, 'Pou&euml;t', 'Pou&euml;t', $g_sRequestProtocol.'www.pouet.net/user.php?who=3036', ',​')​,
                                    gLink​('pnintendo.gif', 1152, 'Puissance Nintendo', 'Puissance Nintendo', 'http://forums.p-nintendo.com/memberlist.php?mode=viewprofile&amp;u=70459', ',​')​,
                                    gLink​('quitter.gif', 1168, 'Quitter.es', 'Quitter<span class="tld">.es</span>', 'https://quitter.es/nicolaslegland', ',​')​,
                                    gLink​('quitter.gif', 1168, 'Quitter.is', 'Quitter<span class="tld">.is</span>', 'https://quitter.is/nicolaslegland', ',​')​,
                                    gLink​('quitter.gif', 1168, 'Quitter.no', 'Quitter<span class="tld">.no</span>', 'https://quitter.no/nicolaslegland', ',​')​,
                                    gLink​('quitter.gif', 1168, 'Quitter.se', 'Quitter<span class="tld">.se</span>', 'https://quitter.se/nicolaslegland', ',​')​,
                                    gLink​('quora.gif', 1184, 'Quora', 'Quora', 'http://www.quora.com/nicolas-le-gland', ',​')​,
                                    gLink​('raptr.gif', 1200, 'Raptr', 'Raptr', 'http://raptr.com/nescafe', ',​')​,
                                    gLink​('reddit.gif', 1216, 'Reddit', 'Reddit', $g_sRequestProtocol.'reddit.com/user/nicolaslegland', ',​')​,
                                    gLink​('redditgifts.gif', 1232, 'Reddit Gifts', 'Reddit Gifts', 'https://www.redditgifts.com/profiles/view/nicolaslegland', ',​')​,
                                    gLink​('seenthis.gif', 1248, 'SeenThis', 'SeenThis', 'https://seenthis.net/people/nicolas', ',​')​,
                                    gLink​('senscritique.gif', 1264, 'Sens Critique', 'Sens Critique', 'http://www.senscritique.com/nescafe/', ',​')​,
                                    gLink​('skyrock.gif', 1280, 'Skyrock', 'Skyrock', 'http://nicolaslegland.skyrock.com/', ',​')​,
                                    gLink​('soundcloud.gif', 1296, 'SoundCloud', 'SoundCloud', 'https://soundcloud.com/nicolaslegland', ',​')​,
                                    gLink​('sourceforge.gif', 1312, 'SourceForge', 'SourceForge', $g_sRequestProtocol.'sourceforge.net/u/nicolaslegland/profile/', ',​')​,
                                    gLink​('spotify.gif', 1328, 'Spotify', 'Spotify', 'https://open.spotify.com/user/nescafe', ',​')​,
                                    gLink​('stackoverflow.gif', 1344, 'Stack Overflow', 'Stack Overflow', $g_sRequestProtocol.'stackoverflow.com/users/946389/nicolas-le-gland', ',​')​,
                                    gLink​('sc2.gif', 1360, 'StarCraft 2', 'StarCraft 2', 'http://eu.battle.net/sc2/en/profile/730066/1/Nescafe/', ',​')​,
                                    gLink​('sc2ranks.gif', 1376, 'StarCraft 2 Ranks', 'StarCraft 2 Ranks', 'http://www.sc2ranks.com/character/eu/730066/Nescafe', ',​')​,
                                    gLink​('steam.gif', 1392, 'Steam', 'Steam', $g_sRequestProtocol.'steamcommunity.com/id/nescafe', ',​')​,
                                    gLink​('storify.gif', 1408, 'Storify', 'Storify', 'https://storify.com/nicolaslegland', ',​')​,
                                    gLink​('stumbleupon.gif', 1424, 'StumbleUpon', 'StumbleUpon', 'http://www.stumbleupon.com/stumbler/nicolaslegland/likes', ',​')​,
                                    gLink​('technet.gif', 1440, 'TechNet', 'TechNet', 'https://social.technet.microsoft.com/profile/nicolas+le+gland', ',​')​,
                                    gLink​('telegram.gif', 1456, 'Telegram', 'Telegram', 'https://web.telegram.org/#/im?p=@nicolaslegland', ',​')​,
                                    gLink​('tripadvisor.gif', 1472, 'TripAdvisor', 'TripAdvisor', 'http://www.tripadvisor.com/members/Neskafe', ',​')​,
                                    gLink​('trombi.gif', 1488, 'Trombi', 'Trombi', 'http://www.trombi.com/Personnes/Nicolas-Le-Gland-P-7QQ7Z-P', ',​')​,
                                    gLink​('tumblr.gif', 1504, 'Tumblr', 'Tumblr', 'http://nicolaslegland.tumblr.com/', ',​')​,
                                    gLink​('twitpic.gif', 1520, 'Twitpic', 'Twitpic', $g_sRequestProtocol.'twitpic.com/photos/nicolaslegland', ',​')​,
                                    gLink​('twitter.gif', 1536, 'Twitter', 'Twitter', 'https://twitter.com/nicolaslegland', ',​')​,
                                    gLink​('viadeo.gif', 1552, 'Viadeo.com', 'Viadeo<span class="tld">.com</span>', $g_sRequestProtocol.'www.viadeo.com/en/profile/nicolaslegland', ',​')​,
                                    gLink​('viadeo.gif', 1552, 'Viadeo.fr', 'Viadeo<span class="tld">.fr</span>', $g_sRequestProtocol.'www.viadeo.fr/fr/profile/nicolaslegland', ',​')​,
                                    gLink​('vimeo.gif', 1568, 'Vimeo', 'Vimeo', 'https://www.vimeo.com/nicolaslegland', ',​')​,
                                    gLink​('vk.gif', 1584, 'VKontakte', 'VKontakte', $g_sRequestProtocol.'vk.com/nicolaslegland', ',​')​,
                                    gLink​('wefrag.gif', 1600, 'Wefrag', 'Wefrag', 'http://www.wefrag.com/users/nescafe', ',​')​,
                                    gLink​('wordpress.gif', 1616, 'WordPress', 'WordPress', 'https://nicolaslegland.wordpress.com/', ',​')​,
                                    gLink​('xbox.gif', 1632, 'Xbox Live', 'Xbox Live', 'https://account.xbox.com/en-us/profile?gamertag=nescafe+on+live', ',​')​,
                                    gLink​('yelp.gif', 1648, 'Yelp', 'Yelp', $g_sRequestProtocol.'nicolaslegland.yelp.com/', ',​')​,
                                    gLink​('yggtorrent.gif', 1664, 'Yggtorrent', 'Yggtorrent', 'https://yggtorrent.is/profile/823491-nicolaslegland', ' and')​,
                                    gLink​('youtube.gif', 1680, 'YouTube', 'YouTube', 'https://www.youtube.com/user/nicolaslegland', '.')​,
                                '</div
                            ></div
                        ></div
                        >';
        }
        // PHP code
        else
        {
            // Page content
            gSource​(__FILE__)​;
        }
        // Page bottom
        echo
                    '</td
                ></tr
            ></tbody
            ><tfoot
                ><tr
                    ><td';
        // PHP code
        if ​(true === $g_bRequestSource)
        {
            // Span line index and content
            echo
                    ' colspan="2"';
        }
        // Page bottom
        echo '
                        ><footer
                            ><hr
                             />CSS:&nbsp;<a class="good" href="', $g_sRequestProtocol, 'jigsaw.w3.org/css-validator/validator?uri=', $g_sSiteAbsolute, '" title="CSS validator">Valid</a
                            >,​ DNS:&nbsp;<a class="good" href="http://www.dnsinspect.com/', $g_sSiteZone, '" title="DNS inspect">A</a
                            >,​ Favicon:&nbsp;<a class="good" href="', $g_sRequestProtocol, 'realfavicongenerator.net/favicon_checker?site=', $g_sSiteAbsolute, '" title="Favicon generator">OK</a
                            >,​ hCard:&nbsp;<a class="good" href="http://hcard.geekhood.net/?url=', $g_sSiteDomain, '#result" title="hCard validation">OK</a
                            >,​ HTML:&nbsp;<a class="good" href="http://validator.w3.org/check?uri=', $g_sSiteAbsolute, '" title="HTML validator">Valid</a
                            >,​ Insights:&nbsp;<a class="good" href="', $g_sRequestProtocol, 'developers.google.com/speed/pagespeed/insights/?hl=en&amp;tab=desktop&amp;url=', $g_sSiteAbsolute, '" title="PageSpeed Insights">99%</a
                            >,​ Network:&nbsp;<a ';
        if ​(true !== $g_bAgentText)
        {
            echo
                            'href="', $g_sSiteRelative, 'index.appcache" title="Application cache"
                                ><span class="online"><span
                                    class="good">On</span
                                ></span
                                ><span class="offline"><span
                                    class="average">Off</span
                                ></span
                                ><span class="unknown"><span
                                    class="bad">Unknown</span
                                ></span
                            >';
        }
        else
        {
            echo
                            'class="good" href="', $g_sSiteRelative, 'index.appcache" title="Application cache">On';
        }
        echo
                            '</a
                            >,​ OpenGraph:&nbsp;<a class="good" href="https://developers.facebook.com/tools/debug/og/object?q=', $g_sSiteAbsolute, '" title="OpenGraph debugger">OK</a
                            >,​ <span class="online"
                                >PHP:&nbsp;<a class="';
        // Response timing
        $g_iResponseDuration = ​(int)​​(ceil​(​(microtime​(true)​ - $g_fRequestTime)​ * 1000)​)​;
        if ​($g_iResponseDuration < 10)
        {
            echo
                                    'good';
        }
        else if ​($g_iResponseDuration < 100)
        {
            echo
                                    'average';
        }
        else
        {
            echo
                                    'bad';
        }
        echo
                                '" href="';
        if ​(true !== $g_bRequestSource)
        {
            echo
                                    'index.php';
        }
        else
        {
            echo
                                    '.';
        }
        echo
                                '" rel="nofollow" title="PHP source code">', $g_iResponseDuration, '&nbsp;ms</a
                            >,​ </span
                              >Speed:&nbsp;<a class="good" href="http://gtmetrix.com/reports/', $g_sSiteDomain, '/';
        if ​(true !== $g_bRequestEncryption)
        {
            // HTTP benchmark
            echo
                                'twnR782K" title="GXmetrix">99%';
        }
        else
        {
            // HTTPS benchmark
            echo
                                'efG3fR1O" title="GXmetrix">100%';
        }
        echo
                                '</a
                            >,​ Structure:&nbsp;<a class="good" href="https://developers.google.com/webmasters/structured-data/testing-tool?url=', $g_sSiteAbsolute, '" title="Structured data">OK</a
                            >,​ TLS:&nbsp;<a href="https://www.ssllabs.com/ssltest/analyze.html?d=', $g_sSiteDomain, '" title="SSL Labs"
                                ><span class="online"><span
                                    class="';
        // Protocol
        if ​(true !== $g_bRequestEncryption)
        {
            // HTTP connection
            echo
                                        'average">Off';
        }
        else
        {
            // HTTPS connection
            echo
                                        'good">A';
        }
        echo
                                    '</span
                                ></span
';
        if ​(true !== $g_bAgentText)
        {
            echo
'                               ><span class="offline"><span
                                    class="average">Off</span
                                ></span
                                ><span class="unknown"><span
                                    class="bad">Unknown</span
                                ></span
';
        }
        echo
'                           ></a
                            >,​ ', date​('Y-m-d H:i:s', $g_iRequestTime)​, '.<br
                        /></footer
                    ></td
                ></tr
            ></tfoot
        ></table
        ><script nonce="inline/foot" type="text/javascript"><!--
        //<!​[CDATA​[
if ​(window)
{
    ​(function ​(element,​ event,​ method)
    {
        if ​(element.addEventListener)
        {
            element.addEventListener​(event,​ method)​;
        }
        else if ​(element.attachEvent)
        {
            element.attachEvent​(\'on\' + event,​ method)​;
        }
        else
        {
            method​()​;
        }
    }
    )​​(window,​ \'load\',​ function ​()
    {
        if ​(window.applicationCache && window.applicationCache.addEventListener)
        {
            window.applicationCache.addEventListener​(\'updateready\',​ function ​()
            {
                if ​(window.location && window.location.reload)
                {
                    window.location.reload​()​;
                }
            }
            ,​ false)​;
        }
        if ​(document.createElement && document.getElementsByTagName)
        {
            var element,​ parent;
            parent = document.getElementsByTagName​(\'head\')​​[0]​;
            if ​(parent && parent.appendChild)
            {
                element = document.createElement​(\'link\')​;
                element.rel = \'stylesheet\';
                if ​(navigator && !navigator.onLine)
                {
                    element.href = \'', $g_sSiteRelative, 'offline.css\';
                }
                else
                {
                    element.href = \'', $g_sSiteRelative, 'online.css\';
                }
                element.type = \'text/css\';
                parent.appendChild​(element)​;
                if ​(navigator && navigator.userAgent)
                {
                    if ​(/​(iPad|iPhone|iPod)​/g.test​(navigator.userAgent)​)
                    {
                        element = document.createElement​(\'link\')​;
                        element.rel = \'stylesheet\';
                        element.href = \'', $g_sSiteRelative, 'ios.css\';
                        element.type = \'text/css\';
                        parent.appendChild​(element)​;
                    }
                    else if ​(/​(Macintosh)​/g.test​(navigator.userAgent)​)
                    {
                        element = document.createElement​(\'link\')​;
                        element.rel = \'stylesheet\';
                        element.href = \'', $g_sSiteRelative, 'osx.css\';
                        element.type = \'text/css\';
                        parent.appendChild​(element)​;
                    }
                }
            }
        }
    })​;
}
        //]​]​>
        //--></script
    >';
        if ​(true === $g_bRequestSource)
        {
            echo
    '<!--/noindex--><!--googleon: all-->';
        }
        echo
    '</body
></html>';
    }
    // HTACCESS redirection
    else
    {
        // Check file
        if ​(is_file​($g_sResponsePath)​)
        {
            // Text as HTML
            if ​(true
                && ​(true === $g_bAgentApple)
                && ​(false
                    || ​('.asc' === substr​($g_sResponsePath,​ -4)​)
                    || ​('.txt' === substr​($g_sResponsePath,​ -4)​)
                )
            )
            {
                // Format response
                gHtml​($g_sResponsePath)​;
            }
            // URL redirection
            else if ​('.url' === substr​($g_sResponsePath,​ -4)​)
            {
                // Redirect to URL
                preg_match​('/URL=​(​[^\s]​+)​/', file_get_contents​($g_sResponsePath)​, $l_a_sMatch)​;
                gRedirect​($l_a_sMatch​[1]​)​;
            }
            // Default type
            else
            {
                // Header
                header​('Cache-Control: max-age=604800,​ public')​;
                header​('Content-Type: '.gMime​($g_sResponsePath)​)​;
                // Content
                readfile​($g_sResponsePath)​;
            }
        }
        else
        {
            // File not found
            gRedirect​()​;
        }
    }
?>