<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content=" <?php echo $pageDescription; ?>">

    <!-- Favicons etc. -->
    <link rel="icon" href="<?php echo $rootPath; ?>/images/ico/favicon.ico">
    <link rel="icon" sizes="16x16 32x32 64x64" href="<?php echo $rootPath; ?>/images/ico/16x16.png">
    <link rel="apple-touch-icon" sizes="57x57" href="<?php echo $rootPath; ?>/images/ico/57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="<?php echo $rootPath; ?>/images/ico/60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="<?php echo $rootPath; ?>/images/ico/72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="<?php echo $rootPath; ?>/images/ico/76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="<?php echo $rootPath; ?>/images/ico/114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="<?php echo $rootPath; ?>/images/ico/120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="<?php echo $rootPath; ?>/images/ico/144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="<?php echo $rootPath; ?>/images/ico/152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="<?php echo $rootPath; ?>/images/ico/180x180.png">
    <link rel="icon" type="image/png" href="<?php echo $rootPath; ?>/images/ico/196x196.png" sizes="196x196">
    <link rel="icon" type="image/png" href="<?php echo $rootPath; ?>/images/ico/192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="<?php echo $rootPath; ?>/images/ico/144x144.png" sizes="144x144">
    <link rel="icon" type="image/png" href="<?php echo $rootPath; ?>/images/ico/96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="<?php echo $rootPath; ?>/images/ico/72x72.png" sizes="72x72">
    <link rel="icon" type="image/png" href="<?php echo $rootPath; ?>/images/ico/48x48.png" sizes="48x48">
    <link rel="icon" type="image/png" href="<?php echo $rootPath; ?>/images/ico/36x36.png" sizes="36x36">
    <link rel="icon" type="image/png" href="<?php echo $rootPath; ?>/images/ico/32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="<?php echo $rootPath; ?>/images/ico/16x16.png" sizes="16x16">
    <link rel="manifest" href="<?php echo $rootPath; ?>/images/ico/manifest.json">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="<?php echo $rootPath; ?>/images/ico/144x144.png">
    <meta name="theme-color" content="#ffffff">

    <!-- Always force latest IE rendering engine or request Chrome Frame -->
    <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">

    <title><?php echo $pageTitle; ?></title>

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" crossorigin="anonymous">
    <link href='https://fonts.googleapis.com/css?family=Roboto:300' rel='stylesheet' type='text/css' crossorigin="anonymous">
    <link href="<?php echo $rootPath; ?>/stylesheets/all.css" rel="stylesheet" />
    <?php
    if ($customCss) {
      echo '<link href="' . $customCss . '" rel="stylesheet" />' . "\n";
    }
    ?>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="<?php echo $rootPath; ?>/javascripts/all.js"></script>
    <script src="<?php echo $rootPath; ?>/javascripts/bootstrap.min.js"></script>


    <!-- Eclipse Foundation cookie consent: -->
    <link rel="stylesheet" type="text/css" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
    <script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>

        <script>
            $(function () {
                $('[data-toggle="tooltip"]').tooltip()
            })
        </script>
    </head>

    <!-- Tracking Snippets -->
    <!-- GOOGLE TAG MANAGER -->
    <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-5WLCZXC"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','GTM-5WLCZXC');</script>
    <!-- END GOOGLE TAG MANAGER -->

    <!-- GITHUB BUTTON -->
    <script async defer src="https://buttons.github.io/buttons.js" crossorigin="anonymous"></script>


  </head>
