<!--

 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.

-->

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>Page Not Found :(</title> 
  <style>
	  body { text-align: center;}
	  h1 { font-size: 50px; text-align: center }
	  span[frown] { transform: rotate(90deg); display:inline-block; color: #bbb; }
	  body { font: 20px Constantia, 'Hoefler Text',  "Adobe Caslon Pro", Baskerville, Georgia, Times, serif; color: #999; text-shadow: 2px 2px 2px rgba(200, 200, 200, 0.5); }
	  ::-moz-selection{ background:#FF5E99; color:#fff; }
	  ::selection { background:#FF5E99; color:#fff; } 
	  article {display:block; text-align: left; width: 500px; margin: 0 auto; }
	  
	  a { color: rgb(36, 109, 56); text-decoration:none; }
	  a:hover { color: rgb(96, 73, 141) ; text-shadow: 2px 2px 2px rgba(36, 109, 56, 0.5); }
  </style>
</head>
<body>
     <article>
	  <h1>Not found <span frown>:(</span></h1>
	   <div>
	       <p>Sorry, but the page you were trying to view does not exist.</p>
	       <p>It looks like this was the result of either:</p>
	       <ul>
		   <li>a mistyped address</li>
		   <li>an out-of-date link</li>
	       </ul>
	   </div>
	    
	    <script>
	    var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),
		GOOG_FIXURL_SITE = location.host;
	    </script>
	    <script src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
     </article>
</body>
</html>
