diff --git a/api/protobuf-spec/github_com_openshift_origin_pkg_build_api_v1.proto b/api/protobuf-spec/github_com_openshift_origin_pkg_build_api_v1.proto index 4ab2ad0bc934..a547752f24b4 100644 --- a/api/protobuf-spec/github_com_openshift_origin_pkg_build_api_v1.proto +++ b/api/protobuf-spec/github_com_openshift_origin_pkg_build_api_v1.proto @@ -302,7 +302,8 @@ message BuildRequest { // not be generated. optional int64 lastVersion = 6; - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 7; // triggeredBy describes which triggers started the most recent update to the @@ -533,7 +534,8 @@ message CustomBuildStrategy { // registries optional k8s.io.kubernetes.pkg.api.v1.LocalObjectReference pullSecret = 2; - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 3; // exposeDockerSocket will allow running Docker commands (and build Docker images) from @@ -568,7 +570,8 @@ message DockerBuildStrategy { // --no-cache=true flag optional bool noCache = 3; - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 4; // forcePull describes if the builder should pull the images from registry prior to building. @@ -599,7 +602,8 @@ message GenericWebHookEvent { // git is the git information if the Type is BuildSourceGit optional GitInfo git = 2; - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 3; } @@ -720,6 +724,10 @@ message JenkinsPipelineBuildStrategy { // Jenkinsfile defines the optional raw contents of a Jenkinsfile which defines a Jenkins pipeline build. optional string jenkinsfile = 2; + + // env contains additional environment variables you want to pass into a build pipeline. + // ValueFrom is not supported. + repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 3; } // OptionalNodeSelector is a map that may also be left nil to distinguish between set and unset. @@ -782,7 +790,8 @@ message SourceBuildStrategy { // registries optional k8s.io.kubernetes.pkg.api.v1.LocalObjectReference pullSecret = 2; - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 3; // scripts is the location of Source scripts diff --git a/api/swagger-spec/oapi-v1.json b/api/swagger-spec/oapi-v1.json index a24a6443a2b7..e835068c689c 100644 --- a/api/swagger-spec/oapi-v1.json +++ b/api/swagger-spec/oapi-v1.json @@ -23237,7 +23237,7 @@ "items": { "$ref": "v1.EnvVar" }, - "description": "env contains additional environment variables you want to pass into a builder container" + "description": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported." }, "forcePull": { "type": "boolean", @@ -23384,7 +23384,7 @@ "items": { "$ref": "v1.EnvVar" }, - "description": "env contains additional environment variables you want to pass into a builder container" + "description": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported." }, "scripts": { "type": "string", @@ -23431,7 +23431,7 @@ "items": { "$ref": "v1.EnvVar" }, - "description": "env contains additional environment variables you want to pass into a builder container" + "description": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported." }, "exposeDockerSocket": { "type": "boolean", @@ -23483,6 +23483,13 @@ "jenkinsfile": { "type": "string", "description": "Jenkinsfile defines the optional raw contents of a Jenkinsfile which defines a Jenkins pipeline build." + }, + "env": { + "type": "array", + "items": { + "$ref": "v1.EnvVar" + }, + "description": "env contains additional environment variables you want to pass into a build pipeline. ValueFrom is not supported." } } }, @@ -23769,7 +23776,7 @@ "items": { "$ref": "v1.EnvVar" }, - "description": "env contains additional environment variables you want to pass into a builder container" + "description": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported." }, "triggeredBy": { "type": "array", diff --git a/api/swagger-spec/openshift-openapi-spec.json b/api/swagger-spec/openshift-openapi-spec.json index 955c155bfa29..91e7df4aabda 100644 --- a/api/swagger-spec/openshift-openapi-spec.json +++ b/api/swagger-spec/openshift-openapi-spec.json @@ -48009,7 +48009,7 @@ "$ref": "#/definitions/v1.BinaryBuildSource" }, "env": { - "description": "env contains additional environment variables you want to pass into a builder container", + "description": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", "type": "array", "items": { "$ref": "#/definitions/v1.EnvVar" @@ -49288,7 +49288,7 @@ "type": "string" }, "env": { - "description": "env contains additional environment variables you want to pass into a builder container", + "description": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", "type": "array", "items": { "$ref": "#/definitions/v1.EnvVar" @@ -49878,7 +49878,7 @@ "type": "string" }, "env": { - "description": "env contains additional environment variables you want to pass into a builder container", + "description": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", "type": "array", "items": { "$ref": "#/definitions/v1.EnvVar" @@ -51620,6 +51620,13 @@ "v1.JenkinsPipelineBuildStrategy": { "description": "JenkinsPipelineBuildStrategy holds parameters specific to a Jenkins Pipeline build. This strategy is in tech preview.", "properties": { + "env": { + "description": "env contains additional environment variables you want to pass into a build pipeline. ValueFrom is not supported.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.EnvVar" + } + }, "jenkinsfile": { "description": "Jenkinsfile defines the optional raw contents of a Jenkinsfile which defines a Jenkins pipeline build.", "type": "string" @@ -55972,7 +55979,7 @@ ], "properties": { "env": { - "description": "env contains additional environment variables you want to pass into a builder container", + "description": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", "type": "array", "items": { "$ref": "#/definitions/v1.EnvVar" diff --git a/pkg/build/api/types.go b/pkg/build/api/types.go index a2e069cfb86e..126cb0558dc9 100644 --- a/pkg/build/api/types.go +++ b/pkg/build/api/types.go @@ -550,7 +550,8 @@ type CustomBuildStrategy struct { // registries PullSecret *kapi.LocalObjectReference - // Env contains additional environment variables you want to pass into a builder container + // Env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. Env []kapi.EnvVar // ExposeDockerSocket will allow running Docker commands (and build Docker images) from @@ -585,7 +586,8 @@ type DockerBuildStrategy struct { // --no-cache=true flag NoCache bool - // Env contains additional environment variables you want to pass into a builder container + // Env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. Env []kapi.EnvVar // ForcePull describes if the builder should pull the images from registry prior to building. @@ -607,7 +609,8 @@ type SourceBuildStrategy struct { // registries PullSecret *kapi.LocalObjectReference - // Env contains additional environment variables you want to pass into a builder container + // Env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. Env []kapi.EnvVar // Scripts is the location of Source scripts @@ -644,6 +647,10 @@ type JenkinsPipelineBuildStrategy struct { // Jenkinsfile defines the optional raw contents of a Jenkinsfile which defines a Jenkins pipeline build. Jenkinsfile string + + // Env contains additional environment variables you want to pass into a build pipeline. + // ValueFrom is not supported. + Env []kapi.EnvVar } // A BuildPostCommitSpec holds a build post commit hook specification. The hook @@ -909,7 +916,8 @@ type GenericWebHookEvent struct { // Git is the git information, if any. Git *GitInfo - // Env contains additional environment variables you want to pass into a builder container + // Env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. Env []kapi.EnvVar } @@ -961,6 +969,7 @@ type BuildRequest struct { LastVersion *int64 // Env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. Env []kapi.EnvVar // TriggeredBy describes which triggers started the most recent update to the diff --git a/pkg/build/api/v1/generated.pb.go b/pkg/build/api/v1/generated.pb.go index 73edaef2ba81..9cb4f8843844 100644 --- a/pkg/build/api/v1/generated.pb.go +++ b/pkg/build/api/v1/generated.pb.go @@ -1968,6 +1968,18 @@ func (m *JenkinsPipelineBuildStrategy) MarshalTo(data []byte) (int, error) { i++ i = encodeVarintGenerated(data, i, uint64(len(m.Jenkinsfile))) i += copy(data[i:], m.Jenkinsfile) + if len(m.Env) > 0 { + for _, msg := range m.Env { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } return i, nil } @@ -2919,6 +2931,12 @@ func (m *JenkinsPipelineBuildStrategy) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = len(m.Jenkinsfile) n += 1 + l + sovGenerated(uint64(l)) + if len(m.Env) > 0 { + for _, e := range m.Env { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } return n } @@ -3505,6 +3523,7 @@ func (this *JenkinsPipelineBuildStrategy) String() string { s := strings.Join([]string{`&JenkinsPipelineBuildStrategy{`, `JenkinsfilePath:` + fmt.Sprintf("%v", this.JenkinsfilePath) + `,`, `Jenkinsfile:` + fmt.Sprintf("%v", this.Jenkinsfile) + `,`, + `Env:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Env), "EnvVar", "k8s_io_kubernetes_pkg_api_v1.EnvVar", 1), `&`, ``, 1) + `,`, `}`, }, "") return s @@ -9276,6 +9295,37 @@ func (m *JenkinsPipelineBuildStrategy) Unmarshal(data []byte) error { } m.Jenkinsfile = string(data[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Env", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Env = append(m.Env, k8s_io_kubernetes_pkg_api_v1.EnvVar{}) + if err := m.Env[len(m.Env)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(data[iNdEx:]) @@ -10519,213 +10569,213 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 3327 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe4, 0x5b, 0x49, 0x6c, 0x1c, 0xc7, - 0xd5, 0x56, 0xcf, 0x90, 0x33, 0xc3, 0x37, 0x14, 0x97, 0xa2, 0x6c, 0x8d, 0x68, 0x9b, 0x23, 0xb7, - 0x17, 0xd8, 0xb0, 0x3c, 0x84, 0x64, 0xcb, 0xbf, 0xbc, 0x9b, 0x33, 0xa4, 0x64, 0xca, 0x94, 0xc4, - 0xbf, 0x48, 0x6f, 0xfa, 0xf1, 0xff, 0x3f, 0x9a, 0xcd, 0x9a, 0x61, 0x9b, 0x3d, 0xdd, 0xe3, 0xae, - 0x9a, 0xb1, 0x08, 0xc4, 0x80, 0x91, 0x20, 0x80, 0x73, 0xcb, 0xe2, 0x83, 0x2f, 0x41, 0x62, 0x20, - 0x0b, 0x82, 0x1c, 0x82, 0x2c, 0x87, 0x00, 0xb9, 0x24, 0x40, 0x0e, 0x3e, 0x05, 0x3e, 0xe6, 0x10, - 0x0c, 0x22, 0xfa, 0x90, 0x73, 0xae, 0x3a, 0x05, 0xb5, 0x74, 0x77, 0x75, 0xcf, 0x90, 0xd6, 0x34, - 0x45, 0x23, 0x40, 0x2e, 0x02, 0xe7, 0xbd, 0x57, 0xdf, 0xab, 0x7a, 0xf5, 0xaa, 0xde, 0xd2, 0x25, - 0x78, 0xa9, 0xe5, 0xb0, 0x9d, 0xee, 0x56, 0xcd, 0xf6, 0xdb, 0x8b, 0x7e, 0x87, 0x78, 0x74, 0xc7, - 0x69, 0xb2, 0x45, 0x3f, 0x70, 0x5a, 0x8e, 0xb7, 0xd8, 0xd9, 0x6d, 0x2d, 0x6e, 0x75, 0x1d, 0x77, - 0x7b, 0xd1, 0xea, 0x38, 0x8b, 0xbd, 0xf3, 0x8b, 0x2d, 0xe2, 0x91, 0xc0, 0x62, 0x64, 0xbb, 0xd6, - 0x09, 0x7c, 0xe6, 0xa3, 0x73, 0xf1, 0xe8, 0x5a, 0x34, 0xba, 0x26, 0x47, 0xd7, 0x3a, 0xbb, 0xad, - 0x9a, 0x18, 0x5d, 0xb3, 0x3a, 0x4e, 0xad, 0x77, 0x7e, 0xfe, 0x69, 0x4d, 0x57, 0xcb, 0x6f, 0xf9, - 0x8b, 0x02, 0x64, 0xab, 0xdb, 0x14, 0xbf, 0xc4, 0x0f, 0xf1, 0x97, 0x04, 0x9f, 0xbf, 0xb8, 0x7b, - 0x89, 0xd6, 0x1c, 0x7f, 0x71, 0xb7, 0xbb, 0x45, 0x02, 0x8f, 0x30, 0x42, 0xc5, 0x84, 0xf8, 0x54, - 0xba, 0x5e, 0x8f, 0x04, 0xd4, 0xf1, 0x3d, 0xb2, 0x9d, 0x9e, 0xd3, 0xfc, 0xb9, 0x83, 0x87, 0x0d, - 0xae, 0x60, 0xfe, 0xe9, 0xe1, 0xd2, 0x41, 0xd7, 0x63, 0x4e, 0x9b, 0x0c, 0x88, 0x9f, 0x1f, 0x2e, - 0xde, 0x65, 0x8e, 0xbb, 0xe8, 0x78, 0x8c, 0xb2, 0x20, 0x3d, 0xc4, 0xfc, 0xfd, 0x18, 0x9c, 0xa9, - 0x3b, 0x9e, 0x15, 0xec, 0xd5, 0xb9, 0x31, 0x30, 0x79, 0xbf, 0x4b, 0x28, 0xbb, 0xd1, 0x61, 0x8e, - 0xef, 0x51, 0xf4, 0x0e, 0x94, 0xda, 0x84, 0x59, 0xdb, 0x16, 0xb3, 0x2a, 0xc6, 0x59, 0xe3, 0x89, - 0xf2, 0x85, 0x27, 0x6a, 0x52, 0x47, 0x2d, 0xd6, 0x21, 0x4c, 0x29, 0x8d, 0x58, 0xbb, 0xb1, 0xf5, - 0x1e, 0xb1, 0xd9, 0x35, 0xc2, 0xac, 0x3a, 0xfa, 0xbc, 0x5f, 0x3d, 0xb1, 0xdf, 0xaf, 0x42, 0x4c, - 0xc3, 0x11, 0x1a, 0x7a, 0x1c, 0x0a, 0x16, 0xbd, 0xec, 0xb8, 0xa4, 0x92, 0x3b, 0x6b, 0x3c, 0x31, - 0x51, 0x9f, 0x52, 0xd2, 0x85, 0x25, 0x41, 0xc5, 0x8a, 0x8b, 0x9e, 0x83, 0xa9, 0x80, 0xf4, 0x1c, - 0x6e, 0xcd, 0x86, 0xdf, 0x6e, 0x3b, 0xac, 0x92, 0x4f, 0xca, 0x4b, 0x2a, 0x4e, 0x49, 0xa1, 0xe7, - 0x61, 0x3a, 0xa4, 0x5c, 0x23, 0x94, 0x5a, 0x2d, 0x52, 0x19, 0x13, 0x03, 0xa7, 0xd5, 0xc0, 0xa2, - 0x22, 0xe3, 0xb4, 0x1c, 0xaa, 0x03, 0x0a, 0x49, 0x4b, 0x5d, 0xb6, 0xe3, 0x07, 0xd7, 0xad, 0x36, - 0xa9, 0x8c, 0x8b, 0xd1, 0xd1, 0xa2, 0x62, 0x0e, 0x1e, 0x22, 0x8d, 0x56, 0x60, 0x2e, 0x49, 0x5d, - 0x69, 0x5b, 0x8e, 0x5b, 0x29, 0x08, 0x90, 0x39, 0x05, 0x52, 0xd6, 0x58, 0x78, 0x98, 0x3c, 0x7a, - 0x03, 0xee, 0x4b, 0xae, 0x8b, 0x11, 0x39, 0x9b, 0xa2, 0x00, 0xba, 0x4f, 0x01, 0x9d, 0x4c, 0x30, - 0xf1, 0xf0, 0x31, 0xe8, 0x3a, 0xdc, 0x3f, 0xc0, 0x90, 0xd3, 0x2a, 0x09, 0xb4, 0xfb, 0x15, 0xda, - 0x54, 0x92, 0x8b, 0x0f, 0x18, 0x65, 0xbe, 0x08, 0xb3, 0x9a, 0xe7, 0x6c, 0xf8, 0xdd, 0xc0, 0x26, - 0xda, 0xbe, 0x1a, 0x87, 0xed, 0xab, 0xf9, 0xa3, 0x1c, 0x8c, 0x8b, 0x71, 0xc7, 0xe8, 0x63, 0xef, - 0xc2, 0x18, 0xed, 0x10, 0x5b, 0x78, 0x58, 0xf9, 0xc2, 0x7f, 0xd5, 0x46, 0xb9, 0x0e, 0x6a, 0x72, - 0x51, 0x1d, 0x62, 0xd7, 0x27, 0x95, 0x92, 0x31, 0xfe, 0x0b, 0x0b, 0x48, 0x64, 0x41, 0x81, 0x32, - 0x8b, 0x75, 0xa9, 0x70, 0xc7, 0xf2, 0x85, 0xe7, 0xb3, 0x80, 0x0b, 0x80, 0xd8, 0x42, 0xf2, 0x37, - 0x56, 0xc0, 0xe6, 0xaf, 0x73, 0x50, 0x16, 0x72, 0x0d, 0xdf, 0x6b, 0x3a, 0xad, 0x63, 0xb4, 0xd3, - 0xff, 0x27, 0xec, 0xf4, 0x72, 0x86, 0xa5, 0xc8, 0x29, 0x1e, 0x68, 0xad, 0x56, 0xca, 0x5a, 0xaf, - 0x66, 0x57, 0x71, 0xb8, 0xcd, 0xbe, 0x30, 0x60, 0x5a, 0x93, 0x5e, 0x73, 0x28, 0x43, 0xff, 0x3b, - 0x60, 0xb7, 0xc5, 0x43, 0xec, 0xa6, 0xdd, 0xdd, 0x35, 0x3e, 0x5c, 0x98, 0x6f, 0x46, 0xa9, 0x2b, - 0x85, 0x14, 0xcd, 0x78, 0xff, 0x07, 0xe3, 0x0e, 0x23, 0x6d, 0x5a, 0xc9, 0x9d, 0xcd, 0x67, 0x74, - 0x04, 0x39, 0xd9, 0xfa, 0x49, 0xa5, 0x65, 0x7c, 0x95, 0xe3, 0x61, 0x09, 0x6b, 0xfe, 0x26, 0x97, - 0x58, 0x12, 0xb7, 0x2a, 0xf2, 0xa0, 0xc4, 0x02, 0xa7, 0xd5, 0x22, 0x01, 0xad, 0x18, 0x42, 0xed, - 0x6b, 0x19, 0xd4, 0x6e, 0x4a, 0x88, 0x75, 0xdf, 0x75, 0xec, 0xbd, 0x78, 0x8d, 0x8a, 0x4c, 0x71, - 0xa4, 0x03, 0x2d, 0xc1, 0x44, 0xd0, 0xf5, 0xa4, 0xa0, 0xba, 0xaf, 0x1f, 0x51, 0xe2, 0x13, 0x38, - 0x64, 0xdc, 0xe9, 0x57, 0xa7, 0x64, 0x0c, 0x09, 0x29, 0x38, 0x1e, 0x85, 0x5c, 0x00, 0xdb, 0x6f, - 0xb7, 0x7d, 0x8f, 0x2f, 0x40, 0xb9, 0xc1, 0xa5, 0xd1, 0x26, 0xdd, 0x88, 0xc6, 0xc7, 0xfe, 0x1c, - 0xd3, 0xb0, 0x86, 0x6f, 0x5e, 0x85, 0xd9, 0x01, 0xa7, 0x41, 0x17, 0xa1, 0xec, 0x5a, 0x94, 0xbd, - 0x25, 0xf7, 0x57, 0xf8, 0x42, 0x3e, 0xbe, 0x8b, 0xd7, 0x62, 0x16, 0xd6, 0xe5, 0xcc, 0x3f, 0x1b, - 0x30, 0x21, 0xc0, 0xbe, 0x0e, 0x6f, 0x7a, 0x27, 0xe9, 0x4d, 0xcf, 0x64, 0xd8, 0xd6, 0x03, 0xfc, - 0x08, 0xa0, 0x24, 0x57, 0xe1, 0xb7, 0xcc, 0x8f, 0xc7, 0x94, 0x4f, 0xad, 0xf9, 0xad, 0x30, 0xd4, - 0x2f, 0xc2, 0x84, 0xed, 0x7b, 0xcc, 0x72, 0x3c, 0x12, 0xa8, 0xbb, 0x7b, 0x36, 0xdc, 0xe3, 0x46, - 0xc8, 0xc0, 0xb1, 0x0c, 0xbf, 0xe9, 0x9b, 0xbe, 0xeb, 0xfa, 0x1f, 0x08, 0x8f, 0x28, 0xc5, 0x67, - 0xf2, 0xb2, 0xa0, 0x62, 0xc5, 0x45, 0xe7, 0xa0, 0xd4, 0xe1, 0x11, 0xc4, 0x57, 0xc7, 0xbf, 0x14, - 0x1b, 0x60, 0x5d, 0xd1, 0x71, 0x24, 0x81, 0x9e, 0x85, 0x49, 0xea, 0x78, 0x36, 0xd9, 0x20, 0xb6, - 0xef, 0x6d, 0x53, 0x11, 0xb4, 0xf3, 0xf5, 0x99, 0xfd, 0x7e, 0x75, 0x72, 0x43, 0xa3, 0xe3, 0x84, - 0x14, 0x7a, 0x07, 0x26, 0xc4, 0xef, 0x4d, 0x47, 0x45, 0xea, 0xf2, 0x85, 0xa7, 0xee, 0x72, 0x5b, - 0xf8, 0x90, 0xfa, 0x49, 0xbe, 0xca, 0x8d, 0x10, 0x01, 0xc7, 0x60, 0xe8, 0x02, 0x00, 0x4f, 0xb5, - 0x28, 0xb3, 0xda, 0x1d, 0x2a, 0xe2, 0x77, 0x29, 0xf6, 0xbe, 0xcd, 0x88, 0x83, 0x35, 0x29, 0xf4, - 0x14, 0x4c, 0x30, 0xcb, 0x71, 0xd7, 0x1c, 0x8f, 0x50, 0x11, 0xa9, 0xf3, 0x52, 0xc1, 0x66, 0x48, - 0xc4, 0x31, 0x1f, 0xd5, 0x00, 0x5c, 0xa7, 0xed, 0xb0, 0xfa, 0x1e, 0x23, 0x54, 0x44, 0xe2, 0x7c, - 0x7d, 0x8a, 0x83, 0xaf, 0x45, 0x54, 0xac, 0x49, 0x70, 0xb3, 0x7b, 0xfe, 0x07, 0x96, 0xc3, 0x2a, - 0x13, 0x49, 0xb3, 0x5f, 0xf7, 0xdf, 0xb6, 0x1c, 0x86, 0x15, 0x17, 0x3d, 0x06, 0x45, 0xb5, 0xc8, - 0x0a, 0x08, 0xd0, 0x32, 0x4f, 0x7a, 0x42, 0x0f, 0x0f, 0x79, 0xe6, 0x2f, 0xc2, 0x28, 0x73, 0xa3, - 0xcb, 0x3a, 0x5d, 0x86, 0x56, 0x20, 0xc7, 0x7c, 0xe5, 0xd9, 0x4f, 0xdf, 0x4d, 0x7c, 0xc1, 0xa4, - 0x49, 0x02, 0xe2, 0xd9, 0xa4, 0x5e, 0xd8, 0xef, 0x57, 0x73, 0x9b, 0x3e, 0xce, 0x31, 0x1f, 0x6d, - 0x01, 0x74, 0xba, 0x74, 0x67, 0x83, 0xd8, 0x01, 0x61, 0x2a, 0xb0, 0x5c, 0x38, 0x1c, 0x6e, 0xcd, - 0xb7, 0x2d, 0x37, 0x8d, 0x29, 0x2c, 0xb1, 0x1e, 0x21, 0x61, 0x0d, 0x15, 0xf9, 0x50, 0x76, 0xda, - 0x56, 0x8b, 0xac, 0x59, 0x5b, 0xc4, 0xe5, 0xbe, 0x95, 0x1f, 0xfd, 0x4e, 0x59, 0x8d, 0x00, 0xe2, - 0x9b, 0x20, 0xa6, 0x51, 0xac, 0x6b, 0x30, 0xbf, 0x69, 0xc0, 0x9c, 0xb0, 0xd5, 0xba, 0x4f, 0x99, - 0x4c, 0x86, 0xc4, 0x75, 0xfc, 0x18, 0x14, 0xf9, 0xdd, 0x63, 0x79, 0xdb, 0xe2, 0x36, 0x9e, 0x90, - 0xa6, 0x6e, 0x48, 0x12, 0x0e, 0x79, 0xe8, 0x41, 0x18, 0xb3, 0x82, 0x96, 0x3c, 0xda, 0x13, 0xf5, - 0x12, 0x8f, 0x91, 0x4b, 0x41, 0x8b, 0x62, 0x41, 0xe5, 0xfb, 0x4a, 0xed, 0xc0, 0xe9, 0x0c, 0x24, - 0xb8, 0x1b, 0x82, 0x8a, 0x15, 0xd7, 0xfc, 0x72, 0x1c, 0x26, 0xf5, 0x54, 0xfd, 0x18, 0xf3, 0x82, - 0x26, 0x94, 0xc2, 0xd4, 0x4f, 0x6d, 0xe1, 0x4b, 0xa3, 0x59, 0x57, 0xe6, 0x84, 0x58, 0x61, 0xd4, - 0x27, 0xf9, 0x99, 0x0f, 0x7f, 0xe1, 0x08, 0x1b, 0xf9, 0x30, 0xa3, 0x42, 0x0d, 0xd9, 0xae, 0xef, - 0x09, 0xf3, 0xab, 0x08, 0x31, 0xa2, 0x07, 0x9e, 0xda, 0xef, 0x57, 0x67, 0x36, 0x53, 0x50, 0x78, - 0x00, 0x1c, 0xbd, 0x01, 0x63, 0xcd, 0xc0, 0x6f, 0x8b, 0xcb, 0x65, 0x64, 0x25, 0x62, 0xe3, 0x2e, - 0x07, 0x7e, 0x1b, 0x0b, 0x10, 0x64, 0x43, 0x61, 0x4b, 0xa4, 0xc1, 0xea, 0xe2, 0x19, 0x35, 0xb9, - 0x49, 0xa7, 0xd0, 0x75, 0xe0, 0xbb, 0x2e, 0xc9, 0x58, 0x41, 0xa3, 0xf3, 0xc9, 0xd8, 0x55, 0x10, - 0x27, 0x7a, 0xfa, 0xb0, 0xb8, 0x85, 0x1a, 0x90, 0x27, 0x5e, 0xaf, 0x52, 0x14, 0xc7, 0xe2, 0xd1, - 0xc3, 0xd7, 0xb8, 0xe2, 0xf5, 0xde, 0xb2, 0x82, 0x7a, 0x59, 0xb9, 0x43, 0x7e, 0xc5, 0xeb, 0x61, - 0x3e, 0x1a, 0xf5, 0xa0, 0xac, 0x59, 0xaf, 0x52, 0x12, 0x60, 0xaf, 0x66, 0x4f, 0x36, 0x1a, 0x56, - 0x97, 0x92, 0xf8, 0xa8, 0x69, 0x7b, 0x85, 0x75, 0x45, 0xe6, 0x0f, 0xc7, 0xd5, 0xb5, 0xa4, 0xca, - 0x8a, 0x67, 0x60, 0x8c, 0xed, 0x75, 0xc2, 0xa2, 0xa2, 0x1a, 0xe6, 0x98, 0x9b, 0x7b, 0x1d, 0x72, - 0xa7, 0x5f, 0x9d, 0xd6, 0x44, 0x39, 0x09, 0x0b, 0x61, 0x6d, 0x67, 0x72, 0xc7, 0xb7, 0x33, 0x35, - 0x80, 0x6d, 0xdf, 0xde, 0x25, 0x41, 0x93, 0x17, 0x3d, 0xea, 0xec, 0xf2, 0x23, 0xb5, 0x1c, 0x51, - 0xb1, 0x26, 0x81, 0xde, 0x86, 0x7c, 0xcb, 0x61, 0xca, 0xf5, 0x46, 0x3c, 0x4f, 0x57, 0x1c, 0xa6, - 0x4f, 0xa7, 0xc8, 0xb7, 0xea, 0x8a, 0xc3, 0x30, 0x47, 0xe4, 0x25, 0x89, 0xb8, 0xac, 0x68, 0x65, - 0x3c, 0x4b, 0x26, 0x2a, 0x4e, 0x86, 0x02, 0x8e, 0xee, 0x1e, 0x41, 0xa4, 0x58, 0x01, 0xf3, 0x60, - 0xc8, 0xe3, 0x3f, 0xb9, 0xc5, 0x96, 0x9d, 0x40, 0x15, 0xb3, 0x5a, 0x2a, 0x16, 0x72, 0xb0, 0x26, - 0x85, 0x76, 0x60, 0x92, 0x0a, 0x54, 0x15, 0x0b, 0x8a, 0x99, 0x63, 0x81, 0x4c, 0x02, 0x34, 0x2c, - 0x9c, 0x40, 0x46, 0xef, 0x41, 0x91, 0x8a, 0xbf, 0x68, 0x36, 0x3f, 0x95, 0x30, 0xba, 0x81, 0xa3, - 0x5e, 0x81, 0x64, 0x51, 0x1c, 0x2a, 0x30, 0xff, 0x19, 0x26, 0x85, 0x22, 0x00, 0x24, 0x93, 0x5b, - 0xe3, 0x78, 0x93, 0xdb, 0xf4, 0x99, 0xcc, 0x7d, 0x5d, 0x67, 0xf2, 0x93, 0x42, 0x78, 0x26, 0x65, - 0x3e, 0x7d, 0x1e, 0xc6, 0x3b, 0x3b, 0x16, 0x0d, 0x0f, 0xe5, 0x03, 0x61, 0xda, 0xb9, 0xce, 0x89, - 0x77, 0xfa, 0x55, 0x90, 0xb1, 0x92, 0xff, 0xc2, 0x52, 0x52, 0x24, 0x99, 0x96, 0x67, 0x13, 0xd7, - 0x25, 0xdb, 0x2a, 0x6d, 0x8c, 0x93, 0xcc, 0x90, 0x81, 0x63, 0x19, 0xf4, 0x1c, 0x14, 0x02, 0x62, - 0x51, 0xdf, 0x53, 0x27, 0x6b, 0x21, 0xf4, 0x4c, 0x2c, 0xa8, 0x77, 0xb8, 0x47, 0xc8, 0x12, 0x50, - 0xfc, 0xc6, 0x4a, 0x1a, 0x3d, 0x09, 0xc5, 0xf6, 0xe1, 0x6d, 0x9f, 0x90, 0x8f, 0x5a, 0x30, 0x45, - 0x99, 0x15, 0xb0, 0x28, 0x99, 0xcb, 0x92, 0x40, 0xa2, 0xfd, 0x7e, 0x75, 0x6a, 0x23, 0x01, 0x83, - 0x53, 0xb0, 0xa8, 0x07, 0x73, 0xb6, 0xdf, 0xee, 0xb8, 0x84, 0x27, 0xdc, 0xb1, 0xb6, 0xc2, 0xe8, - 0xda, 0x4e, 0xef, 0xf7, 0xab, 0x73, 0x8d, 0x41, 0x2c, 0x3c, 0x4c, 0x01, 0x7a, 0x19, 0x4a, 0xdb, - 0xdd, 0xc0, 0xe2, 0x44, 0x95, 0x8d, 0x3e, 0x1c, 0x26, 0xe0, 0xcb, 0x8a, 0x7e, 0xa7, 0x5f, 0x3d, - 0xc9, 0x13, 0xd8, 0x5a, 0x48, 0xc0, 0xd1, 0x10, 0xb4, 0x05, 0xf3, 0xbe, 0xc8, 0x0d, 0xe5, 0x85, - 0x26, 0x63, 0x6a, 0x78, 0x28, 0x55, 0xeb, 0xc8, 0x54, 0x80, 0xf3, 0x37, 0x0e, 0x94, 0xc4, 0x87, - 0xa0, 0xa0, 0xff, 0x86, 0x82, 0x2d, 0x4a, 0x35, 0x91, 0xd4, 0x8e, 0x1c, 0x92, 0x41, 0x36, 0x02, - 0x39, 0x00, 0x56, 0x40, 0xa8, 0x05, 0x05, 0xa9, 0x50, 0xa4, 0xbf, 0xd9, 0x0e, 0x88, 0x74, 0x2d, - 0xb9, 0xa6, 0xf8, 0x52, 0x94, 0xbf, 0xb1, 0x82, 0x37, 0x3d, 0x55, 0x6b, 0xea, 0xc2, 0xe8, 0x5d, - 0x2d, 0x8d, 0x5e, 0x3a, 0xa2, 0xe6, 0x4d, 0x5f, 0x4f, 0xad, 0xcd, 0x35, 0x95, 0x84, 0x26, 0x45, - 0x78, 0x75, 0x2b, 0x6e, 0xe9, 0x65, 0xa7, 0x45, 0x28, 0x53, 0x67, 0x32, 0x99, 0xd3, 0x4a, 0x16, - 0xd6, 0xe5, 0xcc, 0x7f, 0x8c, 0xc1, 0x49, 0x05, 0x17, 0x58, 0x8c, 0xb4, 0xf6, 0xd0, 0xc5, 0x44, - 0xa8, 0x7d, 0x38, 0x15, 0x6a, 0x67, 0x13, 0xc2, 0x5a, 0xb0, 0xfd, 0x10, 0xa6, 0x64, 0x94, 0x0b, - 0x79, 0x2a, 0xe8, 0x8e, 0xb8, 0x7a, 0xe9, 0x1e, 0x09, 0x25, 0xf2, 0x70, 0x2d, 0x27, 0xc0, 0x71, - 0x4a, 0x19, 0x57, 0xaf, 0x82, 0x41, 0xa8, 0x3e, 0x9f, 0x45, 0xbd, 0xba, 0xf8, 0x07, 0xd5, 0x6f, - 0x24, 0xc0, 0x71, 0x4a, 0x19, 0x57, 0x6f, 0x77, 0x29, 0xf3, 0xdb, 0x91, 0xfa, 0xb1, 0x2c, 0xea, - 0x1b, 0x02, 0x63, 0x88, 0xfa, 0x46, 0x02, 0x1c, 0xa7, 0x94, 0xa1, 0xcf, 0x0c, 0x38, 0xfd, 0x1e, - 0xf1, 0x76, 0x1d, 0x8f, 0xae, 0x3b, 0x1d, 0xe2, 0x3a, 0x5e, 0x6c, 0x07, 0x79, 0x9b, 0x5d, 0x1d, - 0x6d, 0x22, 0x57, 0x93, 0x60, 0xc9, 0x19, 0x3d, 0xb0, 0xdf, 0xaf, 0x9e, 0xbe, 0x3a, 0x5c, 0x1d, - 0x3e, 0x68, 0x1e, 0xe6, 0x1f, 0xf2, 0xea, 0xa0, 0xe8, 0x61, 0x47, 0xbf, 0xa8, 0x8d, 0xaf, 0xb8, - 0xa8, 0x3f, 0x84, 0x29, 0xf1, 0xf5, 0xc2, 0xb1, 0xdf, 0x26, 0x5b, 0xaf, 0xfb, 0xfe, 0x6e, 0x36, - 0x0f, 0xbb, 0x92, 0xc0, 0x90, 0xc1, 0x4f, 0xd8, 0x38, 0xc9, 0xc0, 0x29, 0x65, 0x68, 0x0f, 0x4e, - 0x4a, 0x3d, 0xa1, 0x76, 0xe9, 0x60, 0xaf, 0x8d, 0x9c, 0xc2, 0xbd, 0x1e, 0x41, 0x48, 0xe5, 0xb3, - 0xfb, 0xfd, 0xea, 0xc9, 0x04, 0x1d, 0x27, 0x35, 0xa1, 0x8f, 0x0c, 0x98, 0x11, 0x87, 0xb6, 0xb1, - 0x63, 0x79, 0x2d, 0xb9, 0x1b, 0xca, 0xc1, 0x5e, 0xc9, 0x90, 0xe5, 0x49, 0x14, 0xa9, 0x5c, 0x94, - 0x4c, 0xab, 0x29, 0x6c, 0x3c, 0xa0, 0xcd, 0xfc, 0x24, 0x0f, 0x68, 0xb0, 0x6b, 0x88, 0x9e, 0x4d, - 0x5c, 0x16, 0x67, 0x53, 0x97, 0xc5, 0x8c, 0x3e, 0x42, 0xbb, 0x2b, 0x5a, 0x50, 0x90, 0xb3, 0xce, - 0x56, 0x56, 0x2a, 0xb3, 0x28, 0xdc, 0x61, 0xf6, 0x53, 0xf0, 0x3c, 0x25, 0x54, 0xbb, 0xa8, 0x76, - 0xeb, 0x68, 0x9a, 0x86, 0xb9, 0x49, 0xa8, 0x00, 0x51, 0x75, 0x01, 0x4b, 0xab, 0xa9, 0xed, 0x79, - 0x2d, 0xf3, 0xf6, 0x84, 0x3a, 0xa7, 0xa3, 0xeb, 0x5b, 0xd2, 0xb1, 0xae, 0xc5, 0xfc, 0xb4, 0x08, - 0x5a, 0x9a, 0x88, 0x5e, 0x81, 0x29, 0x4a, 0x82, 0x9e, 0x63, 0x93, 0x25, 0xdb, 0xf6, 0xbb, 0x5e, - 0x18, 0x07, 0xa2, 0x4f, 0x3b, 0x1b, 0x09, 0x2e, 0x4e, 0x49, 0x8b, 0xcf, 0x1a, 0xe2, 0x62, 0x53, - 0x1b, 0x93, 0xe9, 0xb3, 0x46, 0xaa, 0x86, 0x50, 0x4d, 0x00, 0x05, 0x9c, 0x68, 0x2a, 0xe4, 0x8f, - 0xb1, 0xa9, 0xe0, 0x40, 0x89, 0x26, 0xef, 0xe2, 0x17, 0x33, 0xc5, 0x61, 0x75, 0xe7, 0x45, 0x3d, - 0xcb, 0xe8, 0xa2, 0x8b, 0xe0, 0xb9, 0xd5, 0x54, 0xaa, 0x31, 0x9e, 0xd9, 0x6a, 0x87, 0x27, 0x19, - 0xc8, 0x86, 0x89, 0x80, 0x48, 0x0b, 0x52, 0x95, 0x31, 0x7e, 0x45, 0x09, 0x85, 0x95, 0x38, 0x26, - 0xef, 0x77, 0x9d, 0x80, 0xb4, 0x89, 0xc7, 0x68, 0x9c, 0x6c, 0x87, 0x5c, 0x8a, 0x63, 0x5c, 0xd4, - 0x05, 0xe8, 0x44, 0x9d, 0x2d, 0x55, 0xa8, 0x65, 0x49, 0x5e, 0x92, 0xed, 0xb1, 0xb8, 0x9e, 0x89, - 0xe9, 0x58, 0x53, 0x84, 0xfe, 0x07, 0xce, 0xc4, 0x69, 0xeb, 0x32, 0xb1, 0xb6, 0x45, 0xd8, 0x50, - 0xfd, 0x5f, 0xd9, 0x10, 0x7d, 0x68, 0xbf, 0x5f, 0x3d, 0xd3, 0x38, 0x48, 0x08, 0x1f, 0x3c, 0x1e, - 0xdd, 0x82, 0x49, 0xcf, 0xdf, 0x26, 0x1b, 0xc4, 0x25, 0x36, 0xf3, 0x03, 0x95, 0x5f, 0xd6, 0x47, - 0x5b, 0x95, 0xec, 0x91, 0x5b, 0xee, 0x75, 0x0d, 0x49, 0x96, 0xa3, 0x3a, 0x05, 0x27, 0x34, 0x99, - 0xbf, 0x1b, 0x83, 0xb9, 0x21, 0xf1, 0x1c, 0xdd, 0x50, 0xcd, 0xa7, 0x4c, 0x3d, 0xd6, 0xe8, 0xeb, - 0x9a, 0xd6, 0x80, 0x12, 0xbd, 0x56, 0xd7, 0xbd, 0x57, 0xbd, 0xd6, 0x10, 0x09, 0x6b, 0xa8, 0x61, - 0x33, 0x29, 0x7f, 0xa4, 0x66, 0xd2, 0x55, 0x40, 0xe4, 0x56, 0xc7, 0xa7, 0x44, 0xe5, 0x72, 0xfc, - 0x5f, 0xd9, 0x09, 0x29, 0xd5, 0xe7, 0x95, 0x34, 0x5a, 0x19, 0x90, 0xc0, 0x43, 0x46, 0xf1, 0x4a, - 0xb2, 0xe9, 0x07, 0x36, 0xe1, 0xf3, 0x15, 0xc7, 0x4e, 0xab, 0x24, 0x2f, 0x87, 0x0c, 0x1c, 0xcb, - 0x20, 0x3b, 0xee, 0x0e, 0x14, 0xb2, 0x74, 0x8a, 0xa5, 0x21, 0x84, 0x43, 0x1f, 0xd8, 0x16, 0x40, - 0x4b, 0x30, 0x2d, 0x06, 0x2d, 0xad, 0xaf, 0x86, 0xad, 0x3a, 0xf9, 0xa5, 0xfe, 0xb4, 0x1a, 0x22, - 0x3b, 0x55, 0x31, 0x1b, 0xa7, 0xe5, 0xcd, 0x9f, 0xe7, 0x61, 0x6e, 0x48, 0x12, 0x1c, 0xf5, 0x2c, - 0x8d, 0x7b, 0xd1, 0xb3, 0xfc, 0x3a, 0x5c, 0xe6, 0x49, 0x28, 0x7a, 0x7e, 0xc3, 0xb2, 0x77, 0x88, - 0xfa, 0xec, 0x13, 0x99, 0xed, 0xba, 0x24, 0xe3, 0x90, 0x1f, 0x7a, 0xd7, 0xd8, 0x91, 0xbc, 0x6b, - 0x64, 0x8f, 0x78, 0x25, 0xac, 0x58, 0x9a, 0x8e, 0x4b, 0xd6, 0x2d, 0xb6, 0xa3, 0x3a, 0x5a, 0x51, - 0xb0, 0x5c, 0x4e, 0x70, 0x71, 0x4a, 0xda, 0xfc, 0xa9, 0x01, 0x73, 0x43, 0x92, 0xc9, 0x44, 0x84, - 0x33, 0x8e, 0x31, 0xc2, 0x3d, 0x0e, 0x05, 0x1a, 0x6f, 0xa0, 0xfe, 0xc5, 0x40, 0x6e, 0x86, 0xe2, - 0x9a, 0xb7, 0x07, 0xe6, 0xb9, 0xd2, 0x23, 0x1e, 0xcb, 0xd6, 0x53, 0x5d, 0x97, 0xed, 0x4b, 0xe9, - 0x32, 0x17, 0x47, 0xce, 0x7d, 0x57, 0xbd, 0xa6, 0x9f, 0xea, 0x5b, 0xde, 0x8b, 0xab, 0xc5, 0xfc, - 0xa3, 0x01, 0x53, 0xc9, 0xee, 0x28, 0x7a, 0x08, 0xf2, 0xdd, 0xc0, 0x51, 0xab, 0x8b, 0x46, 0xbc, - 0x89, 0x57, 0x31, 0xa7, 0x73, 0x76, 0x40, 0x9a, 0xca, 0x74, 0x11, 0x1b, 0x93, 0x26, 0xe6, 0x74, - 0xd4, 0x81, 0x72, 0x27, 0xf0, 0x6f, 0xed, 0xc9, 0xae, 0x42, 0xb6, 0x57, 0x1e, 0xeb, 0x31, 0x40, - 0x5c, 0x89, 0x6b, 0x44, 0xac, 0xab, 0x30, 0x7f, 0x62, 0x00, 0x1a, 0xac, 0x0e, 0xfe, 0xed, 0xbc, - 0xe9, 0xfb, 0x39, 0x28, 0xaa, 0x8d, 0x44, 0xdf, 0x80, 0xa9, 0x56, 0xc2, 0xe8, 0xd9, 0x66, 0x98, - 0x6a, 0x6b, 0x47, 0xe7, 0x2f, 0x49, 0xc7, 0x29, 0x5d, 0xe8, 0x63, 0x03, 0x66, 0x5b, 0x0e, 0x4b, - 0xae, 0x2f, 0x5b, 0xab, 0xff, 0x4a, 0x1a, 0xa6, 0x7e, 0x46, 0x4d, 0x62, 0x76, 0x80, 0x85, 0x07, - 0x95, 0x9a, 0x7f, 0xca, 0xc1, 0xa0, 0x20, 0x37, 0xa9, 0x2d, 0x73, 0x29, 0x63, 0xe8, 0x9b, 0x35, - 0xc5, 0xe5, 0xe5, 0x90, 0x25, 0x1e, 0x7d, 0x65, 0x9b, 0xbc, 0xd4, 0xda, 0xf0, 0x3d, 0x16, 0xf8, - 0xee, 0x9b, 0x94, 0x04, 0xda, 0xa3, 0x2b, 0x01, 0x8b, 0x15, 0x3c, 0xea, 0xc0, 0x84, 0x1d, 0xbe, - 0xe1, 0xca, 0xf6, 0x14, 0x67, 0x50, 0x97, 0xf6, 0x48, 0x40, 0x21, 0xe3, 0x58, 0xc9, 0x08, 0x7d, - 0x58, 0xf3, 0x07, 0x06, 0xcc, 0xa4, 0xcb, 0x53, 0x3e, 0x5e, 0x94, 0x3b, 0xab, 0xcb, 0xe9, 0xf6, - 0xc0, 0xaa, 0x24, 0xe3, 0x90, 0x8f, 0x36, 0xa1, 0xc8, 0x63, 0x1b, 0x56, 0x87, 0x7a, 0xe4, 0x18, - 0x29, 0x3e, 0xda, 0x5e, 0x96, 0x08, 0x38, 0x84, 0x32, 0x7f, 0x6b, 0x00, 0x1a, 0xac, 0xca, 0xd0, - 0x3a, 0x9c, 0x72, 0x2d, 0xca, 0xa2, 0x5e, 0xf9, 0x6a, 0x62, 0x92, 0x0f, 0xaa, 0x49, 0x9e, 0x5a, - 0x1b, 0x22, 0x83, 0x87, 0x8e, 0x8c, 0xe2, 0x7b, 0xee, 0x1e, 0xc4, 0x77, 0x73, 0x03, 0x20, 0xfe, - 0x8a, 0x8d, 0xce, 0xc2, 0x98, 0x67, 0xb5, 0xc3, 0x8b, 0x3e, 0x4a, 0x21, 0xc5, 0x5b, 0x41, 0xc1, - 0x41, 0x8f, 0xc0, 0x78, 0xcf, 0x72, 0xbb, 0xe1, 0x63, 0xcc, 0xe8, 0x05, 0xc9, 0x5b, 0x9c, 0x88, - 0x25, 0xcf, 0xfc, 0x59, 0x0e, 0xca, 0xda, 0x57, 0xa2, 0xe3, 0x48, 0x64, 0xc7, 0x3b, 0x16, 0xdb, - 0x09, 0x1f, 0xbf, 0xbc, 0x9c, 0xf9, 0x03, 0x16, 0x0f, 0xcf, 0xf1, 0x22, 0xf8, 0x2f, 0x8a, 0x25, - 0x74, 0x2a, 0xf3, 0xc9, 0x1f, 0x47, 0xe6, 0x63, 0x7e, 0xdb, 0x80, 0xe9, 0xd4, 0x6c, 0xd0, 0x05, - 0x00, 0x1a, 0xfd, 0x52, 0x3b, 0x11, 0x15, 0x46, 0xb1, 0x1c, 0xd6, 0xa4, 0x44, 0x82, 0x42, 0x28, - 0x73, 0x3c, 0xd1, 0x88, 0x5f, 0x76, 0x02, 0xb5, 0x3d, 0x71, 0x82, 0x92, 0xe0, 0xe2, 0x94, 0xb4, - 0xf9, 0xa9, 0x01, 0x0f, 0x1e, 0xd6, 0xc8, 0xe3, 0xe9, 0xaa, 0xea, 0xd6, 0x45, 0x29, 0x90, 0x91, - 0x4c, 0x57, 0xaf, 0x26, 0xd9, 0x38, 0x2d, 0x8f, 0x2e, 0x42, 0x59, 0x23, 0xa9, 0x09, 0x46, 0xc1, - 0x4e, 0x1b, 0x8e, 0x75, 0x39, 0xf3, 0x2f, 0x06, 0x9c, 0x1a, 0x56, 0x55, 0xa1, 0x20, 0x7c, 0x00, - 0x25, 0xdf, 0xb5, 0x5d, 0x3b, 0x7a, 0xa1, 0x56, 0x13, 0xcf, 0xa0, 0x56, 0x3c, 0x16, 0xec, 0x0d, - 0x7f, 0x1a, 0x35, 0x7f, 0x09, 0x20, 0x96, 0x41, 0x33, 0x90, 0xdf, 0x25, 0x7b, 0xd2, 0x10, 0x98, - 0xff, 0x89, 0x4e, 0x25, 0x4e, 0x87, 0x3a, 0x0e, 0x2f, 0xe4, 0x2e, 0x19, 0x2f, 0x94, 0x3e, 0xfd, - 0x71, 0xf5, 0xc4, 0x47, 0x7f, 0x3b, 0x7b, 0xc2, 0xfc, 0x9e, 0x01, 0x7a, 0x68, 0x47, 0x4f, 0xc1, - 0xc4, 0x0e, 0x63, 0x1d, 0x41, 0x52, 0xdf, 0xae, 0xc4, 0x1b, 0xa0, 0xd7, 0x37, 0x37, 0xd7, 0x05, - 0x11, 0xc7, 0x7c, 0x54, 0x03, 0xe0, 0x3f, 0xa8, 0x94, 0x1e, 0x8b, 0xbf, 0x21, 0x73, 0xe9, 0x0d, - 0x29, 0xae, 0x49, 0xa0, 0xc7, 0x78, 0x6a, 0x2d, 0x85, 0xe5, 0xb3, 0xe4, 0xb2, 0x4c, 0xab, 0xa5, - 0x64, 0xc8, 0x33, 0x7f, 0x65, 0xc0, 0xec, 0xc0, 0x47, 0x4d, 0x74, 0x33, 0x0a, 0xf4, 0x46, 0x76, - 0xef, 0x1f, 0x9e, 0x1c, 0x1c, 0xd9, 0x63, 0x7f, 0x69, 0x00, 0xc4, 0x85, 0x16, 0x72, 0x61, 0x52, - 0x02, 0x27, 0xb2, 0x8b, 0x2c, 0x13, 0x3e, 0xa5, 0x26, 0x30, 0xb9, 0xa1, 0xe1, 0xe1, 0x04, 0x3a, - 0x2f, 0x20, 0xda, 0x7e, 0xd7, 0x63, 0xe2, 0x1c, 0xe4, 0x92, 0x2f, 0xe0, 0xae, 0x85, 0x0c, 0x1c, - 0xcb, 0x98, 0xdf, 0x19, 0x87, 0xb9, 0x21, 0x1f, 0x0c, 0xfe, 0x83, 0x2b, 0xfc, 0x27, 0xa1, 0x28, - 0x9f, 0x29, 0xd1, 0x74, 0xb8, 0x97, 0xaf, 0x98, 0x78, 0xa9, 0x2c, 0xff, 0x40, 0xe7, 0xa1, 0xec, - 0x78, 0xb6, 0x6c, 0x4c, 0x59, 0x61, 0xc1, 0x26, 0x9b, 0x9d, 0x31, 0x19, 0xeb, 0x32, 0xc9, 0x0a, - 0xaf, 0x70, 0x57, 0x35, 0xff, 0xa4, 0xfa, 0xaf, 0x12, 0xf2, 0x51, 0x51, 0x31, 0xcb, 0x86, 0x88, - 0x3e, 0x0f, 0xd6, 0x60, 0x70, 0x02, 0x14, 0x7d, 0xcb, 0x80, 0x19, 0x45, 0x58, 0x0a, 0x98, 0xd3, - 0xb4, 0xec, 0xe8, 0x01, 0xc2, 0x11, 0x23, 0x58, 0x45, 0x2d, 0x6e, 0x06, 0xa7, 0xe0, 0xf1, 0x80, - 0x42, 0xf3, 0x26, 0xcc, 0x0e, 0xe4, 0x66, 0x77, 0x17, 0xf8, 0x89, 0xf8, 0x2f, 0x00, 0xa9, 0xc0, - 0x2f, 0x5f, 0xfe, 0x4b, 0x9e, 0xf9, 0x99, 0x01, 0x53, 0xa9, 0xd4, 0x36, 0x53, 0xed, 0x78, 0x53, - 0xaf, 0x1d, 0x8f, 0x9c, 0xa1, 0x27, 0xaa, 0x48, 0xb3, 0x09, 0x53, 0xc9, 0x66, 0xbd, 0x56, 0xd0, - 0x18, 0x87, 0x15, 0x34, 0xe8, 0x1c, 0x94, 0x2c, 0xd7, 0xf5, 0x3f, 0x58, 0xf1, 0x7a, 0xea, 0x49, - 0x42, 0xd4, 0xeb, 0x5d, 0x52, 0x74, 0x1c, 0x49, 0xd4, 0x1f, 0xfd, 0xfc, 0xf6, 0xc2, 0x89, 0x2f, - 0x6e, 0x2f, 0x9c, 0xf8, 0xeb, 0xed, 0x85, 0x13, 0x1f, 0xed, 0x2f, 0x18, 0x9f, 0xef, 0x2f, 0x18, - 0x5f, 0xec, 0x2f, 0x18, 0x7f, 0xdf, 0x5f, 0x30, 0xbe, 0xfb, 0xe5, 0xc2, 0x89, 0x9b, 0xb9, 0xde, - 0xf9, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x09, 0x07, 0xcc, 0x40, 0xb8, 0x34, 0x00, 0x00, + // 3328 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe4, 0x5b, 0x4b, 0x6c, 0x1b, 0xc7, + 0x19, 0xf6, 0x92, 0x12, 0x49, 0xfd, 0x94, 0xf5, 0x18, 0x39, 0xb1, 0xac, 0x24, 0xa2, 0xb3, 0x79, + 0x20, 0x41, 0x1c, 0x0a, 0x56, 0xe2, 0xd4, 0x79, 0x47, 0xa4, 0x64, 0x47, 0x8e, 0x6c, 0xab, 0x23, + 0xe5, 0xe5, 0xa2, 0x2d, 0x56, 0xab, 0x21, 0xb5, 0xd1, 0x72, 0x97, 0xd9, 0x19, 0x32, 0x16, 0xd0, + 0x00, 0x41, 0x8b, 0x02, 0xe9, 0xad, 0x8f, 0x1c, 0x72, 0x29, 0xda, 0x00, 0x7d, 0xa0, 0xe8, 0xa1, + 0xe8, 0xe3, 0x50, 0xa0, 0x97, 0x16, 0xe8, 0x21, 0xa7, 0x22, 0xc7, 0x1e, 0x5a, 0xa2, 0x56, 0x0e, + 0x3d, 0xf7, 0xea, 0x53, 0x31, 0x8f, 0xdd, 0x9d, 0x5d, 0x52, 0x8a, 0xb9, 0xb2, 0x82, 0x02, 0xbd, + 0x08, 0xdc, 0xff, 0xff, 0xe7, 0xfb, 0x67, 0xff, 0xf9, 0x67, 0xfe, 0xc7, 0x8e, 0xe0, 0x85, 0xa6, + 0xc3, 0x76, 0x3a, 0x5b, 0x55, 0xdb, 0x6f, 0x2d, 0xf8, 0x6d, 0xe2, 0xd1, 0x1d, 0xa7, 0xc1, 0x16, + 0xfc, 0xc0, 0x69, 0x3a, 0xde, 0x42, 0x7b, 0xb7, 0xb9, 0xb0, 0xd5, 0x71, 0xdc, 0xed, 0x05, 0xab, + 0xed, 0x2c, 0x74, 0xcf, 0x2f, 0x34, 0x89, 0x47, 0x02, 0x8b, 0x91, 0xed, 0x6a, 0x3b, 0xf0, 0x99, + 0x8f, 0xce, 0xc5, 0xa3, 0xab, 0xd1, 0xe8, 0xaa, 0x1c, 0x5d, 0x6d, 0xef, 0x36, 0xab, 0x62, 0x74, + 0xd5, 0x6a, 0x3b, 0xd5, 0xee, 0xf9, 0xb9, 0x27, 0x35, 0x5d, 0x4d, 0xbf, 0xe9, 0x2f, 0x08, 0x90, + 0xad, 0x4e, 0x43, 0x3c, 0x89, 0x07, 0xf1, 0x4b, 0x82, 0xcf, 0x5d, 0xd8, 0xbd, 0x48, 0xab, 0x8e, + 0xbf, 0xb0, 0xdb, 0xd9, 0x22, 0x81, 0x47, 0x18, 0xa1, 0x62, 0x42, 0x7c, 0x2a, 0x1d, 0xaf, 0x4b, + 0x02, 0xea, 0xf8, 0x1e, 0xd9, 0x4e, 0xcf, 0x69, 0xee, 0xdc, 0xc1, 0xc3, 0xfa, 0xdf, 0x60, 0xee, + 0xc9, 0xc1, 0xd2, 0x41, 0xc7, 0x63, 0x4e, 0x8b, 0xf4, 0x89, 0x9f, 0x1f, 0x2c, 0xde, 0x61, 0x8e, + 0xbb, 0xe0, 0x78, 0x8c, 0xb2, 0x20, 0x3d, 0xc4, 0xfc, 0xe3, 0x08, 0x9c, 0xa9, 0x39, 0x9e, 0x15, + 0xec, 0xd5, 0xb8, 0x31, 0x30, 0x79, 0xb7, 0x43, 0x28, 0xbb, 0xde, 0x66, 0x8e, 0xef, 0x51, 0xf4, + 0x16, 0x94, 0x5a, 0x84, 0x59, 0xdb, 0x16, 0xb3, 0x66, 0x8d, 0xb3, 0xc6, 0x63, 0xe5, 0xc5, 0xc7, + 0xaa, 0x52, 0x47, 0x35, 0xd6, 0x21, 0x4c, 0x29, 0x8d, 0x58, 0xbd, 0xbe, 0xf5, 0x0e, 0xb1, 0xd9, + 0x55, 0xc2, 0xac, 0x1a, 0xfa, 0xb4, 0x57, 0x39, 0xb1, 0xdf, 0xab, 0x40, 0x4c, 0xc3, 0x11, 0x1a, + 0x7a, 0x14, 0x0a, 0x16, 0xbd, 0xe4, 0xb8, 0x64, 0x36, 0x77, 0xd6, 0x78, 0x6c, 0xac, 0x36, 0xa1, + 0xa4, 0x0b, 0x4b, 0x82, 0x8a, 0x15, 0x17, 0x3d, 0x03, 0x13, 0x01, 0xe9, 0x3a, 0xdc, 0x9a, 0x75, + 0xbf, 0xd5, 0x72, 0xd8, 0x6c, 0x3e, 0x29, 0x2f, 0xa9, 0x38, 0x25, 0x85, 0x9e, 0x85, 0xc9, 0x90, + 0x72, 0x95, 0x50, 0x6a, 0x35, 0xc9, 0xec, 0x88, 0x18, 0x38, 0xa9, 0x06, 0x16, 0x15, 0x19, 0xa7, + 0xe5, 0x50, 0x0d, 0x50, 0x48, 0x5a, 0xea, 0xb0, 0x1d, 0x3f, 0xb8, 0x66, 0xb5, 0xc8, 0xec, 0xa8, + 0x18, 0x1d, 0xbd, 0x54, 0xcc, 0xc1, 0x03, 0xa4, 0xd1, 0x0a, 0xcc, 0x24, 0xa9, 0x2b, 0x2d, 0xcb, + 0x71, 0x67, 0x0b, 0x02, 0x64, 0x46, 0x81, 0x94, 0x35, 0x16, 0x1e, 0x24, 0x8f, 0x5e, 0x83, 0x7b, + 0x92, 0xef, 0xc5, 0x88, 0x9c, 0x4d, 0x51, 0x00, 0xdd, 0xa3, 0x80, 0x4e, 0x26, 0x98, 0x78, 0xf0, + 0x18, 0x74, 0x0d, 0xee, 0xed, 0x63, 0xc8, 0x69, 0x95, 0x04, 0xda, 0xbd, 0x0a, 0x6d, 0x22, 0xc9, + 0xc5, 0x07, 0x8c, 0x32, 0x9f, 0x87, 0x69, 0xcd, 0x73, 0x36, 0xfc, 0x4e, 0x60, 0x13, 0x6d, 0x5d, + 0x8d, 0xc3, 0xd6, 0xd5, 0xfc, 0x49, 0x0e, 0x46, 0xc5, 0xb8, 0x63, 0xf4, 0xb1, 0xb7, 0x61, 0x84, + 0xb6, 0x89, 0x2d, 0x3c, 0xac, 0xbc, 0xf8, 0x95, 0xea, 0x30, 0xc7, 0x41, 0x55, 0xbe, 0x54, 0x9b, + 0xd8, 0xb5, 0x71, 0xa5, 0x64, 0x84, 0x3f, 0x61, 0x01, 0x89, 0x2c, 0x28, 0x50, 0x66, 0xb1, 0x0e, + 0x15, 0xee, 0x58, 0x5e, 0x7c, 0x36, 0x0b, 0xb8, 0x00, 0x88, 0x2d, 0x24, 0x9f, 0xb1, 0x02, 0x36, + 0x7f, 0x9b, 0x83, 0xb2, 0x90, 0xab, 0xfb, 0x5e, 0xc3, 0x69, 0x1e, 0xa3, 0x9d, 0xbe, 0x99, 0xb0, + 0xd3, 0x8b, 0x19, 0x5e, 0x45, 0x4e, 0xf1, 0x40, 0x6b, 0x35, 0x53, 0xd6, 0x7a, 0x39, 0xbb, 0x8a, + 0xc3, 0x6d, 0xf6, 0x99, 0x01, 0x93, 0x9a, 0xf4, 0x9a, 0x43, 0x19, 0xfa, 0x7a, 0x9f, 0xdd, 0x16, + 0x0e, 0xb1, 0x9b, 0x76, 0x76, 0x57, 0xf9, 0x70, 0x61, 0xbe, 0x29, 0xa5, 0xae, 0x14, 0x52, 0x34, + 0xe3, 0x7d, 0x03, 0x46, 0x1d, 0x46, 0x5a, 0x74, 0x36, 0x77, 0x36, 0x9f, 0xd1, 0x11, 0xe4, 0x64, + 0x6b, 0x27, 0x95, 0x96, 0xd1, 0x55, 0x8e, 0x87, 0x25, 0xac, 0xf9, 0xbb, 0x5c, 0xe2, 0x95, 0xb8, + 0x55, 0x91, 0x07, 0x25, 0x16, 0x38, 0xcd, 0x26, 0x09, 0xe8, 0xac, 0x21, 0xd4, 0xbe, 0x92, 0x41, + 0xed, 0xa6, 0x84, 0x58, 0xf7, 0x5d, 0xc7, 0xde, 0x8b, 0xdf, 0x51, 0x91, 0x29, 0x8e, 0x74, 0xa0, + 0x25, 0x18, 0x0b, 0x3a, 0x9e, 0x14, 0x54, 0xe7, 0xf5, 0x43, 0x4a, 0x7c, 0x0c, 0x87, 0x8c, 0xdb, + 0xbd, 0xca, 0x84, 0x8c, 0x21, 0x21, 0x05, 0xc7, 0xa3, 0x90, 0x0b, 0x60, 0xfb, 0xad, 0x96, 0xef, + 0xf1, 0x17, 0x50, 0x6e, 0x70, 0x71, 0xb8, 0x49, 0xd7, 0xa3, 0xf1, 0xb1, 0x3f, 0xc7, 0x34, 0xac, + 0xe1, 0x9b, 0x57, 0x60, 0xba, 0xcf, 0x69, 0xd0, 0x05, 0x28, 0xbb, 0x16, 0x65, 0x6f, 0xc8, 0xf5, + 0x15, 0xbe, 0x90, 0x8f, 0xcf, 0xe2, 0xb5, 0x98, 0x85, 0x75, 0x39, 0xf3, 0xaf, 0x06, 0x8c, 0x09, + 0xb0, 0x2f, 0xc3, 0x9b, 0xde, 0x4a, 0x7a, 0xd3, 0x53, 0x19, 0x96, 0xf5, 0x00, 0x3f, 0x02, 0x28, + 0xc9, 0xb7, 0xf0, 0x9b, 0xe6, 0x87, 0x23, 0xca, 0xa7, 0xd6, 0xfc, 0x66, 0x18, 0xea, 0x17, 0x60, + 0xcc, 0xf6, 0x3d, 0x66, 0x39, 0x1e, 0x09, 0xd4, 0xd9, 0x3d, 0x1d, 0xae, 0x71, 0x3d, 0x64, 0xe0, + 0x58, 0x86, 0x9f, 0xf4, 0x0d, 0xdf, 0x75, 0xfd, 0xf7, 0x84, 0x47, 0x94, 0xe2, 0x3d, 0x79, 0x49, + 0x50, 0xb1, 0xe2, 0xa2, 0x73, 0x50, 0x6a, 0xf3, 0x08, 0xe2, 0xab, 0xed, 0x5f, 0x8a, 0x0d, 0xb0, + 0xae, 0xe8, 0x38, 0x92, 0x40, 0x4f, 0xc3, 0x38, 0x75, 0x3c, 0x9b, 0x6c, 0x10, 0xdb, 0xf7, 0xb6, + 0xa9, 0x08, 0xda, 0xf9, 0xda, 0xd4, 0x7e, 0xaf, 0x32, 0xbe, 0xa1, 0xd1, 0x71, 0x42, 0x0a, 0xbd, + 0x05, 0x63, 0xe2, 0x79, 0xd3, 0x51, 0x91, 0xba, 0xbc, 0xf8, 0xc4, 0x1d, 0x2e, 0x0b, 0x1f, 0x52, + 0x3b, 0xc9, 0xdf, 0x72, 0x23, 0x44, 0xc0, 0x31, 0x18, 0x5a, 0x04, 0xe0, 0xa9, 0x16, 0x65, 0x56, + 0xab, 0x4d, 0x45, 0xfc, 0x2e, 0xc5, 0xde, 0xb7, 0x19, 0x71, 0xb0, 0x26, 0x85, 0x9e, 0x80, 0x31, + 0x66, 0x39, 0xee, 0x9a, 0xe3, 0x11, 0x2a, 0x22, 0x75, 0x5e, 0x2a, 0xd8, 0x0c, 0x89, 0x38, 0xe6, + 0xa3, 0x2a, 0x80, 0xeb, 0xb4, 0x1c, 0x56, 0xdb, 0x63, 0x84, 0x8a, 0x48, 0x9c, 0xaf, 0x4d, 0x70, + 0xf0, 0xb5, 0x88, 0x8a, 0x35, 0x09, 0x6e, 0x76, 0xcf, 0x7f, 0xcf, 0x72, 0xd8, 0xec, 0x58, 0xd2, + 0xec, 0xd7, 0xfc, 0x37, 0x2d, 0x87, 0x61, 0xc5, 0x45, 0x8f, 0x40, 0x51, 0xbd, 0xe4, 0x2c, 0x08, + 0xd0, 0x32, 0x4f, 0x7a, 0x42, 0x0f, 0x0f, 0x79, 0xe6, 0xaf, 0xc2, 0x28, 0x73, 0xbd, 0xc3, 0xda, + 0x1d, 0x86, 0x56, 0x20, 0xc7, 0x7c, 0xe5, 0xd9, 0x4f, 0xde, 0x49, 0x7c, 0xc1, 0xa4, 0x41, 0x02, + 0xe2, 0xd9, 0xa4, 0x56, 0xd8, 0xef, 0x55, 0x72, 0x9b, 0x3e, 0xce, 0x31, 0x1f, 0x6d, 0x01, 0xb4, + 0x3b, 0x74, 0x67, 0x83, 0xd8, 0x01, 0x61, 0x2a, 0xb0, 0x2c, 0x1e, 0x0e, 0xb7, 0xe6, 0xdb, 0x96, + 0x9b, 0xc6, 0x14, 0x96, 0x58, 0x8f, 0x90, 0xb0, 0x86, 0x8a, 0x7c, 0x28, 0x3b, 0x2d, 0xab, 0x49, + 0xd6, 0xac, 0x2d, 0xe2, 0x72, 0xdf, 0xca, 0x0f, 0x7f, 0xa6, 0xac, 0x46, 0x00, 0xf1, 0x49, 0x10, + 0xd3, 0x28, 0xd6, 0x35, 0x98, 0xdf, 0x36, 0x60, 0x46, 0xd8, 0x6a, 0xdd, 0xa7, 0x4c, 0x26, 0x43, + 0xe2, 0x38, 0x7e, 0x04, 0x8a, 0xfc, 0xec, 0xb1, 0xbc, 0x6d, 0x71, 0x1a, 0x8f, 0x49, 0x53, 0xd7, + 0x25, 0x09, 0x87, 0x3c, 0x74, 0x3f, 0x8c, 0x58, 0x41, 0x53, 0x6e, 0xed, 0xb1, 0x5a, 0x89, 0xc7, + 0xc8, 0xa5, 0xa0, 0x49, 0xb1, 0xa0, 0xf2, 0x75, 0xa5, 0x76, 0xe0, 0xb4, 0xfb, 0x12, 0xdc, 0x0d, + 0x41, 0xc5, 0x8a, 0x6b, 0x7e, 0x3e, 0x0a, 0xe3, 0x7a, 0xaa, 0x7e, 0x8c, 0x79, 0x41, 0x03, 0x4a, + 0x61, 0xea, 0xa7, 0x96, 0xf0, 0x85, 0xe1, 0xac, 0x2b, 0x73, 0x42, 0xac, 0x30, 0x6a, 0xe3, 0x7c, + 0xcf, 0x87, 0x4f, 0x38, 0xc2, 0x46, 0x3e, 0x4c, 0xa9, 0x50, 0x43, 0xb6, 0x6b, 0x7b, 0xc2, 0xfc, + 0x2a, 0x42, 0x0c, 0xe9, 0x81, 0xa7, 0xf6, 0x7b, 0x95, 0xa9, 0xcd, 0x14, 0x14, 0xee, 0x03, 0x47, + 0xaf, 0xc1, 0x48, 0x23, 0xf0, 0x5b, 0xe2, 0x70, 0x19, 0x5a, 0x89, 0x58, 0xb8, 0x4b, 0x81, 0xdf, + 0xc2, 0x02, 0x04, 0xd9, 0x50, 0xd8, 0x12, 0x69, 0xb0, 0x3a, 0x78, 0x86, 0x4d, 0x6e, 0xd2, 0x29, + 0x74, 0x0d, 0xf8, 0xaa, 0x4b, 0x32, 0x56, 0xd0, 0xe8, 0x7c, 0x32, 0x76, 0x15, 0xc4, 0x8e, 0x9e, + 0x3c, 0x2c, 0x6e, 0xa1, 0x3a, 0xe4, 0x89, 0xd7, 0x9d, 0x2d, 0x8a, 0x6d, 0xf1, 0xf0, 0xe1, 0xef, + 0xb8, 0xe2, 0x75, 0xdf, 0xb0, 0x82, 0x5a, 0x59, 0xb9, 0x43, 0x7e, 0xc5, 0xeb, 0x62, 0x3e, 0x1a, + 0x75, 0xa1, 0xac, 0x59, 0x6f, 0xb6, 0x24, 0xc0, 0x5e, 0xce, 0x9e, 0x6c, 0xd4, 0xad, 0x0e, 0x25, + 0xf1, 0x56, 0xd3, 0xd6, 0x0a, 0xeb, 0x8a, 0xcc, 0x1f, 0x8f, 0xaa, 0x63, 0x49, 0x95, 0x15, 0x4f, + 0xc1, 0x08, 0xdb, 0x6b, 0x87, 0x45, 0x45, 0x25, 0xcc, 0x31, 0x37, 0xf7, 0xda, 0xe4, 0x76, 0xaf, + 0x32, 0xa9, 0x89, 0x72, 0x12, 0x16, 0xc2, 0xda, 0xca, 0xe4, 0x8e, 0x6f, 0x65, 0xaa, 0x00, 0xdb, + 0xbe, 0xbd, 0x4b, 0x82, 0x06, 0x2f, 0x7a, 0xd4, 0xde, 0xe5, 0x5b, 0x6a, 0x39, 0xa2, 0x62, 0x4d, + 0x02, 0xbd, 0x09, 0xf9, 0xa6, 0xc3, 0x94, 0xeb, 0x0d, 0xb9, 0x9f, 0x2e, 0x3b, 0x4c, 0x9f, 0x4e, + 0x91, 0x2f, 0xd5, 0x65, 0x87, 0x61, 0x8e, 0xc8, 0x4b, 0x12, 0x71, 0x58, 0xd1, 0xd9, 0xd1, 0x2c, + 0x99, 0xa8, 0xd8, 0x19, 0x0a, 0x38, 0x3a, 0x7b, 0x04, 0x91, 0x62, 0x05, 0xcc, 0x83, 0x21, 0x8f, + 0xff, 0xe4, 0x26, 0x5b, 0x76, 0x02, 0x55, 0xcc, 0x6a, 0xa9, 0x58, 0xc8, 0xc1, 0x9a, 0x14, 0xda, + 0x81, 0x71, 0x2a, 0x50, 0x55, 0x2c, 0x28, 0x66, 0x8e, 0x05, 0x32, 0x09, 0xd0, 0xb0, 0x70, 0x02, + 0x19, 0xbd, 0x03, 0x45, 0x2a, 0x7e, 0xd1, 0x6c, 0x7e, 0x2a, 0x61, 0x74, 0x03, 0x47, 0xbd, 0x02, + 0xc9, 0xa2, 0x38, 0x54, 0x60, 0xfe, 0x27, 0x4c, 0x0a, 0x45, 0x00, 0x48, 0x26, 0xb7, 0xc6, 0xf1, + 0x26, 0xb7, 0xe9, 0x3d, 0x99, 0xfb, 0xb2, 0xf6, 0xe4, 0x47, 0x85, 0x70, 0x4f, 0xca, 0x7c, 0xfa, + 0x3c, 0x8c, 0xb6, 0x77, 0x2c, 0x1a, 0x6e, 0xca, 0xfb, 0xc2, 0xb4, 0x73, 0x9d, 0x13, 0x6f, 0xf7, + 0x2a, 0x20, 0x63, 0x25, 0x7f, 0xc2, 0x52, 0x52, 0x24, 0x99, 0x96, 0x67, 0x13, 0xd7, 0x25, 0xdb, + 0x2a, 0x6d, 0x8c, 0x93, 0xcc, 0x90, 0x81, 0x63, 0x19, 0xf4, 0x0c, 0x14, 0x02, 0x62, 0x51, 0xdf, + 0x53, 0x3b, 0x6b, 0x3e, 0xf4, 0x4c, 0x2c, 0xa8, 0xb7, 0xb9, 0x47, 0xc8, 0x12, 0x50, 0x3c, 0x63, + 0x25, 0x8d, 0x1e, 0x87, 0x62, 0xeb, 0xf0, 0xb6, 0x4f, 0xc8, 0x47, 0x4d, 0x98, 0xa0, 0xcc, 0x0a, + 0x58, 0x94, 0xcc, 0x65, 0x49, 0x20, 0xd1, 0x7e, 0xaf, 0x32, 0xb1, 0x91, 0x80, 0xc1, 0x29, 0x58, + 0xd4, 0x85, 0x19, 0xdb, 0x6f, 0xb5, 0x5d, 0xc2, 0x13, 0xee, 0x58, 0x5b, 0x61, 0x78, 0x6d, 0xa7, + 0xf7, 0x7b, 0x95, 0x99, 0x7a, 0x3f, 0x16, 0x1e, 0xa4, 0x00, 0xbd, 0x08, 0xa5, 0xed, 0x4e, 0x60, + 0x71, 0xa2, 0xca, 0x46, 0x1f, 0x0c, 0x13, 0xf0, 0x65, 0x45, 0xbf, 0xdd, 0xab, 0x9c, 0xe4, 0x09, + 0x6c, 0x35, 0x24, 0xe0, 0x68, 0x08, 0xda, 0x82, 0x39, 0x5f, 0xe4, 0x86, 0xf2, 0x40, 0x93, 0x31, + 0x35, 0xdc, 0x94, 0xaa, 0x75, 0x64, 0x2a, 0xc0, 0xb9, 0xeb, 0x07, 0x4a, 0xe2, 0x43, 0x50, 0xd0, + 0x57, 0xa1, 0x60, 0x8b, 0x52, 0x4d, 0x24, 0xb5, 0x43, 0x87, 0x64, 0x90, 0x8d, 0x40, 0x0e, 0x80, + 0x15, 0x10, 0x6a, 0x42, 0x41, 0x2a, 0x14, 0xe9, 0x6f, 0xb6, 0x0d, 0x22, 0x5d, 0x4b, 0xbe, 0x53, + 0x7c, 0x28, 0xca, 0x67, 0xac, 0xe0, 0x4d, 0x4f, 0xd5, 0x9a, 0xba, 0x30, 0x7a, 0x5b, 0x4b, 0xa3, + 0x97, 0x8e, 0xa8, 0x79, 0xd3, 0xd7, 0x53, 0x6b, 0x73, 0x4d, 0x25, 0xa1, 0x49, 0x11, 0x5e, 0xdd, + 0x8a, 0x53, 0x7a, 0xd9, 0x69, 0x12, 0xca, 0xd4, 0x9e, 0x4c, 0xe6, 0xb4, 0x92, 0x85, 0x75, 0x39, + 0xf3, 0xdf, 0x23, 0x70, 0x52, 0xc1, 0x05, 0x16, 0x23, 0xcd, 0x3d, 0x74, 0x21, 0x11, 0x6a, 0x1f, + 0x4c, 0x85, 0xda, 0xe9, 0x84, 0xb0, 0x16, 0x6c, 0xdf, 0x87, 0x09, 0x19, 0xe5, 0x42, 0x9e, 0x0a, + 0xba, 0x43, 0xbe, 0xbd, 0x74, 0x8f, 0x84, 0x12, 0xb9, 0xb9, 0x96, 0x13, 0xe0, 0x38, 0xa5, 0x8c, + 0xab, 0x57, 0xc1, 0x20, 0x54, 0x9f, 0xcf, 0xa2, 0x5e, 0x1d, 0xfc, 0xfd, 0xea, 0x37, 0x12, 0xe0, + 0x38, 0xa5, 0x8c, 0xab, 0xb7, 0x3b, 0x94, 0xf9, 0xad, 0x48, 0xfd, 0x48, 0x16, 0xf5, 0x75, 0x81, + 0x31, 0x40, 0x7d, 0x3d, 0x01, 0x8e, 0x53, 0xca, 0xd0, 0x27, 0x06, 0x9c, 0x7e, 0x87, 0x78, 0xbb, + 0x8e, 0x47, 0xd7, 0x9d, 0x36, 0x71, 0x1d, 0x2f, 0xb6, 0x83, 0x3c, 0xcd, 0xae, 0x0c, 0x37, 0x91, + 0x2b, 0x49, 0xb0, 0xe4, 0x8c, 0xee, 0xdb, 0xef, 0x55, 0x4e, 0x5f, 0x19, 0xac, 0x0e, 0x1f, 0x34, + 0x0f, 0xf3, 0x4f, 0x79, 0xb5, 0x51, 0xf4, 0xb0, 0xa3, 0x1f, 0xd4, 0xc6, 0x17, 0x1c, 0xd4, 0xef, + 0xc3, 0x84, 0xf8, 0x7a, 0xe1, 0xd8, 0x6f, 0x92, 0xad, 0x57, 0x7d, 0x7f, 0x37, 0x9b, 0x87, 0x5d, + 0x4e, 0x60, 0xc8, 0xe0, 0x27, 0x6c, 0x9c, 0x64, 0xe0, 0x94, 0x32, 0xb4, 0x07, 0x27, 0xa5, 0x9e, + 0x50, 0xbb, 0x74, 0xb0, 0x57, 0x86, 0x4e, 0xe1, 0x5e, 0x8d, 0x20, 0xa4, 0xf2, 0xe9, 0xfd, 0x5e, + 0xe5, 0x64, 0x82, 0x8e, 0x93, 0x9a, 0xd0, 0x07, 0x06, 0x4c, 0x89, 0x4d, 0x5b, 0xdf, 0xb1, 0xbc, + 0xa6, 0x5c, 0x0d, 0xe5, 0x60, 0x2f, 0x65, 0xc8, 0xf2, 0x24, 0x8a, 0x54, 0x2e, 0x4a, 0xa6, 0xd5, + 0x14, 0x36, 0xee, 0xd3, 0x66, 0x7e, 0x94, 0x07, 0xd4, 0xdf, 0x35, 0x44, 0x4f, 0x27, 0x0e, 0x8b, + 0xb3, 0xa9, 0xc3, 0x62, 0x4a, 0x1f, 0xa1, 0x9d, 0x15, 0x4d, 0x28, 0xc8, 0x59, 0x67, 0x2b, 0x2b, + 0x95, 0x59, 0x14, 0xee, 0x20, 0xfb, 0x29, 0x78, 0x9e, 0x12, 0xaa, 0x55, 0x54, 0xab, 0x75, 0x34, + 0x4d, 0x83, 0xdc, 0x24, 0x54, 0x80, 0xa8, 0x3a, 0x80, 0xa5, 0xd5, 0xd4, 0xf2, 0xbc, 0x92, 0x79, + 0x79, 0x42, 0x9d, 0x93, 0xd1, 0xf1, 0x2d, 0xe9, 0x58, 0xd7, 0x62, 0x7e, 0x5c, 0x04, 0x2d, 0x4d, + 0x44, 0x2f, 0xc1, 0x04, 0x25, 0x41, 0xd7, 0xb1, 0xc9, 0x92, 0x6d, 0xfb, 0x1d, 0x2f, 0x8c, 0x03, + 0xd1, 0xa7, 0x9d, 0x8d, 0x04, 0x17, 0xa7, 0xa4, 0xc5, 0x67, 0x0d, 0x71, 0xb0, 0xa9, 0x85, 0xc9, + 0xf4, 0x59, 0x23, 0x55, 0x43, 0xa8, 0x26, 0x80, 0x02, 0x4e, 0x34, 0x15, 0xf2, 0xc7, 0xd8, 0x54, + 0x70, 0xa0, 0x44, 0x93, 0x67, 0xf1, 0xf3, 0x99, 0xe2, 0xb0, 0x3a, 0xf3, 0xa2, 0x9e, 0x65, 0x74, + 0xd0, 0x45, 0xf0, 0xdc, 0x6a, 0x2a, 0xd5, 0x18, 0xcd, 0x6c, 0xb5, 0xc3, 0x93, 0x0c, 0x64, 0xc3, + 0x58, 0x40, 0xa4, 0x05, 0xa9, 0xca, 0x18, 0xbf, 0xa0, 0x84, 0xc2, 0x4a, 0x1c, 0x93, 0x77, 0x3b, + 0x4e, 0x40, 0x5a, 0xc4, 0x63, 0x34, 0x4e, 0xb6, 0x43, 0x2e, 0xc5, 0x31, 0x2e, 0xea, 0x00, 0xb4, + 0xa3, 0xce, 0x96, 0x2a, 0xd4, 0xb2, 0x24, 0x2f, 0xc9, 0xf6, 0x58, 0x5c, 0xcf, 0xc4, 0x74, 0xac, + 0x29, 0x42, 0x5f, 0x83, 0x33, 0x71, 0xda, 0xba, 0x4c, 0xac, 0x6d, 0x11, 0x36, 0x54, 0xff, 0x57, + 0x36, 0x44, 0x1f, 0xd8, 0xef, 0x55, 0xce, 0xd4, 0x0f, 0x12, 0xc2, 0x07, 0x8f, 0x47, 0x37, 0x61, + 0xdc, 0xf3, 0xb7, 0xc9, 0x06, 0x71, 0x89, 0xcd, 0xfc, 0x40, 0xe5, 0x97, 0xb5, 0xe1, 0xde, 0x4a, + 0xf6, 0xc8, 0x2d, 0xf7, 0x9a, 0x86, 0x24, 0xcb, 0x51, 0x9d, 0x82, 0x13, 0x9a, 0xcc, 0x3f, 0x8c, + 0xc0, 0xcc, 0x80, 0x78, 0x8e, 0xae, 0xab, 0xe6, 0x53, 0xa6, 0x1e, 0x6b, 0xf4, 0x75, 0x4d, 0x6b, + 0x40, 0x89, 0x5e, 0xab, 0xeb, 0xde, 0xad, 0x5e, 0x6b, 0x88, 0x84, 0x35, 0xd4, 0xb0, 0x99, 0x94, + 0x3f, 0x52, 0x33, 0xe9, 0x0a, 0x20, 0x72, 0xb3, 0xed, 0x53, 0xa2, 0x72, 0x39, 0xfe, 0x57, 0x76, + 0x42, 0x4a, 0xb5, 0x39, 0x25, 0x8d, 0x56, 0xfa, 0x24, 0xf0, 0x80, 0x51, 0xbc, 0x92, 0x6c, 0xf8, + 0x81, 0x4d, 0xf8, 0x7c, 0xc5, 0xb6, 0xd3, 0x2a, 0xc9, 0x4b, 0x21, 0x03, 0xc7, 0x32, 0xc8, 0x8e, + 0xbb, 0x03, 0x85, 0x2c, 0x9d, 0x62, 0x69, 0x08, 0xe1, 0xd0, 0x07, 0xb6, 0x05, 0xd0, 0x12, 0x4c, + 0x8a, 0x41, 0x4b, 0xeb, 0xab, 0x61, 0xab, 0x4e, 0x7e, 0xa9, 0x3f, 0xad, 0x86, 0xc8, 0x4e, 0x55, + 0xcc, 0xc6, 0x69, 0x79, 0xf3, 0x97, 0x79, 0x98, 0x19, 0x90, 0x04, 0x47, 0x3d, 0x4b, 0xe3, 0x6e, + 0xf4, 0x2c, 0xbf, 0x0c, 0x97, 0x79, 0x1c, 0x8a, 0x9e, 0x5f, 0xb7, 0xec, 0x1d, 0xa2, 0x3e, 0xfb, + 0x44, 0x66, 0xbb, 0x26, 0xc9, 0x38, 0xe4, 0x87, 0xde, 0x35, 0x72, 0x24, 0xef, 0x1a, 0xda, 0x23, + 0x5e, 0x0a, 0x2b, 0x96, 0x86, 0xe3, 0x92, 0x75, 0x8b, 0xed, 0xa8, 0x8e, 0x56, 0x14, 0x2c, 0x97, + 0x13, 0x5c, 0x9c, 0x92, 0x36, 0x7f, 0x6e, 0xc0, 0xcc, 0x80, 0x64, 0x32, 0x11, 0xe1, 0x8c, 0x63, + 0x8c, 0x70, 0x8f, 0x42, 0x81, 0xc6, 0x0b, 0xa8, 0x7f, 0x31, 0x90, 0x8b, 0xa1, 0xb8, 0xe6, 0xad, + 0xbe, 0x79, 0xae, 0x74, 0x89, 0xc7, 0xb2, 0xf5, 0x54, 0xd7, 0x65, 0xfb, 0x52, 0xba, 0xcc, 0x85, + 0xa1, 0x73, 0xdf, 0x55, 0xaf, 0xe1, 0xa7, 0xfa, 0x96, 0x77, 0xe3, 0x68, 0x31, 0xff, 0x6c, 0xc0, + 0x44, 0xb2, 0x3b, 0x8a, 0x1e, 0x80, 0x7c, 0x27, 0x70, 0xd4, 0xdb, 0x45, 0x23, 0x5e, 0xc7, 0xab, + 0x98, 0xd3, 0x39, 0x3b, 0x20, 0x0d, 0x65, 0xba, 0x88, 0x8d, 0x49, 0x03, 0x73, 0x3a, 0x6a, 0x43, + 0xb9, 0x1d, 0xf8, 0x37, 0xf7, 0x64, 0x57, 0x21, 0xdb, 0x2d, 0x8f, 0xf5, 0x18, 0x20, 0xae, 0xc4, + 0x35, 0x22, 0xd6, 0x55, 0x98, 0x3f, 0x33, 0x00, 0xf5, 0x57, 0x07, 0xff, 0x73, 0xde, 0xf4, 0xc3, + 0x1c, 0x14, 0xd5, 0x42, 0xa2, 0x6f, 0xc1, 0x44, 0x33, 0x61, 0xf4, 0x6c, 0x33, 0x4c, 0xb5, 0xb5, + 0xa3, 0xfd, 0x97, 0xa4, 0xe3, 0x94, 0x2e, 0xf4, 0xa1, 0x01, 0xd3, 0x4d, 0x87, 0x25, 0xdf, 0x2f, + 0x5b, 0xab, 0xff, 0x72, 0x1a, 0xa6, 0x76, 0x46, 0x4d, 0x62, 0xba, 0x8f, 0x85, 0xfb, 0x95, 0x9a, + 0x7f, 0xc9, 0x41, 0xbf, 0x20, 0x37, 0xa9, 0x2d, 0x73, 0x29, 0x63, 0xe0, 0x9d, 0x35, 0xc5, 0xe5, + 0xe5, 0x90, 0x25, 0x2e, 0x7d, 0x65, 0x9b, 0xbc, 0xd4, 0x5a, 0xf7, 0x3d, 0x16, 0xf8, 0xee, 0xeb, + 0x94, 0x04, 0xda, 0xa5, 0x2b, 0x01, 0x8b, 0x15, 0x3c, 0x6a, 0xc3, 0x98, 0x1d, 0xde, 0xe1, 0xca, + 0x76, 0x15, 0xa7, 0x5f, 0x97, 0x76, 0x49, 0x40, 0x21, 0xe3, 0x58, 0xc9, 0x10, 0x7d, 0x58, 0xf3, + 0x47, 0x06, 0x4c, 0xa5, 0xcb, 0x53, 0x3e, 0x5e, 0x94, 0x3b, 0xab, 0xcb, 0xe9, 0xf6, 0xc0, 0xaa, + 0x24, 0xe3, 0x90, 0x8f, 0x36, 0xa1, 0xc8, 0x63, 0x1b, 0x56, 0x9b, 0x7a, 0xe8, 0x18, 0x29, 0x3e, + 0xda, 0x5e, 0x92, 0x08, 0x38, 0x84, 0x32, 0x7f, 0x6f, 0x00, 0xea, 0xaf, 0xca, 0xd0, 0x3a, 0x9c, + 0x72, 0x2d, 0xca, 0xa2, 0x5e, 0xf9, 0x6a, 0x62, 0x92, 0xf7, 0xab, 0x49, 0x9e, 0x5a, 0x1b, 0x20, + 0x83, 0x07, 0x8e, 0x8c, 0xe2, 0x7b, 0xee, 0x2e, 0xc4, 0x77, 0x73, 0x03, 0x20, 0xfe, 0x8a, 0x8d, + 0xce, 0xc2, 0x88, 0x67, 0xb5, 0xc2, 0x83, 0x3e, 0x4a, 0x21, 0xc5, 0x5d, 0x41, 0xc1, 0x41, 0x0f, + 0xc1, 0x68, 0xd7, 0x72, 0x3b, 0xe1, 0x65, 0xcc, 0xe8, 0x06, 0xc9, 0x1b, 0x9c, 0x88, 0x25, 0xcf, + 0xfc, 0x45, 0x0e, 0xca, 0xda, 0x57, 0xa2, 0xe3, 0x48, 0x64, 0x47, 0xdb, 0x16, 0xdb, 0x09, 0x2f, + 0xbf, 0xbc, 0x98, 0xf9, 0x03, 0x16, 0x0f, 0xcf, 0xf1, 0x4b, 0xf0, 0x27, 0x8a, 0x25, 0x74, 0x2a, + 0xf3, 0xc9, 0x1f, 0x47, 0xe6, 0x63, 0x7e, 0xd7, 0x80, 0xc9, 0xd4, 0x6c, 0xd0, 0x22, 0x00, 0x8d, + 0x9e, 0xd4, 0x4a, 0x44, 0x85, 0x51, 0x2c, 0x87, 0x35, 0x29, 0x91, 0xa0, 0x10, 0xca, 0x1c, 0x4f, + 0x34, 0xe2, 0x97, 0x9d, 0x40, 0x2d, 0x4f, 0x9c, 0xa0, 0x24, 0xb8, 0x38, 0x25, 0x6d, 0xfe, 0xd3, + 0x80, 0xfb, 0x0f, 0x6b, 0xe4, 0xf1, 0x74, 0x55, 0x75, 0xeb, 0xa2, 0x14, 0xc8, 0x48, 0xa6, 0xab, + 0x57, 0x92, 0x6c, 0x9c, 0x96, 0x47, 0x17, 0xa0, 0xac, 0x91, 0xd4, 0x04, 0xa3, 0x60, 0xa7, 0x0d, + 0xc7, 0xba, 0xdc, 0xdd, 0x09, 0xfa, 0x7f, 0x33, 0xe0, 0xd4, 0xa0, 0xd2, 0x0c, 0x05, 0xe1, 0x2d, + 0x2a, 0x79, 0x39, 0xee, 0xea, 0xd1, 0xab, 0xbd, 0xaa, 0xb8, 0x4b, 0xb5, 0xe2, 0xb1, 0x60, 0x6f, + 0xf0, 0xfd, 0xaa, 0xb9, 0x8b, 0x00, 0xb1, 0x0c, 0x9a, 0x82, 0xfc, 0x2e, 0xd9, 0x93, 0xd6, 0xc4, + 0xfc, 0x27, 0x3a, 0x95, 0xd8, 0x62, 0x6a, 0x4f, 0x3d, 0x97, 0xbb, 0x68, 0x3c, 0x57, 0xfa, 0xf8, + 0xa7, 0x95, 0x13, 0x1f, 0xfc, 0xe3, 0xec, 0x09, 0xf3, 0x07, 0x06, 0xe8, 0xf9, 0x01, 0x7a, 0x02, + 0xc6, 0x76, 0x18, 0x6b, 0x0b, 0x92, 0xfa, 0x00, 0x26, 0x2e, 0x12, 0xbd, 0xba, 0xb9, 0xb9, 0x2e, + 0x88, 0x38, 0xe6, 0xa3, 0x2a, 0x00, 0x7f, 0xa0, 0x52, 0x7a, 0x24, 0xfe, 0x10, 0xcd, 0xa5, 0x37, + 0xa4, 0xb8, 0x26, 0x81, 0x1e, 0xe1, 0xf9, 0xb9, 0x14, 0x96, 0x77, 0x9b, 0xcb, 0x32, 0x37, 0x97, + 0x92, 0x21, 0xcf, 0xfc, 0x8d, 0x01, 0xd3, 0x7d, 0x5f, 0x46, 0xd1, 0x8d, 0x28, 0x5b, 0x30, 0xb2, + 0x6f, 0xa1, 0xc1, 0x19, 0xc6, 0x91, 0xdd, 0xfe, 0xd7, 0x06, 0x40, 0x5c, 0xad, 0x21, 0x17, 0xc6, + 0x25, 0x70, 0x22, 0x45, 0xc9, 0x32, 0xe1, 0x53, 0x6a, 0x02, 0xe3, 0x1b, 0x1a, 0x1e, 0x4e, 0xa0, + 0xf3, 0x2a, 0xa4, 0xe5, 0x77, 0x3c, 0x26, 0x36, 0x53, 0x2e, 0x79, 0x8d, 0xee, 0x6a, 0xc8, 0xc0, + 0xb1, 0x8c, 0xf9, 0xbd, 0x51, 0x98, 0x19, 0xf0, 0xd5, 0xe1, 0xff, 0xb8, 0x4d, 0xf0, 0x38, 0x14, + 0xe5, 0x5d, 0x27, 0x9a, 0xce, 0x19, 0xe4, 0x55, 0x28, 0x5e, 0x6f, 0xcb, 0x1f, 0xe8, 0x3c, 0x94, + 0x1d, 0xcf, 0x96, 0xdd, 0x2d, 0x2b, 0xac, 0xfa, 0x64, 0xc7, 0x34, 0x26, 0x63, 0x5d, 0x26, 0x59, + 0x26, 0x16, 0xee, 0xa8, 0x71, 0x30, 0xae, 0xfe, 0xdf, 0x42, 0xde, 0x4c, 0x2a, 0x66, 0x59, 0x10, + 0xd1, 0x2c, 0xc2, 0x1a, 0x0c, 0x4e, 0x80, 0xa2, 0xef, 0x18, 0x30, 0xa5, 0x08, 0x4b, 0x01, 0x73, + 0x1a, 0x96, 0x1d, 0xdd, 0x62, 0x38, 0x62, 0x18, 0x9c, 0x55, 0x2f, 0x37, 0x85, 0x53, 0xf0, 0xb8, + 0x4f, 0xa1, 0x79, 0x03, 0xa6, 0xfb, 0x12, 0xbc, 0x3b, 0xcb, 0x1e, 0x88, 0xf8, 0x3f, 0x82, 0x54, + 0xf6, 0x20, 0xff, 0x7d, 0x40, 0xf2, 0xcc, 0x4f, 0x0c, 0x98, 0x48, 0xe5, 0xc7, 0x99, 0x0a, 0xd0, + 0x1b, 0x7a, 0x01, 0x7a, 0xe4, 0x34, 0x3f, 0x51, 0x8a, 0x9a, 0x0d, 0x98, 0x48, 0x76, 0xfc, 0xb5, + 0xaa, 0xc8, 0x38, 0xac, 0x2a, 0x42, 0xe7, 0xa0, 0x64, 0xb9, 0xae, 0xff, 0xde, 0x8a, 0xd7, 0x55, + 0xf7, 0x1a, 0xa2, 0x86, 0xf1, 0x92, 0xa2, 0xe3, 0x48, 0xa2, 0xf6, 0xf0, 0xa7, 0xb7, 0xe6, 0x4f, + 0x7c, 0x76, 0x6b, 0xfe, 0xc4, 0xdf, 0x6f, 0xcd, 0x9f, 0xf8, 0x60, 0x7f, 0xde, 0xf8, 0x74, 0x7f, + 0xde, 0xf8, 0x6c, 0x7f, 0xde, 0xf8, 0xd7, 0xfe, 0xbc, 0xf1, 0xfd, 0xcf, 0xe7, 0x4f, 0xdc, 0xc8, + 0x75, 0xcf, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x56, 0x93, 0x44, 0xfd, 0x34, 0x00, 0x00, } diff --git a/pkg/build/api/v1/generated.proto b/pkg/build/api/v1/generated.proto index 4ab2ad0bc934..a547752f24b4 100644 --- a/pkg/build/api/v1/generated.proto +++ b/pkg/build/api/v1/generated.proto @@ -302,7 +302,8 @@ message BuildRequest { // not be generated. optional int64 lastVersion = 6; - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 7; // triggeredBy describes which triggers started the most recent update to the @@ -533,7 +534,8 @@ message CustomBuildStrategy { // registries optional k8s.io.kubernetes.pkg.api.v1.LocalObjectReference pullSecret = 2; - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 3; // exposeDockerSocket will allow running Docker commands (and build Docker images) from @@ -568,7 +570,8 @@ message DockerBuildStrategy { // --no-cache=true flag optional bool noCache = 3; - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 4; // forcePull describes if the builder should pull the images from registry prior to building. @@ -599,7 +602,8 @@ message GenericWebHookEvent { // git is the git information if the Type is BuildSourceGit optional GitInfo git = 2; - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 3; } @@ -720,6 +724,10 @@ message JenkinsPipelineBuildStrategy { // Jenkinsfile defines the optional raw contents of a Jenkinsfile which defines a Jenkins pipeline build. optional string jenkinsfile = 2; + + // env contains additional environment variables you want to pass into a build pipeline. + // ValueFrom is not supported. + repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 3; } // OptionalNodeSelector is a map that may also be left nil to distinguish between set and unset. @@ -782,7 +790,8 @@ message SourceBuildStrategy { // registries optional k8s.io.kubernetes.pkg.api.v1.LocalObjectReference pullSecret = 2; - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. repeated k8s.io.kubernetes.pkg.api.v1.EnvVar env = 3; // scripts is the location of Source scripts diff --git a/pkg/build/api/v1/swagger_doc.go b/pkg/build/api/v1/swagger_doc.go index 51ecbe98adec..c53dd8219fd0 100644 --- a/pkg/build/api/v1/swagger_doc.go +++ b/pkg/build/api/v1/swagger_doc.go @@ -147,7 +147,7 @@ var map_BuildRequest = map[string]string{ "from": "from is the reference to the ImageStreamTag that triggered the build.", "binary": "binary indicates a request to build from a binary provided to the builder", "lastVersion": "lastVersion (optional) is the LastVersion of the BuildConfig that was used to generate the build. If the BuildConfig in the generator doesn't match, a build will not be generated.", - "env": "env contains additional environment variables you want to pass into a builder container", + "env": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", "triggeredBy": "triggeredBy describes which triggers started the most recent update to the build configuration and contains information about those triggers.", } @@ -274,7 +274,7 @@ var map_CustomBuildStrategy = map[string]string{ "": "CustomBuildStrategy defines input parameters specific to Custom build.", "from": "from is reference to an DockerImage, ImageStreamTag, or ImageStreamImage from which the docker image should be pulled", "pullSecret": "pullSecret is the name of a Secret that would be used for setting up the authentication for pulling the Docker images from the private Docker registries", - "env": "env contains additional environment variables you want to pass into a builder container", + "env": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", "exposeDockerSocket": "exposeDockerSocket will allow running Docker commands (and build Docker images) from inside the Docker container.", "forcePull": "forcePull describes if the controller should configure the build pod to always pull the images for the builder or only pull if it is not present locally", "secrets": "secrets is a list of additional secrets that will be included in the build pod", @@ -290,7 +290,7 @@ var map_DockerBuildStrategy = map[string]string{ "from": "from is reference to an DockerImage, ImageStreamTag, or ImageStreamImage from which the docker image should be pulled the resulting image will be used in the FROM line of the Dockerfile for this build.", "pullSecret": "pullSecret is the name of a Secret that would be used for setting up the authentication for pulling the Docker images from the private Docker registries", "noCache": "noCache if set to true indicates that the docker build must be executed with the --no-cache=true flag", - "env": "env contains additional environment variables you want to pass into a builder container", + "env": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", "forcePull": "forcePull describes if the builder should pull the images from registry prior to building.", "dockerfilePath": "dockerfilePath is the path of the Dockerfile that will be used to build the Docker image, relative to the root of the context (contextDir).", } @@ -313,7 +313,7 @@ var map_GenericWebHookEvent = map[string]string{ "": "GenericWebHookEvent is the payload expected for a generic webhook post", "type": "type is the type of source repository", "git": "git is the git information if the Type is BuildSourceGit", - "env": "env contains additional environment variables you want to pass into a builder container", + "env": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", } func (GenericWebHookEvent) SwaggerDoc() map[string]string { @@ -415,6 +415,7 @@ var map_JenkinsPipelineBuildStrategy = map[string]string{ "": "JenkinsPipelineBuildStrategy holds parameters specific to a Jenkins Pipeline build. This strategy is in tech preview.", "jenkinsfilePath": "JenkinsfilePath is the optional path of the Jenkinsfile that will be used to configure the pipeline relative to the root of the context (contextDir). If both JenkinsfilePath & Jenkinsfile are both not specified, this defaults to Jenkinsfile in the root of the specified contextDir.", "jenkinsfile": "Jenkinsfile defines the optional raw contents of a Jenkinsfile which defines a Jenkins pipeline build.", + "env": "env contains additional environment variables you want to pass into a build pipeline. ValueFrom is not supported.", } func (JenkinsPipelineBuildStrategy) SwaggerDoc() map[string]string { @@ -456,7 +457,7 @@ var map_SourceBuildStrategy = map[string]string{ "": "SourceBuildStrategy defines input parameters specific to an Source build.", "from": "from is reference to an DockerImage, ImageStreamTag, or ImageStreamImage from which the docker image should be pulled", "pullSecret": "pullSecret is the name of a Secret that would be used for setting up the authentication for pulling the Docker images from the private Docker registries", - "env": "env contains additional environment variables you want to pass into a builder container", + "env": "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", "scripts": "scripts is the location of Source scripts", "incremental": "incremental flag forces the Source build to do incremental builds if true.", "forcePull": "forcePull describes if the builder should pull the images from registry prior to building.", diff --git a/pkg/build/api/v1/types.go b/pkg/build/api/v1/types.go index c2212efb3cfb..cde1d6e1b9b0 100644 --- a/pkg/build/api/v1/types.go +++ b/pkg/build/api/v1/types.go @@ -461,7 +461,8 @@ type CustomBuildStrategy struct { // registries PullSecret *kapi.LocalObjectReference `json:"pullSecret,omitempty" protobuf:"bytes,2,opt,name=pullSecret"` - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. Env []kapi.EnvVar `json:"env,omitempty" protobuf:"bytes,3,rep,name=env"` // exposeDockerSocket will allow running Docker commands (and build Docker images) from @@ -496,7 +497,8 @@ type DockerBuildStrategy struct { // --no-cache=true flag NoCache bool `json:"noCache,omitempty" protobuf:"varint,3,opt,name=noCache"` - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. Env []kapi.EnvVar `json:"env,omitempty" protobuf:"bytes,4,rep,name=env"` // forcePull describes if the builder should pull the images from registry prior to building. @@ -518,7 +520,8 @@ type SourceBuildStrategy struct { // registries PullSecret *kapi.LocalObjectReference `json:"pullSecret,omitempty" protobuf:"bytes,2,opt,name=pullSecret"` - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. Env []kapi.EnvVar `json:"env,omitempty" protobuf:"bytes,3,rep,name=env"` // scripts is the location of Source scripts @@ -557,6 +560,10 @@ type JenkinsPipelineBuildStrategy struct { // Jenkinsfile defines the optional raw contents of a Jenkinsfile which defines a Jenkins pipeline build. Jenkinsfile string `json:"jenkinsfile,omitempty" protobuf:"bytes,2,opt,name=jenkinsfile"` + + // env contains additional environment variables you want to pass into a build pipeline. + // ValueFrom is not supported. + Env []kapi.EnvVar `json:"env,omitempty" protobuf:"bytes,3,rep,name=env"` } // A BuildPostCommitSpec holds a build post commit hook specification. The hook @@ -824,7 +831,8 @@ type GenericWebHookEvent struct { // git is the git information if the Type is BuildSourceGit Git *GitInfo `json:"git,omitempty" protobuf:"bytes,2,opt,name=git"` - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. Env []kapi.EnvVar `json:"env,omitempty" protobuf:"bytes,3,rep,name=env"` } @@ -862,7 +870,8 @@ type BuildRequest struct { // not be generated. LastVersion *int64 `json:"lastVersion,omitempty" protobuf:"varint,6,opt,name=lastVersion"` - // env contains additional environment variables you want to pass into a builder container + // env contains additional environment variables you want to pass into a builder container. + // ValueFrom is not supported. Env []kapi.EnvVar `json:"env,omitempty" protobuf:"bytes,7,rep,name=env"` // triggeredBy describes which triggers started the most recent update to the diff --git a/pkg/build/api/v1/zz_generated.conversion.go b/pkg/build/api/v1/zz_generated.conversion.go index 972bd2bbca51..03406ab71fb4 100644 --- a/pkg/build/api/v1/zz_generated.conversion.go +++ b/pkg/build/api/v1/zz_generated.conversion.go @@ -870,7 +870,15 @@ func autoConvert_v1_BuildStrategy_To_api_BuildStrategy(in *BuildStrategy, out *a } else { out.CustomStrategy = nil } - out.JenkinsPipelineStrategy = (*api.JenkinsPipelineBuildStrategy)(unsafe.Pointer(in.JenkinsPipelineStrategy)) + if in.JenkinsPipelineStrategy != nil { + in, out := &in.JenkinsPipelineStrategy, &out.JenkinsPipelineStrategy + *out = new(api.JenkinsPipelineBuildStrategy) + if err := Convert_v1_JenkinsPipelineBuildStrategy_To_api_JenkinsPipelineBuildStrategy(*in, *out, s); err != nil { + return err + } + } else { + out.JenkinsPipelineStrategy = nil + } return nil } @@ -906,7 +914,15 @@ func autoConvert_api_BuildStrategy_To_v1_BuildStrategy(in *api.BuildStrategy, ou } else { out.CustomStrategy = nil } - out.JenkinsPipelineStrategy = (*JenkinsPipelineBuildStrategy)(unsafe.Pointer(in.JenkinsPipelineStrategy)) + if in.JenkinsPipelineStrategy != nil { + in, out := &in.JenkinsPipelineStrategy, &out.JenkinsPipelineStrategy + *out = new(JenkinsPipelineBuildStrategy) + if err := Convert_api_JenkinsPipelineBuildStrategy_To_v1_JenkinsPipelineBuildStrategy(*in, *out, s); err != nil { + return err + } + } else { + out.JenkinsPipelineStrategy = nil + } return nil } @@ -1623,6 +1639,17 @@ func Convert_api_ImageSourcePath_To_v1_ImageSourcePath(in *api.ImageSourcePath, func autoConvert_v1_JenkinsPipelineBuildStrategy_To_api_JenkinsPipelineBuildStrategy(in *JenkinsPipelineBuildStrategy, out *api.JenkinsPipelineBuildStrategy, s conversion.Scope) error { out.JenkinsfilePath = in.JenkinsfilePath out.Jenkinsfile = in.Jenkinsfile + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]pkg_api.EnvVar, len(*in)) + for i := range *in { + if err := api_v1.Convert_v1_EnvVar_To_api_EnvVar(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Env = nil + } return nil } @@ -1633,6 +1660,17 @@ func Convert_v1_JenkinsPipelineBuildStrategy_To_api_JenkinsPipelineBuildStrategy func autoConvert_api_JenkinsPipelineBuildStrategy_To_v1_JenkinsPipelineBuildStrategy(in *api.JenkinsPipelineBuildStrategy, out *JenkinsPipelineBuildStrategy, s conversion.Scope) error { out.JenkinsfilePath = in.JenkinsfilePath out.Jenkinsfile = in.Jenkinsfile + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]api_v1.EnvVar, len(*in)) + for i := range *in { + if err := api_v1.Convert_api_EnvVar_To_v1_EnvVar(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Env = nil + } return nil } diff --git a/pkg/build/api/v1/zz_generated.deepcopy.go b/pkg/build/api/v1/zz_generated.deepcopy.go index b529c0245925..45f661d632dd 100644 --- a/pkg/build/api/v1/zz_generated.deepcopy.go +++ b/pkg/build/api/v1/zz_generated.deepcopy.go @@ -564,7 +564,9 @@ func DeepCopy_v1_BuildStrategy(in interface{}, out interface{}, c *conversion.Cl if in.JenkinsPipelineStrategy != nil { in, out := &in.JenkinsPipelineStrategy, &out.JenkinsPipelineStrategy *out = new(JenkinsPipelineBuildStrategy) - **out = **in + if err := DeepCopy_v1_JenkinsPipelineBuildStrategy(*in, *out, c); err != nil { + return err + } } else { out.JenkinsPipelineStrategy = nil } @@ -949,6 +951,17 @@ func DeepCopy_v1_JenkinsPipelineBuildStrategy(in interface{}, out interface{}, c out := out.(*JenkinsPipelineBuildStrategy) out.JenkinsfilePath = in.JenkinsfilePath out.Jenkinsfile = in.Jenkinsfile + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]api_v1.EnvVar, len(*in)) + for i := range *in { + if err := api_v1.DeepCopy_v1_EnvVar(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Env = nil + } return nil } } diff --git a/pkg/build/api/v1/zz_generated.defaults.go b/pkg/build/api/v1/zz_generated.defaults.go index 875a0fc905dd..d61a342206b0 100644 --- a/pkg/build/api/v1/zz_generated.defaults.go +++ b/pkg/build/api/v1/zz_generated.defaults.go @@ -57,6 +57,16 @@ func SetObjectDefaults_Build(in *Build) { } } } + if in.Spec.CommonSpec.Strategy.JenkinsPipelineStrategy != nil { + for i := range in.Spec.CommonSpec.Strategy.JenkinsPipelineStrategy.Env { + a := &in.Spec.CommonSpec.Strategy.JenkinsPipelineStrategy.Env[i] + if a.ValueFrom != nil { + if a.ValueFrom.FieldRef != nil { + api_v1.SetDefaults_ObjectFieldSelector(a.ValueFrom.FieldRef) + } + } + } + } api_v1.SetDefaults_ResourceList(&in.Spec.CommonSpec.Resources.Limits) api_v1.SetDefaults_ResourceList(&in.Spec.CommonSpec.Resources.Requests) } @@ -102,6 +112,16 @@ func SetObjectDefaults_BuildConfig(in *BuildConfig) { } } } + if in.Spec.CommonSpec.Strategy.JenkinsPipelineStrategy != nil { + for i := range in.Spec.CommonSpec.Strategy.JenkinsPipelineStrategy.Env { + a := &in.Spec.CommonSpec.Strategy.JenkinsPipelineStrategy.Env[i] + if a.ValueFrom != nil { + if a.ValueFrom.FieldRef != nil { + api_v1.SetDefaults_ObjectFieldSelector(a.ValueFrom.FieldRef) + } + } + } + } api_v1.SetDefaults_ResourceList(&in.Spec.CommonSpec.Resources.Limits) api_v1.SetDefaults_ResourceList(&in.Spec.CommonSpec.Resources.Requests) } diff --git a/pkg/build/api/validation/validation.go b/pkg/build/api/validation/validation.go index bf877751aece..87e274b41a94 100644 --- a/pkg/build/api/validation/validation.go +++ b/pkg/build/api/validation/validation.go @@ -548,6 +548,8 @@ func validateJenkinsPipelineStrategy(strategy *buildapi.JenkinsPipelineBuildStra } } + allErrs = append(allErrs, ValidateStrategyEnv(strategy.Env, fldPath.Child("env"))...) + return allErrs } diff --git a/pkg/build/api/validation/validation_test.go b/pkg/build/api/validation/validation_test.go index 7610f1b3cb5f..10b1168e94d2 100644 --- a/pkg/build/api/validation/validation_test.go +++ b/pkg/build/api/validation/validation_test.go @@ -1855,6 +1855,29 @@ func TestValidateCommonSpec(t *testing.T) { }, }, // 32 + // jenkins strategy env fields can't use valueFrom syntax + { + string(field.ErrorTypeInvalid) + "strategy.jenkinsPipelineStrategy.env[0].valueFrom", + buildapi.CommonSpec{ + Source: buildapi.BuildSource{ + Git: &buildapi.GitBuildSource{ + URI: "http://github.com/my/repository", + }, + }, + Strategy: buildapi.BuildStrategy{ + JenkinsPipelineStrategy: &buildapi.JenkinsPipelineBuildStrategy{ + JenkinsfilePath: "myJenkinsfile", + Env: []kapi.EnvVar{ + { + Name: "key", + ValueFrom: &kapi.EnvVarSource{}, + }, + }, + }, + }, + }, + }, + // 33 { string(field.ErrorTypeRequired) + "output.imageLabels[0].name", buildapi.CommonSpec{ @@ -1876,7 +1899,7 @@ func TestValidateCommonSpec(t *testing.T) { }, }, }, - // 33 + // 34 { string(field.ErrorTypeInvalid) + "output.imageLabels[0].name", buildapi.CommonSpec{ @@ -1898,7 +1921,7 @@ func TestValidateCommonSpec(t *testing.T) { }, }, }, - // 34 + // 35 // duplicate labels { string(field.ErrorTypeInvalid) + "output.imageLabels[1].name", @@ -1925,7 +1948,7 @@ func TestValidateCommonSpec(t *testing.T) { }, }, }, - // 35 + // 36 // nonconsecutive duplicate labels { string(field.ErrorTypeInvalid) + "output.imageLabels[3].name", @@ -1964,7 +1987,7 @@ func TestValidateCommonSpec(t *testing.T) { }, }, }, - // 36 + // 37 // invalid nodeselector { string(field.ErrorTypeInvalid) + "nodeSelector[A@B!]", @@ -2190,7 +2213,7 @@ func TestValidateCommonSpecSuccess(t *testing.T) { }, }, }, - // 6 + // 8 { CommonSpec: buildapi.CommonSpec{ Source: buildapi.BuildSource{ @@ -2206,7 +2229,7 @@ func TestValidateCommonSpecSuccess(t *testing.T) { }, }, }, - // 7 + // 9 { CommonSpec: buildapi.CommonSpec{ Source: buildapi.BuildSource{ @@ -2222,7 +2245,7 @@ func TestValidateCommonSpecSuccess(t *testing.T) { }, }, }, - // 8 + // 10 { CommonSpec: buildapi.CommonSpec{ Source: buildapi.BuildSource{ @@ -2242,7 +2265,7 @@ func TestValidateCommonSpecSuccess(t *testing.T) { }, }, }, - // 9 + // 11 { CommonSpec: buildapi.CommonSpec{ Source: buildapi.BuildSource{ @@ -2263,7 +2286,7 @@ func TestValidateCommonSpecSuccess(t *testing.T) { }, }, }, - // 10 + // 12 { CommonSpec: buildapi.CommonSpec{ Source: buildapi.BuildSource{ @@ -2277,6 +2300,27 @@ func TestValidateCommonSpecSuccess(t *testing.T) { NodeSelector: map[string]string{"A": "B", "C": "D"}, }, }, + // 13 + { + buildapi.CommonSpec{ + Source: buildapi.BuildSource{ + Git: &buildapi.GitBuildSource{ + URI: "http://github.com/my/repository", + }, + }, + Strategy: buildapi.BuildStrategy{ + JenkinsPipelineStrategy: &buildapi.JenkinsPipelineBuildStrategy{ + JenkinsfilePath: "myJenkinsfile", + Env: []kapi.EnvVar{ + { + Name: "key", + Value: "value", + }, + }, + }, + }, + }, + }, } for count, config := range testCases { errors := validateCommonSpec(&config.CommonSpec, nil) diff --git a/pkg/build/api/zz_generated.deepcopy.go b/pkg/build/api/zz_generated.deepcopy.go index cf7f213513e8..1467cf2472fe 100644 --- a/pkg/build/api/zz_generated.deepcopy.go +++ b/pkg/build/api/zz_generated.deepcopy.go @@ -563,7 +563,9 @@ func DeepCopy_api_BuildStrategy(in interface{}, out interface{}, c *conversion.C if in.JenkinsPipelineStrategy != nil { in, out := &in.JenkinsPipelineStrategy, &out.JenkinsPipelineStrategy *out = new(JenkinsPipelineBuildStrategy) - **out = **in + if err := DeepCopy_api_JenkinsPipelineBuildStrategy(*in, *out, c); err != nil { + return err + } } else { out.JenkinsPipelineStrategy = nil } @@ -970,6 +972,17 @@ func DeepCopy_api_JenkinsPipelineBuildStrategy(in interface{}, out interface{}, out := out.(*JenkinsPipelineBuildStrategy) out.JenkinsfilePath = in.JenkinsfilePath out.Jenkinsfile = in.Jenkinsfile + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]pkg_api.EnvVar, len(*in)) + for i := range *in { + if err := pkg_api.DeepCopy_api_EnvVar(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Env = nil + } return nil } } diff --git a/pkg/openapi/zz_generated.openapi.go b/pkg/openapi/zz_generated.openapi.go index a7b225e244c7..13983d04ec05 100644 --- a/pkg/openapi/zz_generated.openapi.go +++ b/pkg/openapi/zz_generated.openapi.go @@ -8214,7 +8214,7 @@ var OpenAPIDefinitions *common.OpenAPIDefinitions = &common.OpenAPIDefinitions{ }, "env": { SchemaProps: spec.SchemaProps{ - Description: "env contains additional environment variables you want to pass into a builder container", + Description: "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ @@ -10354,7 +10354,7 @@ var OpenAPIDefinitions *common.OpenAPIDefinitions = &common.OpenAPIDefinitions{ }, "env": { SchemaProps: spec.SchemaProps{ - Description: "env contains additional environment variables you want to pass into a builder container", + Description: "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ @@ -11408,7 +11408,7 @@ var OpenAPIDefinitions *common.OpenAPIDefinitions = &common.OpenAPIDefinitions{ }, "env": { SchemaProps: spec.SchemaProps{ - Description: "env contains additional environment variables you want to pass into a builder container", + Description: "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ @@ -12513,7 +12513,7 @@ var OpenAPIDefinitions *common.OpenAPIDefinitions = &common.OpenAPIDefinitions{ }, "env": { SchemaProps: spec.SchemaProps{ - Description: "env contains additional environment variables you want to pass into a builder container", + Description: "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ @@ -14483,10 +14483,24 @@ var OpenAPIDefinitions *common.OpenAPIDefinitions = &common.OpenAPIDefinitions{ Format: "", }, }, + "env": { + SchemaProps: spec.SchemaProps{ + Description: "env contains additional environment variables you want to pass into a build pipeline. ValueFrom is not supported.", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Ref: spec.MustCreateRef("#/definitions/v1.EnvVar"), + }, + }, + }, + }, + }, }, }, }, - Dependencies: []string{}, + Dependencies: []string{ + "v1.EnvVar"}, }, "v1.Job": { Schema: spec.Schema{ @@ -22905,7 +22919,7 @@ var OpenAPIDefinitions *common.OpenAPIDefinitions = &common.OpenAPIDefinitions{ }, "env": { SchemaProps: spec.SchemaProps{ - Description: "env contains additional environment variables you want to pass into a builder container", + Description: "env contains additional environment variables you want to pass into a builder container. ValueFrom is not supported.", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{