// 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 benarchd web interface.
//
// This package is auto-generated by "jiri go generate v.io/x/ref/services/ben/benarchd/internal"
// which in-turn uses https://github.com/jteeuwen/go-bindata/
// Code generated by go-bindata.
// sources:
// badquery.tmpl.html
// benchmarks.tmpl.html
// chart.js
// footer.tmpl.html
// home.tmpl.html
// nobenchmarks.tmpl.html
// runs.tmpl.html
// sortable.css
// sortable.js
// styling.tmpl.html
// 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 _badqueryTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x92\x4f\x4f\xf3\x30\x0c\xc6\xef\xfb\x14\x7e\x73\x6f\xa3\xe9\x95\x90\x36\x85\x4a\xfc\xd9\x79\x50\x71\x41\x08\x4d\xa1\x0d\x6b\xc0\x4d\xa6\xc4\x5b\x57\x55\xfd\xee\x24\x6b\x07\x87\x82\x04\xbd\xd4\x56\x7e\x76\x1e\xfb\x89\xf8\x77\xbb\xbe\x79\x78\xbc\x5b\x41\x45\x35\x66\x33\x11\x7f\x70\xac\xd1\xf8\x4b\x56\x11\xed\x96\x9c\x37\x4d\x93\x36\xff\x53\xeb\xb6\x7c\xbe\x58\x2c\xf8\x31\x32\x2c\xb2\x4a\x96\xd9\x0c\xc2\x27\x48\x13\xaa\x6c\x95\xe7\xeb\x7c\x09\xd7\xca\x14\x55\x2d\xdd\x3b\xe4\xca\xef\x91\x3c\x5c\xb9\xa2\xd2\x07\x25\xf8\xc0\x9d\x6a\xba\x8e\x54\xbd\x43\x49\x0a\x98\xa7\x16\xb5\xd9\xb2\xbe\x9f\x09\x3e\xb4\x15\x2f\xb6\x6c\x23\x29\x4a\x7d\x80\x02\xa5\x0f\x8a\xea\x12\x13\x94\xad\xdd\x13\xc4\xf0\xcd\x8f\x19\x1b\x65\xd4\x52\x9b\x29\xbb\xd9\x14\xd6\x90\x32\x67\x6c\xda\x73\xeb\x74\xf9\xe3\x61\xa1\x10\xe1\x1c\x24\xc9\x3c\x29\x6c\x18\x5f\xf0\x80\xfd\xb2\xe4\x62\x28\x39\xc3\xfa\x13\x0d\xc3\x3b\x2d\x31\xd1\x41\xa0\x67\x99\x72\xce\x3a\xc1\x75\xf6\xd4\x75\xe9\xfd\x5e\xb9\xb6\xef\x9f\x41\x7b\x30\x96\xe0\x20\x51\x97\xcb\xb0\xb6\x74\x15\xb1\xb0\xaa\xb1\xdd\x1f\x84\x7c\xab\xfd\x2b\x11\x3c\x2e\x70\x6a\xcf\xab\xb5\x41\x28\x3b\x5d\x39\xe2\x82\x0f\xfe\x04\xbb\x4e\x0f\xe7\x23\x00\x00\xff\xff\x5f\x6f\xa4\x6d\x49\x02\x00\x00")

func badqueryTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_badqueryTmplHtml,
		"badquery.tmpl.html",
	)
}

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

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

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

func benchmarksTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_benchmarksTmplHtml,
		"benchmarks.tmpl.html",
	)
}

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

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

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

func chartJsBytes() ([]byte, error) {
	return bindataRead(
		_chartJs,
		"chart.js",
	)
}

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

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

var _footerTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\xd0\xbf\x6e\x03\x21\x0c\x06\xf0\xfd\x9e\x02\xb1\x5f\xbc\x57\x84\xb5\x7d\x8b\x88\x80\xc9\x59\xe5\x4f\x85\xcd\x2d\x28\xef\x5e\x74\x69\x97\x56\xb7\x21\xf9\x07\x7c\x9f\xc7\x08\x18\xa9\xa0\xd2\xb1\x56\xc1\xa6\x9f\xcf\xc5\xbc\x8e\xca\x27\xc7\x7c\xd5\x39\xa4\x35\x53\xa1\xf5\x47\xd8\x45\x29\x13\x68\x3f\x99\xdf\x6e\x09\xa3\xac\x8c\x5e\xa8\x96\x43\x4f\xdf\xd3\x39\xa7\xf2\xb9\x26\x62\xf9\xb5\x89\xac\x71\x6a\x6b\x18\xaf\x1a\xb4\xfd\xa8\x19\x0d\x38\x6b\x60\x0e\xfe\x8b\x4d\xe4\x8b\xdf\x00\x1e\x24\x5b\xbf\x5f\x7c\xcd\xb0\xbb\xe2\x02\xf5\x0c\x8f\x7a\x99\x06\xa4\x21\x42\x76\x3c\xbf\x03\xc6\xb6\x93\x47\x86\x3b\xce\x70\xef\xc7\xa5\x3f\xaf\x43\x4f\x47\x47\x98\x25\xed\x62\xe0\x15\xd4\x2e\x63\x60\x09\x73\x3f\xdf\x01\x00\x00\xff\xff\xba\xbb\x8c\x27\x34\x01\x00\x00")

func footerTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_footerTmplHtml,
		"footer.tmpl.html",
	)
}

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

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

func nobenchmarksTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_nobenchmarksTmplHtml,
		"nobenchmarks.tmpl.html",
	)
}

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

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

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

func runsTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_runsTmplHtml,
		"runs.tmpl.html",
	)
}

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

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

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

func sortableCssBytes() ([]byte, error) {
	return bindataRead(
		_sortableCss,
		"sortable.css",
	)
}

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

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

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

func sortableJsBytes() ([]byte, error) {
	return bindataRead(
		_sortableJs,
		"sortable.js",
	)
}

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

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

var _stylingTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xa4\xd0\x3d\x4e\xc4\x30\x10\x05\xe0\x7e\x4f\x61\xb9\x85\xd8\xd0\x50\xa0\x18\x6a\x0a\x0e\x61\xd9\x13\x67\xc0\x7f\xf2\x8c\x76\xb5\x8a\xf6\xee\x4c\x02\x15\x15\x12\xa5\x5f\xf1\x3d\xcf\xdb\xb6\x08\x0b\x56\x50\x9a\xf8\x9a\xb1\x26\x7d\xbb\x9d\xe6\x02\xec\x55\xf5\x05\x9c\x3e\x23\x5c\x7a\x1b\xac\x55\x68\x95\xa1\xb2\xd3\x17\x8c\xbc\xba\x08\x67\x0c\x30\x1d\x8f\x7b\x85\x15\x19\x7d\x9e\x28\xf8\x0c\xee\xd1\x3c\xe8\x97\xd3\x2c\xde\xa7\x1a\x90\xdd\x81\x03\xad\x00\xe2\xac\x03\x16\xa7\x57\xe6\x4e\xcf\xd6\x12\xb7\xe1\x13\x98\xd4\x5a\xca\xe0\x3b\x92\x09\xad\xd8\xd0\xa2\x64\xc0\x25\x66\x83\xcd\x0a\x68\x9e\x6c\xf1\x0c\x43\x5a\x0c\xd6\x88\xa9\x4d\x5d\x7c\x53\xb0\x9a\x40\xb4\xf7\x51\x18\xd8\x59\xd1\x08\xff\xf4\x77\xf3\x43\xc8\xd9\x7e\x93\x7f\xbc\x65\x91\x85\xe8\x77\x13\xca\x6e\xaf\x8b\x2f\x98\xaf\xee\xfd\xa7\xe0\xee\x4d\xc2\xfd\xcb\xdb\x06\x35\xca\xe2\x5f\x01\x00\x00\xff\xff\x26\x75\xc0\xb2\x87\x01\x00\x00")

func stylingTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_stylingTmplHtml,
		"styling.tmpl.html",
	)
}

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

	info := bindataFileInfo{name: "styling.tmpl.html", 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){
	"badquery.tmpl.html":     badqueryTmplHtml,
	"benchmarks.tmpl.html":   benchmarksTmplHtml,
	"chart.js":               chartJs,
	"footer.tmpl.html":       footerTmplHtml,
	"home.tmpl.html":         homeTmplHtml,
	"nobenchmarks.tmpl.html": nobenchmarksTmplHtml,
	"runs.tmpl.html":         runsTmplHtml,
	"sortable.css":           sortableCss,
	"sortable.js":            sortableJs,
	"styling.tmpl.html":      stylingTmplHtml,
}

// 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{
	"badquery.tmpl.html":     &bintree{badqueryTmplHtml, map[string]*bintree{}},
	"benchmarks.tmpl.html":   &bintree{benchmarksTmplHtml, map[string]*bintree{}},
	"chart.js":               &bintree{chartJs, map[string]*bintree{}},
	"footer.tmpl.html":       &bintree{footerTmplHtml, map[string]*bintree{}},
	"home.tmpl.html":         &bintree{homeTmplHtml, map[string]*bintree{}},
	"nobenchmarks.tmpl.html": &bintree{nobenchmarksTmplHtml, map[string]*bintree{}},
	"runs.tmpl.html":         &bintree{runsTmplHtml, map[string]*bintree{}},
	"sortable.css":           &bintree{sortableCss, map[string]*bintree{}},
	"sortable.js":            &bintree{sortableJs, map[string]*bintree{}},
	"styling.tmpl.html":      &bintree{stylingTmplHtml, 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, "/")...)...)
}
