// Copyright 2016 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package assets contains template strings and other assets for the allocatord web interface.
//
// This package is auto-generated by "jiri go generate v.io/x/ref/services/allocator/allocatord"
// which in-turn uses https://github.com/jteeuwen/go-bindata/
// Code generated by go-bindata.
// sources:
// bad-request.tmpl.html
// dash.js
// dashboard.tmpl.html
// error.tmpl.html
// head.tmpl.html
// header.tmpl.html
// home.tmpl.html
// root.tmpl.html
// style.css
// DO NOT EDIT!

package assets

import (
	"bytes"
	"compress/gzip"
	"fmt"
	"io"
	"io/ioutil"
	"os"
	"path/filepath"
	"strings"
	"time"
)

func bindataRead(data []byte, name string) ([]byte, error) {
	gz, err := gzip.NewReader(bytes.NewBuffer(data))
	if err != nil {
		return nil, fmt.Errorf("Read %q: %v", name, err)
	}

	var buf bytes.Buffer
	_, err = io.Copy(&buf, gz)
	clErr := gz.Close()

	if err != nil {
		return nil, fmt.Errorf("Read %q: %v", name, err)
	}
	if clErr != nil {
		return nil, err
	}

	return buf.Bytes(), nil
}

type asset struct {
	bytes []byte
	info  os.FileInfo
}

type bindataFileInfo struct {
	name    string
	size    int64
	mode    os.FileMode
	modTime time.Time
}

func (fi bindataFileInfo) Name() string {
	return fi.name
}
func (fi bindataFileInfo) Size() int64 {
	return fi.size
}
func (fi bindataFileInfo) Mode() os.FileMode {
	return fi.mode
}
func (fi bindataFileInfo) ModTime() time.Time {
	return fi.modTime
}
func (fi bindataFileInfo) IsDir() bool {
	return false
}
func (fi bindataFileInfo) Sys() interface{} {
	return nil
}

var _badRequestTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x54\x8e\x41\x0a\x02\x31\x0c\x00\xef\xfb\x8a\xf8\x00\x5b\xbc\x4a\xe8\x41\xf0\x2e\xfe\xa0\x9a\x40\x17\x56\x5b\x6b\x44\x96\xd2\xbf\xdb\x36\x7a\xf0\x14\x3a\x9d\x21\xc1\x0d\xc5\xab\xac\x89\x21\xc8\x6d\x71\x13\xfe\x06\x7b\x72\x13\x00\xca\x2c\x0b\xbb\x83\x27\x38\xf3\xe3\xc5\x4f\x41\xab\x68\x42\xab\x12\x5e\x22\xad\xc3\x0d\xbb\x7f\xb1\xbd\x3b\x4e\x99\xfb\x04\x28\xc5\x9c\xbc\x84\x5a\x3b\xb5\x5f\x5c\xca\x7b\x96\x00\xe6\x98\x73\xcc\xb0\xd5\xcf\xa4\xc1\x60\xfb\xde\xd5\x6a\x34\xd2\x84\xef\xd4\x44\xb4\xba\xba\x6d\x1a\x57\x7f\x02\x00\x00\xff\xff\xe0\x6f\x86\xe4\xcd\x00\x00\x00")

func badRequestTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_badRequestTmplHtml,
		"bad-request.tmpl.html",
	)
}

