
<!--
Copyright 2017-present Open Networking Foundation

Licensed 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="main-container">-->
  <!--<xos-header></xos-header>-->
  <!--<main class="main">-->
    <!--<xos-nav></xos-nav>-->
    <!--<div class="content">-->
      <!--<div ui-view></div>-->
    <!--</div>-->
  <!--</main>-->
  <!--<xos-footer></xos-footer>-->
<!--</div>-->

<!-- Wrapper-->
<div class="wrapper">

  <xos-header></xos-header>
  <xos-side-panel></xos-side-panel>

  <xos-nav></xos-nav>

  <div class="content">
    <div class="container-fluid">
      <div ui-view></div>
    </div>
  </div>

</div>