diff --git a/Taskfile.yml b/Taskfile.yml
index 325172222d5..f4526b3ce4f 100755
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -6,6 +6,7 @@ tasks:
     cmds:
       - '{{ default "protoc" .PROTOC_BINARY }} --proto_path=rpc --go_out=plugins=grpc,paths=source_relative:rpc ./rpc/commands/*.proto'
       - '{{ default "protoc" .PROTOC_BINARY }} --proto_path=rpc --go_out=plugins=grpc,paths=source_relative:rpc ./rpc/monitor/*.proto'
+      - '{{ default "protoc" .PROTOC_BINARY }} --proto_path=rpc --go_out=plugins=grpc,paths=source_relative:rpc ./rpc/settings/*.proto'
 
   build:
     desc: Build the project
diff --git a/arduino/builder/sketch_test.go b/arduino/builder/sketch_test.go
index 17ed07a016e..fcab102ce46 100644
--- a/arduino/builder/sketch_test.go
+++ b/arduino/builder/sketch_test.go
@@ -115,6 +115,7 @@ func TestLoadSketchFolderSymlink(t *testing.T) {
 	symlinkSketchPath := filepath.Join("testdata", t.Name())
 	srcSketchPath := t.Name() + "Src"
 	os.Symlink(srcSketchPath, symlinkSketchPath)
+	defer os.Remove(symlinkSketchPath)
 	mainFilePath := filepath.Join(symlinkSketchPath, t.Name()+".ino")
 	s, err := builder.SketchLoad(symlinkSketchPath, "")
 	require.Nil(t, err)
diff --git a/cli/daemon/daemon.go b/cli/daemon/daemon.go
index 5092f60e0f4..7d742a87459 100644
--- a/cli/daemon/daemon.go
+++ b/cli/daemon/daemon.go
@@ -30,6 +30,7 @@ import (
 	"github.com/arduino/arduino-cli/commands/daemon"
 	srv_commands "github.com/arduino/arduino-cli/rpc/commands"
 	srv_monitor "github.com/arduino/arduino-cli/rpc/monitor"
+	srv_settings "github.com/arduino/arduino-cli/rpc/settings"
 	"github.com/sirupsen/logrus"
 	"github.com/spf13/cobra"
 	"github.com/spf13/viper"
@@ -73,6 +74,9 @@ func runDaemonCommand(cmd *cobra.Command, args []string) {
 	// register the monitors service
 	srv_monitor.RegisterMonitorServer(s, &daemon.MonitorService{})
 
+	// register the settings service
+	srv_settings.RegisterSettingsServer(s, &daemon.SettingsService{})
+
 	if !daemonize {
 		// When parent process ends terminate also the daemon
 		go func() {
diff --git a/commands/daemon/settings.go b/commands/daemon/settings.go
new file mode 100644
index 00000000000..57757934bbb
--- /dev/null
+++ b/commands/daemon/settings.go
@@ -0,0 +1,91 @@
+// This file is part of arduino-cli.
+//
+// Copyright 2019 ARDUINO SA (http://www.arduino.cc/)
+//
+// This software is released under the GNU General Public License version 3,
+// which covers the main part of arduino-cli.
+// The terms of this license can be found at:
+// https://www.gnu.org/licenses/gpl-3.0.en.html
+//
+// You can be released from the requirements of the above licenses by purchasing
+// a commercial license. Buying such a license is mandatory if you want to
+// modify or otherwise use the software for commercial activities involving the
+// Arduino software without disclosing the source code of your own applications.
+// To purchase a commercial license, send an email to license@arduino.cc.
+
+package daemon
+
+import (
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+
+	rpc "github.com/arduino/arduino-cli/rpc/settings"
+	"github.com/spf13/viper"
+)
+
+// SettingsService implements the `Settings` service
+type SettingsService struct{}
+
+// GetAll returns a message with a string field containing all the settings
+// currently in use, marshalled in JSON format.
+func (s *SettingsService) GetAll(ctx context.Context, req *rpc.GetAllRequest) (*rpc.RawData, error) {
+	b, err := json.Marshal(viper.AllSettings())
+	if err == nil {
+		return &rpc.RawData{
+			JsonData: string(b),
+		}, nil
+	}
+
+	return nil, err
+}
+
+// Merge applies multiple settings values at once.
+func (s *SettingsService) Merge(ctx context.Context, req *rpc.RawData) (*rpc.MergeResponse, error) {
+	var toMerge map[string]interface{}
+	if err := json.Unmarshal([]byte(req.GetJsonData()), &toMerge); err != nil {
+		return nil, err
+	}
+
+	if err := viper.MergeConfigMap(toMerge); err != nil {
+		return nil, err
+	}
+
+	return &rpc.MergeResponse{}, nil
+}
+
+// GetValue returns a settings value given its key. If the key is not present
+// an error will be returned, so that we distinguish empty settings from missing
+// ones.
+func (s *SettingsService) GetValue(ctx context.Context, req *rpc.GetValueRequest) (*rpc.Value, error) {
+	key := req.GetKey()
+	value := &rpc.Value{}
+
+	fmt.Println(viper.AllKeys())
+
+	if !viper.InConfig(key) {
+		return nil, errors.New("key not found in settings")
+	}
+
+	b, err := json.Marshal(viper.Get(key))
+	if err == nil {
+		value.Key = key
+		value.JsonData = string(b)
+	}
+
+	return value, err
+}
+
+// SetValue updates or set a value for a certain key.
+func (s *SettingsService) SetValue(ctx context.Context, val *rpc.Value) (*rpc.SetValueResponse, error) {
+	key := val.GetKey()
+	var value interface{}
+
+	err := json.Unmarshal([]byte(val.GetJsonData()), &value)
+	if err == nil {
+		viper.Set(key, value)
+	}
+
+	return &rpc.SetValueResponse{}, err
+}
diff --git a/commands/daemon/settings_test.go b/commands/daemon/settings_test.go
new file mode 100644
index 00000000000..6a88cf82c93
--- /dev/null
+++ b/commands/daemon/settings_test.go
@@ -0,0 +1,86 @@
+// This file is part of arduino-cli.
+//
+// Copyright 2019 ARDUINO SA (http://www.arduino.cc/)
+//
+// This software is released under the GNU General Public License version 3,
+// which covers the main part of arduino-cli.
+// The terms of this license can be found at:
+// https://www.gnu.org/licenses/gpl-3.0.en.html
+//
+// You can be released from the requirements of the above licenses by purchasing
+// a commercial license. Buying such a license is mandatory if you want to
+// modify or otherwise use the software for commercial activities involving the
+// Arduino software without disclosing the source code of your own applications.
+// To purchase a commercial license, send an email to license@arduino.cc.
+
+package daemon
+
+import (
+	"context"
+	"encoding/json"
+	"fmt"
+	"testing"
+
+	"github.com/spf13/viper"
+
+	"github.com/arduino/arduino-cli/configuration"
+	rpc "github.com/arduino/arduino-cli/rpc/settings"
+	"github.com/stretchr/testify/require"
+)
+
+var svc = SettingsService{}
+
+func init() {
+	configuration.Init("testdata")
+}
+
+func reset() {
+	viper.Reset()
+	configuration.Init("testdata")
+}
+
+func TestGetAll(t *testing.T) {
+	resp, err := svc.GetAll(context.Background(), &rpc.GetAllRequest{})
+	require.Nil(t, err)
+
+	content, err := json.Marshal(viper.AllSettings())
+	require.Nil(t, err)
+
+	require.Equal(t, string(content), resp.GetJsonData())
+}
+
+func TestMerge(t *testing.T) {
+	bulkSettings := `{"foo": "bar", "daemon":{"port":"420"}}`
+	_, err := svc.Merge(context.Background(), &rpc.RawData{JsonData: bulkSettings})
+	require.Nil(t, err)
+
+	fmt.Println(viper.AllSettings())
+	require.Equal(t, "420", viper.GetString("daemon.port"))
+	require.Equal(t, "bar", viper.GetString("foo"))
+
+	reset()
+}
+
+func TestGetValue(t *testing.T) {
+	key := &rpc.GetValueRequest{Key: "daemon"}
+	resp, err := svc.GetValue(context.Background(), key)
+	require.Nil(t, err)
+	require.Equal(t, `{"port":"50051"}`, resp.GetJsonData())
+}
+
+func TestGetValueNotFound(t *testing.T) {
+	key := &rpc.GetValueRequest{Key: "DOESNTEXIST"}
+	_, err := svc.GetValue(context.Background(), key)
+	require.NotNil(t, err)
+	require.Equal(t, `key not found in settings`, err.Error())
+}
+
+func TestSetValue(t *testing.T) {
+	val := &rpc.Value{
+		Key:      "foo",
+		JsonData: `"bar"`,
+	}
+	_, err := svc.SetValue(context.Background(), val)
+	require.Nil(t, err)
+	require.Equal(t, "bar", viper.GetString("foo"))
+}
diff --git a/commands/daemon/testdata/arduino-cli.yml b/commands/daemon/testdata/arduino-cli.yml
new file mode 100644
index 00000000000..61fb5f655eb
--- /dev/null
+++ b/commands/daemon/testdata/arduino-cli.yml
@@ -0,0 +1,16 @@
+board_manager:
+  additional_urls:
+    - http://foobar.com
+    - http://example.com
+
+daemon:
+  port: "50051"
+
+directories:
+  data: /home/massi/.arduino15
+  downloads: /home/massi/.arduino15/staging
+
+logging:
+  file: ""
+  format: text
+  level: info
diff --git a/go.sum b/go.sum
index 01ded9ff60e..973ca95cfc5 100644
--- a/go.sum
+++ b/go.sum
@@ -124,6 +124,7 @@ github.com/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M=
 github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
 github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
diff --git a/rpc/commands/board.pb.go b/rpc/commands/board.pb.go
index e2b2cae5612..33314fae378 100644
--- a/rpc/commands/board.pb.go
+++ b/rpc/commands/board.pb.go
@@ -682,46 +682,46 @@ func init() {
 func init() { proto.RegisterFile("commands/board.proto", fileDescriptor_0882eeddaa6507ab) }
 
 var fileDescriptor_0882eeddaa6507ab = []byte{
-	// 649 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x54, 0xdd, 0x6e, 0x13, 0x3d,
-	0x10, 0xd5, 0x7e, 0x6d, 0xf3, 0x25, 0x93, 0xa4, 0xa0, 0x55, 0x81, 0xa8, 0x5c, 0xd0, 0x5a, 0x14,
-	0x55, 0x42, 0x4d, 0x24, 0xb8, 0xe0, 0x82, 0x1f, 0xa9, 0x05, 0x21, 0x15, 0x05, 0x28, 0x56, 0x41,
-	0x08, 0x09, 0x05, 0xc7, 0xeb, 0x26, 0x56, 0x36, 0xeb, 0x8d, 0xed, 0xf4, 0x15, 0x78, 0x18, 0x6e,
-	0x79, 0x02, 0x9e, 0x0c, 0xff, 0x2e, 0x5b, 0x89, 0x50, 0x09, 0x7a, 0x15, 0xcf, 0xc9, 0xf1, 0xf8,
-	0xcc, 0xcc, 0x99, 0x85, 0x2d, 0x2a, 0xe6, 0x73, 0x52, 0x64, 0x6a, 0x30, 0x16, 0x44, 0x66, 0xfd,
-	0x52, 0x0a, 0x2d, 0xd2, 0x5b, 0x94, 0xf6, 0x4d, 0xb4, 0xe4, 0x85, 0xe8, 0xd3, 0x9c, 0xf7, 0x23,
-	0x69, 0xfb, 0x46, 0x45, 0xb7, 0x07, 0x51, 0x78, 0x3e, 0xca, 0xe0, 0xda, 0x91, 0xbd, 0xfe, 0x82,
-	0x69, 0xc2, 0x73, 0x85, 0xd9, 0x22, 0x7d, 0x0a, 0x4d, 0x5e, 0x28, 0x4d, 0x0a, 0xca, 0x7a, 0xc9,
-	0x4e, 0xb2, 0xdf, 0x7e, 0xb0, 0xdb, 0x5f, 0x91, 0xb5, 0x7f, 0x1c, 0x88, 0xb8, 0xba, 0x92, 0xa6,
-	0xb0, 0x7e, 0xb6, 0x18, 0x17, 0xbd, 0xff, 0xcc, 0xd5, 0x16, 0x76, 0x67, 0xf4, 0x23, 0x81, 0xeb,
-	0x17, 0x9f, 0x51, 0xa5, 0x25, 0x16, 0x64, 0xce, 0x22, 0xd1, 0x9e, 0xd3, 0x21, 0x6c, 0x52, 0x51,
-	0x9c, 0xf1, 0xc9, 0x48, 0x94, 0x9a, 0x8b, 0x42, 0xf5, 0xd6, 0x76, 0xd6, 0x8c, 0x82, 0xbd, 0x95,
-	0x0a, 0x9e, 0x3b, 0xfa, 0x5b, 0xc7, 0xc6, 0x5d, 0x5a, 0x8b, 0x94, 0xcd, 0x26, 0xd9, 0x62, 0xc9,
-	0x25, 0xcb, 0x46, 0x5a, 0x88, 0x5c, 0xf5, 0xd6, 0x2f, 0xc9, 0x86, 0x03, 0xfd, 0xd4, 0xb0, 0x71,
-	0x57, 0xd6, 0x22, 0x85, 0xbe, 0x26, 0xd0, 0xa9, 0xbf, 0x96, 0xde, 0x84, 0x86, 0x57, 0xe9, 0xda,
-	0xd4, 0xc2, 0x21, 0x4a, 0x77, 0xa1, 0xe3, 0x4f, 0xa3, 0x9c, 0x8c, 0x59, 0x1e, 0x0a, 0x6c, 0x7b,
-	0x6c, 0x68, 0xa1, 0xf4, 0x09, 0x34, 0xce, 0x49, 0xbe, 0x64, 0xb1, 0xbe, 0xbb, 0x97, 0xd4, 0xf7,
-	0xc1, 0x92, 0x71, 0xb8, 0x83, 0xbe, 0x40, 0xbb, 0x06, 0xa7, 0x5b, 0xb0, 0xe1, 0xfe, 0x08, 0x32,
-	0x7c, 0x90, 0xde, 0x81, 0xb6, 0x3b, 0x5c, 0x10, 0x01, 0x0e, 0xf2, 0x1a, 0xb6, 0xa1, 0xa9, 0x58,
-	0xce, 0xa8, 0x66, 0x99, 0x51, 0x91, 0xec, 0x37, 0x71, 0x15, 0xa3, 0x8f, 0xd0, 0xa9, 0xb7, 0xa2,
-	0x9a, 0x55, 0x52, 0x9b, 0x55, 0x0f, 0xfe, 0x3f, 0x67, 0x52, 0xd9, 0xfa, 0x7d, 0xf2, 0x18, 0xda,
-	0xcc, 0x25, 0xa1, 0x33, 0x32, 0x61, 0xd2, 0x65, 0x6e, 0xe1, 0x2a, 0x46, 0xdf, 0x13, 0xd8, 0x74,
-	0x56, 0x38, 0xd4, 0x9a, 0xd0, 0xe9, 0x15, 0x18, 0xee, 0x36, 0xb4, 0xdc, 0x06, 0x8c, 0x96, 0x92,
-	0x07, 0x25, 0x4d, 0x07, 0xbc, 0x97, 0xdc, 0x76, 0x41, 0xcd, 0x98, 0xa6, 0xd3, 0x51, 0x49, 0xf4,
-	0x34, 0xa8, 0x01, 0x0f, 0x9d, 0x18, 0x24, 0xdd, 0x83, 0x4d, 0xc5, 0x88, 0x34, 0x04, 0xcd, 0xe7,
-	0x4c, 0x2c, 0xb5, 0xf1, 0x88, 0xe5, 0x74, 0x3d, 0x7a, 0xea, 0x41, 0xf4, 0x39, 0xec, 0x49, 0x54,
-	0x6d, 0xfc, 0xfb, 0x0a, 0xba, 0x9a, 0xa8, 0xd9, 0xc8, 0x2c, 0xd2, 0x44, 0x32, 0xa5, 0x82, 0xf6,
-	0xd5, 0xe6, 0x3a, 0x35, 0xec, 0x93, 0x40, 0xc6, 0x1d, 0x5d, 0x8b, 0xd0, 0x6b, 0xe8, 0xb8, 0xf4,
-	0x43, 0xae, 0xf4, 0xbf, 0xb7, 0x04, 0x0d, 0xa1, 0x5b, 0x4b, 0x67, 0xb4, 0x3e, 0x86, 0x8d, 0x52,
-	0x48, 0x6d, 0x35, 0xfe, 0x79, 0x01, 0xcc, 0x82, 0x3a, 0x07, 0x9c, 0x18, 0x36, 0xf6, 0x77, 0xd0,
-	0x37, 0x63, 0xfc, 0x3a, 0x6e, 0x27, 0x4f, 0xb2, 0xac, 0xaa, 0xd9, 0x4c, 0x3e, 0x84, 0x6e, 0xf2,
-	0xf6, 0xbb, 0x42, 0x45, 0x74, 0x5c, 0x15, 0xdb, 0x4e, 0xc7, 0x73, 0xf0, 0xa4, 0x9f, 0x46, 0x37,
-	0xa2, 0xde, 0x96, 0xcf, 0xa0, 0xe1, 0xa6, 0x17, 0x97, 0xf5, 0xde, 0x4a, 0xad, 0x55, 0x89, 0xc7,
-	0x9a, 0xcd, 0x71, 0xb8, 0x85, 0x16, 0x61, 0x52, 0xf6, 0x8f, 0xc3, 0x3c, 0xbf, 0x02, 0x83, 0x59,
-	0x0f, 0x79, 0x8b, 0x10, 0x39, 0x51, 0xa6, 0xae, 0x35, 0xe7, 0x21, 0x07, 0x1d, 0x1a, 0x04, 0xe1,
-	0xf0, 0x75, 0xab, 0x9e, 0x34, 0x1d, 0xff, 0x55, 0x46, 0xf2, 0x57, 0x65, 0x3c, 0xaa, 0x8d, 0xd0,
-	0xfe, 0xf1, 0xdb, 0x15, 0x34, 0xd8, 0xcb, 0x77, 0x47, 0x6f, 0xe2, 0x27, 0xd4, 0x9e, 0x8f, 0x0e,
-	0x3e, 0xdd, 0x9f, 0x70, 0x3d, 0x5d, 0x8e, 0xed, 0x0b, 0x83, 0xf0, 0x62, 0xfc, 0x3d, 0x30, 0x2f,
-	0x0f, 0x64, 0x49, 0x07, 0xf1, 0xf5, 0x71, 0xc3, 0x75, 0xff, 0xe1, 0xcf, 0x00, 0x00, 0x00, 0xff,
-	0xff, 0x88, 0xae, 0x33, 0x62, 0x4f, 0x06, 0x00, 0x00,
+	// 656 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xdd, 0x6e, 0x13, 0x3b,
+	0x10, 0xd6, 0x36, 0x69, 0x4e, 0x32, 0x49, 0x7a, 0x8e, 0xac, 0x9e, 0x73, 0x56, 0xe5, 0x82, 0x74,
+	0x45, 0x51, 0x24, 0xd4, 0x44, 0x2a, 0x17, 0x5c, 0xf0, 0x23, 0xb5, 0x54, 0x48, 0x45, 0x01, 0x8a,
+	0x55, 0x10, 0x42, 0x42, 0x8b, 0xe3, 0x75, 0x13, 0x2b, 0x9b, 0xf5, 0xc6, 0x76, 0xfa, 0x0a, 0x3c,
+	0x0c, 0xb7, 0x3c, 0x01, 0x4f, 0x86, 0xfc, 0xb7, 0xda, 0x4a, 0x84, 0x4a, 0xd0, 0xab, 0x9d, 0x99,
+	0xfd, 0x3c, 0xf3, 0xcd, 0xcc, 0x67, 0xc3, 0x2e, 0x15, 0xcb, 0x25, 0x29, 0x32, 0x35, 0x9e, 0x0a,
+	0x22, 0xb3, 0x51, 0x29, 0x85, 0x16, 0xe8, 0x7f, 0x4a, 0x47, 0x44, 0x66, 0x6b, 0x5e, 0x88, 0x11,
+	0xcd, 0xf9, 0x28, 0x80, 0xf6, 0xfe, 0xad, 0xe0, 0xc6, 0x10, 0x85, 0xc3, 0x27, 0x19, 0xfc, 0x7d,
+	0x62, 0x8e, 0x9f, 0x32, 0x4d, 0x78, 0xae, 0x30, 0x5b, 0xa1, 0xa7, 0xd0, 0xe6, 0x85, 0xd2, 0xa4,
+	0xa0, 0x2c, 0x8e, 0x06, 0xd1, 0xb0, 0x7b, 0xb4, 0x3f, 0xda, 0x90, 0x75, 0x74, 0xe6, 0x81, 0xb8,
+	0x3a, 0x82, 0x10, 0x34, 0x2f, 0x57, 0xd3, 0x22, 0xde, 0x1a, 0x44, 0xc3, 0x0e, 0xb6, 0x76, 0xf2,
+	0x3d, 0x82, 0x7f, 0xae, 0x97, 0x51, 0xa5, 0x01, 0x16, 0x64, 0xc9, 0x02, 0xd0, 0xd8, 0x68, 0x02,
+	0x3b, 0x54, 0x14, 0x97, 0x7c, 0x96, 0x8a, 0x52, 0x73, 0x51, 0xa8, 0xb8, 0x31, 0x68, 0x0c, 0xbb,
+	0x47, 0x07, 0x1b, 0x19, 0x3c, 0xb7, 0xf0, 0x37, 0x16, 0x8d, 0xfb, 0xb4, 0xe6, 0x29, 0x93, 0x4d,
+	0xb2, 0xd5, 0x9a, 0x4b, 0x96, 0xa5, 0x5a, 0x88, 0x5c, 0xc5, 0xcd, 0x1b, 0xb2, 0x61, 0x0f, 0xbf,
+	0x10, 0x22, 0xc7, 0x7d, 0x59, 0xf3, 0x54, 0xf2, 0x25, 0x82, 0x5e, 0xbd, 0x1a, 0xfa, 0x0f, 0x5a,
+	0x8e, 0xa5, 0x1d, 0x53, 0x07, 0x7b, 0x0f, 0xed, 0x43, 0xcf, 0x59, 0x69, 0x4e, 0xa6, 0x2c, 0xf7,
+	0x0d, 0x76, 0x5d, 0x6c, 0x62, 0x42, 0xe8, 0x09, 0xb4, 0xae, 0x48, 0xbe, 0x66, 0xa1, 0xbf, 0x7b,
+	0x37, 0xf4, 0xf7, 0xde, 0x80, 0xb1, 0x3f, 0x93, 0x7c, 0x86, 0x6e, 0x2d, 0x8c, 0x76, 0x61, 0xdb,
+	0xfe, 0xf0, 0x34, 0x9c, 0x83, 0xee, 0x42, 0xd7, 0x1a, 0xd7, 0x48, 0x80, 0x0d, 0x39, 0x0e, 0x7b,
+	0xd0, 0x56, 0x2c, 0x67, 0x54, 0xb3, 0x2c, 0x6e, 0x0c, 0xa2, 0x61, 0x1b, 0x57, 0x7e, 0xf2, 0x01,
+	0x7a, 0xf5, 0x51, 0x54, 0xbb, 0x8a, 0x6a, 0xbb, 0x8a, 0xe1, 0xaf, 0x2b, 0x26, 0x95, 0xe9, 0xdf,
+	0x25, 0x0f, 0xae, 0xc9, 0x5c, 0x12, 0xba, 0x20, 0x33, 0x26, 0x6d, 0xe6, 0x0e, 0xae, 0xfc, 0xe4,
+	0x5b, 0x04, 0x3b, 0x56, 0x0a, 0xc7, 0x5a, 0x13, 0x3a, 0xbf, 0x05, 0xc1, 0xdd, 0x81, 0x8e, 0xbd,
+	0x01, 0xe9, 0x5a, 0x72, 0xcf, 0xa4, 0x6d, 0x03, 0xef, 0x24, 0x37, 0x53, 0x50, 0x0b, 0xa6, 0xe9,
+	0x3c, 0x2d, 0x89, 0x9e, 0x7b, 0x36, 0xe0, 0x42, 0xe7, 0x44, 0xcf, 0xd1, 0x01, 0xec, 0x28, 0x46,
+	0x24, 0x9d, 0xa7, 0x9a, 0x2f, 0x99, 0x58, 0xeb, 0xb8, 0x69, 0x31, 0x7d, 0x17, 0xbd, 0x70, 0xc1,
+	0xe4, 0x93, 0xbf, 0x27, 0x81, 0xb5, 0x2a, 0xd1, 0x4b, 0xe8, 0x6b, 0xa2, 0x16, 0x69, 0x29, 0xc5,
+	0x4c, 0x32, 0xa5, 0x3c, 0xf7, 0xcd, 0xe2, 0xba, 0x20, 0x6a, 0x71, 0xee, 0xc1, 0xb8, 0xa7, 0x6b,
+	0x5e, 0xf2, 0x0a, 0x7a, 0x36, 0xfd, 0x84, 0x2b, 0xfd, 0xe7, 0x23, 0x49, 0x26, 0xd0, 0xaf, 0xa5,
+	0x53, 0x25, 0x7a, 0x0c, 0xdb, 0xa5, 0x90, 0xda, 0x70, 0xfc, 0xf5, 0x05, 0x38, 0x65, 0xda, 0x2a,
+	0xe0, 0x5c, 0x48, 0x8d, 0xdd, 0x99, 0xe4, 0x6b, 0x04, 0xbd, 0x7a, 0xdc, 0x6c, 0x9e, 0x64, 0x59,
+	0xd5, 0x73, 0x07, 0x07, 0xd7, 0x6e, 0xde, 0xbc, 0x2b, 0x54, 0x04, 0xc5, 0x55, 0xbe, 0x99, 0x74,
+	0xb0, 0xbd, 0x26, 0xdd, 0x36, 0xfa, 0x21, 0xea, 0x64, 0xf9, 0x0c, 0x5a, 0x76, 0x7b, 0xe1, 0xb2,
+	0xde, 0xdf, 0xc8, 0xb5, 0x6a, 0xf1, 0x4c, 0xb3, 0x25, 0xf6, 0xa7, 0x92, 0x95, 0xdf, 0x94, 0xf9,
+	0x71, 0x9c, 0xe7, 0xb7, 0x20, 0x30, 0xa3, 0x21, 0x27, 0x11, 0x22, 0x67, 0x2a, 0xde, 0x1a, 0x34,
+	0xac, 0x86, 0x6c, 0xe8, 0x58, 0xce, 0x54, 0x82, 0xfd, 0xeb, 0x56, 0x95, 0x54, 0x65, 0xad, 0x8d,
+	0xe8, 0xb7, 0xda, 0x78, 0x54, 0x5b, 0xa1, 0xf9, 0xf1, 0xd3, 0x2b, 0x88, 0xa0, 0xf9, 0xe2, 0xed,
+	0xc9, 0xeb, 0xf0, 0x84, 0x1a, 0xfb, 0xe4, 0xf0, 0xe3, 0x83, 0x19, 0xd7, 0xf3, 0xf5, 0xd4, 0x54,
+	0x18, 0xfb, 0x8a, 0xe1, 0x7b, 0x48, 0x73, 0x3e, 0x96, 0x25, 0x1d, 0x87, 0xea, 0xd3, 0x96, 0x9d,
+	0xfe, 0xc3, 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x88, 0xae, 0x33, 0x62, 0x4f, 0x06, 0x00, 0x00,
 }
diff --git a/rpc/commands/commands.pb.go b/rpc/commands/commands.pb.go
index c3c306cb4eb..ef60158b7d3 100644
--- a/rpc/commands/commands.pb.go
+++ b/rpc/commands/commands.pb.go
@@ -616,70 +616,70 @@ func init() { proto.RegisterFile("commands/commands.proto", fileDescriptor_36900
 
 var fileDescriptor_3690061a1131852d = []byte{
 	// 1036 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x58, 0xcd, 0x53, 0xdb, 0x46,
-	0x14, 0xaf, 0x49, 0x1a, 0xe0, 0x19, 0x93, 0x64, 0xe3, 0x04, 0x46, 0x27, 0xa2, 0x7c, 0xf0, 0x55,
-	0x0c, 0xa5, 0x9d, 0xf6, 0xd4, 0xce, 0x38, 0xb8, 0x07, 0x52, 0x3a, 0x64, 0x9c, 0x3a, 0xd3, 0xc9,
-	0xc5, 0x5d, 0x4b, 0x8b, 0xd9, 0x41, 0x68, 0xc5, 0xae, 0xa0, 0xe5, 0xd4, 0x73, 0x0f, 0xfd, 0x6b,
-	0x7a, 0xeb, 0x3f, 0xd2, 0x7f, 0xa7, 0xbb, 0xab, 0x5d, 0x59, 0x02, 0xeb, 0x83, 0x40, 0x4f, 0x46,
-	0xef, 0xfd, 0xde, 0xef, 0x7d, 0x3f, 0x19, 0xc3, 0x92, 0xc7, 0x4e, 0x4f, 0x71, 0xe8, 0x8b, 0x6d,
-	0xfb, 0x47, 0x27, 0xe2, 0x2c, 0x66, 0x68, 0xc9, 0xf3, 0x3a, 0x98, 0xfb, 0xe7, 0x34, 0x64, 0x1d,
-	0x2f, 0xa0, 0x1d, 0xab, 0x76, 0x9e, 0xe6, 0x2c, 0x58, 0x98, 0xe0, 0x9d, 0x76, 0x2a, 0x1e, 0x31,
-	0x69, 0x67, 0xa4, 0xcf, 0xb2, 0xe0, 0x88, 0x06, 0xc4, 0xc8, 0x9f, 0x64, 0xe4, 0xdc, 0x0a, 0x27,
-	0xcc, 0xe7, 0x51, 0xc0, 0xb0, 0xe5, 0x40, 0xa9, 0x38, 0xa0, 0xa3, 0x44, 0xe6, 0xfe, 0xdd, 0x80,
-	0xd6, 0x1e, 0x0b, 0x8f, 0xe8, 0xf8, 0x9c, 0xe3, 0x98, 0xb2, 0x10, 0x2d, 0xc3, 0xac, 0x8f, 0x63,
-	0xdc, 0xa3, 0x7c, 0xb9, 0xb1, 0xd2, 0x58, 0x9b, 0xef, 0xdb, 0x47, 0xf4, 0x12, 0x5a, 0xe2, 0x84,
-	0xc4, 0xde, 0xf1, 0x88, 0xb1, 0x13, 0xa5, 0x9f, 0xd1, 0xfa, 0xbc, 0x10, 0xb9, 0xb0, 0xe0, 0xb3,
-	0xdf, 0x42, 0xe5, 0x57, 0x28, 0xd0, 0x3d, 0x0d, 0xca, 0xc9, 0xd0, 0xf7, 0xe0, 0xe8, 0xe4, 0x7e,
-	0xc2, 0x21, 0x1e, 0x13, 0xde, 0xf5, 0x7d, 0xaa, 0x7c, 0xe3, 0x60, 0xc0, 0x03, 0xb1, 0x7c, 0x7f,
-	0xe5, 0x9e, 0xb4, 0x28, 0x41, 0xb8, 0x7f, 0x36, 0x60, 0x76, 0x3f, 0xa4, 0x71, 0x9f, 0x9c, 0xa1,
-	0x03, 0x68, 0x79, 0xd9, 0x04, 0x74, 0xd4, 0xcd, 0xdd, 0xd7, 0x9d, 0x82, 0xba, 0x77, 0x72, 0xe9,
-	0xf6, 0xf3, 0xc6, 0x68, 0x07, 0xda, 0xb2, 0x38, 0x1c, 0xf3, 0xcb, 0xe1, 0x69, 0xe2, 0x7a, 0xc8,
-	0xc2, 0xe0, 0x52, 0xa7, 0x3a, 0xd7, 0x47, 0x46, 0x67, 0xa2, 0x3a, 0x94, 0x1a, 0xf7, 0xdf, 0x19,
-	0x98, 0x4b, 0x62, 0x11, 0x11, 0xfa, 0x0e, 0xe6, 0x68, 0x28, 0x62, 0x1c, 0x7a, 0xc4, 0xc4, 0xf1,
-	0xbc, 0x30, 0x8e, 0x7d, 0x03, 0xec, 0xa7, 0x26, 0xe8, 0x6b, 0x78, 0x16, 0x05, 0x38, 0x3e, 0x62,
-	0xfc, 0x54, 0x0c, 0x69, 0xe8, 0x93, 0xdf, 0x87, 0x84, 0x73, 0xc6, 0x85, 0xf4, 0xaf, 0x6a, 0xd2,
-	0x4e, 0xb5, 0xfb, 0x4a, 0xf9, 0x83, 0xd6, 0xa1, 0x5d, 0x78, 0x9a, 0xc4, 0x45, 0x49, 0xce, 0xca,
-	0x94, 0xfe, 0x49, 0xaa, 0x9c, 0x18, 0xa1, 0x0f, 0xf0, 0xd8, 0x76, 0x64, 0x28, 0x27, 0x61, 0xcc,
-	0x89, 0x50, 0x85, 0x57, 0x11, 0xaf, 0x17, 0x46, 0xdc, 0x33, 0x16, 0xef, 0x8c, 0x41, 0xff, 0x91,
-	0x7f, 0x45, 0x82, 0xde, 0x42, 0x2b, 0xc6, 0xe2, 0x64, 0xc2, 0xf9, 0xb9, 0xe6, 0x7c, 0x55, 0xc8,
-	0xf9, 0xb3, 0x44, 0xa7, 0x7c, 0x0b, 0x71, 0xe6, 0xc9, 0xfd, 0x11, 0xa0, 0x47, 0x44, 0xcc, 0xd9,
-	0xa5, 0xea, 0xf3, 0xed, 0x4a, 0xeb, 0xb6, 0xa0, 0x99, 0x92, 0x89, 0xc8, 0x7d, 0x0b, 0xf3, 0xf2,
-	0xd3, 0xc3, 0xe1, 0x1d, 0x50, 0x5f, 0x00, 0x58, 0x2e, 0x39, 0x02, 0xc5, 0x3d, 0x6c, 0x7c, 0x4a,
-	0x0f, 0x67, 0x0a, 0x7b, 0xe8, 0x1e, 0xc2, 0xe2, 0x20, 0x92, 0xcb, 0x49, 0xb4, 0xec, 0x0e, 0x12,
-	0xa1, 0xf0, 0x30, 0x47, 0x28, 0xb3, 0x99, 0x3a, 0x27, 0x8d, 0x5b, 0xcf, 0x89, 0xfb, 0x0b, 0x2c,
-	0x25, 0xae, 0x0e, 0x72, 0x89, 0xdd, 0x41, 0x12, 0x1c, 0x96, 0xa7, 0x33, 0xff, 0x8f, 0xd9, 0x2c,
-	0x00, 0x7c, 0x20, 0x5c, 0xa8, 0x7b, 0x42, 0xce, 0xdc, 0x55, 0x68, 0xa6, 0x4f, 0xd2, 0xa9, 0x3c,
-	0xa8, 0x17, 0xc9, 0xa3, 0x3d, 0xa8, 0xe6, 0x71, 0xf7, 0x9f, 0x36, 0x34, 0xbb, 0x89, 0xcb, 0x3d,
-	0x79, 0xbd, 0xd1, 0x21, 0xdc, 0x57, 0x97, 0x04, 0xad, 0x94, 0xe4, 0xab, 0x8f, 0x9e, 0xf3, 0xbc,
-	0x02, 0x21, 0x27, 0xfc, 0xb3, 0x9d, 0x86, 0xcc, 0x77, 0xd6, 0x0c, 0x3d, 0x7a, 0x51, 0x9c, 0x5f,
-	0xba, 0x63, 0xce, 0xcb, 0x6a, 0x90, 0x62, 0x46, 0xef, 0xe1, 0x41, 0x32, 0xf1, 0xc8, 0x2d, 0xb4,
-	0x48, 0xd7, 0xcb, 0x79, 0x51, 0x89, 0xd1, 0xa4, 0x3e, 0x34, 0x33, 0xd3, 0x87, 0x56, 0x0b, 0xad,
-	0xf2, 0x43, 0xef, 0xac, 0xd5, 0x03, 0x9a, 0x92, 0xfc, 0x01, 0xed, 0x69, 0xe3, 0x81, 0x76, 0x2a,
-	0x58, 0xae, 0xcd, 0xa9, 0xf3, 0xe5, 0x0d, 0x2d, 0x26, 0x3d, 0x31, 0xd3, 0x51, 0xd2, 0x93, 0xc9,
-	0x34, 0x95, 0xf4, 0x24, 0x33, 0x64, 0xb2, 0x7c, 0x1e, 0x2c, 0xbc, 0x51, 0x6f, 0xcc, 0x1e, 0x89,
-	0x31, 0x0d, 0x04, 0x2a, 0x2e, 0x4b, 0x16, 0xa6, 0x3c, 0xac, 0xd7, 0x44, 0xca, 0x59, 0x1e, 0x41,
-	0x53, 0xcb, 0xba, 0x71, 0x8c, 0xbd, 0xe3, 0x92, 0x1e, 0x65, 0x50, 0xe5, 0x3d, 0xca, 0x01, 0x45,
-	0x24, 0x0b, 0xf4, 0x11, 0xe6, 0xb5, 0xf0, 0x80, 0x8a, 0x18, 0xbd, 0x2a, 0x37, 0x54, 0x18, 0xc5,
-	0xff, 0xba, 0x0e, 0x4c, 0xc6, 0x6f, 0x8b, 0xa4, 0x04, 0xdd, 0x20, 0xa8, 0x2a, 0x92, 0x81, 0xd5,
-	0x28, 0x52, 0x8a, 0xd4, 0x57, 0x66, 0x76, 0x2f, 0xf9, 0x92, 0x56, 0xd2, 0x61, 0x83, 0x28, 0xef,
-	0x70, 0x0a, 0xd2, 0x85, 0x09, 0xe1, 0xe1, 0x3b, 0xf3, 0xee, 0xd0, 0x77, 0x4f, 0xc6, 0xbf, 0x59,
-	0x68, 0x7a, 0x05, 0xa9, 0xfc, 0x7c, 0x51, 0x1f, 0xac, 0xfd, 0x9d, 0xc1, 0x23, 0xab, 0xb0, 0x37,
-	0x10, 0x55, 0x73, 0x58, 0xa8, 0xf2, 0xb8, 0x75, 0x03, 0xb4, 0x76, 0x19, 0xc3, 0x63, 0xab, 0x19,
-	0x84, 0xd4, 0x24, 0x59, 0xcd, 0x92, 0x62, 0x95, 0xd3, 0xce, 0x4d, 0xe0, 0x57, 0x0b, 0x3b, 0x88,
-	0xc6, 0x1c, 0xfb, 0xa4, 0x46, 0x61, 0x0d, 0xb2, 0x5e, 0x61, 0x53, 0xb0, 0xf6, 0x27, 0xcf, 0xe7,
-	0x40, 0x7f, 0x31, 0x2f, 0x39, 0x9f, 0x09, 0xa0, 0xfc, 0x7c, 0x5a, 0x8c, 0x26, 0xa5, 0xb0, 0x68,
-	0xbd, 0xbd, 0x27, 0x98, 0xcb, 0xed, 0xdc, 0xa8, 0x0c, 0x2b, 0x01, 0x2a, 0x27, 0x9b, 0xb5, 0xb1,
-	0xc9, 0x16, 0x59, 0xa9, 0x5e, 0xd2, 0xb5, 0x4a, 0x63, 0xbb, 0xa7, 0xeb, 0x35, 0x91, 0xd2, 0x89,
-	0x6c, 0x4a, 0x72, 0x41, 0x2f, 0xd3, 0xe1, 0x2b, 0x0e, 0xf2, 0x0a, 0xb2, 0xbc, 0x29, 0xd7, 0xc0,
-	0xba, 0x7e, 0x27, 0xb0, 0x68, 0x14, 0x76, 0xb9, 0x36, 0xaa, 0x18, 0x32, 0xbb, 0xb5, 0x59, 0x1b,
-	0x6b, 0x57, 0xcb, 0xc8, 0x27, 0x63, 0x5e, 0x19, 0x70, 0x6e, 0xca, 0xb7, 0x6e, 0x80, 0xb6, 0xab,
-	0x65, 0x35, 0xc9, 0x30, 0x76, 0x4b, 0x57, 0xeb, 0x1a, 0xb6, 0x7c, 0xb5, 0xa6, 0xc0, 0xb5, 0xd7,
-	0xbf, 0x1a, 0xe0, 0x18, 0x9d, 0x94, 0xb0, 0xe0, 0x82, 0xf4, 0x48, 0x44, 0xe4, 0x0b, 0x31, 0xf4,
-	0xe4, 0x9b, 0x11, 0x7d, 0x53, 0x45, 0x38, 0xc5, 0x48, 0x05, 0xf2, 0xed, 0x27, 0xd9, 0xc9, 0xa9,
-	0x3a, 0x82, 0x96, 0x41, 0x98, 0x25, 0x59, 0xaf, 0x62, 0x9a, 0xec, 0xc8, 0x46, 0x5d, 0xa8, 0xf4,
-	0xf3, 0x2b, 0x34, 0x8d, 0x50, 0x6f, 0xc8, 0x6a, 0x95, 0xa9, 0x5d, 0x90, 0xb5, 0x7a, 0x40, 0x11,
-	0xbd, 0xd9, 0xfa, 0xb8, 0x39, 0xa6, 0xf1, 0xf1, 0xf9, 0x48, 0x41, 0xb6, 0x8d, 0x89, 0xfd, 0xdc,
-	0x92, 0xa6, 0xdb, 0x3c, 0xf2, 0xd2, 0x1f, 0x23, 0x46, 0x0f, 0xf4, 0xff, 0xfb, 0x5f, 0xfd, 0x17,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x98, 0xcb, 0x53, 0x1b, 0x37,
+	0x18, 0xc0, 0x63, 0x92, 0xf2, 0xf8, 0x8c, 0x49, 0xa2, 0x38, 0xc1, 0xe3, 0x13, 0xd9, 0x3c, 0x30,
+	0x50, 0x0c, 0xa5, 0x9d, 0xf6, 0xd4, 0xce, 0x38, 0xb8, 0x07, 0x52, 0x3a, 0x64, 0x4c, 0xcd, 0x74,
+	0x72, 0x71, 0xe5, 0x5d, 0x61, 0x34, 0x5e, 0x56, 0x42, 0x5a, 0x68, 0x7d, 0xea, 0xb9, 0x87, 0xfe,
+	0x35, 0xbd, 0xf5, 0x1f, 0xe9, 0xbf, 0xd3, 0x91, 0x56, 0x5a, 0xef, 0x82, 0xf7, 0x41, 0x20, 0x27,
+	0xd0, 0xf7, 0xfd, 0xbe, 0x87, 0xbe, 0x87, 0x6c, 0x80, 0x55, 0x97, 0x9d, 0x9f, 0xe3, 0xc0, 0x93,
+	0x3b, 0xf6, 0x97, 0x36, 0x17, 0x2c, 0x64, 0x68, 0xd5, 0x75, 0xdb, 0x58, 0x78, 0x97, 0x34, 0x60,
+	0x6d, 0xd7, 0xa7, 0x6d, 0xab, 0x6e, 0x3e, 0x4f, 0x59, 0xb0, 0x20, 0xe2, 0x9b, 0xf5, 0x58, 0x3c,
+	0x64, 0x58, 0x78, 0x46, 0xfa, 0x22, 0x09, 0x73, 0xea, 0x13, 0x23, 0x7f, 0x96, 0x90, 0x0b, 0x2b,
+	0x9c, 0x7a, 0xbe, 0xe4, 0x3e, 0xc3, 0xd6, 0x07, 0x8a, 0xc5, 0x3e, 0x1d, 0x46, 0x32, 0xe7, 0x9f,
+	0x0a, 0xd4, 0xf6, 0x59, 0x70, 0x4a, 0x47, 0x97, 0x02, 0x87, 0x94, 0x05, 0xa8, 0x01, 0x0b, 0x1e,
+	0x0e, 0x71, 0x97, 0x8a, 0x46, 0x65, 0xad, 0xd2, 0x5a, 0xea, 0xd9, 0x23, 0x7a, 0x0d, 0x35, 0x39,
+	0x26, 0xa1, 0x7b, 0x36, 0x64, 0x6c, 0xac, 0xf4, 0x73, 0x5a, 0x9f, 0x16, 0x22, 0x07, 0x96, 0x3d,
+	0xf6, 0x7b, 0xa0, 0xe2, 0x4a, 0x05, 0x3d, 0xd4, 0x50, 0x4a, 0x86, 0x7e, 0x80, 0xa6, 0xbe, 0xdc,
+	0xcf, 0x38, 0xc0, 0x23, 0x22, 0x3a, 0x9e, 0x47, 0x55, 0x6c, 0xec, 0xf7, 0x85, 0x2f, 0x1b, 0x8f,
+	0xd6, 0x1e, 0xb6, 0x96, 0x7a, 0x39, 0x84, 0xf3, 0x57, 0x05, 0x16, 0x0e, 0x02, 0x1a, 0xf6, 0xc8,
+	0x05, 0x3a, 0x84, 0x9a, 0x9b, 0xbc, 0x80, 0xce, 0xba, 0xba, 0xf7, 0xb6, 0x9d, 0x51, 0xf7, 0x76,
+	0xea, 0xba, 0xbd, 0xb4, 0x31, 0xda, 0x85, 0xba, 0x4f, 0x87, 0x02, 0x8b, 0xc9, 0xe0, 0x3c, 0x0a,
+	0x3d, 0x60, 0x81, 0x3f, 0xd1, 0x57, 0x5d, 0xec, 0x21, 0xa3, 0x33, 0x59, 0x1d, 0x05, 0xfe, 0xc4,
+	0xf9, 0x6f, 0x0e, 0x16, 0xa3, 0x5c, 0x24, 0x47, 0xdf, 0xc3, 0x22, 0x0d, 0x64, 0x88, 0x03, 0x97,
+	0x98, 0x3c, 0x5e, 0x66, 0xe6, 0x71, 0x60, 0xc0, 0x5e, 0x6c, 0x82, 0xbe, 0x81, 0x17, 0xdc, 0xc7,
+	0xe1, 0x29, 0x13, 0xe7, 0x72, 0x40, 0x03, 0x8f, 0xfc, 0x31, 0x20, 0x42, 0x30, 0x21, 0x1b, 0x73,
+	0xba, 0x26, 0xf5, 0x58, 0x7b, 0xa0, 0x94, 0x3f, 0x6a, 0x1d, 0xda, 0x83, 0xe7, 0x51, 0x5e, 0x94,
+	0xa4, 0xac, 0x4c, 0xe9, 0x9f, 0xc5, 0xca, 0xa9, 0x11, 0x3a, 0x81, 0xa7, 0xb6, 0x23, 0x03, 0x2e,
+	0xd8, 0x48, 0x10, 0xa9, 0x0a, 0xaf, 0x32, 0xde, 0xc8, 0xcc, 0xb8, 0x6b, 0x2c, 0x3e, 0x18, 0x83,
+	0xde, 0x13, 0xef, 0x9a, 0x04, 0xbd, 0x87, 0x5a, 0x88, 0xe5, 0x78, 0xea, 0xf3, 0x0b, 0xed, 0xf3,
+	0x4d, 0xa6, 0xcf, 0x5f, 0xb0, 0x1c, 0xc7, 0xfe, 0x96, 0xc3, 0xc4, 0xc9, 0xf9, 0x09, 0xa0, 0x4b,
+	0x64, 0x28, 0xd8, 0x44, 0xf5, 0xf9, 0x6e, 0xa5, 0x75, 0x6a, 0x50, 0x8d, 0x9d, 0x49, 0xee, 0xbc,
+	0x87, 0xa5, 0x1e, 0x91, 0x2e, 0x0e, 0xee, 0xc1, 0xf5, 0x15, 0x80, 0xf5, 0x25, 0x79, 0x4e, 0x0f,
+	0x2b, 0x9f, 0xd2, 0xc3, 0xb9, 0xcc, 0x1e, 0x3a, 0x47, 0xb0, 0xd2, 0xe7, 0x1e, 0x0e, 0x89, 0x96,
+	0xdd, 0xc3, 0x45, 0x28, 0x3c, 0x4e, 0x39, 0x94, 0x7c, 0xf6, 0x9c, 0x54, 0xee, 0x3c, 0x27, 0xce,
+	0xaf, 0xb0, 0x1a, 0x85, 0x3a, 0x4c, 0x5d, 0xec, 0x1e, 0x2e, 0x21, 0xa0, 0x31, 0xdb, 0xf3, 0x67,
+	0xbc, 0xcd, 0x32, 0xc0, 0x09, 0x11, 0x52, 0xbd, 0x27, 0xe4, 0xc2, 0x59, 0x87, 0x6a, 0x7c, 0x92,
+	0x5c, 0x3d, 0xa8, 0x57, 0xd1, 0xd1, 0x3e, 0xa8, 0xe6, 0xb8, 0xf7, 0x6f, 0x1d, 0xaa, 0x9d, 0x28,
+	0xe4, 0x3e, 0x13, 0x04, 0x1d, 0xc1, 0x23, 0xf5, 0x92, 0xa0, 0xb5, 0x9c, 0xfb, 0xea, 0x47, 0xaf,
+	0xf9, 0xb2, 0x80, 0x90, 0xdc, 0x79, 0xb0, 0x5b, 0x41, 0x27, 0xb0, 0x60, 0x86, 0x1e, 0xbd, 0xca,
+	0xbe, 0x5f, 0xbc, 0x63, 0xcd, 0xd7, 0xc5, 0x90, 0xf2, 0x8c, 0x8e, 0x61, 0x3e, 0x9a, 0x78, 0xe4,
+	0x64, 0x5a, 0xc4, 0xeb, 0xd5, 0x7c, 0x55, 0xc8, 0x68, 0xa7, 0x1e, 0x54, 0x13, 0xd3, 0x87, 0xd6,
+	0x33, 0xad, 0xd2, 0x43, 0xdf, 0x6c, 0x95, 0x03, 0x4d, 0x49, 0xfe, 0x84, 0xfa, 0xac, 0xf1, 0x40,
+	0xbb, 0x05, 0x5e, 0x6e, 0xcc, 0x69, 0xf3, 0xab, 0x5b, 0x5a, 0x4c, 0x7b, 0x62, 0xa6, 0x23, 0xa7,
+	0x27, 0xd3, 0x69, 0xca, 0xe9, 0x49, 0x62, 0xc8, 0x9c, 0x07, 0xc8, 0x85, 0xe5, 0x77, 0xea, 0x13,
+	0xb3, 0x4b, 0x42, 0x4c, 0x7d, 0x89, 0xb2, 0xcb, 0x92, 0xc4, 0x54, 0x84, 0x8d, 0x92, 0xa4, 0xe4,
+	0x68, 0x08, 0x55, 0x2d, 0xeb, 0x84, 0x21, 0x76, 0xcf, 0x72, 0x7a, 0x94, 0xa0, 0xf2, 0x7b, 0x94,
+	0x02, 0x25, 0xdf, 0xad, 0xa0, 0x8f, 0xb0, 0xa4, 0x85, 0x87, 0x54, 0x86, 0xe8, 0x4d, 0xbe, 0xa1,
+	0x62, 0x94, 0xff, 0xb7, 0x65, 0x30, 0xc9, 0xe3, 0x22, 0x29, 0x41, 0xc7, 0xf7, 0x8b, 0x8a, 0x64,
+	0xb0, 0x12, 0x45, 0x8a, 0x49, 0xfd, 0xca, 0x2c, 0xec, 0x47, 0x5f, 0xd2, 0x72, 0x3a, 0x6c, 0x88,
+	0xfc, 0x0e, 0xc7, 0x90, 0x2e, 0x4c, 0x00, 0x8f, 0x3f, 0x98, 0xcf, 0x0e, 0xfd, 0xee, 0xf9, 0x3e,
+	0xda, 0xca, 0x34, 0xbd, 0x46, 0xaa, 0x38, 0x5f, 0x96, 0x87, 0x75, 0xbc, 0x0b, 0x78, 0x62, 0x15,
+	0xf6, 0x0d, 0x44, 0xc5, 0x3e, 0x2c, 0xaa, 0x22, 0x6e, 0xdf, 0x82, 0xd6, 0x21, 0x43, 0x78, 0x6a,
+	0x35, 0xfd, 0x80, 0x9a, 0x4b, 0x16, 0x7b, 0x89, 0x59, 0x15, 0xb4, 0x7d, 0x1b, 0xfc, 0x7a, 0x61,
+	0xfb, 0x7c, 0x24, 0xb0, 0x47, 0x4a, 0x14, 0xd6, 0x90, 0xe5, 0x0a, 0x1b, 0xc3, 0x3a, 0xde, 0x31,
+	0xcc, 0xf7, 0xf5, 0x17, 0xf3, 0x9c, 0xe7, 0x33, 0x02, 0xf2, 0x9f, 0x4f, 0xcb, 0x68, 0xa7, 0x14,
+	0x56, 0x6c, 0xb4, 0x63, 0x82, 0x85, 0x7b, 0x86, 0x36, 0x0b, 0xd3, 0x8a, 0x40, 0x15, 0x64, 0xab,
+	0x34, 0x1b, 0x6d, 0x91, 0x95, 0xea, 0x25, 0x6d, 0x15, 0x1a, 0xdb, 0x3d, 0xdd, 0x28, 0x49, 0x4a,
+	0xae, 0x9a, 0x12, 0xbd, 0xa0, 0x93, 0x78, 0xf8, 0xb2, 0x93, 0xbc, 0x46, 0xe6, 0x37, 0xe5, 0x06,
+	0xac, 0xeb, 0x37, 0x86, 0x15, 0xa3, 0xb0, 0xcb, 0xb5, 0x59, 0xe4, 0x21, 0xb1, 0x5b, 0x5b, 0xa5,
+	0x59, 0xbb, 0x5a, 0x46, 0x3e, 0x1d, 0xf3, 0xc2, 0x84, 0x53, 0x53, 0xbe, 0x7d, 0x0b, 0xda, 0xae,
+	0x96, 0xd5, 0x44, 0xc3, 0xd8, 0xc9, 0x5d, 0xad, 0x1b, 0x6c, 0xfe, 0x6a, 0xcd, 0xc0, 0x75, 0xd4,
+	0xbf, 0x2b, 0xd0, 0x34, 0xba, 0x1e, 0x91, 0xcc, 0xbf, 0x22, 0x5d, 0xc2, 0x49, 0xe0, 0x91, 0xc0,
+	0xa5, 0x44, 0xa2, 0x6f, 0x8b, 0x1c, 0xce, 0x30, 0x52, 0x89, 0x7c, 0xf7, 0x49, 0x76, 0x92, 0xa3,
+	0x53, 0xa8, 0x19, 0xc2, 0x2c, 0xc9, 0x46, 0x91, 0xa7, 0xe9, 0x8e, 0x6c, 0x96, 0x45, 0x25, 0x47,
+	0xbf, 0x41, 0xd5, 0x08, 0xf5, 0x86, 0xac, 0x17, 0x99, 0xda, 0x05, 0x69, 0x95, 0x03, 0x25, 0x7f,
+	0xb7, 0xfd, 0x71, 0x6b, 0x44, 0xc3, 0xb3, 0xcb, 0xa1, 0x42, 0x76, 0x8c, 0x89, 0xfd, 0xb9, 0xed,
+	0xfa, 0x74, 0x47, 0x70, 0x37, 0xfe, 0x67, 0xc4, 0x70, 0x5e, 0xff, 0xbd, 0xff, 0xf5, 0xff, 0x01,
 	0x00, 0x00, 0xff, 0xff, 0x05, 0x1a, 0xb0, 0x56, 0xa8, 0x10, 0x00, 0x00,
 }
 
diff --git a/rpc/commands/common.pb.go b/rpc/commands/common.pb.go
index 5319731bf6d..0d25d8218f5 100644
--- a/rpc/commands/common.pb.go
+++ b/rpc/commands/common.pb.go
@@ -194,22 +194,22 @@ func init() {
 func init() { proto.RegisterFile("commands/common.proto", fileDescriptor_0b273be58978a133) }
 
 var fileDescriptor_0b273be58978a133 = []byte{
-	// 259 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x5c, 0x90, 0xcf, 0x4a, 0xc4, 0x30,
-	0x18, 0xc4, 0xe9, 0x76, 0x57, 0xb7, 0x1f, 0x22, 0x4b, 0x40, 0x0c, 0xa2, 0x22, 0x3d, 0x09, 0xb2,
-	0xed, 0xc1, 0x37, 0x10, 0x2f, 0xde, 0xa4, 0x7a, 0xda, 0x8b, 0xa4, 0x49, 0xac, 0xc1, 0x34, 0x29,
-	0x49, 0x8a, 0xe0, 0x7b, 0xf8, 0xbe, 0x7e, 0x0d, 0x8d, 0x7f, 0xf6, 0x94, 0xc9, 0xcc, 0xc7, 0x30,
-	0xfc, 0xe0, 0x84, 0xdb, 0xbe, 0x67, 0x46, 0xf8, 0x7a, 0x12, 0xd6, 0x54, 0x83, 0xb3, 0xc1, 0x92,
-	0x53, 0xce, 0x2b, 0xe6, 0xc4, 0xa8, 0x8c, 0xad, 0xb8, 0x56, 0x55, 0xba, 0x2a, 0xcf, 0x60, 0xfd,
-	0x60, 0x7c, 0x60, 0x86, 0x4b, 0x72, 0x0c, 0x0b, 0x25, 0x68, 0x76, 0x95, 0x5d, 0xaf, 0x1a, 0x54,
-	0xe5, 0x57, 0x06, 0x9b, 0x7b, 0xfb, 0x61, 0xb4, 0x65, 0xe2, 0xd1, 0xd9, 0xce, 0x49, 0xef, 0xc9,
-	0x06, 0xf2, 0xd1, 0xe9, 0x78, 0x55, 0x34, 0x93, 0x24, 0x04, 0x96, 0xaf, 0x4a, 0x4b, 0xba, 0x88,
-	0x56, 0xd4, 0xe4, 0x02, 0x20, 0xd8, 0xc0, 0xf4, 0x8b, 0x57, 0x9f, 0x92, 0xe6, 0x98, 0xe4, 0x4d,
-	0x11, 0x9d, 0x27, 0x34, 0xc8, 0x25, 0x80, 0x98, 0x8b, 0xa5, 0xa0, 0xcb, 0x18, 0xff, 0x71, 0xc8,
-	0x39, 0x14, 0xb8, 0x70, 0xd0, 0x32, 0x60, 0xbc, 0xc2, 0x78, 0xdd, 0xfc, 0x1a, 0xe5, 0x0e, 0x8e,
-	0x9e, 0x99, 0x7f, 0xff, 0x99, 0x84, 0x03, 0x0c, 0xeb, 0xe5, 0xbc, 0x29, 0x6a, 0x42, 0xe1, 0xb0,
-	0xc7, 0x8c, 0x75, 0x69, 0x57, 0xfa, 0xfe, 0xef, 0xce, 0xf7, 0xba, 0xef, 0xb6, 0xbb, 0x9b, 0x4e,
-	0x85, 0xb7, 0xb1, 0x9d, 0x10, 0xd5, 0x33, 0xb2, 0xf4, 0x6e, 0x11, 0x5d, 0xed, 0x06, 0x5e, 0x27,
-	0x7c, 0xed, 0x41, 0xc4, 0x7b, 0xfb, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x77, 0x28, 0x70, 0xdd, 0x77,
-	0x01, 0x00, 0x00,
+	// 263 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0xcd, 0x4a, 0xc4, 0x30,
+	0x14, 0x85, 0xe9, 0xcf, 0xe8, 0xf4, 0x22, 0x32, 0x04, 0xc4, 0x20, 0x2a, 0xa5, 0xab, 0x82, 0x4c,
+	0xbb, 0xf0, 0x0d, 0xc4, 0x8d, 0x3b, 0xa9, 0xae, 0x66, 0x23, 0x99, 0x24, 0xd6, 0x60, 0x9a, 0x5b,
+	0x92, 0x14, 0x61, 0xde, 0xc3, 0xf7, 0x95, 0x86, 0xc6, 0xbf, 0x55, 0x4e, 0xce, 0x3d, 0x1c, 0x0e,
+	0x1f, 0x9c, 0x71, 0x1c, 0x06, 0x66, 0x84, 0x6b, 0x67, 0x81, 0xa6, 0x19, 0x2d, 0x7a, 0x24, 0xe7,
+	0x9c, 0x37, 0xcc, 0x8a, 0x49, 0x19, 0x6c, 0xb8, 0x56, 0x4d, 0x4c, 0x55, 0x17, 0xb0, 0x7e, 0x30,
+	0xce, 0x33, 0xc3, 0x25, 0x39, 0x85, 0x54, 0x09, 0x9a, 0x94, 0x49, 0xbd, 0xea, 0x52, 0x25, 0xaa,
+	0xcf, 0x04, 0x36, 0xf7, 0xf8, 0x61, 0x34, 0x32, 0xf1, 0x68, 0xb1, 0xb7, 0xd2, 0x39, 0xb2, 0x81,
+	0x6c, 0xb2, 0x3a, 0xa4, 0x8a, 0x6e, 0x96, 0x84, 0x40, 0xfe, 0xaa, 0xb4, 0xa4, 0x69, 0xb0, 0x82,
+	0x26, 0x57, 0x00, 0x1e, 0x3d, 0xd3, 0x2f, 0x4e, 0x1d, 0x24, 0xcd, 0xca, 0xa4, 0xce, 0xba, 0x22,
+	0x38, 0x4f, 0xea, 0x20, 0xc9, 0x35, 0x80, 0x58, 0x8a, 0xa5, 0xa0, 0x79, 0x38, 0xff, 0x72, 0xc8,
+	0x25, 0x14, 0x1c, 0x87, 0x51, 0x4b, 0x2f, 0x05, 0x5d, 0x95, 0x49, 0xbd, 0xee, 0x7e, 0x8c, 0x6a,
+	0x07, 0x27, 0xcf, 0xcc, 0xbd, 0x7f, 0x4f, 0x22, 0x90, 0x1b, 0x36, 0xc8, 0x65, 0x53, 0xd0, 0x84,
+	0xc2, 0xf1, 0x20, 0x9d, 0x63, 0x7d, 0xdc, 0x15, 0xbf, 0x7f, 0xbb, 0xb3, 0x7f, 0xdd, 0x77, 0xdb,
+	0xdd, 0x4d, 0xaf, 0xfc, 0xdb, 0xb4, 0x9f, 0x11, 0xb5, 0x0b, 0xb2, 0xf8, 0x6e, 0xb9, 0x56, 0xad,
+	0x1d, 0x79, 0x1b, 0xf1, 0xed, 0x8f, 0x02, 0xde, 0xdb, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x77,
+	0x28, 0x70, 0xdd, 0x77, 0x01, 0x00, 0x00,
 }
diff --git a/rpc/commands/compile.pb.go b/rpc/commands/compile.pb.go
index c16b10e4cda..acfb56d8f87 100644
--- a/rpc/commands/compile.pb.go
+++ b/rpc/commands/compile.pb.go
@@ -218,30 +218,30 @@ func init() {
 func init() { proto.RegisterFile("commands/compile.proto", fileDescriptor_86bc582849c76c3d) }
 
 var fileDescriptor_86bc582849c76c3d = []byte{
-	// 388 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x92, 0x5f, 0x6b, 0xdb, 0x30,
-	0x14, 0xc5, 0xc9, 0x7f, 0xfb, 0x26, 0xcb, 0x40, 0x6c, 0x99, 0x08, 0xdb, 0xc8, 0xf2, 0x30, 0x02,
-	0x23, 0x36, 0x6c, 0xcf, 0x7b, 0x59, 0x60, 0x50, 0xfa, 0x12, 0xdc, 0xb7, 0xbe, 0x14, 0x5b, 0x56,
-	0x63, 0xb5, 0xb1, 0xe4, 0x48, 0x72, 0xd2, 0x6f, 0xd9, 0xaf, 0x54, 0xf9, 0x3a, 0x4e, 0x42, 0xa0,
-	0x4f, 0xd6, 0xfd, 0x9d, 0xa3, 0x23, 0x59, 0xf7, 0xc2, 0x84, 0xa9, 0x3c, 0x8f, 0x65, 0x6a, 0x42,
-	0xb7, 0x28, 0xc4, 0x96, 0x07, 0x85, 0x56, 0x56, 0x91, 0x2f, 0x8c, 0x05, 0xb1, 0x4e, 0x4b, 0x21,
-	0x55, 0xc0, 0xb6, 0x22, 0x68, 0x6c, 0xd3, 0xcf, 0x97, 0x1b, 0x72, 0x25, 0x6b, 0xff, 0xfc, 0xb5,
-	0x03, 0xb0, 0xaa, 0x13, 0x22, 0xbe, 0x23, 0x7f, 0xc1, 0x13, 0xd2, 0xd8, 0x58, 0x32, 0x4e, 0x5b,
-	0xb3, 0xd6, 0x62, 0xf8, 0xfb, 0x47, 0xf0, 0x4e, 0x62, 0x70, 0x73, 0x34, 0x46, 0xa7, 0x2d, 0x84,
-	0x40, 0xf7, 0x71, 0x97, 0x48, 0xda, 0x76, 0x5b, 0xfd, 0x08, 0xd7, 0xe4, 0x3b, 0x80, 0x79, 0xe6,
-	0x96, 0x65, 0xeb, 0xd8, 0x66, 0xb4, 0x83, 0xca, 0x05, 0x21, 0x3f, 0x61, 0x6c, 0x32, 0x75, 0x58,
-	0x6b, 0x55, 0x70, 0x6d, 0x05, 0x37, 0xb4, 0xeb, 0x3c, 0x5e, 0x74, 0x45, 0xab, 0x9c, 0x42, 0x73,
-	0x77, 0x6b, 0xc6, 0x8d, 0xa1, 0x3d, 0xf4, 0x5c, 0x90, 0x2a, 0x27, 0x29, 0xc5, 0x36, 0x5d, 0xc5,
-	0x2c, 0xe3, 0x78, 0x56, 0x1f, 0xcf, 0xba, 0xa2, 0xe4, 0x2b, 0xf8, 0x48, 0xd0, 0x32, 0x40, 0xcb,
-	0x19, 0x90, 0x05, 0x7c, 0xac, 0x8b, 0xf3, 0x75, 0xbc, 0x59, 0xc7, 0x79, 0xae, 0x31, 0x99, 0x82,
-	0x77, 0x88, 0xb5, 0x14, 0x72, 0x63, 0xa8, 0x8f, 0x31, 0xa7, 0x9a, 0x50, 0x18, 0xec, 0xb9, 0x4e,
-	0x94, 0xe1, 0x14, 0xf0, 0xa2, 0x4d, 0x49, 0x3e, 0x41, 0x6f, 0x57, 0x0a, 0x6e, 0xe9, 0x10, 0x79,
-	0x5d, 0x90, 0x09, 0xf4, 0xf7, 0x22, 0x5d, 0x8b, 0x94, 0x8e, 0x30, 0xe9, 0x58, 0x55, 0xff, 0xcc,
-	0x5f, 0x0a, 0xa5, 0xed, 0x7f, 0xd7, 0x1f, 0xfa, 0xa1, 0x7e, 0xbb, 0x33, 0xa9, 0xde, 0xfb, 0x49,
-	0x25, 0x86, 0x8e, 0x9d, 0xd2, 0x8b, 0x70, 0x3d, 0xbf, 0x85, 0xe1, 0xa9, 0xa1, 0xa6, 0x20, 0xdf,
-	0x00, 0x54, 0x69, 0x1f, 0x8c, 0xd5, 0x3c, 0xce, 0xb1, 0xa7, 0xa3, 0xc8, 0x77, 0xe4, 0x0e, 0x41,
-	0x25, 0x73, 0xad, 0x1b, 0xb9, 0x5d, 0xcb, 0x8e, 0xd4, 0xf2, 0xbf, 0xe5, 0xfd, 0xaf, 0x8d, 0xb0,
-	0x59, 0x99, 0x54, 0x6d, 0x0f, 0x8f, 0x63, 0xd0, 0x7c, 0x97, 0x6e, 0x1c, 0x42, 0x5d, 0xb0, 0xb0,
-	0x19, 0x89, 0xa4, 0x8f, 0x43, 0xf5, 0xe7, 0x2d, 0x00, 0x00, 0xff, 0xff, 0x14, 0x81, 0xb3, 0x02,
-	0x9e, 0x02, 0x00, 0x00,
+	// 392 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x8f, 0xd3, 0x30,
+	0x10, 0x85, 0x95, 0xed, 0xb6, 0x9b, 0x4c, 0x97, 0x45, 0xb2, 0x60, 0xb1, 0x2a, 0x40, 0xa1, 0x07,
+	0x14, 0x09, 0x35, 0x91, 0xe0, 0xcc, 0x85, 0x4a, 0x48, 0x88, 0x4b, 0x15, 0x6e, 0x5c, 0x50, 0xe2,
+	0x0c, 0x8d, 0x21, 0xb1, 0x5d, 0xdb, 0x69, 0xf9, 0x97, 0xfc, 0x25, 0x94, 0x49, 0xd3, 0x56, 0x95,
+	0x38, 0xc5, 0xf3, 0xbd, 0xe7, 0x67, 0xc7, 0x33, 0xf0, 0x28, 0x74, 0xdb, 0x16, 0xaa, 0x72, 0x99,
+	0xd0, 0xad, 0x91, 0x0d, 0xa6, 0xc6, 0x6a, 0xaf, 0xd9, 0x0b, 0x21, 0xd2, 0xc2, 0x56, 0x9d, 0x54,
+	0x3a, 0x15, 0x8d, 0x4c, 0x47, 0xdb, 0xe2, 0xf9, 0xe5, 0x86, 0x56, 0xab, 0xc1, 0xbf, 0xfc, 0x3b,
+	0x01, 0x58, 0x0f, 0x09, 0x39, 0xee, 0xd8, 0x47, 0x08, 0xa5, 0x72, 0xbe, 0x50, 0x02, 0x79, 0x10,
+	0x07, 0xc9, 0xfc, 0xfd, 0x9b, 0xf4, 0x3f, 0x89, 0xe9, 0x97, 0xa3, 0x31, 0x3f, 0x6d, 0x61, 0x0c,
+	0x6e, 0x7f, 0xee, 0x4a, 0xc5, 0x6f, 0xe2, 0x20, 0x89, 0x72, 0x5a, 0xb3, 0xd7, 0x00, 0xee, 0x37,
+	0x7a, 0x51, 0x6f, 0x0a, 0x5f, 0xf3, 0x09, 0x29, 0x17, 0x84, 0xbd, 0x85, 0x07, 0x57, 0xeb, 0xc3,
+	0xc6, 0x6a, 0x83, 0xd6, 0x4b, 0x74, 0xfc, 0x36, 0x0e, 0x92, 0x30, 0xbf, 0xa2, 0x7d, 0x8e, 0xb1,
+	0x68, 0xac, 0x16, 0xe8, 0x1c, 0x9f, 0x92, 0xe7, 0x82, 0xf4, 0x39, 0x65, 0x27, 0x9b, 0x6a, 0x5d,
+	0x88, 0x1a, 0xe9, 0xac, 0x19, 0x9d, 0x75, 0x45, 0xd9, 0x4b, 0x88, 0x88, 0x90, 0xe5, 0x8e, 0x2c,
+	0x67, 0xc0, 0x12, 0x78, 0x3a, 0x14, 0xe7, 0xeb, 0x84, 0xf1, 0x24, 0x89, 0xf2, 0x6b, 0xcc, 0x16,
+	0x10, 0x1e, 0x0a, 0xab, 0xa4, 0xda, 0x3a, 0x1e, 0x51, 0xcc, 0xa9, 0x66, 0x1c, 0xee, 0xf6, 0x68,
+	0x4b, 0xed, 0x90, 0x03, 0x5d, 0x74, 0x2c, 0xd9, 0x33, 0x98, 0xee, 0x3a, 0x89, 0x9e, 0xcf, 0x89,
+	0x0f, 0x05, 0x7b, 0x84, 0xd9, 0x5e, 0x56, 0x1b, 0x59, 0xf1, 0x7b, 0x4a, 0x3a, 0x56, 0xfd, 0x3f,
+	0xe3, 0x1f, 0xa3, 0xad, 0xff, 0x2c, 0x1b, 0xe4, 0x4f, 0x86, 0xb7, 0x3b, 0x93, 0xfe, 0xbd, 0x7f,
+	0xe9, 0xd2, 0xf1, 0x87, 0x38, 0x48, 0xa6, 0x39, 0xad, 0x97, 0x5f, 0x61, 0x7e, 0x6a, 0xa8, 0x33,
+	0xec, 0x15, 0x80, 0xee, 0xfc, 0x0f, 0xe7, 0x2d, 0x16, 0x2d, 0xf5, 0xf4, 0x3e, 0x8f, 0x74, 0xe7,
+	0xbf, 0x11, 0xe8, 0x65, 0xb4, 0x76, 0x94, 0x6f, 0x06, 0x19, 0xad, 0x1d, 0xe4, 0x4f, 0xab, 0xef,
+	0xef, 0xb6, 0xd2, 0xd7, 0x5d, 0xd9, 0xb7, 0x3d, 0x3b, 0x8e, 0xc1, 0xf8, 0x5d, 0x89, 0x46, 0x66,
+	0xd6, 0x88, 0x6c, 0x1c, 0x89, 0x72, 0x46, 0x43, 0xf5, 0xe1, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff,
+	0x14, 0x81, 0xb3, 0x02, 0x9e, 0x02, 0x00, 0x00,
 }
diff --git a/rpc/commands/core.pb.go b/rpc/commands/core.pb.go
index fc2715198fc..8ea9e3f0ef1 100644
--- a/rpc/commands/core.pb.go
+++ b/rpc/commands/core.pb.go
@@ -770,45 +770,45 @@ func init() {
 func init() { proto.RegisterFile("commands/core.proto", fileDescriptor_ed02318f567db566) }
 
 var fileDescriptor_ed02318f567db566 = []byte{
-	// 625 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xd4, 0x56, 0xdf, 0x6a, 0xd4, 0x4e,
-	0x14, 0x26, 0xfd, 0xb3, 0x4d, 0x4f, 0xff, 0x4f, 0xdb, 0xdf, 0x2f, 0x88, 0x54, 0x1b, 0x28, 0x58,
-	0xa4, 0x59, 0x50, 0xf0, 0xce, 0x0b, 0x4b, 0x2b, 0xac, 0x54, 0xbb, 0x44, 0xab, 0x20, 0x4a, 0x98,
-	0x4d, 0xa6, 0xdb, 0xd0, 0x64, 0x26, 0x9d, 0x99, 0x58, 0x7c, 0x11, 0x1f, 0x40, 0xbc, 0xf0, 0x21,
-	0xf4, 0x8d, 0x7c, 0x08, 0x27, 0x93, 0x99, 0xec, 0x96, 0x75, 0x45, 0x64, 0x2f, 0xd6, 0x8b, 0xd2,
-	0x39, 0x5f, 0xce, 0xf9, 0xe6, 0xfb, 0xce, 0xcc, 0x19, 0x16, 0x36, 0x63, 0x96, 0xe7, 0x98, 0x26,
-	0xa2, 0x1d, 0x33, 0x4e, 0x82, 0x82, 0x33, 0xc9, 0xd0, 0xff, 0x71, 0x1c, 0x60, 0x9e, 0x94, 0x29,
-	0x65, 0x41, 0x9c, 0xa5, 0x81, 0xcd, 0xb9, 0xb5, 0x3d, 0x94, 0x9d, 0xe7, 0x8c, 0xd6, 0xf9, 0xfe,
-	0x37, 0x07, 0x50, 0x37, 0xc3, 0xf2, 0x9c, 0xf1, 0xbc, 0x43, 0x85, 0xc4, 0x59, 0x16, 0x92, 0x2b,
-	0xf4, 0x18, 0xdc, 0xb4, 0x8a, 0x68, 0x4c, 0x3c, 0xe7, 0xae, 0x73, 0x6f, 0xe9, 0xc1, 0x6e, 0x30,
-	0x86, 0x39, 0xe8, 0x98, 0xc4, 0xb0, 0x29, 0x41, 0xfb, 0xb0, 0x5e, 0x18, 0xd2, 0xa8, 0xc0, 0xf1,
-	0x25, 0xee, 0x13, 0x6f, 0x46, 0xd1, 0x2c, 0x86, 0x6b, 0x16, 0xef, 0xd6, 0x30, 0xf2, 0x61, 0x19,
-	0xf3, 0xf8, 0x22, 0x95, 0x24, 0x96, 0x25, 0x27, 0xde, 0xac, 0x4e, 0xbb, 0x81, 0x21, 0x0f, 0x16,
-	0x3e, 0x10, 0x2e, 0x52, 0x46, 0xbd, 0x39, 0xfd, 0xd9, 0x86, 0xfe, 0x57, 0x07, 0x36, 0x47, 0xe4,
-	0x8b, 0x02, 0x1d, 0x83, 0xab, 0xfc, 0xf5, 0x39, 0x11, 0xc2, 0xe8, 0xdf, 0x1f, 0xab, 0xff, 0x88,
-	0x5d, 0xd3, 0x8c, 0xe1, 0xa4, 0x6b, 0x0a, 0xc2, 0xa6, 0x14, 0x3d, 0x83, 0x15, 0x89, 0xc5, 0x65,
-	0xd4, 0x70, 0xcd, 0x68, 0xae, 0xbd, 0xb1, 0x5c, 0xaf, 0x54, 0x76, 0xc3, 0xb3, 0x2c, 0x87, 0x22,
-	0xff, 0xfb, 0x90, 0x54, 0xbb, 0xe5, 0xbf, 0xd4, 0xea, 0xf7, 0xb0, 0x35, 0x2a, 0x7f, 0x62, 0xad,
-	0xf6, 0xbf, 0x38, 0x03, 0xfe, 0x33, 0x9a, 0x4e, 0xe9, 0x55, 0xf4, 0x63, 0xd8, 0xfe, 0x85, 0x4a,
-	0xd5, 0x86, 0x91, 0xab, 0xe2, 0xfc, 0xfd, 0x55, 0xf9, 0x3c, 0x34, 0x94, 0x67, 0x45, 0x9f, 0xe3,
-	0x84, 0x4c, 0x5f, 0x27, 0x86, 0x47, 0xaf, 0x11, 0x39, 0x9d, 0xa3, 0xf7, 0xc9, 0x81, 0x0d, 0x2b,
-	0xf5, 0x25, 0xa9, 0x5c, 0x4c, 0xa0, 0x9d, 0x77, 0x60, 0x49, 0x68, 0xae, 0x08, 0xf3, 0xbe, 0x30,
-	0x9d, 0x84, 0x1a, 0x7a, 0xa2, 0x10, 0xb4, 0xab, 0x9a, 0x98, 0x65, 0x91, 0x99, 0x1f, 0xa1, 0x9b,
-	0xe8, 0x86, 0x4b, 0x0a, 0x7b, 0x6d, 0x20, 0xff, 0xdd, 0xe0, 0x9c, 0xad, 0x2e, 0xd5, 0xc1, 0xa7,
-	0xb0, 0x62, 0x98, 0x59, 0x29, 0x8b, 0x52, 0x2a, 0x75, 0xb3, 0xbf, 0x55, 0x67, 0x39, 0xc2, 0xe5,
-	0xba, 0xee, 0x54, 0x97, 0xf9, 0xd7, 0xb0, 0x66, 0xbf, 0x9c, 0xa4, 0x42, 0x4e, 0xc0, 0xf3, 0x1e,
-	0xac, 0x96, 0x45, 0x82, 0x25, 0xee, 0x65, 0x24, 0x62, 0x34, 0xfb, 0xa8, 0x6d, 0xbb, 0xe1, 0x4a,
-	0x83, 0x9e, 0x2a, 0xd0, 0x4f, 0x60, 0xfd, 0xe6, 0xc6, 0xca, 0x54, 0x17, 0x90, 0x19, 0x17, 0x92,
-	0x44, 0xf6, 0xbe, 0xfd, 0xb9, 0xb3, 0x8d, 0xa6, 0xd8, 0x42, 0xfe, 0x0f, 0x07, 0x5c, 0x1b, 0xa0,
-	0x55, 0x98, 0xe9, 0x1c, 0x69, 0x4b, 0x8b, 0xa1, 0x5a, 0xa1, 0xdb, 0xb0, 0xd8, 0xb1, 0x15, 0xe6,
-	0x6c, 0x06, 0x00, 0xfa, 0x0f, 0x5a, 0x27, 0x58, 0x12, 0x21, 0xcd, 0xcd, 0x36, 0x11, 0x42, 0x30,
-	0xf7, 0x02, 0xe7, 0xc4, 0x3c, 0x7d, 0x7a, 0x8d, 0x76, 0x00, 0x9e, 0xe3, 0x94, 0x4a, 0xf5, 0x47,
-	0xb8, 0x37, 0x5f, 0x1f, 0xf3, 0x00, 0xa9, 0x5e, 0xcc, 0x37, 0xa4, 0x27, 0xd4, 0x5c, 0x78, 0xad,
-	0xfa, 0xc5, 0x34, 0x21, 0xda, 0x82, 0xf9, 0xe3, 0x1c, 0xa7, 0x99, 0xb7, 0xa0, 0xf1, 0x3a, 0x40,
-	0x8f, 0xa0, 0x75, 0xc8, 0x94, 0x59, 0xe1, 0xb9, 0xda, 0xfc, 0xce, 0x58, 0xf3, 0x3a, 0x2d, 0x34,
-	0xd9, 0x7e, 0x1b, 0xe6, 0xf5, 0xaa, 0x12, 0x49, 0x2b, 0x91, 0xb5, 0x59, 0xbd, 0xae, 0xb0, 0xf3,
-	0xab, 0x1e, 0x35, 0x4e, 0xf5, 0xfa, 0xf0, 0xe0, 0xed, 0xfd, 0x7e, 0x2a, 0x2f, 0xca, 0x5e, 0xc5,
-	0xd8, 0x36, 0x3b, 0xd8, 0xff, 0x07, 0x6a, 0xa7, 0x36, 0x2f, 0xe2, 0xb6, 0xdd, 0xad, 0xd7, 0xd2,
-	0x3f, 0x08, 0x1e, 0xfe, 0x0c, 0x00, 0x00, 0xff, 0xff, 0x09, 0x05, 0xe5, 0x68, 0x57, 0x08, 0x00,
-	0x00,
+	// 628 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x56, 0xdd, 0x6a, 0x14, 0x31,
+	0x14, 0x66, 0xb6, 0xed, 0x76, 0x7b, 0xba, 0xfd, 0x4b, 0x5b, 0x1d, 0x44, 0x6a, 0x3b, 0x50, 0x68,
+	0x91, 0xee, 0x82, 0x82, 0x77, 0x5e, 0x58, 0x5a, 0x61, 0xa5, 0xda, 0x65, 0xb4, 0x0a, 0xa2, 0x2c,
+	0xd9, 0x99, 0x74, 0x1b, 0x9a, 0x49, 0xd2, 0x24, 0x63, 0xe9, 0x8b, 0xf8, 0x00, 0xe2, 0x85, 0x0f,
+	0xa1, 0x6f, 0xe4, 0x43, 0xc8, 0x64, 0x92, 0xd9, 0x2d, 0x75, 0x45, 0xa4, 0x17, 0xeb, 0xd5, 0xe6,
+	0x7c, 0x73, 0xce, 0x97, 0xef, 0x3b, 0xc9, 0x09, 0x0b, 0xab, 0x89, 0xc8, 0x32, 0xcc, 0x53, 0xdd,
+	0x4e, 0x84, 0x22, 0x2d, 0xa9, 0x84, 0x11, 0xe8, 0x6e, 0x92, 0xb4, 0xb0, 0x4a, 0x73, 0xca, 0x45,
+	0x2b, 0x61, 0xb4, 0xe5, 0x73, 0xee, 0xad, 0x8f, 0x64, 0x67, 0x99, 0xe0, 0x65, 0x7e, 0xf4, 0x3d,
+	0x00, 0xd4, 0x65, 0xd8, 0x9c, 0x0a, 0x95, 0x75, 0xb8, 0x36, 0x98, 0xb1, 0x98, 0x5c, 0xa0, 0xa7,
+	0xd0, 0xa0, 0x45, 0xc4, 0x13, 0x12, 0x06, 0x9b, 0xc1, 0xce, 0xfc, 0xa3, 0xad, 0xd6, 0x18, 0xe6,
+	0x56, 0xc7, 0x25, 0xc6, 0x55, 0x09, 0xda, 0x85, 0x65, 0xe9, 0x48, 0x7b, 0x12, 0x27, 0xe7, 0x78,
+	0x40, 0xc2, 0xda, 0x66, 0xb0, 0x33, 0x17, 0x2f, 0x79, 0xbc, 0x5b, 0xc2, 0x28, 0x82, 0x26, 0x56,
+	0xc9, 0x19, 0x35, 0x24, 0x31, 0xb9, 0x22, 0xe1, 0x94, 0x4d, 0xbb, 0x86, 0xa1, 0x10, 0x66, 0x3f,
+	0x11, 0xa5, 0xa9, 0xe0, 0xe1, 0xb4, 0xfd, 0xec, 0xc3, 0xe8, 0x5b, 0x00, 0xab, 0x37, 0xe4, 0x6b,
+	0x89, 0x0e, 0xa1, 0x21, 0x95, 0x18, 0x28, 0xa2, 0xb5, 0xd3, 0xbf, 0x3b, 0x56, 0xff, 0x81, 0xb8,
+	0xe4, 0x4c, 0xe0, 0xb4, 0xeb, 0x0a, 0xe2, 0xaa, 0x14, 0xbd, 0x80, 0x05, 0x83, 0xf5, 0x79, 0xaf,
+	0xe2, 0xaa, 0x59, 0xae, 0xed, 0xb1, 0x5c, 0x6f, 0xb0, 0x3e, 0xaf, 0x78, 0x9a, 0x66, 0x24, 0x8a,
+	0x7e, 0x8c, 0x48, 0xf5, 0x5b, 0xfe, 0x4f, 0xad, 0xfe, 0x08, 0x6b, 0x37, 0xe5, 0xdf, 0x5a, 0xab,
+	0xa3, 0xaf, 0xc1, 0x90, 0xff, 0x84, 0xd3, 0x09, 0xbd, 0x8a, 0x51, 0x02, 0xeb, 0xbf, 0x51, 0xa9,
+	0xe5, 0xcd, 0xab, 0x12, 0xfc, 0xfb, 0x55, 0xf9, 0x32, 0x32, 0x94, 0x27, 0x72, 0xa0, 0x70, 0x4a,
+	0x26, 0xaf, 0x13, 0xa3, 0xa3, 0x57, 0x89, 0x9c, 0xcc, 0xd1, 0xfb, 0x1c, 0xc0, 0x8a, 0x97, 0xfa,
+	0x9a, 0x14, 0x2e, 0x6e, 0xa1, 0x9d, 0x0f, 0x60, 0x5e, 0x5b, 0xae, 0x1e, 0x56, 0x03, 0xed, 0x3a,
+	0x09, 0x25, 0xf4, 0x4c, 0x0d, 0x34, 0xda, 0x82, 0x26, 0x66, 0xac, 0xe7, 0xe6, 0x47, 0xdb, 0x26,
+	0x36, 0xe2, 0x79, 0xcc, 0xd8, 0x5b, 0x07, 0x45, 0x1f, 0x86, 0xe7, 0xec, 0x75, 0x69, 0x89, 0x9e,
+	0xc3, 0x82, 0x63, 0x16, 0xb9, 0x91, 0xb9, 0x09, 0x83, 0xcd, 0xa9, 0x3f, 0xaa, 0xf3, 0x1c, 0x71,
+	0xb3, 0xac, 0x3b, 0xb6, 0x65, 0xd1, 0x25, 0x2c, 0xf9, 0x2f, 0x47, 0x54, 0x9b, 0x5b, 0xf0, 0xbc,
+	0x0d, 0x8b, 0xb9, 0x4c, 0xb1, 0xc1, 0x7d, 0x46, 0x7a, 0x82, 0xb3, 0x2b, 0x6b, 0xbb, 0x11, 0x2f,
+	0x54, 0xe8, 0x31, 0x67, 0x57, 0x51, 0x0a, 0xcb, 0xd7, 0x37, 0xd6, 0x12, 0x75, 0x01, 0xb9, 0x71,
+	0x21, 0x69, 0xcf, 0xdf, 0xb7, 0xbf, 0x77, 0xb6, 0x52, 0x15, 0x7b, 0x28, 0xfa, 0x19, 0x40, 0xc3,
+	0x07, 0x68, 0x11, 0x6a, 0x9d, 0x03, 0x6b, 0x69, 0x2e, 0xae, 0x75, 0x0e, 0xd0, 0x7d, 0x98, 0xeb,
+	0xf8, 0x0a, 0x77, 0x36, 0x43, 0x00, 0xdd, 0x81, 0xfa, 0x11, 0x36, 0x44, 0x1b, 0x77, 0xb3, 0x5d,
+	0x84, 0x10, 0x4c, 0xbf, 0xc2, 0x19, 0x71, 0x4f, 0x9f, 0x5d, 0xa3, 0x0d, 0x80, 0x97, 0x98, 0x72,
+	0x83, 0x29, 0x27, 0x2a, 0x9c, 0x29, 0x8f, 0x79, 0x88, 0x14, 0x2f, 0xe6, 0x3b, 0xd2, 0xd7, 0xd4,
+	0x90, 0xb0, 0x5e, 0xbe, 0x98, 0x2e, 0x44, 0x6b, 0x30, 0x73, 0x98, 0x61, 0xca, 0xc2, 0x59, 0x8b,
+	0x97, 0x01, 0x7a, 0x02, 0xf5, 0x7d, 0x81, 0x55, 0xaa, 0xc3, 0x86, 0x35, 0xbf, 0x31, 0xd6, 0xbc,
+	0x4d, 0x8b, 0x5d, 0x76, 0xd4, 0x86, 0x19, 0xbb, 0x2a, 0x44, 0xf2, 0x42, 0x64, 0x69, 0xd6, 0xae,
+	0x0b, 0xec, 0xf4, 0xa2, 0xcf, 0x9d, 0x53, 0xbb, 0xde, 0xdf, 0x7b, 0xff, 0x70, 0x40, 0xcd, 0x59,
+	0xde, 0x2f, 0x18, 0xdb, 0x6e, 0x07, 0xff, 0xbb, 0x97, 0x30, 0xda, 0x56, 0x32, 0x69, 0xfb, 0xdd,
+	0xfa, 0x75, 0xfb, 0x87, 0xe0, 0xf1, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x05, 0xe5, 0x68,
+	0x57, 0x08, 0x00, 0x00,
 }
diff --git a/rpc/commands/lib.pb.go b/rpc/commands/lib.pb.go
index 681596c19fe..44b557c1441 100644
--- a/rpc/commands/lib.pb.go
+++ b/rpc/commands/lib.pb.go
@@ -1310,79 +1310,80 @@ func init() {
 func init() { proto.RegisterFile("commands/lib.proto", fileDescriptor_9feed0d29806df6c) }
 
 var fileDescriptor_9feed0d29806df6c = []byte{
-	// 1181 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xdc, 0x57, 0xdb, 0x6f, 0xdb, 0x54,
-	0x18, 0xc7, 0xe9, 0xd6, 0x26, 0x5f, 0x96, 0x25, 0x3d, 0xeb, 0x36, 0xd3, 0xb1, 0x51, 0x2c, 0x10,
-	0x5d, 0x51, 0x53, 0x34, 0xa4, 0x09, 0x4d, 0x9a, 0x50, 0x51, 0x37, 0x04, 0xaa, 0x50, 0xe5, 0x6d,
-	0x3c, 0x00, 0x52, 0x74, 0x62, 0x9f, 0x26, 0x47, 0x71, 0x6c, 0xef, 0xf8, 0x38, 0x53, 0x78, 0xe1,
-	0xf6, 0xca, 0x0b, 0xef, 0x3c, 0xf0, 0x82, 0x90, 0xf8, 0x87, 0xf8, 0x77, 0xf8, 0xce, 0xc5, 0x8e,
-	0x93, 0x36, 0x5d, 0x41, 0xd5, 0x40, 0x3c, 0x4c, 0xf3, 0x77, 0xff, 0x7d, 0xd7, 0xd3, 0x00, 0x09,
-	0x92, 0xf1, 0x98, 0xc6, 0x61, 0xb6, 0x17, 0xf1, 0x7e, 0x37, 0x15, 0x89, 0x4c, 0xc8, 0xcd, 0x20,
-	0xe8, 0x52, 0x11, 0xe6, 0x3c, 0x4e, 0xba, 0x41, 0xc4, 0xbb, 0x85, 0xca, 0xe6, 0xf5, 0x52, 0x59,
-	0x7d, 0x24, 0xb1, 0xd1, 0xf7, 0xbe, 0x77, 0x80, 0x1c, 0xf2, 0xbe, 0xa0, 0x62, 0x7a, 0x90, 0xbc,
-	0x88, 0xa3, 0x84, 0x86, 0x3e, 0x7b, 0x4e, 0x1e, 0x42, 0x9d, 0xc7, 0x99, 0xa4, 0x71, 0xc0, 0x5c,
-	0x67, 0xcb, 0xd9, 0x6e, 0xde, 0x7b, 0xab, 0xbb, 0xc4, 0x73, 0xf7, 0x53, 0xab, 0xe8, 0x97, 0x26,
-	0x84, 0xc0, 0xa5, 0x98, 0x8e, 0x99, 0x5b, 0x43, 0xd3, 0x86, 0xaf, 0xbf, 0x89, 0x0b, 0x6b, 0x13,
-	0x26, 0x32, 0x9e, 0xc4, 0xee, 0x8a, 0x66, 0x17, 0xa4, 0xf7, 0x35, 0x5c, 0x3b, 0x01, 0x21, 0x4b,
-	0xc9, 0x23, 0xa8, 0x23, 0xc6, 0x81, 0x60, 0x59, 0x66, 0x31, 0xdc, 0x5d, 0x8a, 0xa1, 0x30, 0x3c,
-	0xb2, 0x06, 0x7e, 0x69, 0xea, 0x7d, 0xe7, 0xc0, 0xba, 0x75, 0xaf, 0x91, 0x46, 0xd1, 0x2b, 0x4f,
-	0xf0, 0xf7, 0x59, 0x91, 0x4b, 0x08, 0x17, 0x96, 0x20, 0xf9, 0x0c, 0x5a, 0x92, 0x66, 0xa3, 0x5e,
-	0xe9, 0xab, 0xa6, 0x7d, 0xbd, 0xb3, 0xd4, 0xd7, 0x53, 0xd4, 0x2e, 0xfd, 0x5c, 0x91, 0x15, 0xca,
-	0xfb, 0xc1, 0x29, 0x7b, 0xf1, 0x2c, 0xe6, 0xff, 0x52, 0xb9, 0xfa, 0xb0, 0x71, 0x12, 0x03, 0xd6,
-	0xeb, 0x44, 0xa2, 0xce, 0x3f, 0x4f, 0xf4, 0xd9, 0x2c, 0x46, 0x3a, 0x10, 0x34, 0x64, 0xfb, 0x17,
-	0x91, 0xa8, 0xf7, 0x87, 0x03, 0xd7, 0x4f, 0xf1, 0xfb, 0xdf, 0x6c, 0xf6, 0x4f, 0x0e, 0xdc, 0xb6,
-	0x60, 0x11, 0x62, 0x12, 0x4d, 0xd8, 0x01, 0x4b, 0x59, 0x1c, 0xb2, 0x38, 0xe0, 0x2c, 0x7b, 0xe5,
-	0x6d, 0x9f, 0xc0, 0x9d, 0xb3, 0xd0, 0x60, 0x0d, 0x9f, 0xc2, 0x95, 0xb0, 0xc2, 0x43, 0x48, 0x2b,
-	0x08, 0xe9, 0xfd, 0xa5, 0x90, 0x8a, 0xab, 0x52, 0xd8, 0x4c, 0x9f, 0x48, 0x2a, 0x73, 0x2c, 0x43,
-	0xd5, 0x8b, 0xf7, 0xa3, 0x03, 0x37, 0x97, 0x68, 0x96, 0x19, 0x38, 0x95, 0x0c, 0xb6, 0xa1, 0x6d,
-	0x21, 0x63, 0x89, 0x72, 0x2e, 0x58, 0x68, 0x13, 0x5c, 0x64, 0x93, 0x1d, 0xe8, 0x58, 0x96, 0x5d,
-	0x7b, 0x54, 0x35, 0x49, 0x9f, 0xe0, 0x7b, 0x03, 0xe8, 0x58, 0x10, 0x4f, 0x18, 0x15, 0xc1, 0xf0,
-	0x02, 0xca, 0xbf, 0x01, 0x97, 0x9f, 0xe7, 0x4c, 0x4c, 0x2d, 0x3c, 0x43, 0x78, 0x5f, 0x95, 0xe7,
-	0xb0, 0x08, 0x84, 0x95, 0x7d, 0x0c, 0x8d, 0x48, 0x33, 0x67, 0x65, 0xdd, 0x5e, 0x1a, 0xca, 0xd8,
-	0xb1, 0xb0, 0xe8, 0xd6, 0xcc, 0xd4, 0xfb, 0xb5, 0x06, 0xed, 0x05, 0xf1, 0xa9, 0x35, 0xf4, 0xa1,
-	0x2e, 0x58, 0xc4, 0x68, 0xc6, 0xd4, 0x04, 0xab, 0x70, 0xf7, 0xcf, 0x1b, 0xae, 0xeb, 0x5b, 0xc3,
-	0x47, 0xb1, 0xc4, 0xe0, 0xa5, 0x1f, 0xf2, 0x11, 0xac, 0x46, 0x54, 0xb2, 0x4c, 0xea, 0x1a, 0x37,
-	0xef, 0xbd, 0xfb, 0xb2, 0xb9, 0xb0, 0x8e, 0x7c, 0x6b, 0xb6, 0x19, 0x42, 0x6b, 0xce, 0x37, 0xe9,
-	0xc0, 0xca, 0x88, 0x4d, 0x2d, 0x70, 0xf5, 0x89, 0x1d, 0xb9, 0x3c, 0xa1, 0x51, 0xce, 0xec, 0xda,
-	0x9d, 0x3b, 0x84, 0xb1, 0x7a, 0x50, 0xfb, 0xd0, 0xf1, 0xfe, 0xac, 0xc1, 0xd5, 0x79, 0x29, 0xb9,
-	0x01, 0xab, 0x34, 0x97, 0xc3, 0x44, 0xd8, 0x50, 0x96, 0xaa, 0xee, 0x4a, 0x6d, 0x6e, 0x57, 0xc8,
-	0x1d, 0x80, 0x31, 0xe5, 0xb1, 0xc4, 0x7f, 0x4c, 0xd8, 0x99, 0xaa, 0x70, 0xc8, 0x26, 0xd4, 0x33,
-	0x16, 0x4b, 0xa6, 0x26, 0xe7, 0x92, 0x96, 0x96, 0x34, 0x79, 0x03, 0x1a, 0x29, 0x15, 0x14, 0xaf,
-	0x53, 0x3a, 0x74, 0x2f, 0x6b, 0xe1, 0x8c, 0xa1, 0x62, 0xbe, 0x60, 0xfd, 0x8c, 0x4b, 0xe6, 0xae,
-	0x9a, 0x98, 0x96, 0x54, 0x3e, 0x03, 0x2c, 0xd4, 0x20, 0xc1, 0x89, 0x5a, 0x33, 0x3e, 0x0b, 0x9a,
-	0xbc, 0x0d, 0x2d, 0xd5, 0x24, 0x54, 0x0b, 0x64, 0x8e, 0xc7, 0xc5, 0xad, 0x63, 0x53, 0x1b, 0xfe,
-	0x3c, 0x53, 0x0d, 0xa4, 0x9c, 0xa6, 0x28, 0x6d, 0x68, 0xa9, 0x21, 0xc8, 0x27, 0xd0, 0x40, 0x61,
-	0x92, 0x8b, 0x00, 0x25, 0x70, 0xce, 0xd3, 0xe8, 0x5b, 0x0b, 0x7f, 0x66, 0xeb, 0xfd, 0xe2, 0x40,
-	0x67, 0x51, 0xae, 0x7a, 0x98, 0x8b, 0xa8, 0xe8, 0x21, 0x7e, 0xaa, 0xfd, 0xd5, 0xb0, 0x26, 0xec,
-	0x98, 0x47, 0xac, 0x72, 0xa0, 0x16, 0xd9, 0x3a, 0xe3, 0x21, 0x0b, 0x46, 0x59, 0x3e, 0xb6, 0x35,
-	0x2e, 0x69, 0x35, 0xd5, 0x19, 0xff, 0xc6, 0x54, 0x77, 0xc5, 0xd7, 0xdf, 0xaa, 0xb2, 0x01, 0x45,
-	0x8d, 0x94, 0xca, 0xb2, 0xb2, 0x25, 0xc3, 0xfb, 0xb6, 0xec, 0xfb, 0x21, 0xcf, 0xe4, 0x05, 0xec,
-	0x37, 0xa6, 0x86, 0xb7, 0x43, 0x83, 0xaf, 0xfb, 0xea, 0x53, 0x01, 0xc8, 0xd3, 0x90, 0x4a, 0xda,
-	0x8f, 0x98, 0x46, 0x5c, 0xf7, 0x67, 0x0c, 0x8f, 0x43, 0x7b, 0x0e, 0x00, 0xee, 0xfd, 0x17, 0xb0,
-	0xce, 0x8b, 0x13, 0xd4, 0x33, 0x6b, 0x3c, 0xb5, 0xfb, 0x7f, 0xf7, 0x6c, 0x28, 0xca, 0xa2, 0x18,
-	0xe3, 0x0e, 0x5f, 0xe0, 0x78, 0x3f, 0x63, 0x2b, 0x16, 0xd5, 0xc8, 0x03, 0x58, 0x9b, 0x85, 0x50,
-	0xd9, 0x6e, 0xbd, 0x74, 0x7d, 0x0a, 0x03, 0xb2, 0x0f, 0x6b, 0x76, 0xd1, 0xff, 0xee, 0xea, 0x15,
-	0x76, 0xde, 0x6f, 0xab, 0xb0, 0x76, 0xd6, 0x4d, 0x9a, 0x6d, 0x61, 0x6d, 0x6e, 0x0b, 0xff, 0x4f,
-	0xbb, 0xf6, 0x26, 0x34, 0x6d, 0xaf, 0x7a, 0x21, 0x17, 0x7a, 0xdb, 0x30, 0x19, 0xcb, 0x3a, 0xe0,
-	0x82, 0xdc, 0x06, 0x30, 0x8b, 0xa3, 0xe5, 0x4d, 0x83, 0xd8, 0x70, 0x94, 0x18, 0xed, 0x73, 0xc9,
-	0x23, 0x2e, 0xa7, 0x5a, 0x7e, 0xc5, 0xd8, 0x5b, 0x96, 0x52, 0x40, 0xe0, 0x51, 0x82, 0x50, 0xd5,
-	0xcd, 0x6a, 0x19, 0xe0, 0x05, 0x4d, 0x76, 0xd5, 0x2f, 0x16, 0x5b, 0xb5, 0x5e, 0x8a, 0x47, 0xf7,
-	0x38, 0x11, 0x63, 0xf7, 0xaa, 0xd6, 0x5a, 0x2f, 0x25, 0x47, 0x56, 0xa0, 0xfa, 0x11, 0xd1, 0x69,
-	0x92, 0x4b, 0xb7, 0x6d, 0xfa, 0x61, 0x28, 0x72, 0x4b, 0xdd, 0x0b, 0x1a, 0xf5, 0x74, 0x03, 0x3b,
-	0x26, 0x86, 0x62, 0x7c, 0xae, 0x9a, 0xe8, 0x41, 0x2b, 0x4c, 0x64, 0x8f, 0xe2, 0x30, 0xc7, 0x23,
-	0x3a, 0x60, 0xee, 0xba, 0xde, 0x82, 0x26, 0x32, 0xf7, 0x0f, 0x0d, 0x8b, 0x6c, 0x41, 0x33, 0x15,
-	0x0c, 0xe7, 0x25, 0xe5, 0xea, 0x45, 0x26, 0x46, 0xa3, 0xc2, 0x22, 0xaf, 0x63, 0x16, 0x61, 0xef,
-	0x38, 0xa2, 0x83, 0xcc, 0xbd, 0x66, 0x3a, 0x13, 0x85, 0x8f, 0x15, 0xa9, 0xa2, 0xf3, 0xac, 0x17,
-	0xb1, 0x01, 0x0d, 0xa6, 0xee, 0x86, 0x36, 0xad, 0xf3, 0xec, 0x50, 0xd3, 0xd5, 0x83, 0x7d, 0x7d,
-	0xfe, 0x60, 0xbb, 0x6a, 0xf6, 0x03, 0x16, 0xe3, 0xfc, 0xde, 0xb0, 0x0e, 0x0d, 0x49, 0x8e, 0x00,
-	0xf0, 0x8f, 0xb9, 0x94, 0x09, 0xa9, 0xde, 0xde, 0x9b, 0xe7, 0xfb, 0x93, 0xa6, 0x7b, 0x54, 0x9a,
-	0x98, 0x67, 0xb0, 0xe2, 0x63, 0xf3, 0x21, 0xb4, 0x17, 0xc4, 0xa7, 0xbc, 0x64, 0x1b, 0xd5, 0x97,
-	0xac, 0x51, 0x79, 0xa0, 0x76, 0xee, 0x43, 0xab, 0x38, 0x13, 0xa6, 0xe0, 0x6d, 0x68, 0x62, 0x29,
-	0x64, 0xcf, 0xd4, 0xbf, 0xf3, 0x1a, 0xda, 0x76, 0xb0, 0x58, 0x39, 0x66, 0x36, 0x61, 0x05, 0xd7,
-	0xd9, 0xa9, 0x9c, 0x97, 0xa2, 0xe3, 0x68, 0xc9, 0x43, 0xd6, 0xeb, 0xe7, 0x3c, 0x92, 0x3c, 0x36,
-	0x96, 0x45, 0xe3, 0x4b, 0xae, 0x83, 0x53, 0x75, 0x4b, 0xb0, 0x63, 0x26, 0xd4, 0xca, 0x84, 0xbd,
-	0x13, 0x0a, 0x35, 0x72, 0x15, 0xa7, 0x72, 0xc4, 0x64, 0x30, 0xec, 0x27, 0xc9, 0xa8, 0xb3, 0xf2,
-	0xf1, 0xee, 0x97, 0xef, 0x0d, 0xb8, 0x1c, 0xe6, 0x7d, 0x55, 0x98, 0x3d, 0x5b, 0xa8, 0xe2, 0xff,
-	0x5d, 0x2c, 0xd8, 0x9e, 0x48, 0x83, 0xbd, 0xa2, 0x68, 0xfd, 0x55, 0xfd, 0x5b, 0xf7, 0x83, 0xbf,
-	0x02, 0x00, 0x00, 0xff, 0xff, 0x26, 0x21, 0xca, 0x20, 0x31, 0x0f, 0x00, 0x00,
+	// 1191 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0xdf, 0x6f, 0x1b, 0xc5,
+	0x13, 0xff, 0x9e, 0xdd, 0x26, 0xf6, 0xb8, 0xae, 0x9d, 0x6d, 0xda, 0xde, 0x37, 0xa5, 0xad, 0x39,
+	0x81, 0x70, 0x8b, 0xea, 0xa0, 0x22, 0x55, 0xa8, 0x52, 0x85, 0x8a, 0xd2, 0x22, 0x50, 0x84, 0xa2,
+	0x6b, 0xcb, 0x03, 0x20, 0x9d, 0xd6, 0x77, 0x13, 0x7b, 0xe5, 0xf5, 0xdd, 0x65, 0x77, 0xcf, 0x95,
+	0x79, 0xe1, 0xd7, 0x2b, 0x2f, 0xbc, 0xf3, 0xc0, 0x0b, 0x42, 0xe2, 0x1f, 0xe2, 0xdf, 0x41, 0x7b,
+	0xbb, 0x77, 0x3e, 0x3b, 0x71, 0x1a, 0x50, 0x54, 0x10, 0x4f, 0xb9, 0xf9, 0xcc, 0xce, 0xcc, 0x67,
+	0x66, 0x76, 0x66, 0x63, 0x20, 0x61, 0x32, 0x9d, 0xd2, 0x38, 0x92, 0xbb, 0x9c, 0x0d, 0x07, 0xa9,
+	0x48, 0x54, 0x42, 0xae, 0x87, 0xe1, 0x80, 0x8a, 0x28, 0x63, 0x71, 0x32, 0x08, 0x39, 0x1b, 0x14,
+	0x47, 0x76, 0xae, 0x96, 0x87, 0xf5, 0x47, 0x12, 0x9b, 0xf3, 0xde, 0x77, 0x0e, 0x90, 0x7d, 0x36,
+	0x14, 0x54, 0xcc, 0xf7, 0x92, 0x97, 0x31, 0x4f, 0x68, 0xe4, 0xe3, 0x11, 0x79, 0x04, 0x0d, 0x16,
+	0x4b, 0x45, 0xe3, 0x10, 0x5d, 0xa7, 0xe7, 0xf4, 0x5b, 0xf7, 0xdf, 0x1c, 0xac, 0xf1, 0x3c, 0xf8,
+	0xc4, 0x1e, 0xf4, 0x4b, 0x13, 0x42, 0xe0, 0x42, 0x4c, 0xa7, 0xe8, 0xd6, 0x7a, 0x4e, 0xbf, 0xe9,
+	0xe7, 0xdf, 0xc4, 0x85, 0xcd, 0x19, 0x0a, 0xc9, 0x92, 0xd8, 0xad, 0xe7, 0x70, 0x21, 0x7a, 0x5f,
+	0xc1, 0x95, 0x63, 0x14, 0x64, 0x4a, 0x9e, 0x40, 0x23, 0x15, 0xc9, 0x48, 0xa0, 0x94, 0x96, 0xc3,
+	0x9d, 0xb5, 0x1c, 0x0a, 0xc3, 0x03, 0x6b, 0xe0, 0x97, 0xa6, 0xde, 0xb7, 0x0e, 0x6c, 0x59, 0xf7,
+	0x39, 0x53, 0xce, 0x5f, 0x7b, 0x82, 0xbf, 0x2d, 0x8a, 0x5c, 0x52, 0x38, 0xb7, 0x04, 0xc9, 0xa7,
+	0xd0, 0x56, 0x54, 0x4e, 0x82, 0xd2, 0x57, 0x2d, 0xf7, 0xf5, 0xf6, 0x5a, 0x5f, 0xcf, 0xa9, 0x9c,
+	0x94, 0x7e, 0x2e, 0xa9, 0x8a, 0xe4, 0x7d, 0xef, 0x94, 0xbd, 0x78, 0x11, 0xb3, 0x7f, 0xa8, 0x5c,
+	0x43, 0xd8, 0x3e, 0xce, 0x41, 0xa6, 0xc7, 0x13, 0x75, 0xfe, 0x7e, 0xa2, 0x2f, 0x16, 0x31, 0xd2,
+	0x91, 0xa0, 0x11, 0x3e, 0x3e, 0x8f, 0x44, 0xbd, 0xdf, 0x1d, 0xb8, 0x7a, 0x82, 0xdf, 0x7f, 0x67,
+	0xb3, 0x7f, 0x74, 0xe0, 0xa6, 0x25, 0xeb, 0xa3, 0x4c, 0xf8, 0x0c, 0xf7, 0x30, 0xc5, 0x38, 0xc2,
+	0x38, 0x64, 0x28, 0x5f, 0x7b, 0xdb, 0x67, 0x70, 0xeb, 0x34, 0x36, 0x32, 0x25, 0xcf, 0xe1, 0x52,
+	0x54, 0xc1, 0x5c, 0xa7, 0x57, 0xef, 0xb7, 0xee, 0xbf, 0xb7, 0x96, 0x52, 0xb1, 0x55, 0x0a, 0x9b,
+	0xf9, 0x33, 0x45, 0x55, 0x26, 0xfd, 0x25, 0x2f, 0xde, 0x0f, 0x0e, 0x5c, 0x5f, 0x73, 0xb2, 0xcc,
+	0xc0, 0xa9, 0x64, 0xd0, 0x87, 0x8e, 0xa5, 0xec, 0xe3, 0x51, 0xc6, 0x04, 0x46, 0x36, 0xc1, 0x55,
+	0x98, 0xdc, 0x85, 0xae, 0x85, 0xec, 0xd8, 0x63, 0x64, 0x93, 0x3e, 0x86, 0x7b, 0x23, 0xe8, 0x5a,
+	0x12, 0xcf, 0x90, 0x8a, 0x70, 0x7c, 0x0e, 0xe5, 0xdf, 0x86, 0x8b, 0x47, 0x19, 0x8a, 0xb9, 0xa5,
+	0x67, 0x04, 0xef, 0xcb, 0x72, 0x1d, 0x16, 0x81, 0x64, 0x4a, 0x9e, 0x42, 0x93, 0xe7, 0xe0, 0xa2,
+	0xac, 0xfd, 0xb5, 0xa1, 0x8c, 0x1d, 0x46, 0x45, 0xb7, 0x16, 0xa6, 0xde, 0x2f, 0x35, 0xe8, 0xac,
+	0xa8, 0x4f, 0xac, 0xa1, 0x0f, 0x0d, 0x81, 0x1c, 0xa9, 0x44, 0x7d, 0x83, 0x75, 0xb8, 0x07, 0x67,
+	0x0d, 0x37, 0xf0, 0xad, 0xe1, 0x93, 0x58, 0x89, 0xb9, 0x5f, 0xfa, 0x21, 0x1f, 0xc2, 0x06, 0xa7,
+	0x0a, 0xa5, 0xca, 0x6b, 0xdc, 0xba, 0xff, 0xce, 0xab, 0xee, 0x85, 0x75, 0xe4, 0x5b, 0xb3, 0x9d,
+	0x08, 0xda, 0x4b, 0xbe, 0x49, 0x17, 0xea, 0x13, 0x9c, 0x5b, 0xe2, 0xfa, 0x93, 0x3c, 0x82, 0x8b,
+	0x33, 0xca, 0x33, 0xb4, 0x63, 0x77, 0xe6, 0x10, 0xc6, 0xea, 0x61, 0xed, 0x03, 0xc7, 0xfb, 0xa3,
+	0x06, 0x97, 0x97, 0xb5, 0xe4, 0x1a, 0x6c, 0xd0, 0x4c, 0x8d, 0x13, 0x61, 0x43, 0x59, 0xa9, 0x3a,
+	0x2b, 0xb5, 0xa5, 0x59, 0x21, 0xb7, 0x00, 0xa6, 0x94, 0xc5, 0x8a, 0xb2, 0x18, 0x85, 0xbd, 0x53,
+	0x15, 0x84, 0xec, 0x40, 0x43, 0x62, 0xac, 0x50, 0xdf, 0x9c, 0x0b, 0xb9, 0xb6, 0x94, 0xc9, 0x1b,
+	0xd0, 0x4c, 0xa9, 0xa0, 0x23, 0x41, 0xd3, 0xb1, 0x7b, 0x31, 0x57, 0x2e, 0x00, 0x1d, 0xf3, 0x25,
+	0x0e, 0x25, 0x53, 0xe8, 0x6e, 0x98, 0x98, 0x56, 0xd4, 0x3e, 0x43, 0xaa, 0x70, 0x94, 0x88, 0xb9,
+	0xbb, 0x69, 0x7c, 0x16, 0x32, 0x79, 0x0b, 0xda, 0xba, 0x49, 0x4c, 0x61, 0xa8, 0x32, 0x81, 0xd2,
+	0x6d, 0xf4, 0xea, 0xfd, 0xa6, 0xbf, 0x0c, 0xea, 0x0b, 0xa9, 0xe6, 0x29, 0x4a, 0xb7, 0x99, 0x6b,
+	0x8d, 0x40, 0x3e, 0x86, 0xa6, 0x40, 0x99, 0x64, 0x22, 0x44, 0xe9, 0xc2, 0x19, 0x57, 0xa3, 0x6f,
+	0x2d, 0xfc, 0x85, 0xad, 0xf7, 0xb3, 0x03, 0xdd, 0x55, 0xbd, 0xee, 0x61, 0x26, 0x78, 0xd1, 0xc3,
+	0x4c, 0x70, 0x3d, 0xbf, 0x39, 0xad, 0x19, 0x1e, 0x32, 0x8e, 0x95, 0x05, 0xb5, 0x0a, 0xe7, 0x19,
+	0x8f, 0x31, 0x9c, 0xc8, 0x6c, 0x6a, 0x6b, 0x5c, 0xca, 0xfa, 0x56, 0x4b, 0xf6, 0xb5, 0xa9, 0x6e,
+	0xdd, 0xcf, 0xbf, 0x75, 0x65, 0x43, 0x1a, 0x8e, 0x31, 0xa5, 0xaa, 0xac, 0x6c, 0x09, 0x78, 0xdf,
+	0x94, 0x7d, 0xdf, 0x67, 0x52, 0x9d, 0xc3, 0x7c, 0x77, 0xa1, 0x4e, 0x39, 0xcf, 0xc9, 0x37, 0x7c,
+	0xfd, 0xa9, 0x09, 0x64, 0x69, 0x44, 0x15, 0x1d, 0x72, 0xcc, 0x19, 0x37, 0xfc, 0x05, 0xe0, 0x31,
+	0xe8, 0x2c, 0x11, 0x90, 0x29, 0xf9, 0x1c, 0xb6, 0x58, 0xb1, 0x82, 0x02, 0x33, 0xc6, 0x73, 0x3b,
+	0xff, 0x77, 0x4e, 0xa7, 0xa2, 0x2d, 0x8a, 0x6b, 0xdc, 0x65, 0x2b, 0x88, 0xf7, 0x93, 0x03, 0xdd,
+	0xd5, 0x63, 0xe4, 0x21, 0x6c, 0x2e, 0x42, 0xe8, 0x6c, 0x7b, 0xaf, 0x1c, 0x9f, 0xc2, 0x80, 0x3c,
+	0x86, 0x4d, 0x3b, 0xe8, 0x7f, 0x75, 0xf4, 0x0a, 0x3b, 0xef, 0xd7, 0x0d, 0xd8, 0x3c, 0x6d, 0x27,
+	0x2d, 0xa6, 0xb0, 0xb6, 0x34, 0x85, 0xff, 0xa5, 0x59, 0xbb, 0x0d, 0x2d, 0xdb, 0xab, 0x20, 0x62,
+	0x22, 0x9f, 0xb6, 0xa6, 0x0f, 0x16, 0xda, 0x63, 0x82, 0xdc, 0x04, 0x30, 0x83, 0x93, 0xeb, 0x5b,
+	0x86, 0xb1, 0x41, 0xb4, 0xfa, 0x36, 0xb4, 0x32, 0xc5, 0x38, 0x53, 0xf3, 0x5c, 0x7f, 0xc9, 0xd8,
+	0x5b, 0x48, 0x1f, 0xd8, 0x81, 0x06, 0x4f, 0x42, 0xaa, 0xf4, 0xce, 0x6a, 0x1b, 0xe2, 0x85, 0x4c,
+	0xee, 0xe9, 0x5f, 0x2c, 0xb6, 0x6a, 0x41, 0xca, 0xa9, 0x3a, 0x4c, 0xc4, 0xd4, 0xbd, 0x9c, 0x9f,
+	0xda, 0x2a, 0x35, 0x07, 0x56, 0xa1, 0xfb, 0xc1, 0xe9, 0x3c, 0xc9, 0x94, 0xdb, 0x31, 0xfd, 0x30,
+	0x12, 0xb9, 0xa1, 0xf7, 0x05, 0xe5, 0x41, 0xde, 0xc0, 0xae, 0x89, 0xa1, 0x81, 0xcf, 0x74, 0x13,
+	0x3d, 0x68, 0x47, 0x89, 0x0a, 0x68, 0xc0, 0x59, 0x3c, 0xa1, 0x23, 0x74, 0xb7, 0xf2, 0x29, 0x68,
+	0x45, 0x89, 0x7a, 0xbc, 0x6f, 0x20, 0xd2, 0x83, 0x56, 0x2a, 0x30, 0x4c, 0xa6, 0x29, 0xd3, 0x2f,
+	0x32, 0x31, 0x27, 0x2a, 0x10, 0xf9, 0x3f, 0x34, 0x78, 0x14, 0x1c, 0x72, 0x3a, 0x92, 0xee, 0x15,
+	0xd3, 0x19, 0x1e, 0x3d, 0xd5, 0xa2, 0x8e, 0xce, 0x64, 0xc0, 0x71, 0x44, 0xc3, 0xb9, 0xbb, 0x9d,
+	0x9b, 0x36, 0x98, 0xdc, 0xcf, 0xe5, 0xea, 0xc2, 0xbe, 0xba, 0xbc, 0xb0, 0x5d, 0x7d, 0xf7, 0x43,
+	0x8c, 0x25, 0xba, 0xd7, 0xac, 0x43, 0x23, 0x92, 0x03, 0x80, 0x54, 0x24, 0x29, 0x0a, 0xa5, 0xdf,
+	0xde, 0xeb, 0x67, 0xfb, 0x97, 0x66, 0x70, 0x50, 0x9a, 0x98, 0x67, 0xb0, 0xe2, 0x63, 0xe7, 0x11,
+	0x74, 0x56, 0xd4, 0x27, 0xbc, 0x64, 0xdb, 0xd5, 0x97, 0xac, 0x59, 0x79, 0xa0, 0xee, 0x3e, 0x80,
+	0x76, 0xb1, 0x26, 0x4c, 0xc1, 0x3b, 0xd0, 0x3a, 0xe4, 0x54, 0x05, 0xa6, 0xfe, 0xdd, 0xff, 0x91,
+	0x6d, 0xe8, 0x0a, 0x0c, 0x33, 0x21, 0xd9, 0x0c, 0x0b, 0xd4, 0xb9, 0x5b, 0x59, 0x2f, 0x45, 0xc7,
+	0x3b, 0xd0, 0x62, 0x11, 0x06, 0xc3, 0x8c, 0x71, 0xc5, 0x62, 0x63, 0x59, 0x34, 0xbe, 0x44, 0x1d,
+	0x72, 0x1b, 0x6e, 0x08, 0x3c, 0x44, 0xa1, 0x47, 0x26, 0x0a, 0x8e, 0x1d, 0xa8, 0x91, 0xcb, 0x00,
+	0x72, 0x82, 0x2a, 0x1c, 0x0f, 0x93, 0x64, 0xd2, 0xad, 0x7f, 0x74, 0xef, 0x8b, 0x77, 0x47, 0x4c,
+	0x8d, 0xb3, 0xa1, 0x2e, 0xcc, 0xae, 0x2d, 0x54, 0xf1, 0xf7, 0x5e, 0xc8, 0xd9, 0xae, 0x48, 0xc3,
+	0xdd, 0xa2, 0x68, 0xc3, 0x8d, 0xfc, 0xb7, 0xee, 0xfb, 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x26,
+	0x21, 0xca, 0x20, 0x31, 0x0f, 0x00, 0x00,
 }
diff --git a/rpc/commands/upload.pb.go b/rpc/commands/upload.pb.go
index 5f5e0e522e2..47d5b983876 100644
--- a/rpc/commands/upload.pb.go
+++ b/rpc/commands/upload.pb.go
@@ -162,23 +162,24 @@ func init() {
 func init() { proto.RegisterFile("commands/upload.proto", fileDescriptor_cd642cc079f8acdb) }
 
 var fileDescriptor_cd642cc079f8acdb = []byte{
-	// 288 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x90, 0x3d, 0x4b, 0x34, 0x31,
-	0x14, 0x85, 0xd9, 0x7d, 0xf7, 0xdd, 0x8f, 0xbb, 0x56, 0x01, 0x35, 0x08, 0xa2, 0x6e, 0x25, 0xc8,
-	0x66, 0x40, 0x6b, 0x1b, 0x0b, 0x41, 0x2b, 0x19, 0xb1, 0xb1, 0x59, 0x32, 0x99, 0x8c, 0x13, 0x9c,
-	0x49, 0xb2, 0x49, 0x46, 0xf0, 0x0f, 0xfb, 0x3b, 0xcc, 0xc7, 0x44, 0x2b, 0xab, 0xdc, 0x3c, 0xe7,
-	0x9c, 0x84, 0x7b, 0xe0, 0x90, 0xa9, 0xbe, 0xa7, 0xb2, 0xb6, 0xc5, 0xa0, 0x3b, 0x45, 0x6b, 0xa2,
-	0x8d, 0x72, 0x0a, 0x1d, 0x33, 0x46, 0xa8, 0xa9, 0x07, 0x21, 0x15, 0x61, 0x9d, 0x20, 0xd9, 0x75,
-	0xf2, 0xeb, 0x0f, 0x83, 0x92, 0xc9, 0xbf, 0xf9, 0x9a, 0xc0, 0xea, 0x25, 0x3e, 0x50, 0xf2, 0x3d,
-	0xba, 0x85, 0xa5, 0x90, 0xd6, 0x51, 0xc9, 0x38, 0x9e, 0x9c, 0x4f, 0x2e, 0xd7, 0xd7, 0x17, 0xe4,
-	0x8f, 0x07, 0xc9, 0xc3, 0x68, 0x2c, 0x7f, 0x22, 0x08, 0xc1, 0xac, 0xd9, 0x57, 0x12, 0x4f, 0x7d,
-	0x74, 0x55, 0xc6, 0x19, 0x9d, 0xc1, 0xda, 0xbe, 0x73, 0xc7, 0xda, 0x9d, 0xa6, 0xae, 0xc5, 0xff,
-	0xa2, 0x04, 0x09, 0x3d, 0x79, 0x12, 0x42, 0x5a, 0x19, 0x87, 0x67, 0x29, 0x14, 0x66, 0x84, 0x61,
-	0xf1, 0xc1, 0x4d, 0xa5, 0x2c, 0xc7, 0xff, 0x3d, 0x5e, 0x96, 0xf9, 0x8a, 0x8e, 0x60, 0xee, 0x47,
-	0xd1, 0x7c, 0xe2, 0x79, 0x14, 0xc6, 0x5b, 0xf8, 0x46, 0xf4, 0x21, 0xbb, 0x6b, 0x44, 0xc7, 0xf1,
-	0x22, 0x7d, 0x93, 0xd0, 0xbd, 0x27, 0x9b, 0x47, 0x80, 0xbc, 0xa7, 0xd5, 0xe8, 0x14, 0x40, 0x0d,
-	0x6e, 0x67, 0x9d, 0xe1, 0xb4, 0x8f, 0xab, 0x1e, 0x94, 0x2b, 0x4f, 0x9e, 0x23, 0x08, 0x32, 0x37,
-	0x26, 0xcb, 0xd3, 0x24, 0x7b, 0x92, 0xe4, 0xbb, 0xed, 0xeb, 0xd5, 0x9b, 0x70, 0xed, 0x50, 0x85,
-	0x36, 0x8a, 0xb1, 0x9d, 0x7c, 0x6e, 0x7d, 0x4b, 0x85, 0xd1, 0xac, 0xc8, 0x4d, 0x55, 0xf3, 0x58,
-	0xf5, 0xcd, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xf8, 0xc5, 0x33, 0xb3, 0x01, 0x00, 0x00,
+	// 291 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x90, 0x4f, 0x4b, 0xc4, 0x30,
+	0x10, 0xc5, 0xe9, 0xba, 0xee, 0x9f, 0x59, 0x4f, 0x01, 0x35, 0x08, 0xe2, 0xba, 0xa7, 0x05, 0xd9,
+	0x14, 0xf4, 0xec, 0xc5, 0x83, 0xa0, 0x27, 0xa9, 0x78, 0xf1, 0x52, 0xd2, 0x34, 0xb5, 0xc1, 0x36,
+	0xc9, 0x26, 0xe9, 0x82, 0x5f, 0xd8, 0xcf, 0x21, 0x49, 0x1a, 0x3d, 0x79, 0xca, 0x64, 0x7e, 0xef,
+	0xcd, 0x30, 0x0f, 0x4e, 0x99, 0xea, 0x7b, 0x2a, 0x6b, 0x9b, 0x0f, 0xba, 0x53, 0xb4, 0x26, 0xda,
+	0x28, 0xa7, 0xd0, 0x39, 0x63, 0x84, 0x9a, 0x7a, 0x10, 0x52, 0x11, 0xd6, 0x09, 0x92, 0x54, 0x17,
+	0x7f, 0x7a, 0x5f, 0x28, 0x19, 0xf5, 0x9b, 0xef, 0x0c, 0x96, 0x6f, 0x61, 0x40, 0xc1, 0xf7, 0xe8,
+	0x1e, 0x16, 0x42, 0x5a, 0x47, 0x25, 0xe3, 0x38, 0x5b, 0x67, 0xdb, 0xd5, 0xed, 0x35, 0xf9, 0x67,
+	0x20, 0x79, 0x1a, 0x85, 0xc5, 0xaf, 0x05, 0x21, 0x98, 0x36, 0xfb, 0x4a, 0xe2, 0xc9, 0x3a, 0xdb,
+	0x2e, 0x8b, 0x50, 0xa3, 0x2b, 0x58, 0xd9, 0x4f, 0xee, 0x58, 0x5b, 0x6a, 0xea, 0x5a, 0x7c, 0x14,
+	0x10, 0xc4, 0xd6, 0x0b, 0x75, 0xad, 0x37, 0x69, 0x65, 0x1c, 0x9e, 0x46, 0x93, 0xaf, 0x11, 0x86,
+	0xf9, 0x81, 0x9b, 0x4a, 0x59, 0x8e, 0x8f, 0xd7, 0xd9, 0x76, 0x51, 0xa4, 0x2f, 0x3a, 0x83, 0xd9,
+	0x81, 0x1b, 0xd1, 0x7c, 0xe1, 0x59, 0x00, 0xe3, 0xcf, 0xaf, 0x11, 0xbd, 0xf7, 0x96, 0x8d, 0xe8,
+	0x38, 0x9e, 0xc7, 0x35, 0xb1, 0xf5, 0x28, 0x3a, 0xbe, 0x79, 0x06, 0x48, 0x77, 0x5a, 0x8d, 0x2e,
+	0x01, 0xd4, 0xe0, 0x4a, 0xeb, 0x0c, 0xa7, 0x7d, 0x38, 0xf5, 0xa4, 0x58, 0xaa, 0xc1, 0xbd, 0x86,
+	0x86, 0xc7, 0xdc, 0x98, 0x84, 0x27, 0x11, 0x73, 0x63, 0x22, 0x7e, 0xd8, 0xbd, 0xdf, 0x7c, 0x08,
+	0xd7, 0x0e, 0x95, 0x4f, 0x23, 0x1f, 0xd3, 0x49, 0xef, 0x8e, 0x75, 0x22, 0x37, 0x9a, 0xe5, 0x29,
+	0xa9, 0x6a, 0x16, 0xa2, 0xbe, 0xfb, 0x09, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xf8, 0xc5, 0x33, 0xb3,
+	0x01, 0x00, 0x00,
 }
diff --git a/rpc/monitor/monitor.pb.go b/rpc/monitor/monitor.pb.go
index 6814ffd24d3..641ef31de7d 100644
--- a/rpc/monitor/monitor.pb.go
+++ b/rpc/monitor/monitor.pb.go
@@ -241,28 +241,29 @@ func init() {
 func init() { proto.RegisterFile("monitor/monitor.proto", fileDescriptor_94d5950496a7550d) }
 
 var fileDescriptor_94d5950496a7550d = []byte{
-	// 336 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x4e, 0x02, 0x31,
-	0x10, 0x86, 0x59, 0x25, 0x10, 0x46, 0x30, 0xd8, 0x28, 0x12, 0xe2, 0xc1, 0x6c, 0x62, 0x44, 0xa3,
-	0x5d, 0x82, 0x4f, 0x20, 0x68, 0xa2, 0x89, 0xc4, 0x64, 0xe1, 0xe4, 0xad, 0x74, 0xcb, 0x5a, 0x03,
-	0x6d, 0x2d, 0xb3, 0x07, 0xaf, 0x3e, 0x9f, 0x0f, 0xe5, 0x5a, 0x4a, 0x14, 0xd4, 0x84, 0x53, 0x33,
-	0x99, 0xf9, 0xfe, 0x99, 0xff, 0xdf, 0x85, 0x83, 0x99, 0x56, 0x12, 0xb5, 0x8d, 0xfc, 0x4b, 0x8d,
-	0xd5, 0xa8, 0x49, 0x83, 0x73, 0xca, 0x6c, 0x92, 0x49, 0xa5, 0x29, 0x9f, 0x4a, 0xea, 0xbb, 0xad,
-	0xa3, 0x54, 0xeb, 0x74, 0x2a, 0x22, 0x37, 0x35, 0xce, 0x26, 0xd1, 0x1c, 0x6d, 0xc6, 0x71, 0x41,
-	0x85, 0xef, 0x01, 0xd4, 0x87, 0x68, 0x05, 0x9b, 0x49, 0x95, 0x3e, 0x1a, 0xa1, 0x62, 0xf1, 0x4a,
-	0x06, 0x50, 0xf3, 0x74, 0x5f, 0xab, 0x89, 0x4c, 0x9b, 0xc1, 0x71, 0xd0, 0xde, 0xe9, 0x9e, 0xd0,
-	0xbf, 0x57, 0xd0, 0xc1, 0xcf, 0xe1, 0xbb, 0x42, 0xbc, 0x4a, 0x93, 0x7d, 0x28, 0x26, 0x0c, 0x59,
-	0x73, 0x2b, 0x57, 0xa9, 0xe6, 0x6d, 0x57, 0xf5, 0x2a, 0x50, 0xe6, 0x5a, 0xa1, 0x50, 0x18, 0x7e,
-	0x04, 0x50, 0x5b, 0xd1, 0x20, 0x0d, 0x28, 0x21, 0xb3, 0xa9, 0x40, 0xb7, 0xba, 0x12, 0xfb, 0x8a,
-	0xdc, 0x40, 0x11, 0xdf, 0x8c, 0x70, 0x52, 0xbb, 0xdd, 0xce, 0x46, 0x07, 0xd1, 0x91, 0x63, 0x47,
-	0x39, 0x17, 0x3b, 0x9a, 0xf4, 0xa1, 0xce, 0x92, 0x44, 0xa2, 0xd4, 0x8a, 0x4d, 0xbd, 0xc5, 0x6d,
-	0x67, 0xf1, 0x90, 0x2e, 0xd2, 0xa2, 0xcb, 0xb4, 0xe8, 0xd0, 0xa5, 0x15, 0xff, 0x02, 0xc2, 0x26,
-	0xc0, 0xb7, 0x30, 0x01, 0x28, 0x0d, 0x6f, 0xe3, 0xfb, 0xeb, 0x87, 0x7a, 0x21, 0x3c, 0x85, 0xbd,
-	0xb5, 0x48, 0xe7, 0x86, 0x10, 0x1f, 0xc2, 0x97, 0x9f, 0xea, 0x22, 0x82, 0x6e, 0x06, 0x65, 0x7f,
-	0x29, 0x79, 0x81, 0xda, 0x0a, 0x43, 0xda, 0xff, 0x79, 0x5b, 0xff, 0x5a, 0xad, 0xb3, 0x0d, 0x27,
-	0xe7, 0x26, 0x2c, 0xb4, 0x83, 0x4e, 0xd0, 0xbb, 0x78, 0x3a, 0x4f, 0x25, 0x3e, 0x67, 0x63, 0xca,
-	0xf5, 0x2c, 0xf2, 0xe4, 0xf2, 0xbd, 0xcc, 0x15, 0x22, 0x6b, 0xf8, 0xf2, 0xef, 0x1a, 0x97, 0x5c,
-	0x14, 0x57, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x8c, 0x6c, 0x5e, 0x00, 0x77, 0x02, 0x00, 0x00,
+	// 339 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xd1, 0x4e, 0xf2, 0x30,
+	0x14, 0xc7, 0xb7, 0xef, 0x23, 0x10, 0x8e, 0x60, 0xb0, 0x51, 0x24, 0xc4, 0x0b, 0xb2, 0xc4, 0x38,
+	0x8d, 0x76, 0x04, 0x9f, 0x40, 0xd0, 0x04, 0x13, 0x89, 0x49, 0xe1, 0xca, 0xbb, 0xd2, 0x95, 0x59,
+	0x33, 0xda, 0x5a, 0xba, 0x0b, 0x6e, 0x7d, 0x3e, 0x1f, 0xca, 0x58, 0x4a, 0x14, 0xd4, 0x84, 0xab,
+	0xa6, 0xd9, 0xf9, 0x9d, 0x73, 0xfe, 0xbf, 0x15, 0x8e, 0xe6, 0x4a, 0x0a, 0xab, 0x4c, 0xe2, 0x4f,
+	0xac, 0x8d, 0xb2, 0x0a, 0x35, 0x19, 0xc3, 0xd4, 0xa4, 0x85, 0x90, 0x0a, 0xb3, 0x5c, 0x60, 0xff,
+	0xb5, 0x7d, 0x92, 0x29, 0x95, 0xe5, 0x3c, 0x71, 0x55, 0xd3, 0x62, 0x96, 0x2c, 0xac, 0x29, 0x98,
+	0x5d, 0x51, 0xd1, 0x5b, 0x08, 0x8d, 0xb1, 0x35, 0x9c, 0xce, 0x85, 0xcc, 0x1e, 0x35, 0x97, 0x84,
+	0xbf, 0xa2, 0x11, 0xd4, 0x3d, 0x3d, 0x50, 0x72, 0x26, 0xb2, 0x56, 0xd8, 0x09, 0xe3, 0xbd, 0xde,
+	0x29, 0xfe, 0x7d, 0x04, 0x1e, 0x7d, 0x2f, 0x1e, 0x06, 0x64, 0x93, 0x46, 0x87, 0x50, 0x4a, 0xa9,
+	0xa5, 0xad, 0x7f, 0x9d, 0x30, 0xae, 0x0d, 0x03, 0xe2, 0x6e, 0xfd, 0x2a, 0x54, 0x98, 0x92, 0x96,
+	0x4b, 0x1b, 0xbd, 0x87, 0x50, 0xdf, 0xe8, 0x81, 0x9a, 0x50, 0xb6, 0xd4, 0x64, 0xdc, 0xba, 0xd1,
+	0x55, 0xe2, 0x6f, 0xe8, 0x16, 0x4a, 0x76, 0xa9, 0xb9, 0x6b, 0xb5, 0xdf, 0xeb, 0xee, 0xb4, 0x10,
+	0x9e, 0x38, 0x76, 0xb2, 0xd4, 0x9c, 0x38, 0x1a, 0x0d, 0xa0, 0x41, 0xd3, 0x54, 0x58, 0xa1, 0x24,
+	0xcd, 0x7d, 0xc4, 0xff, 0x2e, 0xe2, 0x31, 0x5e, 0xd9, 0xc2, 0x6b, 0x5b, 0x78, 0xec, 0x6c, 0x91,
+	0x1f, 0x40, 0xd4, 0x02, 0xf8, 0x6a, 0x8c, 0x00, 0xca, 0xe3, 0x3b, 0x72, 0x7f, 0xf3, 0xd0, 0x08,
+	0xa2, 0x33, 0x38, 0xd8, 0x52, 0xba, 0xd0, 0x08, 0x79, 0x09, 0x9f, 0x79, 0x6a, 0x2b, 0x05, 0xbd,
+	0x02, 0x2a, 0x7e, 0x53, 0xf4, 0x02, 0xf5, 0x0d, 0x06, 0xc5, 0x7f, 0x65, 0xdb, 0xfe, 0x5b, 0xed,
+	0xf3, 0x1d, 0x2b, 0x17, 0x3a, 0x0a, 0xe2, 0xb0, 0x1b, 0xf6, 0x2f, 0x9f, 0x2e, 0x32, 0x61, 0x9f,
+	0x8b, 0x29, 0x66, 0x6a, 0x9e, 0x78, 0x72, 0x7d, 0x5e, 0xb1, 0x5c, 0x24, 0x46, 0xb3, 0xf5, 0xeb,
+	0x9a, 0x96, 0x9d, 0x8a, 0xeb, 0x8f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8c, 0x6c, 0x5e, 0x00, 0x77,
+	0x02, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/rpc/settings/settings.pb.go b/rpc/settings/settings.pb.go
new file mode 100644
index 00000000000..73f9ff1c2ce
--- /dev/null
+++ b/rpc/settings/settings.pb.go
@@ -0,0 +1,464 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: settings/settings.proto
+
+package settings
+
+import (
+	context "context"
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type RawData struct {
+	JsonData             string   `protobuf:"bytes,1,opt,name=jsonData,proto3" json:"jsonData,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *RawData) Reset()         { *m = RawData{} }
+func (m *RawData) String() string { return proto.CompactTextString(m) }
+func (*RawData) ProtoMessage()    {}
+func (*RawData) Descriptor() ([]byte, []int) {
+	return fileDescriptor_a4bfd59e429426d0, []int{0}
+}
+
+func (m *RawData) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RawData.Unmarshal(m, b)
+}
+func (m *RawData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RawData.Marshal(b, m, deterministic)
+}
+func (m *RawData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RawData.Merge(m, src)
+}
+func (m *RawData) XXX_Size() int {
+	return xxx_messageInfo_RawData.Size(m)
+}
+func (m *RawData) XXX_DiscardUnknown() {
+	xxx_messageInfo_RawData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RawData proto.InternalMessageInfo
+
+func (m *RawData) GetJsonData() string {
+	if m != nil {
+		return m.JsonData
+	}
+	return ""
+}
+
+type Value struct {
+	Key                  string   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	JsonData             string   `protobuf:"bytes,2,opt,name=jsonData,proto3" json:"jsonData,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Value) Reset()         { *m = Value{} }
+func (m *Value) String() string { return proto.CompactTextString(m) }
+func (*Value) ProtoMessage()    {}
+func (*Value) Descriptor() ([]byte, []int) {
+	return fileDescriptor_a4bfd59e429426d0, []int{1}
+}
+
+func (m *Value) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Value.Unmarshal(m, b)
+}
+func (m *Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Value.Marshal(b, m, deterministic)
+}
+func (m *Value) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Value.Merge(m, src)
+}
+func (m *Value) XXX_Size() int {
+	return xxx_messageInfo_Value.Size(m)
+}
+func (m *Value) XXX_DiscardUnknown() {
+	xxx_messageInfo_Value.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Value proto.InternalMessageInfo
+
+func (m *Value) GetKey() string {
+	if m != nil {
+		return m.Key
+	}
+	return ""
+}
+
+func (m *Value) GetJsonData() string {
+	if m != nil {
+		return m.JsonData
+	}
+	return ""
+}
+
+type GetAllRequest struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetAllRequest) Reset()         { *m = GetAllRequest{} }
+func (m *GetAllRequest) String() string { return proto.CompactTextString(m) }
+func (*GetAllRequest) ProtoMessage()    {}
+func (*GetAllRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_a4bfd59e429426d0, []int{2}
+}
+
+func (m *GetAllRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetAllRequest.Unmarshal(m, b)
+}
+func (m *GetAllRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetAllRequest.Marshal(b, m, deterministic)
+}
+func (m *GetAllRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetAllRequest.Merge(m, src)
+}
+func (m *GetAllRequest) XXX_Size() int {
+	return xxx_messageInfo_GetAllRequest.Size(m)
+}
+func (m *GetAllRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetAllRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetAllRequest proto.InternalMessageInfo
+
+type GetValueRequest struct {
+	Key                  string   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetValueRequest) Reset()         { *m = GetValueRequest{} }
+func (m *GetValueRequest) String() string { return proto.CompactTextString(m) }
+func (*GetValueRequest) ProtoMessage()    {}
+func (*GetValueRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_a4bfd59e429426d0, []int{3}
+}
+
+func (m *GetValueRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetValueRequest.Unmarshal(m, b)
+}
+func (m *GetValueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetValueRequest.Marshal(b, m, deterministic)
+}
+func (m *GetValueRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetValueRequest.Merge(m, src)
+}
+func (m *GetValueRequest) XXX_Size() int {
+	return xxx_messageInfo_GetValueRequest.Size(m)
+}
+func (m *GetValueRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetValueRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetValueRequest proto.InternalMessageInfo
+
+func (m *GetValueRequest) GetKey() string {
+	if m != nil {
+		return m.Key
+	}
+	return ""
+}
+
+type MergeResponse struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MergeResponse) Reset()         { *m = MergeResponse{} }
+func (m *MergeResponse) String() string { return proto.CompactTextString(m) }
+func (*MergeResponse) ProtoMessage()    {}
+func (*MergeResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_a4bfd59e429426d0, []int{4}
+}
+
+func (m *MergeResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MergeResponse.Unmarshal(m, b)
+}
+func (m *MergeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MergeResponse.Marshal(b, m, deterministic)
+}
+func (m *MergeResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MergeResponse.Merge(m, src)
+}
+func (m *MergeResponse) XXX_Size() int {
+	return xxx_messageInfo_MergeResponse.Size(m)
+}
+func (m *MergeResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_MergeResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MergeResponse proto.InternalMessageInfo
+
+type SetValueResponse struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SetValueResponse) Reset()         { *m = SetValueResponse{} }
+func (m *SetValueResponse) String() string { return proto.CompactTextString(m) }
+func (*SetValueResponse) ProtoMessage()    {}
+func (*SetValueResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_a4bfd59e429426d0, []int{5}
+}
+
+func (m *SetValueResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SetValueResponse.Unmarshal(m, b)
+}
+func (m *SetValueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SetValueResponse.Marshal(b, m, deterministic)
+}
+func (m *SetValueResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SetValueResponse.Merge(m, src)
+}
+func (m *SetValueResponse) XXX_Size() int {
+	return xxx_messageInfo_SetValueResponse.Size(m)
+}
+func (m *SetValueResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_SetValueResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SetValueResponse proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*RawData)(nil), "cc.arduino.cli.settings.RawData")
+	proto.RegisterType((*Value)(nil), "cc.arduino.cli.settings.Value")
+	proto.RegisterType((*GetAllRequest)(nil), "cc.arduino.cli.settings.GetAllRequest")
+	proto.RegisterType((*GetValueRequest)(nil), "cc.arduino.cli.settings.GetValueRequest")
+	proto.RegisterType((*MergeResponse)(nil), "cc.arduino.cli.settings.MergeResponse")
+	proto.RegisterType((*SetValueResponse)(nil), "cc.arduino.cli.settings.SetValueResponse")
+}
+
+func init() { proto.RegisterFile("settings/settings.proto", fileDescriptor_a4bfd59e429426d0) }
+
+var fileDescriptor_a4bfd59e429426d0 = []byte{
+	// 282 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2f, 0x4e, 0x2d, 0x29,
+	0xc9, 0xcc, 0x4b, 0x2f, 0xd6, 0x87, 0x31, 0xf4, 0x0a, 0x8a, 0xf2, 0x4b, 0xf2, 0x85, 0xc4, 0x93,
+	0x93, 0xf5, 0x12, 0x8b, 0x52, 0x4a, 0x33, 0xf3, 0xf2, 0xf5, 0x92, 0x73, 0x32, 0xf5, 0x60, 0xd2,
+	0x4a, 0xaa, 0x5c, 0xec, 0x41, 0x89, 0xe5, 0x2e, 0x89, 0x25, 0x89, 0x42, 0x52, 0x5c, 0x1c, 0x59,
+	0xc5, 0xf9, 0x79, 0x20, 0xb6, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x67, 0x10, 0x9c, 0xaf, 0x64, 0xca,
+	0xc5, 0x1a, 0x96, 0x98, 0x53, 0x9a, 0x2a, 0x24, 0xc0, 0xc5, 0x9c, 0x9d, 0x5a, 0x09, 0x95, 0x07,
+	0x31, 0x51, 0xb4, 0x31, 0xa1, 0x69, 0xe3, 0xe7, 0xe2, 0x75, 0x4f, 0x2d, 0x71, 0xcc, 0xc9, 0x09,
+	0x4a, 0x2d, 0x2c, 0x4d, 0x2d, 0x2e, 0x51, 0x52, 0xe6, 0xe2, 0x77, 0x4f, 0x2d, 0x01, 0x1b, 0x05,
+	0x15, 0xc2, 0x34, 0x11, 0xa4, 0xcb, 0x37, 0xb5, 0x28, 0x3d, 0x35, 0x28, 0xb5, 0xb8, 0x20, 0x3f,
+	0xaf, 0x38, 0x55, 0x49, 0x88, 0x4b, 0x20, 0x18, 0xae, 0x0b, 0x22, 0x66, 0x74, 0x8f, 0x89, 0x8b,
+	0x23, 0x18, 0xea, 0x0b, 0xa1, 0x20, 0x2e, 0x36, 0x88, 0x3d, 0x42, 0x6a, 0x7a, 0x38, 0x7c, 0xaa,
+	0x87, 0xe2, 0x10, 0x29, 0x05, 0x9c, 0xea, 0x60, 0xc1, 0x11, 0xc8, 0xc5, 0x0a, 0x76, 0x85, 0x10,
+	0x41, 0xa5, 0x52, 0xb8, 0x2d, 0x45, 0xf1, 0x87, 0x50, 0x08, 0x17, 0x07, 0xcc, 0xf7, 0x42, 0x1a,
+	0xf8, 0x1c, 0x8a, 0x1c, 0x40, 0x52, 0x72, 0x38, 0x55, 0x42, 0x4c, 0x0a, 0x05, 0x07, 0x04, 0x84,
+	0x4d, 0x40, 0xad, 0x94, 0x26, 0x4e, 0x79, 0xf4, 0x00, 0x76, 0xd2, 0x8d, 0xd2, 0x4e, 0xcf, 0x2c,
+	0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0xea, 0x81, 0xd1, 0xba, 0xc9, 0x39, 0x99,
+	0xfa, 0x45, 0x05, 0xc9, 0xf0, 0x74, 0x96, 0xc4, 0x06, 0x4e, 0x68, 0xc6, 0x80, 0x00, 0x00, 0x00,
+	0xff, 0xff, 0x77, 0x53, 0x26, 0x69, 0x83, 0x02, 0x00, 0x00,
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// SettingsClient is the client API for Settings service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type SettingsClient interface {
+	GetAll(ctx context.Context, in *GetAllRequest, opts ...grpc.CallOption) (*RawData, error)
+	Merge(ctx context.Context, in *RawData, opts ...grpc.CallOption) (*MergeResponse, error)
+	GetValue(ctx context.Context, in *GetValueRequest, opts ...grpc.CallOption) (*Value, error)
+	SetValue(ctx context.Context, in *Value, opts ...grpc.CallOption) (*SetValueResponse, error)
+}
+
+type settingsClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewSettingsClient(cc *grpc.ClientConn) SettingsClient {
+	return &settingsClient{cc}
+}
+
+func (c *settingsClient) GetAll(ctx context.Context, in *GetAllRequest, opts ...grpc.CallOption) (*RawData, error) {
+	out := new(RawData)
+	err := c.cc.Invoke(ctx, "/cc.arduino.cli.settings.Settings/GetAll", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *settingsClient) Merge(ctx context.Context, in *RawData, opts ...grpc.CallOption) (*MergeResponse, error) {
+	out := new(MergeResponse)
+	err := c.cc.Invoke(ctx, "/cc.arduino.cli.settings.Settings/Merge", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *settingsClient) GetValue(ctx context.Context, in *GetValueRequest, opts ...grpc.CallOption) (*Value, error) {
+	out := new(Value)
+	err := c.cc.Invoke(ctx, "/cc.arduino.cli.settings.Settings/GetValue", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *settingsClient) SetValue(ctx context.Context, in *Value, opts ...grpc.CallOption) (*SetValueResponse, error) {
+	out := new(SetValueResponse)
+	err := c.cc.Invoke(ctx, "/cc.arduino.cli.settings.Settings/SetValue", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// SettingsServer is the server API for Settings service.
+type SettingsServer interface {
+	GetAll(context.Context, *GetAllRequest) (*RawData, error)
+	Merge(context.Context, *RawData) (*MergeResponse, error)
+	GetValue(context.Context, *GetValueRequest) (*Value, error)
+	SetValue(context.Context, *Value) (*SetValueResponse, error)
+}
+
+// UnimplementedSettingsServer can be embedded to have forward compatible implementations.
+type UnimplementedSettingsServer struct {
+}
+
+func (*UnimplementedSettingsServer) GetAll(ctx context.Context, req *GetAllRequest) (*RawData, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetAll not implemented")
+}
+func (*UnimplementedSettingsServer) Merge(ctx context.Context, req *RawData) (*MergeResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method Merge not implemented")
+}
+func (*UnimplementedSettingsServer) GetValue(ctx context.Context, req *GetValueRequest) (*Value, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetValue not implemented")
+}
+func (*UnimplementedSettingsServer) SetValue(ctx context.Context, req *Value) (*SetValueResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SetValue not implemented")
+}
+
+func RegisterSettingsServer(s *grpc.Server, srv SettingsServer) {
+	s.RegisterService(&_Settings_serviceDesc, srv)
+}
+
+func _Settings_GetAll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetAllRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SettingsServer).GetAll(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/cc.arduino.cli.settings.Settings/GetAll",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SettingsServer).GetAll(ctx, req.(*GetAllRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Settings_Merge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(RawData)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SettingsServer).Merge(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/cc.arduino.cli.settings.Settings/Merge",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SettingsServer).Merge(ctx, req.(*RawData))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Settings_GetValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetValueRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SettingsServer).GetValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/cc.arduino.cli.settings.Settings/GetValue",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SettingsServer).GetValue(ctx, req.(*GetValueRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Settings_SetValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Value)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SettingsServer).SetValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/cc.arduino.cli.settings.Settings/SetValue",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SettingsServer).SetValue(ctx, req.(*Value))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _Settings_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "cc.arduino.cli.settings.Settings",
+	HandlerType: (*SettingsServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetAll",
+			Handler:    _Settings_GetAll_Handler,
+		},
+		{
+			MethodName: "Merge",
+			Handler:    _Settings_Merge_Handler,
+		},
+		{
+			MethodName: "GetValue",
+			Handler:    _Settings_GetValue_Handler,
+		},
+		{
+			MethodName: "SetValue",
+			Handler:    _Settings_SetValue_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "settings/settings.proto",
+}
diff --git a/rpc/settings/settings.proto b/rpc/settings/settings.proto
new file mode 100644
index 00000000000..d87dc5e4b22
--- /dev/null
+++ b/rpc/settings/settings.proto
@@ -0,0 +1,41 @@
+// This file is part of arduino-cli.
+//
+// Copyright 2019 ARDUINO SA (http://www.arduino.cc/)
+//
+// This software is released under the GNU General Public License version 3,
+// which covers the main part of arduino-cli.
+// The terms of this license can be found at:
+// https://www.gnu.org/licenses/gpl-3.0.en.html
+//
+// You can be released from the requirements of the above licenses by purchasing
+// a commercial license. Buying such a license is mandatory if you want to
+// modify or otherwise use the software for commercial activities involving the
+// Arduino software without disclosing the source code of your own applications.
+// To purchase a commercial license, send an email to license@arduino.cc.
+
+syntax = "proto3";
+
+package cc.arduino.cli.settings;
+
+option go_package = "github.com/arduino/arduino-cli/rpc/settings";
+
+service Settings {
+  rpc GetAll(GetAllRequest) returns (RawData);
+  rpc Merge(RawData) returns (MergeResponse);
+  rpc GetValue(GetValueRequest) returns (Value);
+  rpc SetValue(Value) returns (SetValueResponse);
+}
+
+message RawData {
+    string jsonData = 1;
+}
+
+message Value {
+  string key = 1;
+  string jsonData = 2;
+}
+
+message GetAllRequest {}
+message GetValueRequest { string key = 1; }
+message MergeResponse {}
+message SetValueResponse {}