func badRequestTmplHtml() (*asset, error) {
	bytes, err := badRequestTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "bad-request.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _dashJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x57\x5f\x53\xdb\xba\x12\x7f\xe7\x53\x6c\x5b\xee\xd8\xb9\x37\x98\x84\x32\xb4\x13\xa6\xd3\x81\xc0\x2d\x99\x53\x0a\x25\xa1\xe7\x81\x61\x3a\xc2\x52\x62\xb5\xb2\x94\x4a\x32\x90\x9e\xc9\x77\x3f\x2b\xff\x95\x89\xe1\xcc\xe1\x21\xd8\xbb\xfb\xdb\xfd\x69\xb5\x5a\xad\x77\x77\x61\xac\x96\x2b\xcd\x17\x89\x85\xbd\xc1\xf0\x00\x66\x09\x83\x6f\x44\x12\xca\xb3\x14\x8e\x32\x9b\x28\x6d\x22\x38\x12\x02\x72\x23\x03\x9a\x19\xa6\xef\x19\x8d\xb6\x10\x7c\x6d\x18\xa8\x39\xd8\x84\x1b\x30\x2a\xd3\x31\x83\x58\x51\x06\xf8\xba\x50\xf7\x4c\x4b\x46\xe1\x6e\x05\x04\x8e\xa7\x27\x3b\xc6\xae\x04\x73\x28\xc1\x63\x26\x11\x69\x13\x62\x21\x26\x12\xee\x18\xcc\x55\x26\x29\x70\x89\x42\x06\x9f\x27\xe3\xd3\x2f\xd3\x53\x98\x73\xc1\xa2\xad\xad\x7b\xa2\x81\x12\x93\xc0\x07\x98\x67\x32\xb6\x5c\xc9\xb0\x07\x7f\x6d\x01\xa0\xb3\x13\x62\x09\x64\x06\x03\x59\x05\x0b\x26\x99\x26\x16\x59\x24\x44\x5b\x13\xa1\x89\x03\x8f\xcf\x8e\xae\x66\x53\x84\xdf\xa0\x00\x72\xa4\xfb\xb3\xdc\x0a\x36\x82\xe0\x33\x22\x64\xbc\x82\x30\x35\xbd\xa0\x5f\x2a\x29\xfa\xfd\x83\xad\x1a\x75\xad\xe1\x14\x85\xa2\x14\xe6\xb2\x75\xbf\xd3\xef\xd7\xcb\x29\x84\x9a\xfd\xda\xed\x74\xfb\x75\x69\xda\x2e\x7f\xa1\xe0\x25\x77\xe3\xcb\x6b\x4c\x38\x59\x30\x08\xff\xd3\xe5\x70\xba\x32\x68\x92\x5b\x5c\xc6\xb6\xed\x3b\x5e\x66\x3b\x99\xd3\xec\x2c\x51\xf5\x52\x94\x73\x96\x2a\xbd\xaa\x02\x7d\x3a\x7e\x26\x12\x9a\xe5\x26\xc7\x2b\xcb\x9e\xac\x23\x65\x69\x19\xeb\xae\xa5\x34\x31\x71\x11\x86\xbb\xc3\xc1\xde\x7e\xf3\xf3\x12\x99\x13\x6e\x7e\xfe\x23\x15\x67\xf4\x1c\x17\x8a\xba\x7f\x4f\x06\x7f\x6f\x0f\xb7\xca\xe2\x39\xb9\xbe\x3a\x9a\x4d\x2e\xbe\x4c\xbf\xcf\x2e\xbe\x4f\x4f\xc7\x17\x5f\x4e\x5c\x29\x15\x54\x83\x61\x12\x8c\xe0\xed\xc1\x60\x50\x38\x0e\xf6\xaa\x77\xf8\x2f\xec\x95\xb2\x7d\x4f\xb6\x5f\xca\x0e\x3c\xd9\x41\x29\x1b\xfa\xe0\x61\x85\x1e\x52\xcf\x63\x05\x7f\xd7\x12\xe2\xcf\x3b\x94\xaf\x6b\xce\x79\xc1\x7f\xff\x73\x72\x32\x3b\x43\xaa\xef\x06\x83\xc3\x96\xe2\xec\x74\xf2\xe9\x6c\x86\x9a\xbd\xb7\x4f\x34\xe3\x8b\xcf\x17\x57\xa8\x08\xde\x0c\x06\xef\xdf\xbe\xff\x7f\x50\xbb\xa4\x19\x1e\x2c\x3c\x79\x13\x39\x65\xb1\x92\xd4\xa0\x95\x23\x50\xe1\xb9\x34\x96\x48\x6c\x00\x08\x2e\x50\xd5\x59\x05\xf6\x68\x35\x89\xed\x25\xd1\x24\x65\x96\x69\x53\x9e\xde\x02\xb8\x9d\x69\x81\xa0\xed\x08\xff\x87\xbd\xc3\x5c\xee\x39\x73\xea\x68\xe9\xa0\x61\x50\x89\x83\xd2\x4c\x33\x9b\x69\xd9\x58\xbf\xfa\xf0\x01\xb0\x8d\xb0\x39\xc7\xc6\xe3\x4c\xd6\x5b\x45\x93\x98\x32\xec\x5c\xd9\x12\x12\x22\xa9\x40\x02\xd8\x6e\xb4\xeb\x11\x72\xc1\xe5\xa2\x5e\x5a\xe4\x93\x36\xe8\x7b\x79\x52\x6a\xc6\x4a\x5a\xad\x04\x42\x6b\xea\xdb\x61\xf0\xa6\x02\x9a\xa0\x17\xc5\x09\x17\x54\x33\xec\x4c\x51\x8c\x0d\xee\x67\xf8\xa4\x55\xb9\x3f\x64\x82\x49\xc0\xce\x57\x01\x41\x90\x3b\x26\x00\x59\xb9\x78\x9b\x39\x8e\xaa\x7a\xef\x48\x7e\x57\x5d\xde\x6c\x87\xae\x17\xf7\x22\x8b\x39\x0f\x7b\xb7\x87\x25\x3e\x5b\xe2\x89\x61\x2e\xbb\x0d\x93\xeb\x5c\x06\xd7\x93\x2a\x08\xae\x28\xaa\x02\xed\x70\xcb\xd2\xc8\x30\xc1\x62\xcb\x28\x2e\xcf\xaa\xc5\x42\xb0\xb1\x20\xc6\x84\x41\x23\x3f\xac\xb1\x65\xdc\x97\xcc\xd6\x3d\x7f\x4f\x3e\xb9\x3d\x71\x07\x39\x5f\x7e\xc1\xd0\x78\x8d\xbb\xde\x89\x8a\xbc\x97\x78\xa1\xf0\x82\x92\x8b\x9d\x3c\x7d\xc8\xce\x24\xea\xa1\xaa\x1d\x57\x53\x79\xbd\x98\xfa\x94\x36\x05\x35\xaa\x9f\xea\x56\x32\xda\xcc\x6e\xc1\xf6\xb0\x0e\xc7\xb4\x56\x7a\x27\x35\x0b\x0c\x95\x70\xca\xaa\x50\xdb\x11\xf9\x41\x1e\x71\xa1\x96\x58\xf3\x31\x80\xff\xa1\xa4\x28\xd5\x82\x40\xaf\x57\x06\x01\x88\xa8\x92\xac\xa9\x09\xb7\xee\xa6\x2e\x9a\x2d\x1a\xe7\xcb\x2f\xd4\x87\xb5\x76\xed\xf9\x99\x13\x2e\xbc\xda\xf2\x5d\x3c\xa5\xea\x67\xe5\xa9\x9b\x58\xa5\x4b\x81\x87\xb1\xab\x4c\x9f\xcb\xb2\xbf\xf4\xcd\xfd\xbc\x2e\x77\x90\xe0\xac\xf0\xec\x2e\xfa\xeb\x2b\xe3\x15\x97\x73\x84\x27\xf2\x94\xc4\x49\xc3\x27\xf7\xd1\x90\x72\xdb\x1a\xe3\x8e\x4a\xf6\xe0\xd1\x5c\x28\x85\xf5\x16\xdd\x73\x93\x11\xc1\x7f\x17\xc7\xf8\x48\x33\x92\x07\x0a\xa9\x8a\xb3\x94\x49\x1b\x2d\x98\x3d\x15\xcc\x3d\x1e\xaf\x26\xb4\xf0\x1d\x71\xda\xab\x57\xe3\xdc\xab\x65\x7e\x98\xbd\xb2\xa9\x6f\xa2\x02\x90\xbf\xf4\xdb\xba\x19\x9e\xb4\xa9\x9b\x6c\x46\xad\xfc\xcd\xb1\x63\x4c\xf9\x6f\x77\xc5\xec\x37\x88\x75\xf3\xf8\xc0\xa9\x4d\x46\x7e\xa7\x6e\x74\x09\x73\xb3\xd6\xa8\xd5\xad\x1b\xad\x60\x38\xe6\xd0\x76\xb8\xa5\x32\xdc\x91\xc7\x2b\x4f\x62\xa1\x05\x5d\x11\x71\x6e\xe3\xcc\xb4\x71\x83\xf6\x2b\xe0\xf8\x26\x94\x1e\xf9\xb7\x81\xa7\x5e\x77\xb9\xbd\x3f\x7a\xe4\xce\x6b\xca\xe5\x37\x22\x32\x5c\xf1\xc0\xd3\x26\xa5\xd6\xf3\xd2\x18\xe2\x5e\xba\xf9\x8d\xe5\xf5\x10\x9d\x73\x39\xe3\x29\x73\x77\xdf\x60\x30\xe8\xf5\x7d\x08\x79\xec\x86\x90\xc7\xe7\x20\x0b\xcd\xa9\xc0\x7b\xc0\x6c\xae\x30\x93\x98\xdb\x9d\x61\xbf\x25\xce\x24\xb7\x1b\xb6\x6e\xd2\x58\x39\x29\x56\x67\x4a\x10\x75\x13\x9c\x9f\x9f\x03\xa5\xc1\xed\xba\xff\xc4\x32\xc1\xf9\xb7\x6d\x9a\x8c\xd2\x14\x48\xd0\x87\x20\xc1\x7f\x9b\x88\x94\x0b\xc1\x4d\xd1\x72\xba\x80\xb7\xeb\x16\xa0\x85\xf7\xb6\xa2\x7c\x5a\x57\xa5\x1c\x47\x54\x93\x87\x10\x8b\xc4\xcd\xc6\x33\x72\x27\x8a\x6c\xdd\x14\x45\x5c\xce\x4e\xb7\xfd\xb2\xa8\xf3\x49\xa8\xd7\xaf\xaa\xff\x99\x5e\x5d\xcc\xd5\x06\x6a\x97\xa0\xee\x7e\x60\x77\x87\xb9\x56\x69\x3e\xb4\x2f\xf8\x3d\x93\x58\x88\x5c\x3e\x39\xf9\x2d\x22\x85\xbe\x5f\xcc\x5f\xfe\x18\x40\x2d\x14\xa7\xbb\xfb\x4c\x37\x1e\x4a\x82\xd4\x46\x84\xd2\xb1\x12\x59\x2a\xc3\xc0\xf5\x16\x8b\x95\xe0\x92\x1d\x74\x5a\xc8\x2c\xbd\x63\xda\xd7\xf3\x39\x94\x74\x9a\x2e\x53\x60\xae\xd4\x83\x29\x55\x51\x4a\x96\x4d\x4f\x5a\x5a\xbf\x4b\x96\xe3\xc7\x4d\x6b\x97\xea\x02\x5d\xda\xc8\xd5\x26\xde\x0d\xe9\xb2\xab\x40\xcb\x19\x14\x3e\x02\x5a\xe6\xd5\x8d\x56\x85\x68\x54\x8b\x6a\xfb\xfa\x2a\x5f\x57\x3d\x6b\x0d\x4c\xe0\x28\xb1\xc1\x3c\xbc\xa9\x29\xe0\xae\x0e\x6e\x2b\x73\x7f\x62\xa2\xb6\xde\xdd\x7a\x9b\x38\x1e\x80\xfa\x12\x70\xb9\x79\xd5\x31\xb7\x35\xcb\x47\x9e\xd8\x60\x83\xd7\xf2\xb5\xfb\xda\xc3\xaf\x9c\x8c\x6b\xfc\x08\x73\x83\x55\x3d\x8f\xa5\xee\xa8\xa1\x50\x22\xbe\x99\x15\x0a\x0e\x1e\xa9\xed\xae\x4b\xe8\xd9\xf9\x6b\x73\xa6\x29\xde\x9b\x91\x86\xe1\x97\xe7\xca\xb5\x99\xcc\xb2\xa8\x71\x37\x41\x2e\xfa\x9e\x88\xb0\x40\xf6\x01\xa7\x57\xdc\x93\x8d\x7a\x2f\x73\x54\x26\x02\xb3\x32\xca\x7f\x8b\x01\x7b\xed\x02\xfe\x1d\x00\x00\xff\xff\x2e\x60\xcc\x2a\x37\x0f\x00\x00")

