<!--
  Copyright (c) 2013 The Chromium Authors. All rights reserved.
  Use of this source code is governed by a BSD-style license that can be
  found in the LICENSE file.
-->
<!DOCTYPE html>
<html>
<head>
  <title>Native Client SDK</title>
  <link href="index.css" rel="stylesheet" type="text/css">
  <script src="index.js"></script>
</head>
<body>
  <div class="main-column">
    <div class="header">
      Native Client SDK
      <div class="close-button"></div>
    </div>
    <div class="main">
      <div class="left-border"></div>
      <div class="nav-wrapper">
        <div class="nav">
          <div class="config-group">
            <div class="config-header">Configuration</div>
            <div class="config-item">Debug</div>
            <div class="config-item selected">Release</div>
          </div>
[[for section in section_map:]]
          <div class="nav-group-header">{{section}}</div>
[[  for desc in section_map[section]:]]
[[    index_path = (desc['DEST'] + '/' + desc['NAME'])]]
[[    index_path = '/'.join(index_path.split('/')[1:])]]
          <div class="nav-item" data-href="{{index_path}}/index.html">
            <div class="nav-title">
              {{desc['TITLE']}}
            </div>
          </div>
[[]]
        </div>
      </div>
      <div class="iframe-wrapper">
        <iframe scrolling="no">
        </iframe>
      </div>
      <div class="right-border"></div>
    </div>
    <div class="footer"></div>
  </div>
</body>
</html>
