<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!--
 
    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.
-->

<link href="/allura/css/style.css" rel="stylesheet" type="text/css">
{% if header %}
{% autoescape off %}{{ header }}{% endautoescape %}{% else %}
<title>{% block title %}{{ headers.title }}{% endblock %}</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
{% endif %}
</head>
 
<body>
 <div class="banner">
      <div id="bannerleft">
		<a href="http://www.apache.org/"><img src="http://www.apache.org/images/asf_logo_wide.gif" alt="The Apache Software Foundation" border="0"/></a>
	<br/>
			<img alt="Allura logo" src="/allura/images/allura_logo.jpg" border="0"/>
      </div>  
    <div id="bannerright">	
	      <img id="asf-logo" alt="Apache Incubator" src="http://incubator.apache.org/images/egg-logo.png" border="0"/></a>			
	  </div>
 </div>  
  <div id="clear"></div>


  <div id="sidenav">
    {% filter markdown %}{% include "sidenav.mdtext" %}{% endfilter %}
  </div>
  <div id="contenta">
    {% block content %}{{ content|markdown }}{% endblock %}
  </div>
 
 <div id="footera">
    <div id="copyrighta">
      <p>Copyright &#169; 2011 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
    </div>
 </div>
 
</body>
</html>