func dashJsBytes() ([]byte, error) {
	return bindataRead(
		_dashJs,
		"dash.js",
	)
}

func dashJs() (*asset, error) {
	bytes, err := dashJsBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "dash.js", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _dashboardTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\x56\x4f\x4f\x1b\x39\x14\xbf\xf3\x29\xbc\x73\x19\x56\x64\xec\x04\xd8\x5d\x29\x3b\x49\x55\x01\xad\x90\x10\xa0\xd2\x4b\x55\xf5\xe0\xd8\x2f\x19\x27\x9e\xf1\x60\xbf\x09\x8c\x28\xdf\xbd\x9e\x3f\x09\x09\x24\x11\x91\x7a\xa8\x72\xc8\xf3\xf3\xef\xfd\xde\x7f\x27\xf1\x5f\xe7\x37\x67\x5f\xbf\xdd\x5e\x90\x04\x53\x3d\x3c\x88\x9b\x2f\x42\xe2\x04\xb8\xac\x04\x2f\xa2\x42\x0d\xc3\xa7\x27\x7a\x07\x76\x0e\xf6\x9a\xa7\xf0\xfc\x4c\xce\xb9\x4b\x46\x86\x5b\x19\xb3\x06\x70\xd0\xa0\xb5\xca\x66\x24\xb1\x30\x1e\x84\x8c\x8d\x4d\x86\x8e\x4e\x8c\x99\x68\xe0\xb9\x72\x54\x98\x94\x09\xe7\x3e\x8c\x79\xaa\x74\x39\xb8\x33\x85\x15\x70\x74\x66\x24\x1c\xdd\x5a\xd3\x3f\xed\x76\x3b\xff\x74\xbb\x3f\xbf\x98\x91\x41\xd3\xf7\x62\xc7\xab\x14\x72\xad\x44\xe7\xa4\xb9\x7c\x39\xb5\x92\x47\x84\xb5\x6f\x42\x2c\xe8\x41\xe8\xb0\xd4\xe0\x12\x00\x5c\xa8\xb1\xcc\x61\x10\x22\x3c\x62\xe5\x3c\x6c\xf3\x72\xc2\xaa\x1c\x89\xb3\x62\x10\x24\x88\xb9\xeb\x33\xc6\xa7\xfc\xf1\x75\xbc\x95\x8e\x69\x35\x72\x6c\x7a\x5f\x80\x2d\xd9\x31\xf5\x9f\xf6\x40\x53\x95\xd1\xa9\x0b\x86\x31\x6b\xf8\x76\x90\x0b\x99\x4d\x3d\xa5\x36\x85\x1c\x6b\x6e\x61\x23\x7b\x54\x58\x1d\xe5\xdc\x3a\xb0\xde\xd1\x09\xed\xb1\xdc\x6b\x7e\xbf\x1b\x61\xcc\x4c\x01\xeb\xd1\x53\xef\xa2\xcd\xa5\xd1\x6d\xf3\xf5\xd2\xd9\xc0\x21\x47\x25\x58\x5d\x69\xea\x4b\x1a\xd4\x95\x0f\x5e\x2a\x1f\x6c\x88\xaf\x35\x92\x7e\x70\x76\xa4\x52\xf7\x2a\xa8\x7b\x35\xe5\x73\xde\x68\x83\xf5\x0c\x1f\x1e\x1e\xe8\xa4\xa1\x6b\x26\x2a\xe1\x16\x1d\xd3\x86\x4b\xb0\x7b\x73\x0f\xdb\x29\x69\xda\x4e\x1b\x32\x5a\x91\x1d\x86\xa2\xb0\x16\x32\x0c\x3b\xe4\x29\xe7\x62\xc6\x27\xe0\xfa\xe4\x7b\x28\x8c\x85\x1a\x17\xfe\x78\xfe\xfb\xff\x8d\xf6\x0e\xf0\x26\xbb\xf2\x24\x67\x5c\xeb\x91\xb7\x3d\xac\x13\x57\x99\xc2\xd6\x62\x35\xc6\x98\x2d\x16\x2e\x1e\x19\x59\xb6\x61\x4b\x35\x27\x4a\x0e\x02\xe1\xd7\x88\xab\x0c\xec\x32\xd6\xe5\x55\x65\xb6\xa2\x5f\xb9\xa9\xb7\x32\xf0\x7b\x5b\x0b\x64\xeb\xf6\x7a\xfc\xba\x75\xb5\xea\x97\x99\x2f\x6f\x26\x3c\x74\x03\xa0\xa6\x87\x94\x2b\x5d\xd1\xd3\x8b\x4a\x7a\x05\x5c\x3f\x2c\xf3\xa8\x4b\xf3\x3a\x58\xa1\xb9\x73\xed\x65\x50\xe3\x34\x47\xc8\x44\x59\xb5\xf1\xad\xf3\xb7\xf0\xfb\xdc\xbd\x17\x2a\xf2\x22\x2a\x9c\x6f\x63\x94\x0b\x7c\xaf\x51\x0a\x69\x6b\x34\x2a\x11\xde\xed\x4b\x2a\x37\xdb\xcf\x8e\x8c\x95\xd6\x55\x37\xff\x14\xe0\xca\x61\x55\x5c\xf4\x53\x16\xd6\xef\xa0\xc9\x5c\xb4\x63\x42\xab\x45\x52\xd9\x24\xd2\x7c\x04\x7e\x60\xae\x6e\x3e\x9e\x5f\x5e\x7f\xa6\x94\x6e\x9e\x91\x25\xe7\x96\x31\x59\xdc\x47\x0a\x21\x25\x0e\x34\x08\x04\x19\x0c\x7b\xc9\x8e\x14\xd7\x8c\x82\xe1\xf1\x1e\xd8\xd3\x3d\xb0\xff\xee\x81\xed\xed\x13\x44\x6f\xd3\x9e\x6e\xc1\xfe\x27\xf7\x69\x21\x58\x6b\x6c\x94\xba\xc9\xb2\xdc\x9f\xfc\x36\x83\x24\x68\xfc\x9b\x8e\x56\xc1\x1c\x88\xe4\xc8\x29\xb9\xf5\xbf\x89\x0e\x08\xda\x92\xf0\x89\x6f\x36\xa9\xd6\xd4\xd2\x75\xea\x98\x35\xef\x97\x7f\xd0\xea\xbf\x12\xbf\x02\x00\x00\xff\xff\x78\x46\x06\x18\x62\x08\x00\x00")

func dashboardTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_dashboardTmplHtml,
		"dashboard.tmpl.html",
	)
}

