---
layout: default
---

<!--

    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.

-->

<div class="docs-container container-fluid">
  <div class="row">
    <nav class="sidebar-nav hidden-sm-down col-md-3 col-lg-3">
      {% include sidebar.html %}
    </nav>

    <article class="col-9">
      <section class="docs-header">
        <h1 class="docs-title">Pulsar {{ site.current_version }}</h1>

        <hr class="hr">
      </section>
      <section class="content">
        {{ content }}
      </section>
    </article>
  </div>
</div>
