diff --git a/cmd/bent/CONTRIBUTING.md b/cmd/bent/CONTRIBUTING.md
new file mode 100644
index 0000000..9786803
--- /dev/null
+++ b/cmd/bent/CONTRIBUTING.md
@@ -0,0 +1,27 @@
+# How to Contribute
+
+We'd love to accept your patches and contributions to this project. There are
+just a few small guidelines you need to follow.
+
+## Contributor License Agreement
+
+Contributions to this project must be accompanied by a Contributor License
+Agreement. You (or your employer) retain the copyright to your contribution;
+this simply gives us permission to use and redistribute your contributions as
+part of the project. Head over to <https://cla.developers.google.com/> to see
+your current agreements on file or to sign a new one.
+
+You generally only need to submit a CLA once, so if you've already submitted one
+(even if it was for a different project), you probably don't need to do it
+again.
+
+## Code reviews
+
+All submissions, including submissions by project members, require review. We
+use GitHub pull requests for this purpose. Consult
+[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
+information on using pull requests.
+
+## Community Guidelines
+
+This project follows [Google's Open Source Community Guidelines](https://opensource.google.com/conduct/).
diff --git a/cmd/bent/LICENSE b/cmd/bent/LICENSE
new file mode 100644
index 0000000..e4a47e1
--- /dev/null
+++ b/cmd/bent/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2019 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/cmd/bent/README.md b/cmd/bent/README.md
new file mode 100644
index 0000000..067c87a
--- /dev/null
+++ b/cmd/bent/README.md
@@ -0,0 +1,140 @@
+### bent
+
+Bent automates downloading, compiling, and running Go tests and benchmarks from various Github repositories.
+By default the test/benchmark is run in a Docker container to provide some safety against accidentally making
+a mess on the benchmark-running machine.
+
+Installation:
+```go get github.com/dr2chase/bent```
+Also depends on burntsushi/toml, and expects that Docker is installed and available on the command line.
+You can avoid the need for Docker with the `-U` command line flag, if you're okay with running benchmarks outside containers.
+Alternately, if you wish to only run those benchmarks that can be compiled into a container (this is platform-dependent)
+use the -S flag.
+
+Initial usage :
+
+```
+go get github.com/dr2chase/bent
+mkdir scratch
+cd scratch
+bent -I
+cp configurations-sample.toml configurations.toml
+nano configurations.toml # or use your favorite editor
+bent -v # will run default set of ~50 benchmarks using supplied configuration(s)
+```
+
+Bent now comes with several shell scripts to automate common uses.
+These all run using [`perflock`](https://github.com/aclements/perflock) if it is available, and default to different
+numbers of builds (usually 1) and benchmark runs (usually 15) which can be
+overridden at invocation.<br>
+
+#### `cmpcl.sh refs/changes/<nn>/<cl>/<patch> [options]`
+This checks out a particular version of a CL, and its immediate predecessor, and benchmarks the change.
+The `refs/changes/<nn>/<cl>/<patch>` parameter is the same one that appears as a Gerrit download option for the CL.
+The default is to build once, benchmark 15 times.  The results are also uploaded with [`benchsave`](https://github.com/golang/perf/tree/master/cmd/benchsave) to perf.golang.org.
+
+#### `cmpjob.sh <branch-or-tag> <branch-or-tag> [options]`
+This checks out two particular tag or branches, and benchmarks the difference.
+This can be helpful when binary-searching a performance regression.
+The default is to build once, benchmark 15 times. The results are also uploaded with [`benchsave`](https://github.com/golang/perf/tree/master/cmd/benchsave) to perf.golang.org.
+
+#### `cronjob.sh [options]`
+This checks out the current development tip and the most recent release (e.g. 1.14) and benchmarks
+their difference.  This can be helpful for nightly performance monitoring.
+The default is to build 25 times and benchmark 25 times.
+The results are also uploaded with [`benchsave`](https://github.com/golang/perf/tree/master/cmd/benchsave) to perf.golang.org.
+The script also contains glue to tweet the results, but by default this will silently do nothing.
+
+#### `cmpcl-phase.sh refs/changes/<nn>/<cl>/<patch> [options]`
+This checks out a particular version of a CL, and its immediate predecessor,
+compiles each once with the ssa phase timing flag turned on, does not run benchmarks,
+and feeds the log (with all the embedded phase timings) to [phase-times](https://github.com/dr2chase/gc-phase-times)
+to help spot any bad performance trends in the new CL.
+The resulting CSVs can be [imported into a spreadsheet and graphed](https://docs.google.com/spreadsheets/d/1f1rTX73ett6iKMb5LuNpnG78T7CLucQAHRKBZuI23Q4/edit?usp=sharing)
+(select the "Test" sheet and scroll down below the vast table of numbers, there is a pretty chart).
+
+The output binaries are placed in subdirectory testbin, and various
+benchmark results (from building, run, and others requested) are
+placed in subdirectory bench, and the binaries are also incorporated
+into Docker containers if Docker is used. Each benchmark and
+configuration has a shortname, and the generated binaries combine
+these shortnames, for example `gonum_mat_Tip` and `gonum_mat_Go1.9`.
+Benchmark files are prefixed with a run timestamp, and grouped by
+configuration, with various suffixes for the various benchmarks.
+Run benchmarks appears in files with suffix `.stdout`.
+Others are more obviously named, with suffixes `.build`, `.benchsize`, and `.benchdwarf`.
+
+Flags for your use:
+
+| Flag | meaning | example |
+| --- | --- | --- |
+| -v | print commands as they are run | |
+| -N x | benchmark/test repeat count | -N 25 |
+| -B file | benchmarks file | -B benchmarks-trial.toml |
+| -C file | configurations file | -C conf_1.9_and_tip.toml |
+| -S | exclude unsandboxable benchmarks | |
+| -U | don't sandbox benchmarks | |
+| -b list | run benchmarks in comma-separated list <br> (even if normally "disabled" )| -b uuid,gonum_topo |
+| -c list | use configurations from comma-separated list <br> (even if normally "disabled") | -c Tip,Go1.9 |
+| -r string | skip get and build, just run. string names Docker image if needed, if not using Docker any non-empty will do. | -r f10cecc3eaac |
+| -a N | repeat builds for build benchmarking | -a 10 |
+| -s k | (build) shuffle flag, k = 0,1,2,3.<br>Randomizes build orders to reduce sensitivity to other machine load  | -s 2 |
+| -g | get benchmarks, but do not build or run | |
+| -l | list available benchmarks and configurations, then exit | |
+| -T | run tests instead of benchmarks | |
+| -W | print benchmark information as a markdown table | |
+
+### Benchmark and Configuration files
+
+Benchmarks and configurations appear in toml format, since that is
+somewhat more human-friendly than JSON and in particular allows comments.
+A sample benchmark entry:
+```
+[[Benchmarks]]
+  Name = "gonum_topo"
+  Repo = "gonum.org/v1/gonum/graph/topo/"
+  Tests = "Test"
+  Benchmarks = "Benchmark(TarjanSCCGnp_1000_half|TarjanSCCGnp_10_tenth)"
+  BuildFlags = ["-tags", "purego"]
+  RunWrapper = ["tmpclr"] # this benchmark leaves messes
+  # NotSandboxed = true # uncomment if cannot be run in a Docker container
+  # Disabled = true # uncomment to disable benchmark
+```
+Here, `Name` is a short name, `Repo` is where the `go get` will find the benchmark, and `Tests` and `Benchmarks` and the
+regular expressions for `go test` specifying which tests or benchmarks to run.
+
+A sample configuration entry with all the options supplied:
+```
+[[Configurations]]
+  Name = "Go-preempt"
+  Root = "$HOME/work/go/"
+ # Optional flags below
+  BuildFlags = ["-gccgoflags=all=-O3 -static-libgo","-tags=noasm"] # for Gollvm
+  AfterBuild = ["benchsize", "benchdwarf"]
+  GcFlags = "-d=ssa/insert_resched_checks/on"
+  GcEnv = ["GOMAXPROCS=1","GOGC=200"]
+  RunFlags = ["-test.short"]
+  RunEnv = ["GOGC=1000"]
+  RunWrapper = ["cpuprofile"]
+  Disabled = false
+```
+The `Gc...` attributes apply to the test or benchmark compilation, the `Run...` attributes apply to the test or benchmark run.
+A `RunWrapper` command receives the entire command line as arguments, plus the environment variable `BENT_BINARY` set to the filename
+(excluding path) of the binary being run (for example, "uuid_Tip") and `BENT_I` set to the run number for this binary.
+One useful example is `cpuprofile`:
+```
+#!/bin/bash
+# Run args as command, but run cpuprofile and then pprof to capture test cpuprofile output
+pf="${BENT_BINARY}_${BENT_I}.prof"
+"$@" -test.cpuprofile="$pf"
+echo cpuprofile in `pwd`/"$mf"
+go tool pprof -text -flat -nodecount=20 "$pf"
+```
+
+When both configuration and benchmark wrappers are used the configuration wrapper runs the benchmark wrapper runs the actual benchmark, i.e.
+```
+ConfigWrapper ConfigArg BenchWrapper BenchArg ActualBenchmark
+```
+
+The `Disabled` attribute for both benchmarks and configurations removes them from normal use,
+but leaves them accessible to explicit request with `-b` or `-c`.
diff --git a/cmd/bent/assets.go b/cmd/bent/assets.go
new file mode 100644
index 0000000..22c9b51
--- /dev/null
+++ b/cmd/bent/assets.go
@@ -0,0 +1,704 @@
+// Code generated for package main by go-bindata DO NOT EDIT. (@generated)
+// sources:
+// foo
+// memprofile
+// cpuprofile
+// tmpclr
+// benchtime
+// benchsize
+// benchdwarf
+// cronjob.sh
+// cmpjob.sh
+// cmpcl.sh
+// cmpcl-phase.sh
+// tweet-results
+// benchmarks-all.toml
+// benchmarks-50.toml
+// benchmarks-gc.toml
+// benchmarks-gcplus.toml
+// benchmarks-trial.toml
+// configurations-sample.toml
+// configurations-gollvm.toml
+// configurations-cronjob.toml
+// configurations-cmpjob.toml
+package main
+
+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
+}
+
+// Name return file name
+func (fi bindataFileInfo) Name() string {
+	return fi.name
+}
+
+// Size return file size
+func (fi bindataFileInfo) Size() int64 {
+	return fi.size
+}
+
+// Mode return file mode
+func (fi bindataFileInfo) Mode() os.FileMode {
+	return fi.mode
+}
+
+// Mode return file modify time
+func (fi bindataFileInfo) ModTime() time.Time {
+	return fi.modTime
+}
+
+// IsDir return file whether a directory
+func (fi bindataFileInfo) IsDir() bool {
+	return fi.mode&os.ModeDir != 0
+}
+
+// Sys return file is sys mode
+func (fi bindataFileInfo) Sys() interface{} {
+	return nil
+}
+
+var _foo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x8c\xb1\x0a\xc2\x30\x14\x45\xf7\x7c\xc5\xb5\xed\x28\xf6\x17\xb4\x60\xc1\xa5\x43\x71\x71\x92\xa4\x7d\xb5\x19\xf2\x5e\x48\xd2\x3a\x88\xff\x2e\xe2\x10\x10\x1d\xce\x70\x2f\x87\x53\x6e\x6a\x63\xb9\x36\x3a\xce\xaa\x44\xbf\x30\x74\xb8\x45\xe8\x88\x41\x9c\xd3\x3c\x6e\x61\x96\x84\x7b\xd0\xde\xd3\x08\xcb\x98\x44\x76\x8a\x86\x59\xd0\x8a\xbc\xd7\x4f\xaa\x47\x73\xec\xce\xd7\xe6\xd4\x1d\xfa\xcb\x33\xfb\x9f\x7a\x20\x14\xd5\xbe\xc8\x37\xf1\x6a\x83\xb0\x23\x4e\xb0\x51\xf9\x60\x39\x11\xaf\x2a\x5b\x5f\x45\x88\x4c\x7f\x68\xd5\x2b\x00\x00\xff\xff\x6b\x64\xf5\xee\xd5\x00\x00\x00")
+
+func fooBytes() ([]byte, error) {
+	return bindataRead(
+		_foo,
+		"foo",
+	)
+}
+
+func foo() (*asset, error) {
+	bytes, err := fooBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "foo", size: 213, mode: os.FileMode(493), modTime: time.Unix(1548796946, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _memprofile = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x8e\xb1\x6a\xf3\x40\x10\x84\x7b\x3d\xc5\xfc\x67\x95\xff\x5a\x21\xbd\x20\x31\xa4\x70\xe3\xc2\xa4\x49\x25\x9f\x4e\x2b\x4b\xa0\xdb\x3d\x74\x7b\x24\x10\xfc\xee\xc1\x41\x10\x97\xbb\xf3\xcd\xc7\xec\xfe\x35\xfd\x2c\x4d\xef\xf3\x54\xed\x70\x2e\x02\xbf\x5e\x33\x7c\x46\xd0\x18\xbd\x0c\xff\xd1\x17\xc3\x5a\x04\x91\x63\x5a\x75\x9c\x17\x86\x97\x01\x36\xb1\x20\xdd\x3f\x30\x45\xf0\xc9\xca\xca\x30\xce\xf6\x48\x6a\xb1\x54\xac\x8a\x69\x6c\x5d\xfd\x7d\x78\x3b\xbd\x77\x87\xe3\xe9\xf5\xfc\x71\xeb\xb6\xf3\x78\xdb\xff\xd2\x0e\x95\xab\x5f\x1c\xe8\xae\xd8\xff\x29\x5a\x57\xc7\x34\xba\x8a\xc3\xa4\x8f\xe6\x59\x70\x49\x9f\xc3\xa5\xd9\xf2\xab\xc2\x54\x97\x6d\x12\x91\x5f\x16\x0d\x5d\x4e\x3e\x30\x88\x8c\xbf\x0c\x44\xa1\x44\x10\x89\x0e\x1c\xb4\x88\xb5\xcf\x4f\xd8\xea\x3f\x01\x00\x00\xff\xff\x81\x87\x4a\x4b\x09\x01\x00\x00")
+
+func memprofileBytes() ([]byte, error) {
+	return bindataRead(
+		_memprofile,
+		"memprofile",
+	)
+}
+
+func memprofile() (*asset, error) {
+	bytes, err := memprofileBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "memprofile", size: 265, mode: os.FileMode(493), modTime: time.Unix(1550175896, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _cpuprofile = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x8e\x31\x6b\xc3\x30\x10\x46\x77\xfd\x8a\xaf\x4a\xc6\x3a\x2e\x5d\x8b\xa0\x0d\x74\xc8\x92\x21\x74\x29\x21\xc4\xb2\x2c\x45\x02\x47\x27\xac\x13\x31\x94\xfc\xf7\xe2\xc4\xd0\x8c\x1d\xa5\x7b\xf7\xee\x2d\x9e\xea\x36\xc4\xba\xd5\xd9\x8b\x05\x76\x25\x42\x0f\xa7\x0c\x9d\x61\xe8\x7c\xd6\xb1\x7b\x46\x5b\x18\x43\x89\x30\xa9\xa4\x81\x5c\xe8\x2d\x74\xec\xc0\xde\x46\xa4\xe9\x07\x4c\x30\x3a\x71\x19\x2c\xd8\x66\x7e\x24\xa9\x70\x2a\x2c\x92\x53\x72\xf9\xb3\xfe\xdc\x7e\x1d\xd7\x9b\xed\xc7\xee\xfb\x7a\x9c\x9f\x9b\xeb\x6a\x62\x25\x84\x5c\xbe\x4b\x54\x93\x60\xf5\x27\x50\x72\x99\x9c\x14\xd6\x78\x7a\xd4\x86\x88\x26\x5d\xba\xa6\xbe\x8f\x83\xc3\x7e\x8f\xb1\xb9\xf8\x60\xfc\x3d\xaa\x81\x52\x18\xa5\xc4\xe1\x80\xb7\x5b\xac\x00\x80\x13\x81\x89\xfa\x39\xbc\x62\x3b\x32\x2a\xd7\x6b\x46\x15\xa9\xb3\x86\x4a\x64\xf5\xfa\x82\xf9\x6c\x9f\xed\x6d\xed\x7f\xb8\x0b\xe2\x37\x00\x00\xff\xff\xc6\x14\x93\x59\x50\x01\x00\x00")
+
+func cpuprofileBytes() ([]byte, error) {
+	return bindataRead(
+		_cpuprofile,
+		"cpuprofile",
+	)
+}
+
+func cpuprofile() (*asset, error) {
+	bytes, err := cpuprofileBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "cpuprofile", size: 336, mode: os.FileMode(493), modTime: time.Unix(1562784057, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _tmpclr = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x8f\xcd\x6a\xe3\x30\x14\x85\xd7\xa3\xa7\x38\x71\xbc\x1a\x26\xe3\x07\x28\x86\x36\xb8\x0b\x2f\x1a\x42\xea\x4d\x29\xa5\xc8\xf6\x55\x25\xa2\x3f\xa4\x9b\x36\x21\xe4\xdd\x8b\x9d\x2c\xda\xe5\xe5\x9c\x8f\xf3\xdd\xe5\xa2\xea\x8d\xaf\x7a\x99\xb5\x58\xa2\xd3\x26\xe3\x2b\xc9\x18\x29\x41\x32\x93\x8b\x9c\xc1\x01\x83\x25\xe9\x71\x88\x90\x8a\x29\xa1\x27\x3f\x68\x27\xd3\x3e\x83\xb5\x64\x8c\xc9\xf4\xbd\x25\x28\x63\x29\xc3\x78\x0e\xa8\xd8\x45\xb1\xc4\x73\x70\x84\xa0\xc0\x9a\x1c\x12\xe5\x48\x03\xa3\x7b\xda\x36\xed\xee\x1f\xf2\x14\x8e\x01\x3e\xf0\xff\x79\x9d\xf0\x29\xed\x61\x06\xd6\x8f\x9b\xee\x7d\xdd\x6e\x1e\x76\x2f\x30\x79\xaa\x60\xa6\x8d\xb4\xf6\x04\x6b\xf6\x64\x4f\x93\x99\x93\x3c\x68\xb0\x36\xfe\x63\x6a\x25\x37\xe7\x2a\x1c\xfc\x08\xe3\xaf\x1a\xdb\xb6\xa9\xcb\x52\x74\x4d\x3d\x9d\x55\x4f\x9e\x57\xe5\x79\xdb\x36\x17\xe1\xf6\xa3\x49\x58\x45\x94\xe7\xae\xb9\x88\xab\x59\x3d\x1f\x28\xca\xfb\x42\x24\x87\x55\x52\xb7\xd8\x28\xbc\xa2\x38\x96\xe7\x1f\x76\x97\x02\x8b\x1a\xc5\xb1\xc0\x1b\xee\xa6\x3f\xbd\xf8\x73\x83\xe6\xb5\xdf\xe5\xbf\x42\x19\xf1\x1d\x00\x00\xff\xff\x69\x07\x77\x0d\x75\x01\x00\x00")
+
+func tmpclrBytes() ([]byte, error) {
+	return bindataRead(
+		_tmpclr,
+		"tmpclr",
+	)
+}
+
+func tmpclr() (*asset, error) {
+	bytes, err := tmpclrBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "tmpclr", size: 373, mode: os.FileMode(493), modTime: time.Unix(1536353792, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _benchtime = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x3c\xca\xb1\xb1\xc2\x30\x0c\x06\xe0\x5e\x53\xfc\x4f\x71\xf9\x20\xc7\x00\xb9\x63\x06\x36\x90\x82\xc0\x2e\x6c\x38\xeb\xcf\xb1\x3e\x1d\xfd\xb7\xfc\xad\xde\xc6\xea\x96\x55\x16\xdc\x8e\x01\x9b\xcf\x84\x25\xf6\x57\xef\x36\xee\xff\xf0\x83\xf8\x34\x56\x18\x3c\xc6\x5e\xd9\x7a\xe0\x6d\xd3\x7a\x30\xa6\x88\x73\xd3\x72\x51\xc9\xda\x1e\x14\xd1\x72\x55\x9c\x18\xc9\xf3\x8f\x6f\x5a\x9c\x2a\xdf\x00\x00\x00\xff\xff\x3f\xb3\x91\xf6\x6d\x00\x00\x00")
+
+func benchtimeBytes() ([]byte, error) {
+	return bindataRead(
+		_benchtime,
+		"benchtime",
+	)
+}
+
+func benchtime() (*asset, error) {
+	bytes, err := benchtimeBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "benchtime", size: 109, mode: os.FileMode(493), modTime: time.Unix(1581111300, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _benchsize = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x95\xcf\x6f\x9b\x30\x14\xc7\xcf\xf5\x5f\xf1\x46\x91\x7a\x98\x58\xd7\x1e\x33\x31\xa9\x9b\xa6\xed\x56\x69\xdb\xad\xea\x82\x21\x0f\xb0\x02\x36\x32\xee\x4a\x92\xf1\xbf\x4f\xfe\x11\x86\x69\x03\xd9\x85\x3c\x7f\xf9\x7e\x9e\x6d\x9e\x9f\x73\xf9\xe6\x3a\x65\xfc\x3a\xa5\x6d\x49\x88\xaa\x9b\x58\xd5\x4d\x94\x22\xcf\xca\xa8\x65\x7b\x8c\xc2\x90\x90\x2e\x4e\x9e\x4b\x96\x95\x50\x68\x29\x21\x84\xe5\xf0\x00\x41\x17\x76\x01\xc4\x10\x74\x01\x3c\xc2\x07\x50\x25\x72\x72\xa1\x1d\x10\xdd\x41\x10\xde\x04\xf0\x11\x42\x55\x37\x04\xab\x16\xc9\x45\xa0\xed\x93\x37\x39\x23\x84\x10\x25\x14\xad\xe2\xa4\x90\xd8\xc0\x4f\x1d\x9b\x97\xf0\x07\xe8\xf3\x16\xae\x0e\x8d\x64\x5c\x41\x78\xdb\x5f\x25\x44\x61\xa7\xe2\x04\x8d\xf5\xe1\x17\x8d\xf6\x8f\x5a\xb1\xd1\x69\xaa\x10\x4d\x56\x71\x45\x53\x37\xc9\x30\x3e\x8d\x48\xb1\xa1\x8a\x3a\xbf\x1d\x9c\x36\x5b\xeb\x78\x55\x5a\x31\xd1\xbb\xf5\xcc\xba\xc8\x7e\x83\xe9\x53\xb1\x66\x3c\x17\x6e\xaa\x91\x72\x9a\x73\xa6\x4a\x64\x3e\x55\x89\x6c\x19\x62\x1c\x27\x14\xe3\xb8\x88\x49\xca\x0b\x6c\x7d\xd0\x6a\x8b\x68\x2e\x69\x3d\x99\xd2\x48\x8b\x20\x4d\x53\x89\xbf\x7d\xd2\x6a\x8b\x68\xf3\x94\xf2\x17\xb3\x3a\xf1\x1c\x58\xed\x9a\x97\xb0\x16\x97\x8b\xe9\x56\x1d\x1e\xbc\xf1\x2a\x7a\xdf\x4f\x17\x37\x58\x9c\x30\xf1\x98\x35\x8c\x3d\x5a\x30\x1e\x82\x59\x29\x20\x28\x84\x68\x57\x10\x7e\xbd\xbf\xff\x11\x0c\x12\x95\x59\x69\xc4\xbb\xef\x9f\xbf\x1d\xe5\x66\x5b\xac\x02\xb8\x84\x2f\x92\xb6\x08\x94\xef\x80\xf1\x12\x25\x53\xb8\x81\x66\x5b\x00\xcb\x21\x67\x15\xb6\x40\x25\x42\x26\x78\x46\x15\x72\xaa\x70\xe3\xf8\x4f\xfa\x42\xa8\xa9\xdc\x86\x87\xdb\x7e\x6d\xfa\x35\x80\x1b\x08\x0f\x26\xec\xc1\xfc\x44\xe9\x4e\x61\xfb\x3a\x81\x9d\x72\x00\x76\xaa\x07\xfd\x9c\xb1\xeb\xee\xb1\x76\x1d\xf5\xa0\x9f\x33\x76\xdb\x9e\x16\xb0\x71\xef\x5a\x76\x06\x72\x37\x80\xa5\x86\x0b\xa1\x07\x17\x38\xf2\x58\xd5\x38\xc1\xae\x91\x30\x54\x43\xf7\x67\x0f\x6f\xff\x09\x95\xc8\xfc\x31\xe3\xe8\x09\xb6\x59\x3c\xc9\x74\x81\xa7\xd8\xb3\xe2\x49\xee\x6c\x4c\x35\x7d\x16\xfa\x84\xbc\xba\x35\xe7\x1a\x95\xc9\x2a\xbd\x3b\xcb\xc7\xbd\x5d\xc2\x0c\xad\x77\x38\x86\xdd\x96\xed\xc0\x26\x98\xe5\x2b\x91\x79\xb8\xf9\x40\xe7\xd3\x8c\xa3\x8f\x9b\xef\x79\x36\x6f\xbf\xb6\x97\xe1\x58\x80\xb3\x73\x98\xf2\x78\x29\x5c\xc1\xce\xce\xe0\xea\xe4\xe5\x38\xd6\xee\xbf\xb2\xf0\xe9\x4a\x86\x53\x31\xce\x42\x64\x6d\xff\x56\xff\x06\x00\x00\xff\xff\xb4\x02\x83\x6d\xd5\x07\x00\x00")
+
+func benchsizeBytes() ([]byte, error) {
+	return bindataRead(
+		_benchsize,
+		"benchsize",
+	)
+}
+
+func benchsize() (*asset, error) {
+	bytes, err := benchsizeBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "benchsize", size: 2005, mode: os.FileMode(493), modTime: time.Unix(1604167338, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _benchdwarf = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x95\xdf\x6f\xdb\x36\x10\xc7\x9f\xc5\xbf\xe2\x2a\x0b\xc8\x8b\x34\xc1\xdd\xc3\x80\x0e\x1e\xb0\x76\x69\xb7\x87\x2e\xc3\xf2\x38\x0c\xf6\x99\x3a\x49\x84\x25\x52\x23\xcf\xb1\x15\xcf\xff\x7b\x41\xca\x3f\x14\x27\x45\xd2\x22\x6f\xf4\xe9\xf8\xbd\x1f\x9f\xe3\x79\xf2\x26\x5f\x2a\x9d\x2f\xd1\xd5\x42\x6c\x67\x8b\x4d\xad\x64\x0d\xc5\x06\x6d\x99\x55\xc6\x14\x9a\x9c\x5b\x88\xfe\xf8\xc1\x74\x8c\xb6\x32\xb6\x20\xbb\x10\xf7\x47\xab\x36\x8e\x5b\x5e\x08\x6e\xbb\x19\xb7\x5d\xb6\x24\x2d\xeb\x6c\x10\x49\x12\x11\x7e\xce\xb4\x11\x62\x02\x2d\xae\x08\x14\x03\x6d\x95\x63\x70\xc6\x9f\x25\x6a\x58\x12\x58\x6a\xcd\x1d\x15\x42\x22\x43\x5e\xd0\x5d\xae\xd7\x4d\x03\xbf\x40\xc2\x6d\x07\xfe\xee\x67\x42\xb7\xb6\xe4\xa0\xb4\x28\x59\x19\x0d\xa6\x04\xa5\xbb\x35\xc3\x1d\x5a\x85\xcb\x86\x1c\xb0\x81\x46\x69\x7f\xa8\x91\x01\x2d\x41\x67\xc9\x91\x66\xa1\x4a\xf8\x07\xe2\x6d\xb2\x8d\x61\x06\xf1\x36\x86\x7f\xe1\x67\xe0\x9a\xb4\x88\x48\xd6\x06\xe2\x0f\xa8\xa1\x22\xbe\xa8\x1e\xa4\x69\x5b\xd4\x05\x6c\x14\xd7\x70\x55\x99\xe0\x53\x29\xae\xd7\xcb\x1f\xa4\x69\xf3\xc2\xbe\x95\x35\x3a\xca\x1f\xde\xcb\x65\x5b\x5c\x98\xae\x62\x41\x8d\x23\x11\x5d\x44\x88\x93\x69\x7c\x28\x54\x44\x13\xa8\xd1\x41\x69\x6c\x8b\x0c\x93\x50\x9e\x4b\x61\x72\xa8\x22\x05\x8b\xac\x4c\x0a\x85\x2a\x4b\xb2\xa4\x25\x89\x68\x70\xfa\x6f\x8d\x8d\xe2\x7e\xb6\x60\x54\x0d\x64\xd3\xa1\x71\xff\x03\x6e\x56\x70\xf5\xfe\xfa\xd3\x1f\x7f\xc2\xee\xe3\xed\x2c\x4e\xe3\x3d\xec\x3a\xab\x34\x43\xf2\xe3\xfe\x6a\x71\x2c\xdf\x7b\x87\xc4\x42\x03\xe1\x20\x07\x1b\xe9\xdb\x05\x8b\x8d\x84\xac\x09\x9a\x0b\x11\x0d\x48\x7b\x72\xa2\x54\x5f\x45\x53\xae\xf5\x70\x46\x5b\xad\x5b\xd2\xfc\x18\x0a\x20\x9f\xdd\x48\xb3\xed\x4f\x98\xfa\xe7\x30\x8d\x66\xf1\xe5\x8c\x46\x97\x4e\x34\xc6\x42\x5f\x47\xa1\x3f\x1e\xf2\x74\xe9\xb1\x9e\x6b\x6b\x8d\x4d\xd9\x98\xcf\xa8\xfb\xbf\x14\x49\x72\x69\xab\x9c\x53\xba\xba\x35\x6b\x2b\x29\xdd\x58\xa3\xab\x1b\xaf\x7c\xfc\xf0\x9b\xef\x70\x3a\xcd\xd8\x30\x36\x41\xc0\xe5\x67\x69\x11\xa1\xad\xbe\x8b\xe4\x4f\x4f\x92\xf4\x6a\xaf\x40\x72\x78\x51\xbe\x64\x65\x34\x15\xa0\xf4\x41\xff\xc4\x93\xb1\xaa\xa8\x00\x74\x10\x2b\x37\xf7\xeb\x20\x3e\x91\xbc\x7f\x8e\xe4\xb0\x3f\x5e\x0e\x71\xf0\x3f\xf1\x3b\x5c\xcf\xe4\x53\xf4\x42\x9f\xd3\xc1\x25\x9d\x66\xc3\x21\x0f\x56\x11\xf9\xf3\x6b\x3c\x9b\x10\xff\xd9\x5e\x8f\x33\xcd\x56\xdf\x95\xec\x4a\xe9\xe2\x75\x13\xf6\x8a\xcf\x64\xfd\x70\x44\x02\xd5\x64\x17\x8c\x7b\xef\xde\x93\x7b\x8c\xb6\x32\xc6\xbd\x83\xe4\xd3\xcd\xcd\x6d\x7c\xb6\xa1\x95\x75\xb0\xfe\xfa\xf7\x87\xdf\x4f\xf6\x6e\x55\xbd\x8b\x61\x02\xd7\x16\x1d\x01\xea\x1e\x94\xae\xc9\x2a\xa6\x02\xba\x55\x05\xaa\x84\x52\xf9\xdd\xee\x07\x4d\x1a\x2d\x91\x49\x23\x53\x21\xa2\xd1\x4e\x7f\xf3\x70\xc6\x40\x44\x07\xf9\xf7\x3e\xd3\x16\xed\x2a\xd9\xbd\xdd\xcf\xc3\xdc\xce\xc3\xc6\x9c\x1f\x17\x70\x0c\x53\x48\x76\x0f\xb6\xe8\x7e\xf8\x63\x71\xd9\xe1\xb7\x88\x4a\x75\x0e\xd7\x7f\x63\x38\xdf\xe9\x8b\x68\xa3\x77\xbe\x0f\x24\x9e\x8e\x74\xff\x8d\x91\x3c\xd8\x8b\x48\xa3\x21\xdf\x07\xf0\xa3\x50\xd1\x04\x5e\xa8\x35\xf7\x83\x72\x16\x1c\x0d\xe2\x23\xd1\x52\x85\x41\xb1\xed\x30\xdb\x5f\x02\x00\x00\xff\xff\x85\x19\xbd\x0f\x63\x08\x00\x00")
+
+func benchdwarfBytes() ([]byte, error) {
+	return bindataRead(
+		_benchdwarf,
+		"benchdwarf",
+	)
+}
+
+func benchdwarf() (*asset, error) {
+	bytes, err := benchdwarfBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "benchdwarf", size: 2147, mode: os.FileMode(493), modTime: time.Unix(1604003822, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _cronjobSh = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x56\x6b\x6f\xdb\x36\x14\xfd\x1c\xfe\x8a\x5b\xc5\x43\x5a\xd4\x94\xea\xac\x1d\xd6\x0c\xea\x96\xa4\x49\x56\xac\x51\x8a\x3c\x80\x62\x45\xb7\x50\xd2\x95\xc4\x86\x12\x05\x92\x8a\xdd\xba\xfe\xef\x03\x25\x3f\xe5\x47\x9a\x60\x05\x9a\x0f\x81\x2c\x1e\x9e\xfb\xe2\x39\xd4\xf6\x23\x2f\xe4\x85\x17\x32\x9d\x01\x1d\x10\xb2\x0d\x25\xaa\x44\xc8\xe8\x06\xb8\x86\x42\x1a\x60\xa2\xcf\x3e\x6b\x60\xb7\x8c\x0b\x16\x0a\x24\xef\x8e\xce\x8f\xdf\x9e\x1d\xfe\xe5\x5f\xf7\x33\x1e\x65\xd3\x0d\xd7\x84\x74\x86\x93\xc5\x11\x60\x94\x49\x70\x4e\x14\x33\x15\x37\xb2\xd2\x33\x62\x23\xa1\x54\x78\x8b\x85\x01\x93\x71\x0d\x3a\x52\xbc\x34\x90\x28\x99\x83\x36\x4c\x19\x5e\xa4\xc0\x13\xd0\x32\x47\x93\xd9\x1f\x28\x34\xda\x7c\xb4\xe1\x42\x00\x2f\xa0\x54\x32\x55\xa8\xb5\x43\xc8\xf9\xd9\xd9\xa5\xef\x74\x86\x7f\x9e\x9d\x1e\x8d\xbc\xbe\x54\x37\x5e\x88\x85\xa1\x91\x92\x85\x43\x70\x50\x4a\x65\xc0\x82\x6c\x71\x07\xfb\x17\x47\x96\xc8\x64\x08\x21\xd3\x28\x78\x81\x5d\x88\x31\xe1\x05\xc6\x90\xa1\xc2\x2e\x30\xad\xab\x1c\x63\x88\x32\x8c\x6e\x30\x06\x59\x19\x60\x45\x0c\x61\xc5\x85\x71\x89\xa5\xf0\x4f\x64\xcf\xed\x3d\x9f\xb0\xdb\x57\x96\x3d\xa8\x7b\x56\xe5\x21\x2a\x90\x09\x84\x58\x44\x59\xce\xd4\x8d\xee\xc2\x41\x6b\xa9\xe2\x22\xd6\x64\x1b\x0e\x59\x01\xf2\x16\x95\xe2\x31\xda\xac\x34\x42\x9f\x9b\x0c\x68\xe0\xd7\x41\x29\xf3\x41\x16\x10\xc9\x3c\xb7\x3f\x6d\xbe\x2e\x09\xfc\xdd\x17\xe4\xc0\xfe\x0b\x02\xe1\x3f\x23\x07\x81\xf0\x7b\xa4\x79\xb4\x4f\x84\x27\xf0\x01\x9c\x41\x67\x78\x71\xf5\xe6\xf2\x68\xe4\x80\x0f\xce\xc0\x81\x8f\xf0\x9b\x8d\x51\x90\xad\xfa\xbd\xef\xcc\x35\x2a\xe1\x84\x44\x31\x38\x9d\xa1\xed\xd5\xc8\x19\x93\x3c\x02\x8a\xf6\xa5\x2d\x71\x34\xcf\x50\x8f\xf7\x94\x6b\x5d\xcf\x67\x50\x62\x64\x30\x9e\xf6\x14\x62\xae\x30\x32\x52\x7d\x9e\xdb\xcc\x8b\x19\x7d\x17\x98\x31\x98\x97\xf5\xac\x8d\x6c\x9a\x3d\xdf\xe9\xd8\x25\x5b\x96\xcd\xbf\xae\x23\x75\xea\xc9\x7d\x05\xa3\xe0\x04\xd2\x6b\xb2\x35\x7f\xd4\x52\x6e\x20\x12\xb2\x40\xc8\x8c\x29\xf5\x9e\xe7\xa5\xd2\x4d\xa5\x4c\x05\x6a\x59\xa9\x08\xdd\x48\xe6\x5e\x2a\x81\x86\xa0\x50\x20\xd3\x48\x43\xc5\x8a\x28\x73\x3b\x43\x1b\x64\x04\xe3\x24\xc9\x56\x5d\x75\xe7\x77\x78\xe4\xc3\xb3\xb9\x72\x9b\x7a\xff\xbf\x40\x70\xbc\xff\xe6\xed\xd1\x6b\x4b\x3c\xe0\x06\x7a\x64\x2b\xe1\x64\x2b\x8a\x27\xeb\x9e\x56\xd1\x62\x91\xae\x97\xb3\x1b\x74\xad\x52\xef\xc8\xb2\x6e\xd5\x14\xbc\x36\xd2\x6c\xd4\x76\xf6\xdb\x70\x8e\x89\x42\x9d\x81\xe1\x65\x17\x52\x34\xa0\xf0\x96\x6b\x2e\x8b\xe6\x24\x50\x84\x54\x52\xc3\xcb\xb9\x78\xf3\xf9\xa9\x1c\xa8\x4a\xc6\x18\x4b\xf9\xa0\x09\x8d\xb7\xaf\xa9\xaf\x35\x84\x71\x3e\x09\xe3\x02\x63\x32\xa9\x2f\xe1\xf6\x20\x37\x6b\x75\x1b\xd7\x75\x71\x53\x90\x59\xfb\x96\xd9\x0d\x2f\xfd\x6b\x9b\x85\x90\x29\xd0\x02\x7a\x40\x69\x22\x55\xce\x8c\xbf\xf3\x53\xb6\x73\x6d\x9b\x79\x32\xd7\x3f\x48\xa4\xaa\x95\x01\x5a\xda\x18\x0a\x1b\x6f\x05\x96\x87\x3c\xad\xb8\xf9\xbc\xa0\x3c\x6f\x72\x16\x9b\xe3\x7f\x47\xa0\xb3\xd2\xf0\x9c\x7f\xc1\xb1\x6a\x1a\xfd\x4c\x8c\xa7\x25\xe9\x6d\x38\x96\x0a\x98\xca\x7f\x79\x0e\x21\x4f\x5d\xc1\x8d\x11\xd8\x85\x9c\xa7\x99\x81\x02\x31\x1e\x7b\x73\xc2\x07\x8d\x0d\xcd\x2c\x58\xf0\x1b\xdc\xb3\x85\x9d\x9d\xee\xbf\x7f\x77\x7e\x76\x78\xe1\x3f\xb7\x86\xc6\x22\x23\x80\x1e\xc2\x2e\x7d\x01\x94\x82\xeb\xba\x0b\xfd\xb6\x0e\x03\xf4\x0a\xe8\xad\xb5\xb4\xce\x30\x18\x59\x4b\xeb\x0c\x0f\x46\x40\xdf\xfa\x76\xf5\x93\x0c\xb5\x5b\x17\x78\xe8\x47\xb2\x48\x78\x5a\x29\x66\xb8\x2c\x74\xed\x4c\x9f\x64\xe8\x1a\x99\x0b\xa0\x11\x1c\x30\x8d\xdd\x4b\x5e\x82\xd3\xf9\xc3\x21\xe7\x57\x81\x7f\x6d\x18\x17\x40\x7b\xb0\xc0\xf4\x15\x58\xff\xc6\x6e\xd8\x19\x96\x8a\x17\x06\x3a\xbd\x91\xed\x56\x34\x6e\x0d\xb9\xb8\xdc\x3f\x7d\xe7\x3b\xda\xb0\xbc\xa4\x9d\xce\xf4\x9a\xa8\xdf\x93\xe6\xe6\xd2\x15\x37\xb8\x07\x33\x0f\x7d\xf5\xca\xfe\xb0\x88\xd1\x18\x62\x83\xd6\x1c\x16\x76\x7e\x15\x34\x20\x67\x82\x72\xc6\x30\xc3\x6b\x80\xe1\xe5\x1a\x80\x1d\xb4\x45\xd4\x0e\xd1\x86\x90\x8b\xe3\xf7\xf6\x7e\xab\xf9\x09\x89\xca\x69\x16\x13\xaf\xa0\xb2\x34\x6e\x67\x78\x71\xfc\x7e\xd4\x5a\xb6\x21\xe7\x57\x49\xc4\xcc\x38\x55\xd7\x36\xd3\x6d\xce\x4c\x5d\xd9\x32\xd5\x0c\x7b\xc9\xcb\x79\x68\x9b\x16\x53\x85\x25\xec\xfc\xf3\xf8\x60\x72\xf0\xbe\x7e\xa0\xff\x32\xfa\x65\x9f\xfe\xfd\x8c\xbe\xfc\xf8\x74\xef\xc9\xce\x42\x58\x6d\x62\xeb\xf5\xab\xe3\xde\x87\xcd\x26\x36\x4f\xd6\xce\xac\x5d\xef\xb0\x9e\xbf\xe6\x5f\xb0\x5b\x3f\xc5\x7d\xa6\x92\xd1\xb7\x35\x60\xd3\xde\x76\xdc\x06\xca\x6e\x71\x05\xef\x0a\xb8\xca\x17\x26\x5e\x5f\x03\xb5\x66\xc9\x36\x5c\x66\x08\x89\x14\x42\xf6\xad\x0c\x63\x2c\xb1\x88\xb5\xfd\x26\xb0\xda\x04\x69\xfd\x04\x78\x91\x28\xa6\x8d\xaa\x22\x53\xd9\x4f\x18\x8d\xb5\x56\xed\x5f\xca\x4d\x56\x85\x9e\xb5\xd7\x58\xed\x46\x19\xd3\xe8\xa5\x92\xd6\x09\x52\xd3\x47\x34\x34\x94\x06\xc6\xe8\x99\x3b\x53\xeb\x5e\xd8\x5f\x36\xe9\xc8\xb3\x1f\x72\xde\x53\x6f\xb7\xf7\xeb\xcb\xdd\x9f\xe1\x71\x53\x2b\x2a\x8e\xfa\xc9\xf4\xaa\x70\xbd\x86\x5b\xa1\xae\x84\xd1\x73\xf6\xda\x5e\x99\x1e\xed\xe6\x16\x7a\x8d\x61\x95\xa6\xb6\xd4\xe6\xc0\xb5\x2c\x6c\xa3\xb7\x04\x62\xe2\x2e\xf5\xd3\xcc\x5f\x02\x71\x0f\x87\x09\x84\xf5\x98\x40\x6c\x70\x99\x31\xdf\xf7\xf0\x19\x1a\x88\x1f\xd9\x6a\x02\xb1\xc1\x69\x66\x8b\x6d\xe1\x05\x62\xd9\x6a\xe6\xa8\x16\x84\xb6\x88\x6d\x11\xdf\xd7\x6a\x02\xb1\xc2\x6c\x1e\x46\xd7\xa4\xb6\xe4\x36\x2b\xcb\x18\x87\xbe\xdb\x6e\x36\x34\xe1\x4e\xbf\x99\xed\x5d\xb6\x9b\xe9\xda\x32\xb8\x65\x36\xdb\x10\x48\xca\x8b\xfa\xab\xfd\xfe\x92\x9b\x2a\x6e\x51\x70\xf7\xd1\x5b\x2d\xb7\x4d\x6a\xfb\x8e\x62\xfb\xa1\xb5\xb6\x49\x6a\x6b\x95\xb6\x42\x68\x6b\x8e\xd8\xb2\xcc\x1e\xac\xb2\x55\x22\x7b\xa8\xc6\x56\x48\x6c\x9d\xc2\xbe\x45\x60\x6b\x8b\xbf\x53\x5e\x1b\xd4\xd5\x16\xd7\x1a\x6d\xfd\x17\x00\x00\xff\xff\x2d\x69\x18\xf3\x5d\x11\x00\x00")
+
+func cronjobShBytes() ([]byte, error) {
+	return bindataRead(
+		_cronjobSh,
+		"cronjob.sh",
+	)
+}
+
+func cronjobSh() (*asset, error) {
+	bytes, err := cronjobShBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "cronjob.sh", size: 4445, mode: os.FileMode(493), modTime: time.Unix(1586977140, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _cmpjobSh = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x54\x51\x6f\xdb\x36\x10\x7e\x0e\x7f\xc5\x95\x11\x90\x0d\x2b\xed\xb8\xc0\x1e\xe6\x4d\xe9\xe2\xcc\x01\x86\x65\x76\xe0\x34\x2f\x2b\xba\x99\x92\x4e\x12\x6b\x8a\x14\x48\x3a\xca\xea\xea\xbf\x0f\xa4\x6c\xc7\x4e\x9c\x0c\xd9\xde\x6c\xde\xf7\xdd\x77\xf7\x9d\xee\x8e\xdf\xf4\x13\xa1\xfa\x09\xb7\x25\xb0\x7b\x42\x44\x0e\x1f\x21\x3a\x06\x26\x1d\xbc\x83\x4f\xf0\x23\xb8\x12\x15\x01\xc0\xb4\xd4\x90\x56\xf5\x67\x9d\xf4\x6c\x09\xf4\xa7\xc4\x70\x95\x96\x4c\x1b\xe6\x78\x71\x46\x0f\xbd\x24\xa8\x1c\xd3\xb5\x13\x5a\x59\xea\x73\xdc\x0b\x07\x03\x92\x8b\x8d\xce\x6a\x30\x3c\x1d\x0e\x5a\x88\x81\x32\xfa\x44\x8d\x5e\x0a\x63\x1d\xd4\xdc\xf0\x0a\x1d\x1a\xb0\xa5\x5e\xca\x0c\x12\x04\x0e\x85\x70\xe0\x78\x01\xda\x40\xa7\x7b\x58\xe0\xdd\x8b\x02\x37\x98\x6a\x95\xfd\x47\x05\x2d\x33\xc7\x8b\x98\x46\x03\x4a\x6c\x29\x72\x47\x88\xc2\xe6\xf1\xd3\x6c\x3a\xfd\x10\xcf\xeb\x26\x9b\x13\xbc\xaf\xb5\x71\xe0\x5f\xa0\x23\x43\x47\x20\xe4\x18\x6a\x34\xb9\xd4\xe9\x02\x84\x05\xa5\x1d\x70\xd9\xf0\xbf\x2d\xf0\x3b\x2e\x24\x4f\x24\x92\xeb\xf1\xec\xf2\x6a\x7a\xf1\x5b\x3c\x6f\x4a\x91\x96\x5b\xc2\xdc\xb3\x27\x81\xb6\xac\x12\x34\xa0\x73\x48\x50\xa5\x65\xc5\xcd\xc2\xbe\x85\xd1\xa3\xd0\x52\xc8\xcc\x92\x63\xb8\xe0\x0a\xf4\x1d\x1a\x23\x32\xf4\xae\x58\x84\x46\xb8\x12\xd8\x24\x06\xae\x32\x60\x3c\x06\xad\x20\xd5\x55\xe5\xff\x4a\xa1\xb0\x47\x26\xf1\xe0\x7b\x32\x8a\x07\x84\xcc\xc6\xd7\xd3\x98\x96\xce\xd5\x76\xd8\xef\x17\xba\x57\x68\x5d\x48\xb4\x7a\x69\x52\xec\xa5\xba\xea\x17\x9a\x12\x92\x66\x40\xa3\x95\x6f\xb9\xa5\xeb\xa1\x30\x84\x42\x33\x2d\xb3\x87\x79\x1c\x99\x0a\x98\xc9\xd7\xef\xc1\x5d\xef\x7e\x2a\xb5\xc2\xc0\x1f\x5f\x4f\x5b\xba\x09\x87\x2c\x34\x7a\x4f\xe1\x4d\x0c\xf4\x74\x67\xae\x47\x61\xac\xcf\x53\xe1\xf2\xfc\xd7\xab\xf1\x2f\xe4\xe8\x61\x8c\x69\xb6\x8e\xf5\xad\x49\x83\x6a\x8e\x2e\x2d\x77\xa8\x34\x5a\x75\xd3\x6a\x69\x57\x55\x89\xe9\x42\x2f\xdd\x5e\xa0\xfb\xdc\xde\xfb\x8a\x4e\x0f\xd6\x73\x80\x04\x39\x17\x12\xb3\xdd\x6a\x7a\xfd\x8a\x2f\xb0\xe7\xd7\xf1\xc5\x94\xa3\xf3\x9b\x31\x6c\xa1\x07\xda\x7a\xde\x78\x85\xcd\x41\xe3\x15\x36\x9e\xf8\x8c\x79\x3e\xfa\xaf\x3d\x06\xda\x5a\xe2\x69\x6f\x9d\xd3\x0a\x9b\x97\x9c\xee\x16\xe2\x80\xd3\xdb\xc0\x6b\x9c\xde\x90\xfe\x87\xd3\x0f\x26\x3f\xcd\xb1\x6f\x72\xb4\xda\xac\x68\xeb\x17\xd0\x01\xbb\x05\x76\xe7\xf7\x29\x5a\x4d\x5a\xbf\x4f\xd1\x6a\xd4\x02\xbb\x8a\x7d\xf4\xb3\x4e\x6c\x4f\xea\x02\xd8\x45\x9c\x6a\x95\x8b\x62\x69\x78\xb8\x94\x6c\x7d\x65\x9d\xae\x24\xd0\xe8\x67\x4a\x66\xb7\x93\x78\xee\xb8\x90\xc0\x06\xb0\x47\xfe\x0a\xbc\x59\x00\x4b\xe1\x64\x55\x1b\xa1\x1c\x44\x83\xf6\x64\x1e\x0a\x0b\x37\x80\xdc\x7c\x38\xff\xfd\x3a\xa6\xd6\xf1\xaa\x66\x51\x44\x37\x47\x28\xbc\x93\xee\x0a\xda\xa5\x70\x38\x0c\x89\xbd\x36\x5b\x5f\x3b\x38\x3b\xf3\xdd\x05\x64\x4b\xd7\x58\x0f\x0a\xc9\x86\x10\xad\x66\xb7\x93\xf6\x30\xac\xfb\xc4\x3d\x66\xfb\xb1\x1f\x82\x75\xf3\xf1\xb0\xed\xa4\xf6\x61\xfe\xc8\x4a\x5d\xc4\x3e\x21\xdb\x59\x37\x85\x4d\x78\x56\xd8\xb0\x9d\x6f\x83\xa4\x3c\xcc\xdd\x17\xd6\x9b\xca\xac\x17\xae\x1d\x85\xb3\xf5\xda\x49\xed\x51\xbb\xa0\x09\x36\x7b\xa0\x2e\xb1\x2f\xb0\x30\x58\xc3\xc9\x9f\xdf\x8c\x36\xb7\xf4\xeb\x47\xf6\x17\x67\x5f\xce\xd9\x1f\xa7\xec\x87\x4f\xdf\x0d\xbf\x3d\xd9\x93\xb2\x2e\xd3\x4b\xb7\x69\x60\x2b\xf6\xaa\x3c\xbe\x9a\xfd\x3c\xdb\x7a\x1e\x77\xb6\x0a\xf3\xb5\xe2\x0b\xbe\x0d\xbf\xb2\x86\x9b\xbc\x7d\x22\xff\xb8\xd7\x97\x69\x5b\xb5\x0e\xc5\xef\x10\x58\x89\x3c\x43\xb3\x33\x94\xdd\xfc\x7b\x24\x53\xed\x8e\xee\x9f\x00\x00\x00\xff\xff\xa7\x54\x1d\x23\x5a\x08\x00\x00")
+
+func cmpjobShBytes() ([]byte, error) {
+	return bindataRead(
+		_cmpjobSh,
+		"cmpjob.sh",
+	)
+}
+
+func cmpjobSh() (*asset, error) {
+	bytes, err := cmpjobShBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "cmpjob.sh", size: 2138, mode: os.FileMode(493), modTime: time.Unix(1600884529, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _cmpclSh = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x55\x51\x53\xdc\x36\x17\x7d\x8e\x7e\xc5\x8d\xf0\x97\xfd\x3a\x8d\xd6\x78\x3a\x65\x26\x5b\xbc\x2d\x10\x98\x74\x4a\x97\x0c\x81\x97\x66\x92\xac\x2c\xcb\xb6\x82\x2c\x79\x24\x2d\xa6\x71\xfc\xdf\x3b\x92\x77\x61\x81\x0d\x81\xbe\xf5\x4d\xb6\xce\x3d\xe7\xea\xde\xa3\xab\xad\xe7\x71\x26\x54\x9c\x51\x5b\x01\xb9\x42\x68\x0b\x4a\xe1\xa0\xe0\x8e\x55\x80\x2b\xe7\x1a\x3b\x89\xe3\x52\x8f\x4b\xad\x4b\xc9\xad\x5e\x18\xc6\xc7\x4c\xd7\x71\xa9\x31\x18\x5e\xd8\x98\x55\x54\x95\xdc\xc6\x3b\x49\x9c\xbc\xda\xd9\xd9\x49\xe2\x9f\xe0\xc5\x8b\x40\xc3\x2a\xce\x2e\xf4\xc2\xc1\xd1\xe1\xd9\xc1\x9b\x4f\x6f\x0e\xf7\x5e\x23\x24\x0a\x78\x0f\xd1\x16\x10\xe9\x20\x81\x0f\xf0\x0b\xb8\x8a\x2b\x04\xc0\x59\xa5\x81\xd5\x0d\x93\x63\x5b\x01\xbe\x45\xbe\xab\xd4\x34\xde\x65\x72\x1a\xef\x36\xd4\xb1\x6a\x8a\x01\x67\x5c\x39\xa2\x1b\x27\xb4\xb2\xd8\xc7\x5f\x09\x07\x09\x2a\xc4\x4a\xa3\x4b\x26\xdb\x93\xa4\x87\x14\x30\xc1\xf7\x94\xf0\x91\x30\xd6\x41\x43\x0d\xad\xb9\xe3\x06\x6c\xa5\x17\x32\x87\x8c\x03\x0d\xd9\x3b\x5a\x82\x36\x90\x19\xaa\x58\x75\x47\x80\xc9\x14\x47\x09\x46\xb6\x12\x85\x43\xe8\xf4\xe4\xe4\x2c\x9d\x37\x6d\x3e\x47\xfc\xaa\xd1\xc6\x81\xff\x03\x4c\xfa\x82\x36\xdc\x14\x52\xb3\x0b\x10\x16\x94\x76\x40\x65\x4b\xff\xb6\x40\x2f\xa9\x90\x34\x93\x1c\xbd\x3d\x3c\x3d\x3a\x3e\x39\xf8\x23\x9d\xb7\x95\x60\xd5\x75\xc0\xdc\x47\xcf\x42\xd8\xa2\xce\xb8\x01\x5d\x40\xc6\x15\xab\x6a\x6a\x2e\xec\x4b\xd8\xbf\xb3\xb5\x10\x32\xb7\x68\x0b\x0e\xa8\x02\x7d\xc9\x8d\x11\x39\xf7\x47\xb6\x1c\x5a\xe1\x2a\x20\xb3\x14\xa8\xca\x81\xd0\x14\xb4\x02\xa6\xeb\xda\x7f\x4a\xa1\xf8\x18\xcd\xd2\xe4\x67\xb4\x9f\x26\x08\xb1\x1c\x70\xd4\xf9\x03\xf4\x78\x59\x4a\xc2\xa1\xd4\x44\xcb\xfc\xa6\x8a\xcf\x4c\x0d\xc4\x14\xcb\xff\xa1\x28\xa1\xe5\x52\x2b\x0e\x0f\x1b\x67\x15\x33\x74\xe9\x57\x78\x9e\xc2\xf6\x1a\x71\xe8\xce\x13\xb9\xe0\x68\xef\xf7\xe3\xc3\xd7\xe8\xd9\x4d\x8f\x58\xbe\xdc\x8b\xad\x61\xe8\x09\xae\xc6\x51\xc7\x64\x8f\xbf\x9b\xde\xd3\xe8\x00\x0a\x2a\x24\xcf\xd7\x53\xfc\xc6\x1d\xf9\x98\x7c\xbf\x34\x9b\xa2\x36\x28\x8c\xe3\x9a\x5e\xf0\xb1\xbf\xde\x0f\x72\xee\xef\xbd\x3b\x84\x6b\xe8\x86\x6a\x6a\x99\x3b\x5a\xa6\x73\x2f\x2e\x75\x09\x44\x41\x02\x84\x14\xda\xd4\xd4\xa5\xa3\xff\x55\xa3\x6b\xeb\x0f\xd0\x07\x7c\xa4\x78\xbb\xd1\x47\x8a\xb7\xd7\x55\x79\x64\xeb\x7d\xc8\xe3\x6c\xb4\xd4\xbd\x5f\xa2\xc1\x27\x8a\xb7\xc1\x27\xff\x29\xa3\xfc\x1b\x9b\x6c\x60\x7f\xb4\x4b\x6e\x0c\x72\x9f\x44\xf1\xf6\xb1\x06\x19\xa0\x77\x0c\x12\x75\xab\x31\xd8\xfb\x21\xe7\x80\x9c\x03\xb9\xf4\x33\x2b\xea\x66\xbd\x9f\x59\x51\xb7\xdf\x03\x39\x4e\xfd\xee\x67\x9d\xd9\x71\x90\x39\x48\x99\x56\x85\x28\x17\x86\x86\x97\x80\xb0\xba\xf9\xac\xb3\xb1\xd3\xb5\x04\x1c\xfd\x86\xd1\xe9\xf9\x2c\x9d\x3b\x2a\x24\x90\x04\x6e\x05\x7f\x05\xda\x5e\x00\x61\x30\xea\x1a\x23\x94\x83\x28\xe9\x47\xf3\x90\x58\x98\xb3\xe8\xdd\xd9\xde\x9f\x6f\x53\x6c\x1d\xad\x1b\x12\x45\x78\x75\x82\xf0\x1f\x0d\xcf\x88\x5d\x08\xc7\x27\x81\xd8\x6b\x13\x26\x31\x4c\xa7\x10\x75\x01\xd4\x2f\x51\x7e\x3b\xd0\x4c\x20\xea\x4e\xcf\x67\x7d\x00\xe1\x15\x0a\x2f\x61\xc3\xdd\xf1\x98\x61\xf5\x0d\xd8\x50\x41\x0f\x1b\x56\xf7\x60\xfe\xbe\x4a\x5d\xa6\x9e\x90\xdc\x90\xf9\x2e\x85\xdf\x8a\xb7\xe4\x26\x18\x21\x46\xdd\x32\xaf\xf1\x89\xcc\xc7\xe1\x29\x81\xe9\x90\x86\xd4\x65\xbf\x0e\x98\xf1\x76\x0d\x30\x30\xf6\x88\x97\x86\x37\x30\xfa\xf8\xff\xfd\xd5\x0b\xf5\xf5\x3d\xf9\x44\xc9\x97\x3d\xf2\xd7\x36\x79\xf5\xe1\xc7\xc9\x0f\xa3\x75\x09\xeb\x72\x6f\xcc\xe9\xba\xc8\x53\x38\x7c\x16\xeb\x1c\xab\x3c\xee\x9c\xa4\x0b\x8d\xb4\xe2\x0b\x7f\x19\x56\x79\x4b\x4d\xd1\xdf\x96\xbd\x73\xb6\x87\x42\x56\x2a\x03\x84\x5e\x72\x20\x15\xa7\x39\x37\x6b\xc5\xf7\xcb\x25\x75\x58\x2f\x63\x30\x32\xf5\x7a\x8b\xfe\x09\x00\x00\xff\xff\x4e\xf7\xa9\x8b\x7a\x09\x00\x00")
+
+func cmpclShBytes() ([]byte, error) {
+	return bindataRead(
+		_cmpclSh,
+		"cmpcl.sh",
+	)
+}
+
+func cmpclSh() (*asset, error) {
+	bytes, err := cmpclShBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "cmpcl.sh", size: 2426, mode: os.FileMode(493), modTime: time.Unix(1587064191, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _cmpclPhaseSh = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x95\xdf\x6f\xdb\x36\x10\xc7\x9f\xcb\xbf\xe2\x5b\x46\x6b\x5f\x4a\xa9\xc2\x80\x00\xcb\xa2\x6c\x89\xeb\xa0\xc3\x32\xa7\x68\xb2\xbd\x0c\xdb\x4c\x51\x27\x89\x0d\x45\x0a\x24\x1d\x67\xf0\xfc\xbf\x0f\x92\xf3\xa3\x4b\xbc\x34\xd9\xdb\xde\x6c\xde\xdd\xf7\x8e\x77\x1f\x1d\x77\x5e\x66\xa5\xb6\x59\x29\x43\x0b\x71\xc5\xd8\x0e\x7e\x91\x5e\x4b\x1b\xe1\x6a\xa8\xae\x57\x26\x0d\x2d\x6a\xe7\xa1\x5c\xd7\x4b\xaf\x6d\x83\xb3\xb3\x43\xf4\xad\x0c\x84\xa8\x3b\x6d\x9b\x30\xda\x25\x26\x27\x90\xb6\x82\x8e\x01\xba\xeb\xa8\xd2\x32\x12\x7a\x4f\x15\x29\x0a\xc1\xf9\x74\x90\x6f\x74\x44\x4d\x51\xb5\xe0\x6d\x8c\x7d\xd8\xcb\xb2\xc6\xa5\x8d\x73\x8d\xa1\xe0\x16\x5e\x51\xaa\x5c\x97\x35\x8e\xc3\x53\x1d\x32\xd5\x4a\xdb\x50\xc8\x76\xf3\x2c\xff\x66\x77\x77\x37\xcf\xbe\xc6\xab\x57\xa3\x8c\x6a\x49\x5d\xb8\x45\xc4\xf1\xf4\x7c\xf2\xfe\x8f\xf7\xd3\xc3\x77\x8c\xe9\x1a\xbf\x22\xd9\x81\x30\x11\x39\x7e\xc3\xb7\x88\x2d\x59\x06\x90\x6a\xdd\xdd\x8d\xf8\x3f\xc4\xf7\xad\x3d\xc8\xf6\x95\x39\xc8\xf6\x7b\x19\x55\x7b\xc0\xc1\x4b\xb2\x51\xb8\x3e\x6a\x67\x03\x1f\xe2\xaf\x74\x44\xce\x6a\x7d\x93\x63\x95\xef\xbd\xdd\xcb\xd7\x28\xc0\x05\x7f\x90\x89\x1f\x6b\x1f\x22\x7a\xe9\x65\x47\x91\x3c\x42\xeb\x16\xa6\x42\x49\x90\x63\xf5\x51\x36\x70\x1e\xa5\x97\x56\xb5\xf7\x12\x28\x53\xf0\x24\xe7\x2c\xb4\xba\x8e\x8c\x7d\x3c\x3d\x3d\x2f\xe6\xfd\xb2\x9a\x33\xba\xea\x9d\x8f\x18\x4e\xa0\xcc\xd0\xd0\x9e\x7c\x6d\x9c\xba\x80\x0e\xb0\x2e\x42\x9a\xa5\xfc\x33\x40\x5e\x4a\x6d\x64\x69\x88\x7d\x98\x7e\x3c\x3e\x39\x9d\xfc\x58\xcc\x97\xad\x56\xed\x6d\xc0\x7c\x88\x9e\x8d\x61\x8b\xae\x24\x3f\x4c\xbc\x24\xab\xda\x4e\xfa\x8b\xf0\x06\x47\xf7\x4c\x0b\x6d\xaa\xc0\x76\x30\x91\x16\xee\x92\xbc\xd7\x15\x0d\x57\x0e\x84\xa5\x8e\x2d\xc4\xac\x18\xe7\x2f\x64\x01\x67\x07\x5e\xba\xe1\xaf\xd1\x96\x52\x36\x2b\xde\xb2\xa3\x22\x67\x4c\x55\xe0\xc9\x6a\xa8\x7f\xcd\xaf\x3b\x29\x08\x8d\x13\xce\x54\x77\x4d\x7c\xe1\x3b\x08\x5f\x5f\x9f\x8f\x3d\x19\x27\x6e\x9c\x25\x3c\xce\xcd\x4d\xcc\x66\x48\xdf\xe1\x65\x81\xb7\x9f\x09\x8f\xc3\x79\xa6\x16\x8e\x0f\x7f\x38\x99\xbe\x63\x2f\xee\x46\xa4\xaa\x6b\x5b\x16\xbc\x62\xcf\x80\x9a\x27\x2b\x65\xd6\xfc\x8b\xe5\x3d\x4f\x0e\xa8\xa5\x36\x54\x7d\x5e\xe2\xbf\x7c\x22\xbf\xe7\x5f\x6e\xcd\xb6\xa8\x2d\x19\xd2\xac\x93\x17\x94\x0e\xcb\xe3\x51\xcd\xa3\xc3\xb3\x29\x6e\x5d\xb7\x74\xd3\x99\x2a\xca\xa6\x98\x0f\xc9\x8d\x6b\x20\x2c\x72\x08\x51\x3b\xdf\xc9\x58\xbc\xfe\xaa\x7d\x7d\x4b\xfe\xc6\xf5\x11\x8e\x2c\x2d\xb7\x72\x64\x69\x79\xdb\x95\x27\x8e\x7e\x08\x79\x1a\x46\xd7\x79\x1f\xb6\x68\xc3\x89\xa5\xe5\xc8\xc9\xff\x0a\x94\xff\x82\xc9\x16\xf5\x27\x53\x72\x07\xc8\x43\x11\x4b\xcb\xa7\x02\xb2\x71\x65\xec\xec\xfc\xf0\xa7\x0f\x05\x4f\x12\x7e\x63\x19\x4f\xee\x91\x93\xac\x6e\xd6\xe3\x7a\x58\x7e\x11\xe2\x67\x88\xcb\x61\x97\x25\xab\xd9\x7a\xd8\x65\xc9\xea\x68\x0d\x71\x52\x0c\xd6\x4f\xae\x0c\xe9\x98\x5f\x15\xa7\xa6\x12\xe3\x2b\xf8\x66\x46\xcb\xcd\x2f\x88\x49\xa1\x9c\xad\x75\xb3\xf0\x72\x7c\x38\x84\xea\xfa\x4f\xae\x4c\xa3\xeb\x0c\x78\xf2\x3d\xc7\x5f\x88\x44\x9b\xe7\x33\xa4\xc9\x6a\xac\x69\x3d\x68\xb2\xf1\x4c\x44\xdd\x51\xc0\xc1\x03\x0f\x15\x2e\x19\xfb\x3b\x00\x00\xff\xff\x10\x8d\xa3\x83\xae\x07\x00\x00")
+
+func cmpclPhaseShBytes() ([]byte, error) {
+	return bindataRead(
+		_cmpclPhaseSh,
+		"cmpcl-phase.sh",
+	)
+}
+
+func cmpclPhaseSh() (*asset, error) {
+	bytes, err := cmpclPhaseShBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "cmpcl-phase.sh", size: 1966, mode: os.FileMode(493), modTime: time.Unix(1586979444, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _tweetResults = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x92\x41\x4f\xdb\x30\x14\xc7\xcf\xf8\x53\x3c\xb2\x4e\x02\x86\x63\x01\x97\x0d\x14\xa6\xc1\x81\x0b\xea\xa1\xd0\xd3\x34\xa9\x8e\xf3\xe2\x58\x24\x7e\x99\xfd\xb2\xb6\x42\x7c\xf7\x29\x69\xd7\xa5\x5b\x25\x4e\x91\xff\x2f\xf9\xfd\x7f\xd6\xcb\x87\x63\x95\x3b\xaf\x72\x1d\x2b\x21\x66\xf3\x69\x36\xb9\x10\xb1\xa2\x96\x41\x46\xc0\x15\xdb\x9a\x72\x21\xee\x9e\xb2\xc5\xb2\x72\xa6\x82\x1c\xbd\xa9\x22\x06\x87\x71\x21\xee\x9e\xf7\x62\xc9\x4b\x44\x5e\x08\x51\x90\xe3\x6c\x8d\x51\x08\x57\xc2\x77\x48\x56\x93\xbb\xa7\x04\x32\x48\x56\x09\xfc\x80\x1b\xe0\x0a\xbd\x38\x42\x53\x11\x24\x53\xc4\x62\x4c\x85\x13\xd3\x85\x80\x9e\xeb\x35\x38\x0f\x1a\xee\x1f\x4f\xaf\xa1\x62\x6e\xe3\xb5\x52\x96\x64\xc0\x5f\x0e\x97\xa9\x25\xb2\x35\x46\xea\x82\xc1\xd4\x50\xa3\x8c\x6a\x31\x94\xea\x93\xba\xbc\xf8\xfc\xe5\xf2\x0a\x12\x71\x34\x78\x78\x12\xa5\x1b\x99\x3c\xbf\x6f\xb2\xb9\xc8\x35\x58\x02\x8b\x0c\xd6\x71\xd5\xe5\x43\x49\x11\x2e\x4d\xa5\x23\xf6\x22\xa3\x57\x65\x4e\xac\x4c\x53\xa8\x51\x76\xa8\xff\x18\x64\x09\x29\x2f\x1d\x33\x06\x55\x84\x81\xb5\x01\x35\x3a\xbc\xf4\x98\xff\xb5\x08\xb6\x1f\x80\x09\x58\xa0\x67\xa7\xeb\x08\x25\x75\xbe\x38\x87\x9a\xe8\xc5\x79\x0b\x25\x85\x77\xc0\x87\x7c\x26\x7d\x02\x19\x78\xfa\xb7\xf6\x5e\x7b\x4f\x0c\xc3\x4d\x40\xe7\xd4\x71\x3f\x85\x1d\x31\x8a\x23\x5c\x39\x86\x8b\x01\x36\x9f\x3d\x66\xc9\x9f\x1d\xf5\x6b\x48\x2d\xd5\xda\xdb\x94\x82\x55\x11\x75\x30\xd5\xd7\x9f\x59\x8e\x9e\x23\xeb\xa6\xfd\x78\xf5\x6d\xf2\x3a\x9b\x4f\xdf\x12\x31\x94\x4d\x5e\xe7\xb3\xc7\x37\xb8\x85\x4d\x9a\x72\xd3\x8a\x13\xb3\x5d\x06\xdc\xec\xfd\x1e\x20\x5b\x6f\x21\x4d\x55\xff\x90\xdb\x70\x47\x06\x59\xeb\xc8\xe0\xa3\x6c\x31\x48\x6a\xcf\xf3\xce\xd5\x85\xec\x22\x06\xb9\x0b\xe1\x81\xce\x24\xb5\x9c\x9e\xc1\xf1\xc9\x03\x9d\x6e\x0f\xa7\x70\xbb\x67\x20\x96\x66\x7c\x1c\xad\x16\xa4\x1b\x4d\x40\x36\xd0\x7a\xab\x76\xfc\x74\x50\xdb\x84\x87\xfa\xc7\x73\xc6\x15\xcb\x7c\xcd\x18\xf7\x52\x62\x5d\xff\x8d\x45\x68\xc6\x26\xbf\x03\x00\x00\xff\xff\x40\x96\xcf\xa1\xb4\x03\x00\x00")
+
+func tweetResultsBytes() ([]byte, error) {
+	return bindataRead(
+		_tweetResults,
+		"tweet-results",
+	)
+}
+
+func tweetResults() (*asset, error) {
+	bytes, err := tweetResultsBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "tweet-results", size: 948, mode: os.FileMode(493), modTime: time.Unix(1586995471, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _benchmarksAllToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x59\x6d\x73\xe3\xb6\x11\xfe\xae\x5f\x81\xb1\xab\x69\xe2\x39\xf3\x05\x24\x25\x6a\x3a\xfe\x90\x8b\x27\xe9\x35\xe7\xc4\x73\x76\x9d\x76\x3c\x8e\x06\x22\xd7\x24\x22\x12\x60\x01\x50\xb6\x3c\xfe\x53\xfd\xd0\x3f\x90\x5f\xd6\x01\xf8\x2a\x9f\x29\xfb\xe8\xb4\x99\xb9\xb3\xb5\xc6\x83\x67\x1f\x60\x17\xbb\x04\x75\x88\xde\x03\x8b\xd2\x9c\x88\xb5\x44\x2a\x25\x0a\xad\x4a\x9a\xc5\xef\x10\x61\x71\x65\x8b\x92\xa1\x7f\x95\x34\x5a\x67\x5b\x04\x8c\x97\x49\x6a\x4d\x0e\xd1\x65\x0a\x88\x71\x2a\xb7\x88\x33\x90\x88\x08\x40\x19\x95\x0a\x62\x44\x14\x52\x29\xa0\x15\x57\x8a\xe7\x93\xc9\x21\x02\x15\xc5\x68\x95\xc1\x06\x26\x93\xeb\xeb\xce\xdd\xcd\xcd\x04\xa1\x1f\x49\x0e\xe8\x04\x1d\xc4\xa5\x54\x94\x2d\x57\x82\x93\x38\x22\x52\x1d\x4c\x10\xfa\x04\x05\xd7\x63\x09\x55\x69\xb9\xb2\x22\x9e\xdb\x15\xcc\x4e\xf8\xf1\x0e\xb2\xb7\x86\x13\x74\xd0\x5a\x07\x2f\x3b\x4c\xcb\x9c\x30\xfa\x00\x2f\xfa\xeb\x03\x47\xb8\x13\x91\xe0\x77\x19\x6c\x97\x39\x28\x41\x23\x39\xe0\xaf\x81\x69\x8f\x3d\xe4\x08\x87\x32\xe5\x05\xbd\xdd\x2e\x25\x11\x24\x27\x03\xee\x2e\x2a\x90\xdd\x81\x46\x78\x22\x77\x72\x29\x40\xaa\x5f\x25\x67\x03\x7e\xc8\x9d\xd4\xff\x8f\x65\xbc\x3e\x4e\xb8\x5d\x08\xba\x21\x0a\xec\x42\x70\xc5\x23\x9e\xd9\xfd\xe9\x6f\x50\x70\x9f\x67\x6f\x10\x50\xcf\x1e\xe9\x5f\xcb\x17\x45\x34\xd2\x7f\x6f\xf6\x1b\xfc\x97\x8a\x8e\xdd\x00\x3d\xdd\xee\x73\x8c\x90\xb1\x26\xec\x81\x0e\xf8\xbf\xcd\x08\x4b\x32\x50\xb6\x01\x69\x09\xab\x8e\x72\x94\x37\x50\x29\x08\x28\xf3\xe5\x8a\xaa\x3d\x0b\x6f\x60\xfa\x44\xb5\x9f\x23\x9e\xe7\x9c\xd9\xbd\x99\x87\xc3\x12\x06\xd5\x59\x47\x97\xa0\xeb\xcf\x2b\x34\x4a\xc5\x05\x49\x86\xaa\x8c\x81\xc9\x42\x63\x6d\x79\x47\x44\x6e\xf7\xf0\x03\xce\xbf\xfa\x1b\xa7\xec\xf1\xa2\xc8\xa8\xba\x14\x00\x5f\x1f\xa0\x43\x64\xac\xf3\xad\x20\x39\x8d\x91\x04\xc8\x25\x52\x1c\xa5\x64\x03\x88\xa0\x55\x99\x68\x65\x5c\x5d\x10\x16\xaf\xf8\x3d\xc4\xe8\x04\x29\x51\x02\x3a\x44\x3f\x73\xf6\x67\x85\x22\xc1\xa5\x3c\x8e\x78\x5e\xd0\x0c\xf4\xcc\x8f\x94\x95\xf7\x88\x33\x74\x46\xa2\x9f\x2e\x5e\xb3\x4e\x50\x29\x91\xe9\x97\x85\x82\x49\x60\xb2\x94\x76\x37\x77\x4f\x28\xfe\xc7\xfa\x23\x2e\xf6\x06\xe9\x73\xf5\x62\x6f\x90\xae\x3f\x9c\x7f\x77\xf3\xf8\x6d\x4a\x28\xfb\xd9\x84\xc8\x7c\xfc\x04\x24\x46\x91\x20\x32\xd5\xad\x53\x22\x7e\x8b\x5c\xcb\x75\xb4\x52\xec\xb8\xe1\xb1\xe3\x1d\xbb\xb3\x57\xa5\x55\x4a\xbc\x2f\x92\x2b\xb6\x85\xe2\x76\x33\xed\x2d\xa7\x0e\x22\x0a\x43\x5d\x6c\x9f\xef\x76\xde\x1f\x1b\xe4\x4d\xfe\xa5\x61\xb6\xab\x29\x7f\x9c\x6c\x25\xe8\x17\xe5\x66\x83\xff\xe3\x14\xdf\xa5\x54\x16\x20\x36\xc1\x97\xc8\xae\x27\xd9\x3b\x93\xff\xff\x6b\xe0\x19\x25\x6c\x19\xcb\xa2\xaf\x7d\x55\xc6\x31\x65\x96\x2e\x56\x66\xdc\xae\xc7\xc7\x3c\x9f\x15\x70\x2f\xf1\xd0\xc6\x24\x9c\x41\xb6\xd2\xed\xc0\xc0\xec\x65\xdb\x2d\xed\x3d\xfe\x3e\x95\x6c\x9f\xcb\x9c\x32\xca\x07\x3c\x9a\xb1\xfa\x67\x94\xc7\x1a\xa5\x9b\x9b\xe1\x67\x9c\x81\xae\x5d\xa7\x66\x4f\xf5\x7d\x40\xa5\x20\x01\x29\x0d\xf8\x8b\x36\xb6\x28\x25\x2c\x79\xa7\x1f\xf5\xad\x61\x79\xdf\x83\xfa\x69\xf5\x2b\x44\xea\xfa\x97\x2b\x17\x07\x37\x9a\x93\x71\x85\xbe\x07\xf5\x78\x5e\xaa\xc7\x8f\x54\xaa\x3d\xf2\x13\xce\x74\xb7\xcf\x88\x5c\x32\xa2\xe8\x66\xf7\x30\xe8\x41\x8b\x8b\xc4\xde\xb8\xb6\x31\x6c\x8d\xac\x3e\xee\xed\xe1\x67\x10\x37\x42\x48\x96\xa1\x76\xa3\xe5\x8b\x52\x32\x52\x90\x68\xfd\x3a\x31\x15\xf6\x45\x39\xa7\x09\xc0\xc6\xb6\x8e\xae\x73\x75\x73\xed\x62\xcf\xbf\xd9\x17\xd0\x4a\x46\x4e\xd4\x0b\xce\x6b\xc4\x50\x93\xb2\x8e\xae\x20\xb2\x8e\x5c\xc7\x71\x9c\xaf\xfe\xf4\x78\xfd\x8b\x73\xf3\xf5\xa3\x75\x74\x56\x66\xd6\xd1\x29\x30\x09\xd5\xd8\x5f\xbf\xde\x9b\xcf\x90\x6f\x40\x0c\x64\xd7\x19\x91\x0a\x44\x4e\x59\x2c\xed\x0e\x38\xe2\xd4\xa4\x65\xc2\x97\x29\x64\x05\x88\xa1\xe6\x93\x70\x0d\xa2\xdc\xd6\xbf\xec\x1e\x76\xb4\xbb\x32\xe1\x19\x5d\xbd\xce\x5d\x87\x1d\xda\xed\x8b\x6b\x1e\xa5\x37\x8f\x3a\xe9\x3f\x41\x91\x91\x48\x3f\xbb\xbd\x52\xc3\x52\x52\x05\xe6\x82\x4e\x59\xf2\x3b\x09\xba\xa0\x0a\xde\xd7\x94\xf6\x3f\xbf\x39\xfb\xf8\x4e\x27\x55\x41\x12\x90\x27\xae\x63\x0c\x45\x12\xf3\x59\xff\x5e\x16\x20\xcc\xe8\x09\x76\xf6\xea\x5e\x87\x72\x49\x8a\x9d\xfb\xc0\x3a\x94\x16\xe5\xf6\xba\x5c\x81\x60\xa0\x40\xda\xc5\x3a\xb1\x49\x41\x6d\x5d\x4a\xb4\xff\xb1\x37\x8f\x50\x2e\x65\x94\x42\x5c\x66\x20\x22\x12\xa5\xf0\xb2\xdb\x16\x6f\xb7\x13\x46\x78\x2e\x4b\x1a\x0f\x04\x42\x12\xc5\x05\xb5\x13\x6e\x69\xd0\xd8\xa5\x55\x67\x5c\xf1\x82\xbf\x70\xc8\x13\x41\x8a\xd4\xd6\xc0\xb7\xb9\x2a\x88\x4a\x5f\xe5\x4a\x03\xdf\xe6\x4a\x5f\xc3\x4a\x46\xd5\xf6\x55\xfe\x5a\xf4\x3e\xa7\x1f\x79\xb9\x21\x94\x9d\x52\x01\x91\x82\xf8\xac\xcc\x14\x2d\x32\xb8\x7f\xc5\x16\x0b\xb2\x01\x21\x5f\x2a\xe4\xf5\x36\xd7\xe0\xb1\xeb\x8f\x48\xc1\xcc\xdd\x7b\xe7\x09\xe0\x81\xe7\x2b\x0a\x0f\xc0\xea\x83\x6c\x77\xb0\xb1\x8e\x74\xce\x2f\x1f\x48\x51\xdd\x71\x9f\xc9\x52\x0d\xd0\xd7\xf1\x07\x52\x74\x57\xf2\xdd\xda\xca\x2d\x0d\x32\xdb\xf0\x39\x6a\x84\xa6\x15\x65\x31\x51\x43\xef\xa4\xd6\xb0\xa1\x6c\x55\x8a\x35\x98\xd7\x7c\x1d\x76\xcc\x36\x83\x2c\x88\x80\x65\x5e\x0c\xdd\x49\x6b\x84\x5d\x23\x86\x7d\x1c\xa2\xbf\x4b\x88\xd1\x6a\x8b\x3e\xb0\xdb\xac\xbc\x3f\x7d\x6f\x5e\x91\x9e\x0b\x9e\xeb\x47\xd7\x52\xbe\xac\xe2\xfe\x7e\xcf\xe5\xb8\x11\xd2\x81\x4c\x51\xfe\x2e\x23\x89\xd6\x72\x7d\x70\xac\xab\xef\xc1\x3b\x74\x50\x94\x02\x12\x7e\x70\x33\xf2\xe4\x29\xc2\xd6\xfa\x29\x6a\x0d\x78\xb0\x85\x6a\x8c\xdd\xc3\x8c\xf6\x03\x31\x0e\x02\x77\xb1\xd7\x4f\x0f\x33\xc2\x0f\x83\x4c\x92\x7c\x99\xdc\x97\x74\x49\x99\x02\xb1\x21\x43\xaf\x82\x2a\xa8\xad\xa1\x76\x1f\x3a\xe6\x8d\xdb\xaf\x52\xe9\x3f\x2e\x63\x88\xd6\xcb\x04\x18\x08\xa2\x86\x6e\x67\x0d\xd8\xd6\x60\xbb\x0f\x1e\x73\x78\x80\xa5\x7c\xab\x96\x09\x27\x77\xeb\x01\x87\x35\xc6\x36\x98\x6a\xa9\x63\xaf\x29\x20\x68\x94\x91\x04\x44\x22\x80\xe9\xd5\xd2\x7c\x70\x7f\x77\xb0\x76\x8d\x7d\x5d\xb9\xb0\x8e\x96\x8b\x7d\x32\x14\x8d\xef\x48\x96\x2d\x15\xcd\xc0\x0b\x07\xfc\xd7\x20\xbb\x02\x99\x67\x8a\xb1\xd9\x5b\xbd\x20\xd4\x7f\x5f\xea\x1f\x31\xbf\x7b\xfa\x6a\x3b\x23\xcd\xe3\x56\x46\x58\x72\xdc\x4d\xb0\xfb\x13\x86\x5d\x57\xdf\xa1\x48\x30\x5f\x9d\xa8\x14\xd0\x9a\xf1\x3b\x76\x5c\x7d\xa7\xd2\xbb\x84\x1c\xa2\xc9\x21\xfa\x26\x8e\x2f\x22\x92\x41\x7c\x05\x91\x79\x4c\xff\xc0\x22\xf7\xd8\xc5\x08\xf9\x56\x10\xfe\xf6\x1f\x89\x7e\xfb\xb7\xbb\x98\x6a\x2b\xa8\x2d\x4f\x5b\xa1\x57\x5b\x58\x5b\xf3\x79\x6d\x05\xd3\x01\x4e\x6c\x38\x5d\xc7\x6a\x90\xce\x54\x5b\x8b\xca\x42\xbe\xb1\xfc\xda\x0a\x8d\x35\x6b\x91\x15\xe7\x73\x0a\x67\x3b\x0a\xfd\xbe\xa6\x70\xd6\xd7\x3b\x6f\xd6\x32\xfb\x9c\xad\xd5\x56\x63\x50\xf0\x8c\xb6\x7a\xbd\x68\x6e\xac\xa0\xb5\x7e\x77\xb6\xf7\x44\x82\xbe\x20\xfb\x3f\xbc\xd7\x4c\xae\x85\xdd\x5a\xba\x3b\x45\xae\xe5\x36\x44\xce\x14\x61\xcb\x77\x3a\xcb\xb3\x70\x43\xeb\x6a\xa2\x6f\x53\x88\xd6\x57\x20\x24\xe5\xec\x67\x9a\xc5\x11\x11\xb1\x66\xf4\xe6\x16\x66\x0d\xa1\x17\x58\x73\xd6\x32\xcc\x2d\x97\x35\x9a\xbd\xb9\x35\x63\xf5\x76\x4e\x0e\xd1\x69\x02\x79\x7e\x06\x71\xf5\xef\xc7\xcb\xcb\x6a\x99\x61\x1d\x4f\x34\x9b\x22\xe4\x2e\x7a\x52\x91\xbb\xf0\xba\x78\x22\x37\x5c\xf4\x57\xd9\xde\xd8\x5d\xc7\xf9\x61\xf5\xdd\x85\x66\xc3\xf3\x26\x01\xbc\x29\x42\x78\x86\x6b\x32\x5f\x5b\x4d\x00\xab\xb1\x10\xf7\x57\xda\x23\x6b\xb8\x90\xeb\x34\x64\x78\x8a\xd0\xa2\x36\xb0\xd9\xfe\xa0\x47\xe5\x3a\xb3\x16\xf7\x94\xea\x1f\x1f\x0d\x55\x60\xf9\x61\xde\x04\x2f\xb0\x7c\xaf\x6f\xd4\x23\x81\x36\x02\xdc\x18\x7d\xa6\x73\x22\x48\x96\x41\xd6\x5b\xe9\x2c\xb4\xdc\x4e\xc3\xcc\x6b\xb2\xc3\x0d\xa7\x68\xb6\x68\xc7\xb0\xb1\xe6\x2d\xf2\x79\xd6\x76\xc9\x7e\xc7\xea\x4f\x91\xef\x35\x79\x85\xe7\x53\x3d\xd6\xad\x73\xd7\x7a\x9e\xf5\xac\x61\x5d\x78\x6e\x77\x90\x50\xd8\x44\x45\xef\x24\x5a\xe0\x5e\x5a\xf7\xac\x01\xa9\x0d\x27\x76\xbc\x7e\x04\x16\x41\x2f\x6b\x70\x1b\x1d\x6c\x2c\x7f\xaf\x4e\x1c\xb4\x3a\xb1\x85\xab\x58\xe0\x50\x9f\x0c\x67\x51\x19\x9e\x36\xb0\x5b\x05\x66\x61\x8c\x3a\x7e\xb3\x67\x19\x83\x6e\xe5\xbe\x15\x38\x06\xea\x99\x12\x32\xab\x0c\x6c\xaa\x8b\x5f\x31\xd6\xa5\xa6\x32\xfc\xf9\xf3\x8c\x0d\x61\xd0\xec\xa4\x39\x2c\xfe\xa2\x0e\x01\x76\xa6\x08\x05\xb8\x9f\xdf\x01\x9e\xb5\xc8\xe7\x28\xaf\x40\x6c\x2f\x72\x92\x65\x15\xb1\x37\x6f\x0a\x8a\xb7\x98\x22\xcf\xb7\xea\x18\x79\x55\x1a\x38\x1d\xb3\xef\xb6\xa9\xb6\x7b\x72\x9e\x30\xce\x9d\xfe\xac\xa0\x4d\x2c\xdf\x9f\xea\xb1\x5e\x2a\xcd\xbb\x42\x67\xa2\x7e\x2e\xa0\x7e\x2b\x1a\x7f\x88\x81\x29\x7d\xab\x72\x71\x78\xfc\x3d\x91\x27\x78\x6e\x2a\xda\xdc\xf2\xda\x92\xe3\x86\x96\xc3\x9a\x3d\x71\xe7\x96\xcf\xea\x63\xdd\x1b\x99\x57\xbc\x7c\x03\x26\x2c\x33\x0f\x77\xd5\x13\xcd\xdc\x5e\x47\x79\x6a\xb5\xdb\x68\x28\xea\x97\x22\xa7\x74\x43\x63\x10\x55\x71\x6d\x32\x51\x27\x77\x67\xe9\x44\x71\x2d\x67\xb6\x33\x36\xef\xf7\xa3\x9a\xeb\x22\xe5\x42\x45\x3c\x86\x4b\xbe\x06\x26\x4d\x72\x5b\x73\xdc\xf5\x21\x6c\x35\x07\xa6\x4a\xbe\x5e\xe1\x42\xb8\xeb\xb0\x86\xd3\x34\xcd\xcf\xba\x1c\xb6\x16\xbd\xd4\xf0\x2c\xc7\xe9\x92\xc8\xb3\xdc\x1d\x5f\x2d\x12\x3f\xc7\x87\xeb\x6a\xd6\x1e\x61\x57\x17\xad\x99\xd3\xf5\xa9\xa0\x65\x70\xcd\x58\x18\xb6\x3b\xa0\xf9\xca\xd5\xcb\x4f\x09\x7e\x37\xdf\xb7\x42\xbf\xed\xba\xba\x07\xcf\xfa\x4f\x09\xbb\x6c\x4f\xbb\xe6\x93\xe7\x83\x60\xa7\x6b\x86\x9f\x77\xcd\x2b\x92\xd1\x98\x28\x78\xa6\xdf\x21\x1f\x5b\x21\x6b\x42\xe0\xbb\x4d\xf6\xcd\xcc\xe1\xf0\x9b\x1c\xd3\x86\xcb\xba\x43\x77\x05\x82\xde\x6e\xcf\x05\xe7\xb7\x95\x36\x6c\xf5\xf2\xce\xc5\xed\xd3\xca\x6c\xc7\xf2\x8d\xe5\xb5\xba\x27\x93\xc9\x7f\x03\x00\x00\xff\xff\xbc\xc8\x27\x67\x0a\x23\x00\x00")
+
+func benchmarksAllTomlBytes() ([]byte, error) {
+	return bindataRead(
+		_benchmarksAllToml,
+		"benchmarks-all.toml",
+	)
+}
+
+func benchmarksAllToml() (*asset, error) {
+	bytes, err := benchmarksAllTomlBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "benchmarks-all.toml", size: 8970, mode: os.FileMode(420), modTime: time.Unix(1567102198, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _benchmarks50Toml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x59\xeb\x53\xdb\x3a\x16\xff\xce\x5f\xa1\x09\x1f\x96\xde\x81\x28\x49\x2f\x3b\xdc\xbb\xc3\x07\x02\xe5\xb1\x25\x25\x4b\xa0\x9d\xbd\x1d\xae\xe7\xd8\x3e\xb1\x55\xcb\x92\xf7\x48\x0e\x09\x93\x3f\x7e\x47\xce\x93\x16\x39\x40\x1f\xd3\x69\xb0\xe5\xdf\xb1\x7e\x47\xd2\x79\x7a\x6b\x9b\x1d\x31\x03\x79\x21\x91\xe9\x21\x83\x50\x97\x96\xed\xb7\x58\x2c\x86\x43\x24\x54\x96\x85\xa8\xa2\x34\x07\xca\x18\x95\xca\xec\x32\xa5\x2d\x53\x5a\x98\xc9\xae\x1b\x60\xff\x2b\x45\x94\xc9\x09\x43\xa5\xcb\x24\xdd\xdd\xda\x66\x36\x05\xcb\xa0\x28\x10\x88\x59\xcd\x42\x64\x46\xe7\x78\xef\x46\x63\x31\x42\x32\xd8\xdc\xda\xfa\xfc\xb9\xbb\x78\xaf\xb9\xbb\xdb\x62\xec\x03\xe4\xc8\x0e\x59\x23\x93\x50\x9a\x42\x1b\xdb\xd8\x62\xec\x1a\x0b\xed\x06\x13\x61\xd3\x32\x6c\x46\x3a\xe7\x31\x75\xa2\x14\x0c\xf2\x25\x2f\xc3\x1f\xc9\xdc\xa0\xb1\xc6\x09\x35\xd8\x36\x3b\xd1\xea\x1f\xb6\xe2\x69\x53\x34\xc8\xac\x7b\xf8\x2f\x77\x33\x61\x29\xa8\x64\x97\xa1\x8d\x9a\x5b\x8c\xad\xd8\x38\xd1\xe5\x5d\xa3\x86\x69\x2e\x94\xd0\x1e\x96\xd5\xb3\xf9\x6f\x94\xc7\x8f\x78\x29\xad\xf0\x47\x70\x3b\x43\x7b\x15\x7e\xc1\xc8\xee\xf7\xc2\xd3\x81\x7b\xa3\xdb\x9a\x33\xb4\xd3\x7e\x69\xa7\x97\xc2\xd8\x2d\xc6\xce\xa2\x77\x6a\xc4\x0e\xd9\xe7\xc6\xd9\x55\xbb\xdd\xee\x5d\x9d\xdc\x5e\xbe\x3b\xd4\xaa\x71\x57\xa3\x59\x5a\x26\x3a\x70\x3f\x52\x84\x81\x11\x16\xc3\x52\xc8\x58\xa8\xc4\xa3\x6d\xa2\x1d\x58\x68\xee\xfe\xf0\xb9\x60\xc3\xcf\x7c\x20\x2c\x76\xe7\xaf\xe4\xff\x3d\xea\x5d\xee\xaa\x32\x0f\x0a\x48\xd0\x1c\xb6\x5b\xd5\x8d\x85\xa4\xba\x76\x7f\x83\x02\xa9\x7a\x7a\xd8\x69\xed\x9a\x54\x93\x8d\x74\x8c\x66\x97\x50\xc5\x48\x7b\xed\x4e\x83\x6d\x31\x76\x22\x0c\x84\x12\x63\x76\xc8\x2c\x95\xc8\xb6\x59\x97\x74\x86\x8a\x81\x71\x27\xbb\xd3\x6a\xff\xb1\xd7\xfa\x7d\xaf\xdd\x7a\xa6\xe2\x3f\x48\xd7\x3e\x90\xc1\x3e\x24\xd8\xf8\x41\x1c\xd1\xa6\x48\x58\xe6\x41\xa4\x09\x3d\x24\x17\x18\x9e\xe8\xbd\xe5\xf5\x02\xef\x21\x7a\xa1\x0c\x92\x3d\x4e\x41\xa8\x80\x84\x4a\xda\xad\x56\x2b\xc8\x31\x8f\x2b\xed\x3e\x68\x3b\x00\x15\x87\x7a\xbc\xce\xfe\x53\x75\x84\x23\xd2\xc6\xec\x45\x3a\x2f\x84\x44\x67\xf2\x97\x42\x95\x63\xa6\x15\xeb\x41\x74\x35\xa8\xd1\xc5\xa4\xba\x10\xc3\x49\x60\x80\x20\x07\x8f\x32\x83\x19\x88\xaf\x40\x5e\x63\x7d\x6a\x85\xcf\xc1\x30\xa5\x19\x44\xb6\x04\xb9\xf2\x66\xa6\xce\x09\xc1\xbd\x09\x08\x8d\xfd\x62\xb4\xf2\xb0\x82\x7b\xe3\xfe\xef\x99\x38\xdb\x4b\x34\x2f\x48\x8c\xc0\x22\x2f\x48\x5b\x1d\x69\xc9\xd7\xc5\x5f\xc0\xf7\x3b\x09\x8f\x73\xf9\x1d\x7c\xe7\xd2\x2f\xa1\xfb\x3d\x84\xdd\xf2\x50\x11\xbd\x92\xf0\x9a\xf4\xaf\x20\x6c\x45\x7c\x0f\x52\x06\x56\x48\x7c\x7b\xe0\xe1\x3c\x07\xf1\x19\x88\x57\x1e\xfd\x57\x11\x5c\xfa\x85\x50\xd8\xd2\x0a\xdf\x39\xf0\xb8\x86\x3c\xd7\x8a\xaf\x49\x6e\xb3\xeb\x52\x7d\x22\x17\xc6\xa9\x0a\x1f\x21\x50\xe3\xce\xaf\xca\x4e\x17\x0c\xba\x10\xd7\x79\xdf\x9d\x9e\x82\xb1\x8b\xeb\x77\x2a\xd2\xce\xcf\xff\xfe\xbe\xfb\x11\x69\x32\x28\x9c\x3f\x7c\x53\x17\x57\x97\x8a\x18\xab\x69\xee\x38\x7d\x8a\x98\xc2\x61\xb9\xb9\x07\xca\xf9\x1a\xde\xc3\xf2\xdf\x5a\xa8\xe0\xc0\x85\xca\x41\x21\x85\xed\x4f\x08\x72\x11\x33\x83\x98\x1b\xe7\xb8\x52\x18\x21\x03\x16\x96\xc9\x4f\x73\x79\x4b\xed\xd0\xa6\x60\xd2\x97\xed\x92\x32\xa8\x4c\x69\xf8\x4a\xd6\xa3\xe8\x39\x98\x54\xe4\xda\xea\x4b\x91\xa4\xf6\xe7\x39\xf0\xd5\x5e\xa5\xf0\xf6\x45\xba\xd0\xa4\xb0\x9a\x2f\xc4\x7c\x89\x42\x0a\x6f\x83\x4e\xe7\xf7\xa0\x77\x73\xfb\x84\xb1\x3c\x6b\x99\x23\x81\xe6\x15\xcc\x96\x72\x35\xb6\xfb\x3d\x6b\xfa\x54\xa8\xfa\xa0\x2d\x83\x2a\x0f\x64\x9a\xdc\x39\x5c\x4d\x0d\x6a\x92\x6b\x7a\x96\xc6\x2e\xce\x8f\xf2\x97\x66\x06\x7c\x26\xe2\xd1\xf6\xaa\x38\x11\xa3\x76\xe7\xe0\x17\x9c\x24\x4b\xe2\x45\x69\xcd\x02\xef\x61\xfe\xf9\xfc\xf8\xfd\xd9\xed\x9d\xb3\xf9\x3e\x69\x67\xde\x2a\x66\x1f\x91\xc4\x70\xd2\x27\xed\x4a\x1e\xc2\x59\x3d\xf3\xf3\xb2\x9c\x02\xc7\xa6\xe3\xd3\x29\xd1\x0a\x65\xe8\x9c\x58\x05\xe3\xc1\x72\xd7\x79\x8d\x5a\xd7\xa5\xe2\xed\x56\xc6\xdb\x75\x9e\x34\xd1\x2e\x95\x0e\x25\x98\x40\x81\x15\xa3\xc7\xeb\xea\x1e\x36\x35\x25\x7c\xd4\xe6\xd5\x0d\x77\xc8\xd9\x65\xcd\xcc\x3b\x27\x60\xca\xbc\x87\xb1\x28\xf3\x5b\x25\x2c\xd0\xe4\x42\x45\xd3\x13\x45\x79\x67\x36\xda\xd7\xe6\x42\x45\x6f\x16\x15\x09\xc8\xf5\x10\xb6\x91\xae\x84\x02\xa2\xec\x79\x84\x67\xd8\x8d\x94\x4f\x12\xc4\x11\x3f\x16\x14\x95\x12\x94\x6d\xb7\x36\x2f\x5a\x0e\x76\xc3\xdc\x73\x84\x6f\x95\x7a\xa5\xfc\xa4\x29\x33\x05\x44\x78\x82\xca\xa0\xcb\xa7\xcf\x4b\x15\x13\xc6\x36\x9d\x0e\x22\x90\xf8\x11\x23\x37\xda\xba\x50\x51\xa7\x55\x1b\x13\x0d\xe6\x23\x24\xcf\x11\xea\x81\xb1\x48\xb9\x50\xb1\xe1\x2b\xa0\x87\xd8\x47\x90\x22\x06\x8b\x1f\x91\x8c\xd0\xea\x46\xc8\x18\x4f\xc1\x05\xfd\x4d\x65\x11\xca\x02\xc9\xe7\x4a\xbf\x2a\x8b\x56\x58\xdf\xfa\x0c\x2c\x89\xe2\xfc\xa6\x77\x39\xbd\x46\x88\x91\x8e\xb5\xb2\x20\x94\x79\xd3\x78\x6d\xd5\x9a\x1d\x98\x00\x0a\xb1\x4e\x30\x3b\x30\x4d\xa1\x79\x56\x86\x48\x0a\x2d\x1a\x5e\x64\x09\x87\x42\x54\xa9\xd9\xbc\xa0\xf5\x30\xac\x12\x17\x3c\xd6\x31\x46\xa7\xa4\xf3\x0b\x65\x91\x14\xc8\xbe\xcb\x3f\xc3\x72\x58\xb7\x5e\x8e\x89\x89\x52\x8c\x4b\x89\x14\x41\x94\xe2\x66\x52\x4b\x3c\x17\xf3\x99\xf8\x52\xd2\xc3\xd0\x95\xf8\xed\xec\x83\xab\x85\xdf\xb6\xb2\xbe\x8e\x4d\x1d\xa9\xb2\x14\xb1\x67\xf3\x0c\x58\x4d\x82\x27\xba\xe9\x40\x75\x6e\xe7\xe9\x12\xab\xb2\xf2\xb5\x46\xd1\xe6\x60\x35\x33\x32\xab\x0b\xbd\xc1\xca\x12\x82\x22\xe5\x0e\x58\x47\x6b\xe7\x06\xe8\x0b\xa8\xc1\xf1\xf1\x99\x2a\x82\xaa\x72\x4d\x41\x0e\xa7\x5f\x0d\x07\x16\x95\x4d\x6b\x0d\x6d\x46\xac\x00\x9b\x3e\x8b\x98\x03\xd6\x12\x3b\x1a\x58\xa0\x5b\x15\x0b\xc2\xc8\x62\x9c\x83\x74\x6e\x41\xc6\x8e\x4d\xa7\xfa\x77\x8e\x25\x4d\x4f\x74\x2e\x94\xdb\x05\xc3\x15\x1a\x8b\x71\x20\x86\x81\xea\xec\xff\xf3\x19\x64\x5d\xf2\x5e\x2a\x61\x27\xcf\x62\xbc\x44\xd7\xd1\xbe\xd4\xe5\x08\x84\x3a\x99\xb3\xee\x95\xd2\x8a\x42\xe2\x78\x33\x19\x4b\x50\xb5\xf8\x9e\xb7\xad\x73\x70\x1d\x95\x4f\x20\xb3\x23\x29\xbb\x84\x10\xdb\xf4\x54\x90\xb1\x6e\x33\x77\xda\xad\xa9\xdb\xe7\x37\xb3\x3d\x75\xb1\xc6\x1d\xb9\x65\xdf\x32\x42\x16\x4e\x98\x11\x0f\xc8\x6c\x0a\xca\x1d\x49\x9b\x0a\x95\x30\x94\xa6\xee\x60\x46\x50\xa8\xaa\xc4\x7c\x14\xaf\x1f\x74\x1e\x0a\x7c\x40\x35\xf7\x75\x7c\x05\xab\x3f\x96\x38\xb6\x3d\x3d\xc2\x1c\x95\xed\xa2\xbd\x47\x54\x03\x4c\xdc\x9d\x99\x9e\x91\xbe\xb7\x69\x50\xad\xed\x7c\xb0\x76\xb3\x9d\xbb\x08\x1e\xa0\x98\x57\x67\xdf\x5a\xb1\x03\xb8\x4a\xf9\x01\x8a\xb5\xe6\xe8\xe3\x8d\x68\x3a\x50\xb5\x15\xdf\xa2\x3c\x4a\x1c\xc5\xae\x7c\x3b\x15\x28\x63\xc3\x77\xfe\x82\xa2\x39\x28\x13\xa0\xe9\xdf\x9f\x41\x98\xbb\x5a\xca\xa1\x50\x31\x58\x5f\x5f\x27\xc3\x91\x50\x61\x49\x19\xba\x7c\x6e\x0d\xfb\x8a\x5e\x6c\x84\xa6\x00\xc2\x20\x2f\x7c\x15\xd5\x1c\xc1\xe7\x08\xcf\x1c\x55\x57\xb2\xb1\xb5\xb5\xcd\x6e\x0d\xc6\xee\x08\x5d\xa8\xa1\x2c\xc7\x27\xdd\x2a\x6f\xec\x93\xce\x5d\xe2\x59\x9a\xcd\x54\xc6\xe3\x9a\xfa\x6e\xc1\x66\x05\xaa\x66\x3e\x95\x90\x98\x2a\xee\xed\x59\x48\x4c\x63\x97\x35\x8a\x92\x30\xd1\x75\xa5\xb7\xab\xf5\xd0\xf0\xe6\x6f\xbb\x33\x2f\xb3\x6b\x2c\x09\x95\xec\xaa\xc3\x76\xab\xd7\xad\x35\x59\x0b\x2a\x73\xf9\x61\x86\x1d\x6f\x60\x77\x18\xbe\x86\xa9\x61\x71\xf0\x7e\xf3\x6c\x18\x77\xf6\xf7\xdb\x7f\xd4\xce\xb6\x86\xf1\x59\xd6\x85\xb9\x52\xc7\x25\x8d\xb0\xca\xa4\x80\x9c\x19\xbd\x79\x3a\x3a\xcd\xdf\xc6\x87\xd8\x4c\xf4\x9f\xed\xf6\x9f\x9d\x3f\x59\x69\xaa\xcf\x1d\x8b\x50\xcb\x5c\x1a\x09\x09\xb2\x6f\xa8\x90\x30\x96\xd0\x5a\xdd\xd9\xdf\x5f\x45\x66\x82\x58\x8c\xf7\xdb\x8b\xf4\x56\xdf\x63\x5c\xa3\xb8\x42\x69\x20\x0f\x92\x71\x29\x82\xea\x15\x23\xf0\x75\x67\x66\x50\xee\xa0\x7c\x1d\xfa\x0a\x93\x80\x2f\xc6\xba\xc1\x20\xc6\x28\x0b\x12\x54\x48\x60\x7d\x95\xd5\x02\xcc\x1d\x98\xaf\x83\x7d\x1b\xd0\xd7\x72\x92\x68\x35\x3d\xa2\xa8\xde\x07\xa0\x4a\xf5\xc4\x06\x89\x86\xfb\xcc\x33\xfb\x1c\xc3\x2b\xcc\x4c\xef\xa2\xae\xf6\xa9\xed\x1e\x91\x88\x24\x24\x48\x09\xa1\x72\xba\x8b\xdc\xbb\xda\x8f\xb0\x7c\x8e\x7d\x9e\x57\xec\x0b\x3e\xd4\xfa\xb0\xf9\x1b\x2f\x08\xa3\xc3\x76\xab\xb6\xa6\x78\x92\x54\x30\xfe\x69\xb4\x1e\xcf\xd7\x3c\xd3\xcd\x35\x9a\x2f\x69\xa3\xc4\xa5\x4b\x93\x83\x90\x34\xc4\x11\xf8\x3f\xca\x55\xb0\xca\x8d\xaf\x23\x7d\x25\xf9\xdf\x5d\x57\x8f\x77\x49\x57\x48\x26\xcc\xbc\x00\xdf\xc8\x23\x2d\x73\x50\xe2\xc1\x77\x8a\x57\x34\xd6\x81\xbe\x13\x7c\x6a\x35\x5c\x63\x82\xe3\x1b\x02\x21\x85\x4a\xa6\xd5\xb7\x9a\xae\x48\xba\x13\x8b\xa6\xf6\x54\x53\x44\xfa\x5e\xe2\x24\xc8\xd1\x92\x88\x7c\xce\x73\x01\x73\x94\xd6\x90\x8f\x19\xed\x2c\x6f\x8f\x75\x5e\x94\xb6\xaa\x14\x5d\x6a\xe3\x92\x9a\xe5\xb3\xde\x4c\xdc\x2d\xd6\x08\x69\xb2\x71\xc5\x16\x0d\xf6\x9a\x56\xf0\x73\x3a\xec\x7c\xfd\x1d\xaf\xf0\x42\x19\xa8\x07\xe1\x99\x7f\x28\x41\x25\x12\x2d\xaf\x40\x8e\x42\xb8\x5e\x67\x78\x3b\xcd\x9f\x6e\x06\xd3\xd3\xfe\xd1\x7f\xa6\x97\x7f\x4d\x7b\x37\xa7\x37\xb5\x3b\x35\x6b\x6d\xbb\xf1\xc0\xfd\xc4\xfa\xfe\xeb\x2f\x3a\x12\x16\x25\xac\xe3\xb3\xb7\x12\xe0\xeb\x02\x3e\x36\xd7\xd5\x47\xc8\x41\x81\xd1\x74\x75\xd9\x95\x10\x65\xa7\x24\x62\x98\x74\x1c\xbb\xff\x07\x00\x00\xff\xff\xc5\x3d\x1e\xe6\x66\x1f\x00\x00")
+
+func benchmarks50TomlBytes() ([]byte, error) {
+	return bindataRead(
+		_benchmarks50Toml,
+		"benchmarks-50.toml",
+	)
+}
+
+func benchmarks50Toml() (*asset, error) {
+	bytes, err := benchmarks50TomlBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "benchmarks-50.toml", size: 8038, mode: os.FileMode(420), modTime: time.Unix(1604375886, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _benchmarksGcToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x91\x4f\x6b\x14\x41\x10\xc5\xef\xfb\x29\x1e\xbb\x07\x13\xc9\xec\x9f\x28\x22\x48\x0e\x6a\x20\x28\x89\x09\xd9\x80\x87\x10\x42\x4d\x4f\x39\xdd\x3a\x5d\xb5\x74\xd7\xc4\x44\xf6\xc3\x4b\x8f\xd9\xd5\x83\x2b\x8a\x97\x61\x1e\xf5\x5e\x75\xfd\xaa\x26\x78\xdd\x75\xd8\x6b\x42\x76\x7a\xc7\x89\x1b\x50\x86\x7e\xc2\xe1\x7c\xf1\xb2\x9a\x3f\xaf\xe6\x87\xfb\xa8\x59\x9c\x8f\x94\xbe\x64\x98\x27\x43\xa3\x20\x74\x6a\xc5\x47\x5d\xa7\x8e\x2c\xa8\x1c\x80\x83\x79\x4e\x08\x82\x1c\xbe\x31\x34\x41\xfa\x58\x73\x1a\x8d\xae\xaf\xdf\x6c\x7b\xdc\xdc\x8c\x80\x0f\x14\x19\x47\x18\x73\x49\x70\x1f\x6f\xb3\x69\xa2\x96\xc7\x23\xe0\x92\x57\x5a\x6a\x6d\x30\xdf\xd7\x53\xa7\x71\xb6\xb1\xcd\x5a\xad\xb6\xff\xf9\x2b\xa5\x38\xfb\x25\xf8\xf3\x8d\x12\xdf\xaa\xbd\xf7\x1a\x64\xbd\x5c\x75\xc1\xae\x12\xf3\xfe\x18\x13\x0c\xea\xe2\x21\x51\x0c\x0d\x32\x73\xcc\x30\x85\xa7\x3b\x06\xa1\xee\xdb\x32\xa2\xda\x92\xa4\xa9\xf5\x9e\x1b\x1c\xc1\x52\xcf\x98\xe0\xa3\xca\x13\x83\x4b\x9a\x73\xe5\x34\xae\x42\xc7\x25\x79\x1a\xa4\xbf\x87\x0a\xce\xc8\x9d\x2f\xff\x06\xd8\x69\xfa\x27\xda\x8d\x7f\x17\xe4\x3b\xc9\x9c\xec\xad\xa7\x20\xb7\x29\x48\x3b\x60\x0e\xf2\x92\xa9\x81\x4b\x94\x3d\xe7\xc7\xeb\x2e\xa6\x8b\x79\x99\xf6\xc7\x95\x9f\x55\x8b\x17\xff\x09\x0c\x1c\x87\x4c\x75\xb7\x4d\xfe\x61\x05\x31\x48\xd0\x1d\xe8\x43\xed\xf1\xeb\x62\x53\x5c\x57\x9c\x6d\x60\x15\x15\x2e\x50\xc7\xc3\x44\xa9\x17\x98\xe7\xcc\xb0\x62\x78\x55\xc4\x03\x3c\x49\x7b\x00\x36\x37\xdd\xbd\xaa\x13\xb6\xf3\xfa\x33\x3b\x9b\x3e\x3d\xab\x4b\x43\x51\xc3\x09\xdb\xfa\xa2\xb7\xf5\x69\xc8\xf6\x1b\x9a\xef\x01\x00\x00\xff\xff\xc9\xc5\x97\x8e\x27\x03\x00\x00")
+
+func benchmarksGcTomlBytes() ([]byte, error) {
+	return bindataRead(
+		_benchmarksGcToml,
+		"benchmarks-gc.toml",
+	)
+}
+
+func benchmarksGcToml() (*asset, error) {
+	bytes, err := benchmarksGcTomlBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "benchmarks-gc.toml", size: 807, mode: os.FileMode(420), modTime: time.Unix(1567102198, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _benchmarksGcplusToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x54\xc1\x4e\xdb\x40\x10\xbd\xe7\x2b\x46\xe1\x50\xa8\x48\xd6\xa6\x2d\x20\x55\x1c\x0a\x48\x51\x2b\x28\x08\x90\x38\x44\x51\x34\x5e\x4f\xbd\xdb\x7a\x67\xa2\xdd\x31\x85\x2a\x1f\x5f\xad\x81\xd0\x1e\x82\x40\x55\x2f\x96\x67\xe7\xbd\xf5\xbc\xb7\x6f\xbd\x01\x9f\xda\x16\x36\x6b\x9f\xac\xdc\x50\xa4\x1a\x30\x81\x7c\x83\x9d\xa2\xdc\x1f\x15\xef\x47\xc5\xce\x16\x54\xc4\xd6\x05\x8c\x3f\x12\xa8\x43\x85\x5a\x00\xa1\x15\xcd\x38\x6c\x5b\xb1\xa8\x5e\x78\x1b\xc8\xab\xa3\x08\x9e\x21\xf9\x5f\x04\x12\x81\xbb\x50\x51\x1c\x0c\xa6\xd3\xc3\xd5\x1e\xb3\xd9\x00\xe0\x2b\x06\x82\x03\x18\x52\x66\x50\x17\xe6\x49\x25\x62\x43\xc3\x01\xc0\x05\x2d\x24\xf7\x1a\xaf\xae\xab\xc6\x56\x82\x79\x84\x99\x46\x46\xab\xf7\xf4\x13\x63\x30\x7f\x10\x9f\xbe\x91\xe9\xab\x6a\xf3\x8b\x78\x5e\x5e\x2e\x5a\xaf\x57\x91\x68\x6b\x3e\xdd\xdd\xdb\x9f\x0d\x61\x03\xfa\xb5\xf3\xbb\x88\xc1\xd7\x90\x88\x42\x02\x15\x70\x78\x43\x80\x50\x75\x4d\x1e\x54\xf4\x12\xb9\xae\xe4\x96\x6a\x38\x00\x8d\x1d\xc1\x06\x5c\x0b\xbf\x51\xb0\x51\x52\x1a\x59\x09\x0b\xdf\x52\x66\x9e\x78\xee\x6e\x41\x18\x4e\xd1\x9e\x5d\xbe\x44\xb6\x95\xf8\x2a\xcd\x8f\xf8\x75\x52\x3f\x73\xa2\xa8\x47\x0e\x3d\xcf\xa3\xe7\x66\x79\x2e\xd2\x1e\xa2\x5a\x77\xdf\x29\x8b\xa2\x28\x96\x7d\xff\x3a\x7a\xa5\xad\x6c\x43\x5f\x5e\x10\xd6\x60\x23\x26\x47\xe9\x21\x03\xe5\xb8\x2c\xb2\x9a\xfb\x2c\xbc\x1b\x95\xbb\xff\x68\x08\xc0\xb1\x4f\x58\xb5\x2b\xe6\x33\x16\x05\xcf\x5e\xd6\x58\xd3\xf7\x1e\x9e\x36\xd4\x19\x75\x45\x49\x7b\x2f\x58\x98\xb2\xa8\xe3\x7e\xa2\xd8\x31\xa8\xa3\x44\xa0\x19\xf0\x31\x17\x77\xe0\x90\x9b\x6d\x20\xb5\xe3\xf5\x56\x4e\x48\xcf\xaa\xef\x64\x75\xfc\xf6\xb4\xca\x1b\xb2\x28\x4c\x48\x97\xe7\x9d\x2e\x4f\x7c\xd2\x57\xa9\x49\x0b\xba\x4d\x3b\xeb\x4e\xba\x11\xa6\xb6\x8a\x64\xee\x61\x66\xbe\xba\x71\xe6\x99\xc3\xbe\xe8\x78\xf8\x92\x8c\x91\x3a\x4c\xee\x75\x29\xe3\x44\x9c\xba\x64\x9e\xb8\x6b\x86\x38\x42\xeb\x68\x42\x4c\xb1\xff\x09\x0c\xff\xdb\x95\x69\x84\xbb\x30\x5f\xa0\xfe\xad\x24\xaf\x8e\x25\x36\xe6\xa6\x34\x7d\x61\x9a\x88\x0b\x67\x32\xf0\x59\xf3\x90\x6b\x09\x93\x8c\x3d\x96\xe0\x19\x55\x62\x32\x0d\x87\x11\x1f\x94\x34\xfd\xb0\xbb\x37\x1b\x0e\x7e\x07\x00\x00\xff\xff\xaf\x7d\xac\x7b\x1d\x05\x00\x00")
+
+func benchmarksGcplusTomlBytes() ([]byte, error) {
+	return bindataRead(
+		_benchmarksGcplusToml,
+		"benchmarks-gcplus.toml",
+	)
+}
+
+func benchmarksGcplusToml() (*asset, error) {
+	bytes, err := benchmarksGcplusTomlBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "benchmarks-gcplus.toml", size: 1309, mode: os.FileMode(420), modTime: time.Unix(1567102198, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _benchmarksTrialToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x99\xcd\x6e\xdc\x46\x12\xc7\xef\x7a\x8a\x86\x0d\x01\x09\xe4\x29\x75\x55\x7f\xf2\xa0\x83\x1d\x23\xde\xc3\xc6\x87\x38\x5e\x1f\x0c\x43\xa0\x34\x6d\xcd\xac\x86\xa4\xc0\xe1\x38\x71\x0e\xfb\x4e\x7b\xd8\x17\xc8\x93\x2d\xc8\x69\x92\xdd\xfc\x98\xa1\x32\x06\x04\xb7\x44\xf4\x8f\xff\xea\xea\xfa\x9a\x97\xec\x8d\xcb\xef\x37\x59\x5a\x3e\xee\x59\xb5\x49\x2b\xb6\x49\xbf\x39\x96\x17\x15\xbb\x73\x2e\x67\xdf\x5c\x55\xb9\x35\xfb\x5a\x94\xec\xee\xb0\xdd\xad\xf7\xaf\x58\x79\xc8\xf7\xaf\x58\x5e\x6c\xf7\xdb\xdc\xed\x8f\xbf\x60\x3b\x97\x3f\x54\x9b\x57\xcc\x55\xf7\x70\x71\xf1\xf9\x73\xbf\xeb\x97\x2f\x17\x8c\xbd\x4f\x33\xc7\x6e\xd8\x8b\xc3\x9d\x2b\x6f\xff\x4c\x9f\x5e\x5c\x30\xf6\x92\xfd\xea\x9e\x8a\xfa\xb7\x0f\xdb\x6a\x73\xb8\x83\xfb\x22\xbb\xae\x1f\x58\x3d\x14\xd7\x7f\xa6\x4f\xd7\x77\xdd\x1e\xf5\xe3\xdd\xc3\x05\xd4\x0f\x41\x51\x3e\x4c\x3c\x15\xa8\xb9\x61\x2f\xba\x55\xfd\xa7\xb7\xdb\x7d\x7a\xb7\x73\x6b\x76\xc3\xaa\xf2\xe0\xd8\x4b\xf6\xbe\x56\x59\xab\xda\xe6\x0f\xac\x2a\xd6\xe9\xf7\x13\xaf\x7e\xb7\xcd\xd7\x69\x95\x46\xaf\xd2\xbf\xf7\xa3\xfb\xb6\xcd\xef\x0e\xe5\xa3\xbb\x7e\x28\x56\xc1\xb3\xb3\x2f\x74\xf1\x92\xbd\x6e\xac\xe8\x56\xf7\x1b\x77\xff\x58\xbf\x43\xe9\xee\x5d\x5e\x35\x06\xfd\xe1\xb0\x77\x6b\x56\x15\x2c\x2b\xbe\x39\xb6\x2f\x32\xc7\x2a\xb7\xaf\xf6\x6c\x9b\x57\x05\xeb\x45\xaf\x14\x87\xaa\xc8\x76\x3f\xd6\x1b\xe6\xf5\xbb\x3e\xe3\x53\xec\xd6\xac\xda\x66\xee\xba\x78\x62\x2c\x77\xbf\xf7\x8b\xb5\xdb\x55\xe9\xc5\x4b\xf6\x73\x59\x64\x6f\xbe\x57\x6e\xbf\x42\x5a\xb2\xa3\x05\x2e\xf2\x3d\xfb\xeb\xbf\x4c\x5c\x32\x66\x40\xcb\xe3\x4a\x5f\x32\xc6\x56\x12\x6c\xfd\x9f\x1f\x9e\x6e\x38\x70\xce\x59\x7e\x43\xe2\x8a\xf8\x8f\x1e\xf4\xa1\x2a\xb7\xf9\xc3\x42\x12\x69\xdd\x6c\x8d\x78\xd9\xac\x3c\xd6\x5e\x36\x7f\xfd\x4f\xf3\xb3\x01\x11\x8a\x1a\x84\x57\x84\x31\xe8\x63\x99\x2f\x61\x91\xb6\xc1\xd6\xa4\xe9\xb8\x4a\x46\x20\xe4\x89\x07\xa9\x18\xf4\x69\x5b\x6d\xde\x94\xe9\xfd\xa3\xab\x4e\xd9\x91\x0c\x3f\x6e\x6d\x22\x45\x0d\x68\x45\xa0\x4c\x67\x3a\x21\x6b\x10\x79\xd0\x7b\xf7\xfb\xbf\x70\xa1\xd5\x9a\x0f\x52\x70\x46\x0c\x31\x09\x56\x2b\x02\x23\x06\x67\x84\x57\x44\x2d\x88\x9e\x05\x42\x1b\x68\xe8\x56\x6a\x7c\x46\x89\xaa\x41\xea\x8a\x44\x0b\x12\xcf\x01\x69\x3a\x6a\x40\x59\x6f\xad\x95\x0d\x0c\x79\x25\x41\x07\x8a\xa4\xf7\xba\x0e\x24\x9f\x03\xb2\x91\x33\x58\x89\x47\x2c\x8d\x14\x71\x63\xbd\xa2\xee\x8c\xd4\x73\x40\x46\x85\x0e\xad\x8d\x3a\x82\xf8\x25\x63\x2b\xe4\x20\xd4\xf8\x1e\xc9\x1a\xf4\x4b\x5a\xee\x37\xe9\xee\xcd\x36\x4f\xcb\xef\x0b\x80\x08\xe8\xaf\x68\x6d\x3a\x0e\x92\xf7\xd8\x95\x96\x60\x68\x00\x6a\xbd\xce\x83\x7e\x73\x7f\x54\xcb\x74\x91\x8f\x0c\xd8\xc4\x02\x4c\x8e\x86\x24\x39\x32\x9d\xc4\xc6\x74\xd2\x83\x3e\xe6\xd9\xb3\x34\xa9\x28\x04\x29\x40\x1e\xb8\xf7\x15\x82\x94\x63\xd3\x89\x08\xb4\x50\x93\x45\x08\xb6\xb6\x0a\xbc\x21\x1b\x67\xb8\x52\x20\xf9\xcc\x3d\x6a\x4d\x57\x2c\x0d\x78\x28\x4d\x7f\xfc\x0c\xfd\x19\x1d\x23\x5f\x1d\x54\x83\x33\x52\xa1\x33\xfc\x96\x96\xff\x4e\xf3\x0f\x3f\xfd\xf4\x2e\x7f\xba\x45\x7e\x5b\xb9\xbc\xda\x9c\xc0\x59\x48\xf8\x5f\xff\xeb\xce\xdf\x82\x94\x7e\xd9\x5c\xd9\x95\x02\xb4\x33\xc6\x1b\xa0\xce\xb3\xc8\x88\x00\x55\xc7\x55\xbf\x3c\xa6\x0a\x01\x36\x19\xa3\xd4\x14\xea\x1c\x0b\x13\x30\x59\x17\x86\x30\x01\x91\xcd\xa4\x0a\x9e\x50\x78\x69\x87\xe6\xdb\xa4\xbb\xaf\xa7\x0e\x0b\x15\xe8\x40\x13\x4a\xb0\x91\xf9\x24\x24\xc3\xf4\x27\x67\x34\x9d\x63\x21\x70\x9d\x75\x31\x0e\x81\x8b\x2c\x4e\x16\xbd\x93\xa3\xf1\xa0\x29\x97\x38\x4b\xb2\xa6\x35\x9e\x3c\x3a\xb9\xe8\xb1\x93\xc9\x82\xbc\x43\xbc\xfe\x50\xa5\xe5\x42\xbf\x6b\xfc\x01\x04\x7a\x6b\xd5\x22\x08\xb8\x0d\x96\x6c\x95\x40\x32\xbc\x4f\xed\x39\x05\xa8\x85\x2c\x95\x84\xce\x46\x8a\x22\x14\x81\x0e\xdc\x5c\x87\xe7\x14\xa2\x96\xb0\x10\xbd\xf9\x9a\xcc\x84\x08\x2a\xeb\x2f\x72\x1c\xf5\xb8\x99\xd1\x74\xd6\xef\x9a\x73\x8a\xcd\x67\x20\xf1\x4b\x14\xde\xf7\xcc\xf0\xea\x4e\x9a\x6f\x09\x4b\x90\x8f\x12\xc7\x50\xde\x2d\x27\x6a\x22\x2b\x78\xe8\x7d\xb1\xf9\xce\xb3\x48\x82\xcd\x3a\x12\x49\x90\xc7\xd5\xf8\xea\x2a\x85\x23\x4d\x1f\xf3\xf5\xb6\x74\xf7\x95\x5b\x67\xe9\x6e\xf7\xa9\x28\x77\xeb\xda\x9c\x54\xff\x1b\x70\x05\xef\xee\x6a\x43\xb2\x60\xfc\xf2\xe8\xe8\x1a\xcc\xd0\xfb\x22\x4d\xa7\x50\xb7\xff\x70\x87\xb2\xe7\xa1\x82\x24\xd8\x1b\x15\x50\x18\x08\x57\x12\xe4\xf0\xa4\x96\xa1\xd4\x48\x95\xc6\x36\x20\x51\x9d\x22\x94\x01\xef\x14\x74\x4c\x1d\x06\xc4\xb0\x32\x52\x3e\x47\x9d\x45\x0d\x54\x11\x82\xf2\x4e\x51\x1b\x8a\x78\x8b\x3a\xba\xfa\x94\x01\xd5\x79\x55\xfc\x56\x35\xc0\x48\x17\x82\xf6\xb7\x48\x34\xb1\x4f\x63\x7f\xc3\x06\xf1\x5c\xd9\xd1\xe5\x3d\x0d\x8a\x54\x21\x90\xee\xaf\x2b\x02\xf1\x2c\xc8\x50\x0a\xc8\x3c\xff\x9c\x6a\x10\x0d\x15\x11\x90\x77\x6c\xf4\xa1\x2f\x88\x12\x2b\x03\x38\x2c\x59\x16\x9a\x8e\x26\x14\x99\x48\x11\x86\x20\x09\x32\xc8\x4f\x18\x46\xf3\xb7\x45\xb6\xcd\xd3\xaa\x28\xf7\xd7\xb9\xdb\x57\x6e\x7d\xbb\xfd\x7a\x9b\x23\xa7\x99\xea\x59\x00\x51\xbf\x35\x41\x22\xb2\x20\x18\xd9\x71\x1f\xd8\x5e\xdc\x19\x10\xd9\xb9\x40\x21\xba\x92\xa5\xb9\xa9\x42\x61\x74\x9b\x26\xd2\x86\x3c\x8d\xd2\x73\x24\xd9\x5d\x9f\x26\x9f\x4b\x11\x2d\x6b\x55\x72\x58\x2c\x9f\x56\x45\x5c\xce\xc8\xd2\xa0\x79\x9f\xd0\x55\x67\x3e\xf4\xe5\x7f\x73\x7f\x9f\x01\x52\xb3\xa2\x4c\x12\xe5\x3e\xc3\xc3\x30\x58\xa3\xf4\xb0\x0c\x93\x27\x5d\x42\xcc\x36\x88\x89\x86\x30\xeb\x5a\xdd\xc5\x3d\xd3\xa0\x10\xf8\x50\xd5\xe9\x93\x52\x38\xc7\x42\x50\x36\xa8\xf8\x40\xca\x2c\xaa\x24\xf8\x5c\x2a\x9c\x06\xe9\xf9\x16\x11\x93\x28\x78\xa3\x09\x97\xb5\xf9\xcc\xdc\x49\xfd\x9a\xe6\xeb\x22\x7b\x57\xa6\x4f\x9b\x80\xfa\x90\x67\xab\xfc\x06\x9d\x58\x65\xcd\xcf\x9e\x8b\xa0\x65\x78\x75\x55\x14\x8c\x2c\xa8\x61\x47\xb8\x1c\x24\x06\xa0\xd6\xdb\xa8\x01\x19\xca\x62\x45\x13\x20\xb9\x54\x51\x68\x49\x01\x18\x38\x39\x41\xc2\xc3\x53\xd2\x40\x73\xa7\xb4\x44\x51\x08\x52\x90\xd8\xfe\xfe\x28\x30\x26\x8b\x3a\x8d\xb0\x23\x54\xcb\x41\x72\xa4\x08\x0d\x04\x71\xae\x6e\x07\xb2\x20\x3e\x24\x60\x87\xc5\xb2\x5c\x64\x3a\x39\x52\x44\x04\xc1\xa9\x10\xc2\x20\x8e\x8f\x7a\x27\xf9\x0c\x45\xe1\x9c\x42\xb4\xdd\x52\x63\x3a\x61\x7c\x39\xe6\xab\x22\x11\xb5\x9e\xcf\x04\x89\x08\x64\xb1\xad\xed\xea\x1d\x4d\x07\x6a\x07\x87\xa3\x81\x47\x3b\x2b\x3a\x0d\x52\x23\x45\x8c\x48\x05\x5b\x13\xaa\x2c\x6a\xd1\xf4\xe0\x8c\x30\x59\x0c\x8a\x15\x31\x81\x18\x6c\x2d\xda\x16\x4d\xb5\x9d\xd3\xb8\xbf\xc5\x64\xa9\xa2\x28\x9e\x2b\xeb\xe3\x5b\x93\x5d\x95\xbf\xb0\xc7\xf1\x40\x3c\xa1\xa4\xa8\x67\x5f\xa2\x28\x02\x21\x50\x12\xcc\x21\x80\x4c\xa0\x08\xc1\xf6\x67\x44\xbe\x91\x46\x7b\x1e\xa4\xc7\x8a\x08\x14\xef\x9a\x4e\x46\x20\x31\x00\x89\xb1\x33\x2c\xf3\x3a\x3d\x56\x24\x01\x45\x6f\x3a\x09\x1c\x7b\x6c\x7d\x46\x7f\x1f\x84\xce\x84\xa0\x04\xb8\xee\xa7\x43\x16\x12\xd9\xac\xd0\x9b\x4e\xcc\x15\xc7\x4b\x14\x99\xd8\xbd\x01\xfb\xad\x09\x21\x89\x40\x38\x54\x44\x27\x9d\x61\x7d\x78\xf2\x41\x75\x5d\x77\x73\xab\xb4\xf6\xa2\x06\x87\x60\x92\x30\xc7\xb6\x05\x8b\xf1\x69\x42\x0d\x6b\xd6\xd3\xa6\x8b\x41\xaa\x01\x1d\xd3\xbb\x82\xf6\x1e\xd5\x17\x56\x82\xb5\x59\xd4\x2d\x89\x21\x88\x2f\x52\x24\xc7\x8a\x92\x30\x04\xa1\x19\x46\x6f\x35\x51\xdd\xd1\x52\x50\xa8\x88\xa1\x0c\x8c\xc5\x50\xe8\x2c\xf0\x3a\x01\x34\x51\x1c\x2f\x50\xa4\x46\x8a\x18\x09\x13\x68\x20\x5f\x93\x77\x19\x56\x0c\x33\x2c\x2e\x3a\x23\x35\x56\xa4\x41\x24\x3d\x48\x83\x08\xae\xef\x2a\x9e\xb9\xb6\x2d\x59\x63\xba\x7f\x16\x87\x6f\xe9\x36\x7f\xeb\x1b\x98\x5f\x0e\xbb\x6a\xfb\xb4\x73\x7f\xcc\xd6\xe0\x02\x78\x9f\xea\x84\xf5\x67\xd4\xb4\xb1\xb5\xd7\xe1\x30\xc3\xb6\xa6\x1b\x80\xce\xce\x5c\x85\xf5\x39\xb5\xf1\x33\xd1\xcd\xbd\x12\xdf\x92\xc9\x89\x7c\x14\x2a\x3a\xab\xa4\x03\x11\x24\x7d\xcd\x40\xed\xac\x12\x5b\xaf\x1b\x0d\xd8\xda\x9a\xc1\x83\x16\x7f\xa9\x40\xd6\x83\x1a\xaf\x23\x0d\x41\x95\xd7\x14\xc5\xc3\x6e\xb6\x4d\x13\x9f\xd2\xdd\xe3\xeb\xdd\xee\x4d\xe9\xd2\x75\xb5\xf9\x79\x5b\xee\xab\x93\x73\x3d\x01\xd6\x06\x95\xbd\x00\x29\xa2\xa2\x18\x41\x4f\x34\xce\xea\x24\x6a\x8e\x85\x2a\x9a\x12\x62\xd7\xfd\x99\xb6\x12\x9a\x1b\xdb\xcc\xa3\xa6\x59\x48\xa1\x0b\x20\xf9\x58\x31\x31\x45\x56\x82\xc2\x08\x3e\x6f\xbe\xe9\xf9\x97\x05\x21\x02\x11\x06\x12\x39\x98\x0f\x8d\x7a\x8a\x05\xe6\x9b\x66\x69\x1e\x8e\xa2\x98\x4a\xfc\xd4\x6b\xe2\x0b\x2d\xb4\x49\x58\x1a\x9f\x32\xdf\x14\x4b\xb5\x57\xb5\x21\x29\x03\x34\x37\x08\xe5\x16\x27\x40\x6f\xdd\xd3\x12\xdf\xab\xdd\xcd\xe8\x60\xf2\x24\x40\x98\x41\x4b\x36\xd5\x3c\x8b\x13\xa8\x79\xd6\xd0\xfb\x64\x12\xcd\x91\xd5\x64\xca\x38\xa5\x6a\xde\xcf\x3b\x7f\x33\x47\xef\xc3\x20\x65\x0c\x66\x5e\xed\x37\x9c\x74\xca\x7c\x73\xb3\x57\x0b\x12\x83\x2e\xdd\x80\x8d\xbd\x4f\x83\x39\x73\x79\xc7\xe6\x9b\x63\x69\xee\x1d\xfd\x38\xba\x53\x6d\xd8\x98\xf2\x3e\xa1\x97\x99\x6f\x9a\xa5\xa2\xc6\xa5\xf7\xbe\x71\x89\x2c\x4d\x04\xfa\xfc\xce\x15\x2c\x73\x69\xfe\x65\xf4\xf6\xd3\x1f\x45\x8d\x26\xff\x91\xc7\x29\xbc\xff\xac\x34\x20\x5e\x5e\xfc\x3f\x00\x00\xff\xff\x4e\x05\xca\x91\x74\x23\x00\x00")
+
+func benchmarksTrialTomlBytes() ([]byte, error) {
+	return bindataRead(
+		_benchmarksTrialToml,
+		"benchmarks-trial.toml",
+	)
+}
+
+func benchmarksTrialToml() (*asset, error) {
+	bytes, err := benchmarksTrialTomlBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "benchmarks-trial.toml", size: 9076, mode: os.FileMode(420), modTime: time.Unix(1567102198, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _configurationsSampleToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x8f\x3d\x6e\xc3\x30\x0c\x85\x77\x9d\x82\x10\xba\xba\x4a\x0f\xa0\x29\x4d\xdd\xa5\x09\x90\xa5\x83\x61\x18\x8a\x4d\xff\x20\x8e\x28\x90\x54\x7b\xfd\x42\x35\xb2\x15\x19\xba\x7e\xef\x11\x8f\x5f\xd3\xec\x29\x8e\xcb\x94\x39\xe8\x42\x51\xda\xd6\x00\x1c\xc3\x0d\xc1\x83\x3d\xa3\xf4\x33\x0e\xd6\x00\xd4\xfd\xdb\x1a\x26\x29\xb4\x1a\xbc\x48\x70\x89\x11\x6f\x49\xbb\x95\x28\x89\xa3\x58\x5a\xe7\x1c\x0f\xf1\x0b\x3c\x34\xb6\x3e\xd5\x7b\xff\xb2\xdb\xd9\x76\xe3\xf7\xf3\xc6\x56\x8a\xa2\xcf\x32\x13\xeb\x3d\xfc\xe4\x90\x12\xf2\x6f\x3c\x12\x6d\x98\x48\xcb\xdc\xd3\xfb\xe9\xe3\xe0\xbe\x89\xaf\x6e\xa2\x6a\xc0\x4b\x9e\xca\xd4\xeb\x22\xe1\xb2\xe2\x00\x1e\x94\x33\x1a\xf3\xd0\xe4\x48\x0f\x5d\x96\x28\xc8\xda\xf1\xd6\xe9\xfa\x19\xfb\xab\x38\x1a\xc7\xff\x4b\xfd\xf5\xbd\xb3\xe6\x27\x00\x00\xff\xff\xad\xd8\x67\x78\x70\x01\x00\x00")
+
+func configurationsSampleTomlBytes() ([]byte, error) {
+	return bindataRead(
+		_configurationsSampleToml,
+		"configurations-sample.toml",
+	)
+}
+
+func configurationsSampleToml() (*asset, error) {
+	bytes, err := configurationsSampleTomlBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "configurations-sample.toml", size: 368, mode: os.FileMode(420), modTime: time.Unix(1506091866, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _configurationsGollvmToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x90\x4f\x4b\x03\x31\x10\xc5\xef\xfb\x29\x86\xe0\xd1\xb0\x07\xc5\x5b\x0e\xad\xd6\x56\xa8\x56\x16\x41\x64\x59\xca\x34\xee\x86\xe0\x6c\x26\xe4\x4f\xfd\xfa\x92\x78\xac\x7f\x40\xf0\xf8\x78\xbc\xdf\x7b\x33\x7d\x7f\xcd\x6e\xb2\x26\x07\x4c\x96\x5d\x1c\x86\x06\xe0\x01\xe7\x11\x14\x88\x35\x8b\x06\xa0\x63\x4e\x45\x9d\x6d\x76\xf7\xab\xf6\x9d\xc3\x5b\x6b\xb8\xad\x4e\x76\xcf\x01\xbd\x1f\x03\x28\xe8\x85\xf6\xd9\x07\x9e\x2c\x8d\x62\x68\x9a\x5f\xc8\xd2\x31\xc6\xb9\x50\x96\xd9\xd2\xeb\x2d\xa1\x89\x95\x22\x13\x9a\xa8\x3e\xdd\xe1\xdf\xea\x89\x8e\xf3\xb7\xc7\x15\xb3\xfd\x6a\x9a\xd1\xda\xf0\x54\xb4\x42\x22\x25\x77\x17\x20\x63\xc2\x64\xb5\x24\x7b\x30\x2c\xce\x4f\xe7\x67\xb7\x72\xc7\x1a\xdf\xde\xec\xb7\x77\xcb\x6e\xd1\xbd\xec\x1f\x17\x4f\x1b\x75\xda\x49\xf6\x70\x75\x59\x63\x6b\xfd\x97\xd4\x4f\x1f\xf9\x08\x00\x00\xff\xff\x11\xc2\x2d\x5d\xea\x01\x00\x00")
+
+func configurationsGollvmTomlBytes() ([]byte, error) {
+	return bindataRead(
+		_configurationsGollvmToml,
+		"configurations-gollvm.toml",
+	)
+}
+
+func configurationsGollvmToml() (*asset, error) {
+	bytes, err := configurationsGollvmTomlBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "configurations-gollvm.toml", size: 490, mode: os.FileMode(420), modTime: time.Unix(1562784316, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _configurationsCronjobToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x92\xcf\x4a\xc4\x30\x10\xc6\xef\x7d\x8a\x21\xec\xd1\xb0\xf8\x00\x3d\x6c\xdd\xda\x5b\x0b\x75\xc5\x43\xe9\x21\xdb\x9d\xd4\x40\x36\x09\xf9\xa3\xa8\xf8\xee\x32\xb2\x07\x61\x71\x2d\xb5\xe2\x71\x32\x64\x7e\xdf\xf7\xcd\x74\xdd\x8d\x35\x52\x8d\xc9\x8b\xa8\xac\x09\x7d\x9f\x01\xd4\xe2\x88\x90\x03\x2b\x44\x40\x96\x01\xb4\xd6\x46\xaa\x57\x6d\xd3\xec\xd6\xab\xb7\x62\x73\x57\xbe\x53\x63\x23\x23\xfa\x22\x29\x7d\x80\x1c\x3a\x60\x7b\x34\xc3\x63\x50\xaf\xc8\xae\x4e\xc5\xe1\x59\x78\xc9\xa0\xcf\xb2\x8b\xa4\x9d\x72\xe7\xa0\xd1\xf2\xa8\xdc\x7a\x51\x10\x59\xe2\xce\x5b\x79\xd1\x57\x9b\xcc\x83\x17\xce\xa1\x27\x1c\x1b\x5c\xa2\x2f\x4a\x23\xa3\x59\x5b\x15\xc4\x5e\x23\x49\x89\x3e\xe1\xcf\xd6\xbe\x01\x7e\xf1\xf7\x17\x40\x6e\xac\xf3\x88\x47\x17\x7f\x81\x6e\x93\x29\xcd\xd3\x67\xa7\x6a\xb6\x65\x71\x5f\xe5\x22\xbc\x98\xe1\x34\xd9\x4a\x99\x5f\xcf\xd0\x48\x6b\xa8\x35\xe1\xab\xe1\x56\x8b\x31\xd0\x23\xaf\x81\xeb\xa5\xee\x6d\x46\x6a\x53\x05\xcd\xbb\xcb\x39\x11\x9d\x09\xfa\xcf\x78\xa6\x88\x59\x2a\x9a\x8f\x00\x00\x00\xff\xff\xdb\x2e\x9e\xfa\x97\x04\x00\x00")
+
+func configurationsCronjobTomlBytes() ([]byte, error) {
+	return bindataRead(
+		_configurationsCronjobToml,
+		"configurations-cronjob.toml",
+	)
+}
+
+func configurationsCronjobToml() (*asset, error) {
+	bytes, err := configurationsCronjobTomlBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "configurations-cronjob.toml", size: 1175, mode: os.FileMode(420), modTime: time.Unix(1581109207, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
+}
+
+var _configurationsCmpjobToml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x8f\xc1\x8a\x83\x30\x10\x86\xef\x79\x8a\x21\xec\x71\x45\xf6\x01\x72\xd8\xdd\xd2\xde\x0c\x48\x6f\xe2\x61\x34\xa3\x06\xc6\xa4\x24\x11\xa1\x4f\x5f\x82\x1e\x8b\x85\xd2\xe3\xff\xcf\xc0\xf7\x7f\x4d\xf3\xef\xdd\x60\xc7\x25\x60\xb2\xde\xc5\xb6\x15\x00\x15\xce\x04\x0a\xa4\x66\x23\x05\x40\xed\x7d\xca\xf1\xab\xd6\xfa\x5a\x8e\xbe\xf0\x5b\xff\x3b\x24\x0a\x7f\x8b\x65\x03\x0a\x1a\x90\x1d\xb9\x7e\x8a\xf6\x4e\xf2\x7b\x0f\x66\xc5\x30\x48\x68\x85\x38\xe4\x54\xb4\x3e\xe5\xb8\xad\xff\x18\x47\xb3\x29\x6e\x13\x46\x3a\xb2\xba\xf4\x67\xc6\x31\xe6\x13\x32\xab\xc2\xa8\x18\xb1\x44\xe6\x32\xd9\x99\xd4\x4f\xfe\x39\xd9\x88\x1d\x53\xde\x93\xc2\x42\xaf\xf5\x0e\xb0\xbb\xe4\x5b\xd8\x47\x00\x00\x00\xff\xff\x2f\x4f\x6d\x6a\xbe\x01\x00\x00")
+
+func configurationsCmpjobTomlBytes() ([]byte, error) {
+	return bindataRead(
+		_configurationsCmpjobToml,
+		"configurations-cmpjob.toml",
+	)
+}
+
+func configurationsCmpjobToml() (*asset, error) {
+	bytes, err := configurationsCmpjobTomlBytes()
+	if err != nil {
+		return nil, err
+	}
+
+	info := bindataFileInfo{name: "configurations-cmpjob.toml", size: 446, mode: os.FileMode(420), modTime: time.Unix(1586981370, 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){
+	"foo":                         foo,
+	"memprofile":                  memprofile,
+	"cpuprofile":                  cpuprofile,
+	"tmpclr":                      tmpclr,
+	"benchtime":                   benchtime,
+	"benchsize":                   benchsize,
+	"benchdwarf":                  benchdwarf,
+	"cronjob.sh":                  cronjobSh,
+	"cmpjob.sh":                   cmpjobSh,
+	"cmpcl.sh":                    cmpclSh,
+	"cmpcl-phase.sh":              cmpclPhaseSh,
+	"tweet-results":               tweetResults,
+	"benchmarks-all.toml":         benchmarksAllToml,
+	"benchmarks-50.toml":          benchmarks50Toml,
+	"benchmarks-gc.toml":          benchmarksGcToml,
+	"benchmarks-gcplus.toml":      benchmarksGcplusToml,
+	"benchmarks-trial.toml":       benchmarksTrialToml,
+	"configurations-sample.toml":  configurationsSampleToml,
+	"configurations-gollvm.toml":  configurationsGollvmToml,
+	"configurations-cronjob.toml": configurationsCronjobToml,
+	"configurations-cmpjob.toml":  configurationsCmpjobToml,
+}
+
+// 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{
+	"benchdwarf":                  &bintree{benchdwarf, map[string]*bintree{}},
+	"benchmarks-50.toml":          &bintree{benchmarks50Toml, map[string]*bintree{}},
+	"benchmarks-all.toml":         &bintree{benchmarksAllToml, map[string]*bintree{}},
+	"benchmarks-gc.toml":          &bintree{benchmarksGcToml, map[string]*bintree{}},
+	"benchmarks-gcplus.toml":      &bintree{benchmarksGcplusToml, map[string]*bintree{}},
+	"benchmarks-trial.toml":       &bintree{benchmarksTrialToml, map[string]*bintree{}},
+	"benchsize":                   &bintree{benchsize, map[string]*bintree{}},
+	"benchtime":                   &bintree{benchtime, map[string]*bintree{}},
+	"cmpcl-phase.sh":              &bintree{cmpclPhaseSh, map[string]*bintree{}},
+	"cmpcl.sh":                    &bintree{cmpclSh, map[string]*bintree{}},
+	"cmpjob.sh":                   &bintree{cmpjobSh, map[string]*bintree{}},
+	"configurations-cmpjob.toml":  &bintree{configurationsCmpjobToml, map[string]*bintree{}},
+	"configurations-cronjob.toml": &bintree{configurationsCronjobToml, map[string]*bintree{}},
+	"configurations-gollvm.toml":  &bintree{configurationsGollvmToml, map[string]*bintree{}},
+	"configurations-sample.toml":  &bintree{configurationsSampleToml, map[string]*bintree{}},
+	"cpuprofile":                  &bintree{cpuprofile, map[string]*bintree{}},
+	"cronjob.sh":                  &bintree{cronjobSh, map[string]*bintree{}},
+	"foo":                         &bintree{foo, map[string]*bintree{}},
+	"memprofile":                  &bintree{memprofile, map[string]*bintree{}},
+	"tmpclr":                      &bintree{tmpclr, map[string]*bintree{}},
+	"tweet-results":               &bintree{tweetResults, 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, "/")...)...)
+}
diff --git a/cmd/bent/bar b/cmd/bent/bar
new file mode 100755
index 0000000..2714e22
--- /dev/null
+++ b/cmd/bent/bar
@@ -0,0 +1,8 @@
+#!/bin/bash
+# Run args as command, but wrapped in bar.
+echo Bar bar bar bar bar bar bar
+echo Bar args are "$@"
+echo Bar environment is
+printenv
+"$@"
+echo  ${BENT_BINARY} rab rab rab rab rab rab raB
diff --git a/cmd/bent/benchdwarf b/cmd/bent/benchdwarf
new file mode 100755
index 0000000..3545f1d
--- /dev/null
+++ b/cmd/bent/benchdwarf
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+x=`which dwarf-goodness`
+y=`which optargorder`
+z=`which nostmt`
+tmp=tmp-bench-dwarf-$$
+bench=no
+
+# make it exist so it can be removed
+cat /dev/null > $tmp
+
+# Measures fraction of input variables to lines that are present
+if [ "x$x" = "x" ] ; then
+	echo "Can get dwarf-goodness command with 'go get github.com/dr2chase/dwarf-goodness/cmd/dwarf-goodness'"
+else
+	dwarf-goodness "$1" > $tmp
+	# has format #inputs, #present, ratio, difference
+	inputsquality=`tail -1 $tmp | awk 'BEGIN {FS=","} {print $3}'`
+	echo "tmp dwarf line quality wc = " `wc -l $tmp`
+	bench=yes
+fi
+
+# Measures fraction of function arguments that are present at function entry
+if [ "x$y" = "x" ] ; then
+	echo "Can get optargorder command with 'go get github.com/dr2chase/optargorder'"
+else
+	optargorder "$1" > $tmp
+	# has format nFunctions,argumentError,tooManyPieces,missingSource,wrongOrder,missingDwarf,1-totalErrors/nFunctions
+	argsquality=`tail -1 $tmp | awk 'BEGIN {FS=","} {print $7}'`
+	echo "tmp dwarf args quality wc = " `wc -l $tmp`
+	bench=yes
+fi
+
+# Measures fraction of lines mentioned in dwarf that are tagged as "is_stmt"
+if [ "x$z" = "x" ] ; then
+	echo "Can get nostmt command with 'go get github.com/dr2chase/nostmt'"
+else
+	nostmt -c "$1" > $tmp
+	# has total,nostmt,1-nostmt/total
+	stmtquality=`tail -1 $tmp | awk 'BEGIN {FS=","} {print $3}'`
+	echo "tmp stmt args quality wc = " `wc -l $tmp`
+
+	nostmt -c -k "$1" > $tmp
+	# has total,nostmt,1-nostmt/total
+	stmtkindquality=`tail -1 $tmp | awk 'BEGIN {FS=","} {print $3}'`
+	echo "tmp stmt args kind quality wc = " `wc -l $tmp`
+
+	bench=yes
+fi
+
+if [ ${bench} = "yes" ] ; then
+	echo "goos: $GOOS"
+	echo "goarch: $GOARCH"
+	echo "pkg:" # Erase any inherited pkg if files are concatenated
+	if [ "x$x" != "x" ] ; then
+		echo "Benchmark${2}_dwarf_input_goodness" 1 ${inputsquality} inputs-quality
+	fi
+	if [ "x$y" != "x" ] ; then
+		echo "Benchmark${2}_dwarf_args_goodness" 1 ${argsquality} args-quality
+	fi
+	if [ "x$z" != "x" ] ; then
+		echo "Benchmark${2}_dwarf_stmt_goodness" 1 ${stmtquality} stmts-quality
+		# echo "Benchmark${2}_dwarf_stmt_goodness_kind" 1 ${stmtkindquality} stmts-quality
+	fi
+fi
+
+rm $tmp
diff --git a/cmd/bent/benchmarks-50.toml b/cmd/bent/benchmarks-50.toml
new file mode 100644
index 0000000..657cd4e
--- /dev/null
+++ b/cmd/bent/benchmarks-50.toml
@@ -0,0 +1,270 @@
+
+# A sample of about 50 different benchmark runs, not noisy, run quickly enough,
+# that appear to be somewhat diverse.
+
+[[Benchmarks]]
+  Name = "klauspost"
+  Repo = "github.com/dr2chase/benchmarks/klauspost"
+  Tests = "" # Don't run these tests; they hang, etc.
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "minio"
+  Repo = "github.com/minio/minio/cmd"
+  Tests = "none" # Don't run these tests; they hang, etc.
+  Benchmarks = "BenchmarkGetObject5MbFS" # not Get|Put|List
+  GcEnv = ["GO111MODULE=on"]
+
+[[Benchmarks]]
+  Name = "hugo_hugolib_sitebuilding"
+  Repo = "github.com/gohugoio/hugo/hugolib"
+  Benchmarks = "BenchmarkSiteBuilding/YAML,num_pages=10,num_tags=10,tags_per_page=20,shortcodes,render-12"
+  Disabled = true # Broken as of 2019-04-10
+
+[[Benchmarks]]
+  Name = "hugo_hugolib"
+  Repo = "github.com/gohugoio/hugo/hugolib"
+  Benchmarks = "BenchmarkParsePage"
+  Disabled = true # Broken as of 2019-04-10
+
+[[Benchmarks]]
+  Name = "ethereum_core"
+  Repo = "github.com/ethereum/go-ethereum/core"
+  Benchmarks = "BenchmarkInsertChain_ring1000_memdb"
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "shopify_sarama"
+  Repo = "github.com/Shopify/sarama"
+  Benchmarks = "Benchmark"
+  Disabled = true # Has no actual benchmarks.
+
+[[Benchmarks]]
+  Name = "aws_restjson"
+  Repo = "github.com/aws/aws-sdk-go/private/protocol/restjson"
+  Benchmarks = "Benchmark"
+  Disabled = true  # Has no actual benchmarks.
+
+[[Benchmarks]]
+  Name = "aws_restxml"
+  Repo = "github.com/aws/aws-sdk-go/private/protocol/restxml"
+  Benchmarks = "Benchmark"
+  Disabled = true    # Has no actual benchmarks.
+
+[[Benchmarks]]
+  Name = "aws_jsonrpc"
+  Repo = "github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
+  Benchmarks = "Benchmark"
+  Disabled = true    # Has no actual benchmarks.
+
+[[Benchmarks]]
+  Name = "tidwall_tile38"
+  Repo = "github.com/tidwall/tile38/tests"
+  Benchmarks = "Benchmark"
+  Disabled = true    # Has no actual benchmarks.
+
+[[Benchmarks]]
+  Name = "ethereum_bitutil"
+  Repo = "github.com/ethereum/go-ethereum/common/bitutil"
+  # RunWrapper = ["bar"]
+  Benchmarks = "Benchmark(BaseTest2KB|FastTest2KB|Encoding4KBVerySparse)"
+
+[[Benchmarks]]
+  Name = "ethereum_storage"
+  Repo = "github.com/ethersphere/swarm/storage"
+  Benchmarks = "BenchmarkJoin_8" # SplitPyramid seems to have a bug
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "ethereum_ethash"
+  Repo = "github.com/ethereum/go-ethereum/consensus/ethash"
+  Benchmarks = "BenchmarkHashimotoLight"
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "ethereum_sha3"
+  Repo = "github.com/ethereum/go-ethereum/crypto/sha3"
+  Benchmarks = "BenchmarkSha3_224_MTU"
+  Disabled = true
+
+[[Benchmarks]]
+  Name = "ethereum_ecies"
+  Repo = "github.com/ethereum/go-ethereum/crypto/ecies"
+  Benchmarks = "Benchmark"
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+  Disabled = true # Not a test or a benchmarks anymore
+
+[[Benchmarks]]
+  Name = "ethereum_corevm"
+  Repo = "github.com/ethereum/go-ethereum/core/vm"
+  Benchmarks = "BenchmarkOpDiv128"
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "ethereum_trie"
+  Repo = "github.com/ethereum/go-ethereum/trie"
+  Benchmarks = "Benchmark[HCKGU]" # Prove and VerifyProof are noisy
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "spexs2"
+  Repo = "github.com/egonelbre/spexs2/_benchmark/"
+  Benchmarks = "BenchmarkRun/10k/1"
+
+[[Benchmarks]]
+  Name = "gonum_blas_native"
+  Repo = "gonum.org/v1/gonum/blas/gonum"
+  Benchmarks = "Benchmark(DasumMediumUnitaryInc|Dnrm2MediumPosInc)" # not all benchmarks
+
+[[Benchmarks]]
+  Name = "gonum_lapack_native"
+  Repo = "gonum.org/v1/gonum/lapack/gonum"
+  Benchmarks = "BenchmarkDgeev/Circulant10"
+
+[[Benchmarks]]
+  Name = "gonum_mat"
+  Repo = "gonum.org/v1/gonum/mat"
+  Benchmarks = "Benchmark(MulWorkspaceDense1000Hundredth|ScaleVec10000Inc20)"
+
+[[Benchmarks]]
+  Name = "semver"
+  Repo = "github.com/Masterminds/semver"
+  Benchmarks = "BenchmarkValidateVersionTildeFail"
+
+[[Benchmarks]]
+  Name = "hugo_helpers"
+  Repo = "github.com/gohugoio/hugo/helpers"
+  Benchmarks = "Benchmark(StripHTML|ReaderContains)"
+  GcEnv = ["GO111MODULE=on"]
+
+[[Benchmarks]]
+  Name = "k8s_api"
+  Repo = "k8s.io/kubernetes/pkg/api/testing"
+  Benchmarks = "BenchmarkEncodeCodecFromInternalProtobuf"
+
+[[Benchmarks]]
+  Name = "k8s_schedulercache"
+  Repo = "k8s.io/kubernetes/pkg/scheduler/internal/cache"
+  Benchmarks = "BenchmarkList1kNodes30kPods"
+
+[[Benchmarks]]
+  Name = "uuid"
+  Repo = "github.com/satori/go.uuid/"
+  Benchmarks = "Benchmark"
+  Disabled = true # not a benchmark anymore
+
+[[Benchmarks]]
+  Name = "gonum_topo"
+  Repo = "gonum.org/v1/gonum/graph/topo/"
+  Benchmarks = "Benchmark(TarjanSCCGnp_1000_half|TarjanSCCGnp_10_tenth)"
+
+[[Benchmarks]]
+  Name = "gonum_path"
+  Repo = "gonum.org/v1/gonum/graph/path/"
+  Benchmarks = "Benchmark(AStarUndirectedmallWorld_10_2_2_2_Heur|Dominators/nested_if_n256)"
+
+[[Benchmarks]]
+  Name = "gonum_community"
+  Repo = "gonum.org/v1/gonum/graph/community/"
+  Benchmarks = "BenchmarkLouvainDirectedMultiplex"
+
+[[Benchmarks]]
+  Name = "gonum_traverse"
+  Repo = "gonum.org/v1/gonum/graph/traverse/"
+  Benchmarks = "BenchmarkWalkAllBreadthFirstGnp_(10|1000)_tenth" # more difference by size than anything else
+
+[[Benchmarks]]
+  Name = "capnproto2"
+  Repo = "zombiezen.com/go/capnproto2/"
+  Benchmarks = "Benchmark(TextMovementBetweenSegments|Growth_MultiSegment)"
+
+[[Benchmarks]]
+  Name = "uber_zap"
+  # Repo = "github.com/uber-go/zap/benchmarks"
+  Repo = "go.uber.org/zap/benchmarks"
+  Benchmarks = "BenchmarkAddingFields/(Zap.Sugar|^[ais])"
+
+[[Benchmarks]]
+  Name = "bindata"
+  Repo = "github.com/kevinburke/go-bindata"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "cespare_mph"
+  Repo = "github.com/cespare/mph"
+  Benchmarks = "BenchmarkBuild"
+
+# Used by InfluxDB and Prometheus
+[[Benchmarks]]
+  Name = "cespare_xxhash"
+  Repo = "github.com/cespare/xxhash"
+  BuildFlags = ["-tags", "purego"]
+  Benchmarks = "BenchmarkHashes/.*,direct,string,n=10MB"
+
+[[Benchmarks]]
+  Name = "gtank_blake2s"
+  Repo = "github.com/gtank/blake2s"
+  Benchmarks = "BenchmarkHash8K"
+
+[[Benchmarks]]
+  Name = "gtank_ed25519"
+  Repo = "github.com/gtank/ed25519"
+  Benchmarks = "Benchmark(IsOnCurve|ScalarMult)"
+  Disabled = true # ed25519/fe.go:11:2: use of internal package github.com/gtank/ristretto255/internal/radix51 not allowed
+
+[[Benchmarks]]
+  Name = "nelsam_gxui_interval"
+  Repo = "github.com/nelsam/gxui/interval"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "ajstarks_deck_generate"
+  Repo = "github.com/ajstarks/deck/generate"
+  Benchmarks = "Benchmark(Polygon|Arc)"
+
+[[Benchmarks]]
+  Name = "benhoyt_goawk"
+  Repo = "github.com/benhoyt/goawk/interp"
+  Benchmarks = "BenchmarkR"
+
+[[Benchmarks]]
+  Name = "ericlagergren_decimal"
+  Repo = "github.com/ericlagergren/decimal/benchmarks"
+  Benchmarks = "BenchmarkPi/foo=.*/prec=100"
+
+[[Benchmarks]]
+  Name = "ericlagergren_decimal_x"
+  Repo = "github.com/ericlagergren/decimal/benchmarks"
+  Benchmarks = "BenchmarkPi/foo=ericlagergren_.Go./prec=100"
+  Disabled = true
+
+[[Benchmarks]]
+  Name = "dustin_broadcast"
+  Repo = "github.com/dustin/go-broadcast"
+  Benchmarks = "Benchmark[^B]" #Brodcast is noisy
+
+[[Benchmarks]]
+  Name = "dustin_humanize"
+  Repo = "github.com/dustin/go-humanize"
+  Benchmarks = "Benchmark(FtoaRegexTrailing|ParseBigBytes)"
+
+[[Benchmarks]]
+  Name = "rcrowley_metrics"
+  Repo = "github.com/rcrowley/go-metrics"
+  Benchmarks = "(BenchmarkCompute1000000)" # BenchmarkMetrics is very noisy
+
+[[Benchmarks]]
+  Name = "aws_jsonutil"
+  Repo = "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "kanzi"
+  Repo = "github.com/flanglet/kanzi-go/benchmark"
+  Benchmarks = "Benchmark(BWTS|FPAQ|LZ|MTFT)"
+
+[[Benchmarks]]
+  Name = "commonmark_markdown"
+  Repo = "gitlab.com/golang-commonmark/markdown"
+  Benchmarks = "Benchmark(RenderSpec|RenderSpecBlackFriday2)"
+
diff --git a/cmd/bent/benchmarks-all.toml b/cmd/bent/benchmarks-all.toml
new file mode 100644
index 0000000..3757fa2
--- /dev/null
+++ b/cmd/bent/benchmarks-all.toml
@@ -0,0 +1,291 @@
+# Benchmarks that build, and that run quickly enough.
+# The noisy ones are listed at the bottom
+
+# etcd bleve
+
+[[Benchmarks]]
+  Name = "dustin_broadcast"
+  Repo = "github.com/dustin/go-broadcast"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "dustin_humanize"
+  Repo = "github.com/dustin/go-humanize"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "rcrowley_metrics"
+  Repo = "github.com/rcrowley/go-metrics"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "shopify_sarama"
+  Repo = "github.com/Shopify/sarama"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "aws_restjson"
+  Repo = "github.com/aws/aws-sdk-go/private/protocol/restjson"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "aws_restxml"
+  Repo = "github.com/aws/aws-sdk-go/private/protocol/restxml"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "aws_jsonrpc"
+  Repo = "github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "aws_jsonutil"
+  Repo = "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "kanzi"
+  Repo = "github.com/flanglet/kanzi-go/benchmark"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "ethereum_bitutil"
+  Repo = "github.com/ethereum/go-ethereum/common/bitutil"
+  # Benchmarks = "Benchmark"
+  Benchmarks = "Benchmark.*Test"
+
+[[Benchmarks]]
+  Name = "ethereum_storage"
+  Repo = "github.com/ethersphere/swarm/storage"
+  Benchmarks = "Benchmark(Join|SplitTree)" # SplitPyramid seems to have a bug
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "ethereum_ethash"
+  Repo = "github.com/ethereum/go-ethereum/consensus/ethash"
+  Benchmarks = "Benchmark"
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "ethereum_core"
+  Repo = "github.com/ethereum/go-ethereum/core"
+  Benchmarks = "Benchmark([IPF]|ChainW)" # ChainRead crashes as of 1.10 on 2018-03-16
+
+[[Benchmarks]]
+  Name = "ethereum_sha3"
+  Repo = "github.com/ethereum/go-ethereum/crypto/sha3"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "ethereum_ecies"
+  Repo = "github.com/ethereum/go-ethereum/crypto/ecies"
+  Benchmarks = "Benchmark"
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "ethereum_corevm"
+  Repo = "github.com/ethereum/go-ethereum/core/vm"
+  Benchmarks = "Benchmark"
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "ethereum_trie"
+  Repo = "github.com/ethereum/go-ethereum/trie"
+  Benchmarks = "Benchmark"
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "ethereum_whisperv5"
+  Repo = "github.com/ethereum/go-ethereum/whisper/whisperv5"
+  Benchmarks = "Benchmark"
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "eolian_dsp"
+  Repo = "buddin.us/eolian/dsp"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "spexs2"
+  Repo = "github.com/egonelbre/spexs2/_benchmark/"
+  Benchmarks = "BenchmarkRun"
+
+[[Benchmarks]]
+  Name = "minio"
+  Repo = "github.com/minio/minio/cmd"
+  Tests = "none" # Don't run these tests; they hang, etc.
+  Benchmarks = "BenchmarkGetObject[^V125]" # not Get|Put|List
+
+[[Benchmarks]]
+  Name = "gonum_blas_native"
+  Repo = "gonum.org/v1/gonum/blas/gonum"
+  Benchmarks = "Benchmark.*Med" # not all benchmarks
+
+[[Benchmarks]]
+  Name = "gonum_lapack_native"
+  Repo = "gonum.org/v1/gonum/lapack/gonum"
+  Benchmarks = "BenchmarkDgeev/.*[mt][1234]"
+
+[[Benchmarks]]
+  Name = "gonum_mat"
+  Repo = "gonum.org/v1/gonum/mat"
+  Benchmarks = "Benchmark(.*Vec.*10000($|[^0])|.*Mul.*Dense.*1000H)"
+
+[[Benchmarks]]
+  Name = "semver"
+  Repo = "github.com/Masterminds/semver"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "hugo_helpers"
+  Repo = "github.com/gohugoio/hugo/helpers"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "hugo_hugolib"
+  Repo = "github.com/gohugoio/hugo/hugolib"
+  Benchmarks = "Benchmark(S[och]|Get|Replace)"
+
+[[Benchmarks]]
+  Name = "hugo_hugolib_sitebuilding"
+  Repo = "github.com/gohugoio/hugo/hugolib"
+  Benchmarks = "BenchmarkSiteBuilding/YAML,num_pages=10,num_tags=10,tags_per_page=20"
+
+[[Benchmarks]]
+  Name = "k8s_api"
+  Repo = "k8s.io/kubernetes/pkg/api/testing/"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "k8s_schedulercache"
+  Repo = "k8s.io/kubernetes/pkg/scheduler/cache"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "uuid"
+  Repo = "github.com/satori/go.uuid/"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "gonum_topo"
+  Repo = "gonum.org/v1/gonum/graph/topo/"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "gonum_path"
+  Repo = "gonum.org/v1/gonum/graph/path/"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "gonum_community"
+  Repo = "gonum.org/v1/gonum/graph/community/"
+  Benchmarks = "BenchmarkLouvainDirectedMultiplex"
+
+[[Benchmarks]]
+  Name = "gonum_traverse"
+  Repo = "gonum.org/v1/gonum/graph/traverse/"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "capnproto2"
+  Repo = "zombiezen.com/go/capnproto2/"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "uber_zap"
+  # Repo = "github.com/uber-go/zap/benchmarks"
+  Repo = "go.uber.org/zap/benchmarks"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "bindata"
+  Repo = "github.com/kevinburke/go-bindata"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "cespare_mph"
+  Repo = "github.com/cespare/mph"
+  Benchmarks = "Benchmark"
+
+# Used by InfluxDB and Prometheus
+[[Benchmarks]]
+  Name = "cespare_xxhash"
+  Repo = "github.com/cespare/xxhash"
+  BuildFlags = ["-tags", "purego"]
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "gtank_blake2s"
+  Repo = "github.com/gtank/blake2s"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "gtank_ed25519"
+  Repo = "github.com/gtank/ed25519"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "nelsam_gxui_interval"
+  Repo = "github.com/nelsam/gxui/interval"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "ajstarks_deck_generate"
+  Repo = "github.com/ajstarks/deck/generate"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "benhoyt_goawk"
+  Repo = "github.com/benhoyt/goawk/interp"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "ericlagergren_decimal"
+  Repo = "github.com/ericlagergren/decimal/benchmarks"
+  Benchmarks = "Benchmark.*_9"
+
+[[Benchmarks]]
+  Name = "tidwall_tile38"
+  Repo = "github.com/tidwall/tile38/tests"
+  Benchmarks = "Benchmark"
+
+[[Benchmarks]]
+  Name = "commonmark_markdown"
+  Repo = "gitlab.com/golang-commonmark/markdown"
+  Benchmarks = "Benchmark"
+
+
+# These are the known-noisy benchmarks
+#
+# AddScaledVec10000Inc1-12  4.58µs ±19% 4.55µs ±13% 4.83µs ±12% 4.77µs ±15%
+# AddScaledVec10000Inc2-12  10.7µs ±10% 10.9µs ± 4% 10.4µs ± 8% 10.6µs ±10%
+# AddVec10000Inc1-12  4.56µs ±19% 4.54µs ±12% 4.86µs ±13% 4.78µs ±16%
+# AddVec10000Inc2-12  10.8µs ± 5% 10.9µs ± 4% 10.3µs ± 7% 10.5µs ± 7%
+# AddVec10000Inc2-12  10.8µs ± 5% 10.9µs ± 4% 10.3µs ± 7% 10.5µs ± 7%
+# BaseTest4KB-12 1.21µs ±11% 1.19µs ± 0% 2.40µs ± 0% 3.23µs ± 1%
+# CheckVersionWildcard-12 37.2ns ±11% 35.7ns ± 0% 37.1ns ± 5% 37.6ns ±12%
+# DgemmMedMedMedNTT-12  187µs ± 6%  191µs ±11%  193µs ± 8%  189µs ± 7%
+# GetObject100KbFS-12 274µs ± 3%  262µs ±14%  278µs ± 3%  282µs ± 1%
+# GetObject10KbFS-12  104µs ± 2%  94µs ±24% 105µs ± 3%  106µs ± 2%
+# GetObject10KbXL-12  5.48ms ± 4% 5.43ms ± 4% 5.48ms ± 5% 5.52ms ± 5%
+# GetObjectParallel100KbFS-12 68.1µs ± 3% 63.9µs ±18% 69.1µs ± 2% 69.7µs ± 3%
+# GetObjectParallel10KbFS-12  48.1µs ± 4% 43.5µs ±27% 48.6µs ± 2% 48.6µs ± 2%
+# GetObjectParallel10MbFS-12  931µs ±13%  862µs ±24%  929µs ± 4%  929µs ± 3%
+# GetObjectParallel1MbFS-12 203µs ± 3%  195µs ±11%  205µs ± 2%  204µs ± 2%
+# GetObjectParallel25MbFS-12  2.28ms ±28% 2.09ms ±23% 2.21ms ± 9% 2.23ms ± 6%
+# GetObjectParallel50MbFS-12  4.50ms ±33% 4.60ms ±22% 4.41ms ±12% 4.81ms ±47%
+# GetObjectParallel5MbFS-12 531µs ± 6%  496µs ±20%  528µs ± 3%  526µs ± 6%
+# GetObjectParallelVerySmallFS-12 37.3µs ±39% 34.2µs ±34% 43.0µs ± 3% 41.9µs ±11%
+# GetObjectVerySmallFS-12 70.0µs ± 3% 58.1µs ±44% 70.6µs ± 2% 70.8µs ± 3%
+# PrecompiledIdentity/128-Gas=27-12 17.3ns ± 0% 18.0ns ± 6% 17.4ns ± 1% 18.0ns ± 7%
+# Prove-12  632µs ± 7%  617µs ±10%  617µs ±10%  626µs ± 7%
+# ReplaceDivider-12 1.03µs ±13% 1.03µs ± 9% 1.06µs ±13% 1.07µs ±10%
+# ReplaceShortcodeTokens-12 2.72µs ±12% 2.62µs ± 9% 2.82µs ± 1% 2.58µs ±10%
+# ScaleVec10000Inc1-12  2.98µs ± 3% 3.00µs ± 6% 3.12µs ±12% 2.98µs ± 2%
+# ScaleVec10000Inc2-12  5.62µs ±21% 5.60µs ± 5% 5.98µs ±11% 5.88µs ±13%
+# SubVec10000Inc1-12  4.58µs ±19% 4.54µs ±11% 4.84µs ±16% 4.76µs ±15%
+# SubVec10000Inc2-12  10.8µs ±10% 10.9µs ± 5% 10.3µs ± 8% 10.5µs ± 7%
+# ValidateVersionWildcard-12  42.8ns ± 9% 41.3ns ± 6% 43.4ns ± 7% 43.1ns ± 6%
+# VerifyProof-12  12.2µs ± 7% 12.4µs ± 6% 12.4µs ± 4% 12.3µs ± 5%
+
+
diff --git a/cmd/bent/benchmarks-gc.toml b/cmd/bent/benchmarks-gc.toml
new file mode 100644
index 0000000..d83ad1b
--- /dev/null
+++ b/cmd/bent/benchmarks-gc.toml
@@ -0,0 +1,21 @@
+# All (discovered as of 2018-04-02) benchmarks that do a lot of allocation, either in size or number
+
+[[Benchmarks]]
+  Name = "ethereum_storage"
+  Repo = "github.com/ethereum/go-ethereum/swarm/storage"
+  Benchmarks = "Benchmark(Join|SplitTree)" # SplitPyramid seems to have a bug
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "ethereum_core"
+  Repo = "github.com/ethereum/go-ethereum/core"
+  Benchmarks = "Benchmark(InsertChain_ring)" # ChainRead crashes as of 1.10 on 2018-03-16
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+  Disabled = true
+
+[[Benchmarks]]
+  Name = "minio"
+  Repo = "github.com/minio/minio/cmd"
+  Tests = "none" # Don't run these tests; they hang, etc.
+  Benchmarks = "BenchmarkGetObject.*Mb" # not Get|Put|List
+  Disabled = true
diff --git a/cmd/bent/benchmarks-gcplus.toml b/cmd/bent/benchmarks-gcplus.toml
new file mode 100644
index 0000000..acbdcb2
--- /dev/null
+++ b/cmd/bent/benchmarks-gcplus.toml
@@ -0,0 +1,37 @@
+# All (discovered as of 2018-04-02) benchmarks that do a lot of allocation, either in size or number
+
+[[Benchmarks]]
+  Name = "ethereum_storage"
+  Repo = "github.com/ethereum/go-ethereum/swarm/storage"
+  Benchmarks = "Benchmark(Join|SplitTree)_[678]" # SplitPyramid seems to have a bug
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "ethereum_core"
+  Repo = "github.com/ethereum/go-ethereum/core"
+  Benchmarks = "Benchmark(InsertChain_ring|PoolBatchInsert10000|ChainWrite)" # ChainRead crashes as of 1.10 on 2018-03-16
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+  Disabled = true
+
+[[Benchmarks]]
+  Name = "minio"
+  Repo = "github.com/minio/minio/cmd"
+  Tests = "none" # Don't run these tests; they hang, etc.
+  Benchmarks = "BenchmarkGetObject.*Mb" # not Get|Put|List
+  Disabled = true
+
+[[Benchmarks]]
+  Name = "spexs2"
+  Repo = "github.com/egonelbre/spexs2/_benchmark/"
+  Benchmarks = "BenchmarkRun"
+
+[[Benchmarks]]
+  Name = "ethereum_ethash"
+  Repo = "github.com/ethereum/go-ethereum/consensus/ethash"
+  Benchmarks = "BenchmarkCacheGeneration"
+  NotSandboxed = true # Won't cross-compile to Linux on MacOS
+
+[[Benchmarks]]
+  Name = "gonum_path"
+  Repo = "gonum.org/v1/gonum/graph/path/"
+  Benchmarks = "BenchmarkRandomGraphDominators/gnm-n=1e[567]"
diff --git a/cmd/bent/benchmarks-trial.toml b/cmd/bent/benchmarks-trial.toml
new file mode 100644
index 0000000..8844e04
--- /dev/null
+++ b/cmd/bent/benchmarks-trial.toml
@@ -0,0 +1,98 @@
+# Benchmarks that have not been vetted for builds, runs, noisiness, run length, etc.
+
+[[Benchmarks]]
+  Name = "uber_zap"
+  # Repo = "github.com/uber-go/zap/benchmarks"
+  Repo = "go.uber.org/zap/benchmarks"
+  Benchmarks = "Benchmark"
+  Disabled = true # Not building today
+
+[[Benchmarks]]
+  Name = "bindata"
+  Repo = "github.com/kevinburke/go-bindata"
+  Benchmarks = "Benchmark"
+
+# A noise-checking recent run (used to move some tests into benchmarks-50.toml)
+
+# name                                            old time/op  new time/op  delta
+# FromBytes-12                                    8.03ns ± 3%  7.64ns ± 6%   -4.86%  (p=0.000 n=23+20)
+# FromString-12                                    266ns ±11%   263ns ± 8%     ~     (p=0.213 n=21+21)
+# FromStringUrn-12                                 268ns ± 8%   262ns ± 9%     ~     (p=0.109 n=21+25)
+# FromStringWithBrackets-12                        270ns ± 7%   263ns ± 9%   -2.57%  (p=0.034 n=22+25)
+# NewV1-12                                         123ns ± 3%   119ns ± 3%   -2.73%  (p=0.000 n=21+22)
+# NewV2-12                                         118ns ± 9%   118ns ± 5%     ~     (p=0.295 n=25+23)
+# NewV3-12                                         629ns ±14%   658ns ± 7%   +4.63%  (p=0.004 n=23+23)
+# NewV4-12                                         868ns ± 8%   841ns ±12%     ~     (p=0.078 n=25+25)
+# NewV5-12                                         753ns ± 8%   675ns ±10%  -10.35%  (p=0.000 n=23+24)
+# MarshalBinary-12                                1.14ns ± 4%  0.40ns ± 8%  -64.72%  (p=0.000 n=22+25)
+# MarshalText-12                                   203ns ±16%   198ns ±24%     ~     (p=0.418 n=24+25)
+# UnmarshalBinary-12                              5.03ns ± 3%  5.10ns ± 3%   +1.44%  (p=0.000 n=23+23)
+# UnmarshalText-12                                81.0ns ± 3%  85.4ns ± 2%   +5.40%  (p=0.000 n=21+22)
+# MarshalToString-12                               147ns ±10%   140ns ±11%   -4.82%  (p=0.005 n=23+24)
+# TarjanSCCGnp_10_tenth-12                        8.90µs ± 8%  8.44µs ± 5%   -5.18%  (p=0.000 n=23+23)
+# TarjanSCCGnp_100_tenth-12                        273µs ± 8%   262µs ± 6%   -3.89%  (p=0.000 n=23+25)
+# TarjanSCCGnp_1000_tenth-12                      19.7ms ± 9%  19.3ms ± 8%     ~     (p=0.092 n=25+25)
+# TarjanSCCGnp_10_half-12                         15.6µs ± 8%  14.8µs ± 5%   -4.96%  (p=0.000 n=24+25)
+# TarjanSCCGnp_100_half-12                        1.06ms ± 7%  1.03ms ± 9%   -2.54%  (p=0.017 n=24+24)
+# TarjanSCCGnp_1000_half-12                       87.7ms ± 4%  85.3ms ± 7%   -2.73%  (p=0.000 n=22+23)
+# AStarGnp_10_tenth-12                            2.31µs ± 9%  2.08µs ± 9%   -9.90%  (p=0.000 n=25+25)
+# AStarGnp_100_tenth-12                            259µs ± 6%   252µs ± 9%   -2.68%  (p=0.006 n=24+25)
+# AStarGnp_1000_tenth-12                          11.7ms ±14%  11.5ms ±10%     ~     (p=0.407 n=25+25)
+# AStarGnp_10_half-12                             8.31µs ± 9%  7.91µs ±13%   -4.78%  (p=0.000 n=25+25)
+# AStarGnp_100_half-12                             320µs ±16%   320µs ± 9%     ~     (p=0.830 n=24+24)
+# AStarGnp_1000_half-12                           24.8ms ±16%  24.4ms ±18%     ~     (p=0.551 n=25+25)
+# AStarUndirectedmallWorld_10_2_2_2-12            30.8µs ± 6%  28.7µs ± 7%   -6.70%  (p=0.000 n=24+24)
+# AStarUndirectedmallWorld_10_2_2_2_Heur-12       15.9µs ± 7%  15.2µs ± 8%   -4.48%  (p=0.000 n=24+24)
+# AStarUndirectedmallWorld_10_2_5_2-12            61.6µs ±22%  57.1µs ±21%   -7.33%  (p=0.004 n=25+22)
+# AStarUndirectedmallWorld_10_2_5_2_Heur-12       21.5µs ±10%  20.1µs ±10%   -6.70%  (p=0.000 n=25+24)
+# AStarUndirectedmallWorld_100_5_10_2-12          1.65ms ±13%  1.61ms ±14%     ~     (p=0.058 n=24+25)
+# AStarUndirectedmallWorld_100_5_10_2_Heur-12     1.26ms ±10%  1.20ms ± 6%   -5.27%  (p=0.000 n=24+24)
+# AStarUndirectedmallWorld_100_5_20_2-12          2.24ms ±11%  2.08ms ±10%   -7.14%  (p=0.000 n=25+24)
+# AStarUndirectedmallWorld_100_5_20_2_Heur-12     1.27ms ±10%  1.21ms ±10%   -4.46%  (p=0.001 n=22+23)
+# Dominators/nested_if_n1024-12                   3.22ms ±10%  2.93ms ±13%   -8.86%  (p=0.000 n=25+25)
+# Dominators/nested_if_n128-12                     390µs ± 7%   351µs ± 8%   -9.90%  (p=0.000 n=24+25)
+# Dominators/nested_if_n16-12                     47.1µs ± 5%  43.1µs ± 5%   -8.42%  (p=0.000 n=25+25)
+# Dominators/nested_if_n2048-12                   6.60ms ± 9%  5.93ms ±11%  -10.21%  (p=0.000 n=25+25)
+# Dominators/nested_if_n256-12                     792µs ± 9%   708µs ± 6%  -10.69%  (p=0.000 n=24+23)
+# Dominators/nested_if_n32-12                     96.9µs ± 6%  86.2µs ± 7%  -11.01%  (p=0.000 n=24+25)
+# Dominators/nested_if_n512-12                    1.58ms ± 9%  1.44ms ± 9%   -9.08%  (p=0.000 n=25+25)
+# Dominators/nested_if_n64-12                      192µs ± 8%   172µs ± 8%  -10.71%  (p=0.000 n=25+25)
+# RandomGraphDominators/gnm-n=1e3-m=1e3-12        1.64ms ±10%  1.50ms ± 6%   -8.55%  (p=0.000 n=25+25)
+# RandomGraphDominators/gnm-n=1e3-m=3e3-12        1.93ms ±12%  1.72ms ± 8%  -10.75%  (p=0.000 n=25+24)
+# RandomGraphDominators/gnm-n=1e3-m=1e4-12        3.10ms ± 9%  2.90ms ± 9%   -6.28%  (p=0.000 n=25+25)
+# RandomGraphDominators/gnm-n=1e3-m=3e4-12        5.98ms ±11%  5.77ms ± 6%   -3.44%  (p=0.005 n=25+25)
+# RandomGraphDominators/gnm-n=1e4-m=1e4-12        17.3ms ±13%  15.6ms ± 5%   -9.83%  (p=0.000 n=24+24)
+# RandomGraphDominators/gnm-n=1e4-m=3e4-12        22.2ms ± 8%  21.1ms ±10%   -4.89%  (p=0.000 n=24+25)
+# RandomGraphDominators/gnm-n=1e4-m=1e5-12        39.3ms ±11%  37.8ms ± 7%   -3.82%  (p=0.000 n=24+25)
+# RandomGraphDominators/gnm-n=1e4-m=3e5-12        81.4ms ±12%  77.8ms ± 6%   -4.35%  (p=0.000 n=25+23)
+# RandomGraphDominators/gnm-n=1e5-m=1e5-12         225ms ± 6%   215ms ± 5%   -4.63%  (p=0.000 n=19+23)
+# RandomGraphDominators/gnm-n=1e5-m=3e5-12         311ms ± 5%   303ms ± 5%   -2.79%  (p=0.000 n=23+19)
+# RandomGraphDominators/gnm-n=1e5-m=1e6-12         584ms ± 3%   572ms ±11%     ~     (p=0.120 n=23+23)
+# RandomGraphDominators/gnm-n=1e5-m=3e6-12         1.29s ±10%   1.27s ± 5%   -1.85%  (p=0.022 n=25+18)
+# RandomGraphDominators/gnm-n=1e6-m=1e6-12         2.50s ± 4%   2.41s ± 5%   -3.35%  (p=0.000 n=24+25)
+# RandomGraphDominators/gnm-n=1e6-m=3e6-12         4.13s ± 3%   4.01s ± 4%   -2.75%  (p=0.000 n=24+25)
+# RandomGraphDominators/gnm-n=1e6-m=1e7-12         9.06s ± 2%   8.94s ± 1%   -1.30%  (p=0.000 n=25+24)
+# RandomGraphDominators/gnm-n=1e6-m=3e7-12         22.1s ± 1%   21.9s ± 1%   -1.15%  (p=0.000 n=22+23)
+# RandomGraphDominators/dup-n=1e3-d=0.8-a=0.1-12  1.79ms ± 9%  1.60ms ± 7%  -10.54%  (p=0.000 n=24+25)
+# RandomGraphDominators/dup-n=1e3-d=0.5-a=0.2-12  5.11ms ± 6%  4.88ms ± 8%   -4.34%  (p=0.000 n=20+23)
+# RandomGraphDominators/dup-n=1e4-d=0.8-a=0.1-12  19.4ms ±12%  17.6ms ± 5%   -9.52%  (p=0.000 n=25+22)
+# RandomGraphDominators/dup-n=1e4-d=0.5-a=0.2-12   140ms ± 7%   136ms ± 4%   -3.26%  (p=0.000 n=25+23)
+# RandomGraphDominators/dup-n=1e5-d=0.8-a=0.1-12   237ms ± 5%   222ms ± 9%   -6.38%  (p=0.000 n=21+25)
+# RandomGraphDominators/dup-n=1e5-d=0.5-a=0.2-12   6.39s ± 5%   6.30s ± 4%   -1.44%  (p=0.008 n=24+22)
+# LouvainDirectedMultiplex-12                     43.0ms ±10%  38.6ms ±33%  -10.13%  (p=0.000 n=25+23)
+# LouvainDirected-12                              38.1ms ± 8%  35.3ms ± 9%   -7.45%  (p=0.000 n=25+22)
+# LouvainMultiplex-12                             32.9ms ±13%  29.7ms ±15%   -9.73%  (p=0.000 n=24+24)
+# Louvain-12                                      28.9ms ± 7%  26.3ms ±12%   -9.07%  (p=0.000 n=23+23)
+# WalkAllBreadthFirstGnp_10_tenth-12              3.88µs ± 7%  3.43µs ± 8%  -11.67%  (p=0.000 n=24+25)
+# WalkAllBreadthFirstGnp_100_tenth-12              158µs ± 9%   151µs ± 7%   -4.80%  (p=0.000 n=24+24)
+# WalkAllBreadthFirstGnp_1000_tenth-12            12.3ms ± 9%  12.4ms ± 8%     ~     (p=0.532 n=25+24)
+# WalkAllBreadthFirstGnp_10_half-12               8.33µs ± 7%  7.94µs ± 8%   -4.71%  (p=0.000 n=24+25)
+# WalkAllBreadthFirstGnp_100_half-12               609µs ± 7%   597µs ±12%     ~     (p=0.189 n=25+25)
+# WalkAllBreadthFirstGnp_1000_half-12             58.6ms ± 7%  57.2ms ±10%     ~     (p=0.081 n=25+25)
+# WalkAllDepthFirstGnp_10_tenth-12                3.76µs ±10%  3.37µs ± 8%  -10.21%  (p=0.000 n=25+23)
+# WalkAllDepthFirstGnp_100_tenth-12                158µs ± 9%   149µs ± 9%   -5.52%  (p=0.000 n=25+25)
+# WalkAllDepthFirstGnp_1000_tenth-12              12.4ms ± 7%  12.1ms ± 4%     ~     (p=0.054 n=23+22)
+# WalkAllDepthFirstGnp_10_half-12                 8.41µs ± 6%  7.84µs ± 8%   -6.77%  (p=0.000 n=24+25)
+# WalkAllDepthFirstGnp_100_half-12                 603µs ±14%   588µs ±12%     ~     (p=0.136 n=25+25)
+# WalkAllDepthFirstGnp_1000_half-12               57.8ms ± 7%  57.2ms ±11%     ~     (p=0.476 n=25+25)
+# [Geo mean]                                       523µs        491µs        -6.11%
diff --git a/cmd/bent/benchsize b/cmd/bent/benchsize
new file mode 100755
index 0000000..5f9e382
--- /dev/null
+++ b/cmd/bent/benchsize
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+tmp=tmp-bench-size-$$
+
+x=`which gsize`
+
+if [ "x$x" = "x" ] ; then
+	size -A "$1" > $tmp
+else
+	"$x" -A "$1" > $tmp
+fi
+
+
+
+total=`grep Total $tmp | awk '{print $2}'`
+text=`egrep [^a-z]text[^a-z] $tmp | awk '{print $2}'`
+gopclntab=`grep gopclntab $tmp | awk '{print $2}'`
+rodata=`grep rodata $tmp | awk '{print $2}'`
+data=`egrep [^a-z]data[^a-z._] $tmp | awk '{print $2}'`
+
+zdebug_info=`grep zdebug_info $tmp | awk '{print $2}'`
+zdebug_loc=`grep zdebug_loc $tmp | awk '{print $2}'`
+zdebug_line=`grep zdebug_line $tmp | awk '{print $2}'`
+zdebug_ranges=`grep zdebug_ranges $tmp | awk '{print $2}'`
+zdebug_frame=`grep zdebug_frame $tmp | awk '{print $2}'`
+zdebug_abbrev=`grep zdebug_abbrev $tmp | awk '{print $2}'`
+zdebug_pubname=`grep zdebug_pubname $tmp | awk '{print $2}'`
+zdebug_pubtype=`grep zdebug_pubtype $tmp | awk '{print $2}'`
+
+zdebug_abbrev=${zdebug_abbrev:-0}
+zdebug_pubname=${zdebug_pubname:-0}
+zdebug_pubtype=${zdebug_pubtype:-0}
+
+echo "goos: $GOOS"
+echo "goarch: $GOARCH"
+echo "pkg:" # Erase any inherited pkg if files are concatenated
+echo "Benchmark${2}_total" 1 ${total} total-bytes
+echo "Benchmark${2}_text" 1 ${text} text-bytes
+echo "Benchmark${2}_data" 1 ${data} data-bytes
+echo "Benchmark${2}_rodata" 1 ${rodata} rodata-bytes
+echo "Benchmark${2}_pclntab" 1 ${gopclntab} pclntab-bytes
+
+
+zdebug=`expr ${zdebug_info} + ${zdebug_loc} + ${zdebug_line} + ${zdebug_ranges} + ${zdebug_frame} + ${zdebug_abbrev} + ${zdebug_pubname} + ${zdebug_pubtype}`
+
+echo "Benchmark${2}_zdebug_total" 1 ${zdebug} zdebug-bytes
+
+# echo "Benchmark${2}_zdebug_info" 1 ${zdebug_info} zdebugbytes
+# echo "Benchmark${2}_zdebug_loc" 1 ${zdebug_loc} zdebugbytes
+# echo "Benchmark${2}_zdebug_line" 1 ${zdebug_line} zdebugbytes
+# echo "Benchmark${2}_zdebug_ranges" 1 ${zdebug_ranges} zdebugbytes
+# echo "Benchmark${2}_zdebug_frame" 1 ${zdebug_frame} zdebugbytes
+# echo "Benchmark${2}_zdebug_pubtype" 1 ${zdebug_pubtype} zdebugbytes
+# echo "Benchmark${2}_zdebug_pubname" 1 ${zdebug_pubname} zdebugbytes
+
+rm $tmp
diff --git a/cmd/bent/benchtime b/cmd/bent/benchtime
new file mode 100755
index 0000000..38ab8f2
--- /dev/null
+++ b/cmd/bent/benchtime
@@ -0,0 +1,7 @@
+#!/bin/bash
+# Run args as command, but with a benchtime parameter
+
+bt="$1"
+shift
+
+"$@" -test.benchtime="$bt"
diff --git a/cmd/bent/bent.go b/cmd/bent/bent.go
new file mode 100644
index 0000000..106bf72
--- /dev/null
+++ b/cmd/bent/bent.go
@@ -0,0 +1,1540 @@
+// Copyright 2019 The Go 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 main
+
+import (
+	"bufio"
+	"bytes"
+	"flag"
+	"fmt"
+	"io"
+	"io/ioutil"
+	"math/rand"
+	"os"
+	"os/exec"
+	"path/filepath"
+	"runtime"
+	"strconv"
+	"strings"
+	"sync"
+	"time"
+
+	"github.com/BurntSushi/toml"
+)
+
+type BenchStat struct {
+	Name                        string
+	RealTime, UserTime, SysTime int64 // nanoseconds, -1 if missing.
+}
+
+type Configuration struct {
+	Name        string   // Short name used for binary names, mention on command line
+	Root        string   // Specific Go root to use for this trial
+	BuildFlags  []string // BuildFlags supplied to 'go test -c' for building (e.g., "-p 1")
+	AfterBuild  []string // Array of commands to run, output of all commands for a configuration (across binaries) is collected in <runstamp>.<config>.<cmd>
+	GcFlags     string   // GcFlags supplied to 'go test -c' for building
+	GcEnv       []string // Environment variables supplied to 'go test -c' for building
+	RunFlags    []string // Extra flags passed to the test binary
+	RunEnv      []string // Extra environment variables passed to the test binary
+	RunWrapper  []string // (Outermost) Command and args to precede whatever the operation is; may fail in the sandbox.
+	Disabled    bool     // True if this configuration is temporarily disabled
+	buildStats  []BenchStat
+	benchWriter *os.File
+	rootCopy    string // The contents of GOROOT are copied here to allow benchmarking of just the test compilation.
+}
+
+type Benchmark struct {
+	Name       string   // Short name for benchmark/test
+	Contact    string   // Contact not used, but may be present in description
+	Repo       string   // Repo + subdir where test resides, used for "go get -t -d ..."
+	Tests      string   // Tests to run (regex for -test.run= )
+	Benchmarks string   // Benchmarks to run (regex for -test.bench= )
+	GcEnv      []string // Environment variables supplied to 'go test -c' for building, getting
+	BuildFlags []string // Flags for building test (e.g., -tags purego)
+	RunWrapper []string // (Inner) Command and args to precede whatever the operation is; may fail in the sandbox.
+	// e.g. benchmark may run as ConfigWrapper ConfigArg BenchWrapper BenchArg ActualBenchmark
+	NotSandboxed bool // True if this benchmark cannot or should not be run in a container.
+	Disabled     bool // True if this benchmark is temporarily disabled.
+}
+
+type Todo struct {
+	Benchmarks     []Benchmark
+	Configurations []Configuration
+}
+
+// The length of the path to the root of the git repo, inclusive.
+// For example, github.com/dr2chase/bent <--- bent is the repo.
+var pathLengths = map[string]int{
+	"github.com":    3,
+	"gitlab.com":    3,
+	"zombiezen.com": 3,
+	"gonum.org":     3,
+	"k8s.io":        2,
+	"go.uber.org":   2,
+}
+
+var verbose int
+
+var benchFile = "benchmarks-50.toml"         // default list of benchmarks
+var confFile = "configurations.toml"         // default list of configurations
+var testBinDir = "testbin"                   // destination for generated binaries
+var benchDir = "bench"                       // destination for benchmark outputs
+var srcPath = "src/github.com/dr2chase/bent" // Used to find configuration files.
+var container = ""
+var N = 1
+var list = false
+var initialize = false
+var test = false
+var force = false
+var noSandbox = false
+var requireSandbox = false
+var getOnly = false
+var runContainer = "" // if nonempty, skip builds and use existing named container (or binaries if -U )
+var wikiTable = false // emit the tests in a form usable in a wiki table
+var explicitAll = 0   // Include "-a" on "go test -c" test build ; repeating flag causes multiple rebuilds, useful for build benchmarking.
+var shuffle = 2       // Dimensionality of (build) shuffling; 0 = none, 1 = per-benchmark, configuration ordering, 2 = bench, config pairs, 3 = across repetitions.
+
+var copyExes = []string{
+	"foo", "memprofile", "cpuprofile", "tmpclr", "benchtime", "benchsize", "benchdwarf", "cronjob.sh", "cmpjob.sh", "cmpcl.sh", "cmpcl-phase.sh", "tweet-results",
+}
+
+var copyConfigs = []string{
+	"benchmarks-all.toml", "benchmarks-50.toml", "benchmarks-gc.toml", "benchmarks-gcplus.toml", "benchmarks-trial.toml",
+	"configurations-sample.toml", "configurations-gollvm.toml", "configurations-cronjob.toml", "configurations-cmpjob.toml",
+}
+
+var defaultEnv []string
+
+type pair struct {
+	b, c int
+}
+type triple struct {
+	b, c, k int
+}
+
+// To disambiguate repeated test runs in the same directory.
+var runstamp = strings.Replace(strings.Replace(time.Now().Format("2006-01-02T15:04:05"), "-", "", -1), ":", "", -1)
+
+func cleanup(gopath string) {
+	if verbose > 0 {
+		fmt.Printf("chmod -R u+w %s\n", gopath+"/pkg")
+	}
+	// Necessary to make directories writeable with new module stuff.
+	filepath.Walk(gopath+"/pkg", func(path string, info os.FileInfo, err error) error {
+		if path != "" && info != nil {
+			if mode := info.Mode(); 0 == mode&os.ModeSymlink {
+				err := os.Chmod(path, 0200|mode)
+				if err != nil {
+					panic(err)
+				}
+			}
+		}
+		return nil
+	})
+	if verbose > 0 {
+		fmt.Printf("rm -rf %s %s\n", gopath+"/pkg", gopath+"/bin")
+	}
+	os.RemoveAll(gopath + "/pkg")
+	os.RemoveAll(gopath + "/bin")
+}
+
+func main() {
+
+	var benchmarksString, configurationsString, stampLog string
+
+	flag.IntVar(&N, "N", N, "benchmark/test repeat count")
+
+	flag.Var((*count)(&explicitAll), "a", "add '-a' flag to 'go test -c' to demand full recompile. Repeat or assign a value for repeat builds for benchmarking")
+	flag.IntVar(&shuffle, "s", shuffle, "dimensionality of (build) shuffling (0-3), 0 = none, 1 = per-benchmark, configuration ordering, 2 = bench, config pairs, 3 = across repetitions.")
+
+	flag.StringVar(&benchmarksString, "b", "", "comma-separated list of test/benchmark names (default is all)")
+	flag.StringVar(&benchFile, "B", benchFile, "name of file describing benchmarks")
+
+	flag.StringVar(&configurationsString, "c", "", "comma-separated list of test/benchmark configurations (default is all)")
+	flag.StringVar(&confFile, "C", confFile, "name of file describing configurations")
+
+	flag.BoolVar(&noSandbox, "U", noSandbox, "run all commands unsandboxed")
+	flag.BoolVar(&requireSandbox, "S", requireSandbox, "exclude unsandboxable tests/benchmarks")
+
+	flag.BoolVar(&getOnly, "g", getOnly, "get tests/benchmarks and dependencies, do not build or run")
+	flag.StringVar(&runContainer, "r", runContainer, "skip get and build, go directly to run, using specified container (any non-empty string will do for unsandboxed execution)")
+
+	flag.StringVar(&stampLog, "L", stampLog, "name of log file to which runstamps are appended")
+
+	flag.BoolVar(&list, "l", list, "list available benchmarks and configurations, then exit")
+	flag.BoolVar(&force, "f", force, "force run past some of the consistency checks (gopath/{pkg,bin} in particular)")
+	flag.BoolVar(&initialize, "I", initialize, "initialize a directory for running tests ((re)creates Dockerfile, (re)copies in benchmark and configuration files)")
+	flag.BoolVar(&test, "T", test, "run tests instead of benchmarks")
+
+	flag.BoolVar(&wikiTable, "W", wikiTable, "print benchmark info for a wiki table")
+
+	flag.Var((*count)(&verbose), "v", "print commands and other information (more -v = print more details)")
+
+	flag.Usage = func() {
+		fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
+		flag.PrintDefaults()
+		fmt.Fprintf(os.Stderr,
+			`
+%s obtains the benchmarks/tests listed in %s and compiles
+and runs them according to the flags and environment
+variables supplied in %s. Specifying "-a" will pass "-a" to
+test compilations, but normally this should not be needed
+and only slows down builds; -a with a number that is not 1
+can be used for benchmarking builds of the tests themselves.
+(Don't forget to specify "all=..." for GCFLAGS if you want
+those applied to the entire build.)
+
+Both of these files can be changed with the -B and -C flags; the full
+suite of benchmarks in benchmarks-all.toml is somewhat time-consuming.
+
+Running with the -l flag will list all the available tests and benchmarks
+for the given benchmark and configuration files.
+
+By default the compiled tests are run in a docker container to reduce
+the chances for accidents and mischief. -U requests running tests
+unsandboxed, and -S limits the tests run to those that can be sandboxed
+(some cannot be because of cross-compilation issues; this may imply no
+change on platforms where the Docker container is not cross-compiled)
+
+By default benchmarks are run, not tests.  -T runs tests instead
+
+This command expects to be run in a directory that does not contain
+subdirectories "gopath/pkg" and "gopath/bin", because those subdirectories
+may be created (and deleted) in the process of compiling the benchmarks.
+The same is true of subdirectory "goroots".
+It will also extensively modify subdirectory "gopath/src".
+
+All the test binaries will appear in the subdirectory 'testbin',
+and test (benchmark) output will appear in the subdirectory 'bench'
+with the suffix '.stdout'.  The test output is grouped by configuration
+to allow easy benchmark comparisons with benchstat.  Other benchmarking
+results will also appear in 'bench'.
+`, os.Args[0], benchFile, confFile)
+	}
+
+	flag.Parse()
+
+	cwd, err := os.Getwd()
+	if err != nil {
+		fmt.Printf("Could not get current working directory %v\n", err)
+		os.Exit(1)
+		return
+	}
+	gopath := cwd + "/gopath"
+	err = os.Mkdir(gopath, 0775)
+
+	// To avoid bad surprises, look for pkg and bin, if they exist, refuse to run
+	_, derr := os.Stat("Dockerfile")
+	_, perr := os.Stat("gopath/pkg")
+	_, berr := os.Stat("gopath/bin")
+	_, serr := os.Stat("gopath/src") // existence of src prevents initialization of Dockerfile
+
+	if perr == nil || berr == nil {
+		if !force {
+			fmt.Printf("Building/running tests will trash gopath/pkg and gopath/bin, please remove, rename or run in another directory, or use -f to force.\n")
+			os.Exit(1)
+		}
+		fmt.Printf("Building/running tests will trash gopath/pkg and gopath/bin, but force, so removing.\n")
+		cleanup("gopath")
+	}
+	if derr != nil && !initialize {
+		// Missing Dockerfile
+		fmt.Printf("Missing 'Dockerfile', please rerun with -I (initialize) flag if you intend to use this directory.\n")
+		os.Exit(1)
+	}
+
+	if shuffle < 0 || shuffle > 3 {
+		fmt.Printf("Shuffle value (-s) ought to be between 0 and 3, inclusive, instead is %d\n", shuffle)
+		os.Exit(1)
+	}
+
+	// Create directory that will contain GOROOT for each configuration.
+	goroots := cwd + "/goroots"
+	err = os.Mkdir(goroots, 0775)
+
+	// Initialize the directory, copying in default benchmarks and sample configurations, and creating a Dockerfile
+	if initialize {
+		anyerr := false
+		if serr == nil {
+			fmt.Printf("It looks like you've already initialized this directory, remove ./gopath if you want to reinit.\n")
+			anyerr = true
+		}
+		if anyerr {
+			os.Exit(1)
+		}
+		for _, s := range copyExes {
+			copyAsset(s)
+			os.Chmod(s, 0755)
+		}
+		for _, s := range copyConfigs {
+			copyAsset(s)
+		}
+
+		err := ioutil.WriteFile("Dockerfile",
+			[]byte(`
+FROM ubuntu
+ADD . /
+`), 0664)
+		if err != nil {
+			fmt.Printf("There was an error creating %s: %v\n", "Dockerfile", err)
+			os.Exit(1)
+			return
+		}
+		fmt.Printf("Created Dockerfile\n")
+		return
+	}
+
+	todo := &Todo{}
+	blobB, err := ioutil.ReadFile(benchFile)
+	if err != nil {
+		fmt.Printf("There was an error opening or reading file %s: %v\n", benchFile, err)
+		os.Exit(1)
+		return
+	}
+	blobC, err := ioutil.ReadFile(confFile)
+	if err != nil {
+		fmt.Printf("There was an error opening or reading file %s: %v\n", confFile, err)
+		os.Exit(1)
+		return
+	}
+	blob := append(blobB, blobC...)
+	err = toml.Unmarshal(blob, todo)
+	if err != nil {
+		fmt.Printf("There was an error unmarshalling %s: %v\n", string(blob), err)
+		os.Exit(1)
+		return
+	}
+
+	var moreArgs []string
+	if flag.NArg() > 0 {
+		for i, arg := range flag.Args() {
+			if i == 0 && (arg == "-" || arg == "--") {
+				continue
+			}
+			moreArgs = append(moreArgs, arg)
+		}
+	}
+
+	benchmarks := csToSet(benchmarksString)
+	configurations := csToSet(configurationsString)
+
+	if wikiTable {
+		for _, bench := range todo.Benchmarks {
+			s := bench.Benchmarks
+			s = strings.Replace(s, "|", "\\|", -1)
+			fmt.Printf(" | %s | | `%s` | `%s` | |\n", bench.Name, bench.Repo, s)
+		}
+		return
+	}
+
+	// Normalize configuration goroot names by ensuring they end in '/'
+	// Process command-line-specified configurations.
+	// Expand environment variables mentioned there.
+	duplicates := make(map[string]bool)
+	for i, trial := range todo.Configurations {
+		trial.Name = os.ExpandEnv(trial.Name)
+		todo.Configurations[i].Name = trial.Name
+		if duplicates[trial.Name] {
+			if trial.Name == todo.Configurations[i].Name {
+				fmt.Printf("Saw duplicate configuration %s at index %d\n", trial.Name, i)
+			} else {
+				fmt.Printf("Saw duplicate configuration %s (originally %s) at index %d\n", trial.Name, todo.Configurations[i].Name, i)
+			}
+			os.Exit(1)
+		}
+		duplicates[trial.Name] = true
+		if configurations != nil {
+			_, present := configurations[trial.Name]
+			todo.Configurations[i].Disabled = !present
+			if present {
+				configurations[trial.Name] = false
+			}
+		}
+		root := trial.Root
+		if root != "" {
+			root = os.ExpandEnv(root)
+			if '/' != root[len(root)-1] {
+				root = root + "/"
+			}
+			todo.Configurations[i].Root = root
+		}
+		for j, s := range trial.GcEnv {
+			trial.GcEnv[j] = os.ExpandEnv(s)
+		}
+		for j, s := range trial.RunEnv {
+			trial.RunEnv[j] = os.ExpandEnv(s)
+		}
+		todo.Configurations[i].GcFlags = os.ExpandEnv(trial.GcFlags)
+		for j, s := range trial.RunFlags {
+			trial.RunFlags[j] = os.ExpandEnv(s)
+		}
+		for j, s := range trial.RunWrapper {
+			trial.RunWrapper[j] = os.ExpandEnv(s)
+		}
+	}
+	for b, v := range configurations {
+		if v {
+			fmt.Printf("Configuration %s listed after -c does not appear in %s\n", b, confFile)
+			os.Exit(1)
+		}
+	}
+
+	// Normalize benchmark names by removing any trailing '/'.
+	// Normalize Test and Benchmark specs by replacing missing value with something that won't match anything.
+	// Process command-line-specified benchmarks
+	duplicates = make(map[string]bool)
+	for i, bench := range todo.Benchmarks {
+
+		if duplicates[bench.Name] {
+			fmt.Printf("Saw duplicate benchmark %s at index %d\n", bench.Name, i)
+			os.Exit(1)
+		}
+		duplicates[bench.Name] = true
+
+		if benchmarks != nil {
+			_, present := benchmarks[bench.Name]
+			todo.Benchmarks[i].Disabled = !present
+			if present {
+				benchmarks[bench.Name] = false
+			}
+		}
+		for j, s := range bench.GcEnv {
+			bench.GcEnv[j] = os.ExpandEnv(s)
+		}
+		// Trim possible trailing slash, do not want
+		if '/' == bench.Repo[len(bench.Repo)-1] {
+			bench.Repo = bench.Repo[:len(bench.Repo)-1]
+			todo.Benchmarks[i].Repo = bench.Repo
+		}
+		if "" == bench.Tests || !test {
+			if !test {
+				todo.Benchmarks[i].Tests = "none"
+			} else {
+				todo.Benchmarks[i].Tests = "Test"
+			}
+		}
+		if "" == bench.Benchmarks || test {
+			if !test {
+				todo.Benchmarks[i].Benchmarks = "Benchmark"
+			} else {
+				todo.Benchmarks[i].Benchmarks = "none"
+			}
+		}
+		if noSandbox {
+			todo.Benchmarks[i].NotSandboxed = true
+		}
+		if requireSandbox && todo.Benchmarks[i].NotSandboxed {
+			if runtime.GOOS == "linux" {
+				fmt.Printf("Removing sandbox for %s\n", bench.Name)
+				todo.Benchmarks[i].NotSandboxed = false
+			} else {
+				fmt.Printf("Disabling %s because it requires sandbox\n", bench.Name)
+				todo.Benchmarks[i].Disabled = true
+			}
+		}
+	}
+	for b, v := range benchmarks {
+		if v {
+			fmt.Printf("Benchmark %s listed after -b does not appear in %s\n", b, benchFile)
+			os.Exit(1)
+		}
+	}
+
+	// If more verbose, print the normalized configuration.
+	if verbose > 1 {
+		buf := new(bytes.Buffer)
+		if err := toml.NewEncoder(buf).Encode(todo); err != nil {
+			fmt.Printf("There was an error encoding %v: %v\n", todo, err)
+			os.Exit(1)
+		}
+		fmt.Println(buf.String())
+	}
+
+	if list {
+		fmt.Println("Benchmarks:")
+		for _, x := range todo.Benchmarks {
+			s := x.Name + " (repo=" + x.Repo + ")"
+			if x.Disabled {
+				s += " (disabled)"
+			}
+			fmt.Printf("   %s\n", s)
+		}
+		fmt.Println("Configurations:")
+		for _, x := range todo.Configurations {
+			s := x.Name
+			if x.Root != "" {
+				s += " (goroot=" + x.Root + ")"
+			}
+			if x.Disabled {
+				s += " (disabled)"
+			}
+			fmt.Printf("   %s\n", s)
+		}
+		return
+	}
+
+	if stampLog != "" {
+		f, err := os.OpenFile(stampLog, os.O_WRONLY|os.O_APPEND|os.O_CREATE, os.ModePerm)
+		if err != nil {
+			fmt.Printf("There was an error opening %s for output, error %v\n", stampLog, err)
+			os.Exit(2)
+		}
+		fmt.Fprintf(f, "%s\t%v\n", runstamp, os.Args)
+		f.Close()
+	}
+
+	defaultEnv = inheritEnv(defaultEnv, "PATH")
+	defaultEnv = inheritEnv(defaultEnv, "USER")
+	defaultEnv = inheritEnv(defaultEnv, "HOME")
+	defaultEnv = inheritEnv(defaultEnv, "SHELL")
+	for _, e := range os.Environ() {
+		if strings.HasPrefix(e, "GO") {
+			defaultEnv = append(defaultEnv, e)
+		}
+	}
+	defaultEnv = replaceEnv(defaultEnv, "GOPATH", gopath)
+	defaultEnv = replaceEnv(defaultEnv, "GOOS", runtime.GOOS)
+	defaultEnv = replaceEnv(defaultEnv, "GOARCH", runtime.GOARCH)
+	defaultEnv = ifMissingAddEnv(defaultEnv, "GO111MODULE", "auto")
+
+	var needSandbox bool    // true if any benchmark needs a sandbox
+	var needNotSandbox bool // true if any benchmark needs to be not sandboxed
+
+	var getAndBuildFailures []string
+
+	err = os.Mkdir(testBinDir, 0775)
+	err = os.Mkdir(benchDir, 0775)
+	// Ignore the error -- TODO note the difference between exists already and other errors.
+
+	for i, config := range todo.Configurations {
+		if !config.Disabled { // Don't overwrite if something was disabled.
+			s := config.thingBenchName("stdout")
+			f, err := os.OpenFile(s, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.ModePerm)
+			if err != nil {
+				fmt.Printf("There was an error opening %s for output, error %v\n", s, err)
+				os.Exit(2)
+			}
+			todo.Configurations[i].benchWriter = f
+		}
+	}
+
+	// It is possible to request repeated builds for compiler/linker benchmarking.
+	// Normal (non-negative build count) varies configuration most frequently,
+	// then benchmark, then repeats the process N times (innerBuildCount = 1).
+	// If build count is negative, the configuration varies least frequently,
+	// and each benchmark is built buildCount (innerBuildCount) times before
+	// moving on to the next. (This tends to focus intermittent benchmarking
+	// noise on single configuration-benchmark combos.  This is the "old way".
+	buildCount := explicitAll
+	if buildCount < 0 {
+		buildCount = -buildCount
+	}
+	if buildCount == 0 {
+		buildCount = 1
+	}
+
+	if runContainer == "" { // If not reusing binaries/container...
+		if verbose == 0 {
+			fmt.Print("Go getting")
+		}
+
+		// Obtain (go get -d -t -v bench.Repo) all benchmarks, once, populating src
+		for i, bench := range todo.Benchmarks {
+			if bench.Disabled {
+				continue
+			}
+			getBuildEnv := replaceEnvs(defaultEnv, bench.GcEnv)
+
+			cmd := exec.Command("go", "get", "-d", "-t", "-v", bench.Repo)
+			cmd.Env = getBuildEnv
+
+			if !bench.NotSandboxed { // Do this so that OS-dependent dependencies are done correctly.
+				cmd.Env = replaceEnv(cmd.Env, "GOOS", "linux")
+			}
+			if verbose > 0 {
+				fmt.Println(asCommandLine(cwd, cmd))
+			} else {
+				fmt.Print(".")
+			}
+			_, err := cmd.Output()
+			if err != nil {
+				ee := err.(*exec.ExitError)
+				s := fmt.Sprintf("There was an error running 'go get', stderr = %s", ee.Stderr)
+				fmt.Println(s + "DISABLING benchmark " + bench.Name)
+				getAndBuildFailures = append(getAndBuildFailures, s+"("+bench.Name+")\n")
+				todo.Benchmarks[i].Disabled = true
+				continue
+			}
+
+			// Ensure testdir exists -- if modules are enabled, it does not.
+			// This involves invoking git to make it appear.
+			testdir := gopath + "/src/" + bench.Repo
+			_, terr := os.Stat(testdir)
+			if terr != nil { // Assume missing directory is the cause of the error.
+				parts := strings.Split(bench.Repo, "/")
+				root := parts[0]
+				repoAt := pathLengths[root] - 1
+				if repoAt < 1 || repoAt >= len(parts) {
+					s := fmt.Sprintf("repoAt=%d was not a valid index for %v", repoAt, parts)
+					fmt.Println(s + "DISABLING benchmark " + bench.Name)
+					getAndBuildFailures = append(getAndBuildFailures, s+"("+bench.Name+")\n")
+					todo.Benchmarks[i].Disabled = true
+					continue
+				}
+				dirToMake := gopath + "/src/" + strings.Join(parts[:repoAt], "/")
+				repoToGet := strings.Join(parts[:repoAt+1], "/")
+				if verbose > 0 {
+					fmt.Printf("mkdir -p %s\n", dirToMake)
+				}
+				err := os.MkdirAll(dirToMake, 0777)
+				if err != nil {
+					s := fmt.Sprintf("could not os.MkdirAll(%s), err = %v", dirToMake, err)
+					fmt.Println(s + "DISABLING benchmark " + bench.Name)
+					getAndBuildFailures = append(getAndBuildFailures, s+"("+bench.Name+")\n")
+					todo.Benchmarks[i].Disabled = true
+					continue
+				}
+
+				cmd = exec.Command("git", "clone", "https://"+repoToGet)
+				cmd.Env = defaultEnv
+				cmd.Dir = dirToMake
+				if verbose > 0 {
+					fmt.Println(asCommandLine(cwd, cmd))
+				} else {
+					fmt.Print(".")
+				}
+				_, err = cmd.Output()
+				if err != nil {
+					ee := err.(*exec.ExitError)
+					s := fmt.Sprintf("There was an error running 'git clone', stderr = %s", ee.Stderr)
+					fmt.Println(s + "DISABLING benchmark " + bench.Name)
+					getAndBuildFailures = append(getAndBuildFailures, s+"("+bench.Name+")\n")
+					todo.Benchmarks[i].Disabled = true
+					continue
+				}
+				// This next bit often doesn't work, because reasons.
+				// There is probably an algorithm for the right place to run go mod init/tidy,
+				// but I don't know it and the two simple ones I tried didn't work.
+
+				// repoDir :=  gopath + "/src/" + strings.Join(parts[:repoAt+1],"/")
+
+				// // Try a go mod init.
+				// cmd = exec.Command("go", "mod", "init")
+				// cmd.Env = getBuildEnv
+				// cmd.Dir = repoDir
+				// if verbose > 0 {
+				// 	fmt.Println(asCommandLine(cwd, cmd))
+				// } else {
+				// 	fmt.Print(".")
+				// }
+				// _, err = cmd.Output()
+				// if err != nil {
+				// 	ee := err.(*exec.ExitError)
+				// 	fmt.Printf("go mod init returned %s but that is normal if go.mod already exists\n", ee.Stderr)
+				// } else {
+				// 	// Try a go mod tidy.
+				// 	cmd = exec.Command("go", "mod", "tidy")
+				// 	cmd.Env = getBuildEnv
+				// 	cmd.Dir = repoDir
+				// 	if verbose > 0 {
+				// 		fmt.Println(asCommandLine(cwd, cmd))
+				// 	} else {
+				// 		fmt.Print(".")
+				// 	}
+				// 	_, err = cmd.Output()
+				// 	if err != nil {
+				// 		ee := err.(*exec.ExitError)
+				// 		s := fmt.Sprintf("There was an error running 'git clone', stderr = %s", ee.Stderr)
+				// 		fmt.Println(s + "DISABLING benchmark " + bench.Name)
+				// 		getAndBuildFailures = append(getAndBuildFailures, s+"("+bench.Name+")\n")
+				// 		todo.Benchmarks[i].Disabled = true
+				// 		continue
+				// 	}
+				// }
+			}
+
+			needSandbox = !bench.NotSandboxed || needSandbox
+			needNotSandbox = bench.NotSandboxed || needNotSandbox
+		}
+		if verbose == 0 {
+			fmt.Println()
+		}
+
+		if getOnly {
+			return
+		}
+
+		// Create build-related benchmark files
+		for ci := range todo.Configurations {
+			todo.Configurations[ci].createFilesForLater()
+		}
+
+		// Compile tests and move to ./testbin/Bench_Config.
+		// If any test needs sandboxing, then one docker container will be created
+		// (that contains all the tests).
+
+		if verbose == 0 {
+			fmt.Print("Building goroots")
+		}
+
+		// First for each configuration, get the compiler and library and install it in its own GOROOT.
+		for ci, config := range todo.Configurations {
+			if config.Disabled {
+				continue
+			}
+
+			root := config.Root
+
+			rootCopy := goroots + "/" + config.Name + "/"
+			if verbose > 0 {
+				fmt.Printf("rm -rf %s\n", rootCopy)
+			}
+			os.RemoveAll(rootCopy)
+			config.rootCopy = rootCopy
+			todo.Configurations[ci] = config
+
+			docopy := func(from, to string) {
+				mkdir := exec.Command("mkdir", "-p", to)
+				s, _ := config.runBinary("", mkdir, false)
+				if s != "" {
+					fmt.Println("Error creating directory, ", to)
+					config.Disabled = true
+				}
+
+				cp := exec.Command("rsync", "-a", from+"/", to)
+				s, _ = config.runBinary("", cp, false)
+				if s != "" {
+					fmt.Println("Error copying directory tree, ", from, to)
+					// Not disabling because gollvm uses a different directory structure
+				}
+			}
+
+			docopy(root+"bin", rootCopy+"bin")
+			docopy(root+"src", rootCopy+"src")
+			docopy(root+"pkg", rootCopy+"pkg")
+			// docopy(root +"vendor", rootCopy + "vendor")
+
+			gocmd := config.goCommandCopy()
+
+			buildLibrary := func(withAltOS bool) {
+				if withAltOS && runtime.GOOS == "linux" {
+					return // The alternate OS is linux
+				}
+				cmd := exec.Command(gocmd, "install", "-a")
+				cmd.Args = append(cmd.Args, config.BuildFlags...)
+				if config.GcFlags != "" {
+					cmd.Args = append(cmd.Args, "-gcflags="+config.GcFlags)
+				}
+				cmd.Args = append(cmd.Args, "std")
+				cmd.Env = defaultEnv
+				if withAltOS {
+					cmd.Env = replaceEnv(cmd.Env, "GOOS", "linux")
+				}
+				if rootCopy != "" {
+					cmd.Env = replaceEnv(cmd.Env, "GOROOT", rootCopy)
+				}
+				cmd.Env = replaceEnvs(cmd.Env, config.GcEnv)
+
+				s, _ := config.runBinary("", cmd, true)
+				if s != "" {
+					fmt.Println("Error running go install std, ", s)
+					config.Disabled = true
+				}
+			}
+
+			// Prebuild the library for this configuration unless -a=1
+			if explicitAll != 1 {
+				if needSandbox {
+					buildLibrary(true)
+				}
+				if needNotSandbox {
+					buildLibrary(false)
+				}
+			}
+			todo.Configurations[ci] = config
+			if config.Disabled {
+				continue
+			}
+		}
+
+		if verbose == 0 {
+			fmt.Print("\nCompiling")
+		}
+
+		switch shuffle {
+		case 0: // N times, for each benchmark, for each configuration, build.
+			for yyy := 0; yyy < buildCount; yyy++ {
+				for bi, bench := range todo.Benchmarks {
+					if bench.Disabled {
+						continue
+					}
+					for ci, config := range todo.Configurations {
+						if config.Disabled {
+							continue
+						}
+						s := todo.Configurations[ci].compileOne(&todo.Benchmarks[bi], cwd, yyy)
+						if s != "" {
+							getAndBuildFailures = append(getAndBuildFailures, s)
+						}
+					}
+				}
+			}
+		case 1: // N times, for each benchmark, shuffle configurations and build with
+			permute := make([]int, len(todo.Configurations))
+			for ci, _ := range todo.Configurations {
+				permute[ci] = ci
+			}
+
+			for yyy := 0; yyy < buildCount; yyy++ {
+				for bi, bench := range todo.Benchmarks {
+					if bench.Disabled {
+						continue
+					}
+
+					rand.Shuffle(len(permute), func(i, j int) { permute[i], permute[j] = permute[j], permute[i] })
+
+					for ci := range todo.Configurations {
+						config := &todo.Configurations[permute[ci]]
+						if config.Disabled {
+							continue
+						}
+						s := config.compileOne(&todo.Benchmarks[bi], cwd, yyy)
+						if s != "" {
+							getAndBuildFailures = append(getAndBuildFailures, s)
+						}
+					}
+				}
+			}
+		case 2: // N times, shuffle combination of benchmarks and configuration, build them all
+			permute := make([]pair, len(todo.Configurations)*len(todo.Benchmarks))
+			i := 0
+			for bi := range todo.Benchmarks {
+				for ci := range todo.Configurations {
+					permute[i] = pair{b: bi, c: ci}
+					i++
+				}
+			}
+
+			for yyy := 0; yyy < buildCount; yyy++ {
+				rand.Shuffle(len(permute), func(i, j int) { permute[i], permute[j] = permute[j], permute[i] })
+				for _, p := range permute {
+					bench := &todo.Benchmarks[p.b]
+					config := &todo.Configurations[p.c]
+					if bench.Disabled || config.Disabled {
+						continue
+					}
+					s := config.compileOne(bench, cwd, yyy)
+					if s != "" {
+						getAndBuildFailures = append(getAndBuildFailures, s)
+					}
+				}
+			}
+
+		case 3: // Shuffle all the N copies of all the benchmark and configuration pairs, build them all.
+			permute := make([]triple, buildCount*len(todo.Configurations)*len(todo.Benchmarks))
+			i := 0
+			for k := 0; k < buildCount; k++ {
+				for bi := range todo.Benchmarks {
+					for ci := range todo.Configurations {
+						permute[i] = triple{b: bi, c: ci, k: k}
+						i++
+					}
+				}
+			}
+			rand.Shuffle(len(permute), func(i, j int) { permute[i], permute[j] = permute[j], permute[i] })
+
+			for _, p := range permute {
+				bench := &todo.Benchmarks[p.b]
+				config := &todo.Configurations[p.c]
+				if bench.Disabled || config.Disabled {
+					continue
+				}
+				s := config.compileOne(bench, cwd, p.k)
+				if s != "" {
+					getAndBuildFailures = append(getAndBuildFailures, s)
+				}
+			}
+		}
+
+		if verbose == 0 {
+			fmt.Println()
+		}
+
+		// As needed, create the sandbox.
+		if needSandbox {
+			if verbose == 0 {
+				fmt.Print("Making sandbox")
+			}
+			cmd := exec.Command("docker", "build", "-q", ".")
+			if verbose > 0 {
+				fmt.Println(asCommandLine(cwd, cmd))
+			}
+			// capture standard output to get container name
+			output, err := cmd.Output()
+			if err != nil {
+				ee := err.(*exec.ExitError)
+				fmt.Printf("There was an error running 'docker build', stderr = %s\n", ee.Stderr)
+				os.Exit(2)
+				return
+			}
+			container = strings.TrimSpace(string(output))
+			if verbose == 0 {
+				fmt.Println()
+			}
+			fmt.Printf("Container for sandboxed bench/test runs is %s\n", container)
+		}
+	} else {
+		container = runContainer
+		if getOnly { // -r -g is a bit of a no-op, but that's what it implies.
+			return
+		}
+	}
+
+	var failures []string
+
+	// If there's a bad error running one of the benchmarks, report what we've got, please.
+	defer func(t *Todo) {
+		for _, config := range todo.Configurations {
+			if !config.Disabled { // Don't overwrite if something was disabled.
+				config.benchWriter.Close()
+			}
+		}
+		if needSandbox {
+			// Print this a second time so it doesn't get missed.
+			fmt.Printf("Container for sandboxed bench/test runs is %s\n", container)
+		}
+		if len(failures) > 0 {
+			fmt.Println("FAILURES:")
+			for _, f := range failures {
+				fmt.Println(f)
+			}
+		}
+		if len(getAndBuildFailures) > 0 {
+			fmt.Println("Get and build failures:")
+			for _, f := range getAndBuildFailures {
+				fmt.Println(f)
+			}
+		}
+	}(todo)
+
+	maxrc := 0
+
+	// N repetitions for each configurationm, run all the benchmarks.
+	// TODO randomize the benchmarks and configurations, like for builds.
+	for i := 0; i < N; i++ {
+		// For each configuration, run all the benchmarks.
+		for j, config := range todo.Configurations {
+			if config.Disabled {
+				continue
+			}
+
+			for _, b := range todo.Benchmarks {
+				if b.Disabled {
+					continue
+				}
+
+				root := config.Root
+
+				wrapperPrefix := "/"
+				if b.NotSandboxed {
+					wrapperPrefix = cwd + "/"
+				}
+				wrapperFor := func(s []string) string {
+					x := ""
+					if len(s) > 0 {
+						// If not an explicit path, then make it an explicit path
+						x = s[0]
+						if x[0] != '/' {
+							x = wrapperPrefix + x
+						}
+					}
+					return x
+				}
+
+				configWrapper := wrapperFor(config.RunWrapper)
+				benchWrapper := wrapperFor(b.RunWrapper)
+
+				testBinaryName := config.benchName(&b)
+				var s string
+				var rc int
+
+				var wrappersAndBin []string
+
+				if configWrapper != "" {
+					wrappersAndBin = append(wrappersAndBin, configWrapper)
+					wrappersAndBin = append(wrappersAndBin, config.RunWrapper[1:]...)
+				}
+				if benchWrapper != "" {
+					wrappersAndBin = append(wrappersAndBin, benchWrapper)
+					wrappersAndBin = append(wrappersAndBin, b.RunWrapper[1:]...)
+				}
+
+				if b.NotSandboxed {
+					testdir := gopath + "/src/" + b.Repo
+					bin := cwd + "/" + testBinDir + "/" + testBinaryName
+					wrappersAndBin = append(wrappersAndBin, bin)
+
+					cmd := exec.Command(wrappersAndBin[0], wrappersAndBin[1:]...)
+					cmd.Args = append(cmd.Args, "-test.run="+b.Tests)
+					cmd.Args = append(cmd.Args, "-test.bench="+b.Benchmarks)
+
+					cmd.Dir = testdir
+					cmd.Env = defaultEnv
+					if root != "" {
+						cmd.Env = replaceEnv(cmd.Env, "GOROOT", root)
+					}
+					cmd.Env = replaceEnvs(cmd.Env, config.RunEnv)
+					cmd.Env = append(cmd.Env, "BENT_DIR="+cwd)
+					cmd.Env = append(cmd.Env, "BENT_BINARY="+testBinaryName)
+					cmd.Env = append(cmd.Env, "BENT_I="+strconv.FormatInt(int64(i), 10))
+					cmd.Args = append(cmd.Args, config.RunFlags...)
+					cmd.Args = append(cmd.Args, moreArgs...)
+					s, rc = todo.Configurations[j].runBinary(cwd, cmd, false)
+				} else {
+					// docker run --net=none -e GOROOT=... -w /src/github.com/minio/minio/cmd $D /testbin/cmd_Config.test -test.short -test.run=Nope -test.v -test.bench=Benchmark'(Get|Put|List)'
+					testdir := "/gopath/src/" + b.Repo
+					bin := "/" + testBinDir + "/" + testBinaryName
+					wrappersAndBin = append(wrappersAndBin, bin)
+
+					cmd := exec.Command("docker", "run", "--net=none",
+						"-w", testdir)
+					for _, e := range config.RunEnv {
+						cmd.Args = append(cmd.Args, "-e", e)
+					}
+					cmd.Args = append(cmd.Args, "-e", "BENT_DIR=/") // TODO this is not going to work well
+					cmd.Args = append(cmd.Args, "-e", "BENT_BINARY="+testBinaryName)
+					cmd.Args = append(cmd.Args, "-e", "BENT_I="+strconv.FormatInt(int64(i), 10))
+					cmd.Args = append(cmd.Args, container)
+					cmd.Args = append(cmd.Args, wrappersAndBin...)
+					cmd.Args = append(cmd.Args, "-test.run="+b.Tests)
+					cmd.Args = append(cmd.Args, "-test.bench="+b.Benchmarks)
+					cmd.Args = append(cmd.Args, config.RunFlags...)
+					cmd.Args = append(cmd.Args, moreArgs...)
+					s, rc = todo.Configurations[j].runBinary(cwd, cmd, false)
+				}
+				if s != "" {
+					fmt.Println(s)
+					failures = append(failures, s)
+				}
+				if rc > maxrc {
+					maxrc = rc
+				}
+			}
+		}
+	}
+	if maxrc > 0 {
+		os.Exit(maxrc)
+	}
+}
+
+func (c *Configuration) buildBenchName() string {
+	return c.thingBenchName("build")
+}
+
+func (c *Configuration) thingBenchName(suffix string) string {
+	if strings.ContainsAny(suffix, "/") {
+		suffix = suffix[strings.LastIndex(suffix, "/")+1:]
+	}
+	return benchDir + "/" + runstamp + "." + c.Name + "." + suffix
+}
+
+func (c *Configuration) benchName(b *Benchmark) string {
+	return b.Name + "_" + c.Name
+}
+
+func (c *Configuration) goCommand() string {
+	gocmd := "go"
+	if c.Root != "" {
+		gocmd = c.Root + "bin/" + gocmd
+	}
+	return gocmd
+}
+
+func (c *Configuration) goCommandCopy() string {
+	gocmd := "go"
+	if c.rootCopy != "" {
+		gocmd = c.rootCopy + "bin/" + gocmd
+	}
+	return gocmd
+}
+
+func (config *Configuration) createFilesForLater() {
+	if config.Disabled {
+		return
+	}
+	f, err := os.Create(config.buildBenchName())
+	if err != nil {
+		fmt.Println("Error creating build benchmark file ", config.buildBenchName(), ", err=", err)
+		config.Disabled = true
+	} else {
+		fmt.Fprintf(f, "goos: %s\n", runtime.GOOS)
+		fmt.Fprintf(f, "goarch: %s\n", runtime.GOARCH)
+		f.Close() // will be appending later
+	}
+
+	for _, cmd := range config.AfterBuild {
+		tbn := config.thingBenchName(cmd)
+		f, err := os.Create(tbn)
+		if err != nil {
+			fmt.Printf("Error creating %s benchmark file %s, err=%v\n", cmd, config.thingBenchName(cmd), err)
+			continue
+		} else {
+			f.Close() // will be appending later
+		}
+	}
+}
+
+func (config *Configuration) runOtherBenchmarks(b *Benchmark, cwd string) {
+	// Run various other "benchmark" commands on the built binaries, e.g., size, quality of debugging information.
+	if config.Disabled {
+		return
+	}
+
+	for _, cmd := range config.AfterBuild {
+		tbn := config.thingBenchName(cmd)
+		f, err := os.OpenFile(tbn, os.O_WRONLY|os.O_APPEND, os.ModePerm)
+		if err != nil {
+			fmt.Printf("There was an error opening %s for append, error %v\n", tbn, err)
+			continue
+		}
+
+		if !strings.ContainsAny(cmd, "/") {
+			cmd = cwd + "/" + cmd
+		}
+		if b.Disabled {
+			continue
+		}
+		testBinaryName := config.benchName(b)
+		c := exec.Command(cmd, testBinDir+"/"+testBinaryName, b.Name)
+
+		c.Env = defaultEnv
+		if !b.NotSandboxed {
+			c.Env = replaceEnv(c.Env, "GOOS", "linux")
+		}
+		// Match the build environment here.
+		c.Env = replaceEnvs(c.Env, b.GcEnv)
+		c.Env = replaceEnvs(c.Env, config.GcEnv)
+
+		if verbose > 0 {
+			fmt.Println(asCommandLine(cwd, c))
+		}
+		output, err := c.CombinedOutput()
+		if verbose > 0 || err != nil {
+			fmt.Println(string(output))
+		} else {
+			fmt.Print(".")
+		}
+		if err != nil {
+			fmt.Printf("Error running %s\n", cmd)
+			continue
+		}
+		f.Write(output)
+		f.Sync()
+		f.Close()
+	}
+}
+
+func (config *Configuration) compileOne(bench *Benchmark, cwd string, count int) string {
+	root := config.rootCopy
+	gocmd := config.goCommandCopy()
+	gopath := cwd + "/gopath"
+
+	if explicitAll != 1 { // clear cache unless "-a[=1]" which requests -a on compilation.
+		cmd := exec.Command(gocmd, "clean", "-cache")
+		cmd.Env = defaultEnv
+		if !bench.NotSandboxed {
+			cmd.Env = replaceEnv(cmd.Env, "GOOS", "linux")
+		}
+		if root != "" {
+			cmd.Env = replaceEnv(cmd.Env, "GOROOT", root)
+		}
+		cmd.Env = replaceEnvs(cmd.Env, bench.GcEnv)
+		cmd.Env = replaceEnvs(cmd.Env, config.GcEnv)
+		cmd.Dir = gopath // Only want the cache-cleaning effect, not the binary-deleting effect. It's okay to clean gopath.
+		s, _ := config.runBinary("", cmd, true)
+		if s != "" {
+			fmt.Println("Error running go clean -cache, ", s)
+		}
+	}
+
+	// Prefix with time for build benchmarking:
+	cmd := exec.Command("/usr/bin/time", "-p", gocmd, "test", "-vet=off", "-c")
+	cmd.Args = append(cmd.Args, bench.BuildFlags...)
+	// Do not normally need -a because cache was emptied first and std was -a installed with these flags.
+	// But for -a=1, do it anyway
+	if explicitAll == 1 {
+		cmd.Args = append(cmd.Args, "-a")
+	}
+	cmd.Args = append(cmd.Args, config.BuildFlags...)
+	if config.GcFlags != "" {
+		cmd.Args = append(cmd.Args, "-gcflags="+config.GcFlags)
+	}
+	cmd.Args = append(cmd.Args, ".")
+	cmd.Dir = gopath + "/src/" + bench.Repo
+	cmd.Env = defaultEnv
+	if !bench.NotSandboxed {
+		cmd.Env = replaceEnv(cmd.Env, "GOOS", "linux")
+	}
+	if root != "" {
+		cmd.Env = replaceEnv(cmd.Env, "GOROOT", root)
+	}
+	cmd.Env = replaceEnvs(cmd.Env, bench.GcEnv)
+	cmd.Env = replaceEnvs(cmd.Env, config.GcEnv)
+
+	if verbose > 0 {
+		fmt.Println(asCommandLine(cwd, cmd))
+	} else {
+		fmt.Print(".")
+	}
+
+	defer cleanup(gopath)
+
+	output, err := cmd.CombinedOutput()
+	if err != nil {
+		s := ""
+		switch e := err.(type) {
+		case *exec.ExitError:
+			s = fmt.Sprintf("There was an error running 'go test', output = %s", output)
+		default:
+			s = fmt.Sprintf("There was an error running 'go test', output = %s, error = %v", output, e)
+		}
+		fmt.Println(s + "DISABLING benchmark " + bench.Name)
+		bench.Disabled = true // if it won't compile, it won't run, either.
+		return s + "(" + bench.Name + ")\n"
+	}
+	soutput := string(output)
+	// Capture times from the end of the output.
+	rbt := extractTime(soutput, "real")
+	ubt := extractTime(soutput, "user")
+	sbt := extractTime(soutput, "sys")
+	config.buildStats = append(config.buildStats,
+		BenchStat{Name: bench.Name, RealTime: rbt, UserTime: ubt, SysTime: sbt})
+
+	// Report and record build stats to testbin
+
+	buf := new(bytes.Buffer)
+	configGoArch := getenv(config.GcEnv, "GOARCH")
+	if configGoArch != runtime.GOARCH && configGoArch != "" {
+		s := fmt.Sprintf("goarch: %s-%s\n", runtime.GOARCH, configGoArch)
+		if verbose > 0 {
+			fmt.Print(s)
+		}
+		buf.WriteString(s)
+	}
+	s := fmt.Sprintf("Benchmark%s 1 %d build-real-ns/op %d build-user-ns/op %d build-sys-ns/op\n",
+		strings.Title(bench.Name), rbt, ubt, sbt)
+	if verbose > 0 {
+		fmt.Print(s)
+	}
+	buf.WriteString(s)
+	f, err := os.OpenFile(config.buildBenchName(), os.O_WRONLY|os.O_APPEND, os.ModePerm)
+	if err != nil {
+		fmt.Printf("There was an error opening %s for append, error %v\n", config.buildBenchName(), err)
+		cleanup(gopath)
+		os.Exit(2)
+	}
+	f.Write(buf.Bytes())
+	f.Sync()
+	f.Close()
+
+	// Move generated binary to well-known place.
+	from := cmd.Dir + "/" + bench.testBinaryName()
+	to := testBinDir + "/" + config.benchName(bench)
+	err = os.Rename(from, to)
+	if err != nil {
+		fmt.Printf("There was an error renaming %s to %s, %v\n", from, to, err)
+		cleanup(gopath)
+		os.Exit(1)
+	}
+	// Trim /usr/bin/time info from soutput, it's ugly
+	if verbose > 0 {
+		fmt.Println("mv " + from + " " + to + "")
+		i := strings.LastIndex(soutput, "real")
+		if i >= 0 {
+			soutput = soutput[:i]
+		}
+		fmt.Print(soutput)
+	}
+
+	// Do this here before any cleanup.
+	if count == 0 {
+		config.runOtherBenchmarks(bench, cwd)
+	}
+
+	return ""
+}
+
+func escape(s string) string {
+	s = strings.Replace(s, "\\", "\\\\", -1)
+	s = strings.Replace(s, "'", "\\'", -1)
+	// Conservative guess at characters that will force quoting
+	if strings.ContainsAny(s, "\\ ;#*&$~?!|[]()<>{}`") {
+		s = " '" + s + "'"
+	} else {
+		s = " " + s
+	}
+	return s
+}
+
+// asCommandLine renders cmd as something that could be copy-and-pasted into a command line
+func asCommandLine(cwd string, cmd *exec.Cmd) string {
+	s := "("
+	if cmd.Dir != "" && cmd.Dir != cwd {
+		s += "cd" + escape(cmd.Dir) + ";"
+	}
+	for _, e := range cmd.Env {
+		if !strings.HasPrefix(e, "PATH=") &&
+			!strings.HasPrefix(e, "HOME=") &&
+			!strings.HasPrefix(e, "USER=") &&
+			!strings.HasPrefix(e, "SHELL=") {
+			s += escape(e)
+		}
+	}
+	for _, a := range cmd.Args {
+		s += escape(a)
+	}
+	s += " )"
+	return s
+}
+
+func copyAsset(file string) {
+	bytes, err := Asset(file)
+	if err != nil {
+		fmt.Printf("Error reading asset %s\n", file)
+		os.Exit(1)
+	}
+	err = ioutil.WriteFile(file, bytes, 0664)
+	if err != nil {
+		fmt.Printf("Error writing %s\n", file)
+		os.Exit(1)
+	}
+	fmt.Printf("Copied asset %s to current directory\n", file)
+}
+
+// runBinary runs cmd and displays the output.
+// If the command returns an error, returns an error string.
+func (c *Configuration) runBinary(cwd string, cmd *exec.Cmd, printWorkingDot bool) (string, int) {
+	line := asCommandLine(cwd, cmd)
+	if verbose > 0 {
+		fmt.Println(line)
+	} else {
+		if printWorkingDot {
+			fmt.Print(".")
+		}
+	}
+
+	rc := 0
+
+	stdout, err := cmd.StdoutPipe()
+	if err != nil {
+		return fmt.Sprintf("Error [stdoutpipe] running '%s', %v", line, err), rc
+	}
+	stderr, err := cmd.StderrPipe()
+	if err != nil {
+		return fmt.Sprintf("Error [stderrpipe] running '%s', %v", line, err), rc
+	}
+	err = cmd.Start()
+	if err != nil {
+		return fmt.Sprintf("Error [command start] running '%s', %v", line, err), rc
+	}
+
+	var mu = &sync.Mutex{}
+
+	f := func(r *bufio.Reader, done chan error) {
+		for {
+			bytes, err := r.ReadBytes('\n')
+			n := len(bytes)
+			if n > 0 {
+				mu.Lock()
+				nw, err := c.benchWriter.Write(bytes[0:n])
+				if err != nil {
+					fmt.Printf("Error writing, err = %v, nwritten = %d, nrequested = %d\n", err, nw, n)
+				}
+				c.benchWriter.Sync()
+				fmt.Print(string(bytes[0:n]))
+				mu.Unlock()
+			}
+			if err == io.EOF || n == 0 {
+				break
+			}
+			if err != nil {
+				done <- err
+				return
+			}
+		}
+		done <- nil
+	}
+
+	doneS := make(chan error)
+	doneE := make(chan error)
+
+	go f(bufio.NewReader(stdout), doneS)
+	go f(bufio.NewReader(stderr), doneE)
+
+	errS := <-doneS
+	errE := <-doneE
+
+	err = cmd.Wait()
+	rc = cmd.ProcessState.ExitCode()
+
+	if err != nil {
+		switch e := err.(type) {
+		case *exec.ExitError:
+			return fmt.Sprintf("Error running '%s', stderr = %s, rc = %d", line, e.Stderr, rc), rc
+		default:
+			return fmt.Sprintf("Error running '%s', %v, rc = %d", line, e, rc), rc
+
+		}
+	}
+	if errS != nil {
+		return fmt.Sprintf("Error [read stdout] running '%s', %v, rc = %d", line, errS, rc), rc
+	}
+	if errE != nil {
+		return fmt.Sprintf("Error [read stderr] running '%s', %v, rc = %d", line, errE, rc), rc
+	}
+	return "", rc
+}
+
+// testBinaryName returns the name of the binary produced by "go test -c"
+func (b *Benchmark) testBinaryName() string {
+	return b.Repo[strings.LastIndex(b.Repo, "/")+1:] + ".test"
+}
+
+// extractTime extracts a time (from /usr/bin/time -p) based on the tag
+// and returns the time converted to nanoseconds.  Missing times and bad
+// data result in NaN.
+func extractTime(output, label string) int64 {
+	// find tag in first column
+	li := strings.LastIndex(output, label)
+	if li < 0 {
+		return -1
+	}
+	output = output[li+len(label):]
+	// lose intervening white space
+	li = strings.IndexAny(output, "0123456789-.eEdD")
+	if li < 0 {
+		return -1
+	}
+	output = output[li:]
+	li = strings.IndexAny(output, "\n\r\t ")
+	if li >= 0 { // failing to find EOL is a special case of done.
+		output = output[:li]
+	}
+	x, err := strconv.ParseFloat(output, 64)
+	if err != nil {
+		return -1
+	}
+	return int64(x * 1000 * 1000 * 1000)
+}
+
+// inheritEnv extracts ev from the os environment and
+// returns env extended with that new environment variable.
+// Does not check if ev already exists in env.
+func inheritEnv(env []string, ev string) []string {
+	evv := os.Getenv(ev)
+	if evv != "" {
+		env = append(env, ev+"="+evv)
+	}
+	return env
+}
+
+func getenv(env []string, ev string) string {
+	evplus := ev + "="
+	for _, v := range env {
+		if strings.HasPrefix(v, evplus) {
+			return v[len(evplus):]
+		}
+	}
+	return ""
+}
+
+// replaceEnv returns a new environment derived from env
+// by removing any existing definition of ev and adding ev=evv.
+func replaceEnv(env []string, ev string, evv string) []string {
+	evplus := ev + "="
+	var newenv []string
+	for _, v := range env {
+		if !strings.HasPrefix(v, evplus) {
+			newenv = append(newenv, v)
+		}
+	}
+	newenv = append(newenv, evplus+evv)
+	return newenv
+}
+
+// replaceEnv returns a new environment derived from env
+// by replacing or adding all modifiers in newevs.
+func replaceEnvs(env, newevs []string) []string {
+	for _, e := range newevs {
+		var newenv []string
+		eq := strings.IndexByte(e, '=')
+		if eq == -1 {
+			panic("Bad input to replaceEnvs, ought to be slice of e=v")
+		}
+		evplus := e[0 : eq+1]
+		for _, v := range env {
+			if !strings.HasPrefix(v, evplus) {
+				newenv = append(newenv, v)
+			}
+		}
+		env = append(newenv, e)
+	}
+	return env
+}
+
+// ifMissingAddEnv returns a new environment derived from env
+// by adding ev=evv if env does not define env.
+func ifMissingAddEnv(env []string, ev string, evv string) []string {
+	evplus := ev + "="
+	for _, v := range env {
+		if strings.HasPrefix(v, evplus) {
+			return env
+		}
+	}
+	env = append(env, evplus+evv)
+	return env
+}
+
+// csToset converts a comma-separated string into the set of strings between the commas.
+func csToSet(s string) map[string]bool {
+	if s == "" {
+		return nil
+	}
+	m := make(map[string]bool)
+	ss := strings.Split(s, ",")
+	for _, sss := range ss {
+		m[sss] = true
+	}
+	return m
+}
+
+// count is a flag.Value that is like a flag.Bool and a flag.Int.
+// If used as -name, it increments the count, but -name=x sets the count.
+// Used for verbose flag -v and build-all flag -a
+type count int
+
+func (c *count) String() string {
+	return fmt.Sprint(int(*c))
+}
+
+func (c *count) Set(s string) error {
+	switch s {
+	case "true":
+		*c++
+	case "false":
+		*c = 0
+	default:
+		n, err := strconv.Atoi(s)
+		if err != nil {
+			return fmt.Errorf("invalid count %q", s)
+		}
+		*c = count(n)
+	}
+	return nil
+}
+
+func (c *count) IsBoolFlag() bool {
+	return true
+}
diff --git a/cmd/bent/cmpcl-phase.sh b/cmd/bent/cmpcl-phase.sh
new file mode 100755
index 0000000..2e78a3e
--- /dev/null
+++ b/cmd/bent/cmpcl-phase.sh
@@ -0,0 +1,98 @@
+#!/bin/bash -x
+
+# Variant of cmpcl.sh for comparing SSA phase timings for a CL and its immediate predecessor.
+
+# git fetch "https://go.googlesource.com/go" refs/changes/61/196661/3 && git checkout FETCH_HEAD
+
+if [ $# -lt 1 ] ; then
+  echo cmpcl.sh "refs/changes/<nn>/<cl>/<patch>" "bent-options"
+  exit 1
+fi
+
+if [ ${1:0:1} = "-" ] ; then
+  echo "First parameter should be a git tag or branch"
+  exit 1
+fi
+
+cl="$1"
+shift
+
+ROOT=`pwd`
+export ROOT cl
+
+# perflock is not always available
+PERFLOCK=`which perflock`
+
+# N is number of benchmarks, B is number of builds
+# Can override these with -N= and -a= on command line.
+N=0
+B=1
+
+cd "${ROOT}"
+
+if [ -e go-old ] ; then
+	rm -rf go-old
+fi
+
+git clone https://go.googlesource.com/go go-old
+if [ $? != 0 ] ; then
+	echo git clone https://go.googlesource.com/go go-old FAILED
+	exit 1
+fi
+cd go-old/src
+git fetch "https://go.googlesource.com/go" "${cl}"
+if [ $? != 0 ] ; then
+	echo git fetch "https://go.googlesource.com/go" "${cl}"  failed
+	exit 1
+fi
+git checkout FETCH_HEAD^1
+if [ $? != 0 ] ; then
+	echo git checkout FETCH_HEAD^1 failed
+	exit 1
+fi
+./make.bash
+if [ $? != 0 ] ; then
+	echo BASE make.bash FAILED
+	exit 1
+fi
+oldtag=`git log -n 1 --format='%h'`
+export oldtag
+
+cd "${ROOT}"
+
+if [ -e go-new ] ; then
+	rm -rf go-new
+fi
+git clone https://go.googlesource.com/go go-new
+if [ $? != 0 ] ; then
+	echo git clone go-new failed
+	exit 1
+fi
+cd go-new/src
+
+git fetch "https://go.googlesource.com/go" "${cl}"
+if [ $? != 0 ] ; then
+	echo git fetch "https://go.googlesource.com/go" "${cl}"  failed
+	exit 1
+fi
+git checkout FETCH_HEAD
+if [ $? != 0 ] ; then
+	echo git checkout FETCH_HEAD failed
+	exit 1
+fi
+
+./make.bash
+if [ $? != 0 ] ; then
+	echo make.bash failed
+	exit 1
+fi
+newtag=`git log -n 1 --format='%h'`
+export newtag
+
+STAMP="$$"
+export STAMP
+
+cd "${ROOT}"
+${PERFLOCK} bent -U -v -N=${N} -a=${B} -L=bentjobs.log -c=Old-phase,New-phase -C=configurations-cmpjob.toml "$@" | tee phases.${STAMP}.log
+phase-times > phases.${STAMP}.csv
+
diff --git a/cmd/bent/cmpcl.sh b/cmd/bent/cmpcl.sh
new file mode 100755
index 0000000..3e7877e
--- /dev/null
+++ b/cmd/bent/cmpcl.sh
@@ -0,0 +1,112 @@
+#!/bin/bash -x
+
+# git fetch "https://go.googlesource.com/go" refs/changes/61/196661/3 && git checkout FETCH_HEAD
+
+if [ $# -lt 1 ] ; then
+  echo cmpcl.sh "refs/changes/<nn>/<cl>/<patch>" "bent-options"
+  exit 1
+fi
+
+if [ ${1:0:1} = "-" ] ; then
+  echo "First parameter should be a git tag or branch"
+  exit 1
+fi
+
+cl="$1"
+shift
+
+ROOT=`pwd`
+export ROOT cl
+
+# perflock is not always available
+PERFLOCK=`which perflock`
+
+# N is number of benchmarks, B is number of builds
+# Can override these with -N= and -a= on command line.
+N=15
+B=1
+
+cd "${ROOT}"
+
+if [ -e go-old ] ; then
+	rm -rf go-old
+fi
+
+git clone https://go.googlesource.com/go go-old
+if [ $? != 0 ] ; then
+	echo git clone https://go.googlesource.com/go go-old FAILED
+	exit 1
+fi
+cd go-old/src
+git fetch "https://go.googlesource.com/go" "${cl}"
+if [ $? != 0 ] ; then
+	echo git fetch "https://go.googlesource.com/go" "${cl}"  failed
+	exit 1
+fi
+git checkout FETCH_HEAD^1
+if [ $? != 0 ] ; then
+	echo git checkout FETCH_HEAD^1 failed
+	exit 1
+fi
+./make.bash
+if [ $? != 0 ] ; then
+	echo BASE make.bash FAILED
+	exit 1
+fi
+oldtag=`git log -n 1 --format='%h'`
+export oldtag
+
+cd "${ROOT}"
+
+if [ -e go-new ] ; then
+	rm -rf go-new
+fi
+git clone https://go.googlesource.com/go go-new
+if [ $? != 0 ] ; then
+	echo git clone go-new failed
+	exit 1
+fi
+cd go-new/src
+
+git fetch "https://go.googlesource.com/go" "${cl}"
+if [ $? != 0 ] ; then
+	echo git fetch "https://go.googlesource.com/go" "${cl}"  failed
+	exit 1
+fi
+git checkout FETCH_HEAD
+if [ $? != 0 ] ; then
+	echo git checkout FETCH_HEAD failed
+	exit 1
+fi
+
+./make.bash
+if [ $? != 0 ] ; then
+	echo make.bash failed
+	exit 1
+fi
+newtag=`git log -n 1 --format='%h'`
+export newtag
+
+cd "${ROOT}"
+${PERFLOCK} bent -U -v -N=${N} -a=${B} -L=bentjobs.log -C=configurations-cmpjob.toml "$@"
+RUN=`tail -1 bentjobs.log | awk -c '{print $1}'`
+
+cd bench
+STAMP="stamp-$$"
+export STAMP
+echo "suite: bent-cmp-cl" >> ${STAMP}
+echo "bentstamp: ${RUN}" >> "${STAMP}"
+echo "oldtag: ${oldtag}" >> "${STAMP}"
+echo "newtag: ${newtag}" >> "${STAMP}"
+
+oldlog="old-${oldtag}"
+newlog="new-${newtag}"
+
+cat ${RUN}.Old.build > ${oldlog}
+cat ${RUN}.New.build > ${newlog}
+egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' ${RUN}.Old.stdout >> ${oldlog}
+egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' ${RUN}.New.stdout >> ${newlog}
+cat ${RUN}.Old.{benchsize,benchdwarf} >> ${oldlog}
+cat ${RUN}.New.{benchsize,benchdwarf} >> ${newlog}
+benchsave -header "${STAMP}" "${oldlog}" "${newlog}"
+rm "${STAMP}"
diff --git a/cmd/bent/cmpjob.sh b/cmd/bent/cmpjob.sh
new file mode 100755
index 0000000..c5ac036
--- /dev/null
+++ b/cmd/bent/cmpjob.sh
@@ -0,0 +1,106 @@
+#!/bin/bash -x
+
+if [ $# -lt 2 ] ; then
+  echo cmpjob.sh "<branch-or-tag>" "<branch-or-tag>" "bent-options"
+  exit 1
+fi
+
+if [ ${1:0:1} = "-" ] ; then
+  echo "First parameter should be a git tag or branch"
+  exit 1
+fi
+
+if [ ${2:0:1} = "-" ] ; then
+  echo "Second parameter should be a git tag or branch"
+  exit 1
+fi
+
+oldtag="$1"
+shift
+
+newtag="$1"
+shift
+
+ROOT=`pwd`
+export ROOT oldtag newtag
+
+# perflock is not always available
+PERFLOCK=`which perflock`
+
+# N is number of benchmarks, B is number of builds
+# Can override these with -N= and -a= on command line.
+N=15
+B=1
+
+REPO="https://go.googlesource.com/go"
+
+cd "${ROOT}"
+
+if [ -e go-old ] ; then
+	rm -rf go-old
+fi
+
+git clone "${REPO}" go-old
+if [ "$?" != "0" ] ; then
+	echo git clone "${REPO}" go-old FAILED
+	exit 1
+fi
+cd go-old/src
+git fetch "${REPO}" "${oldtag}"
+git checkout "${oldtag}"
+if [ $? != 0 ] ; then
+	echo git checkout "${oldtag}" failed
+	exit 1
+fi
+./make.bash
+if [ $? != 0 ] ; then
+	echo BASE make.bash FAILED
+	exit 1
+fi
+
+cd "${ROOT}"
+
+if [ -e go-new ] ; then
+	rm -rf go-new
+fi
+git clone "${REPO}" go-new
+if [ $? != 0 ] ; then
+	echo git clone go-new failed
+	exit 1
+fi
+cd go-new/src
+git fetch "${REPO}" "${newtag}"
+git checkout "${newtag}"
+if [ $? != 0 ] ; then
+	echo git checkout "${newtag}" failed
+	exit 1
+fi
+./make.bash
+if [ $? != 0 ] ; then
+	echo make.bash failed
+	exit 1
+fi
+
+cd "${ROOT}"
+${PERFLOCK} bent -U -v -N=${N} -a=${B} -L=bentjobs.log -C=configurations-cmpjob.toml "$@"
+RUN=`tail -1 bentjobs.log | awk -c '{print $1}'`
+
+cd bench
+STAMP="stamp-$$"
+export STAMP
+echo "suite: bent-cmp-branch" >> "${STAMP}"
+echo "bentstamp: ${RUN}" >> "${STAMP}"
+echo "oldtag: ${oldtag}" >> "${STAMP}"
+echo "newtag: ${newtag}" >> "${STAMP}"
+
+oldlog="old-${oldtag}"
+newlog="new-${newtag}"
+
+cat "${RUN}.Old.build" > "${oldlog}"
+cat "${RUN}.New.build" > "${newlog}"
+egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' "${RUN}.Old.stdout" >> "${oldlog}"
+egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' "${RUN}.New.stdout" >> "${newlog}"
+cat "${RUN}.Old.{benchsize,benchdwarf}" >> "${oldlog}"
+cat "${RUN}.New.{benchsize,benchdwarf}" >> "${newlog}"
+benchsave -header "${STAMP}" "${oldlog}" "${newlog}"
+rm "${STAMP}"
diff --git a/cmd/bent/configurations-cmpjob.toml b/cmd/bent/configurations-cmpjob.toml
new file mode 100644
index 0000000..a191456
--- /dev/null
+++ b/cmd/bent/configurations-cmpjob.toml
@@ -0,0 +1,22 @@
+[[Configurations]]
+  Name = "Old"
+  Root = "$ROOT/go-old"
+  AfterBuild = [ "benchsize", "benchdwarf" ]
+
+[[Configurations]]
+  Name = "New"
+  Root = "$ROOT/go-new"
+  AfterBuild = [ "benchsize", "benchdwarf" ]
+
+[[Configurations]]
+  Name = "Old-phase"
+  Root = "$ROOT/go-old"
+  GcFlags = "all=-d=ssa/all/time=1"
+  Disabled = true
+
+[[Configurations]]
+  Name = "New-phase"
+  Root = "$ROOT/go-new"
+  GcFlags = "all=-d=ssa/all/time=1"
+  Disabled = true
+
diff --git a/cmd/bent/configurations-cronjob.toml b/cmd/bent/configurations-cronjob.toml
new file mode 100644
index 0000000..74c3043
--- /dev/null
+++ b/cmd/bent/configurations-cronjob.toml
@@ -0,0 +1,56 @@
+[[Configurations]]
+  Name = "Base"
+  Root = "$ROOT/${BASE}"
+  AfterBuild = [ "benchsize", "benchdwarf" ]
+
+[[Configurations]]
+  Name = "Tip"
+  Root = "$ROOT/go-tip/"
+  AfterBuild = [ "benchsize", "benchdwarf" ]
+
+[[Configurations]]
+  Name = "Base-prof"
+  Root = "$ROOT/${BASE}"
+  RunWrapper = ["cpuprofile"]
+  Disabled = true
+
+[[Configurations]]
+  Name = "Tip-prof"
+  Root = "$ROOT/go-tip/"
+  RunWrapper = ["cpuprofile"]
+  Disabled = true
+
+[[Configurations]]
+  Name = "Tip-prof-nopreempt"
+  Root = "$ROOT/go-tip/"
+  RunWrapper = ["cpuprofile"]
+  RunEnv = ["GODEBUG=asyncpreemptoff=1"]
+  Disabled = true
+
+[[Configurations]]
+  Name = "BaseNl"
+  GcFlags = "-N -l"
+  Root = "$ROOT/${BASE}"
+  AfterBuild = [ "benchsize", "benchdwarf" ]
+  Disabled = true
+
+[[Configurations]]
+  Name = "TipNl"
+  GcFlags = "-N -l"
+  Root = "$ROOT/go-tip/"
+  AfterBuild = [ "benchsize", "benchdwarf" ]
+  Disabled = true
+
+[[Configurations]]
+  Name = "Basel"
+  GcFlags = "-l"
+  Root = "$ROOT/${BASE}"
+  AfterBuild = [ "benchsize", "benchdwarf" ]
+  Disabled = true
+
+[[Configurations]]
+  Name = "Tipl"
+  GcFlags = "-l"
+  Root = "$ROOT/go-tip/"
+  AfterBuild = [ "benchsize", "benchdwarf" ]
+  Disabled = true
diff --git a/cmd/bent/configurations-gollvm.toml b/cmd/bent/configurations-gollvm.toml
new file mode 100644
index 0000000..a83599a
--- /dev/null
+++ b/cmd/bent/configurations-gollvm.toml
@@ -0,0 +1,18 @@
+[[Configurations]]
+  Name = "Go"
+  Root = "$HOME/work/go/"
+  RunWrapper = ["cpuprofile"]
+
+[[Configurations]]
+  Name = "Go-noasm"
+  BuildFlags = ["-tags=noasm"]
+  Root = "$HOME/work/go/"
+  RunWrapper = ["cpuprofile"]
+
+[[Configurations]]
+  Name = "Gollvm"
+  Root = "$HOME/work/gollvm/"
+  BuildFlags = ["-gccgoflags=all=-O3 -static-libgo","-tags=noasm"]
+  RunEnv = ["LD_LIBRARY_PATH=$HOME/work/gollvm/lib64"]
+  GcEnv = ["LD_LIBRARY_PATH=$HOME/work/gollvm/lib64"]
+  RunWrapper = ["cpuprofile"]
diff --git a/cmd/bent/configurations-sample.toml b/cmd/bent/configurations-sample.toml
new file mode 100644
index 0000000..96176fc
--- /dev/null
+++ b/cmd/bent/configurations-sample.toml
@@ -0,0 +1,15 @@
+[[Configurations]]
+  Name = "Resched"
+  GcFlags = "-d=ssa/preempt_loops/on"
+  RunEnv = ["GOGC=100"]
+  RunFlags = ["-test.short"]
+  RunWrapper = ["foo"]
+  Root = "$HOME/work/go-debug"
+  Disabled = true
+
+[[Configurations]]
+  Name = "NoResched"
+  GcFlags = "-d=ssa/insert_resched_checks/off"
+  RunEnv = ["GOGC=100"]
+  RunFlags = ["-test.short"]
+  Root = "$HOME/work/go/"
diff --git a/cmd/bent/cpuprofile b/cmd/bent/cpuprofile
new file mode 100755
index 0000000..c6b3d0a
--- /dev/null
+++ b/cmd/bent/cpuprofile
@@ -0,0 +1,10 @@
+#!/bin/bash
+# Run args as command, but run cpuprofile and then pprof to capture test cpuprofile output
+pf="${BENT_BINARY}_${BENT_I}.prof"
+"$@" -test.cpuprofile="$pf"
+echo cpuprofile in `pwd`/"$pf"
+if [[ x`which pprof` == x"" ]] ; then
+    go tool pprof -text -flat -nodecount=20 "$pf"
+else
+    pprof -text -flat -nodecount=20 "$pf"
+fi
diff --git a/cmd/bent/cronjob.sh b/cmd/bent/cronjob.sh
new file mode 100755
index 0000000..8d45ca3
--- /dev/null
+++ b/cmd/bent/cronjob.sh
@@ -0,0 +1,160 @@
+#!/bin/bash -x
+
+# perflock is not always available
+PERFLOCK=`which perflock`
+
+${PERFLOCK} echo "Gratuitous perflock to prevent this script from starting if something else is still in progress"
+
+ROOT="${HOME}/work/bent-cron"
+export ROOT
+
+# BASE is the baseline, defined here, assumed checked out and built.
+BASE=Go1.14
+export BASE
+
+# N is number of benchmarks, B is number of builds
+# Can override these with -N= and -a= on command line.
+N=25
+B=25
+NNl=0
+BNl=1
+Nl=0
+Bl=1
+
+if [ "x${SUITE}" = "x" ] ; then
+	SUITE="bent-cron"
+fi
+
+cd "${ROOT}"
+
+if [ ! -e "${BASE}" ] ; then
+	echo Missing expected baseline directory "${BASE}" in "${ROOT}", attempting to checkout and build.
+	base=`echo $BASE | tr G g`
+	${PERFLOCK} git clone https://go.googlesource.com/go -b release-branch.${base} ${BASE}
+	if [ $? != 0 ] ; then
+		echo git clone https://go.googlesource.com/go -b release-branch.${base} ${BASE} FAILED
+		exit 1
+	fi
+	cd ${BASE}/src
+	${PERFLOCK} ./make.bash
+	if [ $? != 0 ] ; then
+		echo BASE make.bash FAILED
+		exit 1
+	fi
+	cd "${ROOT}"
+fi
+
+# Refresh tip, get revision
+if [ -e go-tip ] ; then
+	${PERFLOCK} rm -rf go-tip
+fi
+${PERFLOCK} git clone https://go.googlesource.com/go go-tip
+if [ $? != 0 ] ; then
+	echo git clone go-tip failed
+	exit 1
+fi
+cd go-tip/src
+${PERFLOCK} ./make.bash
+if [ $? != 0 ] ; then
+	echo make.bash failed
+	exit 1
+fi
+tip=`git log -n 1 --format='%h'`
+
+# Get revision for base so there is no ambiguity
+cd "${ROOT}"/${BASE}
+base=`git log -n 1 --format='%h'`
+
+# Optimized build and benchmark
+
+cd "${ROOT}"
+# For arm64 big.little, might need to prefix with something like:
+# GOMAXPROCS=4 numactl -C 2-5 -- ...
+${PERFLOCK} bent -U -v -N=${N} -a=${B} -L=bentjobs.log -C=configurations-cronjob.toml -c Base,Tip "$@"
+RUN=`tail -1 bentjobs.log | awk -c '{print $1}'`
+
+cd bench
+STAMP="stamp-$$"
+export STAMP
+echo "suite: ${SUITE}" >> ${STAMP}
+echo "bentstamp: ${RUN}" >> "${STAMP}"
+echo "tip: ${tip}" >> "${STAMP}"
+echo "base: ${base}" >> "${STAMP}"
+
+SFX="${RUN}"
+
+cp ${STAMP} ${BASE}-opt.${SFX}
+cp ${STAMP} ${tip}-opt.${SFX}
+
+cat ${RUN}.Base.build >> ${BASE}-opt.${SFX}
+cat ${RUN}.Tip.build >> ${tip}-opt.${SFX}
+egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' ${RUN}.Base.stdout >> ${BASE}-opt.${SFX}
+egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' ${RUN}.Tip.stdout >> ${tip}-opt.${SFX}
+cat ${RUN}.Base.{benchsize,benchdwarf} >> ${BASE}-opt.${SFX}
+cat ${RUN}.Tip.{benchsize,benchdwarf} >> ${tip}-opt.${SFX}
+benchsave ${BASE}-opt.${SFX} ${tip}-opt.${SFX}
+rm "${STAMP}"
+
+cd ${ROOT}
+# The following depends on some other infrastructure, see:
+#     github/com/dr2chase/go-bench-tweet-bot
+#     https://go-review.googlesource.com/c/perf/+/218923 (benchseries)
+if [ -e ./tweet-results ] ; then
+	./tweet-results "${RUN}"
+fi
+
+# Debugging build
+
+cd "${ROOT}"
+${PERFLOCK} bent -U -v -N=${NNl} -a=${BNl} -L=bentjobsNl.log -C=configurations-cronjob.toml -c BaseNl,TipNl "$@"
+RUN=`tail -1 bentjobsNl.log | awk -c '{print $1}'`
+
+cd bench
+STAMP="stamp-$$"
+export STAMP
+echo "suite: ${SUITE}-Nl" >> ${STAMP}
+echo "bentstamp: ${RUN}" >> "${STAMP}"
+echo "tip: ${tip}" >> "${STAMP}"
+echo "base: ${base}" >> "${STAMP}"
+
+SFX="${RUN}"
+
+cp ${STAMP} ${BASE}-Nl.${SFX}
+cp ${STAMP} ${tip}-Nl.${SFX}
+
+cat ${RUN}.BaseNl.build >> ${BASE}-Nl.${SFX}
+cat ${RUN}.TipNl.build >> ${tip}-Nl.${SFX}
+egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' ${RUN}.BaseNl.stdout >> ${BASE}-Nl.${SFX}
+egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' ${RUN}.TipNl.stdout >> ${tip}-Nl.${SFX}
+cat ${RUN}.BaseNl.{benchsize,benchdwarf} >> ${BASE}-Nl.${SFX}
+cat ${RUN}.TipNl.{benchsize,benchdwarf} >> ${tip}-Nl.${SFX}
+benchsave ${BASE}-Nl.${SFX} ${tip}-Nl.${SFX}
+rm "${STAMP}"
+
+# No-inline build
+
+cd "${ROOT}"
+${PERFLOCK} bent -U -v -N=${Nl} -a=${Bl} -L=bentjobsl.log -C=configurations-cronjob.toml -c Basel,Tipl "$@"
+RUN=`tail -1 bentjobsl.log | awk -c '{print $1}'`
+
+cd bench
+STAMP="stamp-$$"
+export STAMP
+echo "suite: ${SUITE}-l" >> ${STAMP}
+echo "bentstamp: ${RUN}" >> "${STAMP}"
+echo "tip: ${tip}" >> "${STAMP}"
+echo "base: ${base}" >> "${STAMP}"
+
+SFX="${RUN}"
+
+cp ${STAMP} ${BASE}-l.${SFX}
+cp ${STAMP} ${tip}-l.${SFX}
+
+cat ${RUN}.Basel.build >> ${BASE}-l.${SFX}
+cat ${RUN}.Tipl.build >> ${tip}-l.${SFX}
+egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' ${RUN}.Basel.stdout >> ${BASE}-l.${SFX}
+egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' ${RUN}.Tipl.stdout >> ${tip}-l.${SFX}
+cat ${RUN}.Basel.{benchsize,benchdwarf} >> ${BASE}-l.${SFX}
+cat ${RUN}.Tipl.{benchsize,benchdwarf} >> ${tip}-l.${SFX}
+benchsave ${BASE}-l.${SFX} ${tip}-l.${SFX}
+rm "${STAMP}"
diff --git a/cmd/bent/foo b/cmd/bent/foo
new file mode 100755
index 0000000..9681f2d
--- /dev/null
+++ b/cmd/bent/foo
@@ -0,0 +1,8 @@
+#!/bin/bash
+# Run args as command, but wrapped in foo.
+echo Foo foo foo foo foo foo foo ${BENT_BINARY}
+echo Foo args are "$@"
+echo Foo environment is
+printenv
+"$@"
+echo  ${BENT_BINARY} oof oof oof oof oof oof ooF
diff --git a/cmd/bent/make_assets b/cmd/bent/make_assets
new file mode 100755
index 0000000..44a0603
--- /dev/null
+++ b/cmd/bent/make_assets
@@ -0,0 +1,2 @@
+#!/bin/bash
+go-bindata -o assets.go foo memprofile cpuprofile tmpclr benchtime benchsize benchdwarf cronjob.sh cmpjob.sh cmpcl.sh cmpcl-phase.sh tweet-results benchmarks-{all,50,gc,gcplus,trial}.toml configurations-{sample,gollvm,cronjob,cmpjob}.toml
diff --git a/cmd/bent/memprofile b/cmd/bent/memprofile
new file mode 100755
index 0000000..a8207a1
--- /dev/null
+++ b/cmd/bent/memprofile
@@ -0,0 +1,6 @@
+#!/bin/bash
+# Run args as command, but run memprofile and then pprof to capture test memprofile output
+mpf="${BENT_BINARY}_${BENT_I}.mprof"
+"$@" -test.memprofile="$mpf"
+echo memprofile in `pwd`/"$mpf"
+go tool pprof --alloc_space --text --cum --nodecount=20 "$mpf"
diff --git a/cmd/bent/patches/ericlagergren_decimal b/cmd/bent/patches/ericlagergren_decimal
new file mode 100644
index 0000000..5a3b2c5
--- /dev/null
+++ b/cmd/bent/patches/ericlagergren_decimal
@@ -0,0 +1,43 @@
+cd gopath/src/github.com/ericlagergren/decimal
+patch -p1 <<"EOF"
+diff --git a/benchmarks/pi_test.go b/benchmarks/pi_test.go
+index 86d1a15..b1310ee 100644
+--- a/benchmarks/pi_test.go
++++ b/benchmarks/pi_test.go
+@@ -67,8 +67,8 @@ var (
+ 	thirtyTwo      = decimal.New(32, 0)
+ 	apdEight       = apd.New(8, 0)
+ 	apdThirtyTwo   = apd.New(32, 0)
+-	dnumEight      = dnum.NewDnum(false, 8, 0)
+-	dnumThirtyTwo  = dnum.NewDnum(false, 32, 0)
++	dnumEight      = dnum.FromInt(8)
++	dnumThirtyTwo  = dnum.FromInt(32)
+ 	ssdecEight     = ssdec.New(8, 0)
+ 	ssdecThirtyTwo = ssdec.New(32, 0)
+ 	infEight       = inf.NewDec(8, 0)
+@@ -131,16 +131,16 @@ func calcPi_shopSpring(prec int32) ssdec.Decimal {
+
+ func calcPi_dnum() dnum.Dnum {
+ 	var (
+-		lasts = dnum.NewDnum(false, 0, 0)
+-		t     = dnum.NewDnum(false, 3, 0)
+-		s     = dnum.NewDnum(false, 3, 0)
+-		n     = dnum.NewDnum(false, 1, 0)
+-		na    = dnum.NewDnum(false, 0, 0)
+-		d     = dnum.NewDnum(false, 0, 0)
+-		da    = dnum.NewDnum(false, 24, 0)
++		lasts = dnum.FromInt(0)
++		t     = dnum.FromInt(3)
++		s     = dnum.FromInt(3)
++		n     = dnum.FromInt(1)
++		na    = dnum.FromInt(0)
++		d     = dnum.FromInt(0)
++		da    = dnum.FromInt(24)
+ 	)
+
+-	for dnum.Cmp(s, lasts) != 0 {
++	for dnum.Compare(s, lasts) != 0 {
+ 		lasts = s
+ 		n = dnum.Add(n, na)
+ 		na = dnum.Add(na, dnumEight)
+EOF
diff --git a/cmd/bent/patches/ethereum_core b/cmd/bent/patches/ethereum_core
new file mode 100644
index 0000000..2ab78b1
--- /dev/null
+++ b/cmd/bent/patches/ethereum_core
@@ -0,0 +1,31 @@
+cd gopath/src/github.com/ethereum/go-ethereum
+patch -p1 <<"EOF"
+diff --git a/core/blockchain.go b/core/blockchain.go
+index 63f60ca28..4e57caab2 100644
+--- a/core/blockchain.go
++++ b/core/blockchain.go
+@@ -339,13 +339,21 @@ func (bc *BlockChain) GasLimit() uint64 {
+ // CurrentBlock retrieves the current head block of the canonical chain. The
+ // block is retrieved from the blockchain's internal cache.
+ func (bc *BlockChain) CurrentBlock() *types.Block {
+-	return bc.currentBlock.Load().(*types.Block)
++	x := bc.currentBlock.Load()
++	if x == nil {
++		return nil
++	}
++	return x.(*types.Block)
+ }
+
+ // CurrentFastBlock retrieves the current fast-sync head block of the canonical
+ // chain. The block is retrieved from the blockchain's internal cache.
+ func (bc *BlockChain) CurrentFastBlock() *types.Block {
+-	return bc.currentFastBlock.Load().(*types.Block)
++	x := bc.currentFastBlock.Load()
++	if x == nil {
++		return nil
++	}
++	return x.(*types.Block)
+ }
+
+ // SetProcessor sets the processor required for making state modifications.
+EOF
diff --git a/cmd/bent/tmpclr b/cmd/bent/tmpclr
new file mode 100755
index 0000000..863c19b
--- /dev/null
+++ b/cmd/bent/tmpclr
@@ -0,0 +1,12 @@
+#!/bin/bash
+# This wrapper attempts to clean up after benchmarks that dribble files into /tmp
+# Some of them respect TMPDIR, some do not.
+# The value of BENT_BINARY is not especially likely to match things normally found in /tmp
+PID=$$
+TD=/tmp/bent-${PID}
+mkdir -p ${TD}
+TMPDIR=${TD} "$@"
+rm -rf ${TD}
+if [ "x${BENT_BINARY}" != "x" ] ; then
+	rm -rf /tmp/${BENT_BINARY}*
+fi
diff --git a/cmd/bent/tweet-results b/cmd/bent/tweet-results
new file mode 100755
index 0000000..dc18851
--- /dev/null
+++ b/cmd/bent/tweet-results
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+RUN=$1
+shopt -s extglob
+
+BS=`which benchseries`
+BT=`which bench-tweet`
+
+doit=yes
+
+if [ "x$BS" = "x" ] ; then
+	echo "Need benchseries (currently in a CL): https://go-review.googlesource.com/c/perf/+/218923 "
+	doit=no
+fi
+
+if [ "x$BT" = "x" ] ; then
+	echo "Need bench-tweet: go get github.com/dr2chase/go-bench-tweet-bot/cmd/bench-tweet"
+	doit=no
+fi
+
+if [ ! -f .twitter/drchase-benchmark-bot ] ; then
+	echo "No twitter credentials found, looking for .twitter/drchase-benchmark-bot"
+	doit=no
+fi
+
+if [ $doit = no ] ; then
+	echo Cannot tweet about the benchmarks
+	exit 1
+fi
+
+URL="https://perf.golang.org/search?q=bentstamp%3A${RUN}"
+echo ${URL} > ${RUN}.tmp
+(cd bench ; benchseries  -png ../png -series bentstamp -last ns-per-op,build-user-ns-per-op Go*-opt.* !(Go)*-opt.*) >> ${RUN}.tmp
+
+wc ${RUN}.tmp
+bench-tweet -i ${RUN}.tmp -m png/ns-per-op.png -m png/build-user-ns-per-op.png -m png/text-bytes.png -m png/total-bytes.png
+rm ${RUN}.tmp
diff --git a/go.mod b/go.mod
index cba8457..2adef3a 100644
--- a/go.mod
+++ b/go.mod
@@ -2,4 +2,7 @@
 
 go 1.11
 
-require golang.org/x/sys v0.0.0-20190312061237-fead79001313
+require (
+	github.com/BurntSushi/toml v0.3.1
+	golang.org/x/sys v0.0.0-20190312061237-fead79001313
+)
diff --git a/go.sum b/go.sum
index cf6edbd..77dcb62 100644
--- a/go.sum
+++ b/go.sum
@@ -1,2 +1,4 @@
+github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 golang.org/x/sys v0.0.0-20190312061237-fead79001313 h1:pczuHS43Cp2ktBEEmLwScxgjWsBSzdaQiKzUyf3DTTc=
 golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