func dashboardTmplHtml() (*asset, error) {
	bytes, err := dashboardTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "dashboard.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _errorTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x54\x8f\x41\x0a\xc2\x30\x10\x45\xf7\x3d\xc5\xd8\xbd\x0d\xdd\xca\x18\x70\x21\xb8\x10\x04\xc1\x03\xd4\x66\x24\x85\xb6\x29\x43\x44\x4a\xc8\xdd\x4d\x32\x76\xe1\xea\x93\xff\xdf\x83\x09\xee\x8c\xeb\xfd\xba\x10\x58\x3f\x8d\xba\xc2\x2d\xa8\x33\xba\x02\x40\x3f\xf8\x91\xf4\x99\xd9\x31\x2a\x79\x54\xa8\x64\xc6\xa7\x33\x6b\xa1\x6c\xab\x4f\x33\x14\x0a\x6e\x7d\xff\x66\x26\x93\xa8\xb6\x8c\x0b\x53\x4e\x80\x10\x9a\xc7\xfd\x1a\x63\x2e\xd5\xaf\x0d\xe1\x33\x78\x0b\x8d\xb8\x7b\x19\x17\xe1\x4b\x77\xc8\x5a\x8c\x8d\x48\xa2\xd0\x6c\xfe\x40\xec\xc0\x32\xbd\x8e\x75\x42\x2f\x6e\xa2\x18\x6b\x9d\x13\x55\xa7\x37\x0f\x95\x5c\x9b\xce\x2a\x5f\xfc\x06\x00\x00\xff\xff\x96\xa3\xfc\xdf\xfa\x00\x00\x00")

func errorTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_errorTmplHtml,
		"error.tmpl.html",
	)
}

func errorTmplHtml() (*asset, error) {
	bytes, err := errorTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "error.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _headTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x56\xdf\x8e\xa2\x3c\x14\xbf\xff\x9e\xc2\xf4\xbb\xf0\x62\x44\x10\x15\xc7\xc9\x32\x9b\xcd\x5c\xed\xdd\x64\x77\x5f\xa0\x94\xa3\x36\x03\x94\xd0\xa2\x75\x59\xdf\x7d\x4f\x5b\x23\xa3\xce\xcc\x0e\x44\x13\x02\x9c\x9e\xdf\xbf\x42\x38\x36\x4d\x0a\x2b\x5e\xc0\x80\x6c\x80\xa6\xe4\x70\xf8\x6f\x30\xf8\x92\x83\xa2\x78\xc6\x5f\x41\x73\x88\xc9\x96\xc3\xae\x14\x95\x22\xae\xc8\x44\xa1\xa0\x50\x31\xd9\xf1\x54\x6d\xe2\x14\xb6\x9c\x81\x67\x6f\x46\xae\xe3\xf4\xe3\x05\x57\x9c\x66\x9e\x64\x34\x83\x78\x72\xb9\x9c\x53\xcd\xf3\x3a\x7f\x6f\xb9\x96\x50\xd9\x35\x9a\xe0\x72\x21\xae\xe0\x48\x9f\x23\x7b\xcd\xc9\xe3\x5b\xbe\x69\x59\x66\xe0\xe5\x22\xe1\x78\xda\x41\xe2\x61\xc1\x63\xb4\x34\x74\x97\x59\xf6\x20\x91\xe4\xd3\x2c\x52\x51\x55\x4b\x2f\xa1\x68\x50\xed\xaf\xe9\x92\x8c\xb2\x17\x43\x68\x18\x33\x5e\xbc\x0c\x36\x15\xac\xe2\xa1\xef\xaf\xb0\x45\x8e\xd7\x42\xac\x33\xa0\x25\x97\x63\x26\x72\x9f\x49\xf9\x75\x45\x73\x9e\xed\xe3\x9f\xa2\xae\x18\xdc\x3d\x89\x14\xee\x9e\x2b\xf1\x30\x0b\x82\xd1\x3c\x08\xfe\xfc\x10\x89\x50\xe2\x01\x2f\x47\x58\xe2\x8a\x66\x9c\x8d\xa6\x6e\xb1\xbd\x3b\x5e\x61\xc7\xd0\x3a\xaa\x20\x8b\x87\xd6\xa1\xdc\x00\x28\x57\x54\xfb\x12\xe2\xa1\x02\xad\x8c\xf0\xf0\xb1\x35\x69\xda\x49\xdb\x4e\x9c\x6b\xd2\x34\xe3\x6f\x52\x82\x92\xcf\x78\xcb\xf5\xe1\xe0\xf3\x14\x63\x72\xb5\x1f\x23\x81\xdb\xfc\x36\x24\x31\x9b\xc3\x99\x6f\x79\x6c\xc3\x15\xef\xa5\xa4\xdb\x63\x25\x6a\xb6\xf1\x38\x6e\x22\x19\x48\xfe\x1b\x64\x4c\xe6\x0b\x3d\x5f\xbc\x6f\x63\x45\xb7\xa6\x5d\xfa\x97\x04\x9e\x05\x8e\xcb\x62\xfd\xca\xdd\xc7\x52\x93\xc9\x4c\xe3\xd1\x47\xec\x08\xed\x24\xb7\x08\xf5\x22\xec\x23\x66\x81\xdd\x92\xcd\xd0\xde\xac\x5f\x32\x07\xed\x24\x17\x05\x3a\x0a\xfa\x88\x59\x60\xb7\x64\x61\xa0\xf1\xe8\x95\xcc\x41\xbb\x3d\xb3\x48\x2f\xa2\x5e\xcf\xcc\x00\xbb\x25\x9b\x87\x1a\x8f\x5e\xc9\x1c\xb4\x9b\xdc\x3d\xee\xc6\x7d\xbf\x8d\x74\xd0\xb7\xe4\x9c\x84\xfd\xdc\x10\xfc\x52\xaf\xc1\x37\x4d\xff\xd6\x38\x5e\x78\x93\x25\x26\x59\xba\x24\x27\xa7\xae\x76\x73\x29\x7c\xf9\x26\xc7\xb7\xef\x24\xe5\x6a\xb7\x96\x5a\x46\x7a\x19\x9d\x09\xd9\xca\xed\x13\xa1\xf9\x8b\x3c\x58\xb9\xb5\xcc\x34\xd4\xd3\xf3\x27\x64\x2b\xed\x44\x3e\x8e\xd1\x5c\x9a\x37\x87\x33\x1c\x0d\x88\xfa\x85\xc3\xf4\x49\x64\xa2\x22\xed\xcc\xfc\x3f\xa5\xf3\x69\xc8\x3e\x81\xfc\x6e\x7c\xbe\x42\x7e\x60\x33\x97\xca\xcc\xed\xf3\xef\x58\xd3\x40\x91\xe2\x7f\x9d\xbf\x01\x00\x00\xff\xff\x52\x29\x6b\xf4\xfe\x08\x00\x00")

func headTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_headTmplHtml,
		"head.tmpl.html",
	)
}

