Host snippets with a git backend. Like Gists but OpenSource. https://gist.sigpipe.me/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 
 
 

285 lines
14 KiB

// Code generated by go-bindata.
// sources:
// conf/app.ini
// conf/locale/locale_en-US.ini
// conf/locale/locale_fr-FR.ini
// DO NOT EDIT!
package bindata
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 _confAppIni = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\xff\x52\xdb\xca\x15\xfe\x7f\x9f\xe2\xe0\x4e\x7a\xa1\x63\xc0\xc0\x2d\xa1\x38\xee\x5c\x61\xcb\xa0\xc1\xb6\x5c\x49\x0e\x97\x66\x32\xca\x22\x1d\xdb\x3b\xac\x76\x9d\xdd\x15\xd8\xfd\xa3\xaf\xd3\x07\xe9\x8b\x75\x76\x25\x19\x9b\x74\xe6\x26\x99\x09\x61\x75\xce\xb7\x67\xbf\xef\xfc\xf2\xa6\xd3\x74\xe2\x8d\x7d\xe8\xc1\x82\x99\x13\xb3\x36\xa4\xef\x4d\xd2\xc8\xbf\x0d\xe2\xc4\x8f\xa0\x07\x46\x95\x48\xbc\x49\x38\x79\x1c\x87\xb3\x38\xed\x47\xbe\x97\xf8\xcd\x39\xf9\xa2\x51\xbd\xa0\xfa\x4a\xa6\x51\x98\x84\xfd\x70\x04\x3d\x58\x1a\xb3\x22\x83\x70\xec\x05\x13\xe8\x01\x97\x19\xe5\x4b\xa9\x0d\x89\xc2\x30\x49\x67\x91\x35\xf9\x70\xd8\xd8\x1f\xe9\xeb\xd3\xd3\x0f\x87\x95\xf9\x91\xbe\xfe\x70\x78\x97\x24\xd3\x74\x1a\x46\xc9\x91\x3e\x25\xb3\x49\xf0\x7b\x1a\x87\xfd\x7b\x3f\x49\xa7\x7e\x34\x0e\xe2\x38\x08\x2d\xec\xe5\xe5\x25\x71\x96\xde\x60\x60\xc3\xec\x9c\xb8\xbf\x64\xeb\x0d\x3d\xf8\xb5\xd3\xe9\x90\x41\x10\x7b\x37\x23\x3f\x8d\xc2\x59\xe2\x47\xe9\x28\xbc\x85\x1e\xcc\x29\xd7\x48\xba\x30\x5b\xad\x50\x01\xc7\x17\xe4\x20\xe7\x60\xb0\x58\x71\x6a\x10\xa8\xc8\x41\x1b\x6a\x58\x06\x73\xc6\x11\x56\xd4\x2c\x49\x17\x72\x9c\xd3\x92\x1b\x60\x1a\xcc\xb2\x3a\x85\xd7\x25\x2a\x6c\xc8\xb3\x5f\x70\x8d\x59\x69\x30\x27\x71\xe2\x25\x41\x3f\x75\xcf\x9e\x7a\xc9\x1d\xf4\x08\xf9\x92\x53\x43\x9f\xa8\xc6\xaf\xa4\x0b\x3e\x33\x4b\x54\xd0\x2a\x36\xfa\x3b\x6f\xb5\xa1\xb5\x92\xda\x2c\x14\xea\x16\x48\x05\x2d\xfd\x9d\x33\x83\x17\xad\x36\x6c\x64\x09\x19\x15\x90\x49\x21\x30\x33\x60\x24\x24\x6c\x70\x03\xaf\xcc\x2c\x61\xbc\x89\xff\x31\x82\x95\x92\x46\x66\x92\x93\xc1\x4d\x9a\x3c\x4e\xad\x42\xb5\x3f\xb9\x0b\x63\xcb\xc6\xd9\xf9\x47\xc7\xd1\xd9\xf5\xc5\x45\xe7\x92\x34\xaa\xcb\x85\x26\xb3\xd8\x49\xad\xa4\x34\x64\xea\xc5\xf1\xc3\x00\x7a\xa4\x0b\x43\x1b\xc5\x4e\x4c\x82\x6f\xda\x80\x75\xd0\x39\xd3\xf4\x89\xa3\x0d\x5b\xe1\xf7\x92\x29\xac\xa2\x7e\x41\xc5\xe6\x9b\xe3\x79\xc9\x79\x8b\xc4\xf1\x28\x1d\x87\x03\x7b\x51\x6d\xdf\xc0\x36\x8f\x73\x54\xb7\x0c\xcb\x9f\x5a\x6d\x28\x35\x02\x7d\xd2\x92\x97\xe6\x8d\x5d\xe1\x9e\xaf\x0d\x55\x06\xa8\x06\x9b\x70\x2c\x43\x52\x31\xda\x10\x7f\x92\x3f\x11\xf2\x45\xe1\x4a\x6a\x66\xa4\xda\x58\x7a\x23\x29\x4d\x85\x32\x97\x0a\xb4\x91\x8a\x89\x05\x6c\x6d\x18\xea\x5f\x34\x58\x3d\xda\xbb\xc2\xb6\xfe\x7d\xfa\xa9\xd4\xa8\x04\x2d\xf0\xef\xa7\x0b\x66\xd6\xe6\x78\xd7\xa7\xe5\xf2\xd8\x69\xc9\xe5\xe2\x2b\xd9\x93\xb7\x0b\x7d\x2a\xe0\x09\xa1\x95\x49\xa1\x25\xc7\xfa\x7d\x36\x89\x5a\xfb\xd7\x34\x06\x36\x0b\x35\x42\x26\x8b\x82\x5a\x61\x35\xae\xa8\xb2\x39\x58\x94\xdc\xb0\x15\x47\x28\x64\x8e\xba\x0d\x78\xb2\x38\xd9\xba\xb5\x5d\x5e\xb6\x48\x4d\x6e\x7d\x4a\xba\x70\x53\xce\xe7\x2e\xa5\xc5\xc2\x2c\x6d\x4e\x67\x4b\x2a\x04\xf2\x36\x3c\x23\xae\x80\x39\x0e\x99\x0b\x81\xcd\x1d\xb3\xb9\x14\xbf\x18\x78\x16\xf2\x15\x5e\x97\xd4\x54\x1f\x4f\xc8\xcd\x6c\x38\xb4\xf5\xe2\xdb\x6a\x3b\xeb\x74\x76\xf2\x35\x51\x34\x73\xc2\x07\x62\x2e\xed\xcf\x07\xaa\x84\xfd\xe9\x2b\x25\x95\xfd\xcf\x90\x1a\xca\xdf\x3d\xb8\xf2\x22\x23\xff\xb3\x6f\x5b\x80\xfb\x95\x34\xe9\xb0\xa5\xcb\x3e\xd6\x65\x9a\xa3\xf7\xa4\x3e\xb7\x72\x72\xa4\x2f\x08\x58\xac\xcc\xc6\xf2\xc4\xc4\x12\x15\x33\x0d\xde\x16\xc9\xf1\xf2\x1e\xc6\x1e\xfe\x04\x46\x17\x92\xa5\xad\x60\x61\x33\x55\x03\x2d\x8d\x2c\xa8\xc1\x1c\xb8\x5c\x80\x92\xc6\xca\x72\xa8\x5f\x99\xc9\x1c\xb5\x73\xc9\xb9\x7c\xb5\x49\x25\x57\x86\x49\xa1\x8f\xc8\x28\xbc\x4d\xa3\x30\xd9\x69\x91\x5d\x88\x71\x51\xa0\x30\x0e\x24\xa7\x8c\x6f\xc8\xc0\x0b\x46\x8f\x3f\xd8\x8d\xe9\x1a\x34\xfb\x17\x82\x5e\xb2\xb9\xb1\x17\x68\x26\x16\x1c\x9d\xd4\x7b\x5c\x9e\x5f\x41\x81\x54\x68\x38\x83\x4f\x9f\xe0\xfc\xaa\x0d\xe7\x7f\xbd\x1c\xdf\x90\xb1\xf7\x7b\x1a\x07\xff\xf4\xd3\xf8\x2e\x18\xda\x9a\x3f\xbf\xaa\x71\x39\x13\x08\xa2\x2c\x9e\x50\xbd\x03\x76\x4e\xa3\x60\xe2\xc7\x95\xce\xf6\x8f\xd5\x7a\xbd\x62\x0a\x73\xc8\xe9\x46\x5b\x0f\x1b\xbc\x6b\x85\x87\x39\x72\xb4\x2d\x72\x6e\x50\x41\x41\xd7\xce\xe4\xc8\xc1\x0c\xbc\x47\x8b\xf2\x71\x2b\x86\xe6\x34\x7b\xfe\x41\x0d\x77\xfa\x53\x72\x3c\xe0\xd3\x52\xca\x67\x98\x45\x23\xe2\x26\x47\x55\x75\x27\x6b\xa9\x0a\xd7\x41\x9d\x52\x55\x60\x4e\x1f\x26\x05\x79\xcf\x6b\x54\x09\x87\x2f\xa8\x36\x36\xd8\xda\x20\x75\x2a\xfc\x60\x26\x45\x56\x03\x3a\x2d\x70\x9d\xa1\xd6\xa8\x61\x0d\x3b\x04\x6f\x4b\x62\x4c\xd7\xac\x28\x8b\x8a\x26\x23\xab\x22\xe3\x72\xb1\x40\xe5\x40\xf4\x2e\x2f\x17\x6e\x5e\x6a\xcd\xa4\xd8\x6b\xff\x58\x48\xb5\xb1\x65\x53\xb7\x09\xcb\x9c\xc2\x9c\xe9\x77\x15\x54\x1b\xda\x59\xfb\x39\x18\xb8\x96\x5d\x1d\x91\x2e\x4c\x95\x7c\x61\x39\x2a\xdb\x0a\xe6\x6c\x9b\x91\xa4\x5b\x9b\x5c\x83\x90\x06\x96\x96\x6f\x2a\x36\x8d\xd5\x06\x0d\xe9\xba\x40\xaf\xa1\x8e\xec\x6d\xe0\xd5\x2d\xe7\x9b\x6d\x91\xa7\xf5\x57\xfd\x8d\x74\xc1\xc5\x76\x0d\x02\xcd\xab\x54\xcf\x3d\x93\xad\xda\x34\xcf\x55\xef\xfa\xf2\xe2\xe3\xdf\xda\x2b\xaa\xf5\xab\x54\x79\xaf\xa0\x19\x55\x52\xb4\xf3\xa7\x5e\xa7\xbd\x92\x92\xa7\x96\xd1\xde\x59\xa7\xd3\x66\x39\xc7\xd4\xb0\x02\x65\x69\x7a\x67\x57\x96\x49\x37\x04\xaf\x61\x21\x8f\xf5\x77\x7e\x9c\x2b\xf6\x82\xea\xd4\x1d\x42\xae\x45\x13\xb0\x36\xb6\x89\x37\x91\xd9\x81\x75\xdd\xdc\xf7\x5b\x13\x63\x6a\x6c\x52\x7c\xdb\xd2\x94\xf6\xc3\xc9\x30\xb0\x63\x7f\xef\x25\xae\x32\xab\x27\x67\x52\x3e\x33\x04\xdb\xf2\x49\x3f\x0c\xef\x03\xbf\x59\x8a\x58\xca\xd9\x33\xa6\x0b\xb9\x60\xc6\x7a\x04\x55\xcf\xb4\x83\xaa\xe1\x8b\x09\xb7\xf1\xe8\x7a\x3e\xee\x08\x56\x6d\x19\x35\x60\xec\xf7\x67\x91\xbf\xb3\x7b\xd4\xb9\xab\xd1\xd4\xf7\xef\xf9\xba\xa4\xf4\x27\x6e\x75\x89\xfd\x24\xad\x50\x76\x9b\x4a\x75\xfb\x6d\x1f\x2c\x8f\xc0\x84\x41\xf5\x42\xf9\x1e\xc8\xc5\x65\xa7\x43\x6e\xfb\x69\x30\x49\xfc\xe8\xb3\x37\x4a\x93\xc0\xbd\xca\x9d\xbf\x61\x70\x36\x47\x87\xb2\xe7\x7c\x75\xf9\x6b\xa7\x43\x62\xdf\x6d\x5c\xe9\x28\x18\xfa\x8d\x7b\xf5\xa5\x0b\xfd\x37\xda\xdc\x88\xed\xc7\xd1\x90\xd8\x7f\xd2\x7d\x12\xd3\x4c\xab\xb9\xcb\xfd\xac\x54\xcc\xb8\xe1\x7c\x70\xd0\xbf\xf3\x26\xb7\x3e\x24\x77\x41\x0c\x49\x08\xf7\xbe\x3f\x85\xc7\x70\x16\x81\xdb\x46\x06\x5e\xe2\x41\xec\x0d\xfd\x83\x03\x12\xfb\xfd\xc8\x4f\xd2\x7b\xdf\x56\xeb\xc1\x9f\x7e\x1b\x0e\xfc\x87\xc8\x7f\x88\xfe\xfc\x97\x43\x12\x4c\xe2\xc4\x1b\x8d\xd2\x51\xd8\xbf\xdf\x21\xd7\x2b\x8d\x3c\xe6\x72\xc1\x04\x28\x2c\xd0\xf5\x3d\x5b\xa3\xb6\x41\x07\x76\xbf\x1d\xfb\xe3\x1b\x3f\x7a\xeb\x58\x75\xc4\xf6\xee\xb7\x7d\x78\x6d\xd2\x0c\x39\x6a\xc3\x68\x63\xb0\xf5\xdc\xb3\xe2\xa5\xa0\x7f\x24\xb4\x9b\xed\x8d\xd6\x55\xbb\xcb\x59\x66\x5b\x8e\x5d\x37\xa0\x0a\xd6\x2e\x9d\xa5\x6e\x84\xaf\x82\xb5\x7b\xa4\xdd\xbc\x9b\x0c\xa8\x70\xff\xcf\xb7\x26\x26\x07\x95\xd6\x50\xe4\x0b\x3b\xbb\x12\x5f\xc9\xc8\x9b\xdc\xda\xa7\xa2\x38\x9e\xc5\xed\xb9\x3a\x1e\x46\x6e\x07\xb4\x67\xbe\x58\x70\xa6\x97\xed\xa1\xa2\xe2\xbf\xff\xa1\x4c\x93\xff\x05\x00\x00\xff\xff\x61\xc9\x80\xf4\x18\x0c\x00\x00")
func confAppIniBytes() ([]byte, error) {
return bindataRead(
_confAppIni,
"conf/app.ini",
)
}
func confAppIni() (*asset, error) {
bytes, err := confAppIniBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "conf/app.ini", size: 3096, mode: os.FileMode(420), modTime: time.Unix(1494063093, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
var _confLocaleLocale_enUsIni = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\x31\x6f\xc2\x40\x0c\x85\xf7\xfc\x0a\x2b\x4b\x17\xc4\x3f\xe8\xd0\xa1\x03\x5b\x45\xd5\xa1\x42\x28\x3a\x92\xd7\xe4\xd4\x8b\x1d\xf9\x0c\x88\x7f\x5f\x5d\xb8\x90\xd0\xd2\xcd\xf7\x9e\xbf\xc8\xcf\xce\x2e\x48\xeb\x79\x5f\x98\xb7\x00\x7a\xa6\xf2\xdd\xb7\x4c\x1b\x2e\x8b\xe8\x5b\xae\x3c\xdf\x69\xc7\x08\x65\xd7\x8f\x8d\x1f\xb9\x9e\xd5\x6a\x08\xae\x46\x27\xa1\x81\xa6\x8e\x4f\x39\x2a\x4d\xe6\xba\x2c\xd0\x3b\x1f\x92\xf1\x9a\x8a\xfc\x7e\x08\x8d\xce\xba\x2c\x06\x17\xe3\x59\xb4\x49\xc6\x5b\xae\x67\xf5\x21\xca\xbe\x06\x4d\x1d\xeb\xb2\x50\x0c\x70\x56\xfd\xc7\xbc\x70\x43\xd6\x81\x62\x4a\x25\x0c\xea\xa0\x18\xb1\x1e\xfd\x01\x5a\x5d\xc3\x6e\xf3\x93\x52\xde\x62\xa7\x68\x7d\x34\xe8\x62\x6f\xdb\x2c\x25\xf4\x5a\xdd\xab\x2c\x56\xb9\x10\xe4\x8c\x66\x36\xd4\x99\x17\x26\x16\xa3\xec\xa5\xaf\x7f\x89\xf6\xfb\x39\x65\x22\x7b\x67\x75\xb7\xdc\x42\xa4\x46\x10\xf9\xc9\x68\xb4\x96\x47\x98\x38\xcf\xb5\xa8\xa2\xb6\xc4\x6d\xf8\xe4\x82\x6f\x6e\xe7\x20\xd1\xdb\x96\x16\xf0\x01\xe0\xca\xdc\x37\x78\x79\x62\x72\x41\xe1\x9a\x0b\x8d\xce\x8a\xa2\xa8\x5e\x16\x94\x22\x42\x4f\xd7\x60\x37\x66\x12\x57\x34\x04\xb8\x08\xaa\x3b\x91\x08\x72\x2c\xd6\x61\xfe\x31\xee\x46\x37\x83\x72\xf5\x6b\x57\x7f\x66\xcf\x7d\x65\xf1\x13\x00\x00\xff\xff\x82\xa3\x8b\x79\xbe\x02\x00\x00")
func confLocaleLocale_enUsIniBytes() ([]byte, error) {
return bindataRead(
_confLocaleLocale_enUsIni,
"conf/locale/locale_en-US.ini",
)
}
func confLocaleLocale_enUsIni() (*asset, error) {
bytes, err := confLocaleLocale_enUsIniBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_en-US.ini", size: 702, mode: os.FileMode(420), modTime: time.Unix(1494063833, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
var _confLocaleLocale_frFrIni = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
func confLocaleLocale_frFrIniBytes() ([]byte, error) {
return bindataRead(
_confLocaleLocale_frFrIni,
"conf/locale/locale_fr-FR.ini",
)
}
func confLocaleLocale_frFrIni() (*asset, error) {
bytes, err := confLocaleLocale_frFrIniBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_fr-FR.ini", size: 0, mode: os.FileMode(420), modTime: time.Unix(1493941287, 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){
"conf/app.ini": confAppIni,
"conf/locale/locale_en-US.ini": confLocaleLocale_enUsIni,
"conf/locale/locale_fr-FR.ini": confLocaleLocale_frFrIni,
}
// 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{
"conf": &bintree{nil, map[string]*bintree{
"app.ini": &bintree{confAppIni, map[string]*bintree{}},
"locale": &bintree{nil, map[string]*bintree{
"locale_en-US.ini": &bintree{confLocaleLocale_enUsIni, map[string]*bintree{}},
"locale_fr-FR.ini": &bintree{confLocaleLocale_frFrIni, 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, "/")...)...)
}