github.com/grailbio/base@v0.0.11/security/ticket/ticket.vdl.go (about)

     1  // This file was auto-generated by the vanadium vdl tool.
     2  // Package: ticket
     3  
     4  //nolint:golint
     5  package ticket
     6  
     7  import (
     8  	"fmt"
     9  
    10  	v23 "v.io/v23"
    11  	"v.io/v23/context"
    12  	"v.io/v23/rpc"
    13  	"v.io/v23/security/access"
    14  	"v.io/v23/vdl"
    15  )
    16  
    17  var _ = initializeVDL() // Must be first; see initializeVDL comments for details.
    18  
    19  // Type definitions
    20  // ================
    21  
    22  // TicketConfig Controls fields
    23  type Control int
    24  
    25  const (
    26  	ControlPagerDutyId Control = iota
    27  	ControlRationale
    28  	ControlTicketId
    29  )
    30  
    31  // ControlAll holds all labels for Control.
    32  var ControlAll = [...]Control{ControlPagerDutyId, ControlRationale, ControlTicketId}
    33  
    34  // ControlFromString creates a Control from a string label.
    35  //nolint:deadcode,unused
    36  func ControlFromString(label string) (x Control, err error) {
    37  	err = x.Set(label)
    38  	return
    39  }
    40  
    41  // Set assigns label to x.
    42  func (x *Control) Set(label string) error {
    43  	switch label {
    44  	case "PagerDutyId", "pagerdutyid":
    45  		*x = ControlPagerDutyId
    46  		return nil
    47  	case "Rationale", "rationale":
    48  		*x = ControlRationale
    49  		return nil
    50  	case "TicketId", "ticketid":
    51  		*x = ControlTicketId
    52  		return nil
    53  	}
    54  	*x = -1
    55  	return fmt.Errorf("unknown label %q in ticket.Control", label)
    56  }
    57  
    58  // String returns the string label of x.
    59  func (x Control) String() string {
    60  	switch x {
    61  	case ControlPagerDutyId:
    62  		return "PagerDutyId"
    63  	case ControlRationale:
    64  		return "Rationale"
    65  	case ControlTicketId:
    66  		return "TicketId"
    67  	}
    68  	return ""
    69  }
    70  
    71  func (Control) VDLReflect(struct {
    72  	Name string `vdl:"github.com/grailbio/base/security/ticket.Control"`
    73  	Enum struct{ PagerDutyId, Rationale, TicketId string }
    74  }) {
    75  }
    76  
    77  func (x Control) VDLIsZero() bool { //nolint:gocyclo
    78  	return x == ControlPagerDutyId
    79  }
    80  
    81  func (x Control) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
    82  	if err := enc.WriteValueString(vdlTypeEnum1, x.String()); err != nil {
    83  		return err
    84  	}
    85  	return nil
    86  }
    87  
    88  func (x *Control) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
    89  	switch value, err := dec.ReadValueString(); {
    90  	case err != nil:
    91  		return err
    92  	default:
    93  		if err := x.Set(value); err != nil {
    94  			return err
    95  		}
    96  	}
    97  	return nil
    98  }
    99  
   100  // AwsCredentials describes a set of (potentially temporary) AWS credentials.
   101  type AwsCredentials struct {
   102  	Region          string
   103  	AccessKeyId     string
   104  	SecretAccessKey string
   105  	SessionToken    string
   106  	// Expiration indicates the date on which the credentials expire.
   107  	Expiration string
   108  }
   109  
   110  func (AwsCredentials) VDLReflect(struct {
   111  	Name string `vdl:"github.com/grailbio/base/security/ticket.AwsCredentials"`
   112  }) {
   113  }
   114  
   115  func (x AwsCredentials) VDLIsZero() bool { //nolint:gocyclo
   116  	return x == AwsCredentials{}
   117  }
   118  
   119  func (x AwsCredentials) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
   120  	if err := enc.StartValue(vdlTypeStruct2); err != nil {
   121  		return err
   122  	}
   123  	if x.Region != "" {
   124  		if err := enc.NextFieldValueString(0, vdl.StringType, x.Region); err != nil {
   125  			return err
   126  		}
   127  	}
   128  	if x.AccessKeyId != "" {
   129  		if err := enc.NextFieldValueString(1, vdl.StringType, x.AccessKeyId); err != nil {
   130  			return err
   131  		}
   132  	}
   133  	if x.SecretAccessKey != "" {
   134  		if err := enc.NextFieldValueString(2, vdl.StringType, x.SecretAccessKey); err != nil {
   135  			return err
   136  		}
   137  	}
   138  	if x.SessionToken != "" {
   139  		if err := enc.NextFieldValueString(3, vdl.StringType, x.SessionToken); err != nil {
   140  			return err
   141  		}
   142  	}
   143  	if x.Expiration != "" {
   144  		if err := enc.NextFieldValueString(4, vdl.StringType, x.Expiration); err != nil {
   145  			return err
   146  		}
   147  	}
   148  	if err := enc.NextField(-1); err != nil {
   149  		return err
   150  	}
   151  	return enc.FinishValue()
   152  }
   153  
   154  func (x *AwsCredentials) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
   155  	*x = AwsCredentials{}
   156  	if err := dec.StartValue(vdlTypeStruct2); err != nil {
   157  		return err
   158  	}
   159  	decType := dec.Type()
   160  	for {
   161  		index, err := dec.NextField()
   162  		switch {
   163  		case err != nil:
   164  			return err
   165  		case index == -1:
   166  			return dec.FinishValue()
   167  		}
   168  		if decType != vdlTypeStruct2 {
   169  			index = vdlTypeStruct2.FieldIndexByName(decType.Field(index).Name)
   170  			if index == -1 {
   171  				if err := dec.SkipValue(); err != nil {
   172  					return err
   173  				}
   174  				continue
   175  			}
   176  		}
   177  		switch index {
   178  		case 0:
   179  			switch value, err := dec.ReadValueString(); {
   180  			case err != nil:
   181  				return err
   182  			default:
   183  				x.Region = value
   184  			}
   185  		case 1:
   186  			switch value, err := dec.ReadValueString(); {
   187  			case err != nil:
   188  				return err
   189  			default:
   190  				x.AccessKeyId = value
   191  			}
   192  		case 2:
   193  			switch value, err := dec.ReadValueString(); {
   194  			case err != nil:
   195  				return err
   196  			default:
   197  				x.SecretAccessKey = value
   198  			}
   199  		case 3:
   200  			switch value, err := dec.ReadValueString(); {
   201  			case err != nil:
   202  				return err
   203  			default:
   204  				x.SessionToken = value
   205  			}
   206  		case 4:
   207  			switch value, err := dec.ReadValueString(); {
   208  			case err != nil:
   209  				return err
   210  			default:
   211  				x.Expiration = value
   212  			}
   213  		}
   214  	}
   215  }
   216  
   217  // AwsAssumeRoleBuilder describes the information required to obtain a temporary
   218  // set of AWS credentials (which can be described using AwsCredentials) using
   219  // the AssumeRole call from Security Token Service (STS).
   220  type AwsAssumeRoleBuilder struct {
   221  	Region string
   222  	Role   string
   223  	TtlSec int32
   224  }
   225  
   226  func (AwsAssumeRoleBuilder) VDLReflect(struct {
   227  	Name string `vdl:"github.com/grailbio/base/security/ticket.AwsAssumeRoleBuilder"`
   228  }) {
   229  }
   230  
   231  func (x AwsAssumeRoleBuilder) VDLIsZero() bool { //nolint:gocyclo
   232  	return x == AwsAssumeRoleBuilder{}
   233  }
   234  
   235  func (x AwsAssumeRoleBuilder) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
   236  	if err := enc.StartValue(vdlTypeStruct3); err != nil {
   237  		return err
   238  	}
   239  	if x.Region != "" {
   240  		if err := enc.NextFieldValueString(0, vdl.StringType, x.Region); err != nil {
   241  			return err
   242  		}
   243  	}
   244  	if x.Role != "" {
   245  		if err := enc.NextFieldValueString(1, vdl.StringType, x.Role); err != nil {
   246  			return err
   247  		}
   248  	}
   249  	if x.TtlSec != 0 {
   250  		if err := enc.NextFieldValueInt(2, vdl.Int32Type, int64(x.TtlSec)); err != nil {
   251  			return err
   252  		}
   253  	}
   254  	if err := enc.NextField(-1); err != nil {
   255  		return err
   256  	}
   257  	return enc.FinishValue()
   258  }
   259  
   260  func (x *AwsAssumeRoleBuilder) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
   261  	*x = AwsAssumeRoleBuilder{}
   262  	if err := dec.StartValue(vdlTypeStruct3); err != nil {
   263  		return err
   264  	}
   265  	decType := dec.Type()
   266  	for {
   267  		index, err := dec.NextField()
   268  		switch {
   269  		case err != nil:
   270  			return err
   271  		case index == -1:
   272  			return dec.FinishValue()
   273  		}
   274  		if decType != vdlTypeStruct3 {
   275  			index = vdlTypeStruct3.FieldIndexByName(decType.Field(index).Name)
   276  			if index == -1 {
   277  				if err := dec.SkipValue(); err != nil {
   278  					return err
   279  				}
   280  				continue
   281  			}
   282  		}
   283  		switch index {
   284  		case 0:
   285  			switch value, err := dec.ReadValueString(); {
   286  			case err != nil:
   287  				return err
   288  			default:
   289  				x.Region = value
   290  			}
   291  		case 1:
   292  			switch value, err := dec.ReadValueString(); {
   293  			case err != nil:
   294  				return err
   295  			default:
   296  				x.Role = value
   297  			}
   298  		case 2:
   299  			switch value, err := dec.ReadValueInt(32); {
   300  			case err != nil:
   301  				return err
   302  			default:
   303  				x.TtlSec = int32(value)
   304  			}
   305  		}
   306  	}
   307  }
   308  
   309  // AwsSessionBuilder describes the information required to obtain a temporary
   310  // set of AWS credentials (described using AwsCredentials) then using
   311  // the GetSessionToken call from Security Token Service (STS).
   312  type AwsSessionBuilder struct {
   313  	AwsCredentials AwsCredentials
   314  	// TTL in seconds for the generated AWS credential from 900-129600.
   315  	TtlSec int32
   316  }
   317  
   318  func (AwsSessionBuilder) VDLReflect(struct {
   319  	Name string `vdl:"github.com/grailbio/base/security/ticket.AwsSessionBuilder"`
   320  }) {
   321  }
   322  
   323  func (x AwsSessionBuilder) VDLIsZero() bool { //nolint:gocyclo
   324  	return x == AwsSessionBuilder{}
   325  }
   326  
   327  func (x AwsSessionBuilder) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
   328  	if err := enc.StartValue(vdlTypeStruct4); err != nil {
   329  		return err
   330  	}
   331  	if x.AwsCredentials != (AwsCredentials{}) {
   332  		if err := enc.NextField(0); err != nil {
   333  			return err
   334  		}
   335  		if err := x.AwsCredentials.VDLWrite(enc); err != nil {
   336  			return err
   337  		}
   338  	}
   339  	if x.TtlSec != 0 {
   340  		if err := enc.NextFieldValueInt(1, vdl.Int32Type, int64(x.TtlSec)); err != nil {
   341  			return err
   342  		}
   343  	}
   344  	if err := enc.NextField(-1); err != nil {
   345  		return err
   346  	}
   347  	return enc.FinishValue()
   348  }
   349  
   350  func (x *AwsSessionBuilder) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
   351  	*x = AwsSessionBuilder{}
   352  	if err := dec.StartValue(vdlTypeStruct4); err != nil {
   353  		return err
   354  	}
   355  	decType := dec.Type()
   356  	for {
   357  		index, err := dec.NextField()
   358  		switch {
   359  		case err != nil:
   360  			return err
   361  		case index == -1:
   362  			return dec.FinishValue()
   363  		}
   364  		if decType != vdlTypeStruct4 {
   365  			index = vdlTypeStruct4.FieldIndexByName(decType.Field(index).Name)
   366  			if index == -1 {
   367  				if err := dec.SkipValue(); err != nil {
   368  					return err
   369  				}
   370  				continue
   371  			}
   372  		}
   373  		switch index {
   374  		case 0:
   375  			if err := x.AwsCredentials.VDLRead(dec); err != nil {
   376  				return err
   377  			}
   378  		case 1:
   379  			switch value, err := dec.ReadValueInt(32); {
   380  			case err != nil:
   381  				return err
   382  			default:
   383  				x.TtlSec = int32(value)
   384  			}
   385  		}
   386  	}
   387  }
   388  
   389  // TlsCertAuthorityBuilder describes a Certification Authority capable to
   390  // generate a particular cert.
   391  type TlsCertAuthorityBuilder struct {
   392  	// PEM-encoded certificate and private key of the Certificate Authority.
   393  	Authority string
   394  	// TTL for the generated cert.
   395  	TtlSec int32
   396  	// Common Name of the generated cert.
   397  	CommonName string
   398  	// Subject Alternate Name list.
   399  	// Note: x509 spec says if SAN is set, CN is usually ignored.
   400  	//       Include CN in SAN list if you want the CN to be verified.
   401  	San []string
   402  }
   403  
   404  func (TlsCertAuthorityBuilder) VDLReflect(struct {
   405  	Name string `vdl:"github.com/grailbio/base/security/ticket.TlsCertAuthorityBuilder"`
   406  }) {
   407  }
   408  
   409  func (x TlsCertAuthorityBuilder) VDLIsZero() bool { //nolint:gocyclo
   410  	if x.Authority != "" {
   411  		return false
   412  	}
   413  	if x.TtlSec != 0 {
   414  		return false
   415  	}
   416  	if x.CommonName != "" {
   417  		return false
   418  	}
   419  	if len(x.San) != 0 {
   420  		return false
   421  	}
   422  	return true
   423  }
   424  
   425  func (x TlsCertAuthorityBuilder) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
   426  	if err := enc.StartValue(vdlTypeStruct5); err != nil {
   427  		return err
   428  	}
   429  	if x.Authority != "" {
   430  		if err := enc.NextFieldValueString(0, vdl.StringType, x.Authority); err != nil {
   431  			return err
   432  		}
   433  	}
   434  	if x.TtlSec != 0 {
   435  		if err := enc.NextFieldValueInt(1, vdl.Int32Type, int64(x.TtlSec)); err != nil {
   436  			return err
   437  		}
   438  	}
   439  	if x.CommonName != "" {
   440  		if err := enc.NextFieldValueString(2, vdl.StringType, x.CommonName); err != nil {
   441  			return err
   442  		}
   443  	}
   444  	if len(x.San) != 0 {
   445  		if err := enc.NextField(3); err != nil {
   446  			return err
   447  		}
   448  		if err := vdlWriteAnonList1(enc, x.San); err != nil {
   449  			return err
   450  		}
   451  	}
   452  	if err := enc.NextField(-1); err != nil {
   453  		return err
   454  	}
   455  	return enc.FinishValue()
   456  }
   457  
   458  func vdlWriteAnonList1(enc vdl.Encoder, x []string) error {
   459  	if err := enc.StartValue(vdlTypeList6); err != nil {
   460  		return err
   461  	}
   462  	if err := enc.SetLenHint(len(x)); err != nil {
   463  		return err
   464  	}
   465  	for _, elem := range x {
   466  		if err := enc.NextEntryValueString(vdl.StringType, elem); err != nil {
   467  			return err
   468  		}
   469  	}
   470  	if err := enc.NextEntry(true); err != nil {
   471  		return err
   472  	}
   473  	return enc.FinishValue()
   474  }
   475  
   476  func (x *TlsCertAuthorityBuilder) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
   477  	*x = TlsCertAuthorityBuilder{}
   478  	if err := dec.StartValue(vdlTypeStruct5); err != nil {
   479  		return err
   480  	}
   481  	decType := dec.Type()
   482  	for {
   483  		index, err := dec.NextField()
   484  		switch {
   485  		case err != nil:
   486  			return err
   487  		case index == -1:
   488  			return dec.FinishValue()
   489  		}
   490  		if decType != vdlTypeStruct5 {
   491  			index = vdlTypeStruct5.FieldIndexByName(decType.Field(index).Name)
   492  			if index == -1 {
   493  				if err := dec.SkipValue(); err != nil {
   494  					return err
   495  				}
   496  				continue
   497  			}
   498  		}
   499  		switch index {
   500  		case 0:
   501  			switch value, err := dec.ReadValueString(); {
   502  			case err != nil:
   503  				return err
   504  			default:
   505  				x.Authority = value
   506  			}
   507  		case 1:
   508  			switch value, err := dec.ReadValueInt(32); {
   509  			case err != nil:
   510  				return err
   511  			default:
   512  				x.TtlSec = int32(value)
   513  			}
   514  		case 2:
   515  			switch value, err := dec.ReadValueString(); {
   516  			case err != nil:
   517  				return err
   518  			default:
   519  				x.CommonName = value
   520  			}
   521  		case 3:
   522  			if err := vdlReadAnonList1(dec, &x.San); err != nil {
   523  				return err
   524  			}
   525  		}
   526  	}
   527  }
   528  
   529  func vdlReadAnonList1(dec vdl.Decoder, x *[]string) error {
   530  	if err := dec.StartValue(vdlTypeList6); err != nil {
   531  		return err
   532  	}
   533  	if len := dec.LenHint(); len > 0 {
   534  		*x = make([]string, 0, len)
   535  	} else {
   536  		*x = nil
   537  	}
   538  	for {
   539  		switch done, elem, err := dec.NextEntryValueString(); {
   540  		case err != nil:
   541  			return err
   542  		case done:
   543  			return dec.FinishValue()
   544  		default:
   545  			*x = append(*x, elem)
   546  		}
   547  	}
   548  }
   549  
   550  type SshCertAuthorityBuilder struct {
   551  	// ssh-encoded private key of the Certificate Authority.
   552  	CaPrivateKey string
   553  	// ssh-encoded Certificate
   554  	CaCertificate string
   555  	// ssh-encoded Public key that will be signed to create the certificate.
   556  	PublicKey string
   557  	// Additional SSH Cert options like
   558  	//    permit-X11-forwarding
   559  	//    permit-agent-forwarding
   560  	//    permit-port-forwarding
   561  	//    permit-pty
   562  	//    permit-user-rc
   563  	ExtensionsOptions []string
   564  	// Additional SSH Options that are required to be valid/accepted
   565  	CriticalOptions []string
   566  	// The Usernames that this key can connect as - defaults as
   567  	//   ubuntu
   568  	//   core
   569  	//   ec2-user
   570  	Principals []string
   571  	// TTL for the generated cert - user cert < 60 ; host cert < 2628000 (5 years)
   572  	TtlMin int32
   573  }
   574  
   575  func (SshCertAuthorityBuilder) VDLReflect(struct {
   576  	Name string `vdl:"github.com/grailbio/base/security/ticket.SshCertAuthorityBuilder"`
   577  }) {
   578  }
   579  
   580  func (x SshCertAuthorityBuilder) VDLIsZero() bool { //nolint:gocyclo
   581  	if x.CaPrivateKey != "" {
   582  		return false
   583  	}
   584  	if x.CaCertificate != "" {
   585  		return false
   586  	}
   587  	if x.PublicKey != "" {
   588  		return false
   589  	}
   590  	if len(x.ExtensionsOptions) != 0 {
   591  		return false
   592  	}
   593  	if len(x.CriticalOptions) != 0 {
   594  		return false
   595  	}
   596  	if len(x.Principals) != 0 {
   597  		return false
   598  	}
   599  	if x.TtlMin != 0 {
   600  		return false
   601  	}
   602  	return true
   603  }
   604  
   605  func (x SshCertAuthorityBuilder) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
   606  	if err := enc.StartValue(vdlTypeStruct7); err != nil {
   607  		return err
   608  	}
   609  	if x.CaPrivateKey != "" {
   610  		if err := enc.NextFieldValueString(0, vdl.StringType, x.CaPrivateKey); err != nil {
   611  			return err
   612  		}
   613  	}
   614  	if x.CaCertificate != "" {
   615  		if err := enc.NextFieldValueString(1, vdl.StringType, x.CaCertificate); err != nil {
   616  			return err
   617  		}
   618  	}
   619  	if x.PublicKey != "" {
   620  		if err := enc.NextFieldValueString(2, vdl.StringType, x.PublicKey); err != nil {
   621  			return err
   622  		}
   623  	}
   624  	if len(x.ExtensionsOptions) != 0 {
   625  		if err := enc.NextField(3); err != nil {
   626  			return err
   627  		}
   628  		if err := vdlWriteAnonList1(enc, x.ExtensionsOptions); err != nil {
   629  			return err
   630  		}
   631  	}
   632  	if len(x.CriticalOptions) != 0 {
   633  		if err := enc.NextField(4); err != nil {
   634  			return err
   635  		}
   636  		if err := vdlWriteAnonList1(enc, x.CriticalOptions); err != nil {
   637  			return err
   638  		}
   639  	}
   640  	if len(x.Principals) != 0 {
   641  		if err := enc.NextField(5); err != nil {
   642  			return err
   643  		}
   644  		if err := vdlWriteAnonList1(enc, x.Principals); err != nil {
   645  			return err
   646  		}
   647  	}
   648  	if x.TtlMin != 0 {
   649  		if err := enc.NextFieldValueInt(6, vdl.Int32Type, int64(x.TtlMin)); err != nil {
   650  			return err
   651  		}
   652  	}
   653  	if err := enc.NextField(-1); err != nil {
   654  		return err
   655  	}
   656  	return enc.FinishValue()
   657  }
   658  
   659  func (x *SshCertAuthorityBuilder) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
   660  	*x = SshCertAuthorityBuilder{}
   661  	if err := dec.StartValue(vdlTypeStruct7); err != nil {
   662  		return err
   663  	}
   664  	decType := dec.Type()
   665  	for {
   666  		index, err := dec.NextField()
   667  		switch {
   668  		case err != nil:
   669  			return err
   670  		case index == -1:
   671  			return dec.FinishValue()
   672  		}
   673  		if decType != vdlTypeStruct7 {
   674  			index = vdlTypeStruct7.FieldIndexByName(decType.Field(index).Name)
   675  			if index == -1 {
   676  				if err := dec.SkipValue(); err != nil {
   677  					return err
   678  				}
   679  				continue
   680  			}
   681  		}
   682  		switch index {
   683  		case 0:
   684  			switch value, err := dec.ReadValueString(); {
   685  			case err != nil:
   686  				return err
   687  			default:
   688  				x.CaPrivateKey = value
   689  			}
   690  		case 1:
   691  			switch value, err := dec.ReadValueString(); {
   692  			case err != nil:
   693  				return err
   694  			default:
   695  				x.CaCertificate = value
   696  			}
   697  		case 2:
   698  			switch value, err := dec.ReadValueString(); {
   699  			case err != nil:
   700  				return err
   701  			default:
   702  				x.PublicKey = value
   703  			}
   704  		case 3:
   705  			if err := vdlReadAnonList1(dec, &x.ExtensionsOptions); err != nil {
   706  				return err
   707  			}
   708  		case 4:
   709  			if err := vdlReadAnonList1(dec, &x.CriticalOptions); err != nil {
   710  				return err
   711  			}
   712  		case 5:
   713  			if err := vdlReadAnonList1(dec, &x.Principals); err != nil {
   714  				return err
   715  			}
   716  		case 6:
   717  			switch value, err := dec.ReadValueInt(32); {
   718  			case err != nil:
   719  				return err
   720  			default:
   721  				x.TtlMin = int32(value)
   722  			}
   723  		}
   724  	}
   725  }
   726  
   727  // B2AccountAuthorizationBuilder describes the information required to
   728  // obtain a B2 account authorization.
   729  type B2AccountAuthorizationBuilder struct {
   730  	AccountId      string
   731  	ApplicationKey string
   732  }
   733  
   734  func (B2AccountAuthorizationBuilder) VDLReflect(struct {
   735  	Name string `vdl:"github.com/grailbio/base/security/ticket.B2AccountAuthorizationBuilder"`
   736  }) {
   737  }
   738  
   739  func (x B2AccountAuthorizationBuilder) VDLIsZero() bool { //nolint:gocyclo
   740  	return x == B2AccountAuthorizationBuilder{}
   741  }
   742  
   743  func (x B2AccountAuthorizationBuilder) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
   744  	if err := enc.StartValue(vdlTypeStruct8); err != nil {
   745  		return err
   746  	}
   747  	if x.AccountId != "" {
   748  		if err := enc.NextFieldValueString(0, vdl.StringType, x.AccountId); err != nil {
   749  			return err
   750  		}
   751  	}
   752  	if x.ApplicationKey != "" {
   753  		if err := enc.NextFieldValueString(1, vdl.StringType, x.ApplicationKey); err != nil {
   754  			return err
   755  		}
   756  	}
   757  	if err := enc.NextField(-1); err != nil {
   758  		return err
   759  	}
   760  	return enc.FinishValue()
   761  }
   762  
   763  func (x *B2AccountAuthorizationBuilder) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
   764  	*x = B2AccountAuthorizationBuilder{}
   765  	if err := dec.StartValue(vdlTypeStruct8); err != nil {
   766  		return err
   767  	}
   768  	decType := dec.Type()
   769  	for {
   770  		index, err := dec.NextField()
   771  		switch {
   772  		case err != nil:
   773  			return err
   774  		case index == -1:
   775  			return dec.FinishValue()
   776  		}
   777  		if decType != vdlTypeStruct8 {
   778  			index = vdlTypeStruct8.FieldIndexByName(decType.Field(index).Name)
   779  			if index == -1 {
   780  				if err := dec.SkipValue(); err != nil {
   781  					return err
   782  				}
   783  				continue
   784  			}
   785  		}
   786  		switch index {
   787  		case 0:
   788  			switch value, err := dec.ReadValueString(); {
   789  			case err != nil:
   790  				return err
   791  			default:
   792  				x.AccountId = value
   793  			}
   794  		case 1:
   795  			switch value, err := dec.ReadValueString(); {
   796  			case err != nil:
   797  				return err
   798  			default:
   799  				x.ApplicationKey = value
   800  			}
   801  		}
   802  	}
   803  }
   804  
   805  // VanadiumBuilder describes the information required to build Vanadium
   806  // blessings.
   807  type VanadiumBuilder struct {
   808  	BlessingName string
   809  }
   810  
   811  func (VanadiumBuilder) VDLReflect(struct {
   812  	Name string `vdl:"github.com/grailbio/base/security/ticket.VanadiumBuilder"`
   813  }) {
   814  }
   815  
   816  func (x VanadiumBuilder) VDLIsZero() bool { //nolint:gocyclo
   817  	return x == VanadiumBuilder{}
   818  }
   819  
   820  func (x VanadiumBuilder) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
   821  	if err := enc.StartValue(vdlTypeStruct9); err != nil {
   822  		return err
   823  	}
   824  	if x.BlessingName != "" {
   825  		if err := enc.NextFieldValueString(0, vdl.StringType, x.BlessingName); err != nil {
   826  			return err
   827  		}
   828  	}
   829  	if err := enc.NextField(-1); err != nil {
   830  		return err
   831  	}
   832  	return enc.FinishValue()
   833  }
   834  
   835  func (x *VanadiumBuilder) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
   836  	*x = VanadiumBuilder{}
   837  	if err := dec.StartValue(vdlTypeStruct9); err != nil {
   838  		return err
   839  	}
   840  	decType := dec.Type()
   841  	for {
   842  		index, err := dec.NextField()
   843  		switch {
   844  		case err != nil:
   845  			return err
   846  		case index == -1:
   847  			return dec.FinishValue()
   848  		}
   849  		if decType != vdlTypeStruct9 {
   850  			index = vdlTypeStruct9.FieldIndexByName(decType.Field(index).Name)
   851  			if index == -1 {
   852  				if err := dec.SkipValue(); err != nil {
   853  					return err
   854  				}
   855  				continue
   856  			}
   857  		}
   858  		if index == 0 {
   859  
   860  			switch value, err := dec.ReadValueString(); {
   861  			case err != nil:
   862  				return err
   863  			default:
   864  				x.BlessingName = value
   865  			}
   866  		}
   867  	}
   868  }
   869  
   870  // AwsTicket is a ticket that contains a set of (potentially temporary)
   871  // AWS credentials.
   872  type AwsTicket struct {
   873  	AwsAssumeRoleBuilder *AwsAssumeRoleBuilder
   874  	AwsSessionBuilder    *AwsSessionBuilder
   875  	AwsCredentials       AwsCredentials
   876  }
   877  
   878  func (AwsTicket) VDLReflect(struct {
   879  	Name string `vdl:"github.com/grailbio/base/security/ticket.AwsTicket"`
   880  }) {
   881  }
   882  
   883  func (x AwsTicket) VDLIsZero() bool { //nolint:gocyclo
   884  	return x == AwsTicket{}
   885  }
   886  
   887  func (x AwsTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
   888  	if err := enc.StartValue(vdlTypeStruct10); err != nil {
   889  		return err
   890  	}
   891  	if x.AwsAssumeRoleBuilder != nil {
   892  		if err := enc.NextField(0); err != nil {
   893  			return err
   894  		}
   895  		enc.SetNextStartValueIsOptional()
   896  		if err := x.AwsAssumeRoleBuilder.VDLWrite(enc); err != nil {
   897  			return err
   898  		}
   899  	}
   900  	if x.AwsSessionBuilder != nil {
   901  		if err := enc.NextField(1); err != nil {
   902  			return err
   903  		}
   904  		enc.SetNextStartValueIsOptional()
   905  		if err := x.AwsSessionBuilder.VDLWrite(enc); err != nil {
   906  			return err
   907  		}
   908  	}
   909  	if x.AwsCredentials != (AwsCredentials{}) {
   910  		if err := enc.NextField(2); err != nil {
   911  			return err
   912  		}
   913  		if err := x.AwsCredentials.VDLWrite(enc); err != nil {
   914  			return err
   915  		}
   916  	}
   917  	if err := enc.NextField(-1); err != nil {
   918  		return err
   919  	}
   920  	return enc.FinishValue()
   921  }
   922  
   923  func (x *AwsTicket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
   924  	*x = AwsTicket{}
   925  	if err := dec.StartValue(vdlTypeStruct10); err != nil {
   926  		return err
   927  	}
   928  	decType := dec.Type()
   929  	for {
   930  		index, err := dec.NextField()
   931  		switch {
   932  		case err != nil:
   933  			return err
   934  		case index == -1:
   935  			return dec.FinishValue()
   936  		}
   937  		if decType != vdlTypeStruct10 {
   938  			index = vdlTypeStruct10.FieldIndexByName(decType.Field(index).Name)
   939  			if index == -1 {
   940  				if err := dec.SkipValue(); err != nil {
   941  					return err
   942  				}
   943  				continue
   944  			}
   945  		}
   946  		switch index {
   947  		case 0:
   948  			if err := dec.StartValue(vdlTypeOptional11); err != nil {
   949  				return err
   950  			}
   951  			if dec.IsNil() {
   952  				x.AwsAssumeRoleBuilder = nil
   953  				if err := dec.FinishValue(); err != nil {
   954  					return err
   955  				}
   956  			} else {
   957  				x.AwsAssumeRoleBuilder = new(AwsAssumeRoleBuilder)
   958  				dec.IgnoreNextStartValue()
   959  				if err := x.AwsAssumeRoleBuilder.VDLRead(dec); err != nil {
   960  					return err
   961  				}
   962  			}
   963  		case 1:
   964  			if err := dec.StartValue(vdlTypeOptional12); err != nil {
   965  				return err
   966  			}
   967  			if dec.IsNil() {
   968  				x.AwsSessionBuilder = nil
   969  				if err := dec.FinishValue(); err != nil {
   970  					return err
   971  				}
   972  			} else {
   973  				x.AwsSessionBuilder = new(AwsSessionBuilder)
   974  				dec.IgnoreNextStartValue()
   975  				if err := x.AwsSessionBuilder.VDLRead(dec); err != nil {
   976  					return err
   977  				}
   978  			}
   979  		case 2:
   980  			if err := x.AwsCredentials.VDLRead(dec); err != nil {
   981  				return err
   982  			}
   983  		}
   984  	}
   985  }
   986  
   987  // S3Ticket describes an AWS S3 object or prefix.
   988  type S3Ticket struct {
   989  	AwsAssumeRoleBuilder *AwsAssumeRoleBuilder
   990  	AwsSessionBuilder    *AwsSessionBuilder
   991  	AwsCredentials       AwsCredentials
   992  	Endpoint             string
   993  	Bucket               string
   994  	Prefix               string
   995  }
   996  
   997  func (S3Ticket) VDLReflect(struct {
   998  	Name string `vdl:"github.com/grailbio/base/security/ticket.S3Ticket"`
   999  }) {
  1000  }
  1001  
  1002  func (x S3Ticket) VDLIsZero() bool { //nolint:gocyclo
  1003  	return x == S3Ticket{}
  1004  }
  1005  
  1006  func (x S3Ticket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  1007  	if err := enc.StartValue(vdlTypeStruct13); err != nil {
  1008  		return err
  1009  	}
  1010  	if x.AwsAssumeRoleBuilder != nil {
  1011  		if err := enc.NextField(0); err != nil {
  1012  			return err
  1013  		}
  1014  		enc.SetNextStartValueIsOptional()
  1015  		if err := x.AwsAssumeRoleBuilder.VDLWrite(enc); err != nil {
  1016  			return err
  1017  		}
  1018  	}
  1019  	if x.AwsSessionBuilder != nil {
  1020  		if err := enc.NextField(1); err != nil {
  1021  			return err
  1022  		}
  1023  		enc.SetNextStartValueIsOptional()
  1024  		if err := x.AwsSessionBuilder.VDLWrite(enc); err != nil {
  1025  			return err
  1026  		}
  1027  	}
  1028  	if x.AwsCredentials != (AwsCredentials{}) {
  1029  		if err := enc.NextField(2); err != nil {
  1030  			return err
  1031  		}
  1032  		if err := x.AwsCredentials.VDLWrite(enc); err != nil {
  1033  			return err
  1034  		}
  1035  	}
  1036  	if x.Endpoint != "" {
  1037  		if err := enc.NextFieldValueString(3, vdl.StringType, x.Endpoint); err != nil {
  1038  			return err
  1039  		}
  1040  	}
  1041  	if x.Bucket != "" {
  1042  		if err := enc.NextFieldValueString(4, vdl.StringType, x.Bucket); err != nil {
  1043  			return err
  1044  		}
  1045  	}
  1046  	if x.Prefix != "" {
  1047  		if err := enc.NextFieldValueString(5, vdl.StringType, x.Prefix); err != nil {
  1048  			return err
  1049  		}
  1050  	}
  1051  	if err := enc.NextField(-1); err != nil {
  1052  		return err
  1053  	}
  1054  	return enc.FinishValue()
  1055  }
  1056  
  1057  func (x *S3Ticket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  1058  	*x = S3Ticket{}
  1059  	if err := dec.StartValue(vdlTypeStruct13); err != nil {
  1060  		return err
  1061  	}
  1062  	decType := dec.Type()
  1063  	for {
  1064  		index, err := dec.NextField()
  1065  		switch {
  1066  		case err != nil:
  1067  			return err
  1068  		case index == -1:
  1069  			return dec.FinishValue()
  1070  		}
  1071  		if decType != vdlTypeStruct13 {
  1072  			index = vdlTypeStruct13.FieldIndexByName(decType.Field(index).Name)
  1073  			if index == -1 {
  1074  				if err := dec.SkipValue(); err != nil {
  1075  					return err
  1076  				}
  1077  				continue
  1078  			}
  1079  		}
  1080  		switch index {
  1081  		case 0:
  1082  			if err := dec.StartValue(vdlTypeOptional11); err != nil {
  1083  				return err
  1084  			}
  1085  			if dec.IsNil() {
  1086  				x.AwsAssumeRoleBuilder = nil
  1087  				if err := dec.FinishValue(); err != nil {
  1088  					return err
  1089  				}
  1090  			} else {
  1091  				x.AwsAssumeRoleBuilder = new(AwsAssumeRoleBuilder)
  1092  				dec.IgnoreNextStartValue()
  1093  				if err := x.AwsAssumeRoleBuilder.VDLRead(dec); err != nil {
  1094  					return err
  1095  				}
  1096  			}
  1097  		case 1:
  1098  			if err := dec.StartValue(vdlTypeOptional12); err != nil {
  1099  				return err
  1100  			}
  1101  			if dec.IsNil() {
  1102  				x.AwsSessionBuilder = nil
  1103  				if err := dec.FinishValue(); err != nil {
  1104  					return err
  1105  				}
  1106  			} else {
  1107  				x.AwsSessionBuilder = new(AwsSessionBuilder)
  1108  				dec.IgnoreNextStartValue()
  1109  				if err := x.AwsSessionBuilder.VDLRead(dec); err != nil {
  1110  					return err
  1111  				}
  1112  			}
  1113  		case 2:
  1114  			if err := x.AwsCredentials.VDLRead(dec); err != nil {
  1115  				return err
  1116  			}
  1117  		case 3:
  1118  			switch value, err := dec.ReadValueString(); {
  1119  			case err != nil:
  1120  				return err
  1121  			default:
  1122  				x.Endpoint = value
  1123  			}
  1124  		case 4:
  1125  			switch value, err := dec.ReadValueString(); {
  1126  			case err != nil:
  1127  				return err
  1128  			default:
  1129  				x.Bucket = value
  1130  			}
  1131  		case 5:
  1132  			switch value, err := dec.ReadValueString(); {
  1133  			case err != nil:
  1134  				return err
  1135  			default:
  1136  				x.Prefix = value
  1137  			}
  1138  		}
  1139  	}
  1140  }
  1141  
  1142  // EcrTicket describes an AWS EC2 Container Registry.
  1143  type EcrTicket struct {
  1144  	AwsAssumeRoleBuilder *AwsAssumeRoleBuilder
  1145  	// The base64-encoded authorization token which can be presented directly to
  1146  	// the Docker registry.
  1147  	// Reference: https://docs.docker.com/registry/spec/auth/token/
  1148  	AuthorizationToken string
  1149  	// Expiration indicates the date on which the authorization token expire.
  1150  	Expiration string
  1151  	// The register URL ("https://${ACCOUNTID}.dkr.ecr.region.amazonaws.com").
  1152  	Endpoint string
  1153  }
  1154  
  1155  func (EcrTicket) VDLReflect(struct {
  1156  	Name string `vdl:"github.com/grailbio/base/security/ticket.EcrTicket"`
  1157  }) {
  1158  }
  1159  
  1160  func (x EcrTicket) VDLIsZero() bool { //nolint:gocyclo
  1161  	return x == EcrTicket{}
  1162  }
  1163  
  1164  func (x EcrTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  1165  	if err := enc.StartValue(vdlTypeStruct14); err != nil {
  1166  		return err
  1167  	}
  1168  	if x.AwsAssumeRoleBuilder != nil {
  1169  		if err := enc.NextField(0); err != nil {
  1170  			return err
  1171  		}
  1172  		enc.SetNextStartValueIsOptional()
  1173  		if err := x.AwsAssumeRoleBuilder.VDLWrite(enc); err != nil {
  1174  			return err
  1175  		}
  1176  	}
  1177  	if x.AuthorizationToken != "" {
  1178  		if err := enc.NextFieldValueString(1, vdl.StringType, x.AuthorizationToken); err != nil {
  1179  			return err
  1180  		}
  1181  	}
  1182  	if x.Expiration != "" {
  1183  		if err := enc.NextFieldValueString(2, vdl.StringType, x.Expiration); err != nil {
  1184  			return err
  1185  		}
  1186  	}
  1187  	if x.Endpoint != "" {
  1188  		if err := enc.NextFieldValueString(3, vdl.StringType, x.Endpoint); err != nil {
  1189  			return err
  1190  		}
  1191  	}
  1192  	if err := enc.NextField(-1); err != nil {
  1193  		return err
  1194  	}
  1195  	return enc.FinishValue()
  1196  }
  1197  
  1198  func (x *EcrTicket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  1199  	*x = EcrTicket{}
  1200  	if err := dec.StartValue(vdlTypeStruct14); err != nil {
  1201  		return err
  1202  	}
  1203  	decType := dec.Type()
  1204  	for {
  1205  		index, err := dec.NextField()
  1206  		switch {
  1207  		case err != nil:
  1208  			return err
  1209  		case index == -1:
  1210  			return dec.FinishValue()
  1211  		}
  1212  		if decType != vdlTypeStruct14 {
  1213  			index = vdlTypeStruct14.FieldIndexByName(decType.Field(index).Name)
  1214  			if index == -1 {
  1215  				if err := dec.SkipValue(); err != nil {
  1216  					return err
  1217  				}
  1218  				continue
  1219  			}
  1220  		}
  1221  		switch index {
  1222  		case 0:
  1223  			if err := dec.StartValue(vdlTypeOptional11); err != nil {
  1224  				return err
  1225  			}
  1226  			if dec.IsNil() {
  1227  				x.AwsAssumeRoleBuilder = nil
  1228  				if err := dec.FinishValue(); err != nil {
  1229  					return err
  1230  				}
  1231  			} else {
  1232  				x.AwsAssumeRoleBuilder = new(AwsAssumeRoleBuilder)
  1233  				dec.IgnoreNextStartValue()
  1234  				if err := x.AwsAssumeRoleBuilder.VDLRead(dec); err != nil {
  1235  					return err
  1236  				}
  1237  			}
  1238  		case 1:
  1239  			switch value, err := dec.ReadValueString(); {
  1240  			case err != nil:
  1241  				return err
  1242  			default:
  1243  				x.AuthorizationToken = value
  1244  			}
  1245  		case 2:
  1246  			switch value, err := dec.ReadValueString(); {
  1247  			case err != nil:
  1248  				return err
  1249  			default:
  1250  				x.Expiration = value
  1251  			}
  1252  		case 3:
  1253  			switch value, err := dec.ReadValueString(); {
  1254  			case err != nil:
  1255  				return err
  1256  			default:
  1257  				x.Endpoint = value
  1258  			}
  1259  		}
  1260  	}
  1261  }
  1262  
  1263  // SshCert describes a ssh public Certifcate
  1264  type SshCert struct {
  1265  	// ssh-encoded certificate (host or user).
  1266  	Cert string
  1267  }
  1268  
  1269  func (SshCert) VDLReflect(struct {
  1270  	Name string `vdl:"github.com/grailbio/base/security/ticket.SshCert"`
  1271  }) {
  1272  }
  1273  
  1274  func (x SshCert) VDLIsZero() bool { //nolint:gocyclo
  1275  	return x == SshCert{}
  1276  }
  1277  
  1278  func (x SshCert) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  1279  	if err := enc.StartValue(vdlTypeStruct15); err != nil {
  1280  		return err
  1281  	}
  1282  	if x.Cert != "" {
  1283  		if err := enc.NextFieldValueString(0, vdl.StringType, x.Cert); err != nil {
  1284  			return err
  1285  		}
  1286  	}
  1287  	if err := enc.NextField(-1); err != nil {
  1288  		return err
  1289  	}
  1290  	return enc.FinishValue()
  1291  }
  1292  
  1293  func (x *SshCert) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  1294  	*x = SshCert{}
  1295  	if err := dec.StartValue(vdlTypeStruct15); err != nil {
  1296  		return err
  1297  	}
  1298  	decType := dec.Type()
  1299  	for {
  1300  		index, err := dec.NextField()
  1301  		switch {
  1302  		case err != nil:
  1303  			return err
  1304  		case index == -1:
  1305  			return dec.FinishValue()
  1306  		}
  1307  		if decType != vdlTypeStruct15 {
  1308  			index = vdlTypeStruct15.FieldIndexByName(decType.Field(index).Name)
  1309  			if index == -1 {
  1310  				if err := dec.SkipValue(); err != nil {
  1311  					return err
  1312  				}
  1313  				continue
  1314  			}
  1315  		}
  1316  		if index == 0 {
  1317  
  1318  			switch value, err := dec.ReadValueString(); {
  1319  			case err != nil:
  1320  				return err
  1321  			default:
  1322  				x.Cert = value
  1323  			}
  1324  		}
  1325  	}
  1326  }
  1327  
  1328  // TlsCredentials describes a generic set of Tls credentials that include:
  1329  // the CA that accepted by the client (only peers that present a certificate
  1330  // sign by this CA are accepted), the client certificate and the client
  1331  // private key.
  1332  type TlsCredentials struct {
  1333  	// PEM-encoded public certificate of the Certificate Authority.
  1334  	AuthorityCert string
  1335  	// PEM-encoded client certificate.
  1336  	Cert string
  1337  	// PEM-encoded client private key.
  1338  	Key string
  1339  }
  1340  
  1341  func (TlsCredentials) VDLReflect(struct {
  1342  	Name string `vdl:"github.com/grailbio/base/security/ticket.TlsCredentials"`
  1343  }) {
  1344  }
  1345  
  1346  func (x TlsCredentials) VDLIsZero() bool { //nolint:gocyclo
  1347  	return x == TlsCredentials{}
  1348  }
  1349  
  1350  func (x TlsCredentials) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  1351  	if err := enc.StartValue(vdlTypeStruct16); err != nil {
  1352  		return err
  1353  	}
  1354  	if x.AuthorityCert != "" {
  1355  		if err := enc.NextFieldValueString(0, vdl.StringType, x.AuthorityCert); err != nil {
  1356  			return err
  1357  		}
  1358  	}
  1359  	if x.Cert != "" {
  1360  		if err := enc.NextFieldValueString(1, vdl.StringType, x.Cert); err != nil {
  1361  			return err
  1362  		}
  1363  	}
  1364  	if x.Key != "" {
  1365  		if err := enc.NextFieldValueString(2, vdl.StringType, x.Key); err != nil {
  1366  			return err
  1367  		}
  1368  	}
  1369  	if err := enc.NextField(-1); err != nil {
  1370  		return err
  1371  	}
  1372  	return enc.FinishValue()
  1373  }
  1374  
  1375  func (x *TlsCredentials) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  1376  	*x = TlsCredentials{}
  1377  	if err := dec.StartValue(vdlTypeStruct16); err != nil {
  1378  		return err
  1379  	}
  1380  	decType := dec.Type()
  1381  	for {
  1382  		index, err := dec.NextField()
  1383  		switch {
  1384  		case err != nil:
  1385  			return err
  1386  		case index == -1:
  1387  			return dec.FinishValue()
  1388  		}
  1389  		if decType != vdlTypeStruct16 {
  1390  			index = vdlTypeStruct16.FieldIndexByName(decType.Field(index).Name)
  1391  			if index == -1 {
  1392  				if err := dec.SkipValue(); err != nil {
  1393  					return err
  1394  				}
  1395  				continue
  1396  			}
  1397  		}
  1398  		switch index {
  1399  		case 0:
  1400  			switch value, err := dec.ReadValueString(); {
  1401  			case err != nil:
  1402  				return err
  1403  			default:
  1404  				x.AuthorityCert = value
  1405  			}
  1406  		case 1:
  1407  			switch value, err := dec.ReadValueString(); {
  1408  			case err != nil:
  1409  				return err
  1410  			default:
  1411  				x.Cert = value
  1412  			}
  1413  		case 2:
  1414  			switch value, err := dec.ReadValueString(); {
  1415  			case err != nil:
  1416  				return err
  1417  			default:
  1418  				x.Key = value
  1419  			}
  1420  		}
  1421  	}
  1422  }
  1423  
  1424  // TlsServerTicket describes a TLS server.
  1425  type TlsServerTicket struct {
  1426  	TlsCertAuthorityBuilder *TlsCertAuthorityBuilder
  1427  	Credentials             TlsCredentials
  1428  }
  1429  
  1430  func (TlsServerTicket) VDLReflect(struct {
  1431  	Name string `vdl:"github.com/grailbio/base/security/ticket.TlsServerTicket"`
  1432  }) {
  1433  }
  1434  
  1435  func (x TlsServerTicket) VDLIsZero() bool { //nolint:gocyclo
  1436  	return x == TlsServerTicket{}
  1437  }
  1438  
  1439  func (x TlsServerTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  1440  	if err := enc.StartValue(vdlTypeStruct17); err != nil {
  1441  		return err
  1442  	}
  1443  	if x.TlsCertAuthorityBuilder != nil {
  1444  		if err := enc.NextField(0); err != nil {
  1445  			return err
  1446  		}
  1447  		enc.SetNextStartValueIsOptional()
  1448  		if err := x.TlsCertAuthorityBuilder.VDLWrite(enc); err != nil {
  1449  			return err
  1450  		}
  1451  	}
  1452  	if x.Credentials != (TlsCredentials{}) {
  1453  		if err := enc.NextField(1); err != nil {
  1454  			return err
  1455  		}
  1456  		if err := x.Credentials.VDLWrite(enc); err != nil {
  1457  			return err
  1458  		}
  1459  	}
  1460  	if err := enc.NextField(-1); err != nil {
  1461  		return err
  1462  	}
  1463  	return enc.FinishValue()
  1464  }
  1465  
  1466  func (x *TlsServerTicket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  1467  	*x = TlsServerTicket{}
  1468  	if err := dec.StartValue(vdlTypeStruct17); err != nil {
  1469  		return err
  1470  	}
  1471  	decType := dec.Type()
  1472  	for {
  1473  		index, err := dec.NextField()
  1474  		switch {
  1475  		case err != nil:
  1476  			return err
  1477  		case index == -1:
  1478  			return dec.FinishValue()
  1479  		}
  1480  		if decType != vdlTypeStruct17 {
  1481  			index = vdlTypeStruct17.FieldIndexByName(decType.Field(index).Name)
  1482  			if index == -1 {
  1483  				if err := dec.SkipValue(); err != nil {
  1484  					return err
  1485  				}
  1486  				continue
  1487  			}
  1488  		}
  1489  		switch index {
  1490  		case 0:
  1491  			if err := dec.StartValue(vdlTypeOptional18); err != nil {
  1492  				return err
  1493  			}
  1494  			if dec.IsNil() {
  1495  				x.TlsCertAuthorityBuilder = nil
  1496  				if err := dec.FinishValue(); err != nil {
  1497  					return err
  1498  				}
  1499  			} else {
  1500  				x.TlsCertAuthorityBuilder = new(TlsCertAuthorityBuilder)
  1501  				dec.IgnoreNextStartValue()
  1502  				if err := x.TlsCertAuthorityBuilder.VDLRead(dec); err != nil {
  1503  					return err
  1504  				}
  1505  			}
  1506  		case 1:
  1507  			if err := x.Credentials.VDLRead(dec); err != nil {
  1508  				return err
  1509  			}
  1510  		}
  1511  	}
  1512  }
  1513  
  1514  // TlsClientTicket describes a TLS client.
  1515  type TlsClientTicket struct {
  1516  	TlsCertAuthorityBuilder *TlsCertAuthorityBuilder
  1517  	Credentials             TlsCredentials
  1518  	// Endpoints indicate the servers the client can connect to.
  1519  	Endpoints []string
  1520  }
  1521  
  1522  func (TlsClientTicket) VDLReflect(struct {
  1523  	Name string `vdl:"github.com/grailbio/base/security/ticket.TlsClientTicket"`
  1524  }) {
  1525  }
  1526  
  1527  func (x TlsClientTicket) VDLIsZero() bool { //nolint:gocyclo
  1528  	if x.TlsCertAuthorityBuilder != nil {
  1529  		return false
  1530  	}
  1531  	if x.Credentials != (TlsCredentials{}) {
  1532  		return false
  1533  	}
  1534  	if len(x.Endpoints) != 0 {
  1535  		return false
  1536  	}
  1537  	return true
  1538  }
  1539  
  1540  func (x TlsClientTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  1541  	if err := enc.StartValue(vdlTypeStruct19); err != nil {
  1542  		return err
  1543  	}
  1544  	if x.TlsCertAuthorityBuilder != nil {
  1545  		if err := enc.NextField(0); err != nil {
  1546  			return err
  1547  		}
  1548  		enc.SetNextStartValueIsOptional()
  1549  		if err := x.TlsCertAuthorityBuilder.VDLWrite(enc); err != nil {
  1550  			return err
  1551  		}
  1552  	}
  1553  	if x.Credentials != (TlsCredentials{}) {
  1554  		if err := enc.NextField(1); err != nil {
  1555  			return err
  1556  		}
  1557  		if err := x.Credentials.VDLWrite(enc); err != nil {
  1558  			return err
  1559  		}
  1560  	}
  1561  	if len(x.Endpoints) != 0 {
  1562  		if err := enc.NextField(2); err != nil {
  1563  			return err
  1564  		}
  1565  		if err := vdlWriteAnonList1(enc, x.Endpoints); err != nil {
  1566  			return err
  1567  		}
  1568  	}
  1569  	if err := enc.NextField(-1); err != nil {
  1570  		return err
  1571  	}
  1572  	return enc.FinishValue()
  1573  }
  1574  
  1575  func (x *TlsClientTicket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  1576  	*x = TlsClientTicket{}
  1577  	if err := dec.StartValue(vdlTypeStruct19); err != nil {
  1578  		return err
  1579  	}
  1580  	decType := dec.Type()
  1581  	for {
  1582  		index, err := dec.NextField()
  1583  		switch {
  1584  		case err != nil:
  1585  			return err
  1586  		case index == -1:
  1587  			return dec.FinishValue()
  1588  		}
  1589  		if decType != vdlTypeStruct19 {
  1590  			index = vdlTypeStruct19.FieldIndexByName(decType.Field(index).Name)
  1591  			if index == -1 {
  1592  				if err := dec.SkipValue(); err != nil {
  1593  					return err
  1594  				}
  1595  				continue
  1596  			}
  1597  		}
  1598  		switch index {
  1599  		case 0:
  1600  			if err := dec.StartValue(vdlTypeOptional18); err != nil {
  1601  				return err
  1602  			}
  1603  			if dec.IsNil() {
  1604  				x.TlsCertAuthorityBuilder = nil
  1605  				if err := dec.FinishValue(); err != nil {
  1606  					return err
  1607  				}
  1608  			} else {
  1609  				x.TlsCertAuthorityBuilder = new(TlsCertAuthorityBuilder)
  1610  				dec.IgnoreNextStartValue()
  1611  				if err := x.TlsCertAuthorityBuilder.VDLRead(dec); err != nil {
  1612  					return err
  1613  				}
  1614  			}
  1615  		case 1:
  1616  			if err := x.Credentials.VDLRead(dec); err != nil {
  1617  				return err
  1618  			}
  1619  		case 2:
  1620  			if err := vdlReadAnonList1(dec, &x.Endpoints); err != nil {
  1621  				return err
  1622  			}
  1623  		}
  1624  	}
  1625  }
  1626  
  1627  // DockerTicket instance represents a Docker repository and the TLS
  1628  // certificate material required to verify and authenticate to it.
  1629  // TODO(razvanm): Remove DockerTicket and replace with DockerServerTicket
  1630  //                and DockerClientTicket
  1631  type DockerTicket struct {
  1632  	TlsCertAuthorityBuilder *TlsCertAuthorityBuilder
  1633  	Credentials             TlsCredentials
  1634  	Url                     string
  1635  }
  1636  
  1637  func (DockerTicket) VDLReflect(struct {
  1638  	Name string `vdl:"github.com/grailbio/base/security/ticket.DockerTicket"`
  1639  }) {
  1640  }
  1641  
  1642  func (x DockerTicket) VDLIsZero() bool { //nolint:gocyclo
  1643  	return x == DockerTicket{}
  1644  }
  1645  
  1646  func (x DockerTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  1647  	if err := enc.StartValue(vdlTypeStruct20); err != nil {
  1648  		return err
  1649  	}
  1650  	if x.TlsCertAuthorityBuilder != nil {
  1651  		if err := enc.NextField(0); err != nil {
  1652  			return err
  1653  		}
  1654  		enc.SetNextStartValueIsOptional()
  1655  		if err := x.TlsCertAuthorityBuilder.VDLWrite(enc); err != nil {
  1656  			return err
  1657  		}
  1658  	}
  1659  	if x.Credentials != (TlsCredentials{}) {
  1660  		if err := enc.NextField(1); err != nil {
  1661  			return err
  1662  		}
  1663  		if err := x.Credentials.VDLWrite(enc); err != nil {
  1664  			return err
  1665  		}
  1666  	}
  1667  	if x.Url != "" {
  1668  		if err := enc.NextFieldValueString(2, vdl.StringType, x.Url); err != nil {
  1669  			return err
  1670  		}
  1671  	}
  1672  	if err := enc.NextField(-1); err != nil {
  1673  		return err
  1674  	}
  1675  	return enc.FinishValue()
  1676  }
  1677  
  1678  func (x *DockerTicket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  1679  	*x = DockerTicket{}
  1680  	if err := dec.StartValue(vdlTypeStruct20); err != nil {
  1681  		return err
  1682  	}
  1683  	decType := dec.Type()
  1684  	for {
  1685  		index, err := dec.NextField()
  1686  		switch {
  1687  		case err != nil:
  1688  			return err
  1689  		case index == -1:
  1690  			return dec.FinishValue()
  1691  		}
  1692  		if decType != vdlTypeStruct20 {
  1693  			index = vdlTypeStruct20.FieldIndexByName(decType.Field(index).Name)
  1694  			if index == -1 {
  1695  				if err := dec.SkipValue(); err != nil {
  1696  					return err
  1697  				}
  1698  				continue
  1699  			}
  1700  		}
  1701  		switch index {
  1702  		case 0:
  1703  			if err := dec.StartValue(vdlTypeOptional18); err != nil {
  1704  				return err
  1705  			}
  1706  			if dec.IsNil() {
  1707  				x.TlsCertAuthorityBuilder = nil
  1708  				if err := dec.FinishValue(); err != nil {
  1709  					return err
  1710  				}
  1711  			} else {
  1712  				x.TlsCertAuthorityBuilder = new(TlsCertAuthorityBuilder)
  1713  				dec.IgnoreNextStartValue()
  1714  				if err := x.TlsCertAuthorityBuilder.VDLRead(dec); err != nil {
  1715  					return err
  1716  				}
  1717  			}
  1718  		case 1:
  1719  			if err := x.Credentials.VDLRead(dec); err != nil {
  1720  				return err
  1721  			}
  1722  		case 2:
  1723  			switch value, err := dec.ReadValueString(); {
  1724  			case err != nil:
  1725  				return err
  1726  			default:
  1727  				x.Url = value
  1728  			}
  1729  		}
  1730  	}
  1731  }
  1732  
  1733  // DockerServerTicket instance represents a Docker Server and the TLS
  1734  // certificate material required for clients to verify and authenticate it.
  1735  type DockerServerTicket struct {
  1736  	TlsCertAuthorityBuilder *TlsCertAuthorityBuilder
  1737  	Credentials             TlsCredentials
  1738  }
  1739  
  1740  func (DockerServerTicket) VDLReflect(struct {
  1741  	Name string `vdl:"github.com/grailbio/base/security/ticket.DockerServerTicket"`
  1742  }) {
  1743  }
  1744  
  1745  func (x DockerServerTicket) VDLIsZero() bool { //nolint:gocyclo
  1746  	return x == DockerServerTicket{}
  1747  }
  1748  
  1749  func (x DockerServerTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  1750  	if err := enc.StartValue(vdlTypeStruct21); err != nil {
  1751  		return err
  1752  	}
  1753  	if x.TlsCertAuthorityBuilder != nil {
  1754  		if err := enc.NextField(0); err != nil {
  1755  			return err
  1756  		}
  1757  		enc.SetNextStartValueIsOptional()
  1758  		if err := x.TlsCertAuthorityBuilder.VDLWrite(enc); err != nil {
  1759  			return err
  1760  		}
  1761  	}
  1762  	if x.Credentials != (TlsCredentials{}) {
  1763  		if err := enc.NextField(1); err != nil {
  1764  			return err
  1765  		}
  1766  		if err := x.Credentials.VDLWrite(enc); err != nil {
  1767  			return err
  1768  		}
  1769  	}
  1770  	if err := enc.NextField(-1); err != nil {
  1771  		return err
  1772  	}
  1773  	return enc.FinishValue()
  1774  }
  1775  
  1776  func (x *DockerServerTicket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  1777  	*x = DockerServerTicket{}
  1778  	if err := dec.StartValue(vdlTypeStruct21); err != nil {
  1779  		return err
  1780  	}
  1781  	decType := dec.Type()
  1782  	for {
  1783  		index, err := dec.NextField()
  1784  		switch {
  1785  		case err != nil:
  1786  			return err
  1787  		case index == -1:
  1788  			return dec.FinishValue()
  1789  		}
  1790  		if decType != vdlTypeStruct21 {
  1791  			index = vdlTypeStruct21.FieldIndexByName(decType.Field(index).Name)
  1792  			if index == -1 {
  1793  				if err := dec.SkipValue(); err != nil {
  1794  					return err
  1795  				}
  1796  				continue
  1797  			}
  1798  		}
  1799  		switch index {
  1800  		case 0:
  1801  			if err := dec.StartValue(vdlTypeOptional18); err != nil {
  1802  				return err
  1803  			}
  1804  			if dec.IsNil() {
  1805  				x.TlsCertAuthorityBuilder = nil
  1806  				if err := dec.FinishValue(); err != nil {
  1807  					return err
  1808  				}
  1809  			} else {
  1810  				x.TlsCertAuthorityBuilder = new(TlsCertAuthorityBuilder)
  1811  				dec.IgnoreNextStartValue()
  1812  				if err := x.TlsCertAuthorityBuilder.VDLRead(dec); err != nil {
  1813  					return err
  1814  				}
  1815  			}
  1816  		case 1:
  1817  			if err := x.Credentials.VDLRead(dec); err != nil {
  1818  				return err
  1819  			}
  1820  		}
  1821  	}
  1822  }
  1823  
  1824  // DockerClientTicket instance represents the TLS certificate material required
  1825  // for clients to authenticate against a specific DockerServer.
  1826  type DockerClientTicket struct {
  1827  	TlsCertAuthorityBuilder *TlsCertAuthorityBuilder
  1828  	Credentials             TlsCredentials
  1829  	// Url indicates the Docker host the client can connect to.
  1830  	Url string
  1831  }
  1832  
  1833  func (DockerClientTicket) VDLReflect(struct {
  1834  	Name string `vdl:"github.com/grailbio/base/security/ticket.DockerClientTicket"`
  1835  }) {
  1836  }
  1837  
  1838  func (x DockerClientTicket) VDLIsZero() bool { //nolint:gocyclo
  1839  	return x == DockerClientTicket{}
  1840  }
  1841  
  1842  func (x DockerClientTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  1843  	if err := enc.StartValue(vdlTypeStruct22); err != nil {
  1844  		return err
  1845  	}
  1846  	if x.TlsCertAuthorityBuilder != nil {
  1847  		if err := enc.NextField(0); err != nil {
  1848  			return err
  1849  		}
  1850  		enc.SetNextStartValueIsOptional()
  1851  		if err := x.TlsCertAuthorityBuilder.VDLWrite(enc); err != nil {
  1852  			return err
  1853  		}
  1854  	}
  1855  	if x.Credentials != (TlsCredentials{}) {
  1856  		if err := enc.NextField(1); err != nil {
  1857  			return err
  1858  		}
  1859  		if err := x.Credentials.VDLWrite(enc); err != nil {
  1860  			return err
  1861  		}
  1862  	}
  1863  	if x.Url != "" {
  1864  		if err := enc.NextFieldValueString(2, vdl.StringType, x.Url); err != nil {
  1865  			return err
  1866  		}
  1867  	}
  1868  	if err := enc.NextField(-1); err != nil {
  1869  		return err
  1870  	}
  1871  	return enc.FinishValue()
  1872  }
  1873  
  1874  func (x *DockerClientTicket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  1875  	*x = DockerClientTicket{}
  1876  	if err := dec.StartValue(vdlTypeStruct22); err != nil {
  1877  		return err
  1878  	}
  1879  	decType := dec.Type()
  1880  	for {
  1881  		index, err := dec.NextField()
  1882  		switch {
  1883  		case err != nil:
  1884  			return err
  1885  		case index == -1:
  1886  			return dec.FinishValue()
  1887  		}
  1888  		if decType != vdlTypeStruct22 {
  1889  			index = vdlTypeStruct22.FieldIndexByName(decType.Field(index).Name)
  1890  			if index == -1 {
  1891  				if err := dec.SkipValue(); err != nil {
  1892  					return err
  1893  				}
  1894  				continue
  1895  			}
  1896  		}
  1897  		switch index {
  1898  		case 0:
  1899  			if err := dec.StartValue(vdlTypeOptional18); err != nil {
  1900  				return err
  1901  			}
  1902  			if dec.IsNil() {
  1903  				x.TlsCertAuthorityBuilder = nil
  1904  				if err := dec.FinishValue(); err != nil {
  1905  					return err
  1906  				}
  1907  			} else {
  1908  				x.TlsCertAuthorityBuilder = new(TlsCertAuthorityBuilder)
  1909  				dec.IgnoreNextStartValue()
  1910  				if err := x.TlsCertAuthorityBuilder.VDLRead(dec); err != nil {
  1911  					return err
  1912  				}
  1913  			}
  1914  		case 1:
  1915  			if err := x.Credentials.VDLRead(dec); err != nil {
  1916  				return err
  1917  			}
  1918  		case 2:
  1919  			switch value, err := dec.ReadValueString(); {
  1920  			case err != nil:
  1921  				return err
  1922  			default:
  1923  				x.Url = value
  1924  			}
  1925  		}
  1926  	}
  1927  }
  1928  
  1929  // Key/Value pair that can be passed into the GET request.
  1930  type Parameter struct {
  1931  	Key   string
  1932  	Value string
  1933  }
  1934  
  1935  func (Parameter) VDLReflect(struct {
  1936  	Name string `vdl:"github.com/grailbio/base/security/ticket.Parameter"`
  1937  }) {
  1938  }
  1939  
  1940  func (x Parameter) VDLIsZero() bool { //nolint:gocyclo
  1941  	return x == Parameter{}
  1942  }
  1943  
  1944  func (x Parameter) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  1945  	if err := enc.StartValue(vdlTypeStruct23); err != nil {
  1946  		return err
  1947  	}
  1948  	if x.Key != "" {
  1949  		if err := enc.NextFieldValueString(0, vdl.StringType, x.Key); err != nil {
  1950  			return err
  1951  		}
  1952  	}
  1953  	if x.Value != "" {
  1954  		if err := enc.NextFieldValueString(1, vdl.StringType, x.Value); err != nil {
  1955  			return err
  1956  		}
  1957  	}
  1958  	if err := enc.NextField(-1); err != nil {
  1959  		return err
  1960  	}
  1961  	return enc.FinishValue()
  1962  }
  1963  
  1964  func (x *Parameter) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  1965  	*x = Parameter{}
  1966  	if err := dec.StartValue(vdlTypeStruct23); err != nil {
  1967  		return err
  1968  	}
  1969  	decType := dec.Type()
  1970  	for {
  1971  		index, err := dec.NextField()
  1972  		switch {
  1973  		case err != nil:
  1974  			return err
  1975  		case index == -1:
  1976  			return dec.FinishValue()
  1977  		}
  1978  		if decType != vdlTypeStruct23 {
  1979  			index = vdlTypeStruct23.FieldIndexByName(decType.Field(index).Name)
  1980  			if index == -1 {
  1981  				if err := dec.SkipValue(); err != nil {
  1982  					return err
  1983  				}
  1984  				continue
  1985  			}
  1986  		}
  1987  		switch index {
  1988  		case 0:
  1989  			switch value, err := dec.ReadValueString(); {
  1990  			case err != nil:
  1991  				return err
  1992  			default:
  1993  				x.Key = value
  1994  			}
  1995  		case 1:
  1996  			switch value, err := dec.ReadValueString(); {
  1997  			case err != nil:
  1998  				return err
  1999  			default:
  2000  				x.Value = value
  2001  			}
  2002  		}
  2003  	}
  2004  }
  2005  
  2006  type AwsComputeInstancesBuilder struct {
  2007  	// Instance Filters that will produce a list of instance IDs and related information
  2008  	// https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html
  2009  	InstanceFilters []Parameter
  2010  	// AWS ARN for a role that should be used to perform the instance lookups
  2011  	AwsAccountLookupRole string
  2012  	// AWS region to use for the lookup
  2013  	Region string
  2014  }
  2015  
  2016  func (AwsComputeInstancesBuilder) VDLReflect(struct {
  2017  	Name string `vdl:"github.com/grailbio/base/security/ticket.AwsComputeInstancesBuilder"`
  2018  }) {
  2019  }
  2020  
  2021  func (x AwsComputeInstancesBuilder) VDLIsZero() bool { //nolint:gocyclo
  2022  	if len(x.InstanceFilters) != 0 {
  2023  		return false
  2024  	}
  2025  	if x.AwsAccountLookupRole != "" {
  2026  		return false
  2027  	}
  2028  	if x.Region != "" {
  2029  		return false
  2030  	}
  2031  	return true
  2032  }
  2033  
  2034  func (x AwsComputeInstancesBuilder) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  2035  	if err := enc.StartValue(vdlTypeStruct24); err != nil {
  2036  		return err
  2037  	}
  2038  	if len(x.InstanceFilters) != 0 {
  2039  		if err := enc.NextField(0); err != nil {
  2040  			return err
  2041  		}
  2042  		if err := vdlWriteAnonList2(enc, x.InstanceFilters); err != nil {
  2043  			return err
  2044  		}
  2045  	}
  2046  	if x.AwsAccountLookupRole != "" {
  2047  		if err := enc.NextFieldValueString(1, vdl.StringType, x.AwsAccountLookupRole); err != nil {
  2048  			return err
  2049  		}
  2050  	}
  2051  	if x.Region != "" {
  2052  		if err := enc.NextFieldValueString(2, vdl.StringType, x.Region); err != nil {
  2053  			return err
  2054  		}
  2055  	}
  2056  	if err := enc.NextField(-1); err != nil {
  2057  		return err
  2058  	}
  2059  	return enc.FinishValue()
  2060  }
  2061  
  2062  func vdlWriteAnonList2(enc vdl.Encoder, x []Parameter) error {
  2063  	if err := enc.StartValue(vdlTypeList25); err != nil {
  2064  		return err
  2065  	}
  2066  	if err := enc.SetLenHint(len(x)); err != nil {
  2067  		return err
  2068  	}
  2069  	for _, elem := range x {
  2070  		if err := enc.NextEntry(false); err != nil {
  2071  			return err
  2072  		}
  2073  		if err := elem.VDLWrite(enc); err != nil {
  2074  			return err
  2075  		}
  2076  	}
  2077  	if err := enc.NextEntry(true); err != nil {
  2078  		return err
  2079  	}
  2080  	return enc.FinishValue()
  2081  }
  2082  
  2083  func (x *AwsComputeInstancesBuilder) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  2084  	*x = AwsComputeInstancesBuilder{}
  2085  	if err := dec.StartValue(vdlTypeStruct24); err != nil {
  2086  		return err
  2087  	}
  2088  	decType := dec.Type()
  2089  	for {
  2090  		index, err := dec.NextField()
  2091  		switch {
  2092  		case err != nil:
  2093  			return err
  2094  		case index == -1:
  2095  			return dec.FinishValue()
  2096  		}
  2097  		if decType != vdlTypeStruct24 {
  2098  			index = vdlTypeStruct24.FieldIndexByName(decType.Field(index).Name)
  2099  			if index == -1 {
  2100  				if err := dec.SkipValue(); err != nil {
  2101  					return err
  2102  				}
  2103  				continue
  2104  			}
  2105  		}
  2106  		switch index {
  2107  		case 0:
  2108  			if err := vdlReadAnonList2(dec, &x.InstanceFilters); err != nil {
  2109  				return err
  2110  			}
  2111  		case 1:
  2112  			switch value, err := dec.ReadValueString(); {
  2113  			case err != nil:
  2114  				return err
  2115  			default:
  2116  				x.AwsAccountLookupRole = value
  2117  			}
  2118  		case 2:
  2119  			switch value, err := dec.ReadValueString(); {
  2120  			case err != nil:
  2121  				return err
  2122  			default:
  2123  				x.Region = value
  2124  			}
  2125  		}
  2126  	}
  2127  }
  2128  
  2129  func vdlReadAnonList2(dec vdl.Decoder, x *[]Parameter) error {
  2130  	if err := dec.StartValue(vdlTypeList25); err != nil {
  2131  		return err
  2132  	}
  2133  	if len := dec.LenHint(); len > 0 {
  2134  		*x = make([]Parameter, 0, len)
  2135  	} else {
  2136  		*x = nil
  2137  	}
  2138  	for {
  2139  		switch done, err := dec.NextEntry(); {
  2140  		case err != nil:
  2141  			return err
  2142  		case done:
  2143  			return dec.FinishValue()
  2144  		default:
  2145  			var elem Parameter
  2146  			if err := elem.VDLRead(dec); err != nil {
  2147  				return err
  2148  			}
  2149  			*x = append(*x, elem)
  2150  		}
  2151  	}
  2152  }
  2153  
  2154  // Simplification of describeInstance data to provide to ticket-server users
  2155  type ComputeInstance struct {
  2156  	PublicIp   string
  2157  	PrivateIp  string
  2158  	InstanceId string
  2159  	Tags       []Parameter
  2160  }
  2161  
  2162  func (ComputeInstance) VDLReflect(struct {
  2163  	Name string `vdl:"github.com/grailbio/base/security/ticket.ComputeInstance"`
  2164  }) {
  2165  }
  2166  
  2167  func (x ComputeInstance) VDLIsZero() bool { //nolint:gocyclo
  2168  	if x.PublicIp != "" {
  2169  		return false
  2170  	}
  2171  	if x.PrivateIp != "" {
  2172  		return false
  2173  	}
  2174  	if x.InstanceId != "" {
  2175  		return false
  2176  	}
  2177  	if len(x.Tags) != 0 {
  2178  		return false
  2179  	}
  2180  	return true
  2181  }
  2182  
  2183  func (x ComputeInstance) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  2184  	if err := enc.StartValue(vdlTypeStruct26); err != nil {
  2185  		return err
  2186  	}
  2187  	if x.PublicIp != "" {
  2188  		if err := enc.NextFieldValueString(0, vdl.StringType, x.PublicIp); err != nil {
  2189  			return err
  2190  		}
  2191  	}
  2192  	if x.PrivateIp != "" {
  2193  		if err := enc.NextFieldValueString(1, vdl.StringType, x.PrivateIp); err != nil {
  2194  			return err
  2195  		}
  2196  	}
  2197  	if x.InstanceId != "" {
  2198  		if err := enc.NextFieldValueString(2, vdl.StringType, x.InstanceId); err != nil {
  2199  			return err
  2200  		}
  2201  	}
  2202  	if len(x.Tags) != 0 {
  2203  		if err := enc.NextField(3); err != nil {
  2204  			return err
  2205  		}
  2206  		if err := vdlWriteAnonList2(enc, x.Tags); err != nil {
  2207  			return err
  2208  		}
  2209  	}
  2210  	if err := enc.NextField(-1); err != nil {
  2211  		return err
  2212  	}
  2213  	return enc.FinishValue()
  2214  }
  2215  
  2216  func (x *ComputeInstance) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  2217  	*x = ComputeInstance{}
  2218  	if err := dec.StartValue(vdlTypeStruct26); err != nil {
  2219  		return err
  2220  	}
  2221  	decType := dec.Type()
  2222  	for {
  2223  		index, err := dec.NextField()
  2224  		switch {
  2225  		case err != nil:
  2226  			return err
  2227  		case index == -1:
  2228  			return dec.FinishValue()
  2229  		}
  2230  		if decType != vdlTypeStruct26 {
  2231  			index = vdlTypeStruct26.FieldIndexByName(decType.Field(index).Name)
  2232  			if index == -1 {
  2233  				if err := dec.SkipValue(); err != nil {
  2234  					return err
  2235  				}
  2236  				continue
  2237  			}
  2238  		}
  2239  		switch index {
  2240  		case 0:
  2241  			switch value, err := dec.ReadValueString(); {
  2242  			case err != nil:
  2243  				return err
  2244  			default:
  2245  				x.PublicIp = value
  2246  			}
  2247  		case 1:
  2248  			switch value, err := dec.ReadValueString(); {
  2249  			case err != nil:
  2250  				return err
  2251  			default:
  2252  				x.PrivateIp = value
  2253  			}
  2254  		case 2:
  2255  			switch value, err := dec.ReadValueString(); {
  2256  			case err != nil:
  2257  				return err
  2258  			default:
  2259  				x.InstanceId = value
  2260  			}
  2261  		case 3:
  2262  			if err := vdlReadAnonList2(dec, &x.Tags); err != nil {
  2263  				return err
  2264  			}
  2265  		}
  2266  	}
  2267  }
  2268  
  2269  // SshCertificateTicket describes a SSH Signed Certificate.
  2270  // SSH Certificates are essentially a version of TLS certs but they have additional
  2271  // optional parameters and can take a public key as part of their signing request.
  2272  type SshCertificateTicket struct {
  2273  	SshCertAuthorityBuilder    *SshCertAuthorityBuilder
  2274  	AwsComputeInstancesBuilder *AwsComputeInstancesBuilder
  2275  	ComputeInstances           []ComputeInstance
  2276  	Credentials                SshCert
  2277  	// Recommended username to use
  2278  	Username string
  2279  }
  2280  
  2281  func (SshCertificateTicket) VDLReflect(struct {
  2282  	Name string `vdl:"github.com/grailbio/base/security/ticket.SshCertificateTicket"`
  2283  }) {
  2284  }
  2285  
  2286  func (x SshCertificateTicket) VDLIsZero() bool { //nolint:gocyclo
  2287  	if x.SshCertAuthorityBuilder != nil {
  2288  		return false
  2289  	}
  2290  	if x.AwsComputeInstancesBuilder != nil {
  2291  		return false
  2292  	}
  2293  	if len(x.ComputeInstances) != 0 {
  2294  		return false
  2295  	}
  2296  	if x.Credentials != (SshCert{}) {
  2297  		return false
  2298  	}
  2299  	if x.Username != "" {
  2300  		return false
  2301  	}
  2302  	return true
  2303  }
  2304  
  2305  func (x SshCertificateTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  2306  	if err := enc.StartValue(vdlTypeStruct27); err != nil {
  2307  		return err
  2308  	}
  2309  	if x.SshCertAuthorityBuilder != nil {
  2310  		if err := enc.NextField(0); err != nil {
  2311  			return err
  2312  		}
  2313  		enc.SetNextStartValueIsOptional()
  2314  		if err := x.SshCertAuthorityBuilder.VDLWrite(enc); err != nil {
  2315  			return err
  2316  		}
  2317  	}
  2318  	if x.AwsComputeInstancesBuilder != nil {
  2319  		if err := enc.NextField(1); err != nil {
  2320  			return err
  2321  		}
  2322  		enc.SetNextStartValueIsOptional()
  2323  		if err := x.AwsComputeInstancesBuilder.VDLWrite(enc); err != nil {
  2324  			return err
  2325  		}
  2326  	}
  2327  	if len(x.ComputeInstances) != 0 {
  2328  		if err := enc.NextField(2); err != nil {
  2329  			return err
  2330  		}
  2331  		if err := vdlWriteAnonList3(enc, x.ComputeInstances); err != nil {
  2332  			return err
  2333  		}
  2334  	}
  2335  	if x.Credentials != (SshCert{}) {
  2336  		if err := enc.NextField(3); err != nil {
  2337  			return err
  2338  		}
  2339  		if err := x.Credentials.VDLWrite(enc); err != nil {
  2340  			return err
  2341  		}
  2342  	}
  2343  	if x.Username != "" {
  2344  		if err := enc.NextFieldValueString(4, vdl.StringType, x.Username); err != nil {
  2345  			return err
  2346  		}
  2347  	}
  2348  	if err := enc.NextField(-1); err != nil {
  2349  		return err
  2350  	}
  2351  	return enc.FinishValue()
  2352  }
  2353  
  2354  func vdlWriteAnonList3(enc vdl.Encoder, x []ComputeInstance) error {
  2355  	if err := enc.StartValue(vdlTypeList30); err != nil {
  2356  		return err
  2357  	}
  2358  	if err := enc.SetLenHint(len(x)); err != nil {
  2359  		return err
  2360  	}
  2361  	for _, elem := range x {
  2362  		if err := enc.NextEntry(false); err != nil {
  2363  			return err
  2364  		}
  2365  		if err := elem.VDLWrite(enc); err != nil {
  2366  			return err
  2367  		}
  2368  	}
  2369  	if err := enc.NextEntry(true); err != nil {
  2370  		return err
  2371  	}
  2372  	return enc.FinishValue()
  2373  }
  2374  
  2375  func (x *SshCertificateTicket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  2376  	*x = SshCertificateTicket{}
  2377  	if err := dec.StartValue(vdlTypeStruct27); err != nil {
  2378  		return err
  2379  	}
  2380  	decType := dec.Type()
  2381  	for {
  2382  		index, err := dec.NextField()
  2383  		switch {
  2384  		case err != nil:
  2385  			return err
  2386  		case index == -1:
  2387  			return dec.FinishValue()
  2388  		}
  2389  		if decType != vdlTypeStruct27 {
  2390  			index = vdlTypeStruct27.FieldIndexByName(decType.Field(index).Name)
  2391  			if index == -1 {
  2392  				if err := dec.SkipValue(); err != nil {
  2393  					return err
  2394  				}
  2395  				continue
  2396  			}
  2397  		}
  2398  		switch index {
  2399  		case 0:
  2400  			if err := dec.StartValue(vdlTypeOptional28); err != nil {
  2401  				return err
  2402  			}
  2403  			if dec.IsNil() {
  2404  				x.SshCertAuthorityBuilder = nil
  2405  				if err := dec.FinishValue(); err != nil {
  2406  					return err
  2407  				}
  2408  			} else {
  2409  				x.SshCertAuthorityBuilder = new(SshCertAuthorityBuilder)
  2410  				dec.IgnoreNextStartValue()
  2411  				if err := x.SshCertAuthorityBuilder.VDLRead(dec); err != nil {
  2412  					return err
  2413  				}
  2414  			}
  2415  		case 1:
  2416  			if err := dec.StartValue(vdlTypeOptional29); err != nil {
  2417  				return err
  2418  			}
  2419  			if dec.IsNil() {
  2420  				x.AwsComputeInstancesBuilder = nil
  2421  				if err := dec.FinishValue(); err != nil {
  2422  					return err
  2423  				}
  2424  			} else {
  2425  				x.AwsComputeInstancesBuilder = new(AwsComputeInstancesBuilder)
  2426  				dec.IgnoreNextStartValue()
  2427  				if err := x.AwsComputeInstancesBuilder.VDLRead(dec); err != nil {
  2428  					return err
  2429  				}
  2430  			}
  2431  		case 2:
  2432  			if err := vdlReadAnonList3(dec, &x.ComputeInstances); err != nil {
  2433  				return err
  2434  			}
  2435  		case 3:
  2436  			if err := x.Credentials.VDLRead(dec); err != nil {
  2437  				return err
  2438  			}
  2439  		case 4:
  2440  			switch value, err := dec.ReadValueString(); {
  2441  			case err != nil:
  2442  				return err
  2443  			default:
  2444  				x.Username = value
  2445  			}
  2446  		}
  2447  	}
  2448  }
  2449  
  2450  func vdlReadAnonList3(dec vdl.Decoder, x *[]ComputeInstance) error {
  2451  	if err := dec.StartValue(vdlTypeList30); err != nil {
  2452  		return err
  2453  	}
  2454  	if len := dec.LenHint(); len > 0 {
  2455  		*x = make([]ComputeInstance, 0, len)
  2456  	} else {
  2457  		*x = nil
  2458  	}
  2459  	for {
  2460  		switch done, err := dec.NextEntry(); {
  2461  		case err != nil:
  2462  			return err
  2463  		case done:
  2464  			return dec.FinishValue()
  2465  		default:
  2466  			var elem ComputeInstance
  2467  			if err := elem.VDLRead(dec); err != nil {
  2468  				return err
  2469  			}
  2470  			*x = append(*x, elem)
  2471  		}
  2472  	}
  2473  }
  2474  
  2475  // B2Ticket instance contains a B2 account level authorization
  2476  // token plus URLs and configuration values for the account.
  2477  type B2Ticket struct {
  2478  	B2AccountAuthorizationBuilder *B2AccountAuthorizationBuilder
  2479  	AccountId                     string
  2480  	AuthorizationToken            string
  2481  	ApiUrl                        string
  2482  	DownloadUrl                   string
  2483  	RecommendedPartSize           int64
  2484  	AbsoluteMinimumPartSize       int64
  2485  }
  2486  
  2487  func (B2Ticket) VDLReflect(struct {
  2488  	Name string `vdl:"github.com/grailbio/base/security/ticket.B2Ticket"`
  2489  }) {
  2490  }
  2491  
  2492  func (x B2Ticket) VDLIsZero() bool { //nolint:gocyclo
  2493  	return x == B2Ticket{}
  2494  }
  2495  
  2496  func (x B2Ticket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  2497  	if err := enc.StartValue(vdlTypeStruct31); err != nil {
  2498  		return err
  2499  	}
  2500  	if x.B2AccountAuthorizationBuilder != nil {
  2501  		if err := enc.NextField(0); err != nil {
  2502  			return err
  2503  		}
  2504  		enc.SetNextStartValueIsOptional()
  2505  		if err := x.B2AccountAuthorizationBuilder.VDLWrite(enc); err != nil {
  2506  			return err
  2507  		}
  2508  	}
  2509  	if x.AccountId != "" {
  2510  		if err := enc.NextFieldValueString(1, vdl.StringType, x.AccountId); err != nil {
  2511  			return err
  2512  		}
  2513  	}
  2514  	if x.AuthorizationToken != "" {
  2515  		if err := enc.NextFieldValueString(2, vdl.StringType, x.AuthorizationToken); err != nil {
  2516  			return err
  2517  		}
  2518  	}
  2519  	if x.ApiUrl != "" {
  2520  		if err := enc.NextFieldValueString(3, vdl.StringType, x.ApiUrl); err != nil {
  2521  			return err
  2522  		}
  2523  	}
  2524  	if x.DownloadUrl != "" {
  2525  		if err := enc.NextFieldValueString(4, vdl.StringType, x.DownloadUrl); err != nil {
  2526  			return err
  2527  		}
  2528  	}
  2529  	if x.RecommendedPartSize != 0 {
  2530  		if err := enc.NextFieldValueInt(5, vdl.Int64Type, x.RecommendedPartSize); err != nil {
  2531  			return err
  2532  		}
  2533  	}
  2534  	if x.AbsoluteMinimumPartSize != 0 {
  2535  		if err := enc.NextFieldValueInt(6, vdl.Int64Type, x.AbsoluteMinimumPartSize); err != nil {
  2536  			return err
  2537  		}
  2538  	}
  2539  	if err := enc.NextField(-1); err != nil {
  2540  		return err
  2541  	}
  2542  	return enc.FinishValue()
  2543  }
  2544  
  2545  func (x *B2Ticket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  2546  	*x = B2Ticket{}
  2547  	if err := dec.StartValue(vdlTypeStruct31); err != nil {
  2548  		return err
  2549  	}
  2550  	decType := dec.Type()
  2551  	for {
  2552  		index, err := dec.NextField()
  2553  		switch {
  2554  		case err != nil:
  2555  			return err
  2556  		case index == -1:
  2557  			return dec.FinishValue()
  2558  		}
  2559  		if decType != vdlTypeStruct31 {
  2560  			index = vdlTypeStruct31.FieldIndexByName(decType.Field(index).Name)
  2561  			if index == -1 {
  2562  				if err := dec.SkipValue(); err != nil {
  2563  					return err
  2564  				}
  2565  				continue
  2566  			}
  2567  		}
  2568  		switch index {
  2569  		case 0:
  2570  			if err := dec.StartValue(vdlTypeOptional32); err != nil {
  2571  				return err
  2572  			}
  2573  			if dec.IsNil() {
  2574  				x.B2AccountAuthorizationBuilder = nil
  2575  				if err := dec.FinishValue(); err != nil {
  2576  					return err
  2577  				}
  2578  			} else {
  2579  				x.B2AccountAuthorizationBuilder = new(B2AccountAuthorizationBuilder)
  2580  				dec.IgnoreNextStartValue()
  2581  				if err := x.B2AccountAuthorizationBuilder.VDLRead(dec); err != nil {
  2582  					return err
  2583  				}
  2584  			}
  2585  		case 1:
  2586  			switch value, err := dec.ReadValueString(); {
  2587  			case err != nil:
  2588  				return err
  2589  			default:
  2590  				x.AccountId = value
  2591  			}
  2592  		case 2:
  2593  			switch value, err := dec.ReadValueString(); {
  2594  			case err != nil:
  2595  				return err
  2596  			default:
  2597  				x.AuthorizationToken = value
  2598  			}
  2599  		case 3:
  2600  			switch value, err := dec.ReadValueString(); {
  2601  			case err != nil:
  2602  				return err
  2603  			default:
  2604  				x.ApiUrl = value
  2605  			}
  2606  		case 4:
  2607  			switch value, err := dec.ReadValueString(); {
  2608  			case err != nil:
  2609  				return err
  2610  			default:
  2611  				x.DownloadUrl = value
  2612  			}
  2613  		case 5:
  2614  			switch value, err := dec.ReadValueInt(64); {
  2615  			case err != nil:
  2616  				return err
  2617  			default:
  2618  				x.RecommendedPartSize = value
  2619  			}
  2620  		case 6:
  2621  			switch value, err := dec.ReadValueInt(64); {
  2622  			case err != nil:
  2623  				return err
  2624  			default:
  2625  				x.AbsoluteMinimumPartSize = value
  2626  			}
  2627  		}
  2628  	}
  2629  }
  2630  
  2631  // VanadiumTicket describes a set of Vanadium blessings. This allows
  2632  // obtaining a completely new blessings (role blessings) by the owners
  2633  // of certain blessings.
  2634  type VanadiumTicket struct {
  2635  	VanadiumBuilder *VanadiumBuilder
  2636  	// v.io/v23/security.WireBlessings in VOM + Base64 format.
  2637  	Blessing string
  2638  }
  2639  
  2640  func (VanadiumTicket) VDLReflect(struct {
  2641  	Name string `vdl:"github.com/grailbio/base/security/ticket.VanadiumTicket"`
  2642  }) {
  2643  }
  2644  
  2645  func (x VanadiumTicket) VDLIsZero() bool { //nolint:gocyclo
  2646  	return x == VanadiumTicket{}
  2647  }
  2648  
  2649  func (x VanadiumTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  2650  	if err := enc.StartValue(vdlTypeStruct33); err != nil {
  2651  		return err
  2652  	}
  2653  	if x.VanadiumBuilder != nil {
  2654  		if err := enc.NextField(0); err != nil {
  2655  			return err
  2656  		}
  2657  		enc.SetNextStartValueIsOptional()
  2658  		if err := x.VanadiumBuilder.VDLWrite(enc); err != nil {
  2659  			return err
  2660  		}
  2661  	}
  2662  	if x.Blessing != "" {
  2663  		if err := enc.NextFieldValueString(1, vdl.StringType, x.Blessing); err != nil {
  2664  			return err
  2665  		}
  2666  	}
  2667  	if err := enc.NextField(-1); err != nil {
  2668  		return err
  2669  	}
  2670  	return enc.FinishValue()
  2671  }
  2672  
  2673  func (x *VanadiumTicket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  2674  	*x = VanadiumTicket{}
  2675  	if err := dec.StartValue(vdlTypeStruct33); err != nil {
  2676  		return err
  2677  	}
  2678  	decType := dec.Type()
  2679  	for {
  2680  		index, err := dec.NextField()
  2681  		switch {
  2682  		case err != nil:
  2683  			return err
  2684  		case index == -1:
  2685  			return dec.FinishValue()
  2686  		}
  2687  		if decType != vdlTypeStruct33 {
  2688  			index = vdlTypeStruct33.FieldIndexByName(decType.Field(index).Name)
  2689  			if index == -1 {
  2690  				if err := dec.SkipValue(); err != nil {
  2691  					return err
  2692  				}
  2693  				continue
  2694  			}
  2695  		}
  2696  		switch index {
  2697  		case 0:
  2698  			if err := dec.StartValue(vdlTypeOptional34); err != nil {
  2699  				return err
  2700  			}
  2701  			if dec.IsNil() {
  2702  				x.VanadiumBuilder = nil
  2703  				if err := dec.FinishValue(); err != nil {
  2704  					return err
  2705  				}
  2706  			} else {
  2707  				x.VanadiumBuilder = new(VanadiumBuilder)
  2708  				dec.IgnoreNextStartValue()
  2709  				if err := x.VanadiumBuilder.VDLRead(dec); err != nil {
  2710  					return err
  2711  				}
  2712  			}
  2713  		case 1:
  2714  			switch value, err := dec.ReadValueString(); {
  2715  			case err != nil:
  2716  				return err
  2717  			default:
  2718  				x.Blessing = value
  2719  			}
  2720  		}
  2721  	}
  2722  }
  2723  
  2724  // GenericTicket describes a generic unstructured piece of data. This
  2725  // can be used to store arbitrary secrets for example.
  2726  type GenericTicket struct {
  2727  	Data []byte
  2728  }
  2729  
  2730  func (GenericTicket) VDLReflect(struct {
  2731  	Name string `vdl:"github.com/grailbio/base/security/ticket.GenericTicket"`
  2732  }) {
  2733  }
  2734  
  2735  func (x GenericTicket) VDLIsZero() bool { //nolint:gocyclo
  2736  	return len(x.Data) == 0
  2737  }
  2738  
  2739  func (x GenericTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  2740  	if err := enc.StartValue(vdlTypeStruct35); err != nil {
  2741  		return err
  2742  	}
  2743  	if len(x.Data) != 0 {
  2744  		if err := enc.NextFieldValueBytes(0, vdlTypeList36, x.Data); err != nil {
  2745  			return err
  2746  		}
  2747  	}
  2748  	if err := enc.NextField(-1); err != nil {
  2749  		return err
  2750  	}
  2751  	return enc.FinishValue()
  2752  }
  2753  
  2754  func (x *GenericTicket) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  2755  	*x = GenericTicket{}
  2756  	if err := dec.StartValue(vdlTypeStruct35); err != nil {
  2757  		return err
  2758  	}
  2759  	decType := dec.Type()
  2760  	for {
  2761  		index, err := dec.NextField()
  2762  		switch {
  2763  		case err != nil:
  2764  			return err
  2765  		case index == -1:
  2766  			return dec.FinishValue()
  2767  		}
  2768  		if decType != vdlTypeStruct35 {
  2769  			index = vdlTypeStruct35.FieldIndexByName(decType.Field(index).Name)
  2770  			if index == -1 {
  2771  				if err := dec.SkipValue(); err != nil {
  2772  					return err
  2773  				}
  2774  				continue
  2775  			}
  2776  		}
  2777  		if index == 0 {
  2778  
  2779  			if err := dec.ReadValueBytes(-1, &x.Data); err != nil {
  2780  				return err
  2781  			}
  2782  		}
  2783  	}
  2784  }
  2785  
  2786  type (
  2787  	// Ticket represents any single field of the Ticket union type.
  2788  	//
  2789  	// Ticket is a union of all our tickets.
  2790  	Ticket interface {
  2791  		// Index returns the field index.
  2792  		Index() int
  2793  		// Interface returns the field value as an interface.
  2794  		Interface() interface{}
  2795  		// Name returns the field name.
  2796  		Name() string
  2797  		// VDLReflect describes the Ticket union type.
  2798  		VDLReflect(vdlTicketReflect)
  2799  		VDLIsZero() bool
  2800  		VDLWrite(vdl.Encoder) error
  2801  	}
  2802  	// TicketAwsTicket represents field AwsTicket of the Ticket union type.
  2803  	TicketAwsTicket struct{ Value AwsTicket }
  2804  	// TicketS3Ticket represents field S3Ticket of the Ticket union type.
  2805  	TicketS3Ticket struct{ Value S3Ticket }
  2806  	// TicketSshCertificateTicket represents field SshCertificateTicket of the Ticket union type.
  2807  	TicketSshCertificateTicket struct{ Value SshCertificateTicket }
  2808  	// TicketEcrTicket represents field EcrTicket of the Ticket union type.
  2809  	TicketEcrTicket struct{ Value EcrTicket }
  2810  	// TicketTlsServerTicket represents field TlsServerTicket of the Ticket union type.
  2811  	TicketTlsServerTicket struct{ Value TlsServerTicket }
  2812  	// TicketTlsClientTicket represents field TlsClientTicket of the Ticket union type.
  2813  	TicketTlsClientTicket struct{ Value TlsClientTicket }
  2814  	// TicketDockerTicket represents field DockerTicket of the Ticket union type.
  2815  	TicketDockerTicket struct{ Value DockerTicket }
  2816  	// TicketDockerServerTicket represents field DockerServerTicket of the Ticket union type.
  2817  	TicketDockerServerTicket struct{ Value DockerServerTicket }
  2818  	// TicketDockerClientTicket represents field DockerClientTicket of the Ticket union type.
  2819  	TicketDockerClientTicket struct{ Value DockerClientTicket }
  2820  	// TicketB2Ticket represents field B2Ticket of the Ticket union type.
  2821  	TicketB2Ticket struct{ Value B2Ticket }
  2822  	// TicketVanadiumTicket represents field VanadiumTicket of the Ticket union type.
  2823  	TicketVanadiumTicket struct{ Value VanadiumTicket }
  2824  	// TicketGenericTicket represents field GenericTicket of the Ticket union type.
  2825  	TicketGenericTicket struct{ Value GenericTicket }
  2826  	// vdlTicketReflect describes the Ticket union type.
  2827  	vdlTicketReflect struct {
  2828  		Name  string `vdl:"github.com/grailbio/base/security/ticket.Ticket"`
  2829  		Type  Ticket
  2830  		Union struct {
  2831  			AwsTicket            TicketAwsTicket
  2832  			S3Ticket             TicketS3Ticket
  2833  			SshCertificateTicket TicketSshCertificateTicket
  2834  			EcrTicket            TicketEcrTicket
  2835  			TlsServerTicket      TicketTlsServerTicket
  2836  			TlsClientTicket      TicketTlsClientTicket
  2837  			DockerTicket         TicketDockerTicket
  2838  			DockerServerTicket   TicketDockerServerTicket
  2839  			DockerClientTicket   TicketDockerClientTicket
  2840  			B2Ticket             TicketB2Ticket
  2841  			VanadiumTicket       TicketVanadiumTicket
  2842  			GenericTicket        TicketGenericTicket
  2843  		}
  2844  	}
  2845  )
  2846  
  2847  func (x TicketAwsTicket) Index() int                  { return 0 }
  2848  func (x TicketAwsTicket) Interface() interface{}      { return x.Value }
  2849  func (x TicketAwsTicket) Name() string                { return "AwsTicket" }
  2850  func (x TicketAwsTicket) VDLReflect(vdlTicketReflect) {}
  2851  
  2852  func (x TicketS3Ticket) Index() int                  { return 1 }
  2853  func (x TicketS3Ticket) Interface() interface{}      { return x.Value }
  2854  func (x TicketS3Ticket) Name() string                { return "S3Ticket" }
  2855  func (x TicketS3Ticket) VDLReflect(vdlTicketReflect) {}
  2856  
  2857  func (x TicketSshCertificateTicket) Index() int                  { return 2 }
  2858  func (x TicketSshCertificateTicket) Interface() interface{}      { return x.Value }
  2859  func (x TicketSshCertificateTicket) Name() string                { return "SshCertificateTicket" }
  2860  func (x TicketSshCertificateTicket) VDLReflect(vdlTicketReflect) {}
  2861  
  2862  func (x TicketEcrTicket) Index() int                  { return 3 }
  2863  func (x TicketEcrTicket) Interface() interface{}      { return x.Value }
  2864  func (x TicketEcrTicket) Name() string                { return "EcrTicket" }
  2865  func (x TicketEcrTicket) VDLReflect(vdlTicketReflect) {}
  2866  
  2867  func (x TicketTlsServerTicket) Index() int                  { return 4 }
  2868  func (x TicketTlsServerTicket) Interface() interface{}      { return x.Value }
  2869  func (x TicketTlsServerTicket) Name() string                { return "TlsServerTicket" }
  2870  func (x TicketTlsServerTicket) VDLReflect(vdlTicketReflect) {}
  2871  
  2872  func (x TicketTlsClientTicket) Index() int                  { return 5 }
  2873  func (x TicketTlsClientTicket) Interface() interface{}      { return x.Value }
  2874  func (x TicketTlsClientTicket) Name() string                { return "TlsClientTicket" }
  2875  func (x TicketTlsClientTicket) VDLReflect(vdlTicketReflect) {}
  2876  
  2877  func (x TicketDockerTicket) Index() int                  { return 6 }
  2878  func (x TicketDockerTicket) Interface() interface{}      { return x.Value }
  2879  func (x TicketDockerTicket) Name() string                { return "DockerTicket" }
  2880  func (x TicketDockerTicket) VDLReflect(vdlTicketReflect) {}
  2881  
  2882  func (x TicketDockerServerTicket) Index() int                  { return 7 }
  2883  func (x TicketDockerServerTicket) Interface() interface{}      { return x.Value }
  2884  func (x TicketDockerServerTicket) Name() string                { return "DockerServerTicket" }
  2885  func (x TicketDockerServerTicket) VDLReflect(vdlTicketReflect) {}
  2886  
  2887  func (x TicketDockerClientTicket) Index() int                  { return 8 }
  2888  func (x TicketDockerClientTicket) Interface() interface{}      { return x.Value }
  2889  func (x TicketDockerClientTicket) Name() string                { return "DockerClientTicket" }
  2890  func (x TicketDockerClientTicket) VDLReflect(vdlTicketReflect) {}
  2891  
  2892  func (x TicketB2Ticket) Index() int                  { return 9 }
  2893  func (x TicketB2Ticket) Interface() interface{}      { return x.Value }
  2894  func (x TicketB2Ticket) Name() string                { return "B2Ticket" }
  2895  func (x TicketB2Ticket) VDLReflect(vdlTicketReflect) {}
  2896  
  2897  func (x TicketVanadiumTicket) Index() int                  { return 10 }
  2898  func (x TicketVanadiumTicket) Interface() interface{}      { return x.Value }
  2899  func (x TicketVanadiumTicket) Name() string                { return "VanadiumTicket" }
  2900  func (x TicketVanadiumTicket) VDLReflect(vdlTicketReflect) {}
  2901  
  2902  func (x TicketGenericTicket) Index() int                  { return 11 }
  2903  func (x TicketGenericTicket) Interface() interface{}      { return x.Value }
  2904  func (x TicketGenericTicket) Name() string                { return "GenericTicket" }
  2905  func (x TicketGenericTicket) VDLReflect(vdlTicketReflect) {}
  2906  
  2907  func (x TicketAwsTicket) VDLIsZero() bool { //nolint:gocyclo
  2908  	return x.Value == AwsTicket{}
  2909  }
  2910  
  2911  func (x TicketS3Ticket) VDLIsZero() bool {
  2912  	return false
  2913  }
  2914  
  2915  func (x TicketSshCertificateTicket) VDLIsZero() bool {
  2916  	return false
  2917  }
  2918  
  2919  func (x TicketEcrTicket) VDLIsZero() bool {
  2920  	return false
  2921  }
  2922  
  2923  func (x TicketTlsServerTicket) VDLIsZero() bool {
  2924  	return false
  2925  }
  2926  
  2927  func (x TicketTlsClientTicket) VDLIsZero() bool {
  2928  	return false
  2929  }
  2930  
  2931  func (x TicketDockerTicket) VDLIsZero() bool {
  2932  	return false
  2933  }
  2934  
  2935  func (x TicketDockerServerTicket) VDLIsZero() bool {
  2936  	return false
  2937  }
  2938  
  2939  func (x TicketDockerClientTicket) VDLIsZero() bool {
  2940  	return false
  2941  }
  2942  
  2943  func (x TicketB2Ticket) VDLIsZero() bool {
  2944  	return false
  2945  }
  2946  
  2947  func (x TicketVanadiumTicket) VDLIsZero() bool {
  2948  	return false
  2949  }
  2950  
  2951  func (x TicketGenericTicket) VDLIsZero() bool {
  2952  	return false
  2953  }
  2954  
  2955  func (x TicketAwsTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  2956  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  2957  		return err
  2958  	}
  2959  	if err := enc.NextField(0); err != nil {
  2960  		return err
  2961  	}
  2962  	if err := x.Value.VDLWrite(enc); err != nil {
  2963  		return err
  2964  	}
  2965  	if err := enc.NextField(-1); err != nil {
  2966  		return err
  2967  	}
  2968  	return enc.FinishValue()
  2969  }
  2970  
  2971  func (x TicketS3Ticket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  2972  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  2973  		return err
  2974  	}
  2975  	if err := enc.NextField(1); err != nil {
  2976  		return err
  2977  	}
  2978  	if err := x.Value.VDLWrite(enc); err != nil {
  2979  		return err
  2980  	}
  2981  	if err := enc.NextField(-1); err != nil {
  2982  		return err
  2983  	}
  2984  	return enc.FinishValue()
  2985  }
  2986  
  2987  func (x TicketSshCertificateTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  2988  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  2989  		return err
  2990  	}
  2991  	if err := enc.NextField(2); err != nil {
  2992  		return err
  2993  	}
  2994  	if err := x.Value.VDLWrite(enc); err != nil {
  2995  		return err
  2996  	}
  2997  	if err := enc.NextField(-1); err != nil {
  2998  		return err
  2999  	}
  3000  	return enc.FinishValue()
  3001  }
  3002  
  3003  func (x TicketEcrTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  3004  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  3005  		return err
  3006  	}
  3007  	if err := enc.NextField(3); err != nil {
  3008  		return err
  3009  	}
  3010  	if err := x.Value.VDLWrite(enc); err != nil {
  3011  		return err
  3012  	}
  3013  	if err := enc.NextField(-1); err != nil {
  3014  		return err
  3015  	}
  3016  	return enc.FinishValue()
  3017  }
  3018  
  3019  func (x TicketTlsServerTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  3020  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  3021  		return err
  3022  	}
  3023  	if err := enc.NextField(4); err != nil {
  3024  		return err
  3025  	}
  3026  	if err := x.Value.VDLWrite(enc); err != nil {
  3027  		return err
  3028  	}
  3029  	if err := enc.NextField(-1); err != nil {
  3030  		return err
  3031  	}
  3032  	return enc.FinishValue()
  3033  }
  3034  
  3035  func (x TicketTlsClientTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  3036  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  3037  		return err
  3038  	}
  3039  	if err := enc.NextField(5); err != nil {
  3040  		return err
  3041  	}
  3042  	if err := x.Value.VDLWrite(enc); err != nil {
  3043  		return err
  3044  	}
  3045  	if err := enc.NextField(-1); err != nil {
  3046  		return err
  3047  	}
  3048  	return enc.FinishValue()
  3049  }
  3050  
  3051  func (x TicketDockerTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  3052  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  3053  		return err
  3054  	}
  3055  	if err := enc.NextField(6); err != nil {
  3056  		return err
  3057  	}
  3058  	if err := x.Value.VDLWrite(enc); err != nil {
  3059  		return err
  3060  	}
  3061  	if err := enc.NextField(-1); err != nil {
  3062  		return err
  3063  	}
  3064  	return enc.FinishValue()
  3065  }
  3066  
  3067  func (x TicketDockerServerTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  3068  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  3069  		return err
  3070  	}
  3071  	if err := enc.NextField(7); err != nil {
  3072  		return err
  3073  	}
  3074  	if err := x.Value.VDLWrite(enc); err != nil {
  3075  		return err
  3076  	}
  3077  	if err := enc.NextField(-1); err != nil {
  3078  		return err
  3079  	}
  3080  	return enc.FinishValue()
  3081  }
  3082  
  3083  func (x TicketDockerClientTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  3084  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  3085  		return err
  3086  	}
  3087  	if err := enc.NextField(8); err != nil {
  3088  		return err
  3089  	}
  3090  	if err := x.Value.VDLWrite(enc); err != nil {
  3091  		return err
  3092  	}
  3093  	if err := enc.NextField(-1); err != nil {
  3094  		return err
  3095  	}
  3096  	return enc.FinishValue()
  3097  }
  3098  
  3099  func (x TicketB2Ticket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  3100  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  3101  		return err
  3102  	}
  3103  	if err := enc.NextField(9); err != nil {
  3104  		return err
  3105  	}
  3106  	if err := x.Value.VDLWrite(enc); err != nil {
  3107  		return err
  3108  	}
  3109  	if err := enc.NextField(-1); err != nil {
  3110  		return err
  3111  	}
  3112  	return enc.FinishValue()
  3113  }
  3114  
  3115  func (x TicketVanadiumTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  3116  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  3117  		return err
  3118  	}
  3119  	if err := enc.NextField(10); err != nil {
  3120  		return err
  3121  	}
  3122  	if err := x.Value.VDLWrite(enc); err != nil {
  3123  		return err
  3124  	}
  3125  	if err := enc.NextField(-1); err != nil {
  3126  		return err
  3127  	}
  3128  	return enc.FinishValue()
  3129  }
  3130  
  3131  func (x TicketGenericTicket) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  3132  	if err := enc.StartValue(vdlTypeUnion37); err != nil {
  3133  		return err
  3134  	}
  3135  	if err := enc.NextField(11); err != nil {
  3136  		return err
  3137  	}
  3138  	if err := x.Value.VDLWrite(enc); err != nil {
  3139  		return err
  3140  	}
  3141  	if err := enc.NextField(-1); err != nil {
  3142  		return err
  3143  	}
  3144  	return enc.FinishValue()
  3145  }
  3146  
  3147  func VDLReadTicket(dec vdl.Decoder, x *Ticket) error { //nolint:gocyclo
  3148  	if err := dec.StartValue(vdlTypeUnion37); err != nil {
  3149  		return err
  3150  	}
  3151  	decType := dec.Type()
  3152  	index, err := dec.NextField()
  3153  	switch {
  3154  	case err != nil:
  3155  		return err
  3156  	case index == -1:
  3157  		return fmt.Errorf("missing field in union %T, from %v", x, decType)
  3158  	}
  3159  	if decType != vdlTypeUnion37 {
  3160  		name := decType.Field(index).Name
  3161  		index = vdlTypeUnion37.FieldIndexByName(name)
  3162  		if index == -1 {
  3163  			return fmt.Errorf("field %q not in union %T, from %v", name, x, decType)
  3164  		}
  3165  	}
  3166  	switch index {
  3167  	case 0:
  3168  		var field TicketAwsTicket
  3169  		if err := field.Value.VDLRead(dec); err != nil {
  3170  			return err
  3171  		}
  3172  		*x = field
  3173  	case 1:
  3174  		var field TicketS3Ticket
  3175  		if err := field.Value.VDLRead(dec); err != nil {
  3176  			return err
  3177  		}
  3178  		*x = field
  3179  	case 2:
  3180  		var field TicketSshCertificateTicket
  3181  		if err := field.Value.VDLRead(dec); err != nil {
  3182  			return err
  3183  		}
  3184  		*x = field
  3185  	case 3:
  3186  		var field TicketEcrTicket
  3187  		if err := field.Value.VDLRead(dec); err != nil {
  3188  			return err
  3189  		}
  3190  		*x = field
  3191  	case 4:
  3192  		var field TicketTlsServerTicket
  3193  		if err := field.Value.VDLRead(dec); err != nil {
  3194  			return err
  3195  		}
  3196  		*x = field
  3197  	case 5:
  3198  		var field TicketTlsClientTicket
  3199  		if err := field.Value.VDLRead(dec); err != nil {
  3200  			return err
  3201  		}
  3202  		*x = field
  3203  	case 6:
  3204  		var field TicketDockerTicket
  3205  		if err := field.Value.VDLRead(dec); err != nil {
  3206  			return err
  3207  		}
  3208  		*x = field
  3209  	case 7:
  3210  		var field TicketDockerServerTicket
  3211  		if err := field.Value.VDLRead(dec); err != nil {
  3212  			return err
  3213  		}
  3214  		*x = field
  3215  	case 8:
  3216  		var field TicketDockerClientTicket
  3217  		if err := field.Value.VDLRead(dec); err != nil {
  3218  			return err
  3219  		}
  3220  		*x = field
  3221  	case 9:
  3222  		var field TicketB2Ticket
  3223  		if err := field.Value.VDLRead(dec); err != nil {
  3224  			return err
  3225  		}
  3226  		*x = field
  3227  	case 10:
  3228  		var field TicketVanadiumTicket
  3229  		if err := field.Value.VDLRead(dec); err != nil {
  3230  			return err
  3231  		}
  3232  		*x = field
  3233  	case 11:
  3234  		var field TicketGenericTicket
  3235  		if err := field.Value.VDLRead(dec); err != nil {
  3236  			return err
  3237  		}
  3238  		*x = field
  3239  	}
  3240  	switch index, err := dec.NextField(); {
  3241  	case err != nil:
  3242  		return err
  3243  	case index != -1:
  3244  		return fmt.Errorf("extra field %d in union %T, from %v", index, x, dec.Type())
  3245  	}
  3246  	return dec.FinishValue()
  3247  }
  3248  
  3249  // TicketConfig describes a ticket and its associated permissions.
  3250  type TicketConfig struct {
  3251  	Ticket      Ticket
  3252  	Permissions access.Permissions
  3253  	Controls    map[Control]bool
  3254  }
  3255  
  3256  func (TicketConfig) VDLReflect(struct {
  3257  	Name string `vdl:"github.com/grailbio/base/security/ticket.TicketConfig"`
  3258  }) {
  3259  }
  3260  
  3261  func (x TicketConfig) VDLIsZero() bool { //nolint:gocyclo
  3262  	if x.Ticket != nil && !x.Ticket.VDLIsZero() {
  3263  		return false
  3264  	}
  3265  	if len(x.Permissions) != 0 {
  3266  		return false
  3267  	}
  3268  	if len(x.Controls) != 0 {
  3269  		return false
  3270  	}
  3271  	return true
  3272  }
  3273  
  3274  func (x TicketConfig) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  3275  	if err := enc.StartValue(vdlTypeStruct38); err != nil {
  3276  		return err
  3277  	}
  3278  	if x.Ticket != nil && !x.Ticket.VDLIsZero() {
  3279  		if err := enc.NextField(0); err != nil {
  3280  			return err
  3281  		}
  3282  		if err := x.Ticket.VDLWrite(enc); err != nil {
  3283  			return err
  3284  		}
  3285  	}
  3286  	if len(x.Permissions) != 0 {
  3287  		if err := enc.NextField(1); err != nil {
  3288  			return err
  3289  		}
  3290  		if err := x.Permissions.VDLWrite(enc); err != nil {
  3291  			return err
  3292  		}
  3293  	}
  3294  	if len(x.Controls) != 0 {
  3295  		if err := enc.NextField(2); err != nil {
  3296  			return err
  3297  		}
  3298  		if err := vdlWriteAnonMap4(enc, x.Controls); err != nil {
  3299  			return err
  3300  		}
  3301  	}
  3302  	if err := enc.NextField(-1); err != nil {
  3303  		return err
  3304  	}
  3305  	return enc.FinishValue()
  3306  }
  3307  
  3308  func vdlWriteAnonMap4(enc vdl.Encoder, x map[Control]bool) error {
  3309  	if err := enc.StartValue(vdlTypeMap40); err != nil {
  3310  		return err
  3311  	}
  3312  	if err := enc.SetLenHint(len(x)); err != nil {
  3313  		return err
  3314  	}
  3315  	for key, elem := range x {
  3316  		if err := enc.NextEntryValueString(vdlTypeEnum1, key.String()); err != nil {
  3317  			return err
  3318  		}
  3319  		if err := enc.WriteValueBool(vdl.BoolType, elem); err != nil {
  3320  			return err
  3321  		}
  3322  	}
  3323  	if err := enc.NextEntry(true); err != nil {
  3324  		return err
  3325  	}
  3326  	return enc.FinishValue()
  3327  }
  3328  
  3329  func (x *TicketConfig) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  3330  	*x = TicketConfig{
  3331  		Ticket: TicketAwsTicket{},
  3332  	}
  3333  	if err := dec.StartValue(vdlTypeStruct38); err != nil {
  3334  		return err
  3335  	}
  3336  	decType := dec.Type()
  3337  	for {
  3338  		index, err := dec.NextField()
  3339  		switch {
  3340  		case err != nil:
  3341  			return err
  3342  		case index == -1:
  3343  			return dec.FinishValue()
  3344  		}
  3345  		if decType != vdlTypeStruct38 {
  3346  			index = vdlTypeStruct38.FieldIndexByName(decType.Field(index).Name)
  3347  			if index == -1 {
  3348  				if err := dec.SkipValue(); err != nil {
  3349  					return err
  3350  				}
  3351  				continue
  3352  			}
  3353  		}
  3354  		switch index {
  3355  		case 0:
  3356  			if err := VDLReadTicket(dec, &x.Ticket); err != nil {
  3357  				return err
  3358  			}
  3359  		case 1:
  3360  			if err := x.Permissions.VDLRead(dec); err != nil {
  3361  				return err
  3362  			}
  3363  		case 2:
  3364  			if err := vdlReadAnonMap4(dec, &x.Controls); err != nil {
  3365  				return err
  3366  			}
  3367  		}
  3368  	}
  3369  }
  3370  
  3371  func vdlReadAnonMap4(dec vdl.Decoder, x *map[Control]bool) error {
  3372  	if err := dec.StartValue(vdlTypeMap40); err != nil {
  3373  		return err
  3374  	}
  3375  	var tmpMap map[Control]bool
  3376  	if len := dec.LenHint(); len > 0 {
  3377  		tmpMap = make(map[Control]bool, len)
  3378  	}
  3379  	for {
  3380  		switch done, key, err := dec.NextEntryValueString(); {
  3381  		case err != nil:
  3382  			return err
  3383  		case done:
  3384  			*x = tmpMap
  3385  			return dec.FinishValue()
  3386  		default:
  3387  			var keyEnum Control
  3388  			if err := keyEnum.Set(key); err != nil {
  3389  				return err
  3390  			}
  3391  			var elem bool
  3392  			switch value, err := dec.ReadValueBool(); {
  3393  			case err != nil:
  3394  				return err
  3395  			default:
  3396  				elem = value
  3397  			}
  3398  			if tmpMap == nil {
  3399  				tmpMap = make(map[Control]bool)
  3400  			}
  3401  			tmpMap[keyEnum] = elem
  3402  		}
  3403  	}
  3404  }
  3405  
  3406  type Config struct {
  3407  	Tickets     map[string]TicketConfig
  3408  	Permissions access.Permissions
  3409  }
  3410  
  3411  func (Config) VDLReflect(struct {
  3412  	Name string `vdl:"github.com/grailbio/base/security/ticket.Config"`
  3413  }) {
  3414  }
  3415  
  3416  func (x Config) VDLIsZero() bool { //nolint:gocyclo
  3417  	if len(x.Tickets) != 0 {
  3418  		return false
  3419  	}
  3420  	if len(x.Permissions) != 0 {
  3421  		return false
  3422  	}
  3423  	return true
  3424  }
  3425  
  3426  func (x Config) VDLWrite(enc vdl.Encoder) error { //nolint:gocyclo
  3427  	if err := enc.StartValue(vdlTypeStruct41); err != nil {
  3428  		return err
  3429  	}
  3430  	if len(x.Tickets) != 0 {
  3431  		if err := enc.NextField(0); err != nil {
  3432  			return err
  3433  		}
  3434  		if err := vdlWriteAnonMap5(enc, x.Tickets); err != nil {
  3435  			return err
  3436  		}
  3437  	}
  3438  	if len(x.Permissions) != 0 {
  3439  		if err := enc.NextField(1); err != nil {
  3440  			return err
  3441  		}
  3442  		if err := x.Permissions.VDLWrite(enc); err != nil {
  3443  			return err
  3444  		}
  3445  	}
  3446  	if err := enc.NextField(-1); err != nil {
  3447  		return err
  3448  	}
  3449  	return enc.FinishValue()
  3450  }
  3451  
  3452  func vdlWriteAnonMap5(enc vdl.Encoder, x map[string]TicketConfig) error {
  3453  	if err := enc.StartValue(vdlTypeMap42); err != nil {
  3454  		return err
  3455  	}
  3456  	if err := enc.SetLenHint(len(x)); err != nil {
  3457  		return err
  3458  	}
  3459  	for key, elem := range x {
  3460  		if err := enc.NextEntryValueString(vdl.StringType, key); err != nil {
  3461  			return err
  3462  		}
  3463  		if err := elem.VDLWrite(enc); err != nil {
  3464  			return err
  3465  		}
  3466  	}
  3467  	if err := enc.NextEntry(true); err != nil {
  3468  		return err
  3469  	}
  3470  	return enc.FinishValue()
  3471  }
  3472  
  3473  func (x *Config) VDLRead(dec vdl.Decoder) error { //nolint:gocyclo
  3474  	*x = Config{}
  3475  	if err := dec.StartValue(vdlTypeStruct41); err != nil {
  3476  		return err
  3477  	}
  3478  	decType := dec.Type()
  3479  	for {
  3480  		index, err := dec.NextField()
  3481  		switch {
  3482  		case err != nil:
  3483  			return err
  3484  		case index == -1:
  3485  			return dec.FinishValue()
  3486  		}
  3487  		if decType != vdlTypeStruct41 {
  3488  			index = vdlTypeStruct41.FieldIndexByName(decType.Field(index).Name)
  3489  			if index == -1 {
  3490  				if err := dec.SkipValue(); err != nil {
  3491  					return err
  3492  				}
  3493  				continue
  3494  			}
  3495  		}
  3496  		switch index {
  3497  		case 0:
  3498  			if err := vdlReadAnonMap5(dec, &x.Tickets); err != nil {
  3499  				return err
  3500  			}
  3501  		case 1:
  3502  			if err := x.Permissions.VDLRead(dec); err != nil {
  3503  				return err
  3504  			}
  3505  		}
  3506  	}
  3507  }
  3508  
  3509  func vdlReadAnonMap5(dec vdl.Decoder, x *map[string]TicketConfig) error {
  3510  	if err := dec.StartValue(vdlTypeMap42); err != nil {
  3511  		return err
  3512  	}
  3513  	var tmpMap map[string]TicketConfig
  3514  	if len := dec.LenHint(); len > 0 {
  3515  		tmpMap = make(map[string]TicketConfig, len)
  3516  	}
  3517  	for {
  3518  		switch done, key, err := dec.NextEntryValueString(); {
  3519  		case err != nil:
  3520  			return err
  3521  		case done:
  3522  			*x = tmpMap
  3523  			return dec.FinishValue()
  3524  		default:
  3525  			var elem TicketConfig
  3526  			if err := elem.VDLRead(dec); err != nil {
  3527  				return err
  3528  			}
  3529  			if tmpMap == nil {
  3530  				tmpMap = make(map[string]TicketConfig)
  3531  			}
  3532  			tmpMap[key] = elem
  3533  		}
  3534  	}
  3535  }
  3536  
  3537  // Interface definitions
  3538  // =====================
  3539  
  3540  // TicketServiceClientMethods is the client interface
  3541  // containing TicketService methods.
  3542  //
  3543  // TicketService provides a way to obtain a ticket. The access can be
  3544  // restricted by setting the permissions appropriately.
  3545  type TicketServiceClientMethods interface {
  3546  	GetPermissions(*context.T, ...rpc.CallOpt) (perms access.Permissions, version string, _ error)
  3547  	SetPermissions(_ *context.T, perms access.Permissions, version string, _ ...rpc.CallOpt) error
  3548  	Get(*context.T, ...rpc.CallOpt) (Ticket, error)
  3549  	GetWithParameters(_ *context.T, parameters []Parameter, _ ...rpc.CallOpt) (Ticket, error)
  3550  	GetWithArgs(_ *context.T, args map[string]string, _ ...rpc.CallOpt) (Ticket, error)
  3551  }
  3552  
  3553  // TicketServiceClientStub embeds TicketServiceClientMethods and is a
  3554  // placeholder for additional management operations.
  3555  type TicketServiceClientStub interface {
  3556  	TicketServiceClientMethods
  3557  }
  3558  
  3559  // TicketServiceClient returns a client stub for TicketService.
  3560  func TicketServiceClient(name string) TicketServiceClientStub {
  3561  	return implTicketServiceClientStub{name}
  3562  }
  3563  
  3564  type implTicketServiceClientStub struct {
  3565  	name string
  3566  }
  3567  
  3568  func (c implTicketServiceClientStub) GetPermissions(ctx *context.T, opts ...rpc.CallOpt) (o0 access.Permissions, o1 string, err error) {
  3569  	err = v23.GetClient(ctx).Call(ctx, c.name, "GetPermissions", nil, []interface{}{&o0, &o1}, opts...)
  3570  	return
  3571  }
  3572  
  3573  func (c implTicketServiceClientStub) SetPermissions(ctx *context.T, i0 access.Permissions, i1 string, opts ...rpc.CallOpt) (err error) {
  3574  	err = v23.GetClient(ctx).Call(ctx, c.name, "SetPermissions", []interface{}{i0, i1}, nil, opts...)
  3575  	return
  3576  }
  3577  
  3578  func (c implTicketServiceClientStub) Get(ctx *context.T, opts ...rpc.CallOpt) (o0 Ticket, err error) {
  3579  	err = v23.GetClient(ctx).Call(ctx, c.name, "Get", nil, []interface{}{&o0}, opts...)
  3580  	return
  3581  }
  3582  
  3583  func (c implTicketServiceClientStub) GetWithParameters(ctx *context.T, i0 []Parameter, opts ...rpc.CallOpt) (o0 Ticket, err error) {
  3584  	err = v23.GetClient(ctx).Call(ctx, c.name, "GetWithParameters", []interface{}{i0}, []interface{}{&o0}, opts...)
  3585  	return
  3586  }
  3587  
  3588  func (c implTicketServiceClientStub) GetWithArgs(ctx *context.T, i0 map[string]string, opts ...rpc.CallOpt) (o0 Ticket, err error) {
  3589  	err = v23.GetClient(ctx).Call(ctx, c.name, "GetWithArgs", []interface{}{i0}, []interface{}{&o0}, opts...)
  3590  	return
  3591  }
  3592  
  3593  // TicketServiceServerMethods is the interface a server writer
  3594  // implements for TicketService.
  3595  //
  3596  // TicketService provides a way to obtain a ticket. The access can be
  3597  // restricted by setting the permissions appropriately.
  3598  type TicketServiceServerMethods interface {
  3599  	GetPermissions(*context.T, rpc.ServerCall) (perms access.Permissions, version string, _ error)
  3600  	SetPermissions(_ *context.T, _ rpc.ServerCall, perms access.Permissions, version string) error
  3601  	Get(*context.T, rpc.ServerCall) (Ticket, error)
  3602  	GetWithParameters(_ *context.T, _ rpc.ServerCall, parameters []Parameter) (Ticket, error)
  3603  	GetWithArgs(_ *context.T, _ rpc.ServerCall, args map[string]string) (Ticket, error)
  3604  }
  3605  
  3606  // TicketServiceServerStubMethods is the server interface containing
  3607  // TicketService methods, as expected by rpc.Server.
  3608  // There is no difference between this interface and TicketServiceServerMethods
  3609  // since there are no streaming methods.
  3610  type TicketServiceServerStubMethods TicketServiceServerMethods
  3611  
  3612  // TicketServiceServerStub adds universal methods to TicketServiceServerStubMethods.
  3613  type TicketServiceServerStub interface {
  3614  	TicketServiceServerStubMethods
  3615  	// DescribeInterfaces the TicketService interfaces.
  3616  	Describe__() []rpc.InterfaceDesc
  3617  }
  3618  
  3619  // TicketServiceServer returns a server stub for TicketService.
  3620  // It converts an implementation of TicketServiceServerMethods into
  3621  // an object that may be used by rpc.Server.
  3622  func TicketServiceServer(impl TicketServiceServerMethods) TicketServiceServerStub {
  3623  	stub := implTicketServiceServerStub{
  3624  		impl: impl,
  3625  	}
  3626  	// Initialize GlobState; always check the stub itself first, to handle the
  3627  	// case where the user has the Glob method defined in their VDL source.
  3628  	if gs := rpc.NewGlobState(stub); gs != nil {
  3629  		stub.gs = gs
  3630  	} else if gs := rpc.NewGlobState(impl); gs != nil {
  3631  		stub.gs = gs
  3632  	}
  3633  	return stub
  3634  }
  3635  
  3636  type implTicketServiceServerStub struct {
  3637  	impl TicketServiceServerMethods
  3638  	gs   *rpc.GlobState
  3639  }
  3640  
  3641  func (s implTicketServiceServerStub) GetPermissions(ctx *context.T, call rpc.ServerCall) (access.Permissions, string, error) {
  3642  	return s.impl.GetPermissions(ctx, call)
  3643  }
  3644  
  3645  func (s implTicketServiceServerStub) SetPermissions(ctx *context.T, call rpc.ServerCall, i0 access.Permissions, i1 string) error {
  3646  	return s.impl.SetPermissions(ctx, call, i0, i1)
  3647  }
  3648  
  3649  func (s implTicketServiceServerStub) Get(ctx *context.T, call rpc.ServerCall) (Ticket, error) {
  3650  	return s.impl.Get(ctx, call)
  3651  }
  3652  
  3653  func (s implTicketServiceServerStub) GetWithParameters(ctx *context.T, call rpc.ServerCall, i0 []Parameter) (Ticket, error) {
  3654  	return s.impl.GetWithParameters(ctx, call, i0)
  3655  }
  3656  
  3657  func (s implTicketServiceServerStub) GetWithArgs(ctx *context.T, call rpc.ServerCall, i0 map[string]string) (Ticket, error) {
  3658  	return s.impl.GetWithArgs(ctx, call, i0)
  3659  }
  3660  
  3661  func (s implTicketServiceServerStub) Globber() *rpc.GlobState {
  3662  	return s.gs
  3663  }
  3664  
  3665  func (s implTicketServiceServerStub) Describe__() []rpc.InterfaceDesc {
  3666  	return []rpc.InterfaceDesc{TicketServiceDesc}
  3667  }
  3668  
  3669  // TicketServiceDesc describes the TicketService interface.
  3670  var TicketServiceDesc rpc.InterfaceDesc = descTicketService
  3671  
  3672  // descTicketService hides the desc to keep godoc clean.
  3673  var descTicketService = rpc.InterfaceDesc{
  3674  	Name:    "TicketService",
  3675  	PkgPath: "github.com/grailbio/base/security/ticket",
  3676  	Doc:     "// TicketService provides a way to obtain a ticket. The access can be\n// restricted by setting the permissions appropriately.",
  3677  	Methods: []rpc.MethodDesc{
  3678  		{
  3679  			Name: "GetPermissions",
  3680  			OutArgs: []rpc.ArgDesc{
  3681  				{Name: "perms", Doc: ``},   // access.Permissions
  3682  				{Name: "version", Doc: ``}, // string
  3683  			},
  3684  			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
  3685  		},
  3686  		{
  3687  			Name: "SetPermissions",
  3688  			InArgs: []rpc.ArgDesc{
  3689  				{Name: "perms", Doc: ``},   // access.Permissions
  3690  				{Name: "version", Doc: ``}, // string
  3691  			},
  3692  			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Admin"))},
  3693  		},
  3694  		{
  3695  			Name: "Get",
  3696  			OutArgs: []rpc.ArgDesc{
  3697  				{Name: "", Doc: ``}, // Ticket
  3698  			},
  3699  			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
  3700  		},
  3701  		{
  3702  			Name: "GetWithParameters",
  3703  			InArgs: []rpc.ArgDesc{
  3704  				{Name: "parameters", Doc: ``}, // []Parameter
  3705  			},
  3706  			OutArgs: []rpc.ArgDesc{
  3707  				{Name: "", Doc: ``}, // Ticket
  3708  			},
  3709  			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
  3710  		},
  3711  		{
  3712  			Name: "GetWithArgs",
  3713  			InArgs: []rpc.ArgDesc{
  3714  				{Name: "args", Doc: ``}, // map[string]string
  3715  			},
  3716  			OutArgs: []rpc.ArgDesc{
  3717  				{Name: "", Doc: ``}, // Ticket
  3718  			},
  3719  			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
  3720  		},
  3721  	},
  3722  }
  3723  
  3724  // ListServiceClientMethods is the client interface
  3725  // containing ListService methods.
  3726  type ListServiceClientMethods interface {
  3727  	List(*context.T, ...rpc.CallOpt) ([]string, error)
  3728  }
  3729  
  3730  // ListServiceClientStub embeds ListServiceClientMethods and is a
  3731  // placeholder for additional management operations.
  3732  type ListServiceClientStub interface {
  3733  	ListServiceClientMethods
  3734  }
  3735  
  3736  // ListServiceClient returns a client stub for ListService.
  3737  func ListServiceClient(name string) ListServiceClientStub {
  3738  	return implListServiceClientStub{name}
  3739  }
  3740  
  3741  type implListServiceClientStub struct {
  3742  	name string
  3743  }
  3744  
  3745  func (c implListServiceClientStub) List(ctx *context.T, opts ...rpc.CallOpt) (o0 []string, err error) {
  3746  	err = v23.GetClient(ctx).Call(ctx, c.name, "List", nil, []interface{}{&o0}, opts...)
  3747  	return
  3748  }
  3749  
  3750  // ListServiceServerMethods is the interface a server writer
  3751  // implements for ListService.
  3752  type ListServiceServerMethods interface {
  3753  	List(*context.T, rpc.ServerCall) ([]string, error)
  3754  }
  3755  
  3756  // ListServiceServerStubMethods is the server interface containing
  3757  // ListService methods, as expected by rpc.Server.
  3758  // There is no difference between this interface and ListServiceServerMethods
  3759  // since there are no streaming methods.
  3760  type ListServiceServerStubMethods ListServiceServerMethods
  3761  
  3762  // ListServiceServerStub adds universal methods to ListServiceServerStubMethods.
  3763  type ListServiceServerStub interface {
  3764  	ListServiceServerStubMethods
  3765  	// DescribeInterfaces the ListService interfaces.
  3766  	Describe__() []rpc.InterfaceDesc
  3767  }
  3768  
  3769  // ListServiceServer returns a server stub for ListService.
  3770  // It converts an implementation of ListServiceServerMethods into
  3771  // an object that may be used by rpc.Server.
  3772  func ListServiceServer(impl ListServiceServerMethods) ListServiceServerStub {
  3773  	stub := implListServiceServerStub{
  3774  		impl: impl,
  3775  	}
  3776  	// Initialize GlobState; always check the stub itself first, to handle the
  3777  	// case where the user has the Glob method defined in their VDL source.
  3778  	if gs := rpc.NewGlobState(stub); gs != nil {
  3779  		stub.gs = gs
  3780  	} else if gs := rpc.NewGlobState(impl); gs != nil {
  3781  		stub.gs = gs
  3782  	}
  3783  	return stub
  3784  }
  3785  
  3786  type implListServiceServerStub struct {
  3787  	impl ListServiceServerMethods
  3788  	gs   *rpc.GlobState
  3789  }
  3790  
  3791  func (s implListServiceServerStub) List(ctx *context.T, call rpc.ServerCall) ([]string, error) {
  3792  	return s.impl.List(ctx, call)
  3793  }
  3794  
  3795  func (s implListServiceServerStub) Globber() *rpc.GlobState {
  3796  	return s.gs
  3797  }
  3798  
  3799  func (s implListServiceServerStub) Describe__() []rpc.InterfaceDesc {
  3800  	return []rpc.InterfaceDesc{ListServiceDesc}
  3801  }
  3802  
  3803  // ListServiceDesc describes the ListService interface.
  3804  var ListServiceDesc rpc.InterfaceDesc = descListService
  3805  
  3806  // descListService hides the desc to keep godoc clean.
  3807  var descListService = rpc.InterfaceDesc{
  3808  	Name:    "ListService",
  3809  	PkgPath: "github.com/grailbio/base/security/ticket",
  3810  	Methods: []rpc.MethodDesc{
  3811  		{
  3812  			Name: "List",
  3813  			OutArgs: []rpc.ArgDesc{
  3814  				{Name: "", Doc: ``}, // []string
  3815  			},
  3816  			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
  3817  		},
  3818  	},
  3819  }
  3820  
  3821  // Hold type definitions in package-level variables, for better performance.
  3822  //nolint:unused
  3823  var (
  3824  	vdlTypeEnum1      *vdl.Type
  3825  	vdlTypeStruct2    *vdl.Type
  3826  	vdlTypeStruct3    *vdl.Type
  3827  	vdlTypeStruct4    *vdl.Type
  3828  	vdlTypeStruct5    *vdl.Type
  3829  	vdlTypeList6      *vdl.Type
  3830  	vdlTypeStruct7    *vdl.Type
  3831  	vdlTypeStruct8    *vdl.Type
  3832  	vdlTypeStruct9    *vdl.Type
  3833  	vdlTypeStruct10   *vdl.Type
  3834  	vdlTypeOptional11 *vdl.Type
  3835  	vdlTypeOptional12 *vdl.Type
  3836  	vdlTypeStruct13   *vdl.Type
  3837  	vdlTypeStruct14   *vdl.Type
  3838  	vdlTypeStruct15   *vdl.Type
  3839  	vdlTypeStruct16   *vdl.Type
  3840  	vdlTypeStruct17   *vdl.Type
  3841  	vdlTypeOptional18 *vdl.Type
  3842  	vdlTypeStruct19   *vdl.Type
  3843  	vdlTypeStruct20   *vdl.Type
  3844  	vdlTypeStruct21   *vdl.Type
  3845  	vdlTypeStruct22   *vdl.Type
  3846  	vdlTypeStruct23   *vdl.Type
  3847  	vdlTypeStruct24   *vdl.Type
  3848  	vdlTypeList25     *vdl.Type
  3849  	vdlTypeStruct26   *vdl.Type
  3850  	vdlTypeStruct27   *vdl.Type
  3851  	vdlTypeOptional28 *vdl.Type
  3852  	vdlTypeOptional29 *vdl.Type
  3853  	vdlTypeList30     *vdl.Type
  3854  	vdlTypeStruct31   *vdl.Type
  3855  	vdlTypeOptional32 *vdl.Type
  3856  	vdlTypeStruct33   *vdl.Type
  3857  	vdlTypeOptional34 *vdl.Type
  3858  	vdlTypeStruct35   *vdl.Type
  3859  	vdlTypeList36     *vdl.Type
  3860  	vdlTypeUnion37    *vdl.Type
  3861  	vdlTypeStruct38   *vdl.Type
  3862  	vdlTypeMap39      *vdl.Type
  3863  	vdlTypeMap40      *vdl.Type
  3864  	vdlTypeStruct41   *vdl.Type
  3865  	vdlTypeMap42      *vdl.Type
  3866  )
  3867  
  3868  var initializeVDLCalled bool
  3869  
  3870  // initializeVDL performs vdl initialization.  It is safe to call multiple times.
  3871  // If you have an init ordering issue, just insert the following line verbatim
  3872  // into your source files in this package, right after the "package foo" clause:
  3873  //
  3874  //    var _ = initializeVDL()
  3875  //
  3876  // The purpose of this function is to ensure that vdl initialization occurs in
  3877  // the right order, and very early in the init sequence.  In particular, vdl
  3878  // registration and package variable initialization needs to occur before
  3879  // functions like vdl.TypeOf will work properly.
  3880  //
  3881  // This function returns a dummy value, so that it can be used to initialize the
  3882  // first var in the file, to take advantage of Go's defined init order.
  3883  func initializeVDL() struct{} {
  3884  	if initializeVDLCalled {
  3885  		return struct{}{}
  3886  	}
  3887  	initializeVDLCalled = true
  3888  
  3889  	// Register types.
  3890  	vdl.Register((*Control)(nil))
  3891  	vdl.Register((*AwsCredentials)(nil))
  3892  	vdl.Register((*AwsAssumeRoleBuilder)(nil))
  3893  	vdl.Register((*AwsSessionBuilder)(nil))
  3894  	vdl.Register((*TlsCertAuthorityBuilder)(nil))
  3895  	vdl.Register((*SshCertAuthorityBuilder)(nil))
  3896  	vdl.Register((*B2AccountAuthorizationBuilder)(nil))
  3897  	vdl.Register((*VanadiumBuilder)(nil))
  3898  	vdl.Register((*AwsTicket)(nil))
  3899  	vdl.Register((*S3Ticket)(nil))
  3900  	vdl.Register((*EcrTicket)(nil))
  3901  	vdl.Register((*SshCert)(nil))
  3902  	vdl.Register((*TlsCredentials)(nil))
  3903  	vdl.Register((*TlsServerTicket)(nil))
  3904  	vdl.Register((*TlsClientTicket)(nil))
  3905  	vdl.Register((*DockerTicket)(nil))
  3906  	vdl.Register((*DockerServerTicket)(nil))
  3907  	vdl.Register((*DockerClientTicket)(nil))
  3908  	vdl.Register((*Parameter)(nil))
  3909  	vdl.Register((*AwsComputeInstancesBuilder)(nil))
  3910  	vdl.Register((*ComputeInstance)(nil))
  3911  	vdl.Register((*SshCertificateTicket)(nil))
  3912  	vdl.Register((*B2Ticket)(nil))
  3913  	vdl.Register((*VanadiumTicket)(nil))
  3914  	vdl.Register((*GenericTicket)(nil))
  3915  	vdl.Register((*Ticket)(nil))
  3916  	vdl.Register((*TicketConfig)(nil))
  3917  	vdl.Register((*Config)(nil))
  3918  
  3919  	// Initialize type definitions.
  3920  	vdlTypeEnum1 = vdl.TypeOf((*Control)(nil))
  3921  	vdlTypeStruct2 = vdl.TypeOf((*AwsCredentials)(nil)).Elem()
  3922  	vdlTypeStruct3 = vdl.TypeOf((*AwsAssumeRoleBuilder)(nil)).Elem()
  3923  	vdlTypeStruct4 = vdl.TypeOf((*AwsSessionBuilder)(nil)).Elem()
  3924  	vdlTypeStruct5 = vdl.TypeOf((*TlsCertAuthorityBuilder)(nil)).Elem()
  3925  	vdlTypeList6 = vdl.TypeOf((*[]string)(nil))
  3926  	vdlTypeStruct7 = vdl.TypeOf((*SshCertAuthorityBuilder)(nil)).Elem()
  3927  	vdlTypeStruct8 = vdl.TypeOf((*B2AccountAuthorizationBuilder)(nil)).Elem()
  3928  	vdlTypeStruct9 = vdl.TypeOf((*VanadiumBuilder)(nil)).Elem()
  3929  	vdlTypeStruct10 = vdl.TypeOf((*AwsTicket)(nil)).Elem()
  3930  	vdlTypeOptional11 = vdl.TypeOf((*AwsAssumeRoleBuilder)(nil))
  3931  	vdlTypeOptional12 = vdl.TypeOf((*AwsSessionBuilder)(nil))
  3932  	vdlTypeStruct13 = vdl.TypeOf((*S3Ticket)(nil)).Elem()
  3933  	vdlTypeStruct14 = vdl.TypeOf((*EcrTicket)(nil)).Elem()
  3934  	vdlTypeStruct15 = vdl.TypeOf((*SshCert)(nil)).Elem()
  3935  	vdlTypeStruct16 = vdl.TypeOf((*TlsCredentials)(nil)).Elem()
  3936  	vdlTypeStruct17 = vdl.TypeOf((*TlsServerTicket)(nil)).Elem()
  3937  	vdlTypeOptional18 = vdl.TypeOf((*TlsCertAuthorityBuilder)(nil))
  3938  	vdlTypeStruct19 = vdl.TypeOf((*TlsClientTicket)(nil)).Elem()
  3939  	vdlTypeStruct20 = vdl.TypeOf((*DockerTicket)(nil)).Elem()
  3940  	vdlTypeStruct21 = vdl.TypeOf((*DockerServerTicket)(nil)).Elem()
  3941  	vdlTypeStruct22 = vdl.TypeOf((*DockerClientTicket)(nil)).Elem()
  3942  	vdlTypeStruct23 = vdl.TypeOf((*Parameter)(nil)).Elem()
  3943  	vdlTypeStruct24 = vdl.TypeOf((*AwsComputeInstancesBuilder)(nil)).Elem()
  3944  	vdlTypeList25 = vdl.TypeOf((*[]Parameter)(nil))
  3945  	vdlTypeStruct26 = vdl.TypeOf((*ComputeInstance)(nil)).Elem()
  3946  	vdlTypeStruct27 = vdl.TypeOf((*SshCertificateTicket)(nil)).Elem()
  3947  	vdlTypeOptional28 = vdl.TypeOf((*SshCertAuthorityBuilder)(nil))
  3948  	vdlTypeOptional29 = vdl.TypeOf((*AwsComputeInstancesBuilder)(nil))
  3949  	vdlTypeList30 = vdl.TypeOf((*[]ComputeInstance)(nil))
  3950  	vdlTypeStruct31 = vdl.TypeOf((*B2Ticket)(nil)).Elem()
  3951  	vdlTypeOptional32 = vdl.TypeOf((*B2AccountAuthorizationBuilder)(nil))
  3952  	vdlTypeStruct33 = vdl.TypeOf((*VanadiumTicket)(nil)).Elem()
  3953  	vdlTypeOptional34 = vdl.TypeOf((*VanadiumBuilder)(nil))
  3954  	vdlTypeStruct35 = vdl.TypeOf((*GenericTicket)(nil)).Elem()
  3955  	vdlTypeList36 = vdl.TypeOf((*[]byte)(nil))
  3956  	vdlTypeUnion37 = vdl.TypeOf((*Ticket)(nil))
  3957  	vdlTypeStruct38 = vdl.TypeOf((*TicketConfig)(nil)).Elem()
  3958  	vdlTypeMap39 = vdl.TypeOf((*access.Permissions)(nil))
  3959  	vdlTypeMap40 = vdl.TypeOf((*map[Control]bool)(nil))
  3960  	vdlTypeStruct41 = vdl.TypeOf((*Config)(nil)).Elem()
  3961  	vdlTypeMap42 = vdl.TypeOf((*map[string]TicketConfig)(nil))
  3962  
  3963  	return struct{}{}
  3964  }