func headTmplHtml() (*asset, error) {
	bytes, err := headTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "head.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _headerTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x64\x90\x31\x6e\xc6\x20\x0c\x46\xf7\x9e\xc2\x72\xe7\x86\x0b\x90\x48\x1d\xba\x76\xa9\xd4\xdd\x0a\x26\x41\x22\x50\x01\xcd\x62\x71\xf7\xd2\x26\xa4\xbf\x94\x0d\x7f\xcf\x96\x1f\x16\x31\x6c\x5d\x60\xc0\x95\xc9\x70\xc2\x5a\x9f\x00\xf4\x51\x4c\xed\xd9\x8a\x40\x3b\xcc\x9e\x72\x1e\xd1\xb3\x2d\x78\xc4\x0d\x10\xac\x89\xed\x88\xcf\x78\xf1\xb8\x44\x9c\x3e\x29\x90\x71\xdf\x9b\x56\x74\xf5\xe6\x2f\x0a\xbd\x2b\x73\xda\xdd\xcc\x2f\x81\x36\xc6\x49\xa4\xb8\xe2\x19\x86\x8f\x16\x73\x7a\x6f\x61\xad\xf0\xea\x7d\x9c\xa9\xc4\xa4\xd5\xef\xe8\xa9\xa2\x9a\xcb\xdd\x2a\xb9\x65\xfd\xd7\x12\x71\x16\x86\xb7\x8d\x9c\xff\xfb\xcc\x4d\xb6\x6d\xec\xf8\xc1\x50\x84\x83\x39\x07\xae\x3d\x5a\xf5\x4b\x74\xfc\x13\x00\x00\xff\xff\xe2\x89\x41\x0f\x31\x01\x00\x00")

func headerTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_headerTmplHtml,
		"header.tmpl.html",
	)
}

func headerTmplHtml() (*asset, error) {
	bytes, err := headerTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "header.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _homeTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xb4\x58\x7f\x6f\xdb\x36\x10\xfd\xdf\x9f\xe2\xaa\x06\x90\xbc\x44\x72\xb2\x62\xff\x24\xb6\x81\xa6\xe9\xd0\x02\x75\x1a\x24\xe9\x80\xa2\x28\x06\x5a\x3a\x5b\x6c\x24\xd2\x25\x29\xbb\x86\xa1\x7d\xf6\x1d\xf5\xcb\x96\xe3\xc4\xc9\xba\x16\xa8\x6d\x51\xc7\xbb\x77\x8f\x8f\xe4\x5d\xfa\x2f\x22\x19\x9a\xe5\x0c\x21\x36\x69\x32\xec\xf4\xeb\x2f\x64\xd1\xb0\x03\xd0\x37\xdc\x24\x38\xfc\x8b\x09\x16\xf1\x2c\x85\xd5\xaa\x18\x80\xe0\x06\xd5\x1c\xd5\x25\x4b\x31\xcf\xe1\x75\x92\xc8\x90\x19\xa9\xfa\xbd\xd2\x9e\x66\x92\x25\xa6\xb3\x84\x19\x04\xc7\x7a\x73\x20\xc8\xf3\x4e\xbf\x57\x7a\xee\xbf\xf0\x7d\xb8\xfc\x78\xfb\xf6\x14\x16\x08\xee\x58\x2a\x25\x17\x2e\x30\x48\xa4\x01\x39\x01\x13\x23\x68\xb3\x4c\xb8\x98\xda\x47\x1e\xa1\x20\xcf\xcb\xe8\x08\x62\x14\x21\xda\xf7\x1d\x8d\x61\xa6\x68\xd0\x57\x68\xc3\x44\x60\x50\xa5\x5c\xc8\x44\x4e\x97\xc0\x45\xe3\x03\x01\x13\x4c\xc9\x81\x3e\x82\x84\xdf\x61\xe3\x0d\x98\x88\x3a\xe3\x04\xb5\xa6\x30\x01\xf8\x3e\xe1\x1a\xcb\x68\x09\x61\xc2\xb4\x1e\x38\xb5\xdd\x4c\xc9\x39\xfd\x56\x7e\xc2\x96\x32\x33\xc0\xea\x74\x23\x67\x57\xa6\xa8\xca\x5c\x89\xbd\x89\x54\x29\xa4\x68\x62\x19\x0d\x9c\xab\x8f\x37\xb7\x0e\x05\x1f\x38\x76\xd8\x01\x25\x13\xac\x7e\x5b\x37\x64\xce\xc5\x8c\xdc\xdb\xe5\x18\x38\x06\x7f\x18\xa7\x46\x12\xf3\x88\xb0\x38\x20\x88\xef\x81\xb3\x5a\x05\x6f\x6e\xae\xff\xbc\x62\x8a\xa5\x79\xee\xc0\x9c\x25\xd9\x7a\xf8\x56\xde\xa1\xa0\xe1\x5e\xb1\x7e\x3a\x54\x7c\x66\x4a\xff\x93\x4c\x84\x86\x4b\x01\x61\xcc\xc4\x14\xcf\x8d\xf0\x38\x31\x2a\x70\xf1\xee\x76\xf4\xa1\x0b\xab\xc2\x8a\x04\x91\x59\xb6\x82\x29\x9a\xb7\x25\x71\xe7\xcb\xf7\x11\x99\x76\x03\x2e\x04\x2a\x6b\x0c\x03\x70\x28\x3b\x61\x20\x24\xbe\xd5\xc0\x9d\x2a\xb6\x74\x87\xce\x61\xe5\xec\xd0\xe9\xf7\xec\xeb\xa1\x73\x56\x38\xcd\x8b\xcf\x39\x53\x30\xa1\xa9\x4d\x08\x9b\xbc\xfe\xe2\xda\x2f\xf7\xab\xb5\xec\xf7\xd6\x80\xfb\x11\x9f\xd7\x04\xa4\x8c\x8b\x9a\xa5\xf8\xa4\x1e\x9d\xb1\x29\xfa\x85\xb8\x86\x6f\x14\xda\x05\xa0\x15\x85\x11\x89\x75\x8a\xf0\x5e\x68\xc3\x48\x2b\xda\x0a\x68\xa7\x6e\x49\x8c\x27\x95\xcf\x8d\x50\xb5\x20\xb4\x9f\x70\x6d\xaa\xa0\x0f\x99\x54\xeb\x5d\x1b\x15\xe8\x86\x9f\x65\xa6\x48\x80\x55\xf8\x75\x14\x9b\x1e\x79\xa9\x1f\x56\x2b\x65\x97\x01\x0e\xb8\x88\xf0\xc7\x11\x1c\x54\x32\x85\xd3\x01\x04\x0d\xfa\x3c\x7f\x14\x00\x27\xed\x6d\x86\xdf\x61\xe4\x47\x68\x18\x4f\xf4\x86\x99\x0d\xbe\xe0\x26\x5e\xc7\x69\xc2\x94\x49\xbc\x1a\x92\x9a\xde\x11\x9b\x89\xdd\xdf\xab\x15\x9f\x00\x7e\x87\xe0\x1a\x67\x09\x0f\x99\x86\xe3\x3c\xff\x72\x93\xe9\x19\x12\xf4\xe8\xeb\x6a\x45\xdf\x05\x9f\xaf\x36\x63\xf4\x67\xf7\xa0\x84\x6c\x4e\xeb\xd4\x86\x62\x55\x3a\x63\xa2\x5c\x42\x2b\xcf\x5b\x9e\x22\x09\xc1\x8e\xf5\xc7\xaa\xb7\xc3\xb6\xf6\x9b\x09\xfe\xc3\x90\xb5\x03\x11\x33\xcc\xaf\x1f\x07\x76\x2b\x54\xde\xac\xb3\xe0\x13\xbd\xc8\xf3\xe1\xf6\xf0\x8d\x51\x04\xca\x02\x2f\x82\x6d\x42\xef\xcd\x7e\x22\x93\xd7\x51\xa4\xc8\xec\xc1\x1c\x08\xc7\x48\x66\xc2\x94\x32\xfc\xdf\xc2\x9e\x57\x46\x70\xc5\x0c\x9d\x85\xe2\x31\x00\xa5\xf4\x82\x7a\x8a\x45\xa2\x5b\x50\x2a\x9c\x44\xce\x8e\xd9\xc5\x72\x3f\x8c\x7b\xdb\xa0\x25\xfb\x2d\x91\x1a\xa1\x7d\x3a\x43\x5a\x09\x6d\x19\x6c\x27\xcb\x20\x56\x38\x29\x0e\xbc\x0b\xa6\xe3\xb1\x64\x2a\xfa\x74\xfd\xc1\x1e\x85\xf5\xa4\xcc\x18\x29\xfc\x19\x3d\xf0\x39\xa9\xc3\x30\x45\xa7\xd9\xc0\xf9\x7b\x9c\x30\x71\xe7\x0c\x9b\x69\xfd\x1e\x6b\x2f\x7b\x0b\xe8\xb3\x90\xe0\x38\x9b\x3e\x13\x85\x9d\xb2\x0f\x41\xb3\xf7\xea\x9d\xba\xb1\x09\xa1\xbd\x08\x5b\x58\x8b\xab\x86\x74\x48\x47\x2d\x1d\xf5\xab\x55\x79\xce\x10\xbe\x07\x92\x78\xf9\x20\x70\x29\x42\x8a\x78\x37\x70\xd6\x17\x87\xbb\xc3\xb1\x7b\x04\xee\xb5\x1d\xb6\x1a\xf4\x0c\xbb\xa3\xb3\x97\xc1\x04\x17\x40\x57\xb5\x14\x91\xee\x42\x10\x04\x6e\xf7\x0c\x26\x01\x2b\x6e\xa2\x81\x4b\xcc\x15\x53\xb0\xa0\xce\xb5\xaf\x74\x36\x4e\xb9\xf1\xc8\x4c\xa1\xc9\x94\x80\x09\x4b\x34\x3a\xc3\xd2\x6e\x3f\x5f\x48\xd6\xfb\x89\xd1\xe5\xe9\xf5\x0b\x98\xd9\xe5\xd9\x52\x53\x9d\x97\xcf\x23\xa7\x9a\xb4\x9f\x9d\xca\xf0\x09\xf4\x6c\xef\xdd\x36\x3b\x40\xff\xfd\x05\x53\x82\x70\x36\x12\x42\xf3\x6b\x14\xb4\xe5\xb7\x12\x10\x1a\xb3\x41\xd2\x3f\xbf\x1f\xef\xd5\x0f\x9a\x27\xc9\x07\xcd\x33\xf7\xfb\x7d\x32\x22\xd4\x46\xc9\xe5\x2f\xa0\x63\x97\x67\x4b\xc8\x45\x39\xbe\xc9\xc8\xc9\x1e\x46\xaa\x29\xfb\x39\xa9\x0c\x1f\x67\xa5\xf5\xb8\xf1\xb0\xb5\xd3\x2e\xa5\x40\x98\xd0\xb5\x16\x05\x9d\x6d\xa5\x15\xb4\x5a\xfa\xc2\xa2\x4c\x3b\xb7\x27\xe9\x7f\xa4\xa9\xf1\x60\xb9\x29\x6f\xf3\x4d\xad\xfc\xf1\x38\x33\x65\x99\xb8\x9f\x98\xaa\x9c\xbc\xc4\x85\xe5\xa6\x95\x74\x59\x37\x8d\xe8\xde\xb4\x55\xa6\xbf\x9d\x61\x5a\xbe\x70\xd6\x55\x5e\x50\x9b\xb4\xa8\xab\xb8\x69\x06\x6d\xbd\xac\xd2\x8d\x9a\x1d\xb4\x0a\x8b\x9b\xe5\xb5\x26\xe1\xea\x2b\xe2\xca\x16\x31\xbd\xba\x2b\xe9\xa5\xb2\xa8\xa1\xbf\x51\x31\xd0\x2a\x9b\x9f\x38\xfd\xdb\xf7\x0c\xd5\xf2\xa1\xe9\xf6\x67\xd3\x2f\x90\x03\x5b\x2f\xdd\x52\x4b\xe2\xd9\x22\xb5\x6e\x15\x6c\x3d\x6f\xeb\x2d\xba\x98\xd2\x19\xd5\xf5\xf6\x5d\x60\x2b\x31\x6f\x5d\x99\x75\xcf\x1a\xd3\x94\x4c\x4a\xd0\x5e\x33\xeb\xb7\x93\xe3\xe3\xe3\xe0\x78\xc3\xaa\x6c\xd9\x5a\xce\x8a\xa1\xda\x13\x5d\x87\x5e\x65\x33\xa0\x2e\x84\x8d\xb5\x4c\x32\x43\xaf\x2b\x50\x50\xce\xb4\x8d\xac\xe7\xd4\x22\x73\x5f\xba\x8d\x9a\xdc\xcd\xa5\x3e\xa3\xa6\x05\x0e\x21\x2d\x5a\x11\x66\x3c\x67\x34\x1a\xc1\xc5\xc5\x11\x7c\xa6\x7f\x10\x9f\xa6\xe9\xa9\xa6\x83\x9a\xbc\x1f\x52\xc7\x43\x5a\xa8\x61\xc0\x7d\x80\x47\xe0\x4c\x94\x4c\x2f\xe5\xa2\x36\xca\xc1\x6e\x91\x9f\x04\x56\xba\xf4\x9e\x88\x60\xcd\xc7\xba\xf3\xca\x3b\xf4\x71\xe0\xd5\x6d\x57\x37\x20\x75\x47\x4b\xaf\x5e\x5f\xaf\xa6\xee\xc0\x73\x82\xf5\xc2\x05\xc8\xc2\xf8\xbe\x11\x40\xaf\x07\x05\x60\xbb\xf1\x6c\x93\xbd\x96\x80\x8e\x65\x96\x50\x23\x2e\xa7\xd3\xa4\x68\xd2\x21\xe2\x9a\x5a\xe3\x25\x94\xf4\x06\x95\x87\x03\xcf\xc4\x5c\x77\x83\xc2\x4d\x2b\x44\x4b\x6b\x95\x19\xed\xce\xbc\xc9\x79\xe7\xfb\x32\xd3\xe2\xbb\xfc\x5c\x2b\xba\xdf\xb3\x2d\xbd\xfd\x2e\xff\xb4\xf1\x6f\x00\x00\x00\xff\xff\x9d\x55\x06\x4c\xf2\x10\x00\x00")

func homeTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_homeTmplHtml,
		"home.tmpl.html",
	)
}

func homeTmplHtml() (*asset, error) {
	bytes, err := homeTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "home.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _rootTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x6c\x90\x41\x6b\x84\x30\x10\x85\xef\xfe\x8a\x69\xee\x1a\xf6\x9e\x15\x4a\x2f\x2d\xb4\xbd\x14\x7a\x9f\x35\xb3\x1a\x88\x49\x88\xa3\x20\xe2\x7f\xdf\x51\xd7\xdb\x9e\x26\x19\xde\xfb\x78\xf3\xcc\x9b\x8d\x0d\xcf\x89\xa0\xe3\xde\xd7\x85\x39\x07\xa1\xad\x0b\x00\xc3\x8e\x3d\xd5\xff\x18\xd0\xba\xb1\x87\x65\xd9\x17\x50\xfd\x51\x9e\x28\xff\x62\x4f\xeb\x0a\xef\xde\xc7\x06\x39\x66\xa3\x0f\xbd\x38\x45\x49\x7d\xf2\xc8\x04\x6a\xa3\x29\xa8\xd6\xb5\x30\xfa\x20\x9b\x5b\xb4\x33\x34\x1e\x87\xe1\xaa\x9c\xa5\x20\xbe\x39\xe5\x38\xc9\x3b\x97\x1e\xe7\x38\x32\xe0\x89\xb5\xea\x15\x91\xf2\xc1\x94\x94\xd6\x4d\x27\xac\x47\x17\x76\xb9\xac\xbb\xcb\xb9\x4d\xd8\x52\xb9\xc7\xa8\x3f\x32\x6d\x08\x0c\x16\x7e\xe4\xac\x96\xe0\x2b\x0c\x8c\xa1\xa1\x01\xe2\xfd\xf5\x85\x12\xfb\xf2\x64\xa6\x63\xca\x0b\x4f\xf8\x6d\x64\x8e\xa1\x4c\xf2\x71\x13\x29\xe8\x32\xdd\xaf\x6a\x59\xaa\xcf\xb8\x99\x55\xfd\x1d\x5b\x70\xc1\x68\x7c\x32\xf4\x0e\x31\x5a\x62\x4b\x15\x7a\xeb\x62\x9b\x47\xf7\x8f\x00\x00\x00\xff\xff\xe3\x95\x3a\xa7\x93\x01\x00\x00")

func rootTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_rootTmplHtml,
		"root.tmpl.html",
	)
}

func rootTmplHtml() (*asset, error) {
	bytes, err := rootTmplHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "root.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _styleCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xa4\x56\x4f\x6f\xdb\xb8\x13\xbd\xfb\x53\x10\x08\x7e\x40\x5b\x44\xae\xe4\x38\xb1\xab\x9e\xd2\xfc\x1a\x60\x81\xc5\x1e\xb6\xbb\x7b\xa7\xc4\xb1\xc5\x2d\x45\x1a\x24\x15\xdb\x29\xf6\xbb\xef\xf0\x9f\x2c\xcb\x72\x7a\x58\xa3\x50\xa3\xd1\xf0\xcd\xcc\xe3\x9b\x21\x3f\x7e\x20\x4f\x6a\x77\xd4\x7c\xdb\x58\xb2\xc8\x8b\x07\xf2\x47\x03\xe4\x2f\x2a\x29\xe3\x5d\x4b\x1e\x3b\xdb\x28\x6d\xe6\xe4\x51\x08\xe2\x9d\x0c\xd1\x60\x40\xbf\x00\x9b\x93\x0f\x1f\x67\xb8\xfe\x4f\x03\x44\x6d\x88\x6d\xb8\x21\x46\x75\xba\x06\x52\x2b\x06\x04\x5f\xb7\xea\x05\xb4\x04\x46\xaa\x23\xa1\xe4\xcb\xb7\xff\x67\xc6\x1e\x05\xc4\x85\x82\xd7\x20\x71\xb1\x6d\xa8\x25\x35\x95\xa4\x02\xb2\x51\x9d\x64\x84\x4b\x34\x02\xf9\xf5\x97\xa7\xaf\xbf\x7d\xfb\x4a\x36\x5c\x80\x8f\x36\xab\x14\x3b\x92\x1f\x33\x82\x7e\xd2\x66\x1b\xda\x72\x71\x2c\xc9\xef\xaa\x52\x56\x7d\x4e\xe6\x3d\xb8\x44\x4b\xb2\xcc\xf3\xde\xe6\xe3\x96\x44\x2a\xdd\x52\xd1\x5b\x6b\x25\x94\x2e\xc9\xcd\xdd\x6a\xb9\x5a\x3e\x3b\x33\x2e\xae\xbe\x73\x84\xf6\x8b\x5a\xa5\xb0\x2c\xb9\x2d\x09\x95\x96\x53\xc1\xa9\x01\x76\xc2\xe4\xaf\x08\x59\x2c\x76\x07\x67\x12\x5c\x42\xd6\xc4\xd0\x8b\x3c\x18\x77\x94\x31\xbf\x3e\xbe\xb7\x54\x6f\xb9\xec\x5f\x1d\x3d\x1b\xa1\xf6\x25\x69\x38\x63\x20\x3f\xcf\xfe\x99\xcd\xe6\x54\x08\x55\x53\xab\x34\xf3\xa5\x9e\x9c\x68\xe7\xaa\x1c\xb9\xcc\x5b\x8a\x74\xfd\x18\x80\xaf\x97\xbb\x03\x59\x2c\xa1\x25\x8b\xb5\xfb\x6b\x3d\xca\xc5\x5b\xef\x1f\x52\x46\x87\x6c\xcf\x99\x6d\x4a\xf2\x29\x3f\xcb\x32\xd3\xa1\x96\xc2\x5b\xc7\x51\x2b\x2b\x8d\xe3\xcf\x47\xee\xa1\x0b\x44\x1d\x3c\x3c\xff\x11\xbd\xb8\x8b\xe8\x1b\x01\x87\x32\x7c\xda\x29\xc3\x2d\x57\x98\xb3\x06\x41\x2d\x7f\x81\x37\x02\xcd\xab\xce\x5a\x25\xb3\x1d\x35\x06\x3d\x7d\xe0\x84\x5d\x44\x6c\x0b\x07\x9b\xe1\x3e\x6d\x11\x12\xc5\x65\x41\x0f\xea\xb1\x6a\x87\xa2\xb8\x52\x4c\xb6\xa7\x5a\x62\x0d\xa8\x53\x07\x9c\x94\xf1\xfc\xbc\x7c\x2e\x1e\x1d\x48\x85\x9e\x80\xa6\x02\xeb\x32\x4a\x70\x36\xfc\x98\x64\x63\x35\x95\xa9\xa4\x8a\xd6\xdf\xb7\xda\xe9\x39\xe8\x8c\xe4\xf3\xc5\xda\x90\xba\xab\x78\x9d\x55\xf0\xca\x41\xbf\xcb\xe7\xcb\x5b\xb4\xe7\xee\xb1\xb8\x25\xc5\x7b\x5f\xc4\x7f\x07\x79\xb3\xc0\xb2\x71\x92\xba\x25\x17\x1e\x0c\x8c\xd5\x0a\x5b\xb5\xa4\xb5\x4d\x14\x9f\x98\x70\x3f\xcf\xc4\x28\xa7\x01\x4d\x17\x71\x05\xe0\x66\xc9\xad\xc9\xb8\x45\x3d\xf6\xef\x18\xca\x52\x2e\xcc\x94\x7a\xf2\x5e\x42\x67\x82\x29\xae\xa3\x67\x35\x7d\x01\x6a\xcd\x69\x32\xc4\xd6\xbc\x9b\x68\xcd\xe2\xfe\xac\x1d\x82\x2a\xd6\x93\xaa\x18\xc3\x9b\x1d\x95\xa7\x18\x69\xcc\xdc\xbb\x31\x33\x5a\x7b\x53\x6b\x5c\x01\x5f\xec\xb0\x33\x43\xa8\xc5\x79\x93\xe1\xe4\xb2\xaa\x4d\xe6\x31\x4c\x8b\x19\xd0\x2d\x0c\x69\x8a\x28\x91\x9a\x41\xb1\x45\x30\x05\x9d\x06\xaf\x81\x56\x9f\x9e\x9e\x3c\xfc\x4d\x8d\x4b\x70\x62\x80\x0e\xa0\x7d\x07\x6e\xf8\x21\xcc\x36\xc6\xcd\x4e\x50\x1c\xab\x8e\xf7\xc4\x7f\xc6\xb8\x86\x3a\x78\xe2\xa6\x77\xad\x74\x5f\x7a\x4e\xf3\xfc\x7f\xc3\x56\xf7\xaf\x2e\x58\x03\x94\xc5\x48\x17\xb0\x7f\x77\xc6\xf2\xcd\x31\x73\x09\x61\xab\x96\x8e\xde\x1a\x50\xd4\x76\x0f\x20\xaf\x08\x2d\xcf\xd7\x77\xeb\xa0\x42\x75\xc8\x4c\x43\x99\x1b\x8c\x7a\x5b\xd1\x77\x4e\xff\xe1\xdf\x7c\x91\xbf\x77\x23\xd6\xb1\xe4\x1a\x3e\x8d\xdb\xb3\xf4\x4e\xd9\x2f\xd7\x13\x32\x49\xc6\x18\x78\xdf\xa0\x80\xc7\x8c\x3f\x0c\x36\x61\x74\xe8\xbc\x66\x5c\x32\x27\xdb\x4f\xf8\x3b\x1f\x75\xb4\xc2\x2d\xe9\x02\x9a\xdf\xa5\x98\x9d\x80\x8d\x8d\x2f\x03\xea\x18\x7f\x19\x4a\x28\x38\x15\x6f\x0f\xea\xb4\xf6\xc6\x72\x2b\xce\x06\xe5\x5d\x7e\xe1\x03\x78\x7e\x88\x09\x9f\xf3\x61\xea\x43\x04\x7d\xb6\xdb\xec\x98\xd1\x03\x1e\xef\xce\x01\xc7\x08\x1a\x0e\x27\xc3\x45\x13\x16\x49\xd8\xe8\x37\xd0\xc3\x05\x91\xd1\x25\x8c\x9e\x8c\x51\x4b\x77\x8a\xcb\x4b\xbc\x45\xaa\xa0\x6e\xa8\x8e\x4d\x3f\xad\xd9\xbd\xa6\x48\xaf\x7b\x0e\x0f\xdb\xec\x98\x4e\x52\x42\x7c\x75\x27\x05\xfa\x55\xc6\x22\xec\x4f\xb6\x2c\xa9\x23\x75\x6f\x64\xec\x42\xd2\xe9\x0c\x72\xb5\xf9\x74\xaf\x8c\x83\xfe\xfb\x1c\xef\x3a\x22\x32\x14\xf7\x63\x75\xda\x33\xd6\x69\xea\x32\x32\xd9\xb5\x2e\x1e\x66\x3a\x10\xd4\x45\xa6\x97\xad\xd5\x2b\x5c\x61\x1b\x72\x8b\x24\xe5\xf3\x75\x08\x2b\x14\xf5\x93\x47\xd0\x0a\xce\x0e\xfc\x28\xc7\x87\xb3\x56\x19\x1e\x06\xa7\x8c\xa7\xb7\x69\x7c\x5f\xba\x32\xbc\x62\x0f\xc5\xaf\x49\xee\xa3\xef\x8e\xc3\x14\x2e\x1c\x37\x93\xca\xe9\x79\x5d\x2c\x77\x93\x39\x4c\x5e\xe4\xa6\x2f\x16\x75\xa7\x8d\x2b\xd9\x0b\x35\x9a\x22\x09\xab\xd5\x6a\x22\xa5\xb9\x01\x81\x63\x14\xc2\xcd\x2e\x2d\x67\xb0\xa1\x9d\xb0\x3f\x1d\x79\xe7\x3b\x75\x01\x5e\x4a\x65\xdf\xf5\x11\xde\x87\x63\xde\x07\x9a\x40\xed\xcf\x03\xd0\x5a\xe9\xac\x35\xdb\x6b\xe7\x41\xa4\x7b\x5a\x47\xa7\x4b\x65\x1c\xb5\xf1\xff\x2b\xb5\x3c\x3e\xe6\x79\x18\x90\x63\xd5\xf5\xd2\x90\x4a\xfa\xe2\xfe\x0d\x00\x00\xff\xff\xd0\x4b\x0d\x5d\x9a\x0c\x00\x00")

func styleCssBytes() ([]byte, error) {
	return bindataRead(
		_styleCss,
		"style.css",
	)
}

func styleCss() (*asset, error) {
	bytes, err := styleCssBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "style.css", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

// Asset loads and returns the asset for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func Asset(name string) ([]byte, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
		}
		return a.bytes, nil
	}
	return nil, fmt.Errorf("Asset %s not found", name)
}

// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
func MustAsset(name string) []byte {
	a, err := Asset(name)
	if err != nil {
		panic("asset: Asset(" + name + "): " + err.Error())
	}

	return a
}

// AssetInfo loads and returns the asset info for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func AssetInfo(name string) (os.FileInfo, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
		}
		return a.info, nil
	}
	return nil, fmt.Errorf("AssetInfo %s not found", name)
}

// AssetNames returns the names of the assets.
func AssetNames() []string {
	names := make([]string, 0, len(_bindata))
	for name := range _bindata {
		names = append(names, name)
	}
	return names
}

// _bindata is a table, holding each asset generator, mapped to its name.
var _bindata = map[string]func() (*asset, error){
	"bad-request.tmpl.html": badRequestTmplHtml,
	"dash.js":               dashJs,
	"dashboard.tmpl.html":   dashboardTmplHtml,
	"error.tmpl.html":       errorTmplHtml,
	"head.tmpl.html":        headTmplHtml,
	"header.tmpl.html":      headerTmplHtml,
	"home.tmpl.html":        homeTmplHtml,
	"root.tmpl.html":        rootTmplHtml,
	"style.css":             styleCss,
}

// AssetDir returns the file names below a certain
// directory embedded in the file by go-bindata.
// For example if you run go-bindata on data/... and data contains the
// following hierarchy:
//     data/
//       foo.txt
//       img/
//         a.png
//         b.png
// then AssetDir("data") would return []string{"foo.txt", "img"}
// AssetDir("data/img") would return []string{"a.png", "b.png"}
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
// AssetDir("") will return []string{"data"}.
func AssetDir(name string) ([]string, error) {
	node := _bintree
	if len(name) != 0 {
		cannonicalName := strings.Replace(name, "\\", "/", -1)
		pathList := strings.Split(cannonicalName, "/")
		for _, p := range pathList {
			node = node.Children[p]
			if node == nil {
				return nil, fmt.Errorf("Asset %s not found", name)
			}
		}
	}
	if node.Func != nil {
		return nil, fmt.Errorf("Asset %s not found", name)
	}
	rv := make([]string, 0, len(node.Children))
	for childName := range node.Children {
		rv = append(rv, childName)
	}
	return rv, nil
}

type bintree struct {
	Func     func() (*asset, error)
	Children map[string]*bintree
}

var _bintree = &bintree{nil, map[string]*bintree{
	"bad-request.tmpl.html": &bintree{badRequestTmplHtml, map[string]*bintree{}},
	"dash.js":               &bintree{dashJs, map[string]*bintree{}},
	"dashboard.tmpl.html":   &bintree{dashboardTmplHtml, map[string]*bintree{}},
	"error.tmpl.html":       &bintree{errorTmplHtml, map[string]*bintree{}},
	"head.tmpl.html":        &bintree{headTmplHtml, map[string]*bintree{}},
	"header.tmpl.html":      &bintree{headerTmplHtml, map[string]*bintree{}},
	"home.tmpl.html":        &bintree{homeTmplHtml, map[string]*bintree{}},
	"root.tmpl.html":        &bintree{rootTmplHtml, map[string]*bintree{}},
	"style.css":             &bintree{styleCss, map[string]*bintree{}},
}}

// RestoreAsset restores an asset under the given directory
func RestoreAsset(dir, name string) error {
	data, err := Asset(name)
	if err != nil {
		return err
	}
	info, err := AssetInfo(name)
	if err != nil {
		return err
	}
	err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
	if err != nil {
		return err
	}
	err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
	if err != nil {
		return err
	}
	err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
	if err != nil {
		return err
	}
	return nil
}

// RestoreAssets restores an asset under the given directory recursively
func RestoreAssets(dir, name string) error {
	children, err := AssetDir(name)
	// File
	if err != nil {
		return RestoreAsset(dir, name)
	}
	// Dir
	for _, child := range children {
		err = RestoreAssets(dir, filepath.Join(name, child))
		if err != nil {
			return err
		}
	}
	return nil
}

func _filePath(dir, name string) string {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
}
