<html>
  <head>
    <title>Gerrit Code Review</title>
    <meta name="gwt:property" content="locale=en_US" />
    <script id="gwtdevmode">
      (function () {
        var pn = 'gwt.codesvr';
        var cn = 'gerrit_ui.' + pn;

        var p_start = window.location.search.indexOf(pn + '=');
        if (p_start != -1) {
          p_start = p_start + pn.length + 1;
          var p_end = window.location.search.indexOf(";", p_start);
          if (p_end == -1) p_end = window.location.search.length;
          var v = window.location.search.substring(p_start, p_end);

          var e = new Date();
          e.setDate(e.getDate() + 1);
          document.cookie = cn + "=" + v + ';expires=' + e.toGMTString();

        } else if (document.cookie.length != 0) {
          var c_start = document.cookie.indexOf(cn + '=');
          if (c_start != -1) {
            c_start = c_start + cn.length + 1;
            var c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length;
            var v = document.cookie.substring(c_start, c_end);
            window.location.replace('?' + pn + '=' + v + document.location.hash);
          }
        }
      })();
    </script>
    <script id="gerrit_hostpagedata"></script>
    <style  id="gerrit_sitecss" type="text/css"></style>
    <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
  </head>
  <body>
    <div id="gerrit_topmenu"></div>
    <div id="gerrit_header"></div>
    <div id="gerrit_startinggerrit" style="margin-left: 10px;">
      <p>Loading <a href="http://code.google.com/p/gerrit/" target="_blank">Gerrit Code Review</a> ...</p>
      <noscript>
        <p>Gerrit requires a JavaScript enabled browser.</p>
      </noscript>
    </div>
    <div id="gerrit_body"></div>
    <div style="clear: both; margin-top: 15px; padding-top: 2px; margin-bottom: 15px;">
      <div id="gerrit_footer"></div>
      <div id="gerrit_btmmenu" style="clear: both;"></div>
    </div>
    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
    <script id="gerrit_module"></script>
  </body>
</html>
