2020-07-24 12:03:49 +02:00
|
|
|
// Code generated by go-bindata. (@generated) DO NOT EDIT.
|
|
|
|
|
|
|
|
//Package main generated by go-bindata.// sources:
|
2017-06-15 19:02:08 +02:00
|
|
|
// assets/css/bootstrap.min.css
|
|
|
|
// assets/favicon.ico
|
|
|
|
// assets/js/jquery-2.1.1.js
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"compress/gzip"
|
|
|
|
"fmt"
|
|
|
|
"io"
|
|
|
|
"io/ioutil"
|
2020-07-24 12:03:49 +02:00
|
|
|
"net/http"
|
2017-06-15 19:02:08 +02:00
|
|
|
"os"
|
|
|
|
"path/filepath"
|
|
|
|
"strings"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
func bindataRead(data []byte, name string) ([]byte, error) {
|
|
|
|
gz, err := gzip.NewReader(bytes.NewBuffer(data))
|
|
|
|
if err != nil {
|
2020-07-24 12:03:49 +02:00
|
|
|
return nil, fmt.Errorf("read %q: %v", name, err)
|
2017-06-15 19:02:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
var buf bytes.Buffer
|
|
|
|
_, err = io.Copy(&buf, gz)
|
|
|
|
clErr := gz.Close()
|
|
|
|
|
|
|
|
if err != nil {
|
2020-07-24 12:03:49 +02:00
|
|
|
return nil, fmt.Errorf("read %q: %v", name, err)
|
2017-06-15 19:02:08 +02:00
|
|
|
}
|
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
// Name return file name
|
2017-06-15 19:02:08 +02:00
|
|
|
func (fi bindataFileInfo) Name() string {
|
|
|
|
return fi.name
|
|
|
|
}
|
2020-07-24 12:03:49 +02:00
|
|
|
|
|
|
|
// Size return file size
|
2017-06-15 19:02:08 +02:00
|
|
|
func (fi bindataFileInfo) Size() int64 {
|
|
|
|
return fi.size
|
|
|
|
}
|
2020-07-24 12:03:49 +02:00
|
|
|
|
|
|
|
// Mode return file mode
|
2017-06-15 19:02:08 +02:00
|
|
|
func (fi bindataFileInfo) Mode() os.FileMode {
|
|
|
|
return fi.mode
|
|
|
|
}
|
2020-07-24 12:03:49 +02:00
|
|
|
|
|
|
|
// ModTime return file modify time
|
2017-06-15 19:02:08 +02:00
|
|
|
func (fi bindataFileInfo) ModTime() time.Time {
|
|
|
|
return fi.modTime
|
|
|
|
}
|
2020-07-24 12:03:49 +02:00
|
|
|
|
|
|
|
// IsDir return file whether a directory
|
2017-06-15 19:02:08 +02:00
|
|
|
func (fi bindataFileInfo) IsDir() bool {
|
2020-07-24 12:03:49 +02:00
|
|
|
return fi.mode&os.ModeDir != 0
|
2017-06-15 19:02:08 +02:00
|
|
|
}
|
2020-07-24 12:03:49 +02:00
|
|
|
|
|
|
|
// Sys return file is sys mode
|
2017-06-15 19:02:08 +02:00
|
|
|
func (fi bindataFileInfo) Sys() interface{} {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
type assetFile struct {
|
|
|
|
*bytes.Reader
|
|
|
|
name string
|
|
|
|
childInfos []os.FileInfo
|
|
|
|
childInfoOffset int
|
|
|
|
}
|
|
|
|
|
|
|
|
type assetOperator struct{}
|
|
|
|
|
|
|
|
// Open implement http.FileSystem interface
|
|
|
|
func (f *assetOperator) Open(name string) (http.File, error) {
|
|
|
|
var err error
|
|
|
|
if len(name) > 0 && name[0] == '/' {
|
|
|
|
name = name[1:]
|
|
|
|
}
|
|
|
|
content, err := Asset(name)
|
|
|
|
if err == nil {
|
|
|
|
return &assetFile{name: name, Reader: bytes.NewReader(content)}, nil
|
|
|
|
}
|
|
|
|
children, err := AssetDir(name)
|
|
|
|
if err == nil {
|
|
|
|
childInfos := make([]os.FileInfo, 0, len(children))
|
|
|
|
for _, child := range children {
|
|
|
|
childPath := filepath.Join(name, child)
|
|
|
|
info, errInfo := AssetInfo(filepath.Join(name, child))
|
|
|
|
if errInfo == nil {
|
|
|
|
childInfos = append(childInfos, info)
|
|
|
|
} else {
|
|
|
|
childInfos = append(childInfos, newDirFileInfo(childPath))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return &assetFile{name: name, childInfos: childInfos}, nil
|
|
|
|
} else {
|
|
|
|
// If the error is not found, return an error that will
|
|
|
|
// result in a 404 error. Otherwise the server returns
|
|
|
|
// a 500 error for files not found.
|
|
|
|
if strings.Contains(err.Error(), "not found") {
|
|
|
|
return nil, os.ErrNotExist
|
|
|
|
}
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Close no need do anything
|
|
|
|
func (f *assetFile) Close() error {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// Readdir read dir's children file info
|
|
|
|
func (f *assetFile) Readdir(count int) ([]os.FileInfo, error) {
|
|
|
|
if len(f.childInfos) == 0 {
|
|
|
|
return nil, os.ErrNotExist
|
|
|
|
}
|
|
|
|
if count <= 0 {
|
|
|
|
return f.childInfos, nil
|
|
|
|
}
|
|
|
|
if f.childInfoOffset+count > len(f.childInfos) {
|
|
|
|
count = len(f.childInfos) - f.childInfoOffset
|
|
|
|
}
|
|
|
|
offset := f.childInfoOffset
|
|
|
|
f.childInfoOffset += count
|
|
|
|
return f.childInfos[offset : offset+count], nil
|
|
|
|
}
|
2017-06-15 19:02:08 +02:00
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
// Stat read file info from asset item
|
|
|
|
func (f *assetFile) Stat() (os.FileInfo, error) {
|
|
|
|
if len(f.childInfos) != 0 {
|
|
|
|
return newDirFileInfo(f.name), nil
|
|
|
|
}
|
|
|
|
return AssetInfo(f.name)
|
|
|
|
}
|
|
|
|
|
|
|
|
// newDirFileInfo return default dir file info
|
|
|
|
func newDirFileInfo(name string) os.FileInfo {
|
|
|
|
return &bindataFileInfo{
|
|
|
|
name: name,
|
|
|
|
size: 0,
|
|
|
|
mode: os.FileMode(2147484068), // equal os.FileMode(0644)|os.ModeDir
|
|
|
|
modTime: time.Time{}}
|
|
|
|
}
|
|
|
|
|
|
|
|
// AssetFile return a http.FileSystem instance that data backend by asset
|
|
|
|
func AssetFile() http.FileSystem {
|
|
|
|
return &assetOperator{}
|
|
|
|
}
|
|
|
|
|
|
|
|
var _cssBootstrapMinCss = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\xef\x8f\xe3\x38\x92\x20\xfa\xb9\x1a\xe8\xff\x41\x5b\x8d\x41\x57\x4d\x59\x2e\xf9\x77\xda\x89\xce\xb7\xfb\xe6\x0e\xb7\x03\xdc\xec\x97\x9b\x0f\x07\xf4\xf4\x7b\xa0\x25\xda\xd6\x94\x2c\x69\x24\x39\x2b\xb3\xfb\xf6\xfe\xf6\x83\xf8\x4b\x41\x32\x48\xd1\x4e\x77\xcf\xdc\x62\xb7\xee\x7a\x9c\x62\x44\x30\x18\x0c\x06\x83\x41\x32\xf8\xf9\xf7\xff\xf4\xed\x37\xd1\xef\xa3\xff\xb7\xaa\xba\xb6\x6b\x48\x1d\x3d\x2f\xa6\x8b\xe9\x32\xfa\x70\xea\xba\x7a\xf7\xf9\xf3\x91\x76\x7b\x59\x36\x4d\xab\xf3\x47\x06\xfe\x87\xaa\x7e\x6d\xf2\xe3\xa9\x8b\xe6\xc9\x6c\x16\xcf\x93\xd9\x2a\xfa\xf3\xd7\xbc\xeb\x68\x33\x89\xfe\x58\xa6\x53\x06\xf5\xdf\xf3\x94\x96\x2d\xcd\xa2\x4b\x99\xd1\x26\xfa\xd3\x1f\xff\xcc\xc9\xb6\x3d\xdd\xbc\x3b\x5d\xf6\x3d\xc5\xcf\xdd\xd7\x7d\xfb\x59\x55\xf2\x79\x5f\x54\xfb\xcf\x67\xd2\x76\xb4\xf9\xfc\xdf\xff\xf8\x87\xff\xfa\x6f\xff\xe3\xbf\xb2\x4a\x3f\x47\x9f\x7f\xff\x4f\x51\x59\x35\x67\x52\xe4\x3f\xd3\x69\xda\xb6\x3d\xb3\xc9\x74\x1e\xfd\x2f\x46\x5b\x54\x17\xfd\xaf\xe8\x98\x77\xd3\xbc\xfa\xac\x60\xa3\xdf\x7f\xfe\xf6\x9b\x53\x77\x2e\xa2\x5f\xbe\xfd\xe6\xdd\xa1\x2a\xbb\xf8\x40\xce\x79\xf1\xba\x8b\x5a\x52\xb6\x71\x4b\x9b\xfc\xf0\xf8\xed\x37\xef\xe2\xaf\x74\xff\x25\xef\xe2\x8e\xbe\x74\x71\x9b\xff\x4c\x63\x92\xfd\xf5\xd2\x76\xbb\x68\x96\x24\xbf\x63\x10\xe7\xd6\x51\xfa\xed\x37\xff\xfe\xed\x37\xdf\x7e\xb3\xaf\xb2\x57\x56\xcd\x99\x34\xc7\xbc\xdc\x45\x89\x28\x20\x4d\x97\xa7\x05\x9d\x44\xa4\xcd\x33\x3a\x89\x32\xda\x91\xbc\x68\x27\xd1\x21\x3f\xa6\xa4\xee\xf2\xaa\x64\xbf\x2f\x0d\x9d\x44\x87\xaa\x62\xb2\x3c\x51\x92\xb1\xff\x3d\x36\xd5\xa5\x9e\x30\xb2\x79\x39\x89\xce\xb4\xbc\x4c\xa2\x92\x3c\x4f\xa2\x96\xa6\x1c\xb7\xbd\x9c\xcf\xa4\xe1\x95\x67\x79\x5b\x17\xe4\x75\x17\xed\x8b\x2a\xfd\x22\x39\xb8\x64\x79\x35\x89\x52\x52\x3e\x93\x76\x12\xd5\x4d\x75\x6c\x68\xdb\x4e\xa2\xe7\x3c\xa3\x95\x8e\x97\x97\x45\x5e\xd2\x98\xa1\xf7\xed\x7e\xa6\x3d\xfb\xa4\x88\x49\x91\x1f\xcb\x5d\xb4\x27\x2d\xed\x21\x20\xe9\x5d\x59\x75\xd1\x87\x1f\xd3\xaa\xec\x9a\xaa\x68\x7f\x8a\x3e\x6a\x24\xcb\xaa\xa4\x3d\xa9\x13\xed\x35\x67\x10\xcc\x8f\xa7\x3c\xcb\x68\xf9\xd3\x24\xea\xe8\xb9\x2e\x48\x47\x23\x0b\x4f\x56\xc3\x4a\xf6\x24\xfd\xd2\xcb\xa3\xcc\xe2\xb4\x2a\xaa\x66\x17\x75\x0d\x29\xdb\x9a\x34\xb4\xec\x24\xe4\x8e\xa4\x5d\xfe\xdc\x8b\x7b\x77\xaa\x9e\x69\xc3\x30\xab\x4b\xd7\x33\x0d\x3a\x65\xbf\x6f\x7e\xec\xf2\xae\xa0\x3f\x71\xd2\x55\x93\xd1\x26\xde\x57\x5d\x57\x9d\x77\xd1\xac\x7e\x89\xb2\xaa\xeb\x68\x26\x7b\x77\x12\xb5\x5d\x53\x95\xc7\x41\x93\xbe\x8a\xe6\x6c\x12\x49\x34\x3b\x94\x43\x71\xdb\xbd\x16\x74\x17\xe5\x1d\x29\xf2\x54\x00\x9c\x66\x9a\x86\x4c\xd7\x1b\x7a\x8e\x92\x47\x85\x92\xff\x4c\x77\xd1\x9c\x9e\x05\xf8\x99\x34\x5f\x18\x82\x68\xed\x77\x49\xc2\x80\x07\x39\xec\xa2\xef\x0e\x07\x59\x7d\x7b\x26\x05\xd0\x74\x4e\xed\x41\x29\x68\x7b\xe9\x1b\x71\xa9\x19\x44\x5d\xb5\x79\xaf\x3d\xbb\xa8\xa1\x05\xe9\x05\x66\x70\xb1\x59\x31\xb5\x67\xca\xa0\x3a\x2e\x40\x21\x64\x05\x5d\x55\xef\xa2\x78\xba\x52\x8d\x69\x2f\x7b\x21\x69\x2e\xe2\x78\x3a\x1f\x0a\xf3\xf3\x11\x74\xc3\xd0\x4d\xed\xf3\x91\x2b\xd7\xae\xa9\xaa\x8e\xeb\x55\xdf\xa9\x87\xa2\xfa\xba\x8b\xb8\xfe\x08\x50\x3e\x82\x34\xf9\xce\xe8\x39\x5a\x26\xf5\x8b\x94\x3e\xd7\x05\xad\x35\x72\xe0\xef\xab\x97\xbe\xe1\x79\x79\xdc\x45\xbd\x1e\xd3\x92\x7d\xe3\x23\xbf\xfa\xd9\x57\xee\x28\x12\x95\xd6\x82\xa7\x81\x6b\x72\xe9\x2a\x51\x98\x56\xbd\x41\xf8\xb2\xcf\xfa\x41\x49\x27\x51\x4b\xce\xb5\x6d\xaa\xce\x55\x59\xb5\x35\x49\xe9\x64\xf8\x69\xf4\xd6\x4c\x49\x72\x7f\xe9\xba\xde\x28\xe4\x65\x7d\xe9\x26\x51\x55\x77\xdc\x82\x44\x2d\x2d\x68\xda\xf5\x63\xed\xa5\x23\x0d\x25\xba\xad\x92\xf4\x7a\x03\x70\xa2\x4d\xde\x3d\x0e\x6a\x27\xbe\x68\x15\x18\x6d\x7a\xce\xdb\x7c\x5f\x50\x83\x07\x5e\x25\x57\x87\xde\x74\xb2\xd1\x7a\xa8\x9a\xb3\x36\xb6\x25\x34\xb3\xd3\x8c\xed\x1f\xbb\xd7\x9a\xfe\xc0\xbf\xff\x34\x81\xdf\x1a\xda\xd2\x4e\xff\xd4\x5e\xf6\xe7\xbc\xe3\xa3\x58\xf6\x26\xa9\x6b\x4a\x1a\x52\xa6\x74\x17\x71\x32\xac\x39\x97\xa6\xed\xdb\x53\x57\x79\xd9\xd1\x46\xab\xfe\xc7\x2c\x6f\xc9\xbe\xa0\xd9\x4f\x1a\x23\xea\x2b\x1f\x86\x82\x40\x46\x0f\xe4\x52\xe8\x02\xd9\xed\x98\x9e\x1c\xaa\xf4\xd2\xc6\x79\x59\xf6\xc6\x9b\xd1\xb0\x0b\xf8\
|
|
|
|
|
|
|
|
func cssBootstrapMinCssBytes() ([]byte, error) {
|
2017-06-15 19:02:08 +02:00
|
|
|
return bindataRead(
|
2020-07-24 12:03:49 +02:00
|
|
|
_cssBootstrapMinCss,
|
|
|
|
"css/bootstrap.min.css",
|
2017-06-15 19:02:08 +02:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
func cssBootstrapMinCss() (*asset, error) {
|
|
|
|
bytes, err := cssBootstrapMinCssBytes()
|
2017-06-15 19:02:08 +02:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
info := bindataFileInfo{name: "css/bootstrap.min.css", size: 141513, mode: os.FileMode(438), modTime: time.Unix(1565946440, 0)}
|
2017-06-15 19:02:08 +02:00
|
|
|
a := &asset{bytes: bytes, info: info}
|
|
|
|
return a, nil
|
|
|
|
}
|
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
var _faviconIco = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x0b\x70\x55\xc7\x79\xde\x7b\xce\x45\x12\xb2\x90\xc4\xc3\xe6\x61\x3b\x90\xf8\x31\xc4\x19\x6c\x32\xe3\xc4\x34\xe3\xc6\x34\x6d\xed\xd4\x69\x62\x32\x49\x9a\xa6\x75\xea\x36\x33\xee\xd8\x9e\xb4\x75\xdc\x7a\xa6\xc5\x31\x02\xa6\xd3\x84\x47\x28\x6f\x3b\xc6\x3c\xcc\xeb\x9e\xbd\x08\x21\x04\x92\x28\x12\x0e\x08\x5b\x3c\xec\x02\x92\x78\x08\x21\x09\x41\x25\x24\x10\xe8\x71\xb5\xe7\xdc\xd7\xb9\xf7\xef\xfc\xff\x9e\x73\x74\x25\xdd\x97\x24\x82\x33\x1e\xce\xcc\x3f\x7b\xee\x9e\xdd\xff\xff\xf6\xdf\x7f\xff\xfd\xf7\xdf\xcb\x98\x8b\xa9\x2c\x3f\x1f\xcb\x19\xec\x15\x37\x63\x5f\x67\x8c\xcd\x98\x21\x7f\x6b\xf9\x8c\x6d\x72\x33\x36\x7b\xb6\xf5\xfb\x11\xc6\x9e\xbd\x97\xb1\x99\x8c\xb1\x7c\x6c\xc7\x64\x3d\x3d\x6e\x76\xdb\x1f\xe1\x75\xab\x42\x53\x7e\x22\x3c\x6c\x91\xf0\xb0\x02\x22\xae\x14\x08\x8f\xab\x40\xec\x64\x92\xf0\x5d\x53\xfe\x59\xec\x64\x5f\x15\x1e\xa6\x08\x4f\x7f\x7f\xdf\x7a\x96\xa1\x97\x3c\xb8\x3f\x78\xfa\x0d\x08\x9e\x5d\x08\xc1\xda\x5f\x82\x51\xf6\x65\x30\xca\x67\x41\xf0\xcc\xbf\x11\x19\x07\x1e\x07\xbd\x78\x2a\x18\x65\x8f\xb5\x0b\x4d\x7d\xad\x6f\x07\x73\x0b\xcd\x45\xfd\xbb\x17\xb3\x0c\xa3\x62\xce\xfe\xa8\xd1\x0a\xf8\x98\x6d\x25\x10\x38\xfe\x53\x88\xdc\x3a\x01\x66\x6b\x11\x11\xbe\x07\x8e\xfd\x2d\x84\x2e\x2c\x05\xff\xd1\x79\x3d\xc2\xc3\x7e\x20\x78\x06\x13\x5c\x89\xe9\xdf\x06\xd1\x50\x2f\x04\x4e\xfc\x0c\xcc\x6b\xa5\x60\x1c\xfd\x21\x74\x6c\x1e\x47\x84\xef\x58\x17\xf8\xe4\x65\x30\x6f\x54\x81\x71\xe0\x89\xea\xbe\x2d\x6c\xd2\x80\xfe\xfe\x76\x30\x6f\x1c\x81\x60\xed\x7c\x08\x9e\x5d\x0c\x2d\xeb\xc7\x41\xed\xd2\x29\x50\xbb\x74\x32\xbd\x63\x1d\x7e\xc3\x36\xa1\x73\xff\x19\x14\x1e\x36\x4f\x78\xc7\xc4\xf4\xef\x80\x70\xd3\xfb\x10\x6e\x5c\x0f\xdd\x65\x73\xe1\xdc\xf2\x89\xd0\xb1\x25\x0f\x6e\x7c\x90\x07\xe7\x7f\x33\x81\xea\xf0\x5b\xb8\x79\x13\x61\xd0\x8b\xa7\x2c\x09\x7c\xfc\x57\xac\x7b\x11\xf6\x7f\x6a\x5f\xd4\xb8\x06\xa1\xfa\x15\x10\x6e\x7a\x0f\x3a\xb4\xc7\xa0\x61\x55\x3e\x04\x8f\xfc\x39\x84\x3e\xfa\x4b\x68\x5c\x93\x4f\x75\xf8\x2d\x74\x71\x05\x44\x45\x13\xea\x54\xeb\x7c\x85\xa9\x48\xf8\x1e\x15\xcd\xf4\xcd\xee\x7f\x71\x65\x3e\x04\x3e\x7c\x86\x78\x5c\x5a\x1d\xd3\xbf\x7e\x05\xa0\x2c\x94\x89\xb2\x03\xd5\x3f\x66\x88\x05\x31\x21\x36\x1b\xff\xd9\xe5\x13\xe1\xda\xc6\x5c\x68\xdf\x94\x4b\x63\x71\xf0\x37\xbd\x0f\x38\x56\x1c\x33\x8e\x1d\x75\x80\xba\x40\x9d\x0c\xd6\x5f\xcd\x92\x29\x44\x83\xf5\x87\xba\x76\xfa\x73\x85\xe1\x5c\x18\x07\x9e\x38\x86\x18\x68\x8e\xac\xf9\xbb\xbe\x39\x87\xc8\x99\xbf\x13\x3f\xa3\x39\xc6\xb9\x8e\xed\x4f\xb6\xe0\x61\x3f\x40\xdb\x40\x1b\x41\x5b\x19\x62\x3f\xc7\x7f\x4a\xb6\x85\x0f\xda\x9a\xdd\x9f\xd6\x80\xe6\x62\xd2\x26\xd5\xd7\xd0\x46\xc9\x56\x0f\x3c\xde\x6f\xbf\xe5\xb3\xc8\xa6\xd1\xb6\xc9\xc6\x4f\xbf\x01\x68\xf3\x68\xfb\xce\x3a\xf2\x30\x26\x76\x32\x85\xd6\x08\xae\x95\xc1\xeb\x87\xd6\x14\xb3\x69\x11\xad\x39\xaf\x5b\x1d\xed\xfa\x05\x60\x8c\x65\x32\xc6\x54\x8b\x5c\x31\x64\x3d\x0b\x63\xe8\xb0\x45\x2d\x56\xdf\x99\x96\x8f\x99\x1b\xeb\x67\xf2\x47\x8b\xea\xf3\xf9\x08\xae\x22\xe5\x09\xae\x4e\x17\x5c\xfd\xc2\x28\x69\x8a\xe0\xca\x58\xb4\x3d\xdb\x17\xa6\x29\xff\x5f\x04\x57\x5b\x85\xe6\xba\x92\x90\xb8\x1a\x43\x4a\x4c\xbd\x62\xd7\xb7\x08\xae\xd6\x0b\xae\xfe\x8f\xe0\xea\x9b\x38\x1e\x1f\x1f\x4b\xfe\x34\xb5\x7c\xa5\x40\xec\xca\x02\xbd\x64\x3a\xe8\xfb\xbe\x38\x94\x4a\xa6\x83\xf0\x66\x82\xd0\x14\x10\x9a\x0b\x44\xe1\x38\x5c\x2b\x44\xf8\x4e\x75\x5c\x01\xe1\x75\x03\xf2\x11\x9a\x2b\x2a\xb8\x52\x2b\xb8\x3a\x4f\x68\x8a\x92\x0c\x03\xc9\xf7\xb0\x02\xa3\xfc\x2b\x10\xe9\xae\x85\xa8\x7e\x15\xa2\xfa\x95\x18\xba\x0a\xa1\xb3\x8b\x49\xbe\xbe\xe7\x5e\x08\xfe\xef\x3f\x81\xd9\x51\x09\x91\xbe\x4b\x44\xf8\x8e\x75\xf8\x4d\x70\x37\x04\x3e\xfe\x11\xf9\x14\xbd\x68\x3c\xe2\xe8\x14\x5c\x7d\x49\x78\x99\x2b\x11\x06\x47\xfe\x81\xd9\x10\x0d\xde\x82\xc1\x8f\x79\xe3\x30\xe8\x7b\xa7\x81\x51\xfa\x28\x98\xd7\xca\x00\xa2\xa6\xfc\x80\x65\xcc\x3b\x7e\xc3\x36\xfa\xde\x07\x08\x93\xd9\x5a\x0c\xfa\xfe\x87\x41\x68\xac\x43\x70\xf5\x59\x92\xe3\x1d\xea\x1a\x92\xc9\x8f\x06\x3a\xc1\xff\xe1\x5c\xda\x67\x91\x27\x3e\x91\xde\x0b\xe4\xaf\xfc\x47\x5f\x20\xc2\x77\xac\x23\xac\x1d\x95\xd4\xd6\xff\xe1\x9f\x10\x2f\xfa\x5d\xf2\x05\xc4\x70\x4c\x70\xf5\x7e\x94\
|
2017-06-15 19:02:08 +02:00
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
func faviconIcoBytes() ([]byte, error) {
|
2017-06-15 19:02:08 +02:00
|
|
|
return bindataRead(
|
2020-07-24 12:03:49 +02:00
|
|
|
_faviconIco,
|
|
|
|
"favicon.ico",
|
2017-06-15 19:02:08 +02:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
func faviconIco() (*asset, error) {
|
|
|
|
bytes, err := faviconIcoBytes()
|
2017-06-15 19:02:08 +02:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
info := bindataFileInfo{name: "favicon.ico", size: 15086, mode: os.FileMode(438), modTime: time.Unix(1565946440, 0)}
|
2017-06-15 19:02:08 +02:00
|
|
|
a := &asset{bytes: bytes, info: info}
|
|
|
|
return a, nil
|
|
|
|
}
|
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
var _jsJquery211Js = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xce\xcf\x2b\xce\xcf\x49\xd5\xcb\xc9\x4f\xd7\x50\x4a\xad\x48\xcc\x2d\xc8\x49\x55\xd2\xb4\x06\x04\x00\x00\xff\xff\xc8\x9f\xbd\x5f\x17\x00\x00\x00")
|
2017-06-15 19:02:08 +02:00
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
func jsJquery211JsBytes() ([]byte, error) {
|
2017-06-15 19:02:08 +02:00
|
|
|
return bindataRead(
|
2020-07-24 12:03:49 +02:00
|
|
|
_jsJquery211Js,
|
|
|
|
"js/jquery-2.1.1.js",
|
2017-06-15 19:02:08 +02:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
func jsJquery211Js() (*asset, error) {
|
|
|
|
bytes, err := jsJquery211JsBytes()
|
2017-06-15 19:02:08 +02:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2020-07-24 12:03:49 +02:00
|
|
|
info := bindataFileInfo{name: "js/jquery-2.1.1.js", size: 23, mode: os.FileMode(438), modTime: time.Unix(1591451173, 0)}
|
2017-06-15 19:02:08 +02:00
|
|
|
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) {
|
2021-01-09 04:41:20 +01:00
|
|
|
cannonicalName := strings.ReplaceAll(name, "\\", "/")
|
2017-06-15 19:02:08 +02:00
|
|
|
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){
|
2020-07-24 12:03:49 +02:00
|
|
|
"css/bootstrap.min.css": cssBootstrapMinCss,
|
|
|
|
"favicon.ico": faviconIco,
|
|
|
|
"js/jquery-2.1.1.js": jsJquery211Js,
|
2017-06-15 19:02:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// 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
|
|
|
|
}
|
2017-07-10 17:32:42 +02:00
|
|
|
|
2017-06-15 19:02:08 +02:00
|
|
|
var _bintree = &bintree{nil, map[string]*bintree{
|
2020-07-24 12:03:49 +02:00
|
|
|
"css": {nil, map[string]*bintree{
|
|
|
|
"bootstrap.min.css": {cssBootstrapMinCss, map[string]*bintree{}},
|
|
|
|
}},
|
|
|
|
"favicon.ico": {faviconIco, map[string]*bintree{}},
|
|
|
|
"js": {nil, map[string]*bintree{
|
|
|
|
"jquery-2.1.1.js": {jsJquery211Js, map[string]*bintree{}},
|
2017-06-15 19:02:08 +02:00
|
|
|
}},
|
|
|
|
}}
|
|
|
|
|
|
|
|
// 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, "/")...)...)
|
|
|
|
}
|