blob: b6e5c8d983306390293723aa70489a3c514d0978 [file]
// Code generated by protoc-gen-go.
// source: github.com/luci/luci-go/tokenserver/api/admin/v1/certificate_authorities.proto
// DO NOT EDIT!
package admin
import prpc "github.com/luci/luci-go/grpc/prpc"
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import google_protobuf "github.com/golang/protobuf/ptypes/empty"
import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// FetchCRLRequest identifies a name of CA to fetch CRL for.
type FetchCRLRequest struct {
Cn string `protobuf:"bytes,1,opt,name=cn" json:"cn,omitempty"`
Force bool `protobuf:"varint,2,opt,name=force" json:"force,omitempty"`
}
func (m *FetchCRLRequest) Reset() { *m = FetchCRLRequest{} }
func (m *FetchCRLRequest) String() string { return proto.CompactTextString(m) }
func (*FetchCRLRequest) ProtoMessage() {}
func (*FetchCRLRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
func (m *FetchCRLRequest) GetCn() string {
if m != nil {
return m.Cn
}
return ""
}
func (m *FetchCRLRequest) GetForce() bool {
if m != nil {
return m.Force
}
return false
}
// FetchCRLResponse is returned by FetchCRL.
type FetchCRLResponse struct {
CrlStatus *CRLStatus `protobuf:"bytes,1,opt,name=crl_status,json=crlStatus" json:"crl_status,omitempty"`
}
func (m *FetchCRLResponse) Reset() { *m = FetchCRLResponse{} }
func (m *FetchCRLResponse) String() string { return proto.CompactTextString(m) }
func (*FetchCRLResponse) ProtoMessage() {}
func (*FetchCRLResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
func (m *FetchCRLResponse) GetCrlStatus() *CRLStatus {
if m != nil {
return m.CrlStatus
}
return nil
}
// ListCAsResponse is returned by ListCAs.
type ListCAsResponse struct {
Cn []string `protobuf:"bytes,1,rep,name=cn" json:"cn,omitempty"`
}
func (m *ListCAsResponse) Reset() { *m = ListCAsResponse{} }
func (m *ListCAsResponse) String() string { return proto.CompactTextString(m) }
func (*ListCAsResponse) ProtoMessage() {}
func (*ListCAsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
func (m *ListCAsResponse) GetCn() []string {
if m != nil {
return m.Cn
}
return nil
}
// GetCAStatusRequest identifies a name of CA to fetch.
type GetCAStatusRequest struct {
Cn string `protobuf:"bytes,1,opt,name=cn" json:"cn,omitempty"`
}
func (m *GetCAStatusRequest) Reset() { *m = GetCAStatusRequest{} }
func (m *GetCAStatusRequest) String() string { return proto.CompactTextString(m) }
func (*GetCAStatusRequest) ProtoMessage() {}
func (*GetCAStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
func (m *GetCAStatusRequest) GetCn() string {
if m != nil {
return m.Cn
}
return ""
}
// GetCAStatusResponse is returned by GetCAStatus method.
//
// If requested CA doesn't exist, all fields are empty.
type GetCAStatusResponse struct {
Config *CertificateAuthorityConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
Cert string `protobuf:"bytes,2,opt,name=cert" json:"cert,omitempty"`
Removed bool `protobuf:"varint,3,opt,name=removed" json:"removed,omitempty"`
Ready bool `protobuf:"varint,4,opt,name=ready" json:"ready,omitempty"`
AddedRev string `protobuf:"bytes,5,opt,name=added_rev,json=addedRev" json:"added_rev,omitempty"`
UpdatedRev string `protobuf:"bytes,6,opt,name=updated_rev,json=updatedRev" json:"updated_rev,omitempty"`
RemovedRev string `protobuf:"bytes,7,opt,name=removed_rev,json=removedRev" json:"removed_rev,omitempty"`
CrlStatus *CRLStatus `protobuf:"bytes,8,opt,name=crl_status,json=crlStatus" json:"crl_status,omitempty"`
}
func (m *GetCAStatusResponse) Reset() { *m = GetCAStatusResponse{} }
func (m *GetCAStatusResponse) String() string { return proto.CompactTextString(m) }
func (*GetCAStatusResponse) ProtoMessage() {}
func (*GetCAStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
func (m *GetCAStatusResponse) GetConfig() *CertificateAuthorityConfig {
if m != nil {
return m.Config
}
return nil
}
func (m *GetCAStatusResponse) GetCert() string {
if m != nil {
return m.Cert
}
return ""
}
func (m *GetCAStatusResponse) GetRemoved() bool {
if m != nil {
return m.Removed
}
return false
}
func (m *GetCAStatusResponse) GetReady() bool {
if m != nil {
return m.Ready
}
return false
}
func (m *GetCAStatusResponse) GetAddedRev() string {
if m != nil {
return m.AddedRev
}
return ""
}
func (m *GetCAStatusResponse) GetUpdatedRev() string {
if m != nil {
return m.UpdatedRev
}
return ""
}
func (m *GetCAStatusResponse) GetRemovedRev() string {
if m != nil {
return m.RemovedRev
}
return ""
}
func (m *GetCAStatusResponse) GetCrlStatus() *CRLStatus {
if m != nil {
return m.CrlStatus
}
return nil
}
// IsRevokedCertRequest contains a name of the CA and a cert serial number.
type IsRevokedCertRequest struct {
Ca string `protobuf:"bytes,1,opt,name=ca" json:"ca,omitempty"`
Sn string `protobuf:"bytes,2,opt,name=sn" json:"sn,omitempty"`
}
func (m *IsRevokedCertRequest) Reset() { *m = IsRevokedCertRequest{} }
func (m *IsRevokedCertRequest) String() string { return proto.CompactTextString(m) }
func (*IsRevokedCertRequest) ProtoMessage() {}
func (*IsRevokedCertRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
func (m *IsRevokedCertRequest) GetCa() string {
if m != nil {
return m.Ca
}
return ""
}
func (m *IsRevokedCertRequest) GetSn() string {
if m != nil {
return m.Sn
}
return ""
}
// IsRevokedCertResponse is returned by IsRevokedCert
type IsRevokedCertResponse struct {
Revoked bool `protobuf:"varint,1,opt,name=revoked" json:"revoked,omitempty"`
}
func (m *IsRevokedCertResponse) Reset() { *m = IsRevokedCertResponse{} }
func (m *IsRevokedCertResponse) String() string { return proto.CompactTextString(m) }
func (*IsRevokedCertResponse) ProtoMessage() {}
func (*IsRevokedCertResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
func (m *IsRevokedCertResponse) GetRevoked() bool {
if m != nil {
return m.Revoked
}
return false
}
// CheckCertificateRequest contains a pem encoded certificate to check.
type CheckCertificateRequest struct {
CertPem string `protobuf:"bytes,1,opt,name=cert_pem,json=certPem" json:"cert_pem,omitempty"`
}
func (m *CheckCertificateRequest) Reset() { *m = CheckCertificateRequest{} }
func (m *CheckCertificateRequest) String() string { return proto.CompactTextString(m) }
func (*CheckCertificateRequest) ProtoMessage() {}
func (*CheckCertificateRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
func (m *CheckCertificateRequest) GetCertPem() string {
if m != nil {
return m.CertPem
}
return ""
}
// CheckCertificateResponse is returned by CheckCertificate.
type CheckCertificateResponse struct {
IsValid bool `protobuf:"varint,1,opt,name=is_valid,json=isValid" json:"is_valid,omitempty"`
InvalidReason string `protobuf:"bytes,2,opt,name=invalid_reason,json=invalidReason" json:"invalid_reason,omitempty"`
}
func (m *CheckCertificateResponse) Reset() { *m = CheckCertificateResponse{} }
func (m *CheckCertificateResponse) String() string { return proto.CompactTextString(m) }
func (*CheckCertificateResponse) ProtoMessage() {}
func (*CheckCertificateResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
func (m *CheckCertificateResponse) GetIsValid() bool {
if m != nil {
return m.IsValid
}
return false
}
func (m *CheckCertificateResponse) GetInvalidReason() string {
if m != nil {
return m.InvalidReason
}
return ""
}
// CRLStatus describes the latest known state of imported CRL.
type CRLStatus struct {
LastUpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"`
LastFetchTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=last_fetch_time,json=lastFetchTime" json:"last_fetch_time,omitempty"`
LastFetchEtag string `protobuf:"bytes,3,opt,name=last_fetch_etag,json=lastFetchEtag" json:"last_fetch_etag,omitempty"`
RevokedCertsCount int64 `protobuf:"varint,4,opt,name=revoked_certs_count,json=revokedCertsCount" json:"revoked_certs_count,omitempty"`
}
func (m *CRLStatus) Reset() { *m = CRLStatus{} }
func (m *CRLStatus) String() string { return proto.CompactTextString(m) }
func (*CRLStatus) ProtoMessage() {}
func (*CRLStatus) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
func (m *CRLStatus) GetLastUpdateTime() *google_protobuf1.Timestamp {
if m != nil {
return m.LastUpdateTime
}
return nil
}
func (m *CRLStatus) GetLastFetchTime() *google_protobuf1.Timestamp {
if m != nil {
return m.LastFetchTime
}
return nil
}
func (m *CRLStatus) GetLastFetchEtag() string {
if m != nil {
return m.LastFetchEtag
}
return ""
}
func (m *CRLStatus) GetRevokedCertsCount() int64 {
if m != nil {
return m.RevokedCertsCount
}
return 0
}
func init() {
proto.RegisterType((*FetchCRLRequest)(nil), "tokenserver.admin.FetchCRLRequest")
proto.RegisterType((*FetchCRLResponse)(nil), "tokenserver.admin.FetchCRLResponse")
proto.RegisterType((*ListCAsResponse)(nil), "tokenserver.admin.ListCAsResponse")
proto.RegisterType((*GetCAStatusRequest)(nil), "tokenserver.admin.GetCAStatusRequest")
proto.RegisterType((*GetCAStatusResponse)(nil), "tokenserver.admin.GetCAStatusResponse")
proto.RegisterType((*IsRevokedCertRequest)(nil), "tokenserver.admin.IsRevokedCertRequest")
proto.RegisterType((*IsRevokedCertResponse)(nil), "tokenserver.admin.IsRevokedCertResponse")
proto.RegisterType((*CheckCertificateRequest)(nil), "tokenserver.admin.CheckCertificateRequest")
proto.RegisterType((*CheckCertificateResponse)(nil), "tokenserver.admin.CheckCertificateResponse")
proto.RegisterType((*CRLStatus)(nil), "tokenserver.admin.CRLStatus")
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for CertificateAuthorities service
type CertificateAuthoritiesClient interface {
// FetchCRL makes the server fetch a CRL for some CA.
FetchCRL(ctx context.Context, in *FetchCRLRequest, opts ...grpc.CallOption) (*FetchCRLResponse, error)
// ListCAs returns a list of Common Names of registered CAs.
ListCAs(ctx context.Context, in *google_protobuf.Empty, opts ...grpc.CallOption) (*ListCAsResponse, error)
// GetCAStatus returns configuration of some CA defined in the config.
GetCAStatus(ctx context.Context, in *GetCAStatusRequest, opts ...grpc.CallOption) (*GetCAStatusResponse, error)
// IsRevokedCert says whether a certificate serial number is in the CRL.
IsRevokedCert(ctx context.Context, in *IsRevokedCertRequest, opts ...grpc.CallOption) (*IsRevokedCertResponse, error)
// CheckCertificate says whether a certificate is valid or not.
CheckCertificate(ctx context.Context, in *CheckCertificateRequest, opts ...grpc.CallOption) (*CheckCertificateResponse, error)
}
type certificateAuthoritiesPRPCClient struct {
client *prpc.Client
}
func NewCertificateAuthoritiesPRPCClient(client *prpc.Client) CertificateAuthoritiesClient {
return &certificateAuthoritiesPRPCClient{client}
}
func (c *certificateAuthoritiesPRPCClient) FetchCRL(ctx context.Context, in *FetchCRLRequest, opts ...grpc.CallOption) (*FetchCRLResponse, error) {
out := new(FetchCRLResponse)
err := c.client.Call(ctx, "tokenserver.admin.CertificateAuthorities", "FetchCRL", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *certificateAuthoritiesPRPCClient) ListCAs(ctx context.Context, in *google_protobuf.Empty, opts ...grpc.CallOption) (*ListCAsResponse, error) {
out := new(ListCAsResponse)
err := c.client.Call(ctx, "tokenserver.admin.CertificateAuthorities", "ListCAs", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *certificateAuthoritiesPRPCClient) GetCAStatus(ctx context.Context, in *GetCAStatusRequest, opts ...grpc.CallOption) (*GetCAStatusResponse, error) {
out := new(GetCAStatusResponse)
err := c.client.Call(ctx, "tokenserver.admin.CertificateAuthorities", "GetCAStatus", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *certificateAuthoritiesPRPCClient) IsRevokedCert(ctx context.Context, in *IsRevokedCertRequest, opts ...grpc.CallOption) (*IsRevokedCertResponse, error) {
out := new(IsRevokedCertResponse)
err := c.client.Call(ctx, "tokenserver.admin.CertificateAuthorities", "IsRevokedCert", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *certificateAuthoritiesPRPCClient) CheckCertificate(ctx context.Context, in *CheckCertificateRequest, opts ...grpc.CallOption) (*CheckCertificateResponse, error) {
out := new(CheckCertificateResponse)
err := c.client.Call(ctx, "tokenserver.admin.CertificateAuthorities", "CheckCertificate", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
type certificateAuthoritiesClient struct {
cc *grpc.ClientConn
}
func NewCertificateAuthoritiesClient(cc *grpc.ClientConn) CertificateAuthoritiesClient {
return &certificateAuthoritiesClient{cc}
}
func (c *certificateAuthoritiesClient) FetchCRL(ctx context.Context, in *FetchCRLRequest, opts ...grpc.CallOption) (*FetchCRLResponse, error) {
out := new(FetchCRLResponse)
err := grpc.Invoke(ctx, "/tokenserver.admin.CertificateAuthorities/FetchCRL", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *certificateAuthoritiesClient) ListCAs(ctx context.Context, in *google_protobuf.Empty, opts ...grpc.CallOption) (*ListCAsResponse, error) {
out := new(ListCAsResponse)
err := grpc.Invoke(ctx, "/tokenserver.admin.CertificateAuthorities/ListCAs", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *certificateAuthoritiesClient) GetCAStatus(ctx context.Context, in *GetCAStatusRequest, opts ...grpc.CallOption) (*GetCAStatusResponse, error) {
out := new(GetCAStatusResponse)
err := grpc.Invoke(ctx, "/tokenserver.admin.CertificateAuthorities/GetCAStatus", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *certificateAuthoritiesClient) IsRevokedCert(ctx context.Context, in *IsRevokedCertRequest, opts ...grpc.CallOption) (*IsRevokedCertResponse, error) {
out := new(IsRevokedCertResponse)
err := grpc.Invoke(ctx, "/tokenserver.admin.CertificateAuthorities/IsRevokedCert", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *certificateAuthoritiesClient) CheckCertificate(ctx context.Context, in *CheckCertificateRequest, opts ...grpc.CallOption) (*CheckCertificateResponse, error) {
out := new(CheckCertificateResponse)
err := grpc.Invoke(ctx, "/tokenserver.admin.CertificateAuthorities/CheckCertificate", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for CertificateAuthorities service
type CertificateAuthoritiesServer interface {
// FetchCRL makes the server fetch a CRL for some CA.
FetchCRL(context.Context, *FetchCRLRequest) (*FetchCRLResponse, error)
// ListCAs returns a list of Common Names of registered CAs.
ListCAs(context.Context, *google_protobuf.Empty) (*ListCAsResponse, error)
// GetCAStatus returns configuration of some CA defined in the config.
GetCAStatus(context.Context, *GetCAStatusRequest) (*GetCAStatusResponse, error)
// IsRevokedCert says whether a certificate serial number is in the CRL.
IsRevokedCert(context.Context, *IsRevokedCertRequest) (*IsRevokedCertResponse, error)
// CheckCertificate says whether a certificate is valid or not.
CheckCertificate(context.Context, *CheckCertificateRequest) (*CheckCertificateResponse, error)
}
func RegisterCertificateAuthoritiesServer(s prpc.Registrar, srv CertificateAuthoritiesServer) {
s.RegisterService(&_CertificateAuthorities_serviceDesc, srv)
}
func _CertificateAuthorities_FetchCRL_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FetchCRLRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CertificateAuthoritiesServer).FetchCRL(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/tokenserver.admin.CertificateAuthorities/FetchCRL",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CertificateAuthoritiesServer).FetchCRL(ctx, req.(*FetchCRLRequest))
}
return interceptor(ctx, in, info, handler)
}
func _CertificateAuthorities_ListCAs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(google_protobuf.Empty)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CertificateAuthoritiesServer).ListCAs(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/tokenserver.admin.CertificateAuthorities/ListCAs",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CertificateAuthoritiesServer).ListCAs(ctx, req.(*google_protobuf.Empty))
}
return interceptor(ctx, in, info, handler)
}
func _CertificateAuthorities_GetCAStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetCAStatusRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CertificateAuthoritiesServer).GetCAStatus(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/tokenserver.admin.CertificateAuthorities/GetCAStatus",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CertificateAuthoritiesServer).GetCAStatus(ctx, req.(*GetCAStatusRequest))
}
return interceptor(ctx, in, info, handler)
}
func _CertificateAuthorities_IsRevokedCert_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(IsRevokedCertRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CertificateAuthoritiesServer).IsRevokedCert(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/tokenserver.admin.CertificateAuthorities/IsRevokedCert",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CertificateAuthoritiesServer).IsRevokedCert(ctx, req.(*IsRevokedCertRequest))
}
return interceptor(ctx, in, info, handler)
}
func _CertificateAuthorities_CheckCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CheckCertificateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CertificateAuthoritiesServer).CheckCertificate(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/tokenserver.admin.CertificateAuthorities/CheckCertificate",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CertificateAuthoritiesServer).CheckCertificate(ctx, req.(*CheckCertificateRequest))
}
return interceptor(ctx, in, info, handler)
}
var _CertificateAuthorities_serviceDesc = grpc.ServiceDesc{
ServiceName: "tokenserver.admin.CertificateAuthorities",
HandlerType: (*CertificateAuthoritiesServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "FetchCRL",
Handler: _CertificateAuthorities_FetchCRL_Handler,
},
{
MethodName: "ListCAs",
Handler: _CertificateAuthorities_ListCAs_Handler,
},
{
MethodName: "GetCAStatus",
Handler: _CertificateAuthorities_GetCAStatus_Handler,
},
{
MethodName: "IsRevokedCert",
Handler: _CertificateAuthorities_IsRevokedCert_Handler,
},
{
MethodName: "CheckCertificate",
Handler: _CertificateAuthorities_CheckCertificate_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "github.com/luci/luci-go/tokenserver/api/admin/v1/certificate_authorities.proto",
}
func init() {
proto.RegisterFile("github.com/luci/luci-go/tokenserver/api/admin/v1/certificate_authorities.proto", fileDescriptor1)
}
var fileDescriptor1 = []byte{
// 706 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0x5d, 0x6f, 0xd3, 0x4a,
0x10, 0x55, 0x92, 0xb6, 0x49, 0xa6, 0xea, 0xd7, 0xb6, 0xb7, 0x37, 0x75, 0xaf, 0xd4, 0x5e, 0xdf,
0xdb, 0x52, 0x81, 0x6a, 0xab, 0x05, 0xc1, 0x03, 0xe2, 0xa1, 0x84, 0x82, 0x90, 0x2a, 0x40, 0x2e,
0xf0, 0x54, 0xc9, 0xda, 0xd8, 0x93, 0x64, 0x95, 0xd8, 0x6b, 0xbc, 0x6b, 0x4b, 0xfd, 0x6f, 0xfc,
0x1b, 0x9e, 0xf9, 0x0f, 0x68, 0xd7, 0xeb, 0x34, 0x1f, 0x16, 0xa5, 0x2f, 0x51, 0x66, 0xf6, 0x9c,
0x99, 0xf1, 0xd9, 0x39, 0x0b, 0x1f, 0x06, 0x4c, 0x0e, 0xb3, 0x9e, 0x13, 0xf0, 0xc8, 0x1d, 0x67,
0x01, 0xd3, 0x3f, 0xa7, 0x03, 0xee, 0x4a, 0x3e, 0xc2, 0x58, 0x60, 0x9a, 0x63, 0xea, 0xd2, 0x84,
0xb9, 0x34, 0x8c, 0x58, 0xec, 0xe6, 0x67, 0x6e, 0x80, 0xa9, 0x64, 0x7d, 0x16, 0x50, 0x89, 0x3e,
0xcd, 0xe4, 0x90, 0xa7, 0x4c, 0x32, 0x14, 0x4e, 0x92, 0x72, 0xc9, 0xc9, 0xd6, 0x14, 0xcf, 0xd1,
0x1c, 0x6b, 0x7f, 0xc0, 0xf9, 0x60, 0x8c, 0xae, 0x06, 0xf4, 0xb2, 0xbe, 0x8b, 0x51, 0x22, 0x6f,
0x0b, 0xbc, 0x75, 0x30, 0x7f, 0x28, 0x59, 0x84, 0x42, 0xd2, 0x28, 0x31, 0x80, 0x57, 0x0f, 0x1f,
0x90, 0xc7, 0x7d, 0x36, 0x28, 0xe8, 0xf6, 0x0b, 0xd8, 0x78, 0x8b, 0x32, 0x18, 0x76, 0xbd, 0x2b,
0x0f, 0xbf, 0x65, 0x28, 0x24, 0x59, 0x87, 0x7a, 0x10, 0x77, 0x6a, 0x87, 0xb5, 0x93, 0xb6, 0x57,
0x0f, 0x62, 0xb2, 0x03, 0xcb, 0x7d, 0x9e, 0x06, 0xd8, 0xa9, 0x1f, 0xd6, 0x4e, 0x5a, 0x5e, 0x11,
0xd8, 0x1f, 0x61, 0xf3, 0x8e, 0x28, 0x12, 0x1e, 0x0b, 0x24, 0x2f, 0x01, 0x82, 0x74, 0xec, 0x0b,
0x49, 0x65, 0x26, 0x74, 0x85, 0xd5, 0xf3, 0x7f, 0x9c, 0x85, 0x2f, 0x76, 0xba, 0xde, 0xd5, 0xb5,
0xc6, 0x78, 0xed, 0x20, 0x1d, 0x17, 0x7f, 0xed, 0x7f, 0x61, 0xe3, 0x8a, 0x09, 0xd9, 0xbd, 0x10,
0x93, 0x7a, 0xe5, 0x24, 0x8d, 0x62, 0x12, 0xfb, 0x7f, 0x20, 0xef, 0x50, 0x76, 0x2f, 0x0c, 0xb9,
0x7a, 0x5e, 0xfb, 0x7b, 0x1d, 0xb6, 0x67, 0x60, 0xa6, 0xda, 0x25, 0xac, 0x14, 0x9f, 0x6e, 0x26,
0x3b, 0xad, 0x9a, 0xec, 0xee, 0xf2, 0x2e, 0xcc, 0xdd, 0xdd, 0x76, 0x35, 0xc9, 0x33, 0x64, 0x42,
0x60, 0x49, 0x5d, 0xb1, 0x56, 0xa3, 0xed, 0xe9, 0xff, 0xa4, 0x03, 0xcd, 0x14, 0x23, 0x9e, 0x63,
0xd8, 0x69, 0x68, 0x91, 0xca, 0x50, 0x89, 0x97, 0x22, 0x0d, 0x6f, 0x3b, 0x4b, 0x85, 0x78, 0x3a,
0x20, 0xfb, 0xd0, 0xa6, 0x61, 0x88, 0xa1, 0x9f, 0x62, 0xde, 0x59, 0xd6, 0x85, 0x5a, 0x3a, 0xe1,
0x61, 0x4e, 0x0e, 0x60, 0x35, 0x4b, 0x42, 0x2a, 0xcd, 0xf1, 0x8a, 0x3e, 0x06, 0x93, 0x32, 0x00,
0x53, 0x5e, 0x03, 0x9a, 0x05, 0xc0, 0xa4, 0x14, 0x60, 0xf6, 0x1e, 0x5a, 0x0f, 0xbb, 0x87, 0xe7,
0xb0, 0xf3, 0x5e, 0x78, 0x98, 0xf3, 0x11, 0x86, 0x4a, 0x8e, 0x69, 0x99, 0xe9, 0x44, 0x66, 0xaa,
0x62, 0x11, 0x1b, 0x15, 0xea, 0x22, 0xb6, 0xcf, 0xe0, 0xaf, 0x39, 0x9e, 0xd1, 0x5d, 0x8b, 0xa3,
0xd3, 0x9a, 0xad, 0xc5, 0xd1, 0xa1, 0xfd, 0x0c, 0xfe, 0xee, 0x0e, 0x31, 0x18, 0x4d, 0xa9, 0x5e,
0x76, 0xdb, 0x83, 0x96, 0x52, 0xd6, 0x4f, 0x30, 0x32, 0x3d, 0x9b, 0x2a, 0xfe, 0x84, 0x91, 0x7d,
0x03, 0x9d, 0x45, 0x96, 0xe9, 0xb5, 0x07, 0x2d, 0x26, 0xfc, 0x9c, 0x8e, 0xd9, 0xa4, 0x19, 0x13,
0x5f, 0x55, 0x48, 0x8e, 0x60, 0x9d, 0xc5, 0xfa, 0xc4, 0x4f, 0x91, 0x0a, 0x5e, 0xce, 0xbe, 0x66,
0xb2, 0x9e, 0x4e, 0xda, 0x3f, 0x6b, 0xd0, 0x9e, 0xe8, 0x42, 0xde, 0xc0, 0xe6, 0x98, 0x0a, 0xe9,
0x17, 0xea, 0xfb, 0xca, 0x7c, 0x66, 0x7b, 0x2c, 0xa7, 0x70, 0xa6, 0x53, 0x3a, 0xd3, 0xf9, 0x5c,
0x3a, 0xd3, 0x5b, 0x57, 0x9c, 0x2f, 0x9a, 0xa2, 0x92, 0xe4, 0x35, 0x6c, 0xe8, 0x2a, 0x7d, 0x65,
0x98, 0xa2, 0x48, 0xfd, 0xde, 0x22, 0x6b, 0x8a, 0xa2, 0x2d, 0xa6, 0x6b, 0x1c, 0xcf, 0xd4, 0x40,
0x49, 0x07, 0x7a, 0xd5, 0xda, 0x53, 0xb8, 0x4b, 0x49, 0x07, 0xc4, 0x81, 0x6d, 0x23, 0xaf, 0xaf,
0x04, 0x13, 0x7e, 0xc0, 0xb3, 0x58, 0xea, 0xf5, 0x6b, 0x78, 0x5b, 0xe9, 0xdd, 0xfd, 0x88, 0xae,
0x3a, 0x38, 0xff, 0xd1, 0x80, 0xdd, 0x8a, 0xad, 0x67, 0x28, 0xc8, 0x35, 0xb4, 0x4a, 0x8b, 0x13,
0xbb, 0x62, 0x7d, 0xe6, 0x1e, 0x0e, 0xeb, 0xbf, 0xdf, 0x62, 0x26, 0x2e, 0x6c, 0x1a, 0x9b, 0x93,
0xdd, 0x85, 0xaf, 0xbf, 0x54, 0x2f, 0x9f, 0x55, 0xd5, 0x6b, 0xfe, 0x69, 0xb8, 0x81, 0xd5, 0x29,
0x8f, 0x93, 0xa3, 0x0a, 0xca, 0xe2, 0x53, 0x61, 0x1d, 0xdf, 0x07, 0x33, 0xd5, 0x7b, 0xb0, 0x36,
0xb3, 0xcb, 0xe4, 0x51, 0x05, 0xb1, 0xca, 0x25, 0xd6, 0xc9, 0xfd, 0x40, 0xd3, 0x63, 0x04, 0x9b,
0xf3, 0x6b, 0x4c, 0x1e, 0x57, 0x99, 0xb4, 0xda, 0x21, 0xd6, 0x93, 0x3f, 0xc2, 0x16, 0xcd, 0x7a,
0x2b, 0x5a, 0xe2, 0xa7, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xf5, 0x82, 0x1d, 0x05, 0xcf, 0x06,
0x00, 0x00,
}