<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  ~ 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.
  -->
<project name="Apache Helix">
  <bannerLeft>
    <src>images/helix-logo.jpg</src>
    <href>https://helix.apache.org/</href>
  </bannerLeft>
  <bannerRight>
    <src>images/feather_small.gif</src>
    <href>https://www.apache.org/</href>
  </bannerRight>

  <publishDate position="none"/>
  <version position="none"/>

  <skin>
    <groupId>io.github.olamy.maven.skins</groupId>
    <artifactId>reflow-maven-skin</artifactId>
    <version>2.0.0</version>
  </skin>

<!--  <skin>-->
<!--    <groupId>org.apache.maven.skins</groupId>-->
<!--    <artifactId>maven-fluido-skin</artifactId>-->
<!--    <version>1.11.0-SNAPSHOT</version>-->
<!--  </skin>-->

  <body>

    <breadcrumbs position="left">
      <item name="Apache Helix" href="https://helix.apache.org/"/>
    </breadcrumbs>

    <menu name="Learn">
      <item name="Core Concepts" href="./Concepts.html"/>
      <item name="Architecture" href="./Architecture.html"/>
      <item name="Publications" href="./Publications.html"/>
      <item name="Client Libraries" href="./ClientLibraries.html"/>
    </menu>

    <menu name="Documentation">
      <item name="1.3.1" href="./1.3.1-docs/index.html"/>
      <item name="1.3.0" href="./1.3.0-docs/index.html"/>
      <item name="0.9.10 (0.9.9)" href="./0.9.9-docs/index.html"/>
      <item name="trunk" href="./trunk-docs/index.html"/>
    </menu>

    <menu name="Helix 1.3.1">
      <item name="Documentation" href="./1.3.1-docs/index.html"/>
      <item name="Quick Start" href="./1.3.1-docs/Quickstart.html"/>
      <item name="Tutorial" href="./1.3.1-docs/Tutorial.html"/>
      <item name="Download" href="./1.3.1-docs/download.html"/>
    </menu>

    <menu name="Helix 0.9.10 (0.9.9)">
      <item name="Documentation" href="./0.9.9-docs/index.html"/>
      <item name="Quick Start" href="./0.9.9-docs/Quickstart.html"/>
      <item name="Tutorial" href="./0.9.9-docs/Tutorial.html"/>
      <item name="Download" href="./0.9.9-docs/download.html"/>
    </menu>

    <menu name="Get Involved">
      <item name="IRC" href="./IRC.html"/>
      <item name="Mailing Lists" href="mail-lists.html"/>
      <item name="Issues" href="issue-tracking.html"/>
      <item name="Team" href="team-list.html"/>
      <item name="Sources" href="sources.html"/>
      <item name="Continuous Integration" href="integration.html"/>
      <item name="Building Guide" href="/involved/building.html"/>
      <item name="Release Guide" href="/releasing.html"/>
      <item name="Improve this Website" href="/involved/contribdocs.html"/>
    </menu>
<!--
    <menu ref="reports" inherit="bottom"/>
    <menu ref="modules" inherit="bottom"/>

-->
    <menu name="ASF">
      <item name="ASF Home" href="https://www.apache.org/"/>
      <item name="License" href="https://www.apache.org/licenses/"/>
      <item name="Sponsorship" href="https://www.apache.org/foundation/sponsorship.html"/>
      <item name="Thanks" href="https://www.apache.org/foundation/thanks.html"/>
      <item name="Security" href="https://www.apache.org/security/"/>
    </menu>
    <footer><![CDATA[
      <div class="row span16"><div>Apache Helix, Apache, the Apache feather logo, and the Apache Helix project logos are trademarks of The Apache Software Foundation.
        All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
        <a href="${project.url}/privacy-policy.html">Privacy Policy</a>
      </div>
    ]]></footer>


  </body>

  <custom>
    <fluidoSkin>
      <topBarEnabled>true</topBarEnabled>
      <googleSearch></googleSearch>
      <twitter>
        <user>ApacheHelix</user>
        <showUser>true</showUser>
        <showFollowers>false</showFollowers>
      </twitter>
      <sideBarEnabled>true</sideBarEnabled>
    </fluidoSkin>
    <matomo>
      <siteId>15</siteId>
      <url>https://analytics.apache.org</url>
      <options>
        <disableCookies/>
        <trackPageView/>
        <enableLinkTracking/>
      </options>
    </matomo>
    <reflowSkin>
      <theme>site</theme>
      <localResources>true</localResources>
      <highlightJs>false</highlightJs>
      <brand>
        <name>Apache Helix</name>
        <href>https://helix.apache.org</href>
      </brand>
      <slogan>A cluster management framework for partitioned and replicated distributed resources</slogan>
      <bottomNav>
        <column>Learn</column>
        <column>Documentation|Helix 1.3.1|Helix 0.9.10</column>
        <column>Get Involved</column>
        <column>ASF</column>
      </bottomNav>
      <pages>
        <index>
          <sections>
            <body />
            <sidebar />
          </sections>
        </index>
      </pages>
    </reflowSkin>
  </custom>

</project>
