diff --git a/console/atest-ui/src/views/Extension.vue b/console/atest-ui/src/views/Extension.vue
new file mode 100644
index 00000000..95a23b5a
--- /dev/null
+++ b/console/atest-ui/src/views/Extension.vue
@@ -0,0 +1,49 @@
+
+
+
+
+ {{ props.name }}
+
+
diff --git a/console/atest-ui/src/views/MockManager.vue b/console/atest-ui/src/views/MockManager.vue
index 5ff28194..08b6e574 100644
--- a/console/atest-ui/src/views/MockManager.vue
+++ b/console/atest-ui/src/views/MockManager.vue
@@ -1,6 +1,7 @@
-
-
-
-
-
-
- {{ scope.row.Name }}
-
-
-
-
-
- {{t('button.delete')}}
- {{t('button.edit')}}
-
-
-
-
-
-
- Follow the instructions to configure the secret server.
-
-
-
-
-
-
-
-
diff --git a/console/atest-ui/src/views/TestCase.vue b/console/atest-ui/src/views/TestCase.vue
index 90631f51..72be868c 100644
--- a/console/atest-ui/src/views/TestCase.vue
+++ b/console/atest-ui/src/views/TestCase.vue
@@ -1290,7 +1290,7 @@ Magic.LoadMagicKeys('TestCase', new Map([
v-model="historyForm.selectedID"
default-first-option
placeholder="History Case"
- size="middle"
+ size="default"
@change="handleHistoryChange"
>
{
v-model="testCaseForm.request.method"
class="m-2"
placeholder="Method"
- size="middle"
+ size="default"
test-id="case-form-method"
>
void) {
.then(emptyOrDefault(callback))
}
+const GetMenus = (callback?: (v: any) => void) => {
+ const requestOptions = {
+ method: 'GET',
+ }
+ fetch('/api/v1/extension/menus', requestOptions)
+ .then(DefaultResponseProcess)
+ .then(emptyOrDefault(callback))
+}
+
+const GetPageOfJS = (name: string, callback?: (v: CommonResult) => void) => {
+ const requestOptions = {
+ method: 'GET',
+ }
+ fetch(`/api/v1/extension/pages/${name}/js`, requestOptions)
+ .then(DefaultResponseProcess)
+ .then(emptyOrDefault(callback))
+}
+
+const GetPageOfCSS = (name: string, callback?: (v: CommonResult) => void) => {
+ const requestOptions = {
+ method: 'GET',
+ }
+ fetch(`/api/v1/extension/pages/${name}/css`, requestOptions)
+ .then(DefaultResponseProcess)
+ .then(emptyOrDefault(callback))
+}
+
interface CommonResult {
message: string
success: boolean
@@ -719,7 +746,7 @@ function ReloadMockServer(config: any) {
},
body: JSON.stringify(config)
}
- fetch(`/api/v1/mock/reload`, requestOptions)
+ return fetch(`/api/v1/mock/reload`, requestOptions)
.then(DefaultResponseProcess)
}
@@ -965,7 +992,7 @@ const GetBinding = (name: string, callback: (d: any) => void | null) => {
export const API = {
DefaultResponseProcess,
- GetVersion, GetSchema,
+ GetVersion, GetSchema, GetMenus, GetPageOfJS, GetPageOfCSS,
CreateTestSuite, UpdateTestSuite, ImportTestSuite, GetTestSuite, DeleteTestSuite, ConvertTestSuite, DuplicateTestSuite, RenameTestSuite, GetTestSuiteYaml,
CreateTestCase, UpdateTestCase, GetTestCase, ListTestCase, DeleteTestCase, DuplicateTestCase, RenameTestCase, RunTestCase, BatchRunTestCase,
GetHistoryTestCaseWithResult, DeleteHistoryTestCase, GetHistoryTestCase, GetTestCaseAllHistory, DeleteAllHistoryTestCase, DownloadResponseFile,
diff --git a/pkg/mock/in_memory.go b/pkg/mock/in_memory.go
index 6077ccf0..4a59013a 100644
--- a/pkg/mock/in_memory.go
+++ b/pkg/mock/in_memory.go
@@ -16,726 +16,726 @@ limitations under the License.
package mock
import (
- "bytes"
- "context"
- "encoding/base64"
- "encoding/json"
- "fmt"
- "io"
- "net"
- "net/http"
- "os"
- "sort"
- "strings"
- "sync"
- "time"
-
- jsonpatch "github.com/evanphx/json-patch"
- "github.com/swaggest/openapi-go/openapi3"
- "github.com/swaggest/rest/gorillamux"
-
- "github.com/linuxsuren/api-testing/pkg/version"
-
- "github.com/linuxsuren/api-testing/pkg/logging"
- "github.com/linuxsuren/api-testing/pkg/render"
- "github.com/linuxsuren/api-testing/pkg/util"
-
- "github.com/gorilla/mux"
+ "bytes"
+ "context"
+ "encoding/base64"
+ "encoding/json"
+ "fmt"
+ "io"
+ "net"
+ "net/http"
+ "os"
+ "sort"
+ "strings"
+ "sync"
+ "time"
+
+ jsonpatch "github.com/evanphx/json-patch"
+ "github.com/swaggest/openapi-go/openapi3"
+ "github.com/swaggest/rest/gorillamux"
+
+ "github.com/linuxsuren/api-testing/pkg/version"
+
+ "github.com/linuxsuren/api-testing/pkg/logging"
+ "github.com/linuxsuren/api-testing/pkg/render"
+ "github.com/linuxsuren/api-testing/pkg/util"
+
+ "github.com/gorilla/mux"
)
var (
- memLogger = logging.DefaultLogger(logging.LogLevelInfo).WithName("memory")
+ memLogger = logging.DefaultLogger(logging.LogLevelInfo).WithName("memory")
)
type inMemoryServer struct {
- data map[string][]map[string]interface{}
- mux *mux.Router
- listener net.Listener
- certFile, keyFile string
- port int
- prefix string
- wg sync.WaitGroup
- ctx context.Context
- cancelFunc context.CancelFunc
- reader Reader
- metrics RequestMetrics
+ data map[string][]map[string]interface{}
+ mux *mux.Router
+ listener net.Listener
+ certFile, keyFile string
+ port int
+ prefix string
+ wg sync.WaitGroup
+ ctx context.Context
+ cancelFunc context.CancelFunc
+ reader Reader
+ metrics RequestMetrics
}
func NewInMemoryServer(ctx context.Context, port int) DynamicServer {
- ctx, cancel := context.WithCancel(ctx)
- return &inMemoryServer{
- port: port,
- wg: sync.WaitGroup{},
- ctx: ctx,
- cancelFunc: cancel,
- metrics: NewNoopMetrics(),
- }
+ ctx, cancel := context.WithCancel(ctx)
+ return &inMemoryServer{
+ port: port,
+ wg: sync.WaitGroup{},
+ ctx: ctx,
+ cancelFunc: cancel,
+ metrics: NewNoopMetrics(),
+ }
}
func (s *inMemoryServer) SetupHandler(reader Reader, prefix string) (handler http.Handler, err error) {
- s.reader = reader
- // init the data
- s.data = make(map[string][]map[string]interface{})
- s.mux = mux.NewRouter().PathPrefix(prefix).Subrouter()
- s.prefix = prefix
- handler = s.mux
- s.metrics.AddMetricsHandler(s.mux)
- err = s.Load()
- return
+ s.reader = reader
+ // init the data
+ s.data = make(map[string][]map[string]interface{})
+ s.mux = mux.NewRouter().PathPrefix(prefix).Subrouter()
+ s.prefix = prefix
+ handler = s.mux
+ s.metrics.AddMetricsHandler(s.mux)
+ err = s.Load()
+ return
}
func (s *inMemoryServer) WithTLS(certFile, keyFile string) DynamicServer {
- s.certFile = certFile
- s.keyFile = keyFile
- return s
+ s.certFile = certFile
+ s.keyFile = keyFile
+ return s
}
func (s *inMemoryServer) WithLogWriter(writer io.Writer) DynamicServer {
- if writer != nil {
- memLogger = memLogger.WithNameAndWriter("stream", writer)
- }
- return s
+ if writer != nil {
+ memLogger = memLogger.WithNameAndWriter("stream", writer)
+ }
+ return s
}
func (s *inMemoryServer) GetTLS() (string, string) {
- return s.certFile, s.keyFile
+ return s.certFile, s.keyFile
}
func (s *inMemoryServer) Load() (err error) {
- var server *Server
- if server, err = s.reader.Parse(); err != nil {
- return
- }
-
- memLogger.Info("start to run all the APIs from objects", "count", len(server.Objects))
- for _, obj := range server.Objects {
- memLogger.Info("start mock server from object", "name", obj.Name)
- s.startObject(obj)
- s.initObjectData(obj)
- }
-
- memLogger.Info("start to run all the APIs from items", "count", len(server.Items))
- for _, item := range server.Items {
- s.startItem(item)
- }
-
- memLogger.Info("start webhook servers", "count", len(server.Webhooks))
- for _, item := range server.Webhooks {
- if err = s.startWebhook(&item); err != nil {
- continue
- }
- }
-
- s.handleOpenAPI()
-
- for i, proxy := range server.Proxies {
- memLogger.Info("start to proxy", "target", proxy.Target)
- switch proxy.Protocol {
- case "http", "":
- s.httpProxy(&proxy)
- case "tcp":
- s.tcpProxy(&server.Proxies[i])
- default:
- memLogger.Error(fmt.Errorf("unsupported protocol: %s", proxy.Protocol), "failed to start proxy")
- }
- }
- return
+ var server *Server
+ if server, err = s.reader.Parse(); err != nil {
+ return
+ }
+
+ memLogger.Info("start to run all the APIs from objects", "count", len(server.Objects))
+ for _, obj := range server.Objects {
+ memLogger.Info("start mock server from object", "name", obj.Name)
+ s.startObject(obj)
+ s.initObjectData(obj)
+ }
+
+ memLogger.Info("start to run all the APIs from items", "count", len(server.Items))
+ for _, item := range server.Items {
+ s.startItem(item)
+ }
+
+ memLogger.Info("start webhook servers", "count", len(server.Webhooks))
+ for _, item := range server.Webhooks {
+ if err = s.startWebhook(&item); err != nil {
+ continue
+ }
+ }
+
+ s.handleOpenAPI()
+
+ for i, proxy := range server.Proxies {
+ memLogger.Info("start to proxy", "target", proxy.Target)
+ switch proxy.Protocol {
+ case "http", "":
+ s.httpProxy(&proxy)
+ case "tcp":
+ s.tcpProxy(&server.Proxies[i])
+ default:
+ memLogger.Error(fmt.Errorf("unsupported protocol: %s", proxy.Protocol), "failed to start proxy")
+ }
+ }
+ return
}
func (s *inMemoryServer) httpProxy(proxy *Proxy) {
- s.mux.HandleFunc(proxy.Path, func(w http.ResponseWriter, req *http.Request) {
- if !strings.HasSuffix(proxy.Target, "/") {
- proxy.Target += "/"
- }
- targetPath := strings.TrimPrefix(req.URL.Path, s.prefix)
- targetPath = strings.TrimPrefix(targetPath, "/")
-
- apiRaw := fmt.Sprintf("%s%s", proxy.Target, targetPath)
- api, err := render.Render("proxy api", apiRaw, s)
- if err != nil {
- w.WriteHeader(http.StatusInternalServerError)
- memLogger.Error(err, "failed to render proxy api", "api", apiRaw)
- return
- }
- memLogger.Info("redirect to", "target", api)
-
- var requestBody []byte
- if requestBody, err = io.ReadAll(req.Body); err != nil {
- w.WriteHeader(http.StatusInternalServerError)
- }
-
- if proxy.RequestAmend.BodyPatch != "" && len(requestBody) > 0 {
- var patch jsonpatch.Patch
- if patch, err = jsonpatch.DecodePatch([]byte(proxy.RequestAmend.BodyPatch)); err != nil {
- return
- }
-
- fmt.Println("before patch:", string(requestBody))
- if requestBody, err = patch.Apply(requestBody); err != nil {
- fmt.Println(err)
- return
- }
- fmt.Println("after patch:", string(requestBody))
- }
-
- targetReq, err := http.NewRequestWithContext(req.Context(), req.Method, api, bytes.NewBuffer(requestBody))
- if err != nil {
- w.WriteHeader(http.StatusInternalServerError)
- memLogger.Error(err, "failed to create proxy request")
- return
- }
-
- for k, v := range req.Header {
- targetReq.Header.Add(k, v[0])
- }
-
- resp, err := http.DefaultClient.Do(targetReq)
- if err != nil {
- w.WriteHeader(http.StatusInternalServerError)
- memLogger.Error(err, "failed to do proxy request")
- return
- }
-
- data, err := io.ReadAll(resp.Body)
- if err != nil {
- w.WriteHeader(http.StatusInternalServerError)
- memLogger.Error(err, "failed to read response body")
- return
- }
-
- for k, v := range resp.Header {
- w.Header().Add(k, v[0])
- }
- w.Write(data)
- })
+ s.mux.HandleFunc(proxy.Path, func(w http.ResponseWriter, req *http.Request) {
+ if !strings.HasSuffix(proxy.Target, "/") {
+ proxy.Target += "/"
+ }
+ targetPath := strings.TrimPrefix(req.URL.Path, s.prefix)
+ targetPath = strings.TrimPrefix(targetPath, "/")
+
+ apiRaw := fmt.Sprintf("%s%s", proxy.Target, targetPath)
+ api, err := render.Render("proxy api", apiRaw, s)
+ if err != nil {
+ w.WriteHeader(http.StatusInternalServerError)
+ memLogger.Error(err, "failed to render proxy api", "api", apiRaw)
+ return
+ }
+ memLogger.Info("redirect to", "target", api)
+
+ var requestBody []byte
+ if requestBody, err = io.ReadAll(req.Body); err != nil {
+ w.WriteHeader(http.StatusInternalServerError)
+ }
+
+ if proxy.RequestAmend.BodyPatch != "" && len(requestBody) > 0 {
+ var patch jsonpatch.Patch
+ if patch, err = jsonpatch.DecodePatch([]byte(proxy.RequestAmend.BodyPatch)); err != nil {
+ return
+ }
+
+ fmt.Println("before patch:", string(requestBody))
+ if requestBody, err = patch.Apply(requestBody); err != nil {
+ fmt.Println(err)
+ return
+ }
+ fmt.Println("after patch:", string(requestBody))
+ }
+
+ targetReq, err := http.NewRequestWithContext(req.Context(), req.Method, api, bytes.NewBuffer(requestBody))
+ if err != nil {
+ w.WriteHeader(http.StatusInternalServerError)
+ memLogger.Error(err, "failed to create proxy request")
+ return
+ }
+
+ for k, v := range req.Header {
+ targetReq.Header.Add(k, v[0])
+ }
+
+ resp, err := http.DefaultClient.Do(targetReq)
+ if err != nil {
+ w.WriteHeader(http.StatusInternalServerError)
+ memLogger.Error(err, "failed to do proxy request")
+ return
+ }
+
+ data, err := io.ReadAll(resp.Body)
+ if err != nil {
+ w.WriteHeader(http.StatusInternalServerError)
+ memLogger.Error(err, "failed to read response body")
+ return
+ }
+
+ for k, v := range resp.Header {
+ w.Header().Add(k, v[0])
+ }
+ w.Write(data)
+ })
}
func (s *inMemoryServer) tcpProxy(proxy *Proxy) {
- fmt.Println("start to proxy", proxy.Port)
- lisener, err := net.Listen("tcp", fmt.Sprintf(":%d", proxy.Port))
- if err != nil {
- memLogger.Error(err, "failed to listen")
- return
- }
- fmt.Printf("proxy local: %d, target: %s\n", proxy.Port, proxy.Target)
- defer lisener.Close()
-
- for {
- conn, err := lisener.Accept()
- if err != nil {
- memLogger.Error(err, "failed to accept")
- continue
- }
-
- fmt.Println("accept connection")
- go handleConnection(conn, proxy.Target)
- }
+ fmt.Println("start to proxy", proxy.Port)
+ lisener, err := net.Listen("tcp", fmt.Sprintf(":%d", proxy.Port))
+ if err != nil {
+ memLogger.Error(err, "failed to listen")
+ return
+ }
+ fmt.Printf("proxy local: %d, target: %s\n", proxy.Port, proxy.Target)
+ defer lisener.Close()
+
+ for {
+ conn, err := lisener.Accept()
+ if err != nil {
+ memLogger.Error(err, "failed to accept")
+ continue
+ }
+
+ fmt.Println("accept connection")
+ go handleConnection(conn, proxy.Target)
+ }
}
func handleConnection(clientConn net.Conn, targetAddr string) {
- defer clientConn.Close()
+ defer clientConn.Close()
- targetConn, err := net.DialTimeout("tcp", targetAddr, 10*time.Second)
- if err != nil {
- fmt.Printf("Failed to connect to target server: %v\n", err)
- return
- }
- defer targetConn.Close()
+ targetConn, err := net.DialTimeout("tcp", targetAddr, 10*time.Second)
+ if err != nil {
+ fmt.Printf("Failed to connect to target server: %v\n", err)
+ return
+ }
+ defer targetConn.Close()
- fmt.Printf("Connection established between %s and %s\n", clientConn.RemoteAddr(), targetConn.RemoteAddr())
+ fmt.Printf("Connection established between %s and %s\n", clientConn.RemoteAddr(), targetConn.RemoteAddr())
- go io.Copy(clientConn, targetConn)
- go io.Copy(targetConn, clientConn)
+ go io.Copy(clientConn, targetConn)
+ go io.Copy(targetConn, clientConn)
- select {}
+ select {}
}
func (s *inMemoryServer) Start(reader Reader, prefix string) (err error) {
- var handler http.Handler
- if handler, err = s.SetupHandler(reader, prefix); err == nil {
- if s.listener, err = net.Listen("tcp", fmt.Sprintf(":%d", s.port)); err == nil {
- go func() {
- if s.certFile != "" && s.keyFile != "" {
- if err = http.ServeTLS(s.listener, handler, s.certFile, s.keyFile); err != nil {
- memLogger.Error(err, "failed to start TLS mock server")
- }
- } else {
- memLogger.Info("start HTTP mock server")
- err = http.Serve(s.listener, handler)
- }
- }()
- }
- }
- return
+ var handler http.Handler
+ if handler, err = s.SetupHandler(reader, prefix); err == nil {
+ if s.listener, err = net.Listen("tcp", fmt.Sprintf(":%d", s.port)); err == nil {
+ go func() {
+ if s.certFile != "" && s.keyFile != "" {
+ if err = http.ServeTLS(s.listener, handler, s.certFile, s.keyFile); err != nil {
+ memLogger.Error(err, "failed to start TLS mock server")
+ }
+ } else {
+ memLogger.Info("start HTTP mock server")
+ err = http.Serve(s.listener, handler)
+ }
+ }()
+ }
+ }
+ return
}
func (s *inMemoryServer) EnableMetrics() {
- s.metrics = NewInMemoryMetrics()
+ s.metrics = NewInMemoryMetrics()
}
func (s *inMemoryServer) startObject(obj Object) {
- // create a simple CRUD server
- s.mux.HandleFunc("/"+obj.Name, func(w http.ResponseWriter, req *http.Request) {
- memLogger.Info("mock server received request", "path", req.URL.Path)
- s.metrics.RecordRequest(req.URL.Path)
- method := req.Method
- w.Header().Set(util.ContentType, util.JSON)
-
- switch method {
- case http.MethodGet:
- // list all items
- allItems := s.data[obj.Name]
- filteredItems := make([]map[string]interface{}, 0)
-
- for i, item := range allItems {
- exclude := false
-
- for k, v := range req.URL.Query() {
- if len(v) == 0 {
- continue
- }
-
- if val, ok := item[k]; ok && val != v[0] {
- exclude = true
- break
- }
- }
-
- if !exclude {
- filteredItems = append(filteredItems, allItems[i])
- }
- }
-
- if len(filteredItems) != len(allItems) {
- allItems = filteredItems
- }
-
- data, err := json.Marshal(allItems)
- writeResponse(w, data, err)
- case http.MethodPost:
- // create an item
- if data, err := io.ReadAll(req.Body); err == nil {
- objData := map[string]interface{}{}
-
- jsonErr := json.Unmarshal(data, &objData)
- if jsonErr != nil {
- memLogger.Info(jsonErr.Error())
- return
- }
-
- s.data[obj.Name] = append(s.data[obj.Name], objData)
-
- _, _ = w.Write(data)
- } else {
- memLogger.Info("failed to read from body", "error", err)
- }
- default:
- w.WriteHeader(http.StatusMethodNotAllowed)
- }
- })
-
- // handle a single object
- s.mux.HandleFunc(fmt.Sprintf("/%s/{name}", obj.Name), func(w http.ResponseWriter, req *http.Request) {
- s.metrics.RecordRequest(req.URL.Path)
- w.Header().Set(util.ContentType, util.JSON)
- objects := s.data[obj.Name]
- if objects != nil {
- name := mux.Vars(req)["name"]
- var data []byte
- for _, obj := range objects {
- if obj["name"] == name {
-
- data, _ = json.Marshal(obj)
- break
- }
- }
-
- if len(data) == 0 {
- w.WriteHeader(http.StatusNotFound)
- return
- }
-
- method := req.Method
- switch method {
- case http.MethodGet:
- writeResponse(w, data, nil)
- case http.MethodPut:
- objData := map[string]interface{}{}
- if data, err := io.ReadAll(req.Body); err == nil {
-
- jsonErr := json.Unmarshal(data, &objData)
- if jsonErr != nil {
- memLogger.Info(jsonErr.Error())
- return
- }
- for i, item := range s.data[obj.Name] {
- if item["name"] == name {
- s.data[obj.Name][i] = objData
- break
- }
- }
- _, _ = w.Write(data)
- }
- case http.MethodDelete:
- for i, item := range s.data[obj.Name] {
- if item["name"] == name {
- if len(s.data[obj.Name]) == i+1 {
- s.data[obj.Name] = s.data[obj.Name][:i]
- } else {
- s.data[obj.Name] = append(s.data[obj.Name][:i], s.data[obj.Name][i+1])
- }
-
- writeResponse(w, []byte(`{"msg": "deleted"}`), nil)
- }
- }
- default:
- w.WriteHeader(http.StatusMethodNotAllowed)
- }
-
- }
- })
+ // create a simple CRUD server
+ s.mux.HandleFunc("/"+obj.Name, func(w http.ResponseWriter, req *http.Request) {
+ memLogger.Info("mock server received request", "path", req.URL.Path)
+ s.metrics.RecordRequest(req.URL.Path)
+ method := req.Method
+ w.Header().Set(util.ContentType, util.JSON)
+
+ switch method {
+ case http.MethodGet:
+ // list all items
+ allItems := s.data[obj.Name]
+ filteredItems := make([]map[string]interface{}, 0)
+
+ for i, item := range allItems {
+ exclude := false
+
+ for k, v := range req.URL.Query() {
+ if len(v) == 0 {
+ continue
+ }
+
+ if val, ok := item[k]; ok && val != v[0] {
+ exclude = true
+ break
+ }
+ }
+
+ if !exclude {
+ filteredItems = append(filteredItems, allItems[i])
+ }
+ }
+
+ if len(filteredItems) != len(allItems) {
+ allItems = filteredItems
+ }
+
+ data, err := json.Marshal(allItems)
+ writeResponse(w, data, err)
+ case http.MethodPost:
+ // create an item
+ if data, err := io.ReadAll(req.Body); err == nil {
+ objData := map[string]interface{}{}
+
+ jsonErr := json.Unmarshal(data, &objData)
+ if jsonErr != nil {
+ memLogger.Info(jsonErr.Error())
+ return
+ }
+
+ s.data[obj.Name] = append(s.data[obj.Name], objData)
+
+ _, _ = w.Write(data)
+ } else {
+ memLogger.Info("failed to read from body", "error", err)
+ }
+ default:
+ w.WriteHeader(http.StatusMethodNotAllowed)
+ }
+ })
+
+ // handle a single object
+ s.mux.HandleFunc(fmt.Sprintf("/%s/{name}", obj.Name), func(w http.ResponseWriter, req *http.Request) {
+ s.metrics.RecordRequest(req.URL.Path)
+ w.Header().Set(util.ContentType, util.JSON)
+ objects := s.data[obj.Name]
+ if objects != nil {
+ name := mux.Vars(req)["name"]
+ var data []byte
+ for _, obj := range objects {
+ if obj["name"] == name {
+
+ data, _ = json.Marshal(obj)
+ break
+ }
+ }
+
+ if len(data) == 0 {
+ w.WriteHeader(http.StatusNotFound)
+ return
+ }
+
+ method := req.Method
+ switch method {
+ case http.MethodGet:
+ writeResponse(w, data, nil)
+ case http.MethodPut:
+ objData := map[string]interface{}{}
+ if data, err := io.ReadAll(req.Body); err == nil {
+
+ jsonErr := json.Unmarshal(data, &objData)
+ if jsonErr != nil {
+ memLogger.Info(jsonErr.Error())
+ return
+ }
+ for i, item := range s.data[obj.Name] {
+ if item["name"] == name {
+ s.data[obj.Name][i] = objData
+ break
+ }
+ }
+ _, _ = w.Write(data)
+ }
+ case http.MethodDelete:
+ for i, item := range s.data[obj.Name] {
+ if item["name"] == name {
+ if len(s.data[obj.Name]) == i+1 {
+ s.data[obj.Name] = s.data[obj.Name][:i]
+ } else {
+ s.data[obj.Name] = append(s.data[obj.Name][:i], s.data[obj.Name][i+1])
+ }
+
+ writeResponse(w, []byte(`{"msg": "deleted"}`), nil)
+ }
+ }
+ default:
+ w.WriteHeader(http.StatusMethodNotAllowed)
+ }
+
+ }
+ })
}
func (s *inMemoryServer) startItem(item Item) {
- method := util.EmptyThenDefault(item.Request.Method, http.MethodGet)
- memLogger.Info("register mock service", "method", method, "path", item.Request.Path, "encoder", item.Response.Encoder)
-
- var headerSlices []string
- for k, v := range item.Request.Header {
- headerSlices = append(headerSlices, k, v)
- }
-
- adHandler := &advanceHandler{
- item: &item,
- metrics: s.metrics,
- mu: sync.Mutex{},
- }
- existedRoute := s.mux.GetRoute(item.Name)
- if existedRoute == nil {
- s.mux.NewRoute().Name(item.Name).Methods(strings.Split(method, ",")...).Headers(headerSlices...).Path(item.Request.Path).HandlerFunc(adHandler.handle)
- } else {
- existedRoute.HandlerFunc(adHandler.handle)
- }
+ method := util.EmptyThenDefault(item.Request.Method, http.MethodGet)
+ memLogger.Info("register mock service", "method", method, "path", item.Request.Path, "encoder", item.Response.Encoder)
+
+ var headerSlices []string
+ for k, v := range item.Request.Header {
+ headerSlices = append(headerSlices, k, v)
+ }
+
+ adHandler := &advanceHandler{
+ item: &item,
+ metrics: s.metrics,
+ mu: sync.Mutex{},
+ }
+ existedRoute := s.mux.GetRoute(item.Name)
+ if existedRoute == nil {
+ s.mux.NewRoute().Name(item.Name).Methods(strings.Split(method, ",")...).Headers(headerSlices...).Path(item.Request.Path).HandlerFunc(adHandler.handle)
+ } else {
+ existedRoute.HandlerFunc(adHandler.handle)
+ }
}
type advanceHandler struct {
- item *Item
- metrics RequestMetrics
- mu sync.Mutex
+ item *Item
+ metrics RequestMetrics
+ mu sync.Mutex
}
func (h *advanceHandler) handle(w http.ResponseWriter, req *http.Request) {
- h.mu.Lock()
- defer h.mu.Unlock()
-
- h.metrics.RecordRequest(req.URL.Path)
- memLogger.Info("receiving mock request", "name", h.item.Name, "method", req.Method, "path", req.URL.Path,
- "encoder", h.item.Response.Encoder)
-
- h.item.Param = make(map[string]interface{})
- for k, v := range mux.Vars(req) {
- h.item.Param[k] = v
- }
- payloadBuf := bytes.Buffer{}
- if _, copyErr := io.Copy(&payloadBuf, req.Body); copyErr != nil {
- memLogger.Error(copyErr, "failed to read request body")
- } else {
- h.item.Param["_payload"] = payloadBuf.String()
- }
-
- h.item.Param["Host"] = req.Host
- if h.item.Response.Header == nil {
- h.item.Response.Header = make(map[string]string)
- }
- h.item.Response.Header[headerMockServer] = fmt.Sprintf("api-testing: %s", version.GetVersion())
- for k, v := range h.item.Response.Header {
- hv, hErr := render.Render("mock-server-header", v, &h.item)
- if hErr != nil {
- hv = v
- memLogger.Error(hErr, "failed render mock-server-header", "value", v)
- }
-
- w.Header().Set(k, hv)
- }
-
- if h.item.Response.BodyFromFile != "" {
- // read from file
- if data, readErr := os.ReadFile(h.item.Response.BodyFromFile); readErr != nil {
- memLogger.Error(readErr, "failed to read file", "file", h.item.Response.BodyFromFile)
- } else {
- h.item.Response.Body = string(data)
- }
- }
-
- var err error
- if h.item.Response.Encoder == "base64" {
- h.item.Response.BodyData, err = base64.StdEncoding.DecodeString(h.item.Response.Body)
- } else if h.item.Response.Encoder == "url" {
- var resp *http.Response
- if resp, err = http.Get(h.item.Response.Body); err == nil {
- h.item.Response.BodyData, err = io.ReadAll(resp.Body)
- }
- } else if h.item.Response.Encoder == "raw" {
- h.item.Response.BodyData = []byte(h.item.Response.Body)
- } else {
- if h.item.Response.BodyData, err = render.RenderAsBytes("start-item", h.item.Response.Body, h.item); err != nil {
- memLogger.Error(err, "failed to render body")
- }
- }
-
- if strings.HasPrefix(h.item.Response.Header[util.ContentType], "image/") {
- if strings.HasPrefix(string(h.item.Response.BodyData), util.ImageBase64Prefix) {
- // decode base64 image data
- imgData := strings.TrimPrefix(string(h.item.Response.BodyData), util.ImageBase64Prefix)
- if h.item.Response.BodyData, err = base64.StdEncoding.DecodeString(imgData); err != nil {
- memLogger.Error(err, "failed to decode base64 image data")
- }
- }
- }
-
- if err == nil {
- h.item.Response.Header[util.ContentLength] = fmt.Sprintf("%d", len(h.item.Response.BodyData))
- w.Header().Set(util.ContentLength, h.item.Response.Header[util.ContentLength])
- }
-
- writeResponse(w, h.item.Response.BodyData, err)
+ h.mu.Lock()
+ defer h.mu.Unlock()
+
+ h.metrics.RecordRequest(req.URL.Path)
+ memLogger.Info("receiving mock request", "name", h.item.Name, "method", req.Method, "path", req.URL.Path,
+ "encoder", h.item.Response.Encoder)
+
+ h.item.Param = make(map[string]interface{})
+ for k, v := range mux.Vars(req) {
+ h.item.Param[k] = v
+ }
+ payloadBuf := bytes.Buffer{}
+ if _, copyErr := io.Copy(&payloadBuf, req.Body); copyErr != nil {
+ memLogger.Error(copyErr, "failed to read request body")
+ } else {
+ h.item.Param["_payload"] = payloadBuf.String()
+ }
+
+ h.item.Param["Host"] = req.Host
+ if h.item.Response.Header == nil {
+ h.item.Response.Header = make(map[string]string)
+ }
+ h.item.Response.Header[headerMockServer] = fmt.Sprintf("api-testing: %s", version.GetVersion())
+ for k, v := range h.item.Response.Header {
+ hv, hErr := render.Render("mock-server-header", v, &h.item)
+ if hErr != nil {
+ hv = v
+ memLogger.Error(hErr, "failed render mock-server-header", "value", v)
+ }
+
+ w.Header().Set(k, hv)
+ }
+
+ if h.item.Response.BodyFromFile != "" {
+ // read from file
+ if data, readErr := os.ReadFile(h.item.Response.BodyFromFile); readErr != nil {
+ memLogger.Error(readErr, "failed to read file", "file", h.item.Response.BodyFromFile)
+ } else {
+ h.item.Response.Body = string(data)
+ }
+ }
+
+ var err error
+ if h.item.Response.Encoder == "base64" {
+ h.item.Response.BodyData, err = base64.StdEncoding.DecodeString(h.item.Response.Body)
+ } else if h.item.Response.Encoder == "url" {
+ var resp *http.Response
+ if resp, err = http.Get(h.item.Response.Body); err == nil {
+ h.item.Response.BodyData, err = io.ReadAll(resp.Body)
+ }
+ } else if h.item.Response.Encoder == "raw" {
+ h.item.Response.BodyData = []byte(h.item.Response.Body)
+ } else {
+ if h.item.Response.BodyData, err = render.RenderAsBytes("start-item", h.item.Response.Body, h.item); err != nil {
+ memLogger.Error(err, "failed to render body")
+ }
+ }
+
+ if strings.HasPrefix(h.item.Response.Header[util.ContentType], "image/") {
+ if strings.HasPrefix(string(h.item.Response.BodyData), util.ImageBase64Prefix) {
+ // decode base64 image data
+ imgData := strings.TrimPrefix(string(h.item.Response.BodyData), util.ImageBase64Prefix)
+ if h.item.Response.BodyData, err = base64.StdEncoding.DecodeString(imgData); err != nil {
+ memLogger.Error(err, "failed to decode base64 image data")
+ }
+ }
+ }
+
+ if err == nil {
+ h.item.Response.Header[util.ContentLength] = fmt.Sprintf("%d", len(h.item.Response.BodyData))
+ w.Header().Set(util.ContentLength, h.item.Response.Header[util.ContentLength])
+ }
+
+ writeResponse(w, h.item.Response.BodyData, err)
}
func writeResponse(w http.ResponseWriter, data []byte, err error) {
- if err == nil {
- w.Write(data)
- } else {
- w.WriteHeader(http.StatusBadRequest)
- w.Write([]byte(err.Error()))
- }
+ if err == nil {
+ w.Write(data)
+ } else {
+ w.WriteHeader(http.StatusBadRequest)
+ w.Write([]byte(err.Error()))
+ }
}
func (s *inMemoryServer) initObjectData(obj Object) {
- if obj.Sample == "" {
- return
- }
-
- defaultCount := 1
- if obj.InitCount == nil {
- obj.InitCount = &defaultCount
- }
-
- for i := 0; i < *obj.InitCount; i++ {
- objData, jsonErr := jsonStrToInterface(obj.Sample)
- if jsonErr == nil {
- s.data[obj.Name] = append(s.data[obj.Name], objData)
- } else {
- memLogger.Info(jsonErr.Error())
- }
- }
+ if obj.Sample == "" {
+ return
+ }
+
+ defaultCount := 1
+ if obj.InitCount == nil {
+ obj.InitCount = &defaultCount
+ }
+
+ for i := 0; i < *obj.InitCount; i++ {
+ objData, jsonErr := jsonStrToInterface(obj.Sample)
+ if jsonErr == nil {
+ s.data[obj.Name] = append(s.data[obj.Name], objData)
+ } else {
+ memLogger.Info(jsonErr.Error())
+ }
+ }
}
func (s *inMemoryServer) startWebhook(webhook *Webhook) (err error) {
- if webhook.Timer == "" || webhook.Name == "" {
- return
- }
-
- var duration time.Duration
- duration, err = time.ParseDuration(webhook.Timer)
- if err != nil {
- memLogger.Error(err, "Error parsing webhook timer")
- return
- }
-
- s.wg.Add(1)
- go func(wh *Webhook) {
- defer s.wg.Done()
-
- memLogger.Info("start webhook server", "name", wh.Name)
- timer := time.NewTimer(duration)
- for {
- timer.Reset(duration)
- select {
- case <-s.ctx.Done():
- memLogger.Info("stop webhook server", "name", wh.Name)
- return
- case <-timer.C:
- if err = runWebhook(s.ctx, s, wh); err != nil {
- memLogger.Error(err, "Error when run webhook")
- }
- }
- }
- }(webhook)
- return
+ if webhook.Timer == "" || webhook.Name == "" {
+ return
+ }
+
+ var duration time.Duration
+ duration, err = time.ParseDuration(webhook.Timer)
+ if err != nil {
+ memLogger.Error(err, "Error parsing webhook timer")
+ return
+ }
+
+ s.wg.Add(1)
+ go func(wh *Webhook) {
+ defer s.wg.Done()
+
+ memLogger.Info("start webhook server", "name", wh.Name)
+ timer := time.NewTimer(duration)
+ for {
+ timer.Reset(duration)
+ select {
+ case <-s.ctx.Done():
+ memLogger.Info("stop webhook server", "name", wh.Name)
+ return
+ case <-timer.C:
+ if err = runWebhook(s.ctx, s, wh); err != nil {
+ memLogger.Error(err, "Error when run webhook")
+ }
+ }
+ }
+ }(webhook)
+ return
}
func runWebhook(ctx context.Context, objCtx interface{}, wh *Webhook) (err error) {
- rawParams := make(map[string]string, len(wh.Param))
- paramKeys := make([]string, 0, len(wh.Param))
- for k, v := range wh.Param {
- paramKeys = append(paramKeys, k)
- rawParams[k] = v
- }
- sort.Strings(paramKeys)
-
- for _, k := range paramKeys {
- v, vErr := render.Render("mock webhook server param", wh.Param[k], wh)
- if vErr == nil {
- wh.Param[k] = v
- }
- }
-
- var payload io.Reader
- payload, err = render.RenderAsReader("mock webhook server payload", wh.Request.Body, wh)
- if err != nil {
- err = fmt.Errorf("error when render payload: %w", err)
- return
- }
- wh.Param = rawParams
-
- var api string
- api, err = render.Render("webhook request api", wh.Request.Path, objCtx)
- if err != nil {
- err = fmt.Errorf("error when render api: %w, template: %s", err, wh.Request.Path)
- return
- }
-
- switch wh.Request.Protocol {
- case "syslog":
- err = sendSyslogWebhookRequest(ctx, wh, api, payload)
- default:
- err = sendHTTPWebhookRequest(ctx, wh, api, payload)
- }
- return
+ rawParams := make(map[string]string, len(wh.Param))
+ paramKeys := make([]string, 0, len(wh.Param))
+ for k, v := range wh.Param {
+ paramKeys = append(paramKeys, k)
+ rawParams[k] = v
+ }
+ sort.Strings(paramKeys)
+
+ for _, k := range paramKeys {
+ v, vErr := render.Render("mock webhook server param", wh.Param[k], wh)
+ if vErr == nil {
+ wh.Param[k] = v
+ }
+ }
+
+ var payload io.Reader
+ payload, err = render.RenderAsReader("mock webhook server payload", wh.Request.Body, wh)
+ if err != nil {
+ err = fmt.Errorf("error when render payload: %w", err)
+ return
+ }
+ wh.Param = rawParams
+
+ var api string
+ api, err = render.Render("webhook request api", wh.Request.Path, objCtx)
+ if err != nil {
+ err = fmt.Errorf("error when render api: %w, template: %s", err, wh.Request.Path)
+ return
+ }
+
+ switch wh.Request.Protocol {
+ case "syslog":
+ err = sendSyslogWebhookRequest(ctx, wh, api, payload)
+ default:
+ err = sendHTTPWebhookRequest(ctx, wh, api, payload)
+ }
+ return
}
func sendSyslogWebhookRequest(ctx context.Context, wh *Webhook, api string, payload io.Reader) (err error) {
- var conn net.Conn
- if conn, err = net.Dial("udp", api); err == nil {
- _, err = io.Copy(conn, payload)
- }
- return
+ var conn net.Conn
+ if conn, err = net.Dial("udp", api); err == nil {
+ _, err = io.Copy(conn, payload)
+ }
+ return
}
func sendHTTPWebhookRequest(ctx context.Context, wh *Webhook, api string, payload io.Reader) (err error) {
- method := util.EmptyThenDefault(wh.Request.Method, http.MethodPost)
- client := http.DefaultClient
-
- var bearerToken string
- bearerToken, err = getBearerToken(ctx, wh.Request)
- if err != nil {
- memLogger.Error(err, "Error when render bearer token")
- return
- }
-
- var req *http.Request
- req, err = http.NewRequestWithContext(ctx, method, api, payload)
- if err != nil {
- memLogger.Error(err, "Error when create request")
- return
- }
-
- if bearerToken != "" {
- memLogger.V(7).Info("set bearer token", "token", bearerToken)
- req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", bearerToken))
- }
-
- for k, v := range wh.Request.Header {
- req.Header.Set(k, v)
- }
-
- memLogger.Info("send webhook request", "api", api)
- resp, err := client.Do(req)
- if err != nil {
- err = fmt.Errorf("error when sending webhook: %v", err)
- } else {
- if resp.StatusCode != http.StatusOK {
- memLogger.Info("unexpected status", "code", resp.StatusCode)
- }
-
- data, _ := io.ReadAll(resp.Body)
- memLogger.V(7).Info("received from webhook", "code", resp.StatusCode, "response", string(data))
- }
- return
+ method := util.EmptyThenDefault(wh.Request.Method, http.MethodPost)
+ client := http.DefaultClient
+
+ var bearerToken string
+ bearerToken, err = getBearerToken(ctx, wh.Request)
+ if err != nil {
+ memLogger.Error(err, "Error when render bearer token")
+ return
+ }
+
+ var req *http.Request
+ req, err = http.NewRequestWithContext(ctx, method, api, payload)
+ if err != nil {
+ memLogger.Error(err, "Error when create request")
+ return
+ }
+
+ if bearerToken != "" {
+ memLogger.V(7).Info("set bearer token", "token", bearerToken)
+ req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", bearerToken))
+ }
+
+ for k, v := range wh.Request.Header {
+ req.Header.Set(k, v)
+ }
+
+ memLogger.Info("send webhook request", "api", api)
+ resp, err := client.Do(req)
+ if err != nil {
+ err = fmt.Errorf("error when sending webhook: %v", err)
+ } else {
+ if resp.StatusCode != http.StatusOK {
+ memLogger.Info("unexpected status", "code", resp.StatusCode)
+ }
+
+ data, _ := io.ReadAll(resp.Body)
+ memLogger.V(7).Info("received from webhook", "code", resp.StatusCode, "response", string(data))
+ }
+ return
}
type bearerToken struct {
- Token string `json:"token"`
+ Token string `json:"token"`
}
func getBearerToken(ctx context.Context, request RequestWithAuth) (token string, err error) {
- if request.BearerAPI == "" {
- return
- }
-
- if request.BearerAPI, err = render.Render("bearer token request", request.BearerAPI, &request); err != nil {
- return
- }
-
- var data []byte
- if data, err = json.Marshal(&request); err == nil {
- client := http.DefaultClient
- var req *http.Request
- if req, err = http.NewRequestWithContext(ctx, http.MethodPost, request.BearerAPI, bytes.NewBuffer(data)); err == nil {
- req.Header.Set(util.ContentType, util.JSON)
-
- var resp *http.Response
- if resp, err = client.Do(req); err == nil && resp.StatusCode == http.StatusOK {
- if data, err = io.ReadAll(resp.Body); err == nil {
- var tokenObj bearerToken
- if err = json.Unmarshal(data, &tokenObj); err == nil {
- token = tokenObj.Token
- }
- }
- }
- }
- }
-
- return
+ if request.BearerAPI == "" {
+ return
+ }
+
+ if request.BearerAPI, err = render.Render("bearer token request", request.BearerAPI, &request); err != nil {
+ return
+ }
+
+ var data []byte
+ if data, err = json.Marshal(&request); err == nil {
+ client := http.DefaultClient
+ var req *http.Request
+ if req, err = http.NewRequestWithContext(ctx, http.MethodPost, request.BearerAPI, bytes.NewBuffer(data)); err == nil {
+ req.Header.Set(util.ContentType, util.JSON)
+
+ var resp *http.Response
+ if resp, err = client.Do(req); err == nil && resp.StatusCode == http.StatusOK {
+ if data, err = io.ReadAll(resp.Body); err == nil {
+ var tokenObj bearerToken
+ if err = json.Unmarshal(data, &tokenObj); err == nil {
+ token = tokenObj.Token
+ }
+ }
+ }
+ }
+ }
+
+ return
}
func (s *inMemoryServer) handleOpenAPI() {
- s.mux.HandleFunc("/api.json", func(w http.ResponseWriter, req *http.Request) {
- // Setup OpenAPI schema
- reflector := openapi3.NewReflector()
- reflector.SpecSchema().SetTitle("Mock Server API")
- reflector.SpecSchema().SetVersion(version.GetVersion())
- reflector.SpecSchema().SetDescription("Powered by https://github.com/linuxsuren/api-testing")
-
- // Walk the router with OpenAPI collector
- c := gorillamux.NewOpenAPICollector(reflector)
-
- _ = s.mux.Walk(c.Walker)
-
- // Get the resulting schema
- if jsonData, err := reflector.Spec.MarshalJSON(); err == nil {
- w.Header().Set(util.ContentType, util.JSON)
- _, _ = w.Write(jsonData)
- } else {
- w.WriteHeader(http.StatusInternalServerError)
- _, _ = w.Write([]byte(err.Error()))
- }
- })
+ s.mux.HandleFunc("/api.json", func(w http.ResponseWriter, req *http.Request) {
+ // Setup OpenAPI schema
+ reflector := openapi3.NewReflector()
+ reflector.SpecSchema().SetTitle("Mock Server API")
+ reflector.SpecSchema().SetVersion(version.GetVersion())
+ reflector.SpecSchema().SetDescription("Powered by https://github.com/linuxsuren/api-testing")
+
+ // Walk the router with OpenAPI collector
+ c := gorillamux.NewOpenAPICollector(reflector)
+
+ _ = s.mux.Walk(c.Walker)
+
+ // Get the resulting schema
+ if jsonData, err := reflector.Spec.MarshalJSON(); err == nil {
+ w.Header().Set(util.ContentType, util.JSON)
+ _, _ = w.Write(jsonData)
+ } else {
+ w.WriteHeader(http.StatusInternalServerError)
+ _, _ = w.Write([]byte(err.Error()))
+ }
+ })
}
func jsonStrToInterface(jsonStr string) (objData map[string]interface{}, err error) {
- if jsonStr, err = render.Render("init object", jsonStr, nil); err == nil {
- objData = map[string]interface{}{}
- err = json.Unmarshal([]byte(jsonStr), &objData)
- }
- return
+ if jsonStr, err = render.Render("init object", jsonStr, nil); err == nil {
+ objData = map[string]interface{}{}
+ err = json.Unmarshal([]byte(jsonStr), &objData)
+ }
+ return
}
func (s *inMemoryServer) GetPort() string {
- return util.GetPort(s.listener)
+ return util.GetPort(s.listener)
}
func (s *inMemoryServer) Stop() (err error) {
- if s.listener != nil {
- if err = s.listener.Close(); err != nil {
- memLogger.Error(err, "failed to close listener")
- }
- } else {
- memLogger.Info("listener is nil")
- }
- if s.cancelFunc != nil {
- s.cancelFunc()
- }
- s.wg.Wait()
- return
+ if s.listener != nil {
+ if err = s.listener.Close(); err != nil {
+ memLogger.Error(err, "failed to close listener")
+ }
+ } else {
+ memLogger.Info("listener is nil")
+ }
+ if s.cancelFunc != nil {
+ s.cancelFunc()
+ }
+ s.wg.Wait()
+ return
}
diff --git a/pkg/mock/in_memory_test.go b/pkg/mock/in_memory_test.go
index ef1933e3..bb598932 100644
--- a/pkg/mock/in_memory_test.go
+++ b/pkg/mock/in_memory_test.go
@@ -16,269 +16,282 @@ limitations under the License.
package mock
import (
- "bytes"
- "context"
- "fmt"
- "io"
- "net/http"
- "strings"
- "testing"
-
- _ "embed"
- "github.com/linuxsuren/api-testing/pkg/util"
- "github.com/stretchr/testify/assert"
+ "bytes"
+ "context"
+ "fmt"
+ "io"
+ "net/http"
+ "strings"
+ "testing"
+
+ _ "embed"
+
+ "github.com/linuxsuren/api-testing/pkg/util"
+ "github.com/stretchr/testify/assert"
)
//go:embed testdata/api.yaml
var mockFile []byte
func TestInMemoryServer(t *testing.T) {
- server := NewInMemoryServer(context.Background(), 0)
- server.EnableMetrics()
+ server := NewInMemoryServer(context.Background(), 0)
+ server.EnableMetrics()
- err := server.Start(NewLocalFileReader("testdata/api.yaml"), "/mock")
- assert.NoError(t, err)
- defer func() {
- server.Stop()
- }()
+ reader := NewLocalFileReader("testdata/api.yaml")
+ assert.Nil(t, reader.GetData())
+ s, err := reader.Parse()
+ assert.NoError(t, err)
+ assert.NotNil(t, s)
+ assert.NotNil(t, reader.GetData())
- api := "http://localhost:" + server.GetPort() + "/mock"
+ err = server.Start(reader, "/mock")
+ assert.NoError(t, err)
+ defer func() {
+ server.Stop()
+ }()
- _, err = http.Post(api+"/team", "", bytes.NewBufferString(`{
+ api := "http://localhost:" + server.GetPort() + "/mock"
+
+ _, err = http.Post(api+"/team", "", bytes.NewBufferString(`{
"name": "test",
"members": []
}`))
- assert.NoError(t, err)
-
- var resp *http.Response
- resp, err = http.Get(api + "/team")
- if assert.NoError(t, err) {
- data, err := io.ReadAll(resp.Body)
- assert.NoError(t, err)
- assert.Equal(t, `[{"name":"someone"},{"members":[],"name":"test"}]`, string(data))
- }
-
- t.Run("check the /api.json", func(t *testing.T) {
- var resp *http.Response
- resp, err = http.Get(api + "/api.json")
- if assert.NoError(t, err) {
- data, err := io.ReadAll(resp.Body)
- assert.NoError(t, err)
- assert.NotEmpty(t, string(data))
- }
- })
-
- t.Run("list with filter", func(t *testing.T) {
- var resp *http.Response
- resp, err = http.Get(api + "/team?name=someone")
- if assert.NoError(t, err) {
- data, err := io.ReadAll(resp.Body)
- assert.NoError(t, err)
- assert.Equal(t, `[{"name":"someone"}]`, string(data))
- }
- })
-
- t.Run("update object", func(t *testing.T) {
- updateReq, err := http.NewRequest(http.MethodPut, api+"/team/test", bytes.NewBufferString(`{
+ assert.NoError(t, err)
+
+ var resp *http.Response
+ resp, err = http.Get(api + "/team")
+ if assert.NoError(t, err) {
+ data, err := io.ReadAll(resp.Body)
+ assert.NoError(t, err)
+ assert.Equal(t, `[{"name":"someone"},{"members":[],"name":"test"}]`, string(data))
+ }
+
+ t.Run("check the /api.json", func(t *testing.T) {
+ var resp *http.Response
+ resp, err = http.Get(api + "/api.json")
+ if assert.NoError(t, err) {
+ data, err := io.ReadAll(resp.Body)
+ assert.NoError(t, err)
+ assert.NotEmpty(t, string(data))
+ }
+ })
+
+ t.Run("list with filter", func(t *testing.T) {
+ var resp *http.Response
+ resp, err = http.Get(api + "/team?name=someone")
+ if assert.NoError(t, err) {
+ data, err := io.ReadAll(resp.Body)
+ assert.NoError(t, err)
+ assert.Equal(t, `[{"name":"someone"}]`, string(data))
+ }
+ })
+
+ t.Run("update object", func(t *testing.T) {
+ updateReq, err := http.NewRequest(http.MethodPut, api+"/team/test", bytes.NewBufferString(`{
"name": "test",
"members": [{
"name": "rick"
}]
}`))
- assert.NoError(t, err)
- resp, err = http.DefaultClient.Do(updateReq)
- assert.NoError(t, err)
- })
-
- t.Run("get a single object", func(t *testing.T) {
- resp, err = http.Get(api + "/team/test")
- assert.NoError(t, err)
-
- var data []byte
- data, err = io.ReadAll(resp.Body)
- assert.NoError(t, err)
-
- assert.Equal(t, `{"members":[{"name":"rick"}],"name":"test"}`, string(data))
- })
-
- // delete object
- delReq, err := http.NewRequest(http.MethodDelete, api+"/team/test", nil)
- assert.NoError(t, err)
- resp, err = http.DefaultClient.Do(delReq)
- assert.NoError(t, err)
-
- t.Run("check if deleted", func(t *testing.T) {
- var resp *http.Response
- resp, err = http.Get(api + "/team")
- if assert.NoError(t, err) {
- data, err := io.ReadAll(resp.Body)
- assert.NoError(t, err)
- assert.Equal(t, `[{"name":"someone"}]`, string(data))
- }
-
- resp, err = http.Get(api + "/team/test")
- if assert.NoError(t, err) {
- assert.Equal(t, http.StatusNotFound, resp.StatusCode)
- }
- })
-
- t.Run("invalid request method", func(t *testing.T) {
- delReq, err := http.NewRequest("fake", api+"/team", nil)
- assert.NoError(t, err)
- resp, err = http.DefaultClient.Do(delReq)
- assert.NoError(t, err)
- assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode)
- })
-
- t.Run("only accept GET method in getting a single object", func(t *testing.T) {
- wrongMethodReq, err := http.NewRequest(http.MethodPut, api+"/team", nil)
- assert.NoError(t, err)
- resp, err = http.DefaultClient.Do(wrongMethodReq)
- assert.NoError(t, err)
- assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode)
- })
-
- t.Run("mock item", func(t *testing.T) {
- req, err := http.NewRequest(http.MethodGet, api+"/v1/repos/test/prs", nil)
- assert.NoError(t, err)
- req.Header.Set("name", "rick")
-
- resp, err = http.DefaultClient.Do(req)
- assert.NoError(t, err)
-
- assert.Equal(t, http.StatusOK, resp.StatusCode)
- assert.Equal(t, "194", resp.Header.Get(util.ContentLength))
- assert.Equal(t, "mock", resp.Header.Get("Server"))
- assert.NotEmpty(t, resp.Header.Get(headerMockServer))
-
- data, _ := io.ReadAll(resp.Body)
- assert.True(t, strings.Contains(string(data), `"message": "mock"`), string(data))
- })
-
- t.Run("miss match header", func(t *testing.T) {
- req, err := http.NewRequest(http.MethodGet, api+"/v1/repos/test/prs", nil)
- assert.NoError(t, err)
-
- resp, err = http.DefaultClient.Do(req)
- assert.NoError(t, err)
- assert.Equal(t, http.StatusNotFound, resp.StatusCode)
- })
-
- t.Run("base64 encoder", func(t *testing.T) {
- resp, err = http.Get(api + "/v1/base64")
- assert.NoError(t, err)
- data, _ := io.ReadAll(resp.Body)
- assert.Equal(t, "hello", string(data))
- })
-
- t.Run("read response from file", func(t *testing.T) {
- resp, err = http.Get(api + "/v1/readResponseFromFile")
- assert.NoError(t, err)
- data, _ := io.ReadAll(resp.Body)
- assert.Equal(t, mockFile, data)
- })
-
- t.Run("not found config file", func(t *testing.T) {
- server := NewInMemoryServer(context.Background(), 0)
- err := server.Start(NewLocalFileReader("fake"), "/")
- assert.Error(t, err)
- })
-
- t.Run("invalid webhook", func(t *testing.T) {
- server := NewInMemoryServer(context.Background(), 0)
- err := server.Start(NewInMemoryReader(`webhooks:
+ assert.NoError(t, err)
+ resp, err = http.DefaultClient.Do(updateReq)
+ assert.NoError(t, err)
+ })
+
+ t.Run("get a single object", func(t *testing.T) {
+ resp, err = http.Get(api + "/team/test")
+ assert.NoError(t, err)
+
+ var data []byte
+ data, err = io.ReadAll(resp.Body)
+ assert.NoError(t, err)
+
+ assert.Equal(t, `{"members":[{"name":"rick"}],"name":"test"}`, string(data))
+ })
+
+ // delete object
+ delReq, err := http.NewRequest(http.MethodDelete, api+"/team/test", nil)
+ assert.NoError(t, err)
+ resp, err = http.DefaultClient.Do(delReq)
+ assert.NoError(t, err)
+
+ t.Run("check if deleted", func(t *testing.T) {
+ var resp *http.Response
+ resp, err = http.Get(api + "/team")
+ if assert.NoError(t, err) {
+ data, err := io.ReadAll(resp.Body)
+ assert.NoError(t, err)
+ assert.Equal(t, `[{"name":"someone"}]`, string(data))
+ }
+
+ resp, err = http.Get(api + "/team/test")
+ if assert.NoError(t, err) {
+ assert.Equal(t, http.StatusNotFound, resp.StatusCode)
+ }
+ })
+
+ t.Run("invalid request method", func(t *testing.T) {
+ delReq, err := http.NewRequest("fake", api+"/team", nil)
+ assert.NoError(t, err)
+ resp, err = http.DefaultClient.Do(delReq)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode)
+ })
+
+ t.Run("only accept GET method in getting a single object", func(t *testing.T) {
+ wrongMethodReq, err := http.NewRequest(http.MethodPut, api+"/team", nil)
+ assert.NoError(t, err)
+ resp, err = http.DefaultClient.Do(wrongMethodReq)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode)
+ })
+
+ t.Run("mock item", func(t *testing.T) {
+ req, err := http.NewRequest(http.MethodGet, api+"/v1/repos/test/prs", nil)
+ assert.NoError(t, err)
+ req.Header.Set("name", "rick")
+
+ resp, err = http.DefaultClient.Do(req)
+ assert.NoError(t, err)
+
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ assert.Equal(t, "194", resp.Header.Get(util.ContentLength))
+ assert.Equal(t, "mock", resp.Header.Get("Server"))
+ assert.NotEmpty(t, resp.Header.Get(headerMockServer))
+
+ data, _ := io.ReadAll(resp.Body)
+ assert.True(t, strings.Contains(string(data), `"message": "mock"`), string(data))
+ })
+
+ t.Run("miss match header", func(t *testing.T) {
+ req, err := http.NewRequest(http.MethodGet, api+"/v1/repos/test/prs", nil)
+ assert.NoError(t, err)
+
+ resp, err = http.DefaultClient.Do(req)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusNotFound, resp.StatusCode)
+ })
+
+ t.Run("base64 encoder", func(t *testing.T) {
+ resp, err = http.Get(api + "/v1/base64")
+ assert.NoError(t, err)
+ data, _ := io.ReadAll(resp.Body)
+ assert.Equal(t, "hello", string(data))
+ })
+
+ t.Run("read response from file", func(t *testing.T) {
+ resp, err = http.Get(api + "/v1/readResponseFromFile")
+ assert.NoError(t, err)
+ data, _ := io.ReadAll(resp.Body)
+ assert.Equal(t, mockFile, data)
+ })
+
+ t.Run("not found config file", func(t *testing.T) {
+ server := NewInMemoryServer(context.Background(), 0)
+ err := server.Start(NewLocalFileReader("fake"), "/")
+ assert.Error(t, err)
+ })
+
+ t.Run("invalid webhook", func(t *testing.T) {
+ server := NewInMemoryServer(context.Background(), 0)
+ reader := NewInMemoryReader(`webhooks:
- timer: aa
- name: fake`), "/")
- assert.Error(t, err)
- })
-
- t.Run("missing name or timer in webhook", func(t *testing.T) {
- server := NewInMemoryServer(context.Background(), 0)
- err := server.Start(NewInMemoryReader(`webhooks:
+ name: fake`)
+ assert.NotNil(t, reader.GetData())
+ err := server.Start(reader, "/")
+ assert.Error(t, err)
+ assert.Error(t, server.Load())
+
+ reader.Write([]byte(""))
+ })
+
+ t.Run("missing name or timer in webhook", func(t *testing.T) {
+ server := NewInMemoryServer(context.Background(), 0)
+ err := server.Start(NewInMemoryReader(`webhooks:
- timer: 1s`), "/")
- assert.Error(t, err)
- })
+ assert.Error(t, err)
+ })
- t.Run("invalid webhook payload", func(t *testing.T) {
- server := NewInMemoryServer(context.Background(), 0)
- err := server.Start(NewInMemoryReader(`webhooks:
+ t.Run("invalid webhook payload", func(t *testing.T) {
+ server := NewInMemoryServer(context.Background(), 0)
+ err := server.Start(NewInMemoryReader(`webhooks:
- name: invalid
timer: 1ms
request:
body: "{{.fake"`), "/")
- assert.Error(t, err)
- })
+ assert.Error(t, err)
+ })
- t.Run("invalid webhook api template", func(t *testing.T) {
- server := NewInMemoryServer(context.Background(), 0)
- err := server.Start(NewInMemoryReader(`webhooks:
+ t.Run("invalid webhook api template", func(t *testing.T) {
+ server := NewInMemoryServer(context.Background(), 0)
+ err := server.Start(NewInMemoryReader(`webhooks:
- name: invalid
timer: 1ms
request:
body: "{}"
path: "{{.fake"`), "/")
- assert.NoError(t, err)
- })
-
- t.Run("proxy", func(t *testing.T) {
- resp, err = http.Get(api + "/v1/myProjects")
- assert.NoError(t, err)
- assert.Equal(t, http.StatusOK, resp.StatusCode)
-
- resp, err = http.Get(api + "/v1/invalid-template")
- assert.NoError(t, err)
- assert.Equal(t, http.StatusInternalServerError, resp.StatusCode)
- })
-
- t.Run("metrics", func(t *testing.T) {
- resp, err = http.Get(api + "/metrics")
- assert.NoError(t, err)
- assert.Equal(t, http.StatusOK, resp.StatusCode)
- })
-
- t.Run("go template support in response body", func(t *testing.T) {
- repoName := "myRepo"
- req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/v1/repos/%s/prs", api, repoName), nil)
- assert.NoError(t, err)
-
- var resp *http.Response
- req.Header.Set("name", "rick")
- resp, err = http.DefaultClient.Do(req)
- assert.NoError(t, err)
- assert.Equal(t, http.StatusOK, resp.StatusCode)
-
- data, _ := io.ReadAll(resp.Body)
- assert.Contains(t, string(data), repoName)
- })
-
- t.Run("conditional response body", func(t *testing.T) {
- for _, tt := range []struct {
- name string
- param string
- }{
- {
- name: "big",
- },
- {
- name: "small",
- },
- {
- name: "unknown",
- },
- } {
- t.Run(tt.name, func(t *testing.T) {
- payload := bytes.NewBufferString(fmt.Sprintf(`{"size": "%s"}`, tt.name))
- req, err := http.NewRequest(http.MethodPost, fmt.Sprintf("%s/v1/books", api), payload)
- assert.NoError(t, err)
-
- var resp *http.Response
- resp, err = http.DefaultClient.Do(req)
- assert.NoError(t, err)
- assert.Equal(t, http.StatusOK, resp.StatusCode)
-
- data, _ := io.ReadAll(resp.Body)
- assert.Equal(t, fmt.Sprintf("{\n \"name\": \"%s book\"\n}", tt.name), strings.TrimSpace(string(data)))
- })
- }
- })
+ assert.NoError(t, err)
+ })
+
+ t.Run("proxy", func(t *testing.T) {
+ resp, err = http.Get(api + "/v1/myProjects")
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+
+ resp, err = http.Get(api + "/v1/invalid-template")
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusInternalServerError, resp.StatusCode)
+ })
+
+ t.Run("metrics", func(t *testing.T) {
+ resp, err = http.Get(api + "/metrics")
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ })
+
+ t.Run("go template support in response body", func(t *testing.T) {
+ repoName := "myRepo"
+ req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/v1/repos/%s/prs", api, repoName), nil)
+ assert.NoError(t, err)
+
+ var resp *http.Response
+ req.Header.Set("name", "rick")
+ resp, err = http.DefaultClient.Do(req)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+
+ data, _ := io.ReadAll(resp.Body)
+ assert.Contains(t, string(data), repoName)
+ })
+
+ t.Run("conditional response body", func(t *testing.T) {
+ for _, tt := range []struct {
+ name string
+ param string
+ }{
+ {
+ name: "big",
+ },
+ {
+ name: "small",
+ },
+ {
+ name: "unknown",
+ },
+ } {
+ t.Run(tt.name, func(t *testing.T) {
+ payload := bytes.NewBufferString(fmt.Sprintf(`{"size": "%s"}`, tt.name))
+ req, err := http.NewRequest(http.MethodPost, fmt.Sprintf("%s/v1/books", api), payload)
+ assert.NoError(t, err)
+
+ var resp *http.Response
+ resp, err = http.DefaultClient.Do(req)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+
+ data, _ := io.ReadAll(resp.Body)
+ assert.Equal(t, fmt.Sprintf("{\n \"name\": \"%s book\"\n}", tt.name), strings.TrimSpace(string(data)))
+ })
+ }
+ })
}
diff --git a/pkg/server/remote_server.go b/pkg/server/remote_server.go
index 8f6d55e6..4bb4f04c 100644
--- a/pkg/server/remote_server.go
+++ b/pkg/server/remote_server.go
@@ -69,6 +69,7 @@ type server struct {
UnimplementedRunnerServer
UnimplementedDataServerServer
UnimplementedThemeExtensionServer
+ UnimplementedUIExtensionServer
loader testing.Writer
storeWriterFactory testing.StoreWriterFactory
@@ -191,6 +192,20 @@ func resetEnv(oldEnv map[string]string) {
}
}
+func (s *server) getLoaders(ctx context.Context) (loader []testing.Writer, err error) {
+ var stores []testing.Store
+ if stores, err = testing.NewStoreFactory(s.configDir).GetStores(); err != nil {
+ return
+ }
+ loader = make([]testing.Writer, len(stores))
+ for i, store := range stores {
+ if loader[i], err = s.storeWriterFactory.NewInstance(store); err != nil {
+ return
+ }
+ }
+ return
+}
+
func (s *server) getLoader(ctx context.Context) (loader testing.Writer) {
var ok bool
loader = s.loader
@@ -204,6 +219,7 @@ func (s *server) getLoader(ctx context.Context) (loader testing.Writer) {
return
}
+ remoteServerLogger.Info("try to get loader", "name", storeName)
var err error
if loader, err = s.getLoaderByStoreName(storeName); err != nil {
remoteServerLogger.Info("failed to get loader", "name", storeName, "error", err)
@@ -1369,11 +1385,74 @@ func (s *server) GetBinding(ctx context.Context, in *SimpleName) (result *Common
return
}
+func (s *server) GetMenus(ctx context.Context, _ *Empty) (result *MenuList, err error) {
+ loader := s.getLoader(ctx)
+ defer loader.Close()
+
+ result = &MenuList{}
+ var loaders []testing.Writer
+ if loaders, err = s.getLoaders(ctx); err != nil {
+ return
+ }
+
+ for _, loader := range loaders {
+ if menus, mErr := loader.GetMenus(); mErr == nil {
+ for _, menu := range menus {
+ if isSystemMenu(menu.Index) {
+ serverLogger.Info("skip due to conflict with system name", "menu", menu)
+ continue
+ }
+ result.Data = append(result.Data, &Menu{
+ Name: menu.Name,
+ Icon: menu.Icon,
+ Index: menu.Index,
+ })
+ }
+ }
+ }
+ return
+}
+
+func isSystemMenu(index string) bool {
+ switch index {
+ case "testing", "history", "data", "mock", "store", "welcome", "":
+ return true
+ }
+ return false
+}
+
+func (s *server) GetPageOfJS(ctx context.Context, in *SimpleName) (result *CommonResult, err error) {
+ loader := s.getLoader(ctx)
+ defer loader.Close()
+
+ result = &CommonResult{
+ Success: true,
+ }
+ if js, err := loader.GetPageOfJS(in.Name); err == nil {
+ result.Message = js
+ }
+ return
+}
+
+func (s *server) GetPageOfCSS(ctx context.Context, in *SimpleName) (result *CommonResult, err error) {
+ loader := s.getLoader(ctx)
+ defer loader.Close()
+
+ result = &CommonResult{
+ Success: true,
+ }
+ if css, err := loader.GetPageOfCSS(in.Name); err == nil {
+ result.Message = css
+ }
+ return
+}
+
// implement the mock server
// Start starts the mock server
type mockServerController struct {
UnimplementedMockServer
+ config *MockConfig
mockWriter mock.ReaderAndWriter
loader mock.Loadable
reader mock.Reader
@@ -1384,6 +1463,7 @@ type mockServerController struct {
func NewMockServerController(mockWriter mock.ReaderAndWriter, loader mock.Loadable, combinePort int) MockServer {
return &mockServerController{
+ config: &MockConfig{},
mockWriter: mockWriter,
loader: loader,
prefix: "/mock/server",
@@ -1393,7 +1473,17 @@ func NewMockServerController(mockWriter mock.ReaderAndWriter, loader mock.Loadab
}
func (s *mockServerController) Reload(ctx context.Context, in *MockConfig) (reply *Empty, err error) {
- s.mockWriter.Write([]byte(in.Config))
+ switch in.StoreKind {
+ case "memory":
+ s.mockWriter = mock.NewInMemoryReader(in.Config)
+ case "localFile":
+ s.mockWriter = mock.NewLocalFileReader(in.StoreLocalFile)
+ case "remote":
+ case "url":
+ }
+ s.config = in
+
+ // s.mockWriter.Write([]byte(in.Config))
s.prefix = in.Prefix
if dServer, ok := s.loader.(mock.DynamicServer); ok && dServer.GetPort() != strconv.Itoa(int(in.GetPort())) {
if strconv.Itoa(s.combinePort) != dServer.GetPort() {
@@ -1410,14 +1500,20 @@ func (s *mockServerController) Reload(ctx context.Context, in *MockConfig) (repl
}
server.WithLogWriter(s)
s.loader = server
+ } else {
+ s.mockWriter.Parse()
}
err = s.loader.Load()
return
}
func (s *mockServerController) GetConfig(ctx context.Context, in *Empty) (reply *MockConfig, err error) {
reply = &MockConfig{
- Prefix: s.prefix,
- Config: string(s.mockWriter.GetData()),
+ Prefix: s.prefix,
+ Config: string(s.mockWriter.GetData()),
+ StoreKind: s.config.StoreKind,
+ StoreLocalFile: s.config.StoreLocalFile,
+ StoreURL: s.config.StoreURL,
+ StoreRemote: s.config.StoreRemote,
}
if dServer, ok := s.loader.(mock.DynamicServer); ok {
if port, pErr := strconv.ParseInt(dServer.GetPort(), 10, 32); pErr == nil {
diff --git a/pkg/server/server.pb.go b/pkg/server/server.pb.go
index e19f1266..6c2f2d04 100644
--- a/pkg/server/server.pb.go
+++ b/pkg/server/server.pb.go
@@ -22,6 +22,116 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
+type Menu struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Index string `protobuf:"bytes,2,opt,name=index,proto3" json:"index,omitempty"`
+ Icon string `protobuf:"bytes,3,opt,name=icon,proto3" json:"icon,omitempty"`
+}
+
+func (x *Menu) Reset() {
+ *x = Menu{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_pkg_server_server_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Menu) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Menu) ProtoMessage() {}
+
+func (x *Menu) ProtoReflect() protoreflect.Message {
+ mi := &file_pkg_server_server_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Menu.ProtoReflect.Descriptor instead.
+func (*Menu) Descriptor() ([]byte, []int) {
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Menu) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Menu) GetIndex() string {
+ if x != nil {
+ return x.Index
+ }
+ return ""
+}
+
+func (x *Menu) GetIcon() string {
+ if x != nil {
+ return x.Icon
+ }
+ return ""
+}
+
+type MenuList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Data []*Menu `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
+}
+
+func (x *MenuList) Reset() {
+ *x = MenuList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_pkg_server_server_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MenuList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MenuList) ProtoMessage() {}
+
+func (x *MenuList) ProtoReflect() protoreflect.Message {
+ mi := &file_pkg_server_server_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MenuList.ProtoReflect.Descriptor instead.
+func (*MenuList) Descriptor() ([]byte, []int) {
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *MenuList) GetData() []*Menu {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
type Suites struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -33,7 +143,7 @@ type Suites struct {
func (x *Suites) Reset() {
*x = Suites{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[0]
+ mi := &file_pkg_server_server_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -46,7 +156,7 @@ func (x *Suites) String() string {
func (*Suites) ProtoMessage() {}
func (x *Suites) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[0]
+ mi := &file_pkg_server_server_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -59,7 +169,7 @@ func (x *Suites) ProtoReflect() protoreflect.Message {
// Deprecated: Use Suites.ProtoReflect.Descriptor instead.
func (*Suites) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{0}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{2}
}
func (x *Suites) GetData() map[string]*Items {
@@ -81,7 +191,7 @@ type Items struct {
func (x *Items) Reset() {
*x = Items{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[1]
+ mi := &file_pkg_server_server_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -94,7 +204,7 @@ func (x *Items) String() string {
func (*Items) ProtoMessage() {}
func (x *Items) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[1]
+ mi := &file_pkg_server_server_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -107,7 +217,7 @@ func (x *Items) ProtoReflect() protoreflect.Message {
// Deprecated: Use Items.ProtoReflect.Descriptor instead.
func (*Items) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{1}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{3}
}
func (x *Items) GetData() []string {
@@ -135,7 +245,7 @@ type HistorySuites struct {
func (x *HistorySuites) Reset() {
*x = HistorySuites{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[2]
+ mi := &file_pkg_server_server_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -148,7 +258,7 @@ func (x *HistorySuites) String() string {
func (*HistorySuites) ProtoMessage() {}
func (x *HistorySuites) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[2]
+ mi := &file_pkg_server_server_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -161,7 +271,7 @@ func (x *HistorySuites) ProtoReflect() protoreflect.Message {
// Deprecated: Use HistorySuites.ProtoReflect.Descriptor instead.
func (*HistorySuites) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{2}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{4}
}
func (x *HistorySuites) GetData() map[string]*HistoryItems {
@@ -182,7 +292,7 @@ type HistoryItems struct {
func (x *HistoryItems) Reset() {
*x = HistoryItems{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[3]
+ mi := &file_pkg_server_server_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -195,7 +305,7 @@ func (x *HistoryItems) String() string {
func (*HistoryItems) ProtoMessage() {}
func (x *HistoryItems) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[3]
+ mi := &file_pkg_server_server_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -208,7 +318,7 @@ func (x *HistoryItems) ProtoReflect() protoreflect.Message {
// Deprecated: Use HistoryItems.ProtoReflect.Descriptor instead.
func (*HistoryItems) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{3}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{5}
}
func (x *HistoryItems) GetData() []*HistoryCaseIdentity {
@@ -233,7 +343,7 @@ type HistoryCaseIdentity struct {
func (x *HistoryCaseIdentity) Reset() {
*x = HistoryCaseIdentity{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[4]
+ mi := &file_pkg_server_server_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -246,7 +356,7 @@ func (x *HistoryCaseIdentity) String() string {
func (*HistoryCaseIdentity) ProtoMessage() {}
func (x *HistoryCaseIdentity) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[4]
+ mi := &file_pkg_server_server_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -259,7 +369,7 @@ func (x *HistoryCaseIdentity) ProtoReflect() protoreflect.Message {
// Deprecated: Use HistoryCaseIdentity.ProtoReflect.Descriptor instead.
func (*HistoryCaseIdentity) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{4}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{6}
}
func (x *HistoryCaseIdentity) GetSuite() string {
@@ -310,7 +420,7 @@ type TestCaseIdentity struct {
func (x *TestCaseIdentity) Reset() {
*x = TestCaseIdentity{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[5]
+ mi := &file_pkg_server_server_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -323,7 +433,7 @@ func (x *TestCaseIdentity) String() string {
func (*TestCaseIdentity) ProtoMessage() {}
func (x *TestCaseIdentity) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[5]
+ mi := &file_pkg_server_server_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -336,7 +446,7 @@ func (x *TestCaseIdentity) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestCaseIdentity.ProtoReflect.Descriptor instead.
func (*TestCaseIdentity) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{5}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{7}
}
func (x *TestCaseIdentity) GetSuite() string {
@@ -373,7 +483,7 @@ type TestSuiteSource struct {
func (x *TestSuiteSource) Reset() {
*x = TestSuiteSource{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[6]
+ mi := &file_pkg_server_server_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -386,7 +496,7 @@ func (x *TestSuiteSource) String() string {
func (*TestSuiteSource) ProtoMessage() {}
func (x *TestSuiteSource) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[6]
+ mi := &file_pkg_server_server_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -399,7 +509,7 @@ func (x *TestSuiteSource) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestSuiteSource.ProtoReflect.Descriptor instead.
func (*TestSuiteSource) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{6}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{8}
}
func (x *TestSuiteSource) GetKind() string {
@@ -438,7 +548,7 @@ type TestSuite struct {
func (x *TestSuite) Reset() {
*x = TestSuite{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[7]
+ mi := &file_pkg_server_server_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -451,7 +561,7 @@ func (x *TestSuite) String() string {
func (*TestSuite) ProtoMessage() {}
func (x *TestSuite) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[7]
+ mi := &file_pkg_server_server_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -464,7 +574,7 @@ func (x *TestSuite) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestSuite.ProtoReflect.Descriptor instead.
func (*TestSuite) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{7}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{9}
}
func (x *TestSuite) GetName() string {
@@ -514,7 +624,7 @@ type TestSuiteWithCase struct {
func (x *TestSuiteWithCase) Reset() {
*x = TestSuiteWithCase{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[8]
+ mi := &file_pkg_server_server_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -527,7 +637,7 @@ func (x *TestSuiteWithCase) String() string {
func (*TestSuiteWithCase) ProtoMessage() {}
func (x *TestSuiteWithCase) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[8]
+ mi := &file_pkg_server_server_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -540,7 +650,7 @@ func (x *TestSuiteWithCase) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestSuiteWithCase.ProtoReflect.Descriptor instead.
func (*TestSuiteWithCase) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{8}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{10}
}
func (x *TestSuiteWithCase) GetSuite() *TestSuite {
@@ -571,7 +681,7 @@ type APISpec struct {
func (x *APISpec) Reset() {
*x = APISpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[9]
+ mi := &file_pkg_server_server_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -584,7 +694,7 @@ func (x *APISpec) String() string {
func (*APISpec) ProtoMessage() {}
func (x *APISpec) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[9]
+ mi := &file_pkg_server_server_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -597,7 +707,7 @@ func (x *APISpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use APISpec.ProtoReflect.Descriptor instead.
func (*APISpec) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{9}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{11}
}
func (x *APISpec) GetKind() string {
@@ -643,7 +753,7 @@ type Secure struct {
func (x *Secure) Reset() {
*x = Secure{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[10]
+ mi := &file_pkg_server_server_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -656,7 +766,7 @@ func (x *Secure) String() string {
func (*Secure) ProtoMessage() {}
func (x *Secure) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[10]
+ mi := &file_pkg_server_server_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -669,7 +779,7 @@ func (x *Secure) ProtoReflect() protoreflect.Message {
// Deprecated: Use Secure.ProtoReflect.Descriptor instead.
func (*Secure) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{10}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{12}
}
func (x *Secure) GetInsecure() bool {
@@ -722,7 +832,7 @@ type RPC struct {
func (x *RPC) Reset() {
*x = RPC{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[11]
+ mi := &file_pkg_server_server_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -735,7 +845,7 @@ func (x *RPC) String() string {
func (*RPC) ProtoMessage() {}
func (x *RPC) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[11]
+ mi := &file_pkg_server_server_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -748,7 +858,7 @@ func (x *RPC) ProtoReflect() protoreflect.Message {
// Deprecated: Use RPC.ProtoReflect.Descriptor instead.
func (*RPC) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{11}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{13}
}
func (x *RPC) GetImport() []string {
@@ -799,7 +909,7 @@ type TestSuiteIdentity struct {
func (x *TestSuiteIdentity) Reset() {
*x = TestSuiteIdentity{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[12]
+ mi := &file_pkg_server_server_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -812,7 +922,7 @@ func (x *TestSuiteIdentity) String() string {
func (*TestSuiteIdentity) ProtoMessage() {}
func (x *TestSuiteIdentity) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[12]
+ mi := &file_pkg_server_server_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -825,7 +935,7 @@ func (x *TestSuiteIdentity) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestSuiteIdentity.ProtoReflect.Descriptor instead.
func (*TestSuiteIdentity) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{12}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{14}
}
func (x *TestSuiteIdentity) GetName() string {
@@ -861,7 +971,7 @@ type TestSuiteDuplicate struct {
func (x *TestSuiteDuplicate) Reset() {
*x = TestSuiteDuplicate{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[13]
+ mi := &file_pkg_server_server_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -874,7 +984,7 @@ func (x *TestSuiteDuplicate) String() string {
func (*TestSuiteDuplicate) ProtoMessage() {}
func (x *TestSuiteDuplicate) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[13]
+ mi := &file_pkg_server_server_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -887,7 +997,7 @@ func (x *TestSuiteDuplicate) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestSuiteDuplicate.ProtoReflect.Descriptor instead.
func (*TestSuiteDuplicate) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{13}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{15}
}
func (x *TestSuiteDuplicate) GetSourceSuiteName() string {
@@ -918,7 +1028,7 @@ type TestCaseDuplicate struct {
func (x *TestCaseDuplicate) Reset() {
*x = TestCaseDuplicate{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[14]
+ mi := &file_pkg_server_server_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -931,7 +1041,7 @@ func (x *TestCaseDuplicate) String() string {
func (*TestCaseDuplicate) ProtoMessage() {}
func (x *TestCaseDuplicate) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[14]
+ mi := &file_pkg_server_server_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -944,7 +1054,7 @@ func (x *TestCaseDuplicate) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestCaseDuplicate.ProtoReflect.Descriptor instead.
func (*TestCaseDuplicate) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{14}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{16}
}
func (x *TestCaseDuplicate) GetSourceSuiteName() string {
@@ -991,7 +1101,7 @@ type TestTask struct {
func (x *TestTask) Reset() {
*x = TestTask{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[15]
+ mi := &file_pkg_server_server_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1004,7 +1114,7 @@ func (x *TestTask) String() string {
func (*TestTask) ProtoMessage() {}
func (x *TestTask) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[15]
+ mi := &file_pkg_server_server_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1017,7 +1127,7 @@ func (x *TestTask) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestTask.ProtoReflect.Descriptor instead.
func (*TestTask) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{15}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{17}
}
func (x *TestTask) GetData() string {
@@ -1077,7 +1187,7 @@ type BatchTestTask struct {
func (x *BatchTestTask) Reset() {
*x = BatchTestTask{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[16]
+ mi := &file_pkg_server_server_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1090,7 +1200,7 @@ func (x *BatchTestTask) String() string {
func (*BatchTestTask) ProtoMessage() {}
func (x *BatchTestTask) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[16]
+ mi := &file_pkg_server_server_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1103,7 +1213,7 @@ func (x *BatchTestTask) ProtoReflect() protoreflect.Message {
// Deprecated: Use BatchTestTask.ProtoReflect.Descriptor instead.
func (*BatchTestTask) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{16}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{18}
}
func (x *BatchTestTask) GetSuiteName() string {
@@ -1154,7 +1264,7 @@ type TestResult struct {
func (x *TestResult) Reset() {
*x = TestResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[17]
+ mi := &file_pkg_server_server_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1167,7 +1277,7 @@ func (x *TestResult) String() string {
func (*TestResult) ProtoMessage() {}
func (x *TestResult) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[17]
+ mi := &file_pkg_server_server_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1180,7 +1290,7 @@ func (x *TestResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestResult.ProtoReflect.Descriptor instead.
func (*TestResult) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{17}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{19}
}
func (x *TestResult) GetMessage() string {
@@ -1219,7 +1329,7 @@ type HistoryTestResult struct {
func (x *HistoryTestResult) Reset() {
*x = HistoryTestResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[18]
+ mi := &file_pkg_server_server_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1232,7 +1342,7 @@ func (x *HistoryTestResult) String() string {
func (*HistoryTestResult) ProtoMessage() {}
func (x *HistoryTestResult) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[18]
+ mi := &file_pkg_server_server_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1245,7 +1355,7 @@ func (x *HistoryTestResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use HistoryTestResult.ProtoReflect.Descriptor instead.
func (*HistoryTestResult) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{18}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{20}
}
func (x *HistoryTestResult) GetMessage() string {
@@ -1295,7 +1405,7 @@ type HelloReply struct {
func (x *HelloReply) Reset() {
*x = HelloReply{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[19]
+ mi := &file_pkg_server_server_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1308,7 +1418,7 @@ func (x *HelloReply) String() string {
func (*HelloReply) ProtoMessage() {}
func (x *HelloReply) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[19]
+ mi := &file_pkg_server_server_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1321,7 +1431,7 @@ func (x *HelloReply) ProtoReflect() protoreflect.Message {
// Deprecated: Use HelloReply.ProtoReflect.Descriptor instead.
func (*HelloReply) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{19}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{21}
}
func (x *HelloReply) GetMessage() string {
@@ -1349,7 +1459,7 @@ type YamlData struct {
func (x *YamlData) Reset() {
*x = YamlData{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[20]
+ mi := &file_pkg_server_server_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1362,7 +1472,7 @@ func (x *YamlData) String() string {
func (*YamlData) ProtoMessage() {}
func (x *YamlData) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[20]
+ mi := &file_pkg_server_server_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1375,7 +1485,7 @@ func (x *YamlData) ProtoReflect() protoreflect.Message {
// Deprecated: Use YamlData.ProtoReflect.Descriptor instead.
func (*YamlData) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{20}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{22}
}
func (x *YamlData) GetData() []byte {
@@ -1398,7 +1508,7 @@ type Suite struct {
func (x *Suite) Reset() {
*x = Suite{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[21]
+ mi := &file_pkg_server_server_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1411,7 +1521,7 @@ func (x *Suite) String() string {
func (*Suite) ProtoMessage() {}
func (x *Suite) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[21]
+ mi := &file_pkg_server_server_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1424,7 +1534,7 @@ func (x *Suite) ProtoReflect() protoreflect.Message {
// Deprecated: Use Suite.ProtoReflect.Descriptor instead.
func (*Suite) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{21}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{23}
}
func (x *Suite) GetName() string {
@@ -1460,7 +1570,7 @@ type TestCaseWithSuite struct {
func (x *TestCaseWithSuite) Reset() {
*x = TestCaseWithSuite{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[22]
+ mi := &file_pkg_server_server_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1473,7 +1583,7 @@ func (x *TestCaseWithSuite) String() string {
func (*TestCaseWithSuite) ProtoMessage() {}
func (x *TestCaseWithSuite) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[22]
+ mi := &file_pkg_server_server_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1486,7 +1596,7 @@ func (x *TestCaseWithSuite) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestCaseWithSuite.ProtoReflect.Descriptor instead.
func (*TestCaseWithSuite) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{22}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{24}
}
func (x *TestCaseWithSuite) GetSuiteName() string {
@@ -1514,7 +1624,7 @@ type TestCases struct {
func (x *TestCases) Reset() {
*x = TestCases{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[23]
+ mi := &file_pkg_server_server_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1527,7 +1637,7 @@ func (x *TestCases) String() string {
func (*TestCases) ProtoMessage() {}
func (x *TestCases) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[23]
+ mi := &file_pkg_server_server_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1540,7 +1650,7 @@ func (x *TestCases) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestCases.ProtoReflect.Descriptor instead.
func (*TestCases) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{23}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{25}
}
func (x *TestCases) GetData() []*TestCase {
@@ -1565,7 +1675,7 @@ type TestCase struct {
func (x *TestCase) Reset() {
*x = TestCase{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[24]
+ mi := &file_pkg_server_server_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1578,7 +1688,7 @@ func (x *TestCase) String() string {
func (*TestCase) ProtoMessage() {}
func (x *TestCase) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[24]
+ mi := &file_pkg_server_server_proto_msgTypes[26]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1591,7 +1701,7 @@ func (x *TestCase) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestCase.ProtoReflect.Descriptor instead.
func (*TestCase) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{24}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{26}
}
func (x *TestCase) GetName() string {
@@ -1650,7 +1760,7 @@ type HistoryTestCase struct {
func (x *HistoryTestCase) Reset() {
*x = HistoryTestCase{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[25]
+ mi := &file_pkg_server_server_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1663,7 +1773,7 @@ func (x *HistoryTestCase) String() string {
func (*HistoryTestCase) ProtoMessage() {}
func (x *HistoryTestCase) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[25]
+ mi := &file_pkg_server_server_proto_msgTypes[27]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1676,7 +1786,7 @@ func (x *HistoryTestCase) ProtoReflect() protoreflect.Message {
// Deprecated: Use HistoryTestCase.ProtoReflect.Descriptor instead.
func (*HistoryTestCase) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{25}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{27}
}
func (x *HistoryTestCase) GetCaseName() string {
@@ -1767,7 +1877,7 @@ type HistoryTestCases struct {
func (x *HistoryTestCases) Reset() {
*x = HistoryTestCases{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[26]
+ mi := &file_pkg_server_server_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1780,7 +1890,7 @@ func (x *HistoryTestCases) String() string {
func (*HistoryTestCases) ProtoMessage() {}
func (x *HistoryTestCases) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[26]
+ mi := &file_pkg_server_server_proto_msgTypes[28]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1793,7 +1903,7 @@ func (x *HistoryTestCases) ProtoReflect() protoreflect.Message {
// Deprecated: Use HistoryTestCases.ProtoReflect.Descriptor instead.
func (*HistoryTestCases) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{26}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{28}
}
func (x *HistoryTestCases) GetData() []*HistoryTestCase {
@@ -1820,7 +1930,7 @@ type Request struct {
func (x *Request) Reset() {
*x = Request{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[27]
+ mi := &file_pkg_server_server_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1833,7 +1943,7 @@ func (x *Request) String() string {
func (*Request) ProtoMessage() {}
func (x *Request) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[27]
+ mi := &file_pkg_server_server_proto_msgTypes[29]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1846,7 +1956,7 @@ func (x *Request) ProtoReflect() protoreflect.Message {
// Deprecated: Use Request.ProtoReflect.Descriptor instead.
func (*Request) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{27}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{29}
}
func (x *Request) GetApi() string {
@@ -1915,7 +2025,7 @@ type Response struct {
func (x *Response) Reset() {
*x = Response{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[28]
+ mi := &file_pkg_server_server_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1928,7 +2038,7 @@ func (x *Response) String() string {
func (*Response) ProtoMessage() {}
func (x *Response) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[28]
+ mi := &file_pkg_server_server_proto_msgTypes[30]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1941,7 +2051,7 @@ func (x *Response) ProtoReflect() protoreflect.Message {
// Deprecated: Use Response.ProtoReflect.Descriptor instead.
func (*Response) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{28}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{30}
}
func (x *Response) GetStatusCode() int32 {
@@ -2005,7 +2115,7 @@ type ConditionalVerify struct {
func (x *ConditionalVerify) Reset() {
*x = ConditionalVerify{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[29]
+ mi := &file_pkg_server_server_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2018,7 +2128,7 @@ func (x *ConditionalVerify) String() string {
func (*ConditionalVerify) ProtoMessage() {}
func (x *ConditionalVerify) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[29]
+ mi := &file_pkg_server_server_proto_msgTypes[31]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2031,7 +2141,7 @@ func (x *ConditionalVerify) ProtoReflect() protoreflect.Message {
// Deprecated: Use ConditionalVerify.ProtoReflect.Descriptor instead.
func (*ConditionalVerify) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{29}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{31}
}
func (x *ConditionalVerify) GetCondition() []string {
@@ -2064,7 +2174,7 @@ type TestCaseResult struct {
func (x *TestCaseResult) Reset() {
*x = TestCaseResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[30]
+ mi := &file_pkg_server_server_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2077,7 +2187,7 @@ func (x *TestCaseResult) String() string {
func (*TestCaseResult) ProtoMessage() {}
func (x *TestCaseResult) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[30]
+ mi := &file_pkg_server_server_proto_msgTypes[32]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2090,7 +2200,7 @@ func (x *TestCaseResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use TestCaseResult.ProtoReflect.Descriptor instead.
func (*TestCaseResult) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{30}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{32}
}
func (x *TestCaseResult) GetStatusCode() int32 {
@@ -2148,7 +2258,7 @@ type Pair struct {
func (x *Pair) Reset() {
*x = Pair{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[31]
+ mi := &file_pkg_server_server_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2161,7 +2271,7 @@ func (x *Pair) String() string {
func (*Pair) ProtoMessage() {}
func (x *Pair) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[31]
+ mi := &file_pkg_server_server_proto_msgTypes[33]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2174,7 +2284,7 @@ func (x *Pair) ProtoReflect() protoreflect.Message {
// Deprecated: Use Pair.ProtoReflect.Descriptor instead.
func (*Pair) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{31}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{33}
}
func (x *Pair) GetKey() string {
@@ -2209,7 +2319,7 @@ type Pairs struct {
func (x *Pairs) Reset() {
*x = Pairs{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[32]
+ mi := &file_pkg_server_server_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2222,7 +2332,7 @@ func (x *Pairs) String() string {
func (*Pairs) ProtoMessage() {}
func (x *Pairs) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[32]
+ mi := &file_pkg_server_server_proto_msgTypes[34]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2235,7 +2345,7 @@ func (x *Pairs) ProtoReflect() protoreflect.Message {
// Deprecated: Use Pairs.ProtoReflect.Descriptor instead.
func (*Pairs) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{32}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{34}
}
func (x *Pairs) GetData() []*Pair {
@@ -2257,7 +2367,7 @@ type SimpleQuery struct {
func (x *SimpleQuery) Reset() {
*x = SimpleQuery{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[33]
+ mi := &file_pkg_server_server_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2270,7 +2380,7 @@ func (x *SimpleQuery) String() string {
func (*SimpleQuery) ProtoMessage() {}
func (x *SimpleQuery) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[33]
+ mi := &file_pkg_server_server_proto_msgTypes[35]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2283,7 +2393,7 @@ func (x *SimpleQuery) ProtoReflect() protoreflect.Message {
// Deprecated: Use SimpleQuery.ProtoReflect.Descriptor instead.
func (*SimpleQuery) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{33}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{35}
}
func (x *SimpleQuery) GetName() string {
@@ -2311,7 +2421,7 @@ type Stores struct {
func (x *Stores) Reset() {
*x = Stores{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[34]
+ mi := &file_pkg_server_server_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2324,7 +2434,7 @@ func (x *Stores) String() string {
func (*Stores) ProtoMessage() {}
func (x *Stores) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[34]
+ mi := &file_pkg_server_server_proto_msgTypes[36]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2337,7 +2447,7 @@ func (x *Stores) ProtoReflect() protoreflect.Message {
// Deprecated: Use Stores.ProtoReflect.Descriptor instead.
func (*Stores) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{34}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{36}
}
func (x *Stores) GetData() []*Store {
@@ -2368,7 +2478,7 @@ type Store struct {
func (x *Store) Reset() {
*x = Store{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[35]
+ mi := &file_pkg_server_server_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2381,7 +2491,7 @@ func (x *Store) String() string {
func (*Store) ProtoMessage() {}
func (x *Store) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[35]
+ mi := &file_pkg_server_server_proto_msgTypes[37]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2394,7 +2504,7 @@ func (x *Store) ProtoReflect() protoreflect.Message {
// Deprecated: Use Store.ProtoReflect.Descriptor instead.
func (*Store) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{35}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{37}
}
func (x *Store) GetName() string {
@@ -2485,7 +2595,7 @@ type StoreKinds struct {
func (x *StoreKinds) Reset() {
*x = StoreKinds{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[36]
+ mi := &file_pkg_server_server_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2498,7 +2608,7 @@ func (x *StoreKinds) String() string {
func (*StoreKinds) ProtoMessage() {}
func (x *StoreKinds) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[36]
+ mi := &file_pkg_server_server_proto_msgTypes[38]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2511,7 +2621,7 @@ func (x *StoreKinds) ProtoReflect() protoreflect.Message {
// Deprecated: Use StoreKinds.ProtoReflect.Descriptor instead.
func (*StoreKinds) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{36}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{38}
}
func (x *StoreKinds) GetData() []*StoreKind {
@@ -2534,7 +2644,7 @@ type StoreKind struct {
func (x *StoreKind) Reset() {
*x = StoreKind{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[37]
+ mi := &file_pkg_server_server_proto_msgTypes[39]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2547,7 +2657,7 @@ func (x *StoreKind) String() string {
func (*StoreKind) ProtoMessage() {}
func (x *StoreKind) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[37]
+ mi := &file_pkg_server_server_proto_msgTypes[39]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2560,7 +2670,7 @@ func (x *StoreKind) ProtoReflect() protoreflect.Message {
// Deprecated: Use StoreKind.ProtoReflect.Descriptor instead.
func (*StoreKind) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{37}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{39}
}
func (x *StoreKind) GetName() string {
@@ -2596,7 +2706,7 @@ type CommonResult struct {
func (x *CommonResult) Reset() {
*x = CommonResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[38]
+ mi := &file_pkg_server_server_proto_msgTypes[40]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2609,7 +2719,7 @@ func (x *CommonResult) String() string {
func (*CommonResult) ProtoMessage() {}
func (x *CommonResult) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[38]
+ mi := &file_pkg_server_server_proto_msgTypes[40]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2622,7 +2732,7 @@ func (x *CommonResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use CommonResult.ProtoReflect.Descriptor instead.
func (*CommonResult) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{38}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{40}
}
func (x *CommonResult) GetSuccess() bool {
@@ -2650,7 +2760,7 @@ type SimpleList struct {
func (x *SimpleList) Reset() {
*x = SimpleList{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[39]
+ mi := &file_pkg_server_server_proto_msgTypes[41]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2663,7 +2773,7 @@ func (x *SimpleList) String() string {
func (*SimpleList) ProtoMessage() {}
func (x *SimpleList) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[39]
+ mi := &file_pkg_server_server_proto_msgTypes[41]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2676,7 +2786,7 @@ func (x *SimpleList) ProtoReflect() protoreflect.Message {
// Deprecated: Use SimpleList.ProtoReflect.Descriptor instead.
func (*SimpleList) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{39}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{41}
}
func (x *SimpleList) GetData() []*Pair {
@@ -2697,7 +2807,7 @@ type SimpleName struct {
func (x *SimpleName) Reset() {
*x = SimpleName{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[40]
+ mi := &file_pkg_server_server_proto_msgTypes[42]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2710,7 +2820,7 @@ func (x *SimpleName) String() string {
func (*SimpleName) ProtoMessage() {}
func (x *SimpleName) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[40]
+ mi := &file_pkg_server_server_proto_msgTypes[42]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2723,7 +2833,7 @@ func (x *SimpleName) ProtoReflect() protoreflect.Message {
// Deprecated: Use SimpleName.ProtoReflect.Descriptor instead.
func (*SimpleName) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{40}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{42}
}
func (x *SimpleName) GetName() string {
@@ -2747,7 +2857,7 @@ type CodeGenerateRequest struct {
func (x *CodeGenerateRequest) Reset() {
*x = CodeGenerateRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[41]
+ mi := &file_pkg_server_server_proto_msgTypes[43]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2760,7 +2870,7 @@ func (x *CodeGenerateRequest) String() string {
func (*CodeGenerateRequest) ProtoMessage() {}
func (x *CodeGenerateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[41]
+ mi := &file_pkg_server_server_proto_msgTypes[43]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2773,7 +2883,7 @@ func (x *CodeGenerateRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use CodeGenerateRequest.ProtoReflect.Descriptor instead.
func (*CodeGenerateRequest) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{41}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{43}
}
func (x *CodeGenerateRequest) GetTestSuite() string {
@@ -2815,7 +2925,7 @@ type Secrets struct {
func (x *Secrets) Reset() {
*x = Secrets{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[42]
+ mi := &file_pkg_server_server_proto_msgTypes[44]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2828,7 +2938,7 @@ func (x *Secrets) String() string {
func (*Secrets) ProtoMessage() {}
func (x *Secrets) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[42]
+ mi := &file_pkg_server_server_proto_msgTypes[44]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2841,7 +2951,7 @@ func (x *Secrets) ProtoReflect() protoreflect.Message {
// Deprecated: Use Secrets.ProtoReflect.Descriptor instead.
func (*Secrets) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{42}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{44}
}
func (x *Secrets) GetData() []*Secret {
@@ -2864,7 +2974,7 @@ type Secret struct {
func (x *Secret) Reset() {
*x = Secret{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[43]
+ mi := &file_pkg_server_server_proto_msgTypes[45]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2877,7 +2987,7 @@ func (x *Secret) String() string {
func (*Secret) ProtoMessage() {}
func (x *Secret) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[43]
+ mi := &file_pkg_server_server_proto_msgTypes[45]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2890,7 +3000,7 @@ func (x *Secret) ProtoReflect() protoreflect.Message {
// Deprecated: Use Secret.ProtoReflect.Descriptor instead.
func (*Secret) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{43}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{45}
}
func (x *Secret) GetName() string {
@@ -2928,7 +3038,7 @@ type ExtensionStatus struct {
func (x *ExtensionStatus) Reset() {
*x = ExtensionStatus{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[44]
+ mi := &file_pkg_server_server_proto_msgTypes[46]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2941,7 +3051,7 @@ func (x *ExtensionStatus) String() string {
func (*ExtensionStatus) ProtoMessage() {}
func (x *ExtensionStatus) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[44]
+ mi := &file_pkg_server_server_proto_msgTypes[46]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2954,7 +3064,7 @@ func (x *ExtensionStatus) ProtoReflect() protoreflect.Message {
// Deprecated: Use ExtensionStatus.ProtoReflect.Descriptor instead.
func (*ExtensionStatus) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{44}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{46}
}
func (x *ExtensionStatus) GetReady() bool {
@@ -2996,7 +3106,7 @@ type PProfRequest struct {
func (x *PProfRequest) Reset() {
*x = PProfRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[45]
+ mi := &file_pkg_server_server_proto_msgTypes[47]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3009,7 +3119,7 @@ func (x *PProfRequest) String() string {
func (*PProfRequest) ProtoMessage() {}
func (x *PProfRequest) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[45]
+ mi := &file_pkg_server_server_proto_msgTypes[47]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3022,7 +3132,7 @@ func (x *PProfRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use PProfRequest.ProtoReflect.Descriptor instead.
func (*PProfRequest) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{45}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{47}
}
func (x *PProfRequest) GetName() string {
@@ -3043,7 +3153,7 @@ type PProfData struct {
func (x *PProfData) Reset() {
*x = PProfData{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[46]
+ mi := &file_pkg_server_server_proto_msgTypes[48]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3056,7 +3166,7 @@ func (x *PProfData) String() string {
func (*PProfData) ProtoMessage() {}
func (x *PProfData) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[46]
+ mi := &file_pkg_server_server_proto_msgTypes[48]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3069,7 +3179,7 @@ func (x *PProfData) ProtoReflect() protoreflect.Message {
// Deprecated: Use PProfData.ProtoReflect.Descriptor instead.
func (*PProfData) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{46}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{48}
}
func (x *PProfData) GetData() []byte {
@@ -3092,7 +3202,7 @@ type FileData struct {
func (x *FileData) Reset() {
*x = FileData{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[47]
+ mi := &file_pkg_server_server_proto_msgTypes[49]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3105,7 +3215,7 @@ func (x *FileData) String() string {
func (*FileData) ProtoMessage() {}
func (x *FileData) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[47]
+ mi := &file_pkg_server_server_proto_msgTypes[49]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3118,7 +3228,7 @@ func (x *FileData) ProtoReflect() protoreflect.Message {
// Deprecated: Use FileData.ProtoReflect.Descriptor instead.
func (*FileData) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{47}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{49}
}
func (x *FileData) GetData() []byte {
@@ -3151,7 +3261,7 @@ type Empty struct {
func (x *Empty) Reset() {
*x = Empty{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[48]
+ mi := &file_pkg_server_server_proto_msgTypes[50]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3164,7 +3274,7 @@ func (x *Empty) String() string {
func (*Empty) ProtoMessage() {}
func (x *Empty) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[48]
+ mi := &file_pkg_server_server_proto_msgTypes[50]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3177,7 +3287,7 @@ func (x *Empty) ProtoReflect() protoreflect.Message {
// Deprecated: Use Empty.ProtoReflect.Descriptor instead.
func (*Empty) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{48}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{50}
}
type MockConfig struct {
@@ -3185,15 +3295,19 @@ type MockConfig struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Prefix string `protobuf:"bytes,1,opt,name=Prefix,proto3" json:"Prefix,omitempty"`
- Config string `protobuf:"bytes,2,opt,name=Config,proto3" json:"Config,omitempty"`
- Port int32 `protobuf:"varint,3,opt,name=Port,proto3" json:"Port,omitempty"`
+ Prefix string `protobuf:"bytes,1,opt,name=Prefix,proto3" json:"Prefix,omitempty"`
+ Config string `protobuf:"bytes,2,opt,name=Config,proto3" json:"Config,omitempty"`
+ Port int32 `protobuf:"varint,3,opt,name=Port,proto3" json:"Port,omitempty"`
+ StoreKind string `protobuf:"bytes,4,opt,name=storeKind,proto3" json:"storeKind,omitempty"`
+ StoreLocalFile string `protobuf:"bytes,5,opt,name=storeLocalFile,proto3" json:"storeLocalFile,omitempty"`
+ StoreURL string `protobuf:"bytes,6,opt,name=storeURL,proto3" json:"storeURL,omitempty"`
+ StoreRemote string `protobuf:"bytes,7,opt,name=storeRemote,proto3" json:"storeRemote,omitempty"`
}
func (x *MockConfig) Reset() {
*x = MockConfig{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[49]
+ mi := &file_pkg_server_server_proto_msgTypes[51]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3206,7 +3320,7 @@ func (x *MockConfig) String() string {
func (*MockConfig) ProtoMessage() {}
func (x *MockConfig) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[49]
+ mi := &file_pkg_server_server_proto_msgTypes[51]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3219,7 +3333,7 @@ func (x *MockConfig) ProtoReflect() protoreflect.Message {
// Deprecated: Use MockConfig.ProtoReflect.Descriptor instead.
func (*MockConfig) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{49}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{51}
}
func (x *MockConfig) GetPrefix() string {
@@ -3243,6 +3357,34 @@ func (x *MockConfig) GetPort() int32 {
return 0
}
+func (x *MockConfig) GetStoreKind() string {
+ if x != nil {
+ return x.StoreKind
+ }
+ return ""
+}
+
+func (x *MockConfig) GetStoreLocalFile() string {
+ if x != nil {
+ return x.StoreLocalFile
+ }
+ return ""
+}
+
+func (x *MockConfig) GetStoreURL() string {
+ if x != nil {
+ return x.StoreURL
+ }
+ return ""
+}
+
+func (x *MockConfig) GetStoreRemote() string {
+ if x != nil {
+ return x.StoreRemote
+ }
+ return ""
+}
+
type Version struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -3256,7 +3398,7 @@ type Version struct {
func (x *Version) Reset() {
*x = Version{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[50]
+ mi := &file_pkg_server_server_proto_msgTypes[52]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3269,7 +3411,7 @@ func (x *Version) String() string {
func (*Version) ProtoMessage() {}
func (x *Version) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[50]
+ mi := &file_pkg_server_server_proto_msgTypes[52]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3282,7 +3424,7 @@ func (x *Version) ProtoReflect() protoreflect.Message {
// Deprecated: Use Version.ProtoReflect.Descriptor instead.
func (*Version) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{50}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{52}
}
func (x *Version) GetVersion() string {
@@ -3319,7 +3461,7 @@ type ProxyConfig struct {
func (x *ProxyConfig) Reset() {
*x = ProxyConfig{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[51]
+ mi := &file_pkg_server_server_proto_msgTypes[53]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3332,7 +3474,7 @@ func (x *ProxyConfig) String() string {
func (*ProxyConfig) ProtoMessage() {}
func (x *ProxyConfig) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[51]
+ mi := &file_pkg_server_server_proto_msgTypes[53]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3345,7 +3487,7 @@ func (x *ProxyConfig) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProxyConfig.ProtoReflect.Descriptor instead.
func (*ProxyConfig) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{51}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{53}
}
func (x *ProxyConfig) GetHttp() string {
@@ -3384,7 +3526,7 @@ type DataQuery struct {
func (x *DataQuery) Reset() {
*x = DataQuery{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[52]
+ mi := &file_pkg_server_server_proto_msgTypes[54]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3397,7 +3539,7 @@ func (x *DataQuery) String() string {
func (*DataQuery) ProtoMessage() {}
func (x *DataQuery) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[52]
+ mi := &file_pkg_server_server_proto_msgTypes[54]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3410,7 +3552,7 @@ func (x *DataQuery) ProtoReflect() protoreflect.Message {
// Deprecated: Use DataQuery.ProtoReflect.Descriptor instead.
func (*DataQuery) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{52}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{54}
}
func (x *DataQuery) GetType() string {
@@ -3461,7 +3603,7 @@ type DataQueryResult struct {
func (x *DataQueryResult) Reset() {
*x = DataQueryResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[53]
+ mi := &file_pkg_server_server_proto_msgTypes[55]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3474,7 +3616,7 @@ func (x *DataQueryResult) String() string {
func (*DataQueryResult) ProtoMessage() {}
func (x *DataQueryResult) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[53]
+ mi := &file_pkg_server_server_proto_msgTypes[55]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3487,7 +3629,7 @@ func (x *DataQueryResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use DataQueryResult.ProtoReflect.Descriptor instead.
func (*DataQueryResult) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{53}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{55}
}
func (x *DataQueryResult) GetData() []*Pair {
@@ -3526,7 +3668,7 @@ type DataMeta struct {
func (x *DataMeta) Reset() {
*x = DataMeta{}
if protoimpl.UnsafeEnabled {
- mi := &file_pkg_server_server_proto_msgTypes[54]
+ mi := &file_pkg_server_server_proto_msgTypes[56]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3539,7 +3681,7 @@ func (x *DataMeta) String() string {
func (*DataMeta) ProtoMessage() {}
func (x *DataMeta) ProtoReflect() protoreflect.Message {
- mi := &file_pkg_server_server_proto_msgTypes[54]
+ mi := &file_pkg_server_server_proto_msgTypes[56]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3552,7 +3694,7 @@ func (x *DataMeta) ProtoReflect() protoreflect.Message {
// Deprecated: Use DataMeta.ProtoReflect.Descriptor instead.
func (*DataMeta) Descriptor() ([]byte, []int) {
- return file_pkg_server_server_proto_rawDescGZIP(), []int{54}
+ return file_pkg_server_server_proto_rawDescGZIP(), []int{56}
}
func (x *DataMeta) GetDatabases() []string {
@@ -3599,761 +3741,795 @@ var file_pkg_server_server_proto_rawDesc = []byte{
0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61,
0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x22, 0x7e, 0x0a, 0x06, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x04, 0x64, 0x61,
- 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x46, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
- 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x22, 0x2f, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x22, 0x93, 0x01, 0x0a, 0x0d, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69,
- 0x74, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f,
- 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4d, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
- 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3f, 0x0a, 0x0c, 0x48, 0x69, 0x73, 0x74, 0x6f,
- 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48,
- 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x97, 0x01, 0x0a, 0x13, 0x48, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
- 0x12, 0x14, 0x0a, 0x05, 0x73, 0x75, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x73, 0x75, 0x69, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x73, 0x74, 0x63, 0x61,
- 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x63, 0x61,
- 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69,
- 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x68, 0x69,
- 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12,
- 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69,
- 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
- 0x49, 0x44, 0x22, 0x72, 0x0a, 0x10, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x49, 0x64,
- 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x75, 0x69, 0x74, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x75, 0x69, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08,
- 0x74, 0x65, 0x73, 0x74, 0x63, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x74, 0x65, 0x73, 0x74, 0x63, 0x61, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61,
+ 0x22, 0x44, 0x0a, 0x04, 0x4d, 0x65, 0x6e, 0x75, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05,
+ 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64,
+ 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x22, 0x2c, 0x0a, 0x08, 0x4d, 0x65, 0x6e, 0x75, 0x4c, 0x69,
+ 0x73, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x04,
+ 0x64, 0x61, 0x74, 0x61, 0x22, 0x7e, 0x0a, 0x06, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2c,
+ 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74,
+ 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x46, 0x0a, 0x09,
+ 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a,
+ 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74,
+ 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x93, 0x01, 0x0a, 0x0d, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48,
+ 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74,
+ 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4d, 0x0a, 0x09,
+ 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3f, 0x0a, 0x0c, 0x48,
+ 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x73, 0x65, 0x49, 0x64,
+ 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x97, 0x01, 0x0a,
+ 0x13, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x75, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x75, 0x69, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65,
+ 0x73, 0x74, 0x63, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65,
+ 0x73, 0x74, 0x63, 0x61, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x10, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x22, 0x72, 0x0a, 0x10, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61,
+ 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x75,
+ 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x75, 0x69, 0x74, 0x65,
+ 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x73, 0x74, 0x63, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x63, 0x61, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x0a,
+ 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a,
+ 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x4b, 0x0a, 0x0f, 0x54, 0x65,
+ 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa5, 0x01, 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74,
+ 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x69,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x69, 0x12, 0x22, 0x0a, 0x05, 0x70,
+ 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12,
+ 0x23, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x50, 0x49, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04,
+ 0x73, 0x70, 0x65, 0x63, 0x12, 0x29, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f,
+ 0x78, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22,
+ 0x62, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68,
+ 0x43, 0x61, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x73, 0x75, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73,
+ 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x52, 0x05, 0x73, 0x75, 0x69, 0x74, 0x65, 0x12, 0x24, 0x0a,
+ 0x04, 0x63, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x04, 0x63,
+ 0x61, 0x73, 0x65, 0x22, 0x76, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12,
+ 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x0b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x50, 0x43, 0x52, 0x03,
+ 0x72, 0x70, 0x63, 0x12, 0x26, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63,
+ 0x75, 0x72, 0x65, 0x52, 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x22, 0x7a, 0x0a, 0x06, 0x53,
+ 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72,
+ 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x63, 0x65, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x02, 0x63, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e,
+ 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x95, 0x01, 0x0a, 0x03, 0x52, 0x50, 0x43, 0x12,
+ 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x06, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x66, 0x69, 0x6c, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x66, 0x69, 0x6c,
+ 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a,
+ 0x03, 0x72, 0x61, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x61, 0x77, 0x22,
+ 0x4d, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x68,
+ 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75,
+ 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28,
+ 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53,
+ 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x54, 0x65, 0x73,
+ 0x74, 0x43, 0x61, 0x73, 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x28,
+ 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53,
+ 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x43, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e,
+ 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x43, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x61, 0x73, 0x65, 0x4e, 0x61,
+ 0x6d, 0x65, 0x22, 0xf7, 0x01, 0x0a, 0x08, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12,
+ 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64,
+ 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x73, 0x65, 0x4e,
+ 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x73, 0x65, 0x4e,
+ 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2b, 0x0a, 0x03, 0x65, 0x6e, 0x76,
+ 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x45, 0x6e, 0x76, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x2c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65,
+ 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65,
+ 0x74, 0x65, 0x72, 0x73, 0x1a, 0x36, 0x0a, 0x08, 0x45, 0x6e, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa9, 0x01, 0x0a,
+ 0x0d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1c,
+ 0x0a, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08,
+ 0x63, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x63, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61,
0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73,
0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61,
- 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x4b, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75,
- 0x69, 0x74, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a,
- 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12,
- 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64,
- 0x61, 0x74, 0x61, 0x22, 0xa5, 0x01, 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74,
- 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x69, 0x12, 0x22, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
- 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x23, 0x0a, 0x04, 0x73,
- 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x2e, 0x41, 0x50, 0x49, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63,
- 0x12, 0x29, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x62, 0x0a, 0x11, 0x54,
- 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x43, 0x61, 0x73, 0x65,
- 0x12, 0x27, 0x0a, 0x05, 0x73, 0x75, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69,
- 0x74, 0x65, 0x52, 0x05, 0x73, 0x75, 0x69, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x63, 0x61, 0x73,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x04, 0x63, 0x61, 0x73, 0x65, 0x22,
- 0x76, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69,
- 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10,
- 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
- 0x12, 0x1d, 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x50, 0x43, 0x52, 0x03, 0x72, 0x70, 0x63, 0x12,
- 0x26, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x52,
- 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x22, 0x7a, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x75, 0x72,
- 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x72,
- 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x63,
- 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x22, 0x95, 0x01, 0x0a, 0x03, 0x52, 0x50, 0x43, 0x12, 0x16, 0x0a, 0x06, 0x69,
- 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x70,
- 0x6f, 0x72, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66,
- 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a,
- 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x61, 0x77,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x61, 0x77, 0x22, 0x4d, 0x0a, 0x11, 0x54,
- 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
- 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x61, 0x70, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x68, 0x0a, 0x12, 0x54, 0x65,
- 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65,
- 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73,
- 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x69, 0x74, 0x65,
- 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x61,
- 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x43, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x75, 0x69,
- 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x43, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf7,
- 0x01, 0x0a, 0x08, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12,
- 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b,
- 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2b, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74,
- 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x45, 0x6e, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x65,
- 0x6e, 0x76, 0x12, 0x2c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
- 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
- 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
- 0x1a, 0x36, 0x0a, 0x08, 0x45, 0x6e, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa9, 0x01, 0x0a, 0x0d, 0x42, 0x61, 0x74,
- 0x63, 0x68, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75,
- 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73,
- 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x73, 0x65,
- 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x73, 0x65,
- 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65,
- 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65,
- 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65,
- 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65,
- 0x72, 0x76, 0x61, 0x6c, 0x22, 0x7c, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05,
- 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72,
- 0x6f, 0x72, 0x12, 0x3e, 0x0a, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65,
- 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x52, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x22, 0xec, 0x01, 0x0a, 0x11, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65,
- 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
- 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3e, 0x0a, 0x0e, 0x74, 0x65, 0x73, 0x74,
- 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61,
- 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x43, 0x61,
- 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
- 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52,
- 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54,
- 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
- 0x65, 0x22, 0x3c, 0x0a, 0x0a, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12,
- 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72,
- 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22,
- 0x1e, 0x0a, 0x08, 0x59, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
- 0x55, 0x0a, 0x05, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03,
- 0x61, 0x70, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x69, 0x12, 0x26,
- 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52,
- 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x57, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61,
- 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73,
- 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
- 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
- 0x31, 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x04,
- 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x04, 0x64, 0x61,
- 0x74, 0x61, 0x22, 0xad, 0x01, 0x0a, 0x08, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12,
- 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x29, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x08,
- 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x22, 0xc9, 0x03, 0x0a, 0x0f, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65,
- 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x73, 0x65, 0x4e, 0x61,
- 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x73, 0x65, 0x4e, 0x61,
- 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65,
- 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x68, 0x69, 0x73, 0x74,
- 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0a,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0a, 0x73, 0x75, 0x69, 0x74,
- 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x73, 0x75, 0x69, 0x74,
- 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x2d, 0x0a, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65, 0x53,
- 0x70, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x2e, 0x41, 0x50, 0x49, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x73, 0x75, 0x69, 0x74,
- 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x69, 0x74, 0x65, 0x41, 0x70,
- 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x69, 0x74, 0x65, 0x41, 0x70,
- 0x69, 0x12, 0x29, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x08,
- 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44,
- 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x32, 0x0a, 0x0d, 0x68, 0x69,
- 0x73, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52,
- 0x0d, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3f,
- 0x0a, 0x10, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73,
- 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
- 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
- 0xd9, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61,
- 0x70, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x69, 0x12, 0x16, 0x0a,
- 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d,
- 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x24, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50,
- 0x61, 0x69, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x05, 0x71,
- 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12,
- 0x24, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x06, 0x63,
- 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20,
+ 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
+ 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x7c, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+ 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3e, 0x0a, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x43, 0x61,
+ 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xec, 0x01, 0x0a, 0x11, 0x48, 0x69, 0x73, 0x74, 0x6f,
+ 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07,
+ 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3e, 0x0a, 0x0e,
+ 0x74, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65,
+ 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0e, 0x74, 0x65,
+ 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2b, 0x0a, 0x04,
+ 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43,
+ 0x61, 0x73, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x0a, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65,
+ 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a,
+ 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x22, 0x1e, 0x0a, 0x08, 0x59, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12,
+ 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64,
+ 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x05, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61,
+ 0x70, 0x69, 0x12, 0x26, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43,
+ 0x61, 0x73, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x57, 0x0a, 0x11, 0x54, 0x65,
+ 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12,
+ 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a,
+ 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x04, 0x64,
+ 0x61, 0x74, 0x61, 0x22, 0x31, 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x73,
+ 0x12, 0x24, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65,
+ 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xad, 0x01, 0x0a, 0x08, 0x54, 0x65, 0x73, 0x74, 0x43,
+ 0x61, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x69, 0x74,
+ 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x2c, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16,
+ 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0xc9, 0x03, 0x0a, 0x0f, 0x48, 0x69, 0x73, 0x74, 0x6f,
+ 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61,
+ 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61,
+ 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e,
+ 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x69, 0x74, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53,
+ 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10,
+ 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0a,
+ 0x73, 0x75, 0x69, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a,
+ 0x73, 0x75, 0x69, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x2d, 0x0a, 0x09, 0x73, 0x75,
+ 0x69, 0x74, 0x65, 0x53, 0x70, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x50, 0x49, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09,
+ 0x73, 0x75, 0x69, 0x74, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x69,
+ 0x74, 0x65, 0x41, 0x70, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x69,
+ 0x74, 0x65, 0x41, 0x70, 0x69, 0x12, 0x29, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x2c, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e,
+ 0x0a, 0x02, 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x32,
+ 0x0a, 0x0d, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18,
+ 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50,
+ 0x61, 0x69, 0x72, 0x52, 0x0d, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x65, 0x61, 0x64,
+ 0x65, 0x72, 0x22, 0x3f, 0x0a, 0x10, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73,
+ 0x74, 0x43, 0x61, 0x73, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69,
+ 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x04, 0x64,
+ 0x61, 0x74, 0x61, 0x22, 0xd9, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x10, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70,
+ 0x69, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x24, 0x0a, 0x06, 0x68, 0x65, 0x61,
+ 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12,
+ 0x22, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, 0x71, 0x75,
+ 0x65, 0x72, 0x79, 0x12, 0x24, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x05, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69,
- 0x72, 0x52, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x97, 0x02, 0x0a, 0x08,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x24, 0x0a, 0x06,
- 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64,
- 0x65, 0x72, 0x12, 0x38, 0x0a, 0x10, 0x62, 0x6f, 0x64, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73,
- 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x10, 0x62, 0x6f, 0x64, 0x79,
- 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06,
- 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x65,
- 0x72, 0x69, 0x66, 0x79, 0x12, 0x47, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
- 0x6e, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x11, 0x43, 0x6f, 0x6e, 0x64,
- 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x16, 0x0a,
- 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
- 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x49, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f,
- 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63,
- 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x72, 0x69,
- 0x66, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79,
- 0x22, 0xa8, 0x01, 0x0a, 0x0e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43,
- 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x24, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65,
- 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a,
- 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72,
- 0x72, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x50, 0x0a, 0x04, 0x50,
- 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x29, 0x0a,
- 0x05, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01,
+ 0x72, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x66, 0x6f, 0x72,
+ 0x6d, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+ 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x62,
+ 0x6f, 0x64, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22,
+ 0x97, 0x02, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04,
+ 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79,
+ 0x12, 0x24, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x06,
+ 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x10, 0x62, 0x6f, 0x64, 0x79, 0x46, 0x69,
+ 0x65, 0x6c, 0x64, 0x73, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x10,
+ 0x62, 0x6f, 0x64, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74,
+ 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x06, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x47, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x64,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x11,
+ 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66,
+ 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x49, 0x0a, 0x11, 0x43, 0x6f, 0x6e,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x1c,
+ 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06,
+ 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x65,
+ 0x72, 0x69, 0x66, 0x79, 0x22, 0xa8, 0x01, 0x0a, 0x0e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73,
+ 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x24, 0x0a, 0x06, 0x68,
+ 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65,
+ 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75,
+ 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22,
+ 0x50, 0x0a, 0x04, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12,
+ 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x22, 0x29, 0x0a, 0x05, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x61,
+ 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x35, 0x0a, 0x0b,
+ 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x22, 0x2b, 0x0a, 0x06, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x21, 0x0a,
+ 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
+ 0x22, 0xc0, 0x02, 0x0a, 0x05, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14,
+ 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f,
+ 0x77, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64,
+ 0x12, 0x2c, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x07,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61,
- 0x69, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x35, 0x0a, 0x0b, 0x53, 0x69, 0x6d, 0x70,
- 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b,
- 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22,
- 0x2b, 0x0a, 0x06, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x04, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc0, 0x02, 0x0a,
- 0x05, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77,
- 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72,
- 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x0a,
- 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a,
- 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x04, 0x6b, 0x69,
- 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f,
- 0x6e, 0x6c, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f,
- 0x6e, 0x6c, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18,
- 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22,
- 0x33, 0x0a, 0x0a, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x12, 0x25, 0x0a,
- 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04,
- 0x64, 0x61, 0x74, 0x61, 0x22, 0x4b, 0x0a, 0x09, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x69, 0x6e,
- 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c,
- 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
- 0x64, 0x22, 0x42, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c,
- 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x2e, 0x0a, 0x0a, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c,
- 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52,
- 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x20, 0x0a, 0x0a, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7d, 0x0a, 0x13, 0x43, 0x6f, 0x64, 0x65, 0x47,
- 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c,
- 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08,
- 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65,
- 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x47, 0x65, 0x6e,
- 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x22, 0x2d, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
- 0x73, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52,
- 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12,
- 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x65, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
- 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x77, 0x0a, 0x0f, 0x45,
- 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14,
- 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72,
- 0x65, 0x61, 0x64, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79,
- 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73,
- 0x73, 0x61, 0x67, 0x65, 0x22, 0x22, 0x0a, 0x0c, 0x50, 0x50, 0x72, 0x6f, 0x66, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x09, 0x50, 0x50, 0x72, 0x6f,
- 0x66, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5d, 0x0a, 0x08, 0x46, 0x69, 0x6c,
- 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e,
- 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08,
- 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74,
- 0x79, 0x22, 0x50, 0x0a, 0x0a, 0x4d, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
- 0x16, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
- 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50,
- 0x6f, 0x72, 0x74, 0x22, 0x4f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18,
- 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d,
- 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
- 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x64, 0x61, 0x74, 0x65, 0x22, 0x47, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x74, 0x74, 0x70, 0x73,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x68, 0x74, 0x74, 0x70, 0x73, 0x12, 0x0e, 0x0a,
- 0x02, 0x6e, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6e, 0x6f, 0x22, 0x71, 0x0a,
- 0x09, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10,
- 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73,
- 0x71, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74,
- 0x22, 0x7e, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52,
- 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61,
- 0x69, 0x72, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x24, 0x0a, 0x04, 0x6d, 0x65,
- 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61,
- 0x22, 0xac, 0x01, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1c, 0x0a,
- 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74,
- 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x62,
- 0x6c, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x61,
- 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75,
- 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x1a, 0x0a,
- 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x06, 0x6c, 0x61, 0x62,
- 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x32,
- 0xf6, 0x25, 0x0a, 0x06, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x03, 0x52, 0x75,
- 0x6e, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x54,
- 0x61, 0x73, 0x6b, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73,
- 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x22,
- 0x0b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x3a, 0x01, 0x2a, 0x12,
- 0x5f, 0x0a, 0x0c, 0x52, 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12,
- 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69,
- 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1c,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
- 0x72, 0x75, 0x6e, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x28, 0x01, 0x30, 0x01,
- 0x12, 0x42, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x0d, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0x16, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75,
- 0x69, 0x74, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65,
- 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c,
- 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e,
- 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x3a, 0x01,
- 0x2a, 0x12, 0x62, 0x0a, 0x0f, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53,
- 0x75, 0x69, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65,
- 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x14, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70,
- 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x69, 0x6d, 0x70, 0x6f,
- 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x5b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74,
- 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54,
- 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
- 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75,
- 0x69, 0x74, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x70,
- 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d,
- 0x65, 0x7d, 0x12, 0x5a, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74,
- 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54,
- 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x20, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x1a, 0x1a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75,
- 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x5f,
- 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74,
- 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53,
- 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79,
- 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x2a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
- 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12,
- 0x7b, 0x0a, 0x12, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74,
- 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54,
- 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f,
- 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x22, 0x2a, 0x2f,
- 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f,
- 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x75, 0x0a, 0x0f,
- 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12,
- 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69,
- 0x74, 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22,
- 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x22, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
- 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53,
- 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65,
- 0x3a, 0x01, 0x2a, 0x12, 0x63, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75,
- 0x69, 0x74, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x59, 0x61, 0x6d, 0x6c,
- 0x44, 0x61, 0x74, 0x61, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x61,
- 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61,
- 0x6d, 0x65, 0x7d, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x12, 0x5d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74,
- 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x69, 0x72, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x25,
+ 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x09,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72,
+ 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72,
+ 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x22, 0x33, 0x0a, 0x0a, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x69, 0x6e, 0x64,
+ 0x73, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x69,
+ 0x6e, 0x64, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4b, 0x0a, 0x09, 0x53, 0x74, 0x6f, 0x72,
+ 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x65,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x42, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12,
+ 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x2e, 0x0a, 0x0a, 0x53, 0x69, 0x6d,
+ 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50,
+ 0x61, 0x69, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x20, 0x0a, 0x0a, 0x53, 0x69, 0x6d,
+ 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7d, 0x0a, 0x13, 0x43,
+ 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65,
+ 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09,
+ 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x22, 0x2d, 0x0a, 0x07, 0x53, 0x65,
+ 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63,
+ 0x72, 0x65, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x06, 0x53, 0x65, 0x63,
+ 0x72, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a,
+ 0x0b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22,
+ 0x77, 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64,
+ 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64,
+ 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18,
+ 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x22, 0x0a, 0x0c, 0x50, 0x50, 0x72, 0x6f,
+ 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x09,
+ 0x50, 0x50, 0x72, 0x6f, 0x66, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74,
+ 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5d, 0x0a,
+ 0x08, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74,
+ 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a,
+ 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65,
+ 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x07, 0x0a, 0x05,
+ 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xd4, 0x01, 0x0a, 0x0a, 0x4d, 0x6f, 0x63, 0x6b, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x06,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x72,
+ 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f,
+ 0x72, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4c,
+ 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
+ 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a,
+ 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74,
+ 0x6f, 0x72, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x22, 0x4f, 0x0a, 0x07,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x22, 0x47, 0x0a,
+ 0x0b, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04,
+ 0x68, 0x74, 0x74, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70,
+ 0x12, 0x14, 0x0a, 0x05, 0x68, 0x74, 0x74, 0x70, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x68, 0x74, 0x74, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x6e, 0x6f, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x02, 0x6e, 0x6f, 0x22, 0x71, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75,
+ 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x71, 0x6c,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6f,
+ 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66,
+ 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x7e, 0x0a, 0x0f, 0x44, 0x61, 0x74,
+ 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x04,
+ 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23,
+ 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x12, 0x24, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x4d,
+ 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0xac, 0x01, 0x0a, 0x08, 0x44, 0x61,
+ 0x74, 0x61, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61,
+ 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62,
+ 0x61, 0x73, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x61,
+ 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72,
+ 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x32, 0xf6, 0x25, 0x0a, 0x06, 0x52, 0x75, 0x6e,
+ 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x03, 0x52, 0x75, 0x6e, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x1a, 0x12, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x22, 0x0b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
+ 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x5f, 0x0a, 0x0c, 0x52, 0x75, 0x6e, 0x54,
+ 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x74, 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x69,
- 0x74, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69,
- 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65,
- 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x12, 0x77, 0x0a, 0x0b, 0x52, 0x75, 0x6e, 0x54, 0x65,
- 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
- 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
- 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61,
- 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30,
- 0x22, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73,
- 0x2f, 0x7b, 0x73, 0x75, 0x69, 0x74, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b,
- 0x74, 0x65, 0x73, 0x74, 0x63, 0x61, 0x73, 0x65, 0x7d, 0x2f, 0x72, 0x75, 0x6e, 0x3a, 0x01, 0x2a,
- 0x12, 0x56, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x12, 0x15, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x54, 0x65, 0x73, 0x74, 0x54,
- 0x61, 0x73, 0x6b, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73,
- 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22,
- 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75,
- 0x6e, 0x3a, 0x01, 0x2a, 0x28, 0x01, 0x30, 0x01, 0x12, 0x6a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54,
+ 0x69, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73,
+ 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22,
+ 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x2f, 0x73, 0x75, 0x69,
+ 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x28, 0x01, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x09, 0x47, 0x65, 0x74,
+ 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53,
+ 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f,
+ 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x5b, 0x0a,
+ 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65,
+ 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75,
+ 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22,
+ 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
+ 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x62, 0x0a, 0x0f, 0x49, 0x6d,
+ 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x17, 0x2e,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65,
+ 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x20, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75,
+ 0x69, 0x74, 0x65, 0x73, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x5b,
+ 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x19,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74,
+ 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x22, 0x1d, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75,
+ 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x5a, 0x0a, 0x0f, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x11,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74,
+ 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f,
+ 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x1a, 0x15, 0x2f,
+ 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e,
+ 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x5f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48,
+ 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x17, 0x2a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65,
+ 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x7b, 0x0a, 0x12, 0x44, 0x75, 0x70, 0x6c,
+ 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x1a,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74,
+ 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x35,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x22, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
+ 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75,
+ 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61,
+ 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x75, 0x0a, 0x0f, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x54,
+ 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65,
+ 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c,
+ 0x22, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73,
+ 0x2f, 0x7b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d,
+ 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x63, 0x0a, 0x10,
+ 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x59, 0x61, 0x6d, 0x6c,
+ 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75,
+ 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x59, 0x61, 0x6d, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x22, 0x82,
+ 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73,
+ 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x79, 0x61, 0x6d,
+ 0x6c, 0x12, 0x5d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73,
+ 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53,
+ 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x0d, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x69, 0x74, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69,
+ 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73,
+ 0x12, 0x77, 0x0a, 0x0b, 0x52, 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12,
+ 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73,
+ 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x22, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+ 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x69, 0x74, 0x65,
+ 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x73, 0x74, 0x63, 0x61, 0x73,
+ 0x65, 0x7d, 0x2f, 0x72, 0x75, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x56, 0x0a, 0x08, 0x42, 0x61, 0x74,
+ 0x63, 0x68, 0x52, 0x75, 0x6e, 0x12, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x42,
+ 0x61, 0x74, 0x63, 0x68, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x1a, 0x12, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
+ 0x31, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x3a, 0x01, 0x2a, 0x28, 0x01, 0x30,
+ 0x01, 0x12, 0x6a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65,
+ 0x12, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61,
+ 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75,
+ 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x69, 0x74, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73,
+ 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x73, 0x74, 0x63, 0x61, 0x73, 0x65, 0x7d, 0x12, 0x6c, 0x0a,
+ 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12,
+ 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73,
+ 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x75, 0x69, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x2b,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
+ 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d,
+ 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x78, 0x0a, 0x0e, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x57,
+ 0x69, 0x74, 0x68, 0x53, 0x75, 0x69, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x37, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x31, 0x1a, 0x2c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75,
+ 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d,
+ 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d,
+ 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54,
0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x1a, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43,
- 0x61, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x61, 0x70,
- 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x69,
- 0x74, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x73, 0x74, 0x63,
- 0x61, 0x73, 0x65, 0x7d, 0x12, 0x6c, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65,
- 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
- 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x75, 0x69, 0x74,
- 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f,
- 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f,
+ 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f,
+ 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f,
0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73,
- 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x3a,
- 0x01, 0x2a, 0x12, 0x78, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74,
- 0x43, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65,
- 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x75, 0x69, 0x74, 0x65, 0x1a,
- 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65,
- 0x70, 0x6c, 0x79, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x1a, 0x2c, 0x2f, 0x61, 0x70,
- 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x69,
- 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x64,
- 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0e,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x18,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65,
- 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x2f, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75,
- 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x69, 0x74, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73,
- 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x73, 0x74, 0x63, 0x61, 0x73, 0x65, 0x7d, 0x12, 0x90, 0x01,
- 0x0a, 0x11, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43,
- 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73,
- 0x74, 0x43, 0x61, 0x73, 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x12,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70,
- 0x6c, 0x79, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x22, 0x41, 0x2f, 0x61, 0x70, 0x69,
- 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73,
- 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x61, 0x73, 0x65, 0x4e, 0x61,
- 0x6d, 0x65, 0x7d, 0x2f, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a,
- 0x12, 0x8a, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43,
- 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73,
- 0x74, 0x43, 0x61, 0x73, 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x12,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70,
- 0x6c, 0x79, 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x22, 0x3e, 0x2f, 0x61, 0x70, 0x69,
- 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73,
- 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x61, 0x73, 0x65, 0x4e, 0x61,
- 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x5f, 0x0a,
- 0x10, 0x47, 0x65, 0x74, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x50, 0x49,
- 0x73, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53,
- 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x73, 0x22,
- 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
- 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x50, 0x49, 0x73, 0x12, 0x57,
- 0x0a, 0x10, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69, 0x74,
- 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74,
- 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f,
- 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17,
- 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72,
- 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x82, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x48,
- 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x57, 0x69,
- 0x74, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73,
- 0x65, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f,
- 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2e, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x69,
- 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x57, 0x69, 0x74,
- 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2f, 0x7b, 0x49, 0x44, 0x7d, 0x12, 0x6c, 0x0a, 0x12,
- 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61,
- 0x73, 0x65, 0x12, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74,
- 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x17, 0x2e, 0x73, 0x65,
+ 0x75, 0x69, 0x74, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x73,
+ 0x74, 0x63, 0x61, 0x73, 0x65, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x44, 0x75, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x44, 0x75,
+ 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+ 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x4c, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x46, 0x22, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69,
+ 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x69, 0x74, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x43, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x64, 0x75, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x8a, 0x01, 0x0a, 0x0e, 0x52, 0x65,
+ 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x44, 0x75,
+ 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+ 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x49, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x43, 0x22, 0x3e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69,
+ 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x69, 0x74, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x43, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x6e,
+ 0x61, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x5f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x75, 0x67,
+ 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x50, 0x49, 0x73, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54,
+ 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x73, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17,
+ 0x12, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73,
+ 0x74, 0x65, 0x64, 0x41, 0x50, 0x49, 0x73, 0x12, 0x57, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x48, 0x69,
+ 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65,
+ 0x73, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+ 0x76, 0x31, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73,
+ 0x12, 0x82, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54,
+ 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x12, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f,
+ 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f,
+ 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65,
+ 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x2f, 0x7b, 0x49, 0x44, 0x7d, 0x12, 0x6c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74,
+ 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x17, 0x2e, 0x73, 0x65,
0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74,
- 0x43, 0x61, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x61,
- 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73,
- 0x74, 0x43, 0x61, 0x73, 0x65, 0x2f, 0x7b, 0x49, 0x44, 0x7d, 0x12, 0x6a, 0x0a, 0x15, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43,
- 0x61, 0x73, 0x65, 0x12, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x12, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79,
- 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
- 0x31, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73,
- 0x65, 0x2f, 0x7b, 0x49, 0x44, 0x7d, 0x12, 0x83, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x41, 0x6c, 0x6c, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43,
- 0x61, 0x73, 0x65, 0x12, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x12, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79,
- 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x2a, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
- 0x31, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f,
- 0x7b, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65,
- 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x74, 0x0a, 0x15,
- 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x41, 0x6c, 0x6c, 0x48, 0x69,
- 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54,
- 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65,
- 0x73, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x22, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f,
- 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x69, 0x74, 0x65,
- 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d,
- 0x65, 0x7d, 0x12, 0x56, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x47, 0x65,
- 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
- 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x64, 0x65,
- 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x6d, 0x0a, 0x0c, 0x47, 0x65,
- 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2a, 0x82,
- 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x22, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63,
- 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x67, 0x65,
- 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x7c, 0x0a, 0x13, 0x48, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65,
- 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x47, 0x65,
- 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x22, 0x27, 0x2f, 0x61, 0x70,
+ 0x43, 0x61, 0x73, 0x65, 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69,
+ 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x22, 0x24, 0x82,
+ 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x68,
+ 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x2f, 0x7b,
+ 0x49, 0x44, 0x7d, 0x12, 0x6a, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x17, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73,
+ 0x74, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48,
+ 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x1e, 0x2a, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f,
+ 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x2f, 0x7b, 0x49, 0x44, 0x7d, 0x12,
+ 0x83, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x48, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x17, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x65, 0x73,
+ 0x74, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48,
+ 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x34, 0x2a, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f,
+ 0x72, 0x79, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e,
+ 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x73, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x74, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74,
+ 0x43, 0x61, 0x73, 0x65, 0x41, 0x6c, 0x6c, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65,
+ 0x1a, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x79, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x73, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x29, 0x22, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x69, 0x74,
+ 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63,
+ 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x56, 0x0a, 0x11, 0x4c,
+ 0x69, 0x73, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
+ 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a,
+ 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c,
+ 0x69, 0x73, 0x74, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70,
0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
- 0x6f, 0x72, 0x73, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x67, 0x65, 0x6e, 0x65,
- 0x72, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x4e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43,
- 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x1a, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e,
- 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x73, 0x12, 0x6c, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x76, 0x65,
- 0x72, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x25,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
- 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65,
- 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x4e, 0x0a, 0x0e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72,
- 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
- 0x50, 0x61, 0x69, 0x72, 0x73, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f,
- 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x48, 0x65,
- 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x0d, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x22, 0x19, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x75, 0x6e,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5e, 0x0a, 0x14, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x13,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x51, 0x75,
- 0x65, 0x72, 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69,
- 0x72, 0x73, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69,
- 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x51, 0x75, 0x65,
- 0x72, 0x79, 0x28, 0x01, 0x30, 0x01, 0x12, 0x56, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68,
- 0x65, 0x6d, 0x61, 0x12, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d,
- 0x70, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1e,
+ 0x6f, 0x72, 0x73, 0x12, 0x6d, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43,
+ 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x64,
+ 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x22, 0x1f,
+ 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65,
+ 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x3a,
+ 0x01, 0x2a, 0x12, 0x7c, 0x0a, 0x13, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x47, 0x65, 0x6e,
+ 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x32, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x2c, 0x22, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f,
+ 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x68, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a,
+ 0x12, 0x4e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65,
+ 0x72, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
+ 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65,
+ 0x4c, 0x69, 0x73, 0x74, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x61,
+ 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x73,
+ 0x12, 0x6c, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53,
+ 0x75, 0x69, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f,
+ 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22,
+ 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74,
+ 0x65, 0x72, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x4e,
+ 0x0a, 0x0e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
+ 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a,
+ 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x22, 0x1e,
0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
- 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x45,
- 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0d, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x17, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x06, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12,
- 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70,
- 0x6c, 0x79, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69,
- 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x68, 0x0a, 0x14, 0x44, 0x6f,
- 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x46, 0x69,
- 0x6c, 0x65, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74,
- 0x43, 0x61, 0x73, 0x65, 0x1a, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69,
- 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24,
- 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64,
- 0x46, 0x69, 0x6c, 0x65, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x62,
- 0x6f, 0x64, 0x79, 0x7d, 0x12, 0x50, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65,
- 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45,
- 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74,
- 0x6f, 0x72, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16,
- 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73,
- 0x2f, 0x6b, 0x69, 0x6e, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f,
- 0x72, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70,
- 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72,
- 0x65, 0x73, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69,
- 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22,
- 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x3a,
- 0x01, 0x2a, 0x12, 0x4d, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72,
- 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65,
- 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22,
- 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x1a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
- 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01,
- 0x2a, 0x12, 0x4a, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65,
- 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x1a,
- 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x1d,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x2a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
- 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x5d, 0x0a,
- 0x0b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x13, 0x2e, 0x73,
+ 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x4f,
+ 0x0a, 0x0e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79,
+ 0x12, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65,
+ 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50,
+ 0x61, 0x69, 0x72, 0x73, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61,
+ 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+ 0x5e, 0x0a, 0x14, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x51, 0x75, 0x65, 0x72,
+ 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+ 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x0d, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x22, 0x1e, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x75, 0x6e,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x28, 0x01, 0x30, 0x01, 0x12,
+ 0x56, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x13, 0x2e, 0x73,
0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72,
- 0x79, 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
- 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72,
- 0x65, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0x45, 0x0a, 0x0a,
- 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x72,
- 0x65, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63,
- 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63,
- 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x14, 0x22, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65,
- 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x54, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53,
- 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53,
- 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43,
- 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1e, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63,
- 0x72, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x57, 0x0a, 0x0c, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c,
- 0x74, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x1a, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f,
- 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x4e, 0x61, 0x6d, 0x65,
- 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x32, 0x0a, 0x05, 0x50, 0x50, 0x72, 0x6f, 0x66, 0x12, 0x14, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x50, 0x72, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x50, 0x72,
- 0x6f, 0x66, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x32, 0x6b, 0x0a, 0x0f, 0x52, 0x75, 0x6e, 0x6e,
- 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x03, 0x52,
- 0x75, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74,
- 0x53, 0x75, 0x69, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x14, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70,
- 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x72,
- 0x75, 0x6e, 0x3a, 0x01, 0x2a, 0x32, 0xd2, 0x02, 0x0a, 0x0e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x45,
- 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54,
- 0x68, 0x65, 0x6d, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45,
+ 0x79, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12,
+ 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73,
+ 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x45, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45,
+ 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f,
+ 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x43,
+ 0x0a, 0x06, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+ 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x16, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x61, 0x6d,
+ 0x70, 0x6c, 0x65, 0x12, 0x68, 0x0a, 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x10, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x10, 0x2e,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22,
+ 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
+ 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x2f, 0x7b, 0x72,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x62, 0x6f, 0x64, 0x79, 0x7d, 0x12, 0x50, 0x0a,
+ 0x0d, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x12, 0x0d,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x69, 0x6e, 0x64,
+ 0x73, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+ 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x6b, 0x69, 0x6e, 0x64, 0x73, 0x12,
+ 0x42, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x16, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f,
+ 0x72, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f,
+ 0x72, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72,
+ 0x65, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65,
+ 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
+ 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x4d, 0x0a, 0x0b, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a,
+ 0x1a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73,
+ 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x4a, 0x0a, 0x0b, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x2a,
+ 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f,
+ 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x5d, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79,
+ 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53,
+ 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70,
+ 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x69,
+ 0x66, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0x45, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72,
+ 0x65, 0x74, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70,
+ 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72,
+ 0x65, 0x74, 0x73, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70,
+ 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x0c,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x0f, 0x2f, 0x61, 0x70, 0x69,
+ 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x54,
+ 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x61,
+ 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x4e,
+ 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x57, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65,
+ 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65,
+ 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x1b, 0x1a, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x72,
+ 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x32, 0x0a,
+ 0x05, 0x50, 0x50, 0x72, 0x6f, 0x66, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x50, 0x50, 0x72, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x50, 0x72, 0x6f, 0x66, 0x44, 0x61, 0x74, 0x61, 0x22,
+ 0x00, 0x32, 0x6b, 0x0a, 0x0f, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e,
+ 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x03, 0x52, 0x75, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x57, 0x69,
+ 0x74, 0x68, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x20, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78,
+ 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x72, 0x75, 0x6e, 0x3a, 0x01, 0x2a, 0x32, 0xa5,
+ 0x02, 0x0a, 0x0b, 0x55, 0x49, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4c,
+ 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x1f, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74,
+ 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x6d, 0x65, 0x6e, 0x75, 0x73, 0x12, 0x62, 0x0a, 0x0b,
+ 0x47, 0x65, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4f, 0x66, 0x4a, 0x53, 0x12, 0x12, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a,
+ 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f,
+ 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+ 0x2f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6a, 0x73,
+ 0x12, 0x64, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4f, 0x66, 0x43, 0x53, 0x53,
+ 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x24, 0x12, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x74, 0x65,
+ 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d,
+ 0x65, 0x7d, 0x2f, 0x63, 0x73, 0x73, 0x32, 0xd2, 0x02, 0x0a, 0x0e, 0x54, 0x68, 0x65, 0x6d, 0x65,
+ 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x09, 0x47, 0x65, 0x74,
+ 0x54, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53,
+ 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x68, 0x65, 0x6d, 0x65,
+ 0x73, 0x12, 0x53, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x12, 0x2e,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d,
+ 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12,
+ 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x2f,
+ 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x4a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45,
0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69,
- 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10,
- 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73,
- 0x12, 0x53, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x12, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65,
- 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
- 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15,
- 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x2f, 0x7b,
- 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x4a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d,
- 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d,
- 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12,
- 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
- 0x73, 0x12, 0x57, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12,
- 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x19, 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69,
- 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x32, 0xed, 0x01, 0x0a, 0x04, 0x4d,
- 0x6f, 0x63, 0x6b, 0x12, 0x4b, 0x0a, 0x06, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, 0x2e,
+ 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12,
+ 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x73, 0x12, 0x57, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x19, 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x32, 0xed, 0x01, 0x0a, 0x04,
+ 0x4d, 0x6f, 0x63, 0x6b, 0x12, 0x4b, 0x0a, 0x06, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74,
+ 0x79, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+ 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x63, 0x6b, 0x2f, 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x3a, 0x01,
+ 0x2a, 0x12, 0x4b, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0d,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e,
0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
- 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
- 0x31, 0x2f, 0x6d, 0x6f, 0x63, 0x6b, 0x2f, 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x3a, 0x01, 0x2a,
- 0x12, 0x4b, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0d, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
- 0x31, 0x2f, 0x6d, 0x6f, 0x63, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a,
- 0x08, 0x4c, 0x6f, 0x67, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x18,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
- 0x6d, 0x6f, 0x63, 0x6b, 0x2f, 0x6c, 0x6f, 0x67, 0x30, 0x01, 0x32, 0x60, 0x0a, 0x0a, 0x44, 0x61,
- 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72,
- 0x79, 0x12, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51,
- 0x75, 0x65, 0x72, 0x79, 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61,
- 0x74, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1d, 0x82,
- 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64,
- 0x61, 0x74, 0x61, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x42, 0x2e, 0x5a, 0x2c,
- 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x75, 0x78,
- 0x73, 0x75, 0x72, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x33,
+ 0x67, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+ 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x63, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b,
+ 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22,
+ 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
+ 0x2f, 0x6d, 0x6f, 0x63, 0x6b, 0x2f, 0x6c, 0x6f, 0x67, 0x30, 0x01, 0x32, 0x60, 0x0a, 0x0a, 0x44,
+ 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x05, 0x51, 0x75, 0x65,
+ 0x72, 0x79, 0x12, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61,
+ 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44,
+ 0x61, 0x74, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1d,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
+ 0x64, 0x61, 0x74, 0x61, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x42, 0x2e, 0x5a,
+ 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x75,
+ 0x78, 0x73, 0x75, 0x72, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x74, 0x65, 0x73, 0x74, 0x69,
+ 0x6e, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -4368,243 +4544,252 @@ func file_pkg_server_server_proto_rawDescGZIP() []byte {
return file_pkg_server_server_proto_rawDescData
}
-var file_pkg_server_server_proto_msgTypes = make([]protoimpl.MessageInfo, 58)
+var file_pkg_server_server_proto_msgTypes = make([]protoimpl.MessageInfo, 60)
var file_pkg_server_server_proto_goTypes = []interface{}{
- (*Suites)(nil), // 0: server.Suites
- (*Items)(nil), // 1: server.Items
- (*HistorySuites)(nil), // 2: server.HistorySuites
- (*HistoryItems)(nil), // 3: server.HistoryItems
- (*HistoryCaseIdentity)(nil), // 4: server.HistoryCaseIdentity
- (*TestCaseIdentity)(nil), // 5: server.TestCaseIdentity
- (*TestSuiteSource)(nil), // 6: server.TestSuiteSource
- (*TestSuite)(nil), // 7: server.TestSuite
- (*TestSuiteWithCase)(nil), // 8: server.TestSuiteWithCase
- (*APISpec)(nil), // 9: server.APISpec
- (*Secure)(nil), // 10: server.Secure
- (*RPC)(nil), // 11: server.RPC
- (*TestSuiteIdentity)(nil), // 12: server.TestSuiteIdentity
- (*TestSuiteDuplicate)(nil), // 13: server.TestSuiteDuplicate
- (*TestCaseDuplicate)(nil), // 14: server.TestCaseDuplicate
- (*TestTask)(nil), // 15: server.TestTask
- (*BatchTestTask)(nil), // 16: server.BatchTestTask
- (*TestResult)(nil), // 17: server.TestResult
- (*HistoryTestResult)(nil), // 18: server.HistoryTestResult
- (*HelloReply)(nil), // 19: server.HelloReply
- (*YamlData)(nil), // 20: server.YamlData
- (*Suite)(nil), // 21: server.Suite
- (*TestCaseWithSuite)(nil), // 22: server.TestCaseWithSuite
- (*TestCases)(nil), // 23: server.TestCases
- (*TestCase)(nil), // 24: server.TestCase
- (*HistoryTestCase)(nil), // 25: server.HistoryTestCase
- (*HistoryTestCases)(nil), // 26: server.HistoryTestCases
- (*Request)(nil), // 27: server.Request
- (*Response)(nil), // 28: server.Response
- (*ConditionalVerify)(nil), // 29: server.ConditionalVerify
- (*TestCaseResult)(nil), // 30: server.TestCaseResult
- (*Pair)(nil), // 31: server.Pair
- (*Pairs)(nil), // 32: server.Pairs
- (*SimpleQuery)(nil), // 33: server.SimpleQuery
- (*Stores)(nil), // 34: server.Stores
- (*Store)(nil), // 35: server.Store
- (*StoreKinds)(nil), // 36: server.StoreKinds
- (*StoreKind)(nil), // 37: server.StoreKind
- (*CommonResult)(nil), // 38: server.CommonResult
- (*SimpleList)(nil), // 39: server.SimpleList
- (*SimpleName)(nil), // 40: server.SimpleName
- (*CodeGenerateRequest)(nil), // 41: server.CodeGenerateRequest
- (*Secrets)(nil), // 42: server.Secrets
- (*Secret)(nil), // 43: server.Secret
- (*ExtensionStatus)(nil), // 44: server.ExtensionStatus
- (*PProfRequest)(nil), // 45: server.PProfRequest
- (*PProfData)(nil), // 46: server.PProfData
- (*FileData)(nil), // 47: server.FileData
- (*Empty)(nil), // 48: server.Empty
- (*MockConfig)(nil), // 49: server.MockConfig
- (*Version)(nil), // 50: server.Version
- (*ProxyConfig)(nil), // 51: server.ProxyConfig
- (*DataQuery)(nil), // 52: server.DataQuery
- (*DataQueryResult)(nil), // 53: server.DataQueryResult
- (*DataMeta)(nil), // 54: server.DataMeta
- nil, // 55: server.Suites.DataEntry
- nil, // 56: server.HistorySuites.DataEntry
- nil, // 57: server.TestTask.EnvEntry
- (*timestamppb.Timestamp)(nil), // 58: google.protobuf.Timestamp
+ (*Menu)(nil), // 0: server.Menu
+ (*MenuList)(nil), // 1: server.MenuList
+ (*Suites)(nil), // 2: server.Suites
+ (*Items)(nil), // 3: server.Items
+ (*HistorySuites)(nil), // 4: server.HistorySuites
+ (*HistoryItems)(nil), // 5: server.HistoryItems
+ (*HistoryCaseIdentity)(nil), // 6: server.HistoryCaseIdentity
+ (*TestCaseIdentity)(nil), // 7: server.TestCaseIdentity
+ (*TestSuiteSource)(nil), // 8: server.TestSuiteSource
+ (*TestSuite)(nil), // 9: server.TestSuite
+ (*TestSuiteWithCase)(nil), // 10: server.TestSuiteWithCase
+ (*APISpec)(nil), // 11: server.APISpec
+ (*Secure)(nil), // 12: server.Secure
+ (*RPC)(nil), // 13: server.RPC
+ (*TestSuiteIdentity)(nil), // 14: server.TestSuiteIdentity
+ (*TestSuiteDuplicate)(nil), // 15: server.TestSuiteDuplicate
+ (*TestCaseDuplicate)(nil), // 16: server.TestCaseDuplicate
+ (*TestTask)(nil), // 17: server.TestTask
+ (*BatchTestTask)(nil), // 18: server.BatchTestTask
+ (*TestResult)(nil), // 19: server.TestResult
+ (*HistoryTestResult)(nil), // 20: server.HistoryTestResult
+ (*HelloReply)(nil), // 21: server.HelloReply
+ (*YamlData)(nil), // 22: server.YamlData
+ (*Suite)(nil), // 23: server.Suite
+ (*TestCaseWithSuite)(nil), // 24: server.TestCaseWithSuite
+ (*TestCases)(nil), // 25: server.TestCases
+ (*TestCase)(nil), // 26: server.TestCase
+ (*HistoryTestCase)(nil), // 27: server.HistoryTestCase
+ (*HistoryTestCases)(nil), // 28: server.HistoryTestCases
+ (*Request)(nil), // 29: server.Request
+ (*Response)(nil), // 30: server.Response
+ (*ConditionalVerify)(nil), // 31: server.ConditionalVerify
+ (*TestCaseResult)(nil), // 32: server.TestCaseResult
+ (*Pair)(nil), // 33: server.Pair
+ (*Pairs)(nil), // 34: server.Pairs
+ (*SimpleQuery)(nil), // 35: server.SimpleQuery
+ (*Stores)(nil), // 36: server.Stores
+ (*Store)(nil), // 37: server.Store
+ (*StoreKinds)(nil), // 38: server.StoreKinds
+ (*StoreKind)(nil), // 39: server.StoreKind
+ (*CommonResult)(nil), // 40: server.CommonResult
+ (*SimpleList)(nil), // 41: server.SimpleList
+ (*SimpleName)(nil), // 42: server.SimpleName
+ (*CodeGenerateRequest)(nil), // 43: server.CodeGenerateRequest
+ (*Secrets)(nil), // 44: server.Secrets
+ (*Secret)(nil), // 45: server.Secret
+ (*ExtensionStatus)(nil), // 46: server.ExtensionStatus
+ (*PProfRequest)(nil), // 47: server.PProfRequest
+ (*PProfData)(nil), // 48: server.PProfData
+ (*FileData)(nil), // 49: server.FileData
+ (*Empty)(nil), // 50: server.Empty
+ (*MockConfig)(nil), // 51: server.MockConfig
+ (*Version)(nil), // 52: server.Version
+ (*ProxyConfig)(nil), // 53: server.ProxyConfig
+ (*DataQuery)(nil), // 54: server.DataQuery
+ (*DataQueryResult)(nil), // 55: server.DataQueryResult
+ (*DataMeta)(nil), // 56: server.DataMeta
+ nil, // 57: server.Suites.DataEntry
+ nil, // 58: server.HistorySuites.DataEntry
+ nil, // 59: server.TestTask.EnvEntry
+ (*timestamppb.Timestamp)(nil), // 60: google.protobuf.Timestamp
}
var file_pkg_server_server_proto_depIdxs = []int32{
- 55, // 0: server.Suites.data:type_name -> server.Suites.DataEntry
- 56, // 1: server.HistorySuites.data:type_name -> server.HistorySuites.DataEntry
- 4, // 2: server.HistoryItems.data:type_name -> server.HistoryCaseIdentity
- 31, // 3: server.TestCaseIdentity.parameters:type_name -> server.Pair
- 31, // 4: server.TestSuite.param:type_name -> server.Pair
- 9, // 5: server.TestSuite.spec:type_name -> server.APISpec
- 51, // 6: server.TestSuite.proxy:type_name -> server.ProxyConfig
- 7, // 7: server.TestSuiteWithCase.suite:type_name -> server.TestSuite
- 24, // 8: server.TestSuiteWithCase.case:type_name -> server.TestCase
- 11, // 9: server.APISpec.rpc:type_name -> server.RPC
- 10, // 10: server.APISpec.secure:type_name -> server.Secure
- 57, // 11: server.TestTask.env:type_name -> server.TestTask.EnvEntry
- 31, // 12: server.TestTask.parameters:type_name -> server.Pair
- 31, // 13: server.BatchTestTask.parameters:type_name -> server.Pair
- 30, // 14: server.TestResult.testCaseResult:type_name -> server.TestCaseResult
- 30, // 15: server.HistoryTestResult.testCaseResult:type_name -> server.TestCaseResult
- 25, // 16: server.HistoryTestResult.data:type_name -> server.HistoryTestCase
- 58, // 17: server.HistoryTestResult.createTime:type_name -> google.protobuf.Timestamp
- 24, // 18: server.Suite.items:type_name -> server.TestCase
- 24, // 19: server.TestCaseWithSuite.data:type_name -> server.TestCase
- 24, // 20: server.TestCases.data:type_name -> server.TestCase
- 27, // 21: server.TestCase.request:type_name -> server.Request
- 28, // 22: server.TestCase.response:type_name -> server.Response
- 58, // 23: server.HistoryTestCase.createTime:type_name -> google.protobuf.Timestamp
- 31, // 24: server.HistoryTestCase.suiteParam:type_name -> server.Pair
- 9, // 25: server.HistoryTestCase.suiteSpec:type_name -> server.APISpec
- 27, // 26: server.HistoryTestCase.request:type_name -> server.Request
- 28, // 27: server.HistoryTestCase.response:type_name -> server.Response
- 31, // 28: server.HistoryTestCase.historyHeader:type_name -> server.Pair
- 25, // 29: server.HistoryTestCases.data:type_name -> server.HistoryTestCase
- 31, // 30: server.Request.header:type_name -> server.Pair
- 31, // 31: server.Request.query:type_name -> server.Pair
- 31, // 32: server.Request.cookie:type_name -> server.Pair
- 31, // 33: server.Request.form:type_name -> server.Pair
- 31, // 34: server.Response.header:type_name -> server.Pair
- 31, // 35: server.Response.bodyFieldsExpect:type_name -> server.Pair
- 29, // 36: server.Response.ConditionalVerify:type_name -> server.ConditionalVerify
- 31, // 37: server.TestCaseResult.header:type_name -> server.Pair
- 31, // 38: server.Pairs.data:type_name -> server.Pair
- 35, // 39: server.Stores.data:type_name -> server.Store
- 31, // 40: server.Store.properties:type_name -> server.Pair
- 37, // 41: server.Store.kind:type_name -> server.StoreKind
- 37, // 42: server.StoreKinds.data:type_name -> server.StoreKind
- 31, // 43: server.SimpleList.data:type_name -> server.Pair
- 43, // 44: server.Secrets.data:type_name -> server.Secret
- 31, // 45: server.DataQueryResult.data:type_name -> server.Pair
- 32, // 46: server.DataQueryResult.items:type_name -> server.Pairs
- 54, // 47: server.DataQueryResult.meta:type_name -> server.DataMeta
- 31, // 48: server.DataMeta.labels:type_name -> server.Pair
- 1, // 49: server.Suites.DataEntry.value:type_name -> server.Items
- 3, // 50: server.HistorySuites.DataEntry.value:type_name -> server.HistoryItems
- 15, // 51: server.Runner.Run:input_type -> server.TestTask
- 12, // 52: server.Runner.RunTestSuite:input_type -> server.TestSuiteIdentity
- 48, // 53: server.Runner.GetSuites:input_type -> server.Empty
- 12, // 54: server.Runner.CreateTestSuite:input_type -> server.TestSuiteIdentity
- 6, // 55: server.Runner.ImportTestSuite:input_type -> server.TestSuiteSource
- 12, // 56: server.Runner.GetTestSuite:input_type -> server.TestSuiteIdentity
- 7, // 57: server.Runner.UpdateTestSuite:input_type -> server.TestSuite
- 12, // 58: server.Runner.DeleteTestSuite:input_type -> server.TestSuiteIdentity
- 13, // 59: server.Runner.DuplicateTestSuite:input_type -> server.TestSuiteDuplicate
- 13, // 60: server.Runner.RenameTestSuite:input_type -> server.TestSuiteDuplicate
- 12, // 61: server.Runner.GetTestSuiteYaml:input_type -> server.TestSuiteIdentity
- 12, // 62: server.Runner.ListTestCase:input_type -> server.TestSuiteIdentity
- 5, // 63: server.Runner.RunTestCase:input_type -> server.TestCaseIdentity
- 16, // 64: server.Runner.BatchRun:input_type -> server.BatchTestTask
- 5, // 65: server.Runner.GetTestCase:input_type -> server.TestCaseIdentity
- 22, // 66: server.Runner.CreateTestCase:input_type -> server.TestCaseWithSuite
- 22, // 67: server.Runner.UpdateTestCase:input_type -> server.TestCaseWithSuite
- 5, // 68: server.Runner.DeleteTestCase:input_type -> server.TestCaseIdentity
- 14, // 69: server.Runner.DuplicateTestCase:input_type -> server.TestCaseDuplicate
- 14, // 70: server.Runner.RenameTestCase:input_type -> server.TestCaseDuplicate
- 12, // 71: server.Runner.GetSuggestedAPIs:input_type -> server.TestSuiteIdentity
- 48, // 72: server.Runner.GetHistorySuites:input_type -> server.Empty
- 25, // 73: server.Runner.GetHistoryTestCaseWithResult:input_type -> server.HistoryTestCase
- 25, // 74: server.Runner.GetHistoryTestCase:input_type -> server.HistoryTestCase
- 25, // 75: server.Runner.DeleteHistoryTestCase:input_type -> server.HistoryTestCase
- 25, // 76: server.Runner.DeleteAllHistoryTestCase:input_type -> server.HistoryTestCase
- 24, // 77: server.Runner.GetTestCaseAllHistory:input_type -> server.TestCase
- 48, // 78: server.Runner.ListCodeGenerator:input_type -> server.Empty
- 41, // 79: server.Runner.GenerateCode:input_type -> server.CodeGenerateRequest
- 41, // 80: server.Runner.HistoryGenerateCode:input_type -> server.CodeGenerateRequest
- 48, // 81: server.Runner.ListConverter:input_type -> server.Empty
- 41, // 82: server.Runner.ConvertTestSuite:input_type -> server.CodeGenerateRequest
- 48, // 83: server.Runner.PopularHeaders:input_type -> server.Empty
- 33, // 84: server.Runner.FunctionsQuery:input_type -> server.SimpleQuery
- 33, // 85: server.Runner.FunctionsQueryStream:input_type -> server.SimpleQuery
- 33, // 86: server.Runner.GetSchema:input_type -> server.SimpleQuery
- 48, // 87: server.Runner.GetVersion:input_type -> server.Empty
- 48, // 88: server.Runner.Sample:input_type -> server.Empty
- 24, // 89: server.Runner.DownloadResponseFile:input_type -> server.TestCase
- 48, // 90: server.Runner.GetStoreKinds:input_type -> server.Empty
- 48, // 91: server.Runner.GetStores:input_type -> server.Empty
- 35, // 92: server.Runner.CreateStore:input_type -> server.Store
- 35, // 93: server.Runner.UpdateStore:input_type -> server.Store
- 35, // 94: server.Runner.DeleteStore:input_type -> server.Store
- 33, // 95: server.Runner.VerifyStore:input_type -> server.SimpleQuery
- 48, // 96: server.Runner.GetSecrets:input_type -> server.Empty
- 43, // 97: server.Runner.CreateSecret:input_type -> server.Secret
- 43, // 98: server.Runner.DeleteSecret:input_type -> server.Secret
- 43, // 99: server.Runner.UpdateSecret:input_type -> server.Secret
- 45, // 100: server.Runner.PProf:input_type -> server.PProfRequest
- 8, // 101: server.RunnerExtension.Run:input_type -> server.TestSuiteWithCase
- 48, // 102: server.ThemeExtension.GetThemes:input_type -> server.Empty
- 40, // 103: server.ThemeExtension.GetTheme:input_type -> server.SimpleName
- 48, // 104: server.ThemeExtension.GetBindings:input_type -> server.Empty
- 40, // 105: server.ThemeExtension.GetBinding:input_type -> server.SimpleName
- 49, // 106: server.Mock.Reload:input_type -> server.MockConfig
- 48, // 107: server.Mock.GetConfig:input_type -> server.Empty
- 48, // 108: server.Mock.LogWatch:input_type -> server.Empty
- 52, // 109: server.DataServer.Query:input_type -> server.DataQuery
- 17, // 110: server.Runner.Run:output_type -> server.TestResult
- 17, // 111: server.Runner.RunTestSuite:output_type -> server.TestResult
- 0, // 112: server.Runner.GetSuites:output_type -> server.Suites
- 19, // 113: server.Runner.CreateTestSuite:output_type -> server.HelloReply
- 38, // 114: server.Runner.ImportTestSuite:output_type -> server.CommonResult
- 7, // 115: server.Runner.GetTestSuite:output_type -> server.TestSuite
- 19, // 116: server.Runner.UpdateTestSuite:output_type -> server.HelloReply
- 19, // 117: server.Runner.DeleteTestSuite:output_type -> server.HelloReply
- 19, // 118: server.Runner.DuplicateTestSuite:output_type -> server.HelloReply
- 19, // 119: server.Runner.RenameTestSuite:output_type -> server.HelloReply
- 20, // 120: server.Runner.GetTestSuiteYaml:output_type -> server.YamlData
- 21, // 121: server.Runner.ListTestCase:output_type -> server.Suite
- 30, // 122: server.Runner.RunTestCase:output_type -> server.TestCaseResult
- 17, // 123: server.Runner.BatchRun:output_type -> server.TestResult
- 24, // 124: server.Runner.GetTestCase:output_type -> server.TestCase
- 19, // 125: server.Runner.CreateTestCase:output_type -> server.HelloReply
- 19, // 126: server.Runner.UpdateTestCase:output_type -> server.HelloReply
- 19, // 127: server.Runner.DeleteTestCase:output_type -> server.HelloReply
- 19, // 128: server.Runner.DuplicateTestCase:output_type -> server.HelloReply
- 19, // 129: server.Runner.RenameTestCase:output_type -> server.HelloReply
- 23, // 130: server.Runner.GetSuggestedAPIs:output_type -> server.TestCases
- 2, // 131: server.Runner.GetHistorySuites:output_type -> server.HistorySuites
- 18, // 132: server.Runner.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult
- 25, // 133: server.Runner.GetHistoryTestCase:output_type -> server.HistoryTestCase
- 19, // 134: server.Runner.DeleteHistoryTestCase:output_type -> server.HelloReply
- 19, // 135: server.Runner.DeleteAllHistoryTestCase:output_type -> server.HelloReply
- 26, // 136: server.Runner.GetTestCaseAllHistory:output_type -> server.HistoryTestCases
- 39, // 137: server.Runner.ListCodeGenerator:output_type -> server.SimpleList
- 38, // 138: server.Runner.GenerateCode:output_type -> server.CommonResult
- 38, // 139: server.Runner.HistoryGenerateCode:output_type -> server.CommonResult
- 39, // 140: server.Runner.ListConverter:output_type -> server.SimpleList
- 38, // 141: server.Runner.ConvertTestSuite:output_type -> server.CommonResult
- 32, // 142: server.Runner.PopularHeaders:output_type -> server.Pairs
- 32, // 143: server.Runner.FunctionsQuery:output_type -> server.Pairs
- 32, // 144: server.Runner.FunctionsQueryStream:output_type -> server.Pairs
- 38, // 145: server.Runner.GetSchema:output_type -> server.CommonResult
- 50, // 146: server.Runner.GetVersion:output_type -> server.Version
- 19, // 147: server.Runner.Sample:output_type -> server.HelloReply
- 47, // 148: server.Runner.DownloadResponseFile:output_type -> server.FileData
- 36, // 149: server.Runner.GetStoreKinds:output_type -> server.StoreKinds
- 34, // 150: server.Runner.GetStores:output_type -> server.Stores
- 35, // 151: server.Runner.CreateStore:output_type -> server.Store
- 35, // 152: server.Runner.UpdateStore:output_type -> server.Store
- 35, // 153: server.Runner.DeleteStore:output_type -> server.Store
- 44, // 154: server.Runner.VerifyStore:output_type -> server.ExtensionStatus
- 42, // 155: server.Runner.GetSecrets:output_type -> server.Secrets
- 38, // 156: server.Runner.CreateSecret:output_type -> server.CommonResult
- 38, // 157: server.Runner.DeleteSecret:output_type -> server.CommonResult
- 38, // 158: server.Runner.UpdateSecret:output_type -> server.CommonResult
- 46, // 159: server.Runner.PProf:output_type -> server.PProfData
- 38, // 160: server.RunnerExtension.Run:output_type -> server.CommonResult
- 39, // 161: server.ThemeExtension.GetThemes:output_type -> server.SimpleList
- 38, // 162: server.ThemeExtension.GetTheme:output_type -> server.CommonResult
- 39, // 163: server.ThemeExtension.GetBindings:output_type -> server.SimpleList
- 38, // 164: server.ThemeExtension.GetBinding:output_type -> server.CommonResult
- 48, // 165: server.Mock.Reload:output_type -> server.Empty
- 49, // 166: server.Mock.GetConfig:output_type -> server.MockConfig
- 38, // 167: server.Mock.LogWatch:output_type -> server.CommonResult
- 53, // 168: server.DataServer.Query:output_type -> server.DataQueryResult
- 110, // [110:169] is the sub-list for method output_type
- 51, // [51:110] is the sub-list for method input_type
- 51, // [51:51] is the sub-list for extension type_name
- 51, // [51:51] is the sub-list for extension extendee
- 0, // [0:51] is the sub-list for field type_name
+ 0, // 0: server.MenuList.data:type_name -> server.Menu
+ 57, // 1: server.Suites.data:type_name -> server.Suites.DataEntry
+ 58, // 2: server.HistorySuites.data:type_name -> server.HistorySuites.DataEntry
+ 6, // 3: server.HistoryItems.data:type_name -> server.HistoryCaseIdentity
+ 33, // 4: server.TestCaseIdentity.parameters:type_name -> server.Pair
+ 33, // 5: server.TestSuite.param:type_name -> server.Pair
+ 11, // 6: server.TestSuite.spec:type_name -> server.APISpec
+ 53, // 7: server.TestSuite.proxy:type_name -> server.ProxyConfig
+ 9, // 8: server.TestSuiteWithCase.suite:type_name -> server.TestSuite
+ 26, // 9: server.TestSuiteWithCase.case:type_name -> server.TestCase
+ 13, // 10: server.APISpec.rpc:type_name -> server.RPC
+ 12, // 11: server.APISpec.secure:type_name -> server.Secure
+ 59, // 12: server.TestTask.env:type_name -> server.TestTask.EnvEntry
+ 33, // 13: server.TestTask.parameters:type_name -> server.Pair
+ 33, // 14: server.BatchTestTask.parameters:type_name -> server.Pair
+ 32, // 15: server.TestResult.testCaseResult:type_name -> server.TestCaseResult
+ 32, // 16: server.HistoryTestResult.testCaseResult:type_name -> server.TestCaseResult
+ 27, // 17: server.HistoryTestResult.data:type_name -> server.HistoryTestCase
+ 60, // 18: server.HistoryTestResult.createTime:type_name -> google.protobuf.Timestamp
+ 26, // 19: server.Suite.items:type_name -> server.TestCase
+ 26, // 20: server.TestCaseWithSuite.data:type_name -> server.TestCase
+ 26, // 21: server.TestCases.data:type_name -> server.TestCase
+ 29, // 22: server.TestCase.request:type_name -> server.Request
+ 30, // 23: server.TestCase.response:type_name -> server.Response
+ 60, // 24: server.HistoryTestCase.createTime:type_name -> google.protobuf.Timestamp
+ 33, // 25: server.HistoryTestCase.suiteParam:type_name -> server.Pair
+ 11, // 26: server.HistoryTestCase.suiteSpec:type_name -> server.APISpec
+ 29, // 27: server.HistoryTestCase.request:type_name -> server.Request
+ 30, // 28: server.HistoryTestCase.response:type_name -> server.Response
+ 33, // 29: server.HistoryTestCase.historyHeader:type_name -> server.Pair
+ 27, // 30: server.HistoryTestCases.data:type_name -> server.HistoryTestCase
+ 33, // 31: server.Request.header:type_name -> server.Pair
+ 33, // 32: server.Request.query:type_name -> server.Pair
+ 33, // 33: server.Request.cookie:type_name -> server.Pair
+ 33, // 34: server.Request.form:type_name -> server.Pair
+ 33, // 35: server.Response.header:type_name -> server.Pair
+ 33, // 36: server.Response.bodyFieldsExpect:type_name -> server.Pair
+ 31, // 37: server.Response.ConditionalVerify:type_name -> server.ConditionalVerify
+ 33, // 38: server.TestCaseResult.header:type_name -> server.Pair
+ 33, // 39: server.Pairs.data:type_name -> server.Pair
+ 37, // 40: server.Stores.data:type_name -> server.Store
+ 33, // 41: server.Store.properties:type_name -> server.Pair
+ 39, // 42: server.Store.kind:type_name -> server.StoreKind
+ 39, // 43: server.StoreKinds.data:type_name -> server.StoreKind
+ 33, // 44: server.SimpleList.data:type_name -> server.Pair
+ 45, // 45: server.Secrets.data:type_name -> server.Secret
+ 33, // 46: server.DataQueryResult.data:type_name -> server.Pair
+ 34, // 47: server.DataQueryResult.items:type_name -> server.Pairs
+ 56, // 48: server.DataQueryResult.meta:type_name -> server.DataMeta
+ 33, // 49: server.DataMeta.labels:type_name -> server.Pair
+ 3, // 50: server.Suites.DataEntry.value:type_name -> server.Items
+ 5, // 51: server.HistorySuites.DataEntry.value:type_name -> server.HistoryItems
+ 17, // 52: server.Runner.Run:input_type -> server.TestTask
+ 14, // 53: server.Runner.RunTestSuite:input_type -> server.TestSuiteIdentity
+ 50, // 54: server.Runner.GetSuites:input_type -> server.Empty
+ 14, // 55: server.Runner.CreateTestSuite:input_type -> server.TestSuiteIdentity
+ 8, // 56: server.Runner.ImportTestSuite:input_type -> server.TestSuiteSource
+ 14, // 57: server.Runner.GetTestSuite:input_type -> server.TestSuiteIdentity
+ 9, // 58: server.Runner.UpdateTestSuite:input_type -> server.TestSuite
+ 14, // 59: server.Runner.DeleteTestSuite:input_type -> server.TestSuiteIdentity
+ 15, // 60: server.Runner.DuplicateTestSuite:input_type -> server.TestSuiteDuplicate
+ 15, // 61: server.Runner.RenameTestSuite:input_type -> server.TestSuiteDuplicate
+ 14, // 62: server.Runner.GetTestSuiteYaml:input_type -> server.TestSuiteIdentity
+ 14, // 63: server.Runner.ListTestCase:input_type -> server.TestSuiteIdentity
+ 7, // 64: server.Runner.RunTestCase:input_type -> server.TestCaseIdentity
+ 18, // 65: server.Runner.BatchRun:input_type -> server.BatchTestTask
+ 7, // 66: server.Runner.GetTestCase:input_type -> server.TestCaseIdentity
+ 24, // 67: server.Runner.CreateTestCase:input_type -> server.TestCaseWithSuite
+ 24, // 68: server.Runner.UpdateTestCase:input_type -> server.TestCaseWithSuite
+ 7, // 69: server.Runner.DeleteTestCase:input_type -> server.TestCaseIdentity
+ 16, // 70: server.Runner.DuplicateTestCase:input_type -> server.TestCaseDuplicate
+ 16, // 71: server.Runner.RenameTestCase:input_type -> server.TestCaseDuplicate
+ 14, // 72: server.Runner.GetSuggestedAPIs:input_type -> server.TestSuiteIdentity
+ 50, // 73: server.Runner.GetHistorySuites:input_type -> server.Empty
+ 27, // 74: server.Runner.GetHistoryTestCaseWithResult:input_type -> server.HistoryTestCase
+ 27, // 75: server.Runner.GetHistoryTestCase:input_type -> server.HistoryTestCase
+ 27, // 76: server.Runner.DeleteHistoryTestCase:input_type -> server.HistoryTestCase
+ 27, // 77: server.Runner.DeleteAllHistoryTestCase:input_type -> server.HistoryTestCase
+ 26, // 78: server.Runner.GetTestCaseAllHistory:input_type -> server.TestCase
+ 50, // 79: server.Runner.ListCodeGenerator:input_type -> server.Empty
+ 43, // 80: server.Runner.GenerateCode:input_type -> server.CodeGenerateRequest
+ 43, // 81: server.Runner.HistoryGenerateCode:input_type -> server.CodeGenerateRequest
+ 50, // 82: server.Runner.ListConverter:input_type -> server.Empty
+ 43, // 83: server.Runner.ConvertTestSuite:input_type -> server.CodeGenerateRequest
+ 50, // 84: server.Runner.PopularHeaders:input_type -> server.Empty
+ 35, // 85: server.Runner.FunctionsQuery:input_type -> server.SimpleQuery
+ 35, // 86: server.Runner.FunctionsQueryStream:input_type -> server.SimpleQuery
+ 35, // 87: server.Runner.GetSchema:input_type -> server.SimpleQuery
+ 50, // 88: server.Runner.GetVersion:input_type -> server.Empty
+ 50, // 89: server.Runner.Sample:input_type -> server.Empty
+ 26, // 90: server.Runner.DownloadResponseFile:input_type -> server.TestCase
+ 50, // 91: server.Runner.GetStoreKinds:input_type -> server.Empty
+ 50, // 92: server.Runner.GetStores:input_type -> server.Empty
+ 37, // 93: server.Runner.CreateStore:input_type -> server.Store
+ 37, // 94: server.Runner.UpdateStore:input_type -> server.Store
+ 37, // 95: server.Runner.DeleteStore:input_type -> server.Store
+ 35, // 96: server.Runner.VerifyStore:input_type -> server.SimpleQuery
+ 50, // 97: server.Runner.GetSecrets:input_type -> server.Empty
+ 45, // 98: server.Runner.CreateSecret:input_type -> server.Secret
+ 45, // 99: server.Runner.DeleteSecret:input_type -> server.Secret
+ 45, // 100: server.Runner.UpdateSecret:input_type -> server.Secret
+ 47, // 101: server.Runner.PProf:input_type -> server.PProfRequest
+ 10, // 102: server.RunnerExtension.Run:input_type -> server.TestSuiteWithCase
+ 50, // 103: server.UIExtension.GetMenus:input_type -> server.Empty
+ 42, // 104: server.UIExtension.GetPageOfJS:input_type -> server.SimpleName
+ 42, // 105: server.UIExtension.GetPageOfCSS:input_type -> server.SimpleName
+ 50, // 106: server.ThemeExtension.GetThemes:input_type -> server.Empty
+ 42, // 107: server.ThemeExtension.GetTheme:input_type -> server.SimpleName
+ 50, // 108: server.ThemeExtension.GetBindings:input_type -> server.Empty
+ 42, // 109: server.ThemeExtension.GetBinding:input_type -> server.SimpleName
+ 51, // 110: server.Mock.Reload:input_type -> server.MockConfig
+ 50, // 111: server.Mock.GetConfig:input_type -> server.Empty
+ 50, // 112: server.Mock.LogWatch:input_type -> server.Empty
+ 54, // 113: server.DataServer.Query:input_type -> server.DataQuery
+ 19, // 114: server.Runner.Run:output_type -> server.TestResult
+ 19, // 115: server.Runner.RunTestSuite:output_type -> server.TestResult
+ 2, // 116: server.Runner.GetSuites:output_type -> server.Suites
+ 21, // 117: server.Runner.CreateTestSuite:output_type -> server.HelloReply
+ 40, // 118: server.Runner.ImportTestSuite:output_type -> server.CommonResult
+ 9, // 119: server.Runner.GetTestSuite:output_type -> server.TestSuite
+ 21, // 120: server.Runner.UpdateTestSuite:output_type -> server.HelloReply
+ 21, // 121: server.Runner.DeleteTestSuite:output_type -> server.HelloReply
+ 21, // 122: server.Runner.DuplicateTestSuite:output_type -> server.HelloReply
+ 21, // 123: server.Runner.RenameTestSuite:output_type -> server.HelloReply
+ 22, // 124: server.Runner.GetTestSuiteYaml:output_type -> server.YamlData
+ 23, // 125: server.Runner.ListTestCase:output_type -> server.Suite
+ 32, // 126: server.Runner.RunTestCase:output_type -> server.TestCaseResult
+ 19, // 127: server.Runner.BatchRun:output_type -> server.TestResult
+ 26, // 128: server.Runner.GetTestCase:output_type -> server.TestCase
+ 21, // 129: server.Runner.CreateTestCase:output_type -> server.HelloReply
+ 21, // 130: server.Runner.UpdateTestCase:output_type -> server.HelloReply
+ 21, // 131: server.Runner.DeleteTestCase:output_type -> server.HelloReply
+ 21, // 132: server.Runner.DuplicateTestCase:output_type -> server.HelloReply
+ 21, // 133: server.Runner.RenameTestCase:output_type -> server.HelloReply
+ 25, // 134: server.Runner.GetSuggestedAPIs:output_type -> server.TestCases
+ 4, // 135: server.Runner.GetHistorySuites:output_type -> server.HistorySuites
+ 20, // 136: server.Runner.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult
+ 27, // 137: server.Runner.GetHistoryTestCase:output_type -> server.HistoryTestCase
+ 21, // 138: server.Runner.DeleteHistoryTestCase:output_type -> server.HelloReply
+ 21, // 139: server.Runner.DeleteAllHistoryTestCase:output_type -> server.HelloReply
+ 28, // 140: server.Runner.GetTestCaseAllHistory:output_type -> server.HistoryTestCases
+ 41, // 141: server.Runner.ListCodeGenerator:output_type -> server.SimpleList
+ 40, // 142: server.Runner.GenerateCode:output_type -> server.CommonResult
+ 40, // 143: server.Runner.HistoryGenerateCode:output_type -> server.CommonResult
+ 41, // 144: server.Runner.ListConverter:output_type -> server.SimpleList
+ 40, // 145: server.Runner.ConvertTestSuite:output_type -> server.CommonResult
+ 34, // 146: server.Runner.PopularHeaders:output_type -> server.Pairs
+ 34, // 147: server.Runner.FunctionsQuery:output_type -> server.Pairs
+ 34, // 148: server.Runner.FunctionsQueryStream:output_type -> server.Pairs
+ 40, // 149: server.Runner.GetSchema:output_type -> server.CommonResult
+ 52, // 150: server.Runner.GetVersion:output_type -> server.Version
+ 21, // 151: server.Runner.Sample:output_type -> server.HelloReply
+ 49, // 152: server.Runner.DownloadResponseFile:output_type -> server.FileData
+ 38, // 153: server.Runner.GetStoreKinds:output_type -> server.StoreKinds
+ 36, // 154: server.Runner.GetStores:output_type -> server.Stores
+ 37, // 155: server.Runner.CreateStore:output_type -> server.Store
+ 37, // 156: server.Runner.UpdateStore:output_type -> server.Store
+ 37, // 157: server.Runner.DeleteStore:output_type -> server.Store
+ 46, // 158: server.Runner.VerifyStore:output_type -> server.ExtensionStatus
+ 44, // 159: server.Runner.GetSecrets:output_type -> server.Secrets
+ 40, // 160: server.Runner.CreateSecret:output_type -> server.CommonResult
+ 40, // 161: server.Runner.DeleteSecret:output_type -> server.CommonResult
+ 40, // 162: server.Runner.UpdateSecret:output_type -> server.CommonResult
+ 48, // 163: server.Runner.PProf:output_type -> server.PProfData
+ 40, // 164: server.RunnerExtension.Run:output_type -> server.CommonResult
+ 1, // 165: server.UIExtension.GetMenus:output_type -> server.MenuList
+ 40, // 166: server.UIExtension.GetPageOfJS:output_type -> server.CommonResult
+ 40, // 167: server.UIExtension.GetPageOfCSS:output_type -> server.CommonResult
+ 41, // 168: server.ThemeExtension.GetThemes:output_type -> server.SimpleList
+ 40, // 169: server.ThemeExtension.GetTheme:output_type -> server.CommonResult
+ 41, // 170: server.ThemeExtension.GetBindings:output_type -> server.SimpleList
+ 40, // 171: server.ThemeExtension.GetBinding:output_type -> server.CommonResult
+ 50, // 172: server.Mock.Reload:output_type -> server.Empty
+ 51, // 173: server.Mock.GetConfig:output_type -> server.MockConfig
+ 40, // 174: server.Mock.LogWatch:output_type -> server.CommonResult
+ 55, // 175: server.DataServer.Query:output_type -> server.DataQueryResult
+ 114, // [114:176] is the sub-list for method output_type
+ 52, // [52:114] is the sub-list for method input_type
+ 52, // [52:52] is the sub-list for extension type_name
+ 52, // [52:52] is the sub-list for extension extendee
+ 0, // [0:52] is the sub-list for field type_name
}
func init() { file_pkg_server_server_proto_init() }
@@ -4614,7 +4799,7 @@ func file_pkg_server_server_proto_init() {
}
if !protoimpl.UnsafeEnabled {
file_pkg_server_server_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Suites); i {
+ switch v := v.(*Menu); i {
case 0:
return &v.state
case 1:
@@ -4626,7 +4811,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Items); i {
+ switch v := v.(*MenuList); i {
case 0:
return &v.state
case 1:
@@ -4638,7 +4823,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HistorySuites); i {
+ switch v := v.(*Suites); i {
case 0:
return &v.state
case 1:
@@ -4650,7 +4835,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HistoryItems); i {
+ switch v := v.(*Items); i {
case 0:
return &v.state
case 1:
@@ -4662,7 +4847,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HistoryCaseIdentity); i {
+ switch v := v.(*HistorySuites); i {
case 0:
return &v.state
case 1:
@@ -4674,7 +4859,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestCaseIdentity); i {
+ switch v := v.(*HistoryItems); i {
case 0:
return &v.state
case 1:
@@ -4686,7 +4871,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestSuiteSource); i {
+ switch v := v.(*HistoryCaseIdentity); i {
case 0:
return &v.state
case 1:
@@ -4698,7 +4883,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestSuite); i {
+ switch v := v.(*TestCaseIdentity); i {
case 0:
return &v.state
case 1:
@@ -4710,7 +4895,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestSuiteWithCase); i {
+ switch v := v.(*TestSuiteSource); i {
case 0:
return &v.state
case 1:
@@ -4722,7 +4907,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*APISpec); i {
+ switch v := v.(*TestSuite); i {
case 0:
return &v.state
case 1:
@@ -4734,7 +4919,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Secure); i {
+ switch v := v.(*TestSuiteWithCase); i {
case 0:
return &v.state
case 1:
@@ -4746,7 +4931,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RPC); i {
+ switch v := v.(*APISpec); i {
case 0:
return &v.state
case 1:
@@ -4758,7 +4943,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestSuiteIdentity); i {
+ switch v := v.(*Secure); i {
case 0:
return &v.state
case 1:
@@ -4770,7 +4955,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestSuiteDuplicate); i {
+ switch v := v.(*RPC); i {
case 0:
return &v.state
case 1:
@@ -4782,7 +4967,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestCaseDuplicate); i {
+ switch v := v.(*TestSuiteIdentity); i {
case 0:
return &v.state
case 1:
@@ -4794,7 +4979,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestTask); i {
+ switch v := v.(*TestSuiteDuplicate); i {
case 0:
return &v.state
case 1:
@@ -4806,7 +4991,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BatchTestTask); i {
+ switch v := v.(*TestCaseDuplicate); i {
case 0:
return &v.state
case 1:
@@ -4818,7 +5003,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestResult); i {
+ switch v := v.(*TestTask); i {
case 0:
return &v.state
case 1:
@@ -4830,7 +5015,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HistoryTestResult); i {
+ switch v := v.(*BatchTestTask); i {
case 0:
return &v.state
case 1:
@@ -4842,7 +5027,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HelloReply); i {
+ switch v := v.(*TestResult); i {
case 0:
return &v.state
case 1:
@@ -4854,7 +5039,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*YamlData); i {
+ switch v := v.(*HistoryTestResult); i {
case 0:
return &v.state
case 1:
@@ -4866,7 +5051,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Suite); i {
+ switch v := v.(*HelloReply); i {
case 0:
return &v.state
case 1:
@@ -4878,7 +5063,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestCaseWithSuite); i {
+ switch v := v.(*YamlData); i {
case 0:
return &v.state
case 1:
@@ -4890,7 +5075,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestCases); i {
+ switch v := v.(*Suite); i {
case 0:
return &v.state
case 1:
@@ -4902,7 +5087,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestCase); i {
+ switch v := v.(*TestCaseWithSuite); i {
case 0:
return &v.state
case 1:
@@ -4914,7 +5099,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HistoryTestCase); i {
+ switch v := v.(*TestCases); i {
case 0:
return &v.state
case 1:
@@ -4926,7 +5111,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HistoryTestCases); i {
+ switch v := v.(*TestCase); i {
case 0:
return &v.state
case 1:
@@ -4938,7 +5123,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Request); i {
+ switch v := v.(*HistoryTestCase); i {
case 0:
return &v.state
case 1:
@@ -4950,7 +5135,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Response); i {
+ switch v := v.(*HistoryTestCases); i {
case 0:
return &v.state
case 1:
@@ -4962,7 +5147,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ConditionalVerify); i {
+ switch v := v.(*Request); i {
case 0:
return &v.state
case 1:
@@ -4974,7 +5159,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TestCaseResult); i {
+ switch v := v.(*Response); i {
case 0:
return &v.state
case 1:
@@ -4986,7 +5171,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Pair); i {
+ switch v := v.(*ConditionalVerify); i {
case 0:
return &v.state
case 1:
@@ -4998,7 +5183,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Pairs); i {
+ switch v := v.(*TestCaseResult); i {
case 0:
return &v.state
case 1:
@@ -5010,7 +5195,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SimpleQuery); i {
+ switch v := v.(*Pair); i {
case 0:
return &v.state
case 1:
@@ -5022,7 +5207,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Stores); i {
+ switch v := v.(*Pairs); i {
case 0:
return &v.state
case 1:
@@ -5034,7 +5219,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Store); i {
+ switch v := v.(*SimpleQuery); i {
case 0:
return &v.state
case 1:
@@ -5046,7 +5231,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StoreKinds); i {
+ switch v := v.(*Stores); i {
case 0:
return &v.state
case 1:
@@ -5058,7 +5243,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StoreKind); i {
+ switch v := v.(*Store); i {
case 0:
return &v.state
case 1:
@@ -5070,7 +5255,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CommonResult); i {
+ switch v := v.(*StoreKinds); i {
case 0:
return &v.state
case 1:
@@ -5082,7 +5267,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SimpleList); i {
+ switch v := v.(*StoreKind); i {
case 0:
return &v.state
case 1:
@@ -5094,7 +5279,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SimpleName); i {
+ switch v := v.(*CommonResult); i {
case 0:
return &v.state
case 1:
@@ -5106,7 +5291,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CodeGenerateRequest); i {
+ switch v := v.(*SimpleList); i {
case 0:
return &v.state
case 1:
@@ -5118,7 +5303,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Secrets); i {
+ switch v := v.(*SimpleName); i {
case 0:
return &v.state
case 1:
@@ -5130,7 +5315,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Secret); i {
+ switch v := v.(*CodeGenerateRequest); i {
case 0:
return &v.state
case 1:
@@ -5142,7 +5327,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ExtensionStatus); i {
+ switch v := v.(*Secrets); i {
case 0:
return &v.state
case 1:
@@ -5154,7 +5339,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PProfRequest); i {
+ switch v := v.(*Secret); i {
case 0:
return &v.state
case 1:
@@ -5166,7 +5351,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PProfData); i {
+ switch v := v.(*ExtensionStatus); i {
case 0:
return &v.state
case 1:
@@ -5178,7 +5363,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FileData); i {
+ switch v := v.(*PProfRequest); i {
case 0:
return &v.state
case 1:
@@ -5190,7 +5375,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Empty); i {
+ switch v := v.(*PProfData); i {
case 0:
return &v.state
case 1:
@@ -5202,7 +5387,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MockConfig); i {
+ switch v := v.(*FileData); i {
case 0:
return &v.state
case 1:
@@ -5214,7 +5399,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Version); i {
+ switch v := v.(*Empty); i {
case 0:
return &v.state
case 1:
@@ -5226,7 +5411,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProxyConfig); i {
+ switch v := v.(*MockConfig); i {
case 0:
return &v.state
case 1:
@@ -5238,7 +5423,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DataQuery); i {
+ switch v := v.(*Version); i {
case 0:
return &v.state
case 1:
@@ -5250,7 +5435,7 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DataQueryResult); i {
+ switch v := v.(*ProxyConfig); i {
case 0:
return &v.state
case 1:
@@ -5262,6 +5447,30 @@ func file_pkg_server_server_proto_init() {
}
}
file_pkg_server_server_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DataQuery); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_pkg_server_server_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DataQueryResult); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_pkg_server_server_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DataMeta); i {
case 0:
return &v.state
@@ -5280,9 +5489,9 @@ func file_pkg_server_server_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_pkg_server_server_proto_rawDesc,
NumEnums: 0,
- NumMessages: 58,
+ NumMessages: 60,
NumExtensions: 0,
- NumServices: 5,
+ NumServices: 6,
},
GoTypes: file_pkg_server_server_proto_goTypes,
DependencyIndexes: file_pkg_server_server_proto_depIdxs,
diff --git a/pkg/server/server.pb.gw.go b/pkg/server/server.pb.gw.go
index 8ded43b8..545aec72 100644
--- a/pkg/server/server.pb.gw.go
+++ b/pkg/server/server.pb.gw.go
@@ -2676,6 +2676,128 @@ func local_request_RunnerExtension_Run_0(ctx context.Context, marshaler runtime.
}
+func request_UIExtension_GetMenus_0(ctx context.Context, marshaler runtime.Marshaler, client UIExtensionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Empty
+ var metadata runtime.ServerMetadata
+
+ msg, err := client.GetMenus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_UIExtension_GetMenus_0(ctx context.Context, marshaler runtime.Marshaler, server UIExtensionServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Empty
+ var metadata runtime.ServerMetadata
+
+ msg, err := server.GetMenus(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_UIExtension_GetPageOfJS_0(ctx context.Context, marshaler runtime.Marshaler, client UIExtensionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq SimpleName
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["name"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name")
+ }
+
+ protoReq.Name, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
+ }
+
+ msg, err := client.GetPageOfJS(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_UIExtension_GetPageOfJS_0(ctx context.Context, marshaler runtime.Marshaler, server UIExtensionServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq SimpleName
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["name"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name")
+ }
+
+ protoReq.Name, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
+ }
+
+ msg, err := server.GetPageOfJS(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_UIExtension_GetPageOfCSS_0(ctx context.Context, marshaler runtime.Marshaler, client UIExtensionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq SimpleName
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["name"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name")
+ }
+
+ protoReq.Name, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
+ }
+
+ msg, err := client.GetPageOfCSS(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_UIExtension_GetPageOfCSS_0(ctx context.Context, marshaler runtime.Marshaler, server UIExtensionServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq SimpleName
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["name"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name")
+ }
+
+ protoReq.Name, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
+ }
+
+ msg, err := server.GetPageOfCSS(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
func request_ThemeExtension_GetThemes_0(ctx context.Context, marshaler runtime.Marshaler, client ThemeExtensionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq Empty
var metadata runtime.ServerMetadata
@@ -4158,6 +4280,90 @@ func RegisterRunnerExtensionHandlerServer(ctx context.Context, mux *runtime.Serv
return nil
}
+// RegisterUIExtensionHandlerServer registers the http handlers for service UIExtension to "mux".
+// UnaryRPC :call UIExtensionServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterUIExtensionHandlerFromEndpoint instead.
+func RegisterUIExtensionHandlerServer(ctx context.Context, mux *runtime.ServeMux, server UIExtensionServer) error {
+
+ mux.Handle("GET", pattern_UIExtension_GetMenus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/server.UIExtension/GetMenus", runtime.WithHTTPPathPattern("/api/v1/extension/menus"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_UIExtension_GetMenus_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_UIExtension_GetMenus_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_UIExtension_GetPageOfJS_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/server.UIExtension/GetPageOfJS", runtime.WithHTTPPathPattern("/api/v1/extension/pages/{name}/js"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_UIExtension_GetPageOfJS_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_UIExtension_GetPageOfJS_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_UIExtension_GetPageOfCSS_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/server.UIExtension/GetPageOfCSS", runtime.WithHTTPPathPattern("/api/v1/extension/pages/{name}/css"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_UIExtension_GetPageOfCSS_0(annotatedContext, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_UIExtension_GetPageOfCSS_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
// RegisterThemeExtensionHandlerServer registers the http handlers for service ThemeExtension to "mux".
// UnaryRPC :call ThemeExtensionServer directly.
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
@@ -5783,6 +5989,129 @@ var (
forward_RunnerExtension_Run_0 = runtime.ForwardResponseMessage
)
+// RegisterUIExtensionHandlerFromEndpoint is same as RegisterUIExtensionHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterUIExtensionHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.DialContext(ctx, endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterUIExtensionHandler(ctx, mux, conn)
+}
+
+// RegisterUIExtensionHandler registers the http handlers for service UIExtension to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterUIExtensionHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterUIExtensionHandlerClient(ctx, mux, NewUIExtensionClient(conn))
+}
+
+// RegisterUIExtensionHandlerClient registers the http handlers for service UIExtension
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "UIExtensionClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "UIExtensionClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "UIExtensionClient" to call the correct interceptors.
+func RegisterUIExtensionHandlerClient(ctx context.Context, mux *runtime.ServeMux, client UIExtensionClient) error {
+
+ mux.Handle("GET", pattern_UIExtension_GetMenus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/server.UIExtension/GetMenus", runtime.WithHTTPPathPattern("/api/v1/extension/menus"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_UIExtension_GetMenus_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_UIExtension_GetMenus_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_UIExtension_GetPageOfJS_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/server.UIExtension/GetPageOfJS", runtime.WithHTTPPathPattern("/api/v1/extension/pages/{name}/js"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_UIExtension_GetPageOfJS_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_UIExtension_GetPageOfJS_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_UIExtension_GetPageOfCSS_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ var annotatedContext context.Context
+ annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/server.UIExtension/GetPageOfCSS", runtime.WithHTTPPathPattern("/api/v1/extension/pages/{name}/css"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_UIExtension_GetPageOfCSS_0(annotatedContext, inboundMarshaler, client, req, pathParams)
+ annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
+ if err != nil {
+ runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_UIExtension_GetPageOfCSS_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_UIExtension_GetMenus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "extension", "menus"}, ""))
+
+ pattern_UIExtension_GetPageOfJS_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "v1", "extension", "pages", "name", "js"}, ""))
+
+ pattern_UIExtension_GetPageOfCSS_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "v1", "extension", "pages", "name", "css"}, ""))
+)
+
+var (
+ forward_UIExtension_GetMenus_0 = runtime.ForwardResponseMessage
+
+ forward_UIExtension_GetPageOfJS_0 = runtime.ForwardResponseMessage
+
+ forward_UIExtension_GetPageOfCSS_0 = runtime.ForwardResponseMessage
+)
+
// RegisterThemeExtensionHandlerFromEndpoint is same as RegisterThemeExtensionHandler but
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
func RegisterThemeExtensionHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
diff --git a/pkg/server/server.proto b/pkg/server/server.proto
index 778cf7e4..ffbc5763 100644
--- a/pkg/server/server.proto
+++ b/pkg/server/server.proto
@@ -312,6 +312,34 @@ service RunnerExtension {
}
}
+service UIExtension {
+ rpc GetMenus(Empty) returns (MenuList) {
+ option (google.api.http) = {
+ get: "/api/v1/extension/menus"
+ };
+ }
+ rpc GetPageOfJS(SimpleName) returns (CommonResult) {
+ option (google.api.http) = {
+ get: "/api/v1/extension/pages/{name}/js"
+ };
+ }
+ rpc GetPageOfCSS(SimpleName) returns (CommonResult) {
+ option (google.api.http) = {
+ get: "/api/v1/extension/pages/{name}/css"
+ };
+ }
+}
+
+message Menu {
+ string name = 1;
+ string index = 2;
+ string icon = 3;
+}
+
+message MenuList {
+ repeated Menu data = 1;
+}
+
service ThemeExtension {
rpc GetThemes(Empty) returns (SimpleList) {
option (google.api.http) = {
@@ -663,6 +691,10 @@ message MockConfig {
string Prefix = 1;
string Config = 2;
int32 Port = 3;
+ string storeKind = 4;
+ string storeLocalFile = 5;
+ string storeURL = 6;
+ string storeRemote = 7;
}
message Version {
diff --git a/pkg/server/server.swagger.json b/pkg/server/server.swagger.json
index d1a21b8c..de99dec9 100644
--- a/pkg/server/server.swagger.json
+++ b/pkg/server/server.swagger.json
@@ -11,6 +11,9 @@
{
"name": "RunnerExtension"
},
+ {
+ "name": "UIExtension"
+ },
{
"name": "ThemeExtension"
},
@@ -70,6 +73,58 @@
]
}
},
+ "/api/v1/bindings": {
+ "get": {
+ "operationId": "ThemeExtension_GetBindings",
+ "responses": {
+ "200": {
+ "description": "A successful response.",
+ "schema": {
+ "$ref": "#/definitions/serverSimpleList"
+ }
+ },
+ "default": {
+ "description": "An unexpected error response.",
+ "schema": {
+ "$ref": "#/definitions/rpcStatus"
+ }
+ }
+ },
+ "tags": [
+ "ThemeExtension"
+ ]
+ }
+ },
+ "/api/v1/bindings/{name}": {
+ "get": {
+ "operationId": "ThemeExtension_GetBinding",
+ "responses": {
+ "200": {
+ "description": "A successful response.",
+ "schema": {
+ "$ref": "#/definitions/serverCommonResult"
+ }
+ },
+ "default": {
+ "description": "An unexpected error response.",
+ "schema": {
+ "$ref": "#/definitions/rpcStatus"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "name",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "tags": [
+ "ThemeExtension"
+ ]
+ }
+ },
"/api/v1/codeGenerators": {
"get": {
"summary": "code generator",
@@ -333,6 +388,88 @@
]
}
},
+ "/api/v1/extension/menus": {
+ "get": {
+ "operationId": "UIExtension_GetMenus",
+ "responses": {
+ "200": {
+ "description": "A successful response.",
+ "schema": {
+ "$ref": "#/definitions/serverMenuList"
+ }
+ },
+ "default": {
+ "description": "An unexpected error response.",
+ "schema": {
+ "$ref": "#/definitions/rpcStatus"
+ }
+ }
+ },
+ "tags": [
+ "UIExtension"
+ ]
+ }
+ },
+ "/api/v1/extension/pages/{name}/css": {
+ "get": {
+ "operationId": "UIExtension_GetPageOfCSS",
+ "responses": {
+ "200": {
+ "description": "A successful response.",
+ "schema": {
+ "$ref": "#/definitions/serverCommonResult"
+ }
+ },
+ "default": {
+ "description": "An unexpected error response.",
+ "schema": {
+ "$ref": "#/definitions/rpcStatus"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "name",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "tags": [
+ "UIExtension"
+ ]
+ }
+ },
+ "/api/v1/extension/pages/{name}/js": {
+ "get": {
+ "operationId": "UIExtension_GetPageOfJS",
+ "responses": {
+ "200": {
+ "description": "A successful response.",
+ "schema": {
+ "$ref": "#/definitions/serverCommonResult"
+ }
+ },
+ "default": {
+ "description": "An unexpected error response.",
+ "schema": {
+ "$ref": "#/definitions/rpcStatus"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "name",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "tags": [
+ "UIExtension"
+ ]
+ }
+ },
"/api/v1/extension/run": {
"post": {
"operationId": "RunnerExtension_Run",
@@ -1225,6 +1362,37 @@
]
}
},
+ "/api/v1/mock/log": {
+ "get": {
+ "operationId": "Mock_LogWatch",
+ "responses": {
+ "200": {
+ "description": "A successful response.(streaming responses)",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "result": {
+ "$ref": "#/definitions/serverCommonResult"
+ },
+ "error": {
+ "$ref": "#/definitions/rpcStatus"
+ }
+ },
+ "title": "Stream result of serverCommonResult"
+ }
+ },
+ "default": {
+ "description": "An unexpected error response.",
+ "schema": {
+ "$ref": "#/definitions/rpcStatus"
+ }
+ }
+ },
+ "tags": [
+ "Mock"
+ ]
+ }
+ },
"/api/v1/mock/reload": {
"post": {
"operationId": "Mock_Reload",
@@ -1377,6 +1545,42 @@
]
}
},
+ "/api/v1/schemas/{name}": {
+ "get": {
+ "operationId": "Runner_GetSchema",
+ "responses": {
+ "200": {
+ "description": "A successful response.",
+ "schema": {
+ "$ref": "#/definitions/serverCommonResult"
+ }
+ },
+ "default": {
+ "description": "An unexpected error response.",
+ "schema": {
+ "$ref": "#/definitions/rpcStatus"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "name",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "kind",
+ "in": "query",
+ "required": false,
+ "type": "string"
+ }
+ ],
+ "tags": [
+ "Runner"
+ ]
+ }
+ },
"/api/v1/secrets": {
"get": {
"summary": "secret related interfaces",
@@ -2648,14 +2852,14 @@
]
}
},
- "/api/v1/theme/{name}": {
+ "/api/v1/themes": {
"get": {
- "operationId": "ThemeExtension_GetTheme",
+ "operationId": "ThemeExtension_GetThemes",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
- "$ref": "#/definitions/serverCommonResult"
+ "$ref": "#/definitions/serverSimpleList"
}
},
"default": {
@@ -2665,27 +2869,19 @@
}
}
},
- "parameters": [
- {
- "name": "name",
- "in": "path",
- "required": true,
- "type": "string"
- }
- ],
"tags": [
"ThemeExtension"
]
}
},
- "/api/v1/themes": {
+ "/api/v1/themes/{name}": {
"get": {
- "operationId": "ThemeExtension_GetThemes",
+ "operationId": "ThemeExtension_GetTheme",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
- "$ref": "#/definitions/serverSimpleList"
+ "$ref": "#/definitions/serverCommonResult"
}
},
"default": {
@@ -2695,6 +2891,14 @@
}
}
},
+ "parameters": [
+ {
+ "name": "name",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
"tags": [
"ThemeExtension"
]
@@ -2915,12 +3119,12 @@
"type": "string"
},
"offset": {
- "type": "integer",
- "format": "int32"
+ "type": "string",
+ "format": "int64"
},
"limit": {
- "type": "integer",
- "format": "int32"
+ "type": "string",
+ "format": "int64"
}
}
},
@@ -3133,6 +3337,32 @@
}
}
},
+ "serverMenu": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "index": {
+ "type": "string"
+ },
+ "icon": {
+ "type": "string"
+ }
+ }
+ },
+ "serverMenuList": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "$ref": "#/definitions/serverMenu"
+ }
+ }
+ }
+ },
"serverMockConfig": {
"type": "object",
"properties": {
diff --git a/pkg/server/server_grpc.pb.go b/pkg/server/server_grpc.pb.go
index 58a955b4..e632dcd1 100644
--- a/pkg/server/server_grpc.pb.go
+++ b/pkg/server/server_grpc.pb.go
@@ -2073,6 +2073,164 @@ var RunnerExtension_ServiceDesc = grpc.ServiceDesc{
Metadata: "pkg/server/server.proto",
}
+// UIExtensionClient is the client API for UIExtension service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type UIExtensionClient interface {
+ GetMenus(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*MenuList, error)
+ GetPageOfJS(ctx context.Context, in *SimpleName, opts ...grpc.CallOption) (*CommonResult, error)
+ GetPageOfCSS(ctx context.Context, in *SimpleName, opts ...grpc.CallOption) (*CommonResult, error)
+}
+
+type uIExtensionClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewUIExtensionClient(cc grpc.ClientConnInterface) UIExtensionClient {
+ return &uIExtensionClient{cc}
+}
+
+func (c *uIExtensionClient) GetMenus(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*MenuList, error) {
+ out := new(MenuList)
+ err := c.cc.Invoke(ctx, "/server.UIExtension/GetMenus", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *uIExtensionClient) GetPageOfJS(ctx context.Context, in *SimpleName, opts ...grpc.CallOption) (*CommonResult, error) {
+ out := new(CommonResult)
+ err := c.cc.Invoke(ctx, "/server.UIExtension/GetPageOfJS", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *uIExtensionClient) GetPageOfCSS(ctx context.Context, in *SimpleName, opts ...grpc.CallOption) (*CommonResult, error) {
+ out := new(CommonResult)
+ err := c.cc.Invoke(ctx, "/server.UIExtension/GetPageOfCSS", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// UIExtensionServer is the server API for UIExtension service.
+// All implementations must embed UnimplementedUIExtensionServer
+// for forward compatibility
+type UIExtensionServer interface {
+ GetMenus(context.Context, *Empty) (*MenuList, error)
+ GetPageOfJS(context.Context, *SimpleName) (*CommonResult, error)
+ GetPageOfCSS(context.Context, *SimpleName) (*CommonResult, error)
+ mustEmbedUnimplementedUIExtensionServer()
+}
+
+// UnimplementedUIExtensionServer must be embedded to have forward compatible implementations.
+type UnimplementedUIExtensionServer struct {
+}
+
+func (UnimplementedUIExtensionServer) GetMenus(context.Context, *Empty) (*MenuList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetMenus not implemented")
+}
+func (UnimplementedUIExtensionServer) GetPageOfJS(context.Context, *SimpleName) (*CommonResult, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetPageOfJS not implemented")
+}
+func (UnimplementedUIExtensionServer) GetPageOfCSS(context.Context, *SimpleName) (*CommonResult, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetPageOfCSS not implemented")
+}
+func (UnimplementedUIExtensionServer) mustEmbedUnimplementedUIExtensionServer() {}
+
+// UnsafeUIExtensionServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to UIExtensionServer will
+// result in compilation errors.
+type UnsafeUIExtensionServer interface {
+ mustEmbedUnimplementedUIExtensionServer()
+}
+
+func RegisterUIExtensionServer(s grpc.ServiceRegistrar, srv UIExtensionServer) {
+ s.RegisterService(&UIExtension_ServiceDesc, srv)
+}
+
+func _UIExtension_GetMenus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(UIExtensionServer).GetMenus(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/server.UIExtension/GetMenus",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(UIExtensionServer).GetMenus(ctx, req.(*Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _UIExtension_GetPageOfJS_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(SimpleName)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(UIExtensionServer).GetPageOfJS(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/server.UIExtension/GetPageOfJS",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(UIExtensionServer).GetPageOfJS(ctx, req.(*SimpleName))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _UIExtension_GetPageOfCSS_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(SimpleName)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(UIExtensionServer).GetPageOfCSS(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/server.UIExtension/GetPageOfCSS",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(UIExtensionServer).GetPageOfCSS(ctx, req.(*SimpleName))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// UIExtension_ServiceDesc is the grpc.ServiceDesc for UIExtension service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var UIExtension_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "server.UIExtension",
+ HandlerType: (*UIExtensionServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "GetMenus",
+ Handler: _UIExtension_GetMenus_Handler,
+ },
+ {
+ MethodName: "GetPageOfJS",
+ Handler: _UIExtension_GetPageOfJS_Handler,
+ },
+ {
+ MethodName: "GetPageOfCSS",
+ Handler: _UIExtension_GetPageOfCSS_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "pkg/server/server.proto",
+}
+
// ThemeExtensionClient is the client API for ThemeExtension service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
diff --git a/pkg/testing/loader.go b/pkg/testing/loader.go
index fbf10bc9..f2e3ac89 100644
--- a/pkg/testing/loader.go
+++ b/pkg/testing/loader.go
@@ -32,7 +32,17 @@ type Loader interface {
GetTheme(string) (string, error)
GetBindings() ([]string, error)
GetBinding(string) (string, error)
+ GetMenus() ([]*Menu, error)
+ GetPageOfJS(string) (string, error)
+ GetPageOfCSS(string) (string, error)
}
+
+type Menu struct {
+ Name string `json:"name"`
+ Icon string `json:"icon"`
+ Index string `json:"index"`
+}
+
type DataResult struct {
Pairs map[string]string
Rows []map[string]string
diff --git a/pkg/testing/loader_file.go b/pkg/testing/loader_file.go
index e0e0b878..f1544215 100644
--- a/pkg/testing/loader_file.go
+++ b/pkg/testing/loader_file.go
@@ -577,3 +577,18 @@ func (l *fileLoader) GetBinding(name string) (result string, err error) {
}
return
}
+
+func (l *fileLoader) GetMenus() ([]*Menu, error) {
+ //TODO implement me
+ panic("implement me")
+}
+
+func (l *fileLoader) GetPageOfJS(s string) (string, error) {
+ //TODO implement me
+ panic("implement me")
+}
+
+func (l *fileLoader) GetPageOfCSS(s string) (string, error) {
+ //TODO implement me
+ panic("implement me")
+}
diff --git a/pkg/testing/loader_non.go b/pkg/testing/loader_non.go
index 5e37c49e..b63fb6f5 100644
--- a/pkg/testing/loader_non.go
+++ b/pkg/testing/loader_non.go
@@ -179,3 +179,16 @@ func (l *nonLoader) GetBinding(name string) (result string, err error) {
err = fmt.Errorf("not support")
return
}
+
+func (l *nonLoader) GetMenus() ([]*Menu, error) {
+ fmt.Println("not support non-loader for getting menus")
+ return nil, fmt.Errorf("not support")
+}
+
+func (l *nonLoader) GetPageOfJS(s string) (string, error) {
+ return "", fmt.Errorf("not support")
+}
+
+func (l *nonLoader) GetPageOfCSS(s string) (string, error) {
+ return "", fmt.Errorf("not support")
+}
diff --git a/pkg/testing/remote/grpc_store.go b/pkg/testing/remote/grpc_store.go
index 9b3e7a69..dd37d293 100644
--- a/pkg/testing/remote/grpc_store.go
+++ b/pkg/testing/remote/grpc_store.go
@@ -19,10 +19,12 @@ package remote
import (
"context"
"errors"
+ "fmt"
"strconv"
"time"
"github.com/linuxsuren/api-testing/pkg/logging"
+ "github.com/linuxsuren/api-testing/pkg/mock"
server "github.com/linuxsuren/api-testing/pkg/server"
"github.com/linuxsuren/api-testing/pkg/testing"
@@ -34,10 +36,11 @@ var (
)
type gRPCLoader struct {
- store *testing.Store
- client LoaderClient
- ctx context.Context
- conn *grpc.ClientConn
+ store *testing.Store
+ client LoaderClient
+ ctx context.Context
+ conn *grpc.ClientConn
+ mockData []byte
}
func NewGRPCloaderFromStore() testing.StoreWriterFactory {
@@ -373,6 +376,55 @@ func (g *gRPCLoader) GetBinding(name string) (result string, err error) {
return
}
+func (g *gRPCLoader) GetMenus() (result []*testing.Menu, err error) {
+ fmt.Println("getting menus from grpc server", g.store.Kind)
+
+ var menuList *server.MenuList
+ if menuList, err = g.client.GetMenus(g.ctx, &server.Empty{}); err == nil {
+ for _, item := range menuList.Data {
+ result = append(result, &testing.Menu{
+ Name: item.Name,
+ Icon: item.Icon,
+ Index: item.Index,
+ })
+ }
+ }
+ fmt.Println("get menus, error", err)
+ return
+}
+
+func (g *gRPCLoader) GetPageOfJS(name string) (result string, err error) {
+ var themeData *server.CommonResult
+ if themeData, err = g.client.GetPageOfJS(g.ctx, &server.SimpleName{
+ Name: name,
+ }); err == nil && themeData != nil {
+ result = themeData.Message
+ }
+ return
+}
+
+func (g *gRPCLoader) GetPageOfCSS(name string) (result string, err error) {
+ var themeData *server.CommonResult
+ if themeData, err = g.client.GetPageOfCSS(g.ctx, &server.SimpleName{
+ Name: name,
+ }); err == nil && themeData != nil {
+ result = themeData.Message
+ }
+ return
+}
+
+func (g *gRPCLoader) Parse() (server *mock.Server, err error) {
+ return
+}
+
+func (g *gRPCLoader) GetData() []byte {
+ return g.mockData
+}
+
+func (g *gRPCLoader) Write(data []byte) {
+ g.mockData = data
+}
+
func (g *gRPCLoader) Close() {
if g.conn != nil {
g.conn.Close()
diff --git a/pkg/testing/remote/loader.pb.go b/pkg/testing/remote/loader.pb.go
index 8bd98414..b0884d13 100644
--- a/pkg/testing/remote/loader.pb.go
+++ b/pkg/testing/remote/loader.pb.go
@@ -408,7 +408,7 @@ var file_pkg_testing_remote_loader_proto_rawDesc = []byte{
0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63,
- 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xd7, 0x0c, 0x0a, 0x06, 0x4c, 0x6f, 0x61, 0x64,
+ 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xfd, 0x0d, 0x0a, 0x06, 0x4c, 0x6f, 0x61, 0x64,
0x65, 0x72, 0x12, 0x34, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75,
0x69, 0x74, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70,
0x74, 0x79, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x65, 0x73, 0x74,
@@ -510,46 +510,57 @@ var file_pkg_testing_remote_loader_proto_rawDesc = []byte{
0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53,
0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76,
0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22,
- 0x00, 0x32, 0x96, 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
+ 0x00, 0x12, 0x2d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x73, 0x12, 0x0d, 0x2e,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x00,
+ 0x12, 0x39, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4f, 0x66, 0x4a, 0x53, 0x12,
+ 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e,
+ 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0c, 0x47,
+ 0x65, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4f, 0x66, 0x43, 0x53, 0x53, 0x12, 0x12, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a,
+ 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x32, 0x96, 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x72,
+ 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x47, 0x65, 0x74,
+ 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53,
+ 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
+ 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53,
+ 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00,
+ 0x12, 0x36, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
- 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
- 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73,
+ 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00,
+ 0x32, 0x9e, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69,
+ 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73,
0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a,
- 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73,
- 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72,
- 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72,
- 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
- 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72,
- 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72,
- 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x32, 0x9e, 0x02, 0x0a, 0x0d, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x0a,
- 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x72, 0x65, 0x6d, 0x6f,
- 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x09,
- 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x0e, 0x2e,
- 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x00, 0x12,
- 0x36, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
- 0x0e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a,
- 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52,
- 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
- 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12,
- 0x3a, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
+ 0x0f, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73,
+ 0x22, 0x00, 0x12, 0x31, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x42, 0x36, 0x5a, 0x34, 0x67,
- 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x73,
- 0x75, 0x72, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
- 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x6d,
- 0x6f, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x61, 0x6d, 0x65, 0x1a, 0x0e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a,
+ 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x2e,
+ 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x14, 0x2e,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53,
+ 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22,
+ 0x00, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
+ 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x73, 0x75, 0x72, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x74,
+ 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69,
+ 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x33,
}
var (
@@ -593,7 +604,8 @@ var file_pkg_testing_remote_loader_proto_goTypes = []interface{}{
(*server.DataQueryResult)(nil), // 24: server.DataQueryResult
(*server.SimpleList)(nil), // 25: server.SimpleList
(*server.CommonResult)(nil), // 26: server.CommonResult
- (*server.Secrets)(nil), // 27: server.Secrets
+ (*server.MenuList)(nil), // 27: server.MenuList
+ (*server.Secrets)(nil), // 28: server.Secrets
}
var file_pkg_testing_remote_loader_proto_depIdxs = []int32{
1, // 0: remote.TestSuites.data:type_name -> remote.TestSuite
@@ -630,55 +642,61 @@ var file_pkg_testing_remote_loader_proto_depIdxs = []int32{
16, // 31: remote.Loader.GetTheme:input_type -> server.SimpleName
10, // 32: remote.Loader.GetBindings:input_type -> server.Empty
16, // 33: remote.Loader.GetBinding:input_type -> server.SimpleName
- 17, // 34: remote.SecretService.GetSecret:input_type -> server.Secret
- 10, // 35: remote.SecretService.GetSecrets:input_type -> server.Empty
- 17, // 36: remote.SecretService.CreateSecret:input_type -> server.Secret
- 17, // 37: remote.SecretService.DeleteSecret:input_type -> server.Secret
- 17, // 38: remote.SecretService.UpdateSecret:input_type -> server.Secret
- 10, // 39: remote.ConfigService.GetConfigs:input_type -> server.Empty
- 16, // 40: remote.ConfigService.GetConfig:input_type -> server.SimpleName
- 5, // 41: remote.ConfigService.CreateConfig:input_type -> remote.Config
- 5, // 42: remote.ConfigService.UpdateConfig:input_type -> remote.Config
- 16, // 43: remote.ConfigService.DeleteConfig:input_type -> server.SimpleName
- 0, // 44: remote.Loader.ListTestSuite:output_type -> remote.TestSuites
- 10, // 45: remote.Loader.CreateTestSuite:output_type -> server.Empty
- 1, // 46: remote.Loader.GetTestSuite:output_type -> remote.TestSuite
- 1, // 47: remote.Loader.UpdateTestSuite:output_type -> remote.TestSuite
- 10, // 48: remote.Loader.DeleteTestSuite:output_type -> server.Empty
- 18, // 49: remote.Loader.RenameTestSuite:output_type -> server.HelloReply
- 19, // 50: remote.Loader.ListTestCases:output_type -> server.TestCases
- 10, // 51: remote.Loader.CreateTestCase:output_type -> server.Empty
- 8, // 52: remote.Loader.GetTestCase:output_type -> server.TestCase
- 8, // 53: remote.Loader.UpdateTestCase:output_type -> server.TestCase
- 10, // 54: remote.Loader.DeleteTestCase:output_type -> server.Empty
- 18, // 55: remote.Loader.RenameTestCase:output_type -> server.HelloReply
- 2, // 56: remote.Loader.ListHistoryTestSuite:output_type -> remote.HistoryTestSuites
- 10, // 57: remote.Loader.CreateTestCaseHistory:output_type -> server.Empty
- 13, // 58: remote.Loader.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult
- 9, // 59: remote.Loader.GetHistoryTestCase:output_type -> server.HistoryTestCase
- 10, // 60: remote.Loader.DeleteHistoryTestCase:output_type -> server.Empty
- 10, // 61: remote.Loader.DeleteAllHistoryTestCase:output_type -> server.Empty
- 20, // 62: remote.Loader.GetTestCaseAllHistory:output_type -> server.HistoryTestCases
- 21, // 63: remote.Loader.GetVersion:output_type -> server.Version
- 22, // 64: remote.Loader.Verify:output_type -> server.ExtensionStatus
- 23, // 65: remote.Loader.PProf:output_type -> server.PProfData
- 24, // 66: remote.Loader.Query:output_type -> server.DataQueryResult
- 25, // 67: remote.Loader.GetThemes:output_type -> server.SimpleList
- 26, // 68: remote.Loader.GetTheme:output_type -> server.CommonResult
- 25, // 69: remote.Loader.GetBindings:output_type -> server.SimpleList
- 26, // 70: remote.Loader.GetBinding:output_type -> server.CommonResult
- 17, // 71: remote.SecretService.GetSecret:output_type -> server.Secret
- 27, // 72: remote.SecretService.GetSecrets:output_type -> server.Secrets
- 26, // 73: remote.SecretService.CreateSecret:output_type -> server.CommonResult
- 26, // 74: remote.SecretService.DeleteSecret:output_type -> server.CommonResult
- 26, // 75: remote.SecretService.UpdateSecret:output_type -> server.CommonResult
- 4, // 76: remote.ConfigService.GetConfigs:output_type -> remote.Configs
- 5, // 77: remote.ConfigService.GetConfig:output_type -> remote.Config
- 26, // 78: remote.ConfigService.CreateConfig:output_type -> server.CommonResult
- 26, // 79: remote.ConfigService.UpdateConfig:output_type -> server.CommonResult
- 26, // 80: remote.ConfigService.DeleteConfig:output_type -> server.CommonResult
- 44, // [44:81] is the sub-list for method output_type
- 7, // [7:44] is the sub-list for method input_type
+ 10, // 34: remote.Loader.GetMenus:input_type -> server.Empty
+ 16, // 35: remote.Loader.GetPageOfJS:input_type -> server.SimpleName
+ 16, // 36: remote.Loader.GetPageOfCSS:input_type -> server.SimpleName
+ 17, // 37: remote.SecretService.GetSecret:input_type -> server.Secret
+ 10, // 38: remote.SecretService.GetSecrets:input_type -> server.Empty
+ 17, // 39: remote.SecretService.CreateSecret:input_type -> server.Secret
+ 17, // 40: remote.SecretService.DeleteSecret:input_type -> server.Secret
+ 17, // 41: remote.SecretService.UpdateSecret:input_type -> server.Secret
+ 10, // 42: remote.ConfigService.GetConfigs:input_type -> server.Empty
+ 16, // 43: remote.ConfigService.GetConfig:input_type -> server.SimpleName
+ 5, // 44: remote.ConfigService.CreateConfig:input_type -> remote.Config
+ 5, // 45: remote.ConfigService.UpdateConfig:input_type -> remote.Config
+ 16, // 46: remote.ConfigService.DeleteConfig:input_type -> server.SimpleName
+ 0, // 47: remote.Loader.ListTestSuite:output_type -> remote.TestSuites
+ 10, // 48: remote.Loader.CreateTestSuite:output_type -> server.Empty
+ 1, // 49: remote.Loader.GetTestSuite:output_type -> remote.TestSuite
+ 1, // 50: remote.Loader.UpdateTestSuite:output_type -> remote.TestSuite
+ 10, // 51: remote.Loader.DeleteTestSuite:output_type -> server.Empty
+ 18, // 52: remote.Loader.RenameTestSuite:output_type -> server.HelloReply
+ 19, // 53: remote.Loader.ListTestCases:output_type -> server.TestCases
+ 10, // 54: remote.Loader.CreateTestCase:output_type -> server.Empty
+ 8, // 55: remote.Loader.GetTestCase:output_type -> server.TestCase
+ 8, // 56: remote.Loader.UpdateTestCase:output_type -> server.TestCase
+ 10, // 57: remote.Loader.DeleteTestCase:output_type -> server.Empty
+ 18, // 58: remote.Loader.RenameTestCase:output_type -> server.HelloReply
+ 2, // 59: remote.Loader.ListHistoryTestSuite:output_type -> remote.HistoryTestSuites
+ 10, // 60: remote.Loader.CreateTestCaseHistory:output_type -> server.Empty
+ 13, // 61: remote.Loader.GetHistoryTestCaseWithResult:output_type -> server.HistoryTestResult
+ 9, // 62: remote.Loader.GetHistoryTestCase:output_type -> server.HistoryTestCase
+ 10, // 63: remote.Loader.DeleteHistoryTestCase:output_type -> server.Empty
+ 10, // 64: remote.Loader.DeleteAllHistoryTestCase:output_type -> server.Empty
+ 20, // 65: remote.Loader.GetTestCaseAllHistory:output_type -> server.HistoryTestCases
+ 21, // 66: remote.Loader.GetVersion:output_type -> server.Version
+ 22, // 67: remote.Loader.Verify:output_type -> server.ExtensionStatus
+ 23, // 68: remote.Loader.PProf:output_type -> server.PProfData
+ 24, // 69: remote.Loader.Query:output_type -> server.DataQueryResult
+ 25, // 70: remote.Loader.GetThemes:output_type -> server.SimpleList
+ 26, // 71: remote.Loader.GetTheme:output_type -> server.CommonResult
+ 25, // 72: remote.Loader.GetBindings:output_type -> server.SimpleList
+ 26, // 73: remote.Loader.GetBinding:output_type -> server.CommonResult
+ 27, // 74: remote.Loader.GetMenus:output_type -> server.MenuList
+ 26, // 75: remote.Loader.GetPageOfJS:output_type -> server.CommonResult
+ 26, // 76: remote.Loader.GetPageOfCSS:output_type -> server.CommonResult
+ 17, // 77: remote.SecretService.GetSecret:output_type -> server.Secret
+ 28, // 78: remote.SecretService.GetSecrets:output_type -> server.Secrets
+ 26, // 79: remote.SecretService.CreateSecret:output_type -> server.CommonResult
+ 26, // 80: remote.SecretService.DeleteSecret:output_type -> server.CommonResult
+ 26, // 81: remote.SecretService.UpdateSecret:output_type -> server.CommonResult
+ 4, // 82: remote.ConfigService.GetConfigs:output_type -> remote.Configs
+ 5, // 83: remote.ConfigService.GetConfig:output_type -> remote.Config
+ 26, // 84: remote.ConfigService.CreateConfig:output_type -> server.CommonResult
+ 26, // 85: remote.ConfigService.UpdateConfig:output_type -> server.CommonResult
+ 26, // 86: remote.ConfigService.DeleteConfig:output_type -> server.CommonResult
+ 47, // [47:87] is the sub-list for method output_type
+ 7, // [7:47] is the sub-list for method input_type
7, // [7:7] is the sub-list for extension type_name
7, // [7:7] is the sub-list for extension extendee
0, // [0:7] is the sub-list for field type_name
diff --git a/pkg/testing/remote/loader.proto b/pkg/testing/remote/loader.proto
index 7e6a4ce9..d9827cd3 100644
--- a/pkg/testing/remote/loader.proto
+++ b/pkg/testing/remote/loader.proto
@@ -38,6 +38,10 @@ service Loader {
rpc GetTheme(server.SimpleName) returns (server.CommonResult) {}
rpc GetBindings(server.Empty) returns (server.SimpleList) {}
rpc GetBinding(server.SimpleName) returns (server.CommonResult) {}
+
+ rpc GetMenus(server.Empty) returns (server.MenuList) {}
+ rpc GetPageOfJS(server.SimpleName) returns (server.CommonResult) {}
+ rpc GetPageOfCSS(server.SimpleName) returns (server.CommonResult) {}
}
message TestSuites {
diff --git a/pkg/testing/remote/loader_grpc.pb.go b/pkg/testing/remote/loader_grpc.pb.go
index 2f8d72c9..a8fc909d 100644
--- a/pkg/testing/remote/loader_grpc.pb.go
+++ b/pkg/testing/remote/loader_grpc.pb.go
@@ -50,6 +50,9 @@ type LoaderClient interface {
GetTheme(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error)
GetBindings(ctx context.Context, in *server.Empty, opts ...grpc.CallOption) (*server.SimpleList, error)
GetBinding(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error)
+ GetMenus(ctx context.Context, in *server.Empty, opts ...grpc.CallOption) (*server.MenuList, error)
+ GetPageOfJS(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error)
+ GetPageOfCSS(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error)
}
type loaderClient struct {
@@ -303,6 +306,33 @@ func (c *loaderClient) GetBinding(ctx context.Context, in *server.SimpleName, op
return out, nil
}
+func (c *loaderClient) GetMenus(ctx context.Context, in *server.Empty, opts ...grpc.CallOption) (*server.MenuList, error) {
+ out := new(server.MenuList)
+ err := c.cc.Invoke(ctx, "/remote.Loader/GetMenus", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *loaderClient) GetPageOfJS(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error) {
+ out := new(server.CommonResult)
+ err := c.cc.Invoke(ctx, "/remote.Loader/GetPageOfJS", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *loaderClient) GetPageOfCSS(ctx context.Context, in *server.SimpleName, opts ...grpc.CallOption) (*server.CommonResult, error) {
+ out := new(server.CommonResult)
+ err := c.cc.Invoke(ctx, "/remote.Loader/GetPageOfCSS", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
// LoaderServer is the server API for Loader service.
// All implementations must embed UnimplementedLoaderServer
// for forward compatibility
@@ -334,6 +364,9 @@ type LoaderServer interface {
GetTheme(context.Context, *server.SimpleName) (*server.CommonResult, error)
GetBindings(context.Context, *server.Empty) (*server.SimpleList, error)
GetBinding(context.Context, *server.SimpleName) (*server.CommonResult, error)
+ GetMenus(context.Context, *server.Empty) (*server.MenuList, error)
+ GetPageOfJS(context.Context, *server.SimpleName) (*server.CommonResult, error)
+ GetPageOfCSS(context.Context, *server.SimpleName) (*server.CommonResult, error)
mustEmbedUnimplementedLoaderServer()
}
@@ -422,6 +455,15 @@ func (UnimplementedLoaderServer) GetBindings(context.Context, *server.Empty) (*s
func (UnimplementedLoaderServer) GetBinding(context.Context, *server.SimpleName) (*server.CommonResult, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetBinding not implemented")
}
+func (UnimplementedLoaderServer) GetMenus(context.Context, *server.Empty) (*server.MenuList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetMenus not implemented")
+}
+func (UnimplementedLoaderServer) GetPageOfJS(context.Context, *server.SimpleName) (*server.CommonResult, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetPageOfJS not implemented")
+}
+func (UnimplementedLoaderServer) GetPageOfCSS(context.Context, *server.SimpleName) (*server.CommonResult, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetPageOfCSS not implemented")
+}
func (UnimplementedLoaderServer) mustEmbedUnimplementedLoaderServer() {}
// UnsafeLoaderServer may be embedded to opt out of forward compatibility for this service.
@@ -921,6 +963,60 @@ func _Loader_GetBinding_Handler(srv interface{}, ctx context.Context, dec func(i
return interceptor(ctx, in, info, handler)
}
+func _Loader_GetMenus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(server.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(LoaderServer).GetMenus(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/remote.Loader/GetMenus",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(LoaderServer).GetMenus(ctx, req.(*server.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Loader_GetPageOfJS_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(server.SimpleName)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(LoaderServer).GetPageOfJS(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/remote.Loader/GetPageOfJS",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(LoaderServer).GetPageOfJS(ctx, req.(*server.SimpleName))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Loader_GetPageOfCSS_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(server.SimpleName)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(LoaderServer).GetPageOfCSS(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/remote.Loader/GetPageOfCSS",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(LoaderServer).GetPageOfCSS(ctx, req.(*server.SimpleName))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
// Loader_ServiceDesc is the grpc.ServiceDesc for Loader service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@@ -1036,6 +1132,18 @@ var Loader_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetBinding",
Handler: _Loader_GetBinding_Handler,
},
+ {
+ MethodName: "GetMenus",
+ Handler: _Loader_GetMenus_Handler,
+ },
+ {
+ MethodName: "GetPageOfJS",
+ Handler: _Loader_GetPageOfJS_Handler,
+ },
+ {
+ MethodName: "GetPageOfCSS",
+ Handler: _Loader_GetPageOfCSS_Handler,
+ },
},
Streams: []grpc.StreamDesc{},
Metadata: "pkg/testing/remote/loader.proto",
diff --git a/tools/make/run.mk b/tools/make/run.mk
index ac619eb6..f4fcc4b8 100644
--- a/tools/make/run.mk
+++ b/tools/make/run.mk
@@ -79,6 +79,6 @@ install-tool: hd
.PHONY: init-env
init-env: ## Install the tools to init env [not support windows]
-init-env: hd
+init-env: hd install-tool
hd i cli/cli
gh extension install linuxsuren/gh-dev