<!DOCTYPE html>
<html lang="en" class="js csstransforms3d">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    {{ .Hugo.Generator }}
    {{ partial "meta.html" . }}
    {{ partial "favicon.html" . }}
    {{ .Scratch.Add "title" "" }}{{ if eq .Site.Data.titles .Title }}{{ .Scratch.Set "title" (index .Site.Data.titles .Title).title }}{{ else }}{{ .Scratch.Set "title" .Title}}{{end}}
    <title>{{ .Scratch.Get "title" }}</title>
    <link href="http://ovfotjrsi.bkt.clouddn.com/docs/css/nucleus.css" rel="stylesheet">
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
    <link href="http://ovfotjrsi.bkt.clouddn.com/docs/css/theme.css" rel="stylesheet">
    <link href="http://ovfotjrsi.bkt.clouddn.com/docs/css/hugo-theme.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
    <style type="text/css">:root #header + #content > #left > #rlblock_left
    {display:none !important;}</style>
    {{ partial "style.html" . }}
  </head>
  <body class="" data-url="{{ .RelPermalink }}">
    {{ $isChapter := .Params.chapter | default (eq .Kind "section")}}
    {{ partial "menu.html" . }}
        <section id="body">
        <div id="overlay"></div>

        <div class="padding highlightable">

            <div id="top-bar">
              {{ if and .IsPage .Site.Params.editURL }}
                {{ $File := .File }}
                {{ $Site := .Site }}
                {{with $File.Path }}
              <div id="top-github-link">
                  <a class="github-link" href="{{ $Site.Params.editURL }}{{ replace $File.Dir "\\" "/" }}{{ $File.LogicalName }}" target="blank">
                    <i class="fa fa-code-fork"></i>
                    Edit this page
                  </a>
              </div>
                {{ end }}
              {{ end }}
              <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
                  <span id="sidebar-toggle-span">
                      <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
                        <i class="fa fa-bars"></i>
                      </a>
                  </span>
                {{ if and (not $isChapter) (.Params.toc) }}
                <span id="toc-menu"><a href=""><i class="fa fa-list-alt"></i></a></span>
                {{ end }}
                {{ if ne $.Section "" }}
                  {{ $section := index $.Site.Sections $.Section }}
                  {{ $sectionPage := $.Site.GetPage "section" $.Section }}
                  {{ if $sectionPage.Content }}
                    {{ $first := $.Site.GetPage "section" $.Section }}
                    {{ if ne $first.UniqueID $.UniqueID }}
                <a href="{{ $first.RelPermalink }}" itemprop="url"><span itemprop="title">{{ $first.Title }}</span></a> <i class="fa fa-angle-right"></i>
                    {{ end }}
                  {{ else if gt $section.Len 0 }}
                    {{ $first := (index $section 0).Page }}
                    {{ if ne $first.UniqueID $.UniqueID }}
                <a href="{{ $first.RelPermalink }}" itemprop="url"><span itemprop="title">{{ $first.Title }}</span></a> <i class="fa fa-angle-right"></i>
                    {{ end }}
                  {{ end }}
                {{ end }}
                {{ with .Title }}<span itemprop="title"> {{ . }}</span>{{ end }}
              </div>
              {{ if .Params.toc }}
                  {{ partial "toc.html" . }}
              {{ end }}

            </div>
            {{ if $isChapter }}
              <div id="chapter">
            {{ end }}
              <div id="body-inner">
                {{ if not $isChapter }}
                <h1>{{.Title}}</h1>
                {{ end }}
