mirror of
https://github.com/google/go-jsonnet.git
synced 2025-08-07 14:57:24 +02:00
* Interpreter & runtime - minimal usable version Accomplishments in this commit: * Majority of language features implemented: * Unary operators * Binary operators * Conditionals * Errors * Indexing arrays * Indexing objects * Object inheritance * Imports * Functions * Function calls * There is a quite nice way for creating builtins * Static analyzer is there with most of the functionality * Standard library is included and parts unaffected by missing features work * Some bugs in existing parts fixed * Most positive tests from C++ version pass, the rest is failing mostly due to missing builtins and comprehensions. * Some initial structure was created that should allow more incremental and focused changes in the future PRs. * Some comments/explanations added * Panics translated to a little bit more gentle internal errors (with a link to issues on github). What still sucks: * Stack traces & error messages (there's some stuff in place) * Almost everything is in the same package * Stuff is exported or unexporeted randomly (see above) * Missing a few lexing/parsing features * Missing builtins * Missing support for extvars and top-level-args * Checking function arguments is missing * No clean Go API that commandline and compatibility layer to C can use * No compatibility layer to C * Assertions don't work (desugaring level, assertEquals works). * Manifestation stack traces (and generally it could use some work). * The way environments are constructed is sometimes suboptimal/clumsy.
343 lines
14 KiB
Go
343 lines
14 KiB
Go
// This file is automatically generated using github.com/mjibson/esc.
|
|
|
|
package jsonnet
|
|
|
|
import (
|
|
"bytes"
|
|
"compress/gzip"
|
|
"encoding/base64"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"os"
|
|
"path"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
type _escLocalFS struct{}
|
|
|
|
var _escLocal _escLocalFS
|
|
|
|
type _escStaticFS struct{}
|
|
|
|
var _escStatic _escStaticFS
|
|
|
|
type _escDirectory struct {
|
|
fs http.FileSystem
|
|
name string
|
|
}
|
|
|
|
type _escFile struct {
|
|
compressed string
|
|
size int64
|
|
modtime int64
|
|
local string
|
|
isDir bool
|
|
|
|
once sync.Once
|
|
data []byte
|
|
name string
|
|
}
|
|
|
|
func (_escLocalFS) Open(name string) (http.File, error) {
|
|
f, present := _escData[path.Clean(name)]
|
|
if !present {
|
|
return nil, os.ErrNotExist
|
|
}
|
|
return os.Open(f.local)
|
|
}
|
|
|
|
func (_escStaticFS) prepare(name string) (*_escFile, error) {
|
|
f, present := _escData[path.Clean(name)]
|
|
if !present {
|
|
return nil, os.ErrNotExist
|
|
}
|
|
var err error
|
|
f.once.Do(func() {
|
|
f.name = path.Base(name)
|
|
if f.size == 0 {
|
|
return
|
|
}
|
|
var gr *gzip.Reader
|
|
b64 := base64.NewDecoder(base64.StdEncoding, bytes.NewBufferString(f.compressed))
|
|
gr, err = gzip.NewReader(b64)
|
|
if err != nil {
|
|
return
|
|
}
|
|
f.data, err = ioutil.ReadAll(gr)
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return f, nil
|
|
}
|
|
|
|
func (fs _escStaticFS) Open(name string) (http.File, error) {
|
|
f, err := fs.prepare(name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return f.File()
|
|
}
|
|
|
|
func (dir _escDirectory) Open(name string) (http.File, error) {
|
|
return dir.fs.Open(dir.name + name)
|
|
}
|
|
|
|
func (f *_escFile) File() (http.File, error) {
|
|
type httpFile struct {
|
|
*bytes.Reader
|
|
*_escFile
|
|
}
|
|
return &httpFile{
|
|
Reader: bytes.NewReader(f.data),
|
|
_escFile: f,
|
|
}, nil
|
|
}
|
|
|
|
func (f *_escFile) Close() error {
|
|
return nil
|
|
}
|
|
|
|
func (f *_escFile) Readdir(count int) ([]os.FileInfo, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func (f *_escFile) Stat() (os.FileInfo, error) {
|
|
return f, nil
|
|
}
|
|
|
|
func (f *_escFile) Name() string {
|
|
return f.name
|
|
}
|
|
|
|
func (f *_escFile) Size() int64 {
|
|
return f.size
|
|
}
|
|
|
|
func (f *_escFile) Mode() os.FileMode {
|
|
return 0
|
|
}
|
|
|
|
func (f *_escFile) ModTime() time.Time {
|
|
return time.Unix(f.modtime, 0)
|
|
}
|
|
|
|
func (f *_escFile) IsDir() bool {
|
|
return f.isDir
|
|
}
|
|
|
|
func (f *_escFile) Sys() interface{} {
|
|
return f
|
|
}
|
|
|
|
// FS returns a http.Filesystem for the embedded assets. If useLocal is true,
|
|
// the filesystem's contents are instead used.
|
|
func FS(useLocal bool) http.FileSystem {
|
|
if useLocal {
|
|
return _escLocal
|
|
}
|
|
return _escStatic
|
|
}
|
|
|
|
// Dir returns a http.Filesystem for the embedded assets on a given prefix dir.
|
|
// If useLocal is true, the filesystem's contents are instead used.
|
|
func Dir(useLocal bool, name string) http.FileSystem {
|
|
if useLocal {
|
|
return _escDirectory{fs: _escLocal, name: name}
|
|
}
|
|
return _escDirectory{fs: _escStatic, name: name}
|
|
}
|
|
|
|
// FSByte returns the named file from the embedded assets. If useLocal is
|
|
// true, the filesystem's contents are instead used.
|
|
func FSByte(useLocal bool, name string) ([]byte, error) {
|
|
if useLocal {
|
|
f, err := _escLocal.Open(name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
b, err := ioutil.ReadAll(f)
|
|
_ = f.Close()
|
|
return b, err
|
|
}
|
|
f, err := _escStatic.prepare(name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return f.data, nil
|
|
}
|
|
|
|
// FSMustByte is the same as FSByte, but panics if name is not present.
|
|
func FSMustByte(useLocal bool, name string) []byte {
|
|
b, err := FSByte(useLocal, name)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return b
|
|
}
|
|
|
|
// FSString is the string version of FSByte.
|
|
func FSString(useLocal bool, name string) (string, error) {
|
|
b, err := FSByte(useLocal, name)
|
|
return string(b), err
|
|
}
|
|
|
|
// FSMustString is the string version of FSMustByte.
|
|
func FSMustString(useLocal bool, name string) string {
|
|
return string(FSMustByte(useLocal, name))
|
|
}
|
|
|
|
var _escData = map[string]*_escFile{
|
|
|
|
"/std/std.jsonnet": {
|
|
local: "std/std.jsonnet",
|
|
size: 41755,
|
|
modtime: 1502146172,
|
|
compressed: `
|
|
H4sIAAAAAAAA/+x9/XPbNrbo7/4rTvnWqRTTsqwk3taNM5Mm6W72tsneJt3dPlmjgUhQgk2BLADJcpv8
|
|
72/wwW+ApOzk7ebO1XRSWQTOOTjfAA7Ak4cHL5L0lpHlSsBkfPoE/pIkyxjDaxqM4Hkcg3rEgWGO2RaH
|
|
o4ODH0mAKcchbGiIGYgVhucpClYYzBMf/oEZJwmFyWgMA9nAM4+84XcHt8kG1ugWaCJgwzGIFeEQkRgD
|
|
3gU4FUAoBMk6jQmiAYYbIlYKiQExOvjVAEgWAhEKCIIkvYUkKrcCJA4OAABWQqTnJyc3NzcjpKgcJWx5
|
|
EutW/OTH1y9evXn36ngyGh8c/EJjzOVYf9sQhkNY3AJK05gEaBFjiNENJAzQkmEcgkgknTeMCEKXPvAk
|
|
EjeI4YOQcMHIYiMqDMqoIhzKDRIKiIL3/B28fufB98/fvX7nH/zz9fu/vv3lPfzz+c8/P3/z/vWrd/D2
|
|
Z3jx9s3L1+9fv33zDt7+AM/f/Ar/9frNSx8wESvMAO9SJmlPGBDJOimpdxhXkEeJJoanOCARCSBGdLlB
|
|
SwzLZIsZJXQJKWZrwqXwOCAaHsRkTQQS6u/GcEYHD08ODk4ewnspQsLVs7/xhFIsgAtEQ8RCiMmCIXbr
|
|
AxIQY8SFapYiJrgUGpF/IwGIYcVOgankrAEzOoCHByAxYIZVG56sMVAkyBbDGotVEnJAHG5wHPtwsyLB
|
|
SjULcUQoDiUoiY5QgVnKsMBMjgtQGGohSu2TCKQCjgBeCzkOireYAcUB5hyxWyXsdZowOapwdKVJ8yXp
|
|
hANeL7CCRqiCV0MmJHSpzyTGx4Kssca/EckaCRKgOL41wDMQKI4hUVLNeJmyZMnQmktunBz8oTU7TgIU
|
|
S4LgAjiOI1//LJJ3ghG6HKDh+bn6RX5IpEgXtykeoCFcXIDHVTNPUiyNCMccg+fBESADiW8WXLABF8yH
|
|
iCVrH2JMXUC5YEP4qgY2byk/mLGEgaehQkQYF1IL0Frxia+STRzCAgMCDcKHZSJAElRBksNUBJdJkDRq
|
|
GuhmvcCskwaOg4SGDiI0DAsRCo2bCsmjfYgQK8L2pkEiaZAQYwpPYXx3hEuGkVAmjij8jllSYI5LICW+
|
|
CnxlFAmhA8/z1R9rdI2fM4ZuJaE+RBsaSBcyIEMp2ymBI6VQs+EwUzUh3cE/iVgNkA8Li5LFmC7l0yE8
|
|
Lf+9GDaHG6EygVZqjWojH8Z+FZyyjYUhC9Pw30JUFfZxFXYbwdpyXqwQ48pYSiRX5VICIdtZZDTLZJMi
|
|
xvFrKuoAtf9BYfiSLIkYoOWS4SUS2IdQ/jCEi8oISaR/Vyr64YP54xl82+RVobMDL8OuNFEPz3j5MMFc
|
|
JRFrJIIVMLzEO5iOj7+dHXnDqv7XuS0/p2N4CDnRcKQJ+q42PJGo0Wlu1kY0lUwMkhCnCaFiEKwQy4RV
|
|
/OqNvaGKvPKxjEZK0jUxzb6rahabjmfKRx9b3MexhBAlcRgPMub7FTqnp+ezoQ/jYbu6tYFQ3TOdSmMi
|
|
dBQI7u/95eglwM8RAIJ9aWgNAE4iAjsJxpw0Eaf3wL5CWwwaGpxW8ec4OjyJhP+jTN2M3Hw4Pq3Is/pw
|
|
jXbqV/7p5KsQ/CcIWRPyb5V0Owl7i7vCjkJ0/ZKOKk13Sj4KlG4tNMFhs9M6FuKYrH0gPiDGfNjWXWnR
|
|
JZDZrIo/3zlakAlcgEwhTpstSAQEnl1ALbzZQ4z8IMbgCKbbWTMAGU4H0hEr+uHBAygGL38+PpWRrByt
|
|
GZO5QEkobsx13kz8ghofPG8IApFY6mYgrNTtA9aHLRxBUIZZ5V7eL1A50VSTYFwGQ3SpE18ZJtxZhUjg
|
|
WGV2UjrVnCLL+XIvJKfgA0JDvJOzax/UV1+mXDLBwWkz1SB0i1hNcU5OIE6SVD8jiAq9XhDiCG1iwfX8
|
|
HYeVPn801SYj47z46ttbnVu5LvVOPpVKQTdxrCdVY2tbrVhqtE2x0tCJANOwCr6kdznVQzdKydnGU8lp
|
|
J0b5sIry1A1eNm7C1/Sd22ltNpf+5bzwNK6mHyv5kpL9SPPfJJf6J8mxyg9qQC1TpIEnnd30kJ+r/2aw
|
|
2AigMkEkW1zRUDmHl9C4WmyQWSjfpHoS79l4dAjTEpl+QaBfIm1m8/NaBB0kH3JFqmq93nDRmM2NPTjU
|
|
ZuUOJQW3KxH2wQNnEySt3hlsBjraSEMHFAQ4lfaY5fAJA0RBAfAV7ctEnMMh13Q20HWGmsWGxOFAIfMh
|
|
2DSSdaMrwYbJ+FDox4cP1d9MIHa6bYWhvzvWZFkfQVl75XAbqzLObjkhcFTWfsmpabBhzWDWSWcd6tQG
|
|
dtY02OwjeXhUUmVrQ3f00Wxq5wZ4ntZZGZtK5GURJUg2VAxUrNsNz8+rOUA4ikgsMBvkMWk7hK3EsVPx
|
|
MV+JWCeha7ZfXjzL8qyycSyqjxoSVLEyCTdxojG4LdGyQmeZvrE1EhZItrTvbYoZEgmDQwgQle5qgWHD
|
|
9RK0RMmrKR4awhF4ystVfl+o30dexiyUKoZqFjo4Jhtod5HxvsNjrFFanjjkDi3rbluTkzjaGMpYxWOV
|
|
xZY/65hSFMSVM/mcOgUZTtyTCaVl7fM26/qM7FfNpeR3+fOUFCtoav2N47QhiiITV6ZBfM1bH9iGUkKX
|
|
lnWaegqtOGR1SAZGY7VFQtEEVvKHRv+CLJMx1khzZMAZCq0l/SCjmOMcMhwZ8lpR7A+U49QK+ju7L6lp
|
|
pWvSJmXbOoPVUdSqcW6b4DjtcDP5cMc+CLbBakrQA6BrOE1401m371Kjdy8klPIJBxskXcZKYkIxH9Qs
|
|
pFi+vqRePgnzvHwF1LhaNT3aolitkuS9T9o+pVbwd8S43pBbE0qO8823Sqs2WPWlSXY7V6uj8zVKU0KX
|
|
82t8q4kkPYzaPS82fH/PNjRAAodm/BAkIR553VbSPZHPptXeoCXRMWASyjdrrMd15Vg6KMG92mv6f4ch
|
|
dw7fzYorCytq5AfKHwx75H+gUp4yc7RP0vP89tF2kS0/fwA5z2Gew7Y86XLSYPyi5zUJcCJViIhCogLF
|
|
x+/cmh5EMVpyh5LvoTB7K8qeCuIcbD+FyO3j/3Qogl0B/gAUi3PlYuFjy4pAjmZ8RzS/Y5bsg8e2ndEH
|
|
T4yjvcYDd8SziBG93gfR0R0RcbKk3XicYLVt2u2yao9+pgwmVdESM39otpo/zNjNX5pA9Qd8HLZYZERw
|
|
HM5vSKhNyBV7njZMTaXgWYboPXQwUjuH3AvJdh97R6C+oeNOYeMOIaNVpv1DRW+zBacGPoTTMRyVtwht
|
|
tBaYTu+L6bQvpsl9MU36Ynp0X0yP+mJ6fF9Mj/tienJfTE/6Yjq7L6azvpj+fF9Mf+6L6Zv7YvqmL6Zv
|
|
74vp23ZMrYDbokcDMfFh3Ob/U4YDwklCv7CZx6hFAm3Rze7L7pTcnpzA6yVNGA59xSYBeEe44CMnszUD
|
|
5+skJBHB7Atj+cpTq+3qe1z6/mOLKBS/+7ObNDTVzBsSup1nxQVfEMvCEptI6fumhWX1lCn0fAhQyvN0
|
|
zsrOAmeyB+xkT9i7PWDv9oT9rzvB1jl4B2i8B2i8J9mv7gS7F9nRHqCjPcn+4U6we5HdtvtVB73ck+y/
|
|
3Al2L7KDPUAHe5LN94DN94R9uAfsw16w21ZQfqEMB8mSEo5DmWlszVERvfPvwREE3x0cNNZNQyCUCIJi
|
|
OPSBJjdqHZVhLurBMvP34X+Qq19f41u4aF+wdVU76RWvSu/yIpgEPXL3jm4qPRvpjAbVAkCmdxUQtXwv
|
|
umnpHGMqc5VKf2sKI4G2wAn0frA9lhskls7NOh/5Ieca3ojYd7OlaM8dfeVHcvxc833bsh+uGHueMbil
|
|
ZXRzLrnY0kJy51zzqA2jtiA9trZ2ynx1M/nd3vJj8+da6qq3M1BmEWYbZhAkVCCitsNoQjEkDNYJw3CY
|
|
NRRoyYduq+X5tCPZCGslx14GnGwEHEGzKOK+iVmb09RgWElhw/LyuEVTISuzL7OAjTQTDP3yB/n0HrWB
|
|
TS5rz55xulkhWBOT6loZlwFUVAxWnXfnptgPRilWGLYo3mDeYzusooa/cBxtYtgIEhNBMG8oVhgSuhzc
|
|
+MDt+wVos5NPXdsEN/DUWn2Vfbb92a8wwXG2ScOHzQrMm4yHpRE+D0PgYI6WxTgSkKgzAsATfXKOCJ7V
|
|
DxNenLK7aRpZOJf9tchsHMm5VT1zog8E8KHaVGUt1OlzpPcgTwFw0yfBHnVRWaXvZ6xOLSKqTuUtMYMB
|
|
Hi1HPoQ4IGsUSweVBALFDZ/EVM85oWJA53Mf1oTOgxViXH9Vx0W4WTfXC+Y+MBSSnV5ll5EyIju70tE5
|
|
aAeGFlxCr6lCoZnUoZbUURSYfUoU7KegqrQoThI2oHCixzOUgh9QODR/2mgNVZpgqgFM//mwIFItVqu8
|
|
s4ZkPrTCo3gJF0Dnc3gKY1uD31O4KEQCxzCQXMFLOUdWIlGV2WRJTeGqRj62Ivs9nRhxrNFu8HtaFrBr
|
|
tBPlBo1BhTjwJRRfDrPWI6NLc+HYK+omcuK8o+JXTbv+GbzsVKaUgETapduEwgrvkNFth0av8K6/RqMw
|
|
nEtl2qnEnwgUO/wo3awxQ7EMD9OxL53cxIdHPjz24YkPZz782YdvfPjWXZyoPkcqxhpMmg9T77nng/e9
|
|
/OeF/Oel/OeV/OcHrwOcLhj0kGy8kP/ImZdaElGTaS/yZlb1+9z26e2xZ9w0y9MzZZMZy6fSNk/PrCNZ
|
|
4d2XYZguOWoAuRrqXpNPas4rvJM9LHgGDWX0xv/KrHK884a5gbrV8KjwEyu8+/x+Qo6mkbnJhC6dC4ZI
|
|
LCeecoi2I421YzuNyTMU+7mfSLnNeUezDdy1o1lQJvOoO+ycl87ZZomrLSnP8dQnGceqqcUJR3GChLpB
|
|
ISFU3WGRJRhy3mN3xKrPPMSBdsc6ZqOw5oEx5RuG56nwIZOfnjHfI7W4WSUxNu1ye7dGukTMOfkdax+i
|
|
VwOk63jwAL7KCTOnXbQSnjqdQjY+ONaAjnPoti4y17uoJWFwIof3UJMvLUkJsMKt07FJocsQK6RbFUxn
|
|
luqUTWVQ3ii3rb7zx4ihoMLaAZ3DsaZ5CA/VgzS5GUhKtRiPYDx6YpkWkiiXuHSaCvCzNsMrCJg32Cd/
|
|
1QgV00ydh/mflWtV3khOKA59ldNkTiE1PUtGgXGP2Z/9vUJjmuG0Mh4QTIW6zqTL0HhA9jc0tUTSYm54
|
|
lyYUU1GRuPIayXJQNsOhqg3Xv5+O7cGVb6LIBCKJ16jgq0wFcXuYKQk7o0plYIW0ddGtVdhmpRJRQThH
|
|
JsSfVJQ1A9oSdEsmXvacmyiqdWp4wAyziY99PeCR4pk9LdYrCvpAoDprtCCCIXZbWcStKYx+pJdstij2
|
|
VSMfohuNcJ6wOd3Esbv6MFuuVcD1XzZ2RalZWTWuKQMMX5WP21WeKB04swEjd4PlTt+k/umFSylQ5ezN
|
|
32r9QcGLbqxQZFc19OIMjyOmq/rs7LKaLYqbdzZYgIUOYOU6dAmr/TB0jkQv75tFqPzeJ90PkAB36a+a
|
|
qUi3aCk4bwwG2nxdyWyVxsmoRrSfNkw3xmD+qsS5Pjxzbeh+wTwzulosclSUFsWiNrfxPHtouxvvv6mu
|
|
8PSRgWvj+wuWQWk1YQ/eFSJyb1GYj2YhSnkvDrs2u798DhdBMudzhcFdfDTcdEjBJAU6IPXitKsa4n8K
|
|
p2We+Bk5nav1Xkx3FUV8wUzfI4GWgNsT6BI/cohP4fixnDjlPzy7yBKv1lWGntpwZ8dWfMra0dCLOy5x
|
|
mIm7Wu6aL3CU6OlssSJ2WqTyLfuRDUa4HdAnZkQ++voYehmKqwynYSitZ7Wzj7rMa4WYW7XtgDuP8Vev
|
|
Esr6WS4TKn+2KN5fH4ytHwZS6jgQOITTY05+x2G2aa+uXqjdObSfKVtwGF9SORB93uEurPDzwqFrmtxQ
|
|
U5+hCoVywTvmf6muHKpWKBTTQYbUrbF637llIsjniLGB+mbu0iH28ySWygTVy1GboI6dPO130BpKx9Df
|
|
J4mcqN9mO+YiMdQ2hKjgKVedi0W2uNpDstu+y15ypGbey121E8XFWkmIexpKuyB0AcOVOfaooN6lMsIU
|
|
Wq+zya/UrOimfDKppSLoKjsn6WwR3ZzbDhm1izsnWuv/m0QApslmueond7c/6DofgBibXjnu+viofV47
|
|
M9oZYZjrgG8PRrl8JiUBZUu6/UQk1umoQ0y60IpEpu0XIyxF7j0Epvp3sSVn+R0EdyXFJqU3umprtkVx
|
|
x+HuyT7+MvsofZ7c41KcbqFar+2T1LUNl7cPtpbXtFWcZR/v8B5n1R1Ln1I5ohtfi09P768m7eOap/p6
|
|
7R7Dq60qthJYKhAqyPKgZVG8c8xFSVQVYqsyP/rkcrua3H0IVxP7VYjQN3Y+MuVoRmqOAsDeeVWyuMKB
|
|
6JlYJYurjKZkcaUSq/tmVf9ZCUtjgKVLGu6ZrUQ91FBXnrfdwFNBqP3cT7o6Ha7xbfEyhPvcgpGT0mZW
|
|
Mt3qHE81J+szmBf6uqsNx+qSfxyHoOrftb5qZb332KKbtpHpPKVzbPV0Zu/R5aX5n3RsEuq9gra0IU3L
|
|
XxF/HscDZQhRj8CdLK6m0aeI28A3wUpLX6df0Zcfl7MtScnKf3s0/rSRuD0K9/WvHQGttmzD26+uckVS
|
|
2VPtsI87LscqUGhb6MJRGliOo46gF4VT2X1WojG/1CoOWXF7n68OWNkvjis1Mled+UDCRmmzDNThzl0a
|
|
5rosrtGwhrO47i7czYrL4RQNao3UetFaDYgcnd+YO8jeJX7En4Mf971Lrxd7cjoyPhn2HO3FHnXnv+aG
|
|
ui3zJ5QO9Le5brtG6bz7wseix173PuY49779sYSw9ar09D5EWW99bKEqR7fHvZQ9SSld2169f/Ku106m
|
|
g0Ky5ctSy7Iv35KKOMdMvPptg2LbbalIvZOkORrBNi3vQDHh+rmCLdOYCJEYhyM1HqQuJJWsgqP8dSeq
|
|
tsqlhn1fw6O3mOoL1xZO0hY2qpLvrDYPqJb0Mc3vSd11XSrbl9Q12lXMo5ts1KJ/i/0QV0ygG3PbxbRK
|
|
S54ZJcleP5XJdU3o//LLwq+nDn5FMRICU3V1rLrektfvtyyim7pEVjFX2dRCGTZXV3Hm2kpJhLl4TcmA
|
|
UNKMgYskvJ3rqzTl1yFcwNQ75HBh7u+eXvuqzfR6NlPvvrnOXnyjc58fZCJu+jaWLTlWJBr4nKI19oEX
|
|
eKaHfKaQqEezmRxDQY9uWIe5RoTO5ZPiKEQ+I5FD9MGTTTwdmcvwCCUj+chUsk4b5KI4nhuS1dGXKvnX
|
|
KrKOsgbT61n7zYzQwq4yoPIbg2rXlxZjPTIb6hXdKJE7rF1zinmAUqwL8v7G9QnveVP6urK4Ur2nGjZe
|
|
ncQQ5YNgZUmLgpXKhC89x9zJu7y8tBRcl7tetnS9bO+6cHddtPd01Rh5l5dRe09bmmF60vaert1p7/KS
|
|
tfe0zTFMT9H/mprUCLv8oit7rXqQwlN4NIEPH2AQpDLvPZ2cwYMH6sEFnD75tmXO711ebg7Hj3fKtIPU
|
|
/j4Wa89gVVDjXXqHXKrVYcksPB+mhTLqd3E538RlM4a/34qVNoe6W7WZjA3C94ivPrs5fe2S99eX6r8e
|
|
Mq/w8utD/vUn5uTLJI5Ng8/Kij+5WPGnP+3JhdbgqQnJXslX50B5tp3FVKUkamE8e0VB+cmrnX7mg6eo
|
|
tfUu2hAaYuqYom59SJFY+RCYVk1WqbcfqJtt7KySj+wORvXUF8DYu6pnLX3dy9GefGTvWSyl9KjdUS8y
|
|
bW4F2OC0LuhbjXxrL0SqA26ZYUL5bhmi30SbCTmfU6o6PHV8UKx6IXRNIqE4D4PoMjv3pV/qVH3/5TY7
|
|
4WbvTvHNXOsTXGSapV77Ib84b4GRmZBO3S5p13ldk7QodzP1fNlhjyqy6bRE4ZE2hCmZaVtQbzWZ+aVB
|
|
DLuIKX+ktyPS2Sm+deZxMrWSUf+oxCdvVj9tDPW3pypm9VMv5zoiWFj/x+dnfV0f5IAvlR1e66/nrVWl
|
|
FnK0/K5L8pPf63j2lqI9vd4O7ybTjz1lWl16My68+pq1zAP8itbxO8EwWuehwjoN1g/7vEGiCRkSGt+C
|
|
QNeY66Ujbq/n3eCWSal3fHysGVKehOgfff1+1ErgwzppwFIACvZMzkG+vqSj0eiSfp0tPmZ9TN6VuMaf
|
|
dBiC2VhU8jVz1OwVU9O6Yze4rod+JSpnJMiZW7ueuTUrGdY0xPvjkH/MqdBs88HzDaklRA3bT9o9fWl2
|
|
XIU8tQ1qosWRTCTZyawHXmes9NrZmvSA3bkg65lXFzUCpdcJu/WdTHmymTRXfhJ3kuS9ryRIlR6O5Mj7
|
|
oZoYVfrYkyLvTUKx59sM4x8y0QwSGjVTwC1i3LYqY9ECCUBpd4sGKyTuJQeFrVhLOCjoWCCOzx7PBVqo
|
|
4+be8+9fvHz1w1/++vpv//XjT2/e/v2/f373/pd//PNfv/5ftAhCHC1X5Oo6XtMk/Y1xsdne7G5/H59O
|
|
Hj1+cvbnb749OvH8JnBCt3ABf8C0jGxKZrNzIEXUrmQ8Z4+G8NHwVPcaEJpuLLn04lbg+n5w9Z15slu/
|
|
PDJ7W5aaRATD+qx6KDN6Ca17gqLaNe54KL/jqc+taS1bUdYERO2t9oZRmtJZ/ebJCZzBT+++hyQCYm1R
|
|
kad53xU8gMmTyRCePYPJDI5ckCfw4x0gPxrC06fw2AXXu7iwHCOsvBPqkQ9M35LV+e4q2XzypXHTh8c5
|
|
liP7y0DbeQsfQP8mdUnhfzxW+J1cPzmBxzn+/jgz+KdPFGLn8LxPJdP/FVkZf1lkPkwKCuyVjj0EWCZj
|
|
oh58q9lw1kLGWUHGPogV/LNH9bwN+qlG8/IdRIm4zQ64VReTmA9oCEy9WxrBU5g8ORv6OuzoA4PDyrvj
|
|
vjKwXCnSC0R1Zq8HBpiqMkcdmzicmFxf3dFH6DLGGtXIcyf5csSGnryApBQ5X2KJ4XvZoL5CWj3jpLh0
|
|
CI/lfMX5OltVZI2q1OfnlMqLu8xNcP0SI0s0hLu8K3yP+0tOTgDFMZzBgghuzHDSZYZmjeVUJm5FbjPV
|
|
1yPNciOoP1KGMlMGaVNYsBnk4w57NKRMuir7cnORCdCFOYYxbS/Zg6lrCLmxP3aMc6LHOWkZ56Rk8X5d
|
|
CEeP2kbbUdedEfHoE4x2Misc7Bl8AEuTR7OZY5SlS7CO4LF2QfRU/jOR/zzq8ZL3cXm/t2zHdROuZMHK
|
|
VOxWb5sbeH4z7V0MiyOVi8zR5WUlJyfw3xsSXPOE6QArv9Rf12iWtqCROTVeslnOquxXP01nXW4kJdtE
|
|
wIWqqxpbb9hjciqana7N3t8a63tey29tLaKa9QIdVXV5Uam+yTrvhrCDpxeaFl8htILQ16+2wHjWAkLt
|
|
YEh2S0LU1rBqOzOLO+qRQpAJa0PJb3bZRGaLxDptyoTiEokSy6J5W7OqgJhWIRzLFMFeaiQ/qDtJQ3Kg
|
|
i5l1v8eUxhWGwnFDGWVzxYicR+UyKY7FT3i9wGywa1TMnZzA+7cv3w7CQJXuDc/he0IRu4VglaRq3vp2
|
|
ECdLoEMIknUa4x0RtxW8pZdbcyxeUynv6W5mKrXgGYwLMn6h+c5VjXo1KDiCRYloDaveujTL9GGRnYJF
|
|
QeNmLNtccwgfPjQOQC4c0RYFQY9JsNQHfW/gYno1c8ftEsXmyIv+HwoCKX0JxP0eYKioH5nB072xGR7d
|
|
5aRHldk52e6STt14nHn4UrtCui9JFH1q4fYWo+0crFMN7KzsFtpn05fPrib9FfL/k76sMVvivyMRrAYC
|
|
sSUWajMmWLnW5PXDPuvyGtzcnBez5uc5VN22CdYAMWdcy28oaODJtgF64DE0WdA1VkZrHUyRmJUOuonj
|
|
ebEZcd2y3mqYSCLN6+l1/hp1awaySMSqgGycuvb4lcH7LkzDGsHN08LT69m5VePUnLRST6dA+nDdccCn
|
|
wrnptT2LzkyqhqLStxuVSs0KPdYX+GWcbTU06Dq6UgNdH1RPNBVNyDx0Sap+WXmq68Mf3QmsFoSWbG1D
|
|
qpYDlJ++2g0Sc2Hk0NJZHeDq7q9WLirdpdwkYHvfv6IMsRV3dnKsV/8ybvzbBsXcEe0EysqNdN1vo85o
|
|
UX6+qK/EiHCUMrImgmzxK41HIB+ELZypMblFZXyQDZzZ62tdF45RbTZkL9CzkhwjvxqLW4ypOgrnaKrE
|
|
lWJSx7vbVV4Ro+6zZ5VzBDZy8jD8lQz2pCUOtw+tDLO1ey2cu6fgzQ5jd7mHVR9MQGpViEowqNi+TTWM
|
|
ElU6GXUwLseqTqb9VxYsrozOzelPrESGtk+jSfl5azPkKZl9B2gaGfWKvjT1avSw6ZpymdlSL8M8ibcy
|
|
yK3kvNgy50csq93kaUyEbOWdeNZ1oZN8YShbLakv1tjXTlSxyJTl0/GUbah02w1aCH+RUIGpGDQWIYxj
|
|
d/l10Dq0aC9SbAoz0xTRWYdXnfY8g3ELnNYKr25AjS5S2RsxzhUCJRVtg5karZEy2OlCkp1MYZAywlwC
|
|
f8qbDKFZA9IcZy33nO5m55DBQNNdrUYrx2rxc1U6CmIVlALMR8uOh3/w8eD/BQAA//+qVt5kG6MAAA==
|
|
`,
|
|
},
|
|
|
|
"/": {
|
|
isDir: true,
|
|
local: "",
|
|
},
|
|
|
|
"/std": {
|
|
isDir: true,
|
|
local: "std",
|
|
},
|
|
}
|