<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>@@HEAD_SCRIPT_LOAD@@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Testing the Mobilization Filter</title>
<meta name="robots" content="index, nofollow"/>
<meta name="description" content="This page is for testing the mobilization filter [&hellip;]"/>
@@VIEWPORT@@
<link rel="stylesheet" href="http://test.com/not-a-valid-stylesheet.css" type="text/css" media="screen, projection"/>
<!--[if lte IE 8]><link rel="stylesheet" href="http://test.com/another-stylesheet.css" type="text/css" media="screen, projection" /><![endif]-->
<link rel="stylesheet" href="http://anothersite.com/style.css" type="text/css" media="screen, projection"/>
<script type='text/javascript' src='http://test.com/not-valid.js'></script>
<link media="screen, projection" type="text/css" href="http://content.site.com/not-valid.css" rel="stylesheet"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://test.com/custom.js"></script>
@@HEAD_STYLES@@</head>
<body class="custom">@@SPACER@@
  <div id="nav_area" class="full_width" data-mobile-role="navigational">
    <div class="page">
      <ul class="nav_menu">
        <li class="tab"><a href="http://test.com">Home</a></li>
        <li class="tab"><a href="http://test.com/about" title="About">About</a></li>
        <li class="tab"><a href="http://test.com/articles" title="Articles">Articles</a></li>
        <li class="tab"><a href="http://test.com/rss" title="RSS Feed" rel="nofollow">RSS</a></li>
      </ul>
    </div>
  </div>
  <script>
    document.getElementById("stuff00").innerHTML = "JavaScript!";
    alert('00');
  </script>
  <div id="header_area" class="full_width" data-mobile-role="header">
    <div class="page">
      <div id="header">
        <p id="title"><a href="http://test.com/">Mobilize all the Things</a></p>
        <div id="PageSpeed-header-1">
          <h1 id="author">Foobar</h1>
          <h2 id="date"></h2>
        </div>
      </div>
    </div>
    <div class="navbar" data-mobile-role="navigational" id="PageSpeed-header_area-1">
      <a href="http://test.com/way_cool">Way Cool</a>
        <ul>
          <li><a href="first">first</a>
          <li><a href="second">second</a>
          <li><a href="third">third</a>
        </ul>
      <a href="http://test.com/mondo">Mondo</a>
      <a href="http://test.com/outrageous">Outrageous</a>
      <a href="http://test.com/funky">Funky</a>
    </div>
    <script>
      document.getElementById("stuff01").innerHTML = "";
      alert('01');
    </script>
  </div>
  <div id="content_area" class="full_width">
    <div class="aside" data-mobile-role="marginal" id="PageSpeed-content_area-0">
      <script>
        document.getElementById("stuff02").innerHTML = "";
        alert('02');
      </script>
      <form action="http://test.com/form/" method="get" id="PageSpeed-content_area-0-1">
        <ul><li class="widget">
            <h3>Months</h3>
            <select name="archive">
              <option value="">Select Month</option>
              <option value='http://test.com/m=apr'>April</option>
              <option value='http://test.com/m=may'>May</option>
              <option value='http://test.com/m=jun'>June</option>
            </select>
          </li><li class="widget">
            <h3>Categories</h3>
            <select name='cat' id='cat'>
              <option value="">Select Category</option>
              <option value='http://test.com/c=gnarly'>Gnarly</option>
              <option value='http://test.com/c=tubular'>Tubular</option>
              <option value='http://test.com/c=groovy'>Awesome</option>
            </select>
        </li></ul>
      </form>
    </div>
    <div class="page" data-mobile-role="content">
      <div id="content" class="feed">
        <div class="post type-post status-publish">
          <div class="headline_area" id="PageSpeed-content-0-0">
            <h1 class="entry-title">Isn't Mobilization Cool!?</h1>
            <p class="headline_author">
              <span class="author">Foobar</span><br/>
              <abbr class="published" title="2014-01-01">2014-01-01</abbr>
            </p>
          </div>
          <div class="entry-content">
            <div class="empty"></div>
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur mi est, pulvinar id euismod non, aliquam non dui.<br/>
              Quisque vehicula luctus magna vitae lobortis. Suspendisse lacinia enim nisl. In id euismod augue, at consequat justo
              <a href="http://google.com/">vestibulum mollis</a> porta leo sed placerat. Aenean consectetur
              tristique dolor vel interdum. Fusce blandit blandit dolor non dignissim.</p>
            <p>Vivamus vel odio gravida felis malesuada luctus. Quisque sit amet eros ipsum. Nunc id enim non justo lobortis gravida. Aenean
              hendrerit mollis velit, eget sollicitudin magna malesuada porttitor. Nam molestie lorem enim, sit amet imperdiet odio dapibus eu.
              Phasellus nec feugiat sem. Etiam elit ligula, tincidunt lobortis sodales nec, laoreet in orci.</p>
            <p><img align="middle" src="http://test.com/foobar.png"/></p>
            <p>Vivamus dapibus dictum neque et adipiscing. Suspendisse sit amet purus lacinia, feugiat turpis eget, viverra libero.</p>
            <pre class="brush: bash; title: ; notranslate" title="">
// my first program in C++
#include <iostream>

int main()
{
  std::cout << "Hello World!";
}
            </pre>
            <p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc eu turpis lorem.</p>
            <p>Vestibulum ut justo nulla. Sed condimentum nunc ante, <a href="http://google.com/">vestibulum mollis</a>
              eget convallis nibh sodales eu. Praesent eget eleifend mi, ut ullamcorper justo.</p>
            <h3>Nunc eu turpis lorem</h3>
            <p>Nunc ut pulvinar turpis. In lacinia arcu eget augue lacinia, et consectetur quam interdum.</p>
            <p>Aenean nec lacus ac sapien ultrices placerat non ac sem.</p>
          </div>
        </div>
      </div>
    </div>
  </div>
  <p>Aenean nec lacus ac sapien ultrices placerat non ac sem. Quisque accumsan porta tortor semper egestas.</p>
  <div class="footer" data-mobile-role="marginal" id="PageSpeed-6">
    Nulla ac elit sed urna molestie iaculis. Morbi posuere ac libero in fringilla.
    <br><a class="top"></a>
  </div>
<script type="text/javascript">pagespeedHeaderIds=['header_area','PageSpeed-content-0-0'];
pagespeedNavigationalIds=['nav_area','PageSpeed-header_area-1'];
pagespeedContentIds=['PageSpeed-header-1','content_area','PageSpeed-content_area-0-1'];
pagespeedMarginalIds=['PageSpeed-content_area-0','PageSpeed-6'];
</script><nav id="psmob-nav-panel"><ul class="psmob-open"><li id="psmob-nav-panel-0"><a href="http://test.com">Home</a></li><li id="psmob-nav-panel-1"><a href="http://test.com/about">About</a></li><li id="psmob-nav-panel-2"><a href="http://test.com/articles">Articles</a></li><li id="psmob-nav-panel-3"><a href="http://test.com/rss">RSS</a></li><li id="psmob-nav-panel-4"><div><a href="#">Way Cool</a></div><ul><li id="psmob-nav-panel-4-0"><a href="first">first</a></li><li id="psmob-nav-panel-4-1"><a href="second">second</a></li><li id="psmob-nav-panel-4-2"><a href="third">third</a></li><li id="psmob-nav-panel-4-3"><a href="http://test.com/way_cool">Way Cool</a></li></ul></li><li id="psmob-nav-panel-5"><a href="http://test.com/mondo">Mondo</a></li><li id="psmob-nav-panel-6"><a href="http://test.com/outrageous">Outrageous</a></li><li id="psmob-nav-panel-7"><a href="http://test.com/funky">Funky</a></li></ul></nav>@@TRAILING_SCRIPT_LOADS@@</body>
