diff --git a/vendor.conf b/vendor.conf index e12c528b8..78d72c01d 100644 --- a/vendor.conf +++ b/vendor.conf @@ -59,13 +59,14 @@ golang.org/x/sync 450f422ab23cf9881c94e2db30cac0eb1b7cf80c golang.org/x/sys 314a259e304ff91bd6985da2a7149bbf91237993 https://github.com/golang/sys golang.org/x/text 19e51611da83d6be54ddafce4a4af510cb3e9ea4 golang.org/x/time f51c12702a4d776e4c1fa9b0fabab841babae631 +golang.org/x/crypto 49796115aa4b964c318aad4f3084fdb41e9aa067 google.golang.org/genproto d80a6e20e776b0b17a324d0ba1ab50a39c8e8944 google.golang.org/grpc v1.7.4 gopkg.in/inf.v0 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4 gopkg.in/yaml.v2 53feefa2559fb8dfa8d81baad31be332c97d6c77 -k8s.io/api a1d6dce6736a6c75929bb75111e89077e35a5856 -k8s.io/apimachinery 8259d997cf059cd83dc47e5f8074b7a7d7967c09 -k8s.io/apiserver 8e45eac9dff86447a5c2effe6a3d2cba70121ebf -k8s.io/client-go 33bd23f75b6de861994706a322b0afab824b2171 -k8s.io/kubernetes 05944b1d2ca7f60b09762a330425108f48f6b603 +k8s.io/api 5584376ceeffeb13a2e98b5e9f0e9dab37de4bab +k8s.io/apimachinery fcb9a12f7875d01f8390b28faedc37dcf2e713b9 +k8s.io/apiserver 837069aa36757a586e4a8165f1ff5ca06170aa4a +k8s.io/client-go 484f27892430b961df38fe6715cc396409207d9f +k8s.io/kubernetes v1.10.0-rc.1 k8s.io/utils 258e2a2fa64568210fbd6267cf1d8fd87c3cb86e diff --git a/vendor/golang.org/x/crypto/LICENSE b/vendor/golang.org/x/crypto/LICENSE new file mode 100644 index 000000000..6a66aea5e --- /dev/null +++ b/vendor/golang.org/x/crypto/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/crypto/PATENTS b/vendor/golang.org/x/crypto/PATENTS new file mode 100644 index 000000000..733099041 --- /dev/null +++ b/vendor/golang.org/x/crypto/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/crypto/README.md b/vendor/golang.org/x/crypto/README.md new file mode 100644 index 000000000..c9d6fecd1 --- /dev/null +++ b/vendor/golang.org/x/crypto/README.md @@ -0,0 +1,21 @@ +# Go Cryptography + +This repository holds supplementary Go cryptography libraries. + +## Download/Install + +The easiest way to install is to run `go get -u golang.org/x/crypto/...`. You +can also manually git clone the repository to `$GOPATH/src/golang.org/x/crypto`. + +## Report Issues / Send Patches + +This repository uses Gerrit for code changes. To learn how to submit changes to +this repository, see https://golang.org/doc/contribute.html. + +The main issue tracker for the crypto repository is located at +https://github.com/golang/go/issues. Prefix your issue with "x/crypto:" in the +subject line, so it is easy to find. + +Note that contributions to the cryptography package receive additional scrutiny +due to their sensitive nature. Patches may take longer than normal to receive +feedback. diff --git a/vendor/golang.org/x/crypto/curve25519/const_amd64.h b/vendor/golang.org/x/crypto/curve25519/const_amd64.h new file mode 100644 index 000000000..b3f74162f --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/const_amd64.h @@ -0,0 +1,8 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html + +#define REDMASK51 0x0007FFFFFFFFFFFF diff --git a/vendor/golang.org/x/crypto/curve25519/const_amd64.s b/vendor/golang.org/x/crypto/curve25519/const_amd64.s new file mode 100644 index 000000000..ee7b4bd5f --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/const_amd64.s @@ -0,0 +1,20 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html + +// +build amd64,!gccgo,!appengine + +// These constants cannot be encoded in non-MOVQ immediates. +// We access them directly from memory instead. + +DATA ·_121666_213(SB)/8, $996687872 +GLOBL ·_121666_213(SB), 8, $8 + +DATA ·_2P0(SB)/8, $0xFFFFFFFFFFFDA +GLOBL ·_2P0(SB), 8, $8 + +DATA ·_2P1234(SB)/8, $0xFFFFFFFFFFFFE +GLOBL ·_2P1234(SB), 8, $8 diff --git a/vendor/golang.org/x/crypto/curve25519/cswap_amd64.s b/vendor/golang.org/x/crypto/curve25519/cswap_amd64.s new file mode 100644 index 000000000..cd793a5b5 --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/cswap_amd64.s @@ -0,0 +1,65 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!gccgo,!appengine + +// func cswap(inout *[4][5]uint64, v uint64) +TEXT ·cswap(SB),7,$0 + MOVQ inout+0(FP),DI + MOVQ v+8(FP),SI + + SUBQ $1, SI + NOTQ SI + MOVQ SI, X15 + PSHUFD $0x44, X15, X15 + + MOVOU 0(DI), X0 + MOVOU 16(DI), X2 + MOVOU 32(DI), X4 + MOVOU 48(DI), X6 + MOVOU 64(DI), X8 + MOVOU 80(DI), X1 + MOVOU 96(DI), X3 + MOVOU 112(DI), X5 + MOVOU 128(DI), X7 + MOVOU 144(DI), X9 + + MOVO X1, X10 + MOVO X3, X11 + MOVO X5, X12 + MOVO X7, X13 + MOVO X9, X14 + + PXOR X0, X10 + PXOR X2, X11 + PXOR X4, X12 + PXOR X6, X13 + PXOR X8, X14 + PAND X15, X10 + PAND X15, X11 + PAND X15, X12 + PAND X15, X13 + PAND X15, X14 + PXOR X10, X0 + PXOR X10, X1 + PXOR X11, X2 + PXOR X11, X3 + PXOR X12, X4 + PXOR X12, X5 + PXOR X13, X6 + PXOR X13, X7 + PXOR X14, X8 + PXOR X14, X9 + + MOVOU X0, 0(DI) + MOVOU X2, 16(DI) + MOVOU X4, 32(DI) + MOVOU X6, 48(DI) + MOVOU X8, 64(DI) + MOVOU X1, 80(DI) + MOVOU X3, 96(DI) + MOVOU X5, 112(DI) + MOVOU X7, 128(DI) + MOVOU X9, 144(DI) + RET diff --git a/vendor/golang.org/x/crypto/curve25519/curve25519.go b/vendor/golang.org/x/crypto/curve25519/curve25519.go new file mode 100644 index 000000000..cb8fbc57b --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/curve25519.go @@ -0,0 +1,834 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// We have an implementation in amd64 assembly so this code is only run on +// non-amd64 platforms. The amd64 assembly does not support gccgo. +// +build !amd64 gccgo appengine + +package curve25519 + +import ( + "encoding/binary" +) + +// This code is a port of the public domain, "ref10" implementation of +// curve25519 from SUPERCOP 20130419 by D. J. Bernstein. + +// fieldElement represents an element of the field GF(2^255 - 19). An element +// t, entries t[0]...t[9], represents the integer t[0]+2^26 t[1]+2^51 t[2]+2^77 +// t[3]+2^102 t[4]+...+2^230 t[9]. Bounds on each t[i] vary depending on +// context. +type fieldElement [10]int32 + +func feZero(fe *fieldElement) { + for i := range fe { + fe[i] = 0 + } +} + +func feOne(fe *fieldElement) { + feZero(fe) + fe[0] = 1 +} + +func feAdd(dst, a, b *fieldElement) { + for i := range dst { + dst[i] = a[i] + b[i] + } +} + +func feSub(dst, a, b *fieldElement) { + for i := range dst { + dst[i] = a[i] - b[i] + } +} + +func feCopy(dst, src *fieldElement) { + for i := range dst { + dst[i] = src[i] + } +} + +// feCSwap replaces (f,g) with (g,f) if b == 1; replaces (f,g) with (f,g) if b == 0. +// +// Preconditions: b in {0,1}. +func feCSwap(f, g *fieldElement, b int32) { + b = -b + for i := range f { + t := b & (f[i] ^ g[i]) + f[i] ^= t + g[i] ^= t + } +} + +// load3 reads a 24-bit, little-endian value from in. +func load3(in []byte) int64 { + var r int64 + r = int64(in[0]) + r |= int64(in[1]) << 8 + r |= int64(in[2]) << 16 + return r +} + +// load4 reads a 32-bit, little-endian value from in. +func load4(in []byte) int64 { + return int64(binary.LittleEndian.Uint32(in)) +} + +func feFromBytes(dst *fieldElement, src *[32]byte) { + h0 := load4(src[:]) + h1 := load3(src[4:]) << 6 + h2 := load3(src[7:]) << 5 + h3 := load3(src[10:]) << 3 + h4 := load3(src[13:]) << 2 + h5 := load4(src[16:]) + h6 := load3(src[20:]) << 7 + h7 := load3(src[23:]) << 5 + h8 := load3(src[26:]) << 4 + h9 := load3(src[29:]) << 2 + + var carry [10]int64 + carry[9] = (h9 + 1<<24) >> 25 + h0 += carry[9] * 19 + h9 -= carry[9] << 25 + carry[1] = (h1 + 1<<24) >> 25 + h2 += carry[1] + h1 -= carry[1] << 25 + carry[3] = (h3 + 1<<24) >> 25 + h4 += carry[3] + h3 -= carry[3] << 25 + carry[5] = (h5 + 1<<24) >> 25 + h6 += carry[5] + h5 -= carry[5] << 25 + carry[7] = (h7 + 1<<24) >> 25 + h8 += carry[7] + h7 -= carry[7] << 25 + + carry[0] = (h0 + 1<<25) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + carry[2] = (h2 + 1<<25) >> 26 + h3 += carry[2] + h2 -= carry[2] << 26 + carry[4] = (h4 + 1<<25) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + carry[6] = (h6 + 1<<25) >> 26 + h7 += carry[6] + h6 -= carry[6] << 26 + carry[8] = (h8 + 1<<25) >> 26 + h9 += carry[8] + h8 -= carry[8] << 26 + + dst[0] = int32(h0) + dst[1] = int32(h1) + dst[2] = int32(h2) + dst[3] = int32(h3) + dst[4] = int32(h4) + dst[5] = int32(h5) + dst[6] = int32(h6) + dst[7] = int32(h7) + dst[8] = int32(h8) + dst[9] = int32(h9) +} + +// feToBytes marshals h to s. +// Preconditions: +// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +// +// Write p=2^255-19; q=floor(h/p). +// Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))). +// +// Proof: +// Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4. +// Also have |h-2^230 h9|<2^230 so |19 2^(-255)(h-2^230 h9)|<1/4. +// +// Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9). +// Then 0> 25 + q = (h[0] + q) >> 26 + q = (h[1] + q) >> 25 + q = (h[2] + q) >> 26 + q = (h[3] + q) >> 25 + q = (h[4] + q) >> 26 + q = (h[5] + q) >> 25 + q = (h[6] + q) >> 26 + q = (h[7] + q) >> 25 + q = (h[8] + q) >> 26 + q = (h[9] + q) >> 25 + + // Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. + h[0] += 19 * q + // Goal: Output h-2^255 q, which is between 0 and 2^255-20. + + carry[0] = h[0] >> 26 + h[1] += carry[0] + h[0] -= carry[0] << 26 + carry[1] = h[1] >> 25 + h[2] += carry[1] + h[1] -= carry[1] << 25 + carry[2] = h[2] >> 26 + h[3] += carry[2] + h[2] -= carry[2] << 26 + carry[3] = h[3] >> 25 + h[4] += carry[3] + h[3] -= carry[3] << 25 + carry[4] = h[4] >> 26 + h[5] += carry[4] + h[4] -= carry[4] << 26 + carry[5] = h[5] >> 25 + h[6] += carry[5] + h[5] -= carry[5] << 25 + carry[6] = h[6] >> 26 + h[7] += carry[6] + h[6] -= carry[6] << 26 + carry[7] = h[7] >> 25 + h[8] += carry[7] + h[7] -= carry[7] << 25 + carry[8] = h[8] >> 26 + h[9] += carry[8] + h[8] -= carry[8] << 26 + carry[9] = h[9] >> 25 + h[9] -= carry[9] << 25 + // h10 = carry9 + + // Goal: Output h[0]+...+2^255 h10-2^255 q, which is between 0 and 2^255-20. + // Have h[0]+...+2^230 h[9] between 0 and 2^255-1; + // evidently 2^255 h10-2^255 q = 0. + // Goal: Output h[0]+...+2^230 h[9]. + + s[0] = byte(h[0] >> 0) + s[1] = byte(h[0] >> 8) + s[2] = byte(h[0] >> 16) + s[3] = byte((h[0] >> 24) | (h[1] << 2)) + s[4] = byte(h[1] >> 6) + s[5] = byte(h[1] >> 14) + s[6] = byte((h[1] >> 22) | (h[2] << 3)) + s[7] = byte(h[2] >> 5) + s[8] = byte(h[2] >> 13) + s[9] = byte((h[2] >> 21) | (h[3] << 5)) + s[10] = byte(h[3] >> 3) + s[11] = byte(h[3] >> 11) + s[12] = byte((h[3] >> 19) | (h[4] << 6)) + s[13] = byte(h[4] >> 2) + s[14] = byte(h[4] >> 10) + s[15] = byte(h[4] >> 18) + s[16] = byte(h[5] >> 0) + s[17] = byte(h[5] >> 8) + s[18] = byte(h[5] >> 16) + s[19] = byte((h[5] >> 24) | (h[6] << 1)) + s[20] = byte(h[6] >> 7) + s[21] = byte(h[6] >> 15) + s[22] = byte((h[6] >> 23) | (h[7] << 3)) + s[23] = byte(h[7] >> 5) + s[24] = byte(h[7] >> 13) + s[25] = byte((h[7] >> 21) | (h[8] << 4)) + s[26] = byte(h[8] >> 4) + s[27] = byte(h[8] >> 12) + s[28] = byte((h[8] >> 20) | (h[9] << 6)) + s[29] = byte(h[9] >> 2) + s[30] = byte(h[9] >> 10) + s[31] = byte(h[9] >> 18) +} + +// feMul calculates h = f * g +// Can overlap h with f or g. +// +// Preconditions: +// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +// |g| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +// +// Postconditions: +// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +// +// Notes on implementation strategy: +// +// Using schoolbook multiplication. +// Karatsuba would save a little in some cost models. +// +// Most multiplications by 2 and 19 are 32-bit precomputations; +// cheaper than 64-bit postcomputations. +// +// There is one remaining multiplication by 19 in the carry chain; +// one *19 precomputation can be merged into this, +// but the resulting data flow is considerably less clean. +// +// There are 12 carries below. +// 10 of them are 2-way parallelizable and vectorizable. +// Can get away with 11 carries, but then data flow is much deeper. +// +// With tighter constraints on inputs can squeeze carries into int32. +func feMul(h, f, g *fieldElement) { + f0 := f[0] + f1 := f[1] + f2 := f[2] + f3 := f[3] + f4 := f[4] + f5 := f[5] + f6 := f[6] + f7 := f[7] + f8 := f[8] + f9 := f[9] + g0 := g[0] + g1 := g[1] + g2 := g[2] + g3 := g[3] + g4 := g[4] + g5 := g[5] + g6 := g[6] + g7 := g[7] + g8 := g[8] + g9 := g[9] + g1_19 := 19 * g1 // 1.4*2^29 + g2_19 := 19 * g2 // 1.4*2^30; still ok + g3_19 := 19 * g3 + g4_19 := 19 * g4 + g5_19 := 19 * g5 + g6_19 := 19 * g6 + g7_19 := 19 * g7 + g8_19 := 19 * g8 + g9_19 := 19 * g9 + f1_2 := 2 * f1 + f3_2 := 2 * f3 + f5_2 := 2 * f5 + f7_2 := 2 * f7 + f9_2 := 2 * f9 + f0g0 := int64(f0) * int64(g0) + f0g1 := int64(f0) * int64(g1) + f0g2 := int64(f0) * int64(g2) + f0g3 := int64(f0) * int64(g3) + f0g4 := int64(f0) * int64(g4) + f0g5 := int64(f0) * int64(g5) + f0g6 := int64(f0) * int64(g6) + f0g7 := int64(f0) * int64(g7) + f0g8 := int64(f0) * int64(g8) + f0g9 := int64(f0) * int64(g9) + f1g0 := int64(f1) * int64(g0) + f1g1_2 := int64(f1_2) * int64(g1) + f1g2 := int64(f1) * int64(g2) + f1g3_2 := int64(f1_2) * int64(g3) + f1g4 := int64(f1) * int64(g4) + f1g5_2 := int64(f1_2) * int64(g5) + f1g6 := int64(f1) * int64(g6) + f1g7_2 := int64(f1_2) * int64(g7) + f1g8 := int64(f1) * int64(g8) + f1g9_38 := int64(f1_2) * int64(g9_19) + f2g0 := int64(f2) * int64(g0) + f2g1 := int64(f2) * int64(g1) + f2g2 := int64(f2) * int64(g2) + f2g3 := int64(f2) * int64(g3) + f2g4 := int64(f2) * int64(g4) + f2g5 := int64(f2) * int64(g5) + f2g6 := int64(f2) * int64(g6) + f2g7 := int64(f2) * int64(g7) + f2g8_19 := int64(f2) * int64(g8_19) + f2g9_19 := int64(f2) * int64(g9_19) + f3g0 := int64(f3) * int64(g0) + f3g1_2 := int64(f3_2) * int64(g1) + f3g2 := int64(f3) * int64(g2) + f3g3_2 := int64(f3_2) * int64(g3) + f3g4 := int64(f3) * int64(g4) + f3g5_2 := int64(f3_2) * int64(g5) + f3g6 := int64(f3) * int64(g6) + f3g7_38 := int64(f3_2) * int64(g7_19) + f3g8_19 := int64(f3) * int64(g8_19) + f3g9_38 := int64(f3_2) * int64(g9_19) + f4g0 := int64(f4) * int64(g0) + f4g1 := int64(f4) * int64(g1) + f4g2 := int64(f4) * int64(g2) + f4g3 := int64(f4) * int64(g3) + f4g4 := int64(f4) * int64(g4) + f4g5 := int64(f4) * int64(g5) + f4g6_19 := int64(f4) * int64(g6_19) + f4g7_19 := int64(f4) * int64(g7_19) + f4g8_19 := int64(f4) * int64(g8_19) + f4g9_19 := int64(f4) * int64(g9_19) + f5g0 := int64(f5) * int64(g0) + f5g1_2 := int64(f5_2) * int64(g1) + f5g2 := int64(f5) * int64(g2) + f5g3_2 := int64(f5_2) * int64(g3) + f5g4 := int64(f5) * int64(g4) + f5g5_38 := int64(f5_2) * int64(g5_19) + f5g6_19 := int64(f5) * int64(g6_19) + f5g7_38 := int64(f5_2) * int64(g7_19) + f5g8_19 := int64(f5) * int64(g8_19) + f5g9_38 := int64(f5_2) * int64(g9_19) + f6g0 := int64(f6) * int64(g0) + f6g1 := int64(f6) * int64(g1) + f6g2 := int64(f6) * int64(g2) + f6g3 := int64(f6) * int64(g3) + f6g4_19 := int64(f6) * int64(g4_19) + f6g5_19 := int64(f6) * int64(g5_19) + f6g6_19 := int64(f6) * int64(g6_19) + f6g7_19 := int64(f6) * int64(g7_19) + f6g8_19 := int64(f6) * int64(g8_19) + f6g9_19 := int64(f6) * int64(g9_19) + f7g0 := int64(f7) * int64(g0) + f7g1_2 := int64(f7_2) * int64(g1) + f7g2 := int64(f7) * int64(g2) + f7g3_38 := int64(f7_2) * int64(g3_19) + f7g4_19 := int64(f7) * int64(g4_19) + f7g5_38 := int64(f7_2) * int64(g5_19) + f7g6_19 := int64(f7) * int64(g6_19) + f7g7_38 := int64(f7_2) * int64(g7_19) + f7g8_19 := int64(f7) * int64(g8_19) + f7g9_38 := int64(f7_2) * int64(g9_19) + f8g0 := int64(f8) * int64(g0) + f8g1 := int64(f8) * int64(g1) + f8g2_19 := int64(f8) * int64(g2_19) + f8g3_19 := int64(f8) * int64(g3_19) + f8g4_19 := int64(f8) * int64(g4_19) + f8g5_19 := int64(f8) * int64(g5_19) + f8g6_19 := int64(f8) * int64(g6_19) + f8g7_19 := int64(f8) * int64(g7_19) + f8g8_19 := int64(f8) * int64(g8_19) + f8g9_19 := int64(f8) * int64(g9_19) + f9g0 := int64(f9) * int64(g0) + f9g1_38 := int64(f9_2) * int64(g1_19) + f9g2_19 := int64(f9) * int64(g2_19) + f9g3_38 := int64(f9_2) * int64(g3_19) + f9g4_19 := int64(f9) * int64(g4_19) + f9g5_38 := int64(f9_2) * int64(g5_19) + f9g6_19 := int64(f9) * int64(g6_19) + f9g7_38 := int64(f9_2) * int64(g7_19) + f9g8_19 := int64(f9) * int64(g8_19) + f9g9_38 := int64(f9_2) * int64(g9_19) + h0 := f0g0 + f1g9_38 + f2g8_19 + f3g7_38 + f4g6_19 + f5g5_38 + f6g4_19 + f7g3_38 + f8g2_19 + f9g1_38 + h1 := f0g1 + f1g0 + f2g9_19 + f3g8_19 + f4g7_19 + f5g6_19 + f6g5_19 + f7g4_19 + f8g3_19 + f9g2_19 + h2 := f0g2 + f1g1_2 + f2g0 + f3g9_38 + f4g8_19 + f5g7_38 + f6g6_19 + f7g5_38 + f8g4_19 + f9g3_38 + h3 := f0g3 + f1g2 + f2g1 + f3g0 + f4g9_19 + f5g8_19 + f6g7_19 + f7g6_19 + f8g5_19 + f9g4_19 + h4 := f0g4 + f1g3_2 + f2g2 + f3g1_2 + f4g0 + f5g9_38 + f6g8_19 + f7g7_38 + f8g6_19 + f9g5_38 + h5 := f0g5 + f1g4 + f2g3 + f3g2 + f4g1 + f5g0 + f6g9_19 + f7g8_19 + f8g7_19 + f9g6_19 + h6 := f0g6 + f1g5_2 + f2g4 + f3g3_2 + f4g2 + f5g1_2 + f6g0 + f7g9_38 + f8g8_19 + f9g7_38 + h7 := f0g7 + f1g6 + f2g5 + f3g4 + f4g3 + f5g2 + f6g1 + f7g0 + f8g9_19 + f9g8_19 + h8 := f0g8 + f1g7_2 + f2g6 + f3g5_2 + f4g4 + f5g3_2 + f6g2 + f7g1_2 + f8g0 + f9g9_38 + h9 := f0g9 + f1g8 + f2g7 + f3g6 + f4g5 + f5g4 + f6g3 + f7g2 + f8g1 + f9g0 + var carry [10]int64 + + // |h0| <= (1.1*1.1*2^52*(1+19+19+19+19)+1.1*1.1*2^50*(38+38+38+38+38)) + // i.e. |h0| <= 1.2*2^59; narrower ranges for h2, h4, h6, h8 + // |h1| <= (1.1*1.1*2^51*(1+1+19+19+19+19+19+19+19+19)) + // i.e. |h1| <= 1.5*2^58; narrower ranges for h3, h5, h7, h9 + + carry[0] = (h0 + (1 << 25)) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + carry[4] = (h4 + (1 << 25)) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + // |h0| <= 2^25 + // |h4| <= 2^25 + // |h1| <= 1.51*2^58 + // |h5| <= 1.51*2^58 + + carry[1] = (h1 + (1 << 24)) >> 25 + h2 += carry[1] + h1 -= carry[1] << 25 + carry[5] = (h5 + (1 << 24)) >> 25 + h6 += carry[5] + h5 -= carry[5] << 25 + // |h1| <= 2^24; from now on fits into int32 + // |h5| <= 2^24; from now on fits into int32 + // |h2| <= 1.21*2^59 + // |h6| <= 1.21*2^59 + + carry[2] = (h2 + (1 << 25)) >> 26 + h3 += carry[2] + h2 -= carry[2] << 26 + carry[6] = (h6 + (1 << 25)) >> 26 + h7 += carry[6] + h6 -= carry[6] << 26 + // |h2| <= 2^25; from now on fits into int32 unchanged + // |h6| <= 2^25; from now on fits into int32 unchanged + // |h3| <= 1.51*2^58 + // |h7| <= 1.51*2^58 + + carry[3] = (h3 + (1 << 24)) >> 25 + h4 += carry[3] + h3 -= carry[3] << 25 + carry[7] = (h7 + (1 << 24)) >> 25 + h8 += carry[7] + h7 -= carry[7] << 25 + // |h3| <= 2^24; from now on fits into int32 unchanged + // |h7| <= 2^24; from now on fits into int32 unchanged + // |h4| <= 1.52*2^33 + // |h8| <= 1.52*2^33 + + carry[4] = (h4 + (1 << 25)) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + carry[8] = (h8 + (1 << 25)) >> 26 + h9 += carry[8] + h8 -= carry[8] << 26 + // |h4| <= 2^25; from now on fits into int32 unchanged + // |h8| <= 2^25; from now on fits into int32 unchanged + // |h5| <= 1.01*2^24 + // |h9| <= 1.51*2^58 + + carry[9] = (h9 + (1 << 24)) >> 25 + h0 += carry[9] * 19 + h9 -= carry[9] << 25 + // |h9| <= 2^24; from now on fits into int32 unchanged + // |h0| <= 1.8*2^37 + + carry[0] = (h0 + (1 << 25)) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + // |h0| <= 2^25; from now on fits into int32 unchanged + // |h1| <= 1.01*2^24 + + h[0] = int32(h0) + h[1] = int32(h1) + h[2] = int32(h2) + h[3] = int32(h3) + h[4] = int32(h4) + h[5] = int32(h5) + h[6] = int32(h6) + h[7] = int32(h7) + h[8] = int32(h8) + h[9] = int32(h9) +} + +// feSquare calculates h = f*f. Can overlap h with f. +// +// Preconditions: +// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +// +// Postconditions: +// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +func feSquare(h, f *fieldElement) { + f0 := f[0] + f1 := f[1] + f2 := f[2] + f3 := f[3] + f4 := f[4] + f5 := f[5] + f6 := f[6] + f7 := f[7] + f8 := f[8] + f9 := f[9] + f0_2 := 2 * f0 + f1_2 := 2 * f1 + f2_2 := 2 * f2 + f3_2 := 2 * f3 + f4_2 := 2 * f4 + f5_2 := 2 * f5 + f6_2 := 2 * f6 + f7_2 := 2 * f7 + f5_38 := 38 * f5 // 1.31*2^30 + f6_19 := 19 * f6 // 1.31*2^30 + f7_38 := 38 * f7 // 1.31*2^30 + f8_19 := 19 * f8 // 1.31*2^30 + f9_38 := 38 * f9 // 1.31*2^30 + f0f0 := int64(f0) * int64(f0) + f0f1_2 := int64(f0_2) * int64(f1) + f0f2_2 := int64(f0_2) * int64(f2) + f0f3_2 := int64(f0_2) * int64(f3) + f0f4_2 := int64(f0_2) * int64(f4) + f0f5_2 := int64(f0_2) * int64(f5) + f0f6_2 := int64(f0_2) * int64(f6) + f0f7_2 := int64(f0_2) * int64(f7) + f0f8_2 := int64(f0_2) * int64(f8) + f0f9_2 := int64(f0_2) * int64(f9) + f1f1_2 := int64(f1_2) * int64(f1) + f1f2_2 := int64(f1_2) * int64(f2) + f1f3_4 := int64(f1_2) * int64(f3_2) + f1f4_2 := int64(f1_2) * int64(f4) + f1f5_4 := int64(f1_2) * int64(f5_2) + f1f6_2 := int64(f1_2) * int64(f6) + f1f7_4 := int64(f1_2) * int64(f7_2) + f1f8_2 := int64(f1_2) * int64(f8) + f1f9_76 := int64(f1_2) * int64(f9_38) + f2f2 := int64(f2) * int64(f2) + f2f3_2 := int64(f2_2) * int64(f3) + f2f4_2 := int64(f2_2) * int64(f4) + f2f5_2 := int64(f2_2) * int64(f5) + f2f6_2 := int64(f2_2) * int64(f6) + f2f7_2 := int64(f2_2) * int64(f7) + f2f8_38 := int64(f2_2) * int64(f8_19) + f2f9_38 := int64(f2) * int64(f9_38) + f3f3_2 := int64(f3_2) * int64(f3) + f3f4_2 := int64(f3_2) * int64(f4) + f3f5_4 := int64(f3_2) * int64(f5_2) + f3f6_2 := int64(f3_2) * int64(f6) + f3f7_76 := int64(f3_2) * int64(f7_38) + f3f8_38 := int64(f3_2) * int64(f8_19) + f3f9_76 := int64(f3_2) * int64(f9_38) + f4f4 := int64(f4) * int64(f4) + f4f5_2 := int64(f4_2) * int64(f5) + f4f6_38 := int64(f4_2) * int64(f6_19) + f4f7_38 := int64(f4) * int64(f7_38) + f4f8_38 := int64(f4_2) * int64(f8_19) + f4f9_38 := int64(f4) * int64(f9_38) + f5f5_38 := int64(f5) * int64(f5_38) + f5f6_38 := int64(f5_2) * int64(f6_19) + f5f7_76 := int64(f5_2) * int64(f7_38) + f5f8_38 := int64(f5_2) * int64(f8_19) + f5f9_76 := int64(f5_2) * int64(f9_38) + f6f6_19 := int64(f6) * int64(f6_19) + f6f7_38 := int64(f6) * int64(f7_38) + f6f8_38 := int64(f6_2) * int64(f8_19) + f6f9_38 := int64(f6) * int64(f9_38) + f7f7_38 := int64(f7) * int64(f7_38) + f7f8_38 := int64(f7_2) * int64(f8_19) + f7f9_76 := int64(f7_2) * int64(f9_38) + f8f8_19 := int64(f8) * int64(f8_19) + f8f9_38 := int64(f8) * int64(f9_38) + f9f9_38 := int64(f9) * int64(f9_38) + h0 := f0f0 + f1f9_76 + f2f8_38 + f3f7_76 + f4f6_38 + f5f5_38 + h1 := f0f1_2 + f2f9_38 + f3f8_38 + f4f7_38 + f5f6_38 + h2 := f0f2_2 + f1f1_2 + f3f9_76 + f4f8_38 + f5f7_76 + f6f6_19 + h3 := f0f3_2 + f1f2_2 + f4f9_38 + f5f8_38 + f6f7_38 + h4 := f0f4_2 + f1f3_4 + f2f2 + f5f9_76 + f6f8_38 + f7f7_38 + h5 := f0f5_2 + f1f4_2 + f2f3_2 + f6f9_38 + f7f8_38 + h6 := f0f6_2 + f1f5_4 + f2f4_2 + f3f3_2 + f7f9_76 + f8f8_19 + h7 := f0f7_2 + f1f6_2 + f2f5_2 + f3f4_2 + f8f9_38 + h8 := f0f8_2 + f1f7_4 + f2f6_2 + f3f5_4 + f4f4 + f9f9_38 + h9 := f0f9_2 + f1f8_2 + f2f7_2 + f3f6_2 + f4f5_2 + var carry [10]int64 + + carry[0] = (h0 + (1 << 25)) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + carry[4] = (h4 + (1 << 25)) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + + carry[1] = (h1 + (1 << 24)) >> 25 + h2 += carry[1] + h1 -= carry[1] << 25 + carry[5] = (h5 + (1 << 24)) >> 25 + h6 += carry[5] + h5 -= carry[5] << 25 + + carry[2] = (h2 + (1 << 25)) >> 26 + h3 += carry[2] + h2 -= carry[2] << 26 + carry[6] = (h6 + (1 << 25)) >> 26 + h7 += carry[6] + h6 -= carry[6] << 26 + + carry[3] = (h3 + (1 << 24)) >> 25 + h4 += carry[3] + h3 -= carry[3] << 25 + carry[7] = (h7 + (1 << 24)) >> 25 + h8 += carry[7] + h7 -= carry[7] << 25 + + carry[4] = (h4 + (1 << 25)) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + carry[8] = (h8 + (1 << 25)) >> 26 + h9 += carry[8] + h8 -= carry[8] << 26 + + carry[9] = (h9 + (1 << 24)) >> 25 + h0 += carry[9] * 19 + h9 -= carry[9] << 25 + + carry[0] = (h0 + (1 << 25)) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + + h[0] = int32(h0) + h[1] = int32(h1) + h[2] = int32(h2) + h[3] = int32(h3) + h[4] = int32(h4) + h[5] = int32(h5) + h[6] = int32(h6) + h[7] = int32(h7) + h[8] = int32(h8) + h[9] = int32(h9) +} + +// feMul121666 calculates h = f * 121666. Can overlap h with f. +// +// Preconditions: +// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +// +// Postconditions: +// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +func feMul121666(h, f *fieldElement) { + h0 := int64(f[0]) * 121666 + h1 := int64(f[1]) * 121666 + h2 := int64(f[2]) * 121666 + h3 := int64(f[3]) * 121666 + h4 := int64(f[4]) * 121666 + h5 := int64(f[5]) * 121666 + h6 := int64(f[6]) * 121666 + h7 := int64(f[7]) * 121666 + h8 := int64(f[8]) * 121666 + h9 := int64(f[9]) * 121666 + var carry [10]int64 + + carry[9] = (h9 + (1 << 24)) >> 25 + h0 += carry[9] * 19 + h9 -= carry[9] << 25 + carry[1] = (h1 + (1 << 24)) >> 25 + h2 += carry[1] + h1 -= carry[1] << 25 + carry[3] = (h3 + (1 << 24)) >> 25 + h4 += carry[3] + h3 -= carry[3] << 25 + carry[5] = (h5 + (1 << 24)) >> 25 + h6 += carry[5] + h5 -= carry[5] << 25 + carry[7] = (h7 + (1 << 24)) >> 25 + h8 += carry[7] + h7 -= carry[7] << 25 + + carry[0] = (h0 + (1 << 25)) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + carry[2] = (h2 + (1 << 25)) >> 26 + h3 += carry[2] + h2 -= carry[2] << 26 + carry[4] = (h4 + (1 << 25)) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + carry[6] = (h6 + (1 << 25)) >> 26 + h7 += carry[6] + h6 -= carry[6] << 26 + carry[8] = (h8 + (1 << 25)) >> 26 + h9 += carry[8] + h8 -= carry[8] << 26 + + h[0] = int32(h0) + h[1] = int32(h1) + h[2] = int32(h2) + h[3] = int32(h3) + h[4] = int32(h4) + h[5] = int32(h5) + h[6] = int32(h6) + h[7] = int32(h7) + h[8] = int32(h8) + h[9] = int32(h9) +} + +// feInvert sets out = z^-1. +func feInvert(out, z *fieldElement) { + var t0, t1, t2, t3 fieldElement + var i int + + feSquare(&t0, z) + for i = 1; i < 1; i++ { + feSquare(&t0, &t0) + } + feSquare(&t1, &t0) + for i = 1; i < 2; i++ { + feSquare(&t1, &t1) + } + feMul(&t1, z, &t1) + feMul(&t0, &t0, &t1) + feSquare(&t2, &t0) + for i = 1; i < 1; i++ { + feSquare(&t2, &t2) + } + feMul(&t1, &t1, &t2) + feSquare(&t2, &t1) + for i = 1; i < 5; i++ { + feSquare(&t2, &t2) + } + feMul(&t1, &t2, &t1) + feSquare(&t2, &t1) + for i = 1; i < 10; i++ { + feSquare(&t2, &t2) + } + feMul(&t2, &t2, &t1) + feSquare(&t3, &t2) + for i = 1; i < 20; i++ { + feSquare(&t3, &t3) + } + feMul(&t2, &t3, &t2) + feSquare(&t2, &t2) + for i = 1; i < 10; i++ { + feSquare(&t2, &t2) + } + feMul(&t1, &t2, &t1) + feSquare(&t2, &t1) + for i = 1; i < 50; i++ { + feSquare(&t2, &t2) + } + feMul(&t2, &t2, &t1) + feSquare(&t3, &t2) + for i = 1; i < 100; i++ { + feSquare(&t3, &t3) + } + feMul(&t2, &t3, &t2) + feSquare(&t2, &t2) + for i = 1; i < 50; i++ { + feSquare(&t2, &t2) + } + feMul(&t1, &t2, &t1) + feSquare(&t1, &t1) + for i = 1; i < 5; i++ { + feSquare(&t1, &t1) + } + feMul(out, &t1, &t0) +} + +func scalarMult(out, in, base *[32]byte) { + var e [32]byte + + copy(e[:], in[:]) + e[0] &= 248 + e[31] &= 127 + e[31] |= 64 + + var x1, x2, z2, x3, z3, tmp0, tmp1 fieldElement + feFromBytes(&x1, base) + feOne(&x2) + feCopy(&x3, &x1) + feOne(&z3) + + swap := int32(0) + for pos := 254; pos >= 0; pos-- { + b := e[pos/8] >> uint(pos&7) + b &= 1 + swap ^= int32(b) + feCSwap(&x2, &x3, swap) + feCSwap(&z2, &z3, swap) + swap = int32(b) + + feSub(&tmp0, &x3, &z3) + feSub(&tmp1, &x2, &z2) + feAdd(&x2, &x2, &z2) + feAdd(&z2, &x3, &z3) + feMul(&z3, &tmp0, &x2) + feMul(&z2, &z2, &tmp1) + feSquare(&tmp0, &tmp1) + feSquare(&tmp1, &x2) + feAdd(&x3, &z3, &z2) + feSub(&z2, &z3, &z2) + feMul(&x2, &tmp1, &tmp0) + feSub(&tmp1, &tmp1, &tmp0) + feSquare(&z2, &z2) + feMul121666(&z3, &tmp1) + feSquare(&x3, &x3) + feAdd(&tmp0, &tmp0, &z3) + feMul(&z3, &x1, &z2) + feMul(&z2, &tmp1, &tmp0) + } + + feCSwap(&x2, &x3, swap) + feCSwap(&z2, &z3, swap) + + feInvert(&z2, &z2) + feMul(&x2, &x2, &z2) + feToBytes(out, &x2) +} diff --git a/vendor/golang.org/x/crypto/curve25519/doc.go b/vendor/golang.org/x/crypto/curve25519/doc.go new file mode 100644 index 000000000..da9b10d9c --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/doc.go @@ -0,0 +1,23 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package curve25519 provides an implementation of scalar multiplication on +// the elliptic curve known as curve25519. See https://cr.yp.to/ecdh.html +package curve25519 // import "golang.org/x/crypto/curve25519" + +// basePoint is the x coordinate of the generator of the curve. +var basePoint = [32]byte{9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + +// ScalarMult sets dst to the product in*base where dst and base are the x +// coordinates of group points and all values are in little-endian form. +func ScalarMult(dst, in, base *[32]byte) { + scalarMult(dst, in, base) +} + +// ScalarBaseMult sets dst to the product in*base where dst and base are the x +// coordinates of group points, base is the standard generator and all values +// are in little-endian form. +func ScalarBaseMult(dst, in *[32]byte) { + ScalarMult(dst, in, &basePoint) +} diff --git a/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s b/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s new file mode 100644 index 000000000..390816106 --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s @@ -0,0 +1,73 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html + +// +build amd64,!gccgo,!appengine + +#include "const_amd64.h" + +// func freeze(inout *[5]uint64) +TEXT ·freeze(SB),7,$0-8 + MOVQ inout+0(FP), DI + + MOVQ 0(DI),SI + MOVQ 8(DI),DX + MOVQ 16(DI),CX + MOVQ 24(DI),R8 + MOVQ 32(DI),R9 + MOVQ $REDMASK51,AX + MOVQ AX,R10 + SUBQ $18,R10 + MOVQ $3,R11 +REDUCELOOP: + MOVQ SI,R12 + SHRQ $51,R12 + ANDQ AX,SI + ADDQ R12,DX + MOVQ DX,R12 + SHRQ $51,R12 + ANDQ AX,DX + ADDQ R12,CX + MOVQ CX,R12 + SHRQ $51,R12 + ANDQ AX,CX + ADDQ R12,R8 + MOVQ R8,R12 + SHRQ $51,R12 + ANDQ AX,R8 + ADDQ R12,R9 + MOVQ R9,R12 + SHRQ $51,R12 + ANDQ AX,R9 + IMUL3Q $19,R12,R12 + ADDQ R12,SI + SUBQ $1,R11 + JA REDUCELOOP + MOVQ $1,R12 + CMPQ R10,SI + CMOVQLT R11,R12 + CMPQ AX,DX + CMOVQNE R11,R12 + CMPQ AX,CX + CMOVQNE R11,R12 + CMPQ AX,R8 + CMOVQNE R11,R12 + CMPQ AX,R9 + CMOVQNE R11,R12 + NEGQ R12 + ANDQ R12,AX + ANDQ R12,R10 + SUBQ R10,SI + SUBQ AX,DX + SUBQ AX,CX + SUBQ AX,R8 + SUBQ AX,R9 + MOVQ SI,0(DI) + MOVQ DX,8(DI) + MOVQ CX,16(DI) + MOVQ R8,24(DI) + MOVQ R9,32(DI) + RET diff --git a/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s b/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s new file mode 100644 index 000000000..9e9040b25 --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s @@ -0,0 +1,1377 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html + +// +build amd64,!gccgo,!appengine + +#include "const_amd64.h" + +// func ladderstep(inout *[5][5]uint64) +TEXT ·ladderstep(SB),0,$296-8 + MOVQ inout+0(FP),DI + + MOVQ 40(DI),SI + MOVQ 48(DI),DX + MOVQ 56(DI),CX + MOVQ 64(DI),R8 + MOVQ 72(DI),R9 + MOVQ SI,AX + MOVQ DX,R10 + MOVQ CX,R11 + MOVQ R8,R12 + MOVQ R9,R13 + ADDQ ·_2P0(SB),AX + ADDQ ·_2P1234(SB),R10 + ADDQ ·_2P1234(SB),R11 + ADDQ ·_2P1234(SB),R12 + ADDQ ·_2P1234(SB),R13 + ADDQ 80(DI),SI + ADDQ 88(DI),DX + ADDQ 96(DI),CX + ADDQ 104(DI),R8 + ADDQ 112(DI),R9 + SUBQ 80(DI),AX + SUBQ 88(DI),R10 + SUBQ 96(DI),R11 + SUBQ 104(DI),R12 + SUBQ 112(DI),R13 + MOVQ SI,0(SP) + MOVQ DX,8(SP) + MOVQ CX,16(SP) + MOVQ R8,24(SP) + MOVQ R9,32(SP) + MOVQ AX,40(SP) + MOVQ R10,48(SP) + MOVQ R11,56(SP) + MOVQ R12,64(SP) + MOVQ R13,72(SP) + MOVQ 40(SP),AX + MULQ 40(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 40(SP),AX + SHLQ $1,AX + MULQ 48(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 40(SP),AX + SHLQ $1,AX + MULQ 56(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 40(SP),AX + SHLQ $1,AX + MULQ 64(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 40(SP),AX + SHLQ $1,AX + MULQ 72(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 48(SP),AX + MULQ 48(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 48(SP),AX + SHLQ $1,AX + MULQ 56(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 48(SP),AX + SHLQ $1,AX + MULQ 64(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 48(SP),DX + IMUL3Q $38,DX,AX + MULQ 72(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 56(SP),AX + MULQ 56(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 56(SP),DX + IMUL3Q $38,DX,AX + MULQ 64(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 56(SP),DX + IMUL3Q $38,DX,AX + MULQ 72(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 64(SP),DX + IMUL3Q $19,DX,AX + MULQ 64(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 64(SP),DX + IMUL3Q $38,DX,AX + MULQ 72(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 72(SP),DX + IMUL3Q $19,DX,AX + MULQ 72(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ $REDMASK51,DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + ANDQ DX,SI + MOVQ CX,R8 + SHRQ $51,CX + ADDQ R10,CX + ANDQ DX,R8 + MOVQ CX,R9 + SHRQ $51,CX + ADDQ R12,CX + ANDQ DX,R9 + MOVQ CX,AX + SHRQ $51,CX + ADDQ R14,CX + ANDQ DX,AX + MOVQ CX,R10 + SHRQ $51,CX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,80(SP) + MOVQ R8,88(SP) + MOVQ R9,96(SP) + MOVQ AX,104(SP) + MOVQ R10,112(SP) + MOVQ 0(SP),AX + MULQ 0(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 0(SP),AX + SHLQ $1,AX + MULQ 8(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 0(SP),AX + SHLQ $1,AX + MULQ 16(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 0(SP),AX + SHLQ $1,AX + MULQ 24(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 0(SP),AX + SHLQ $1,AX + MULQ 32(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 8(SP),AX + MULQ 8(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SP),AX + SHLQ $1,AX + MULQ 16(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 8(SP),AX + SHLQ $1,AX + MULQ 24(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 8(SP),DX + IMUL3Q $38,DX,AX + MULQ 32(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 16(SP),AX + MULQ 16(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 16(SP),DX + IMUL3Q $38,DX,AX + MULQ 24(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 16(SP),DX + IMUL3Q $38,DX,AX + MULQ 32(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 24(SP),DX + IMUL3Q $19,DX,AX + MULQ 24(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 24(SP),DX + IMUL3Q $38,DX,AX + MULQ 32(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 32(SP),DX + IMUL3Q $19,DX,AX + MULQ 32(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ $REDMASK51,DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + ANDQ DX,SI + MOVQ CX,R8 + SHRQ $51,CX + ADDQ R10,CX + ANDQ DX,R8 + MOVQ CX,R9 + SHRQ $51,CX + ADDQ R12,CX + ANDQ DX,R9 + MOVQ CX,AX + SHRQ $51,CX + ADDQ R14,CX + ANDQ DX,AX + MOVQ CX,R10 + SHRQ $51,CX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,120(SP) + MOVQ R8,128(SP) + MOVQ R9,136(SP) + MOVQ AX,144(SP) + MOVQ R10,152(SP) + MOVQ SI,SI + MOVQ R8,DX + MOVQ R9,CX + MOVQ AX,R8 + MOVQ R10,R9 + ADDQ ·_2P0(SB),SI + ADDQ ·_2P1234(SB),DX + ADDQ ·_2P1234(SB),CX + ADDQ ·_2P1234(SB),R8 + ADDQ ·_2P1234(SB),R9 + SUBQ 80(SP),SI + SUBQ 88(SP),DX + SUBQ 96(SP),CX + SUBQ 104(SP),R8 + SUBQ 112(SP),R9 + MOVQ SI,160(SP) + MOVQ DX,168(SP) + MOVQ CX,176(SP) + MOVQ R8,184(SP) + MOVQ R9,192(SP) + MOVQ 120(DI),SI + MOVQ 128(DI),DX + MOVQ 136(DI),CX + MOVQ 144(DI),R8 + MOVQ 152(DI),R9 + MOVQ SI,AX + MOVQ DX,R10 + MOVQ CX,R11 + MOVQ R8,R12 + MOVQ R9,R13 + ADDQ ·_2P0(SB),AX + ADDQ ·_2P1234(SB),R10 + ADDQ ·_2P1234(SB),R11 + ADDQ ·_2P1234(SB),R12 + ADDQ ·_2P1234(SB),R13 + ADDQ 160(DI),SI + ADDQ 168(DI),DX + ADDQ 176(DI),CX + ADDQ 184(DI),R8 + ADDQ 192(DI),R9 + SUBQ 160(DI),AX + SUBQ 168(DI),R10 + SUBQ 176(DI),R11 + SUBQ 184(DI),R12 + SUBQ 192(DI),R13 + MOVQ SI,200(SP) + MOVQ DX,208(SP) + MOVQ CX,216(SP) + MOVQ R8,224(SP) + MOVQ R9,232(SP) + MOVQ AX,240(SP) + MOVQ R10,248(SP) + MOVQ R11,256(SP) + MOVQ R12,264(SP) + MOVQ R13,272(SP) + MOVQ 224(SP),SI + IMUL3Q $19,SI,AX + MOVQ AX,280(SP) + MULQ 56(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 232(SP),DX + IMUL3Q $19,DX,AX + MOVQ AX,288(SP) + MULQ 48(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 200(SP),AX + MULQ 40(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 200(SP),AX + MULQ 48(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 200(SP),AX + MULQ 56(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 200(SP),AX + MULQ 64(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 200(SP),AX + MULQ 72(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 208(SP),AX + MULQ 40(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 208(SP),AX + MULQ 48(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 208(SP),AX + MULQ 56(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 208(SP),AX + MULQ 64(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 208(SP),DX + IMUL3Q $19,DX,AX + MULQ 72(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 216(SP),AX + MULQ 40(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 216(SP),AX + MULQ 48(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 216(SP),AX + MULQ 56(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 216(SP),DX + IMUL3Q $19,DX,AX + MULQ 64(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 216(SP),DX + IMUL3Q $19,DX,AX + MULQ 72(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 224(SP),AX + MULQ 40(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 224(SP),AX + MULQ 48(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 280(SP),AX + MULQ 64(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 280(SP),AX + MULQ 72(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 232(SP),AX + MULQ 40(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 288(SP),AX + MULQ 56(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 288(SP),AX + MULQ 64(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 288(SP),AX + MULQ 72(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ $REDMASK51,DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $51,CX + ANDQ DX,SI + ADDQ R10,CX + MOVQ CX,R9 + SHRQ $51,CX + ANDQ DX,R8 + ADDQ R12,CX + MOVQ CX,AX + SHRQ $51,CX + ANDQ DX,R9 + ADDQ R14,CX + MOVQ CX,R10 + SHRQ $51,CX + ANDQ DX,AX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,40(SP) + MOVQ R8,48(SP) + MOVQ R9,56(SP) + MOVQ AX,64(SP) + MOVQ R10,72(SP) + MOVQ 264(SP),SI + IMUL3Q $19,SI,AX + MOVQ AX,200(SP) + MULQ 16(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 272(SP),DX + IMUL3Q $19,DX,AX + MOVQ AX,208(SP) + MULQ 8(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 240(SP),AX + MULQ 0(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 240(SP),AX + MULQ 8(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 240(SP),AX + MULQ 16(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 240(SP),AX + MULQ 24(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 240(SP),AX + MULQ 32(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 248(SP),AX + MULQ 0(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 248(SP),AX + MULQ 8(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 248(SP),AX + MULQ 16(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 248(SP),AX + MULQ 24(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 248(SP),DX + IMUL3Q $19,DX,AX + MULQ 32(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 256(SP),AX + MULQ 0(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 256(SP),AX + MULQ 8(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 256(SP),AX + MULQ 16(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 256(SP),DX + IMUL3Q $19,DX,AX + MULQ 24(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 256(SP),DX + IMUL3Q $19,DX,AX + MULQ 32(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 264(SP),AX + MULQ 0(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 264(SP),AX + MULQ 8(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 200(SP),AX + MULQ 24(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 200(SP),AX + MULQ 32(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 272(SP),AX + MULQ 0(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 208(SP),AX + MULQ 16(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 208(SP),AX + MULQ 24(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 208(SP),AX + MULQ 32(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ $REDMASK51,DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $51,CX + ANDQ DX,SI + ADDQ R10,CX + MOVQ CX,R9 + SHRQ $51,CX + ANDQ DX,R8 + ADDQ R12,CX + MOVQ CX,AX + SHRQ $51,CX + ANDQ DX,R9 + ADDQ R14,CX + MOVQ CX,R10 + SHRQ $51,CX + ANDQ DX,AX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,DX + MOVQ R8,CX + MOVQ R9,R11 + MOVQ AX,R12 + MOVQ R10,R13 + ADDQ ·_2P0(SB),DX + ADDQ ·_2P1234(SB),CX + ADDQ ·_2P1234(SB),R11 + ADDQ ·_2P1234(SB),R12 + ADDQ ·_2P1234(SB),R13 + ADDQ 40(SP),SI + ADDQ 48(SP),R8 + ADDQ 56(SP),R9 + ADDQ 64(SP),AX + ADDQ 72(SP),R10 + SUBQ 40(SP),DX + SUBQ 48(SP),CX + SUBQ 56(SP),R11 + SUBQ 64(SP),R12 + SUBQ 72(SP),R13 + MOVQ SI,120(DI) + MOVQ R8,128(DI) + MOVQ R9,136(DI) + MOVQ AX,144(DI) + MOVQ R10,152(DI) + MOVQ DX,160(DI) + MOVQ CX,168(DI) + MOVQ R11,176(DI) + MOVQ R12,184(DI) + MOVQ R13,192(DI) + MOVQ 120(DI),AX + MULQ 120(DI) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 120(DI),AX + SHLQ $1,AX + MULQ 128(DI) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 120(DI),AX + SHLQ $1,AX + MULQ 136(DI) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 120(DI),AX + SHLQ $1,AX + MULQ 144(DI) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 120(DI),AX + SHLQ $1,AX + MULQ 152(DI) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 128(DI),AX + MULQ 128(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 128(DI),AX + SHLQ $1,AX + MULQ 136(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 128(DI),AX + SHLQ $1,AX + MULQ 144(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 128(DI),DX + IMUL3Q $38,DX,AX + MULQ 152(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 136(DI),AX + MULQ 136(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 136(DI),DX + IMUL3Q $38,DX,AX + MULQ 144(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 136(DI),DX + IMUL3Q $38,DX,AX + MULQ 152(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 144(DI),DX + IMUL3Q $19,DX,AX + MULQ 144(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 144(DI),DX + IMUL3Q $38,DX,AX + MULQ 152(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 152(DI),DX + IMUL3Q $19,DX,AX + MULQ 152(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ $REDMASK51,DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + ANDQ DX,SI + MOVQ CX,R8 + SHRQ $51,CX + ADDQ R10,CX + ANDQ DX,R8 + MOVQ CX,R9 + SHRQ $51,CX + ADDQ R12,CX + ANDQ DX,R9 + MOVQ CX,AX + SHRQ $51,CX + ADDQ R14,CX + ANDQ DX,AX + MOVQ CX,R10 + SHRQ $51,CX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,120(DI) + MOVQ R8,128(DI) + MOVQ R9,136(DI) + MOVQ AX,144(DI) + MOVQ R10,152(DI) + MOVQ 160(DI),AX + MULQ 160(DI) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 160(DI),AX + SHLQ $1,AX + MULQ 168(DI) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 160(DI),AX + SHLQ $1,AX + MULQ 176(DI) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 160(DI),AX + SHLQ $1,AX + MULQ 184(DI) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 160(DI),AX + SHLQ $1,AX + MULQ 192(DI) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 168(DI),AX + MULQ 168(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 168(DI),AX + SHLQ $1,AX + MULQ 176(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 168(DI),AX + SHLQ $1,AX + MULQ 184(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 168(DI),DX + IMUL3Q $38,DX,AX + MULQ 192(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 176(DI),AX + MULQ 176(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 176(DI),DX + IMUL3Q $38,DX,AX + MULQ 184(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 176(DI),DX + IMUL3Q $38,DX,AX + MULQ 192(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 184(DI),DX + IMUL3Q $19,DX,AX + MULQ 184(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 184(DI),DX + IMUL3Q $38,DX,AX + MULQ 192(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 192(DI),DX + IMUL3Q $19,DX,AX + MULQ 192(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ $REDMASK51,DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + ANDQ DX,SI + MOVQ CX,R8 + SHRQ $51,CX + ADDQ R10,CX + ANDQ DX,R8 + MOVQ CX,R9 + SHRQ $51,CX + ADDQ R12,CX + ANDQ DX,R9 + MOVQ CX,AX + SHRQ $51,CX + ADDQ R14,CX + ANDQ DX,AX + MOVQ CX,R10 + SHRQ $51,CX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,160(DI) + MOVQ R8,168(DI) + MOVQ R9,176(DI) + MOVQ AX,184(DI) + MOVQ R10,192(DI) + MOVQ 184(DI),SI + IMUL3Q $19,SI,AX + MOVQ AX,0(SP) + MULQ 16(DI) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 192(DI),DX + IMUL3Q $19,DX,AX + MOVQ AX,8(SP) + MULQ 8(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 160(DI),AX + MULQ 0(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 160(DI),AX + MULQ 8(DI) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 160(DI),AX + MULQ 16(DI) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 160(DI),AX + MULQ 24(DI) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 160(DI),AX + MULQ 32(DI) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 168(DI),AX + MULQ 0(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 168(DI),AX + MULQ 8(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 168(DI),AX + MULQ 16(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 168(DI),AX + MULQ 24(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 168(DI),DX + IMUL3Q $19,DX,AX + MULQ 32(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 176(DI),AX + MULQ 0(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 176(DI),AX + MULQ 8(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 176(DI),AX + MULQ 16(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 176(DI),DX + IMUL3Q $19,DX,AX + MULQ 24(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 176(DI),DX + IMUL3Q $19,DX,AX + MULQ 32(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 184(DI),AX + MULQ 0(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 184(DI),AX + MULQ 8(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 0(SP),AX + MULQ 24(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 0(SP),AX + MULQ 32(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 192(DI),AX + MULQ 0(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 8(SP),AX + MULQ 16(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 8(SP),AX + MULQ 24(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SP),AX + MULQ 32(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ $REDMASK51,DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $51,CX + ANDQ DX,SI + ADDQ R10,CX + MOVQ CX,R9 + SHRQ $51,CX + ANDQ DX,R8 + ADDQ R12,CX + MOVQ CX,AX + SHRQ $51,CX + ANDQ DX,R9 + ADDQ R14,CX + MOVQ CX,R10 + SHRQ $51,CX + ANDQ DX,AX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,160(DI) + MOVQ R8,168(DI) + MOVQ R9,176(DI) + MOVQ AX,184(DI) + MOVQ R10,192(DI) + MOVQ 144(SP),SI + IMUL3Q $19,SI,AX + MOVQ AX,0(SP) + MULQ 96(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 152(SP),DX + IMUL3Q $19,DX,AX + MOVQ AX,8(SP) + MULQ 88(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 120(SP),AX + MULQ 80(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 120(SP),AX + MULQ 88(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 120(SP),AX + MULQ 96(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 120(SP),AX + MULQ 104(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 120(SP),AX + MULQ 112(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 128(SP),AX + MULQ 80(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 128(SP),AX + MULQ 88(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 128(SP),AX + MULQ 96(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 128(SP),AX + MULQ 104(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 128(SP),DX + IMUL3Q $19,DX,AX + MULQ 112(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 136(SP),AX + MULQ 80(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 136(SP),AX + MULQ 88(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 136(SP),AX + MULQ 96(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 136(SP),DX + IMUL3Q $19,DX,AX + MULQ 104(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 136(SP),DX + IMUL3Q $19,DX,AX + MULQ 112(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 144(SP),AX + MULQ 80(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 144(SP),AX + MULQ 88(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 0(SP),AX + MULQ 104(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 0(SP),AX + MULQ 112(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 152(SP),AX + MULQ 80(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 8(SP),AX + MULQ 96(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 8(SP),AX + MULQ 104(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SP),AX + MULQ 112(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ $REDMASK51,DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $51,CX + ANDQ DX,SI + ADDQ R10,CX + MOVQ CX,R9 + SHRQ $51,CX + ANDQ DX,R8 + ADDQ R12,CX + MOVQ CX,AX + SHRQ $51,CX + ANDQ DX,R9 + ADDQ R14,CX + MOVQ CX,R10 + SHRQ $51,CX + ANDQ DX,AX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,40(DI) + MOVQ R8,48(DI) + MOVQ R9,56(DI) + MOVQ AX,64(DI) + MOVQ R10,72(DI) + MOVQ 160(SP),AX + MULQ ·_121666_213(SB) + SHRQ $13,AX + MOVQ AX,SI + MOVQ DX,CX + MOVQ 168(SP),AX + MULQ ·_121666_213(SB) + SHRQ $13,AX + ADDQ AX,CX + MOVQ DX,R8 + MOVQ 176(SP),AX + MULQ ·_121666_213(SB) + SHRQ $13,AX + ADDQ AX,R8 + MOVQ DX,R9 + MOVQ 184(SP),AX + MULQ ·_121666_213(SB) + SHRQ $13,AX + ADDQ AX,R9 + MOVQ DX,R10 + MOVQ 192(SP),AX + MULQ ·_121666_213(SB) + SHRQ $13,AX + ADDQ AX,R10 + IMUL3Q $19,DX,DX + ADDQ DX,SI + ADDQ 80(SP),SI + ADDQ 88(SP),CX + ADDQ 96(SP),R8 + ADDQ 104(SP),R9 + ADDQ 112(SP),R10 + MOVQ SI,80(DI) + MOVQ CX,88(DI) + MOVQ R8,96(DI) + MOVQ R9,104(DI) + MOVQ R10,112(DI) + MOVQ 104(DI),SI + IMUL3Q $19,SI,AX + MOVQ AX,0(SP) + MULQ 176(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 112(DI),DX + IMUL3Q $19,DX,AX + MOVQ AX,8(SP) + MULQ 168(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 80(DI),AX + MULQ 160(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 80(DI),AX + MULQ 168(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 80(DI),AX + MULQ 176(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 80(DI),AX + MULQ 184(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 80(DI),AX + MULQ 192(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 88(DI),AX + MULQ 160(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 88(DI),AX + MULQ 168(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 88(DI),AX + MULQ 176(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 88(DI),AX + MULQ 184(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 88(DI),DX + IMUL3Q $19,DX,AX + MULQ 192(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 96(DI),AX + MULQ 160(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 96(DI),AX + MULQ 168(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 96(DI),AX + MULQ 176(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 96(DI),DX + IMUL3Q $19,DX,AX + MULQ 184(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 96(DI),DX + IMUL3Q $19,DX,AX + MULQ 192(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 104(DI),AX + MULQ 160(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 104(DI),AX + MULQ 168(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 0(SP),AX + MULQ 184(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 0(SP),AX + MULQ 192(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 112(DI),AX + MULQ 160(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 8(SP),AX + MULQ 176(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 8(SP),AX + MULQ 184(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SP),AX + MULQ 192(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ $REDMASK51,DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $51,CX + ANDQ DX,SI + ADDQ R10,CX + MOVQ CX,R9 + SHRQ $51,CX + ANDQ DX,R8 + ADDQ R12,CX + MOVQ CX,AX + SHRQ $51,CX + ANDQ DX,R9 + ADDQ R14,CX + MOVQ CX,R10 + SHRQ $51,CX + ANDQ DX,AX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,80(DI) + MOVQ R8,88(DI) + MOVQ R9,96(DI) + MOVQ AX,104(DI) + MOVQ R10,112(DI) + RET diff --git a/vendor/golang.org/x/crypto/curve25519/mont25519_amd64.go b/vendor/golang.org/x/crypto/curve25519/mont25519_amd64.go new file mode 100644 index 000000000..5822bd533 --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/mont25519_amd64.go @@ -0,0 +1,240 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!gccgo,!appengine + +package curve25519 + +// These functions are implemented in the .s files. The names of the functions +// in the rest of the file are also taken from the SUPERCOP sources to help +// people following along. + +//go:noescape + +func cswap(inout *[5]uint64, v uint64) + +//go:noescape + +func ladderstep(inout *[5][5]uint64) + +//go:noescape + +func freeze(inout *[5]uint64) + +//go:noescape + +func mul(dest, a, b *[5]uint64) + +//go:noescape + +func square(out, in *[5]uint64) + +// mladder uses a Montgomery ladder to calculate (xr/zr) *= s. +func mladder(xr, zr *[5]uint64, s *[32]byte) { + var work [5][5]uint64 + + work[0] = *xr + setint(&work[1], 1) + setint(&work[2], 0) + work[3] = *xr + setint(&work[4], 1) + + j := uint(6) + var prevbit byte + + for i := 31; i >= 0; i-- { + for j < 8 { + bit := ((*s)[i] >> j) & 1 + swap := bit ^ prevbit + prevbit = bit + cswap(&work[1], uint64(swap)) + ladderstep(&work) + j-- + } + j = 7 + } + + *xr = work[1] + *zr = work[2] +} + +func scalarMult(out, in, base *[32]byte) { + var e [32]byte + copy(e[:], (*in)[:]) + e[0] &= 248 + e[31] &= 127 + e[31] |= 64 + + var t, z [5]uint64 + unpack(&t, base) + mladder(&t, &z, &e) + invert(&z, &z) + mul(&t, &t, &z) + pack(out, &t) +} + +func setint(r *[5]uint64, v uint64) { + r[0] = v + r[1] = 0 + r[2] = 0 + r[3] = 0 + r[4] = 0 +} + +// unpack sets r = x where r consists of 5, 51-bit limbs in little-endian +// order. +func unpack(r *[5]uint64, x *[32]byte) { + r[0] = uint64(x[0]) | + uint64(x[1])<<8 | + uint64(x[2])<<16 | + uint64(x[3])<<24 | + uint64(x[4])<<32 | + uint64(x[5])<<40 | + uint64(x[6]&7)<<48 + + r[1] = uint64(x[6])>>3 | + uint64(x[7])<<5 | + uint64(x[8])<<13 | + uint64(x[9])<<21 | + uint64(x[10])<<29 | + uint64(x[11])<<37 | + uint64(x[12]&63)<<45 + + r[2] = uint64(x[12])>>6 | + uint64(x[13])<<2 | + uint64(x[14])<<10 | + uint64(x[15])<<18 | + uint64(x[16])<<26 | + uint64(x[17])<<34 | + uint64(x[18])<<42 | + uint64(x[19]&1)<<50 + + r[3] = uint64(x[19])>>1 | + uint64(x[20])<<7 | + uint64(x[21])<<15 | + uint64(x[22])<<23 | + uint64(x[23])<<31 | + uint64(x[24])<<39 | + uint64(x[25]&15)<<47 + + r[4] = uint64(x[25])>>4 | + uint64(x[26])<<4 | + uint64(x[27])<<12 | + uint64(x[28])<<20 | + uint64(x[29])<<28 | + uint64(x[30])<<36 | + uint64(x[31]&127)<<44 +} + +// pack sets out = x where out is the usual, little-endian form of the 5, +// 51-bit limbs in x. +func pack(out *[32]byte, x *[5]uint64) { + t := *x + freeze(&t) + + out[0] = byte(t[0]) + out[1] = byte(t[0] >> 8) + out[2] = byte(t[0] >> 16) + out[3] = byte(t[0] >> 24) + out[4] = byte(t[0] >> 32) + out[5] = byte(t[0] >> 40) + out[6] = byte(t[0] >> 48) + + out[6] ^= byte(t[1]<<3) & 0xf8 + out[7] = byte(t[1] >> 5) + out[8] = byte(t[1] >> 13) + out[9] = byte(t[1] >> 21) + out[10] = byte(t[1] >> 29) + out[11] = byte(t[1] >> 37) + out[12] = byte(t[1] >> 45) + + out[12] ^= byte(t[2]<<6) & 0xc0 + out[13] = byte(t[2] >> 2) + out[14] = byte(t[2] >> 10) + out[15] = byte(t[2] >> 18) + out[16] = byte(t[2] >> 26) + out[17] = byte(t[2] >> 34) + out[18] = byte(t[2] >> 42) + out[19] = byte(t[2] >> 50) + + out[19] ^= byte(t[3]<<1) & 0xfe + out[20] = byte(t[3] >> 7) + out[21] = byte(t[3] >> 15) + out[22] = byte(t[3] >> 23) + out[23] = byte(t[3] >> 31) + out[24] = byte(t[3] >> 39) + out[25] = byte(t[3] >> 47) + + out[25] ^= byte(t[4]<<4) & 0xf0 + out[26] = byte(t[4] >> 4) + out[27] = byte(t[4] >> 12) + out[28] = byte(t[4] >> 20) + out[29] = byte(t[4] >> 28) + out[30] = byte(t[4] >> 36) + out[31] = byte(t[4] >> 44) +} + +// invert calculates r = x^-1 mod p using Fermat's little theorem. +func invert(r *[5]uint64, x *[5]uint64) { + var z2, z9, z11, z2_5_0, z2_10_0, z2_20_0, z2_50_0, z2_100_0, t [5]uint64 + + square(&z2, x) /* 2 */ + square(&t, &z2) /* 4 */ + square(&t, &t) /* 8 */ + mul(&z9, &t, x) /* 9 */ + mul(&z11, &z9, &z2) /* 11 */ + square(&t, &z11) /* 22 */ + mul(&z2_5_0, &t, &z9) /* 2^5 - 2^0 = 31 */ + + square(&t, &z2_5_0) /* 2^6 - 2^1 */ + for i := 1; i < 5; i++ { /* 2^20 - 2^10 */ + square(&t, &t) + } + mul(&z2_10_0, &t, &z2_5_0) /* 2^10 - 2^0 */ + + square(&t, &z2_10_0) /* 2^11 - 2^1 */ + for i := 1; i < 10; i++ { /* 2^20 - 2^10 */ + square(&t, &t) + } + mul(&z2_20_0, &t, &z2_10_0) /* 2^20 - 2^0 */ + + square(&t, &z2_20_0) /* 2^21 - 2^1 */ + for i := 1; i < 20; i++ { /* 2^40 - 2^20 */ + square(&t, &t) + } + mul(&t, &t, &z2_20_0) /* 2^40 - 2^0 */ + + square(&t, &t) /* 2^41 - 2^1 */ + for i := 1; i < 10; i++ { /* 2^50 - 2^10 */ + square(&t, &t) + } + mul(&z2_50_0, &t, &z2_10_0) /* 2^50 - 2^0 */ + + square(&t, &z2_50_0) /* 2^51 - 2^1 */ + for i := 1; i < 50; i++ { /* 2^100 - 2^50 */ + square(&t, &t) + } + mul(&z2_100_0, &t, &z2_50_0) /* 2^100 - 2^0 */ + + square(&t, &z2_100_0) /* 2^101 - 2^1 */ + for i := 1; i < 100; i++ { /* 2^200 - 2^100 */ + square(&t, &t) + } + mul(&t, &t, &z2_100_0) /* 2^200 - 2^0 */ + + square(&t, &t) /* 2^201 - 2^1 */ + for i := 1; i < 50; i++ { /* 2^250 - 2^50 */ + square(&t, &t) + } + mul(&t, &t, &z2_50_0) /* 2^250 - 2^0 */ + + square(&t, &t) /* 2^251 - 2^1 */ + square(&t, &t) /* 2^252 - 2^2 */ + square(&t, &t) /* 2^253 - 2^3 */ + + square(&t, &t) /* 2^254 - 2^4 */ + + square(&t, &t) /* 2^255 - 2^5 */ + mul(r, &t, &z11) /* 2^255 - 21 */ +} diff --git a/vendor/golang.org/x/crypto/curve25519/mul_amd64.s b/vendor/golang.org/x/crypto/curve25519/mul_amd64.s new file mode 100644 index 000000000..5ce80a2e5 --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/mul_amd64.s @@ -0,0 +1,169 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html + +// +build amd64,!gccgo,!appengine + +#include "const_amd64.h" + +// func mul(dest, a, b *[5]uint64) +TEXT ·mul(SB),0,$16-24 + MOVQ dest+0(FP), DI + MOVQ a+8(FP), SI + MOVQ b+16(FP), DX + + MOVQ DX,CX + MOVQ 24(SI),DX + IMUL3Q $19,DX,AX + MOVQ AX,0(SP) + MULQ 16(CX) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 32(SI),DX + IMUL3Q $19,DX,AX + MOVQ AX,8(SP) + MULQ 8(CX) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 0(SI),AX + MULQ 0(CX) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 0(SI),AX + MULQ 8(CX) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 0(SI),AX + MULQ 16(CX) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 0(SI),AX + MULQ 24(CX) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 0(SI),AX + MULQ 32(CX) + MOVQ AX,BX + MOVQ DX,BP + MOVQ 8(SI),AX + MULQ 0(CX) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SI),AX + MULQ 8(CX) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 8(SI),AX + MULQ 16(CX) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 8(SI),AX + MULQ 24(CX) + ADDQ AX,BX + ADCQ DX,BP + MOVQ 8(SI),DX + IMUL3Q $19,DX,AX + MULQ 32(CX) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 16(SI),AX + MULQ 0(CX) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 16(SI),AX + MULQ 8(CX) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 16(SI),AX + MULQ 16(CX) + ADDQ AX,BX + ADCQ DX,BP + MOVQ 16(SI),DX + IMUL3Q $19,DX,AX + MULQ 24(CX) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 16(SI),DX + IMUL3Q $19,DX,AX + MULQ 32(CX) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 24(SI),AX + MULQ 0(CX) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 24(SI),AX + MULQ 8(CX) + ADDQ AX,BX + ADCQ DX,BP + MOVQ 0(SP),AX + MULQ 24(CX) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 0(SP),AX + MULQ 32(CX) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 32(SI),AX + MULQ 0(CX) + ADDQ AX,BX + ADCQ DX,BP + MOVQ 8(SP),AX + MULQ 16(CX) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SP),AX + MULQ 24(CX) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 8(SP),AX + MULQ 32(CX) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ $REDMASK51,SI + SHLQ $13,R9:R8 + ANDQ SI,R8 + SHLQ $13,R11:R10 + ANDQ SI,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ SI,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ SI,R14 + ADDQ R13,R14 + SHLQ $13,BP:BX + ANDQ SI,BX + ADDQ R15,BX + IMUL3Q $19,BP,DX + ADDQ DX,R8 + MOVQ R8,DX + SHRQ $51,DX + ADDQ R10,DX + MOVQ DX,CX + SHRQ $51,DX + ANDQ SI,R8 + ADDQ R12,DX + MOVQ DX,R9 + SHRQ $51,DX + ANDQ SI,CX + ADDQ R14,DX + MOVQ DX,AX + SHRQ $51,DX + ANDQ SI,R9 + ADDQ BX,DX + MOVQ DX,R10 + SHRQ $51,DX + ANDQ SI,AX + IMUL3Q $19,DX,DX + ADDQ DX,R8 + ANDQ SI,R10 + MOVQ R8,0(DI) + MOVQ CX,8(DI) + MOVQ R9,16(DI) + MOVQ AX,24(DI) + MOVQ R10,32(DI) + RET diff --git a/vendor/golang.org/x/crypto/curve25519/square_amd64.s b/vendor/golang.org/x/crypto/curve25519/square_amd64.s new file mode 100644 index 000000000..12f73734f --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/square_amd64.s @@ -0,0 +1,132 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html + +// +build amd64,!gccgo,!appengine + +#include "const_amd64.h" + +// func square(out, in *[5]uint64) +TEXT ·square(SB),7,$0-16 + MOVQ out+0(FP), DI + MOVQ in+8(FP), SI + + MOVQ 0(SI),AX + MULQ 0(SI) + MOVQ AX,CX + MOVQ DX,R8 + MOVQ 0(SI),AX + SHLQ $1,AX + MULQ 8(SI) + MOVQ AX,R9 + MOVQ DX,R10 + MOVQ 0(SI),AX + SHLQ $1,AX + MULQ 16(SI) + MOVQ AX,R11 + MOVQ DX,R12 + MOVQ 0(SI),AX + SHLQ $1,AX + MULQ 24(SI) + MOVQ AX,R13 + MOVQ DX,R14 + MOVQ 0(SI),AX + SHLQ $1,AX + MULQ 32(SI) + MOVQ AX,R15 + MOVQ DX,BX + MOVQ 8(SI),AX + MULQ 8(SI) + ADDQ AX,R11 + ADCQ DX,R12 + MOVQ 8(SI),AX + SHLQ $1,AX + MULQ 16(SI) + ADDQ AX,R13 + ADCQ DX,R14 + MOVQ 8(SI),AX + SHLQ $1,AX + MULQ 24(SI) + ADDQ AX,R15 + ADCQ DX,BX + MOVQ 8(SI),DX + IMUL3Q $38,DX,AX + MULQ 32(SI) + ADDQ AX,CX + ADCQ DX,R8 + MOVQ 16(SI),AX + MULQ 16(SI) + ADDQ AX,R15 + ADCQ DX,BX + MOVQ 16(SI),DX + IMUL3Q $38,DX,AX + MULQ 24(SI) + ADDQ AX,CX + ADCQ DX,R8 + MOVQ 16(SI),DX + IMUL3Q $38,DX,AX + MULQ 32(SI) + ADDQ AX,R9 + ADCQ DX,R10 + MOVQ 24(SI),DX + IMUL3Q $19,DX,AX + MULQ 24(SI) + ADDQ AX,R9 + ADCQ DX,R10 + MOVQ 24(SI),DX + IMUL3Q $38,DX,AX + MULQ 32(SI) + ADDQ AX,R11 + ADCQ DX,R12 + MOVQ 32(SI),DX + IMUL3Q $19,DX,AX + MULQ 32(SI) + ADDQ AX,R13 + ADCQ DX,R14 + MOVQ $REDMASK51,SI + SHLQ $13,R8:CX + ANDQ SI,CX + SHLQ $13,R10:R9 + ANDQ SI,R9 + ADDQ R8,R9 + SHLQ $13,R12:R11 + ANDQ SI,R11 + ADDQ R10,R11 + SHLQ $13,R14:R13 + ANDQ SI,R13 + ADDQ R12,R13 + SHLQ $13,BX:R15 + ANDQ SI,R15 + ADDQ R14,R15 + IMUL3Q $19,BX,DX + ADDQ DX,CX + MOVQ CX,DX + SHRQ $51,DX + ADDQ R9,DX + ANDQ SI,CX + MOVQ DX,R8 + SHRQ $51,DX + ADDQ R11,DX + ANDQ SI,R8 + MOVQ DX,R9 + SHRQ $51,DX + ADDQ R13,DX + ANDQ SI,R9 + MOVQ DX,AX + SHRQ $51,DX + ADDQ R15,DX + ANDQ SI,AX + MOVQ DX,R10 + SHRQ $51,DX + IMUL3Q $19,DX,DX + ADDQ DX,CX + ANDQ SI,R10 + MOVQ CX,0(DI) + MOVQ R8,8(DI) + MOVQ R9,16(DI) + MOVQ AX,24(DI) + MOVQ R10,32(DI) + RET diff --git a/vendor/golang.org/x/crypto/ssh/terminal/terminal.go b/vendor/golang.org/x/crypto/ssh/terminal/terminal.go new file mode 100644 index 000000000..9a887598f --- /dev/null +++ b/vendor/golang.org/x/crypto/ssh/terminal/terminal.go @@ -0,0 +1,951 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package terminal + +import ( + "bytes" + "io" + "sync" + "unicode/utf8" +) + +// EscapeCodes contains escape sequences that can be written to the terminal in +// order to achieve different styles of text. +type EscapeCodes struct { + // Foreground colors + Black, Red, Green, Yellow, Blue, Magenta, Cyan, White []byte + + // Reset all attributes + Reset []byte +} + +var vt100EscapeCodes = EscapeCodes{ + Black: []byte{keyEscape, '[', '3', '0', 'm'}, + Red: []byte{keyEscape, '[', '3', '1', 'm'}, + Green: []byte{keyEscape, '[', '3', '2', 'm'}, + Yellow: []byte{keyEscape, '[', '3', '3', 'm'}, + Blue: []byte{keyEscape, '[', '3', '4', 'm'}, + Magenta: []byte{keyEscape, '[', '3', '5', 'm'}, + Cyan: []byte{keyEscape, '[', '3', '6', 'm'}, + White: []byte{keyEscape, '[', '3', '7', 'm'}, + + Reset: []byte{keyEscape, '[', '0', 'm'}, +} + +// Terminal contains the state for running a VT100 terminal that is capable of +// reading lines of input. +type Terminal struct { + // AutoCompleteCallback, if non-null, is called for each keypress with + // the full input line and the current position of the cursor (in + // bytes, as an index into |line|). If it returns ok=false, the key + // press is processed normally. Otherwise it returns a replacement line + // and the new cursor position. + AutoCompleteCallback func(line string, pos int, key rune) (newLine string, newPos int, ok bool) + + // Escape contains a pointer to the escape codes for this terminal. + // It's always a valid pointer, although the escape codes themselves + // may be empty if the terminal doesn't support them. + Escape *EscapeCodes + + // lock protects the terminal and the state in this object from + // concurrent processing of a key press and a Write() call. + lock sync.Mutex + + c io.ReadWriter + prompt []rune + + // line is the current line being entered. + line []rune + // pos is the logical position of the cursor in line + pos int + // echo is true if local echo is enabled + echo bool + // pasteActive is true iff there is a bracketed paste operation in + // progress. + pasteActive bool + + // cursorX contains the current X value of the cursor where the left + // edge is 0. cursorY contains the row number where the first row of + // the current line is 0. + cursorX, cursorY int + // maxLine is the greatest value of cursorY so far. + maxLine int + + termWidth, termHeight int + + // outBuf contains the terminal data to be sent. + outBuf []byte + // remainder contains the remainder of any partial key sequences after + // a read. It aliases into inBuf. + remainder []byte + inBuf [256]byte + + // history contains previously entered commands so that they can be + // accessed with the up and down keys. + history stRingBuffer + // historyIndex stores the currently accessed history entry, where zero + // means the immediately previous entry. + historyIndex int + // When navigating up and down the history it's possible to return to + // the incomplete, initial line. That value is stored in + // historyPending. + historyPending string +} + +// NewTerminal runs a VT100 terminal on the given ReadWriter. If the ReadWriter is +// a local terminal, that terminal must first have been put into raw mode. +// prompt is a string that is written at the start of each input line (i.e. +// "> "). +func NewTerminal(c io.ReadWriter, prompt string) *Terminal { + return &Terminal{ + Escape: &vt100EscapeCodes, + c: c, + prompt: []rune(prompt), + termWidth: 80, + termHeight: 24, + echo: true, + historyIndex: -1, + } +} + +const ( + keyCtrlD = 4 + keyCtrlU = 21 + keyEnter = '\r' + keyEscape = 27 + keyBackspace = 127 + keyUnknown = 0xd800 /* UTF-16 surrogate area */ + iota + keyUp + keyDown + keyLeft + keyRight + keyAltLeft + keyAltRight + keyHome + keyEnd + keyDeleteWord + keyDeleteLine + keyClearScreen + keyPasteStart + keyPasteEnd +) + +var ( + crlf = []byte{'\r', '\n'} + pasteStart = []byte{keyEscape, '[', '2', '0', '0', '~'} + pasteEnd = []byte{keyEscape, '[', '2', '0', '1', '~'} +) + +// bytesToKey tries to parse a key sequence from b. If successful, it returns +// the key and the remainder of the input. Otherwise it returns utf8.RuneError. +func bytesToKey(b []byte, pasteActive bool) (rune, []byte) { + if len(b) == 0 { + return utf8.RuneError, nil + } + + if !pasteActive { + switch b[0] { + case 1: // ^A + return keyHome, b[1:] + case 5: // ^E + return keyEnd, b[1:] + case 8: // ^H + return keyBackspace, b[1:] + case 11: // ^K + return keyDeleteLine, b[1:] + case 12: // ^L + return keyClearScreen, b[1:] + case 23: // ^W + return keyDeleteWord, b[1:] + } + } + + if b[0] != keyEscape { + if !utf8.FullRune(b) { + return utf8.RuneError, b + } + r, l := utf8.DecodeRune(b) + return r, b[l:] + } + + if !pasteActive && len(b) >= 3 && b[0] == keyEscape && b[1] == '[' { + switch b[2] { + case 'A': + return keyUp, b[3:] + case 'B': + return keyDown, b[3:] + case 'C': + return keyRight, b[3:] + case 'D': + return keyLeft, b[3:] + case 'H': + return keyHome, b[3:] + case 'F': + return keyEnd, b[3:] + } + } + + if !pasteActive && len(b) >= 6 && b[0] == keyEscape && b[1] == '[' && b[2] == '1' && b[3] == ';' && b[4] == '3' { + switch b[5] { + case 'C': + return keyAltRight, b[6:] + case 'D': + return keyAltLeft, b[6:] + } + } + + if !pasteActive && len(b) >= 6 && bytes.Equal(b[:6], pasteStart) { + return keyPasteStart, b[6:] + } + + if pasteActive && len(b) >= 6 && bytes.Equal(b[:6], pasteEnd) { + return keyPasteEnd, b[6:] + } + + // If we get here then we have a key that we don't recognise, or a + // partial sequence. It's not clear how one should find the end of a + // sequence without knowing them all, but it seems that [a-zA-Z~] only + // appears at the end of a sequence. + for i, c := range b[0:] { + if c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c == '~' { + return keyUnknown, b[i+1:] + } + } + + return utf8.RuneError, b +} + +// queue appends data to the end of t.outBuf +func (t *Terminal) queue(data []rune) { + t.outBuf = append(t.outBuf, []byte(string(data))...) +} + +var eraseUnderCursor = []rune{' ', keyEscape, '[', 'D'} +var space = []rune{' '} + +func isPrintable(key rune) bool { + isInSurrogateArea := key >= 0xd800 && key <= 0xdbff + return key >= 32 && !isInSurrogateArea +} + +// moveCursorToPos appends data to t.outBuf which will move the cursor to the +// given, logical position in the text. +func (t *Terminal) moveCursorToPos(pos int) { + if !t.echo { + return + } + + x := visualLength(t.prompt) + pos + y := x / t.termWidth + x = x % t.termWidth + + up := 0 + if y < t.cursorY { + up = t.cursorY - y + } + + down := 0 + if y > t.cursorY { + down = y - t.cursorY + } + + left := 0 + if x < t.cursorX { + left = t.cursorX - x + } + + right := 0 + if x > t.cursorX { + right = x - t.cursorX + } + + t.cursorX = x + t.cursorY = y + t.move(up, down, left, right) +} + +func (t *Terminal) move(up, down, left, right int) { + movement := make([]rune, 3*(up+down+left+right)) + m := movement + for i := 0; i < up; i++ { + m[0] = keyEscape + m[1] = '[' + m[2] = 'A' + m = m[3:] + } + for i := 0; i < down; i++ { + m[0] = keyEscape + m[1] = '[' + m[2] = 'B' + m = m[3:] + } + for i := 0; i < left; i++ { + m[0] = keyEscape + m[1] = '[' + m[2] = 'D' + m = m[3:] + } + for i := 0; i < right; i++ { + m[0] = keyEscape + m[1] = '[' + m[2] = 'C' + m = m[3:] + } + + t.queue(movement) +} + +func (t *Terminal) clearLineToRight() { + op := []rune{keyEscape, '[', 'K'} + t.queue(op) +} + +const maxLineLength = 4096 + +func (t *Terminal) setLine(newLine []rune, newPos int) { + if t.echo { + t.moveCursorToPos(0) + t.writeLine(newLine) + for i := len(newLine); i < len(t.line); i++ { + t.writeLine(space) + } + t.moveCursorToPos(newPos) + } + t.line = newLine + t.pos = newPos +} + +func (t *Terminal) advanceCursor(places int) { + t.cursorX += places + t.cursorY += t.cursorX / t.termWidth + if t.cursorY > t.maxLine { + t.maxLine = t.cursorY + } + t.cursorX = t.cursorX % t.termWidth + + if places > 0 && t.cursorX == 0 { + // Normally terminals will advance the current position + // when writing a character. But that doesn't happen + // for the last character in a line. However, when + // writing a character (except a new line) that causes + // a line wrap, the position will be advanced two + // places. + // + // So, if we are stopping at the end of a line, we + // need to write a newline so that our cursor can be + // advanced to the next line. + t.outBuf = append(t.outBuf, '\r', '\n') + } +} + +func (t *Terminal) eraseNPreviousChars(n int) { + if n == 0 { + return + } + + if t.pos < n { + n = t.pos + } + t.pos -= n + t.moveCursorToPos(t.pos) + + copy(t.line[t.pos:], t.line[n+t.pos:]) + t.line = t.line[:len(t.line)-n] + if t.echo { + t.writeLine(t.line[t.pos:]) + for i := 0; i < n; i++ { + t.queue(space) + } + t.advanceCursor(n) + t.moveCursorToPos(t.pos) + } +} + +// countToLeftWord returns then number of characters from the cursor to the +// start of the previous word. +func (t *Terminal) countToLeftWord() int { + if t.pos == 0 { + return 0 + } + + pos := t.pos - 1 + for pos > 0 { + if t.line[pos] != ' ' { + break + } + pos-- + } + for pos > 0 { + if t.line[pos] == ' ' { + pos++ + break + } + pos-- + } + + return t.pos - pos +} + +// countToRightWord returns then number of characters from the cursor to the +// start of the next word. +func (t *Terminal) countToRightWord() int { + pos := t.pos + for pos < len(t.line) { + if t.line[pos] == ' ' { + break + } + pos++ + } + for pos < len(t.line) { + if t.line[pos] != ' ' { + break + } + pos++ + } + return pos - t.pos +} + +// visualLength returns the number of visible glyphs in s. +func visualLength(runes []rune) int { + inEscapeSeq := false + length := 0 + + for _, r := range runes { + switch { + case inEscapeSeq: + if (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z') { + inEscapeSeq = false + } + case r == '\x1b': + inEscapeSeq = true + default: + length++ + } + } + + return length +} + +// handleKey processes the given key and, optionally, returns a line of text +// that the user has entered. +func (t *Terminal) handleKey(key rune) (line string, ok bool) { + if t.pasteActive && key != keyEnter { + t.addKeyToLine(key) + return + } + + switch key { + case keyBackspace: + if t.pos == 0 { + return + } + t.eraseNPreviousChars(1) + case keyAltLeft: + // move left by a word. + t.pos -= t.countToLeftWord() + t.moveCursorToPos(t.pos) + case keyAltRight: + // move right by a word. + t.pos += t.countToRightWord() + t.moveCursorToPos(t.pos) + case keyLeft: + if t.pos == 0 { + return + } + t.pos-- + t.moveCursorToPos(t.pos) + case keyRight: + if t.pos == len(t.line) { + return + } + t.pos++ + t.moveCursorToPos(t.pos) + case keyHome: + if t.pos == 0 { + return + } + t.pos = 0 + t.moveCursorToPos(t.pos) + case keyEnd: + if t.pos == len(t.line) { + return + } + t.pos = len(t.line) + t.moveCursorToPos(t.pos) + case keyUp: + entry, ok := t.history.NthPreviousEntry(t.historyIndex + 1) + if !ok { + return "", false + } + if t.historyIndex == -1 { + t.historyPending = string(t.line) + } + t.historyIndex++ + runes := []rune(entry) + t.setLine(runes, len(runes)) + case keyDown: + switch t.historyIndex { + case -1: + return + case 0: + runes := []rune(t.historyPending) + t.setLine(runes, len(runes)) + t.historyIndex-- + default: + entry, ok := t.history.NthPreviousEntry(t.historyIndex - 1) + if ok { + t.historyIndex-- + runes := []rune(entry) + t.setLine(runes, len(runes)) + } + } + case keyEnter: + t.moveCursorToPos(len(t.line)) + t.queue([]rune("\r\n")) + line = string(t.line) + ok = true + t.line = t.line[:0] + t.pos = 0 + t.cursorX = 0 + t.cursorY = 0 + t.maxLine = 0 + case keyDeleteWord: + // Delete zero or more spaces and then one or more characters. + t.eraseNPreviousChars(t.countToLeftWord()) + case keyDeleteLine: + // Delete everything from the current cursor position to the + // end of line. + for i := t.pos; i < len(t.line); i++ { + t.queue(space) + t.advanceCursor(1) + } + t.line = t.line[:t.pos] + t.moveCursorToPos(t.pos) + case keyCtrlD: + // Erase the character under the current position. + // The EOF case when the line is empty is handled in + // readLine(). + if t.pos < len(t.line) { + t.pos++ + t.eraseNPreviousChars(1) + } + case keyCtrlU: + t.eraseNPreviousChars(t.pos) + case keyClearScreen: + // Erases the screen and moves the cursor to the home position. + t.queue([]rune("\x1b[2J\x1b[H")) + t.queue(t.prompt) + t.cursorX, t.cursorY = 0, 0 + t.advanceCursor(visualLength(t.prompt)) + t.setLine(t.line, t.pos) + default: + if t.AutoCompleteCallback != nil { + prefix := string(t.line[:t.pos]) + suffix := string(t.line[t.pos:]) + + t.lock.Unlock() + newLine, newPos, completeOk := t.AutoCompleteCallback(prefix+suffix, len(prefix), key) + t.lock.Lock() + + if completeOk { + t.setLine([]rune(newLine), utf8.RuneCount([]byte(newLine)[:newPos])) + return + } + } + if !isPrintable(key) { + return + } + if len(t.line) == maxLineLength { + return + } + t.addKeyToLine(key) + } + return +} + +// addKeyToLine inserts the given key at the current position in the current +// line. +func (t *Terminal) addKeyToLine(key rune) { + if len(t.line) == cap(t.line) { + newLine := make([]rune, len(t.line), 2*(1+len(t.line))) + copy(newLine, t.line) + t.line = newLine + } + t.line = t.line[:len(t.line)+1] + copy(t.line[t.pos+1:], t.line[t.pos:]) + t.line[t.pos] = key + if t.echo { + t.writeLine(t.line[t.pos:]) + } + t.pos++ + t.moveCursorToPos(t.pos) +} + +func (t *Terminal) writeLine(line []rune) { + for len(line) != 0 { + remainingOnLine := t.termWidth - t.cursorX + todo := len(line) + if todo > remainingOnLine { + todo = remainingOnLine + } + t.queue(line[:todo]) + t.advanceCursor(visualLength(line[:todo])) + line = line[todo:] + } +} + +// writeWithCRLF writes buf to w but replaces all occurrences of \n with \r\n. +func writeWithCRLF(w io.Writer, buf []byte) (n int, err error) { + for len(buf) > 0 { + i := bytes.IndexByte(buf, '\n') + todo := len(buf) + if i >= 0 { + todo = i + } + + var nn int + nn, err = w.Write(buf[:todo]) + n += nn + if err != nil { + return n, err + } + buf = buf[todo:] + + if i >= 0 { + if _, err = w.Write(crlf); err != nil { + return n, err + } + n++ + buf = buf[1:] + } + } + + return n, nil +} + +func (t *Terminal) Write(buf []byte) (n int, err error) { + t.lock.Lock() + defer t.lock.Unlock() + + if t.cursorX == 0 && t.cursorY == 0 { + // This is the easy case: there's nothing on the screen that we + // have to move out of the way. + return writeWithCRLF(t.c, buf) + } + + // We have a prompt and possibly user input on the screen. We + // have to clear it first. + t.move(0 /* up */, 0 /* down */, t.cursorX /* left */, 0 /* right */) + t.cursorX = 0 + t.clearLineToRight() + + for t.cursorY > 0 { + t.move(1 /* up */, 0, 0, 0) + t.cursorY-- + t.clearLineToRight() + } + + if _, err = t.c.Write(t.outBuf); err != nil { + return + } + t.outBuf = t.outBuf[:0] + + if n, err = writeWithCRLF(t.c, buf); err != nil { + return + } + + t.writeLine(t.prompt) + if t.echo { + t.writeLine(t.line) + } + + t.moveCursorToPos(t.pos) + + if _, err = t.c.Write(t.outBuf); err != nil { + return + } + t.outBuf = t.outBuf[:0] + return +} + +// ReadPassword temporarily changes the prompt and reads a password, without +// echo, from the terminal. +func (t *Terminal) ReadPassword(prompt string) (line string, err error) { + t.lock.Lock() + defer t.lock.Unlock() + + oldPrompt := t.prompt + t.prompt = []rune(prompt) + t.echo = false + + line, err = t.readLine() + + t.prompt = oldPrompt + t.echo = true + + return +} + +// ReadLine returns a line of input from the terminal. +func (t *Terminal) ReadLine() (line string, err error) { + t.lock.Lock() + defer t.lock.Unlock() + + return t.readLine() +} + +func (t *Terminal) readLine() (line string, err error) { + // t.lock must be held at this point + + if t.cursorX == 0 && t.cursorY == 0 { + t.writeLine(t.prompt) + t.c.Write(t.outBuf) + t.outBuf = t.outBuf[:0] + } + + lineIsPasted := t.pasteActive + + for { + rest := t.remainder + lineOk := false + for !lineOk { + var key rune + key, rest = bytesToKey(rest, t.pasteActive) + if key == utf8.RuneError { + break + } + if !t.pasteActive { + if key == keyCtrlD { + if len(t.line) == 0 { + return "", io.EOF + } + } + if key == keyPasteStart { + t.pasteActive = true + if len(t.line) == 0 { + lineIsPasted = true + } + continue + } + } else if key == keyPasteEnd { + t.pasteActive = false + continue + } + if !t.pasteActive { + lineIsPasted = false + } + line, lineOk = t.handleKey(key) + } + if len(rest) > 0 { + n := copy(t.inBuf[:], rest) + t.remainder = t.inBuf[:n] + } else { + t.remainder = nil + } + t.c.Write(t.outBuf) + t.outBuf = t.outBuf[:0] + if lineOk { + if t.echo { + t.historyIndex = -1 + t.history.Add(line) + } + if lineIsPasted { + err = ErrPasteIndicator + } + return + } + + // t.remainder is a slice at the beginning of t.inBuf + // containing a partial key sequence + readBuf := t.inBuf[len(t.remainder):] + var n int + + t.lock.Unlock() + n, err = t.c.Read(readBuf) + t.lock.Lock() + + if err != nil { + return + } + + t.remainder = t.inBuf[:n+len(t.remainder)] + } +} + +// SetPrompt sets the prompt to be used when reading subsequent lines. +func (t *Terminal) SetPrompt(prompt string) { + t.lock.Lock() + defer t.lock.Unlock() + + t.prompt = []rune(prompt) +} + +func (t *Terminal) clearAndRepaintLinePlusNPrevious(numPrevLines int) { + // Move cursor to column zero at the start of the line. + t.move(t.cursorY, 0, t.cursorX, 0) + t.cursorX, t.cursorY = 0, 0 + t.clearLineToRight() + for t.cursorY < numPrevLines { + // Move down a line + t.move(0, 1, 0, 0) + t.cursorY++ + t.clearLineToRight() + } + // Move back to beginning. + t.move(t.cursorY, 0, 0, 0) + t.cursorX, t.cursorY = 0, 0 + + t.queue(t.prompt) + t.advanceCursor(visualLength(t.prompt)) + t.writeLine(t.line) + t.moveCursorToPos(t.pos) +} + +func (t *Terminal) SetSize(width, height int) error { + t.lock.Lock() + defer t.lock.Unlock() + + if width == 0 { + width = 1 + } + + oldWidth := t.termWidth + t.termWidth, t.termHeight = width, height + + switch { + case width == oldWidth: + // If the width didn't change then nothing else needs to be + // done. + return nil + case len(t.line) == 0 && t.cursorX == 0 && t.cursorY == 0: + // If there is nothing on current line and no prompt printed, + // just do nothing + return nil + case width < oldWidth: + // Some terminals (e.g. xterm) will truncate lines that were + // too long when shinking. Others, (e.g. gnome-terminal) will + // attempt to wrap them. For the former, repainting t.maxLine + // works great, but that behaviour goes badly wrong in the case + // of the latter because they have doubled every full line. + + // We assume that we are working on a terminal that wraps lines + // and adjust the cursor position based on every previous line + // wrapping and turning into two. This causes the prompt on + // xterms to move upwards, which isn't great, but it avoids a + // huge mess with gnome-terminal. + if t.cursorX >= t.termWidth { + t.cursorX = t.termWidth - 1 + } + t.cursorY *= 2 + t.clearAndRepaintLinePlusNPrevious(t.maxLine * 2) + case width > oldWidth: + // If the terminal expands then our position calculations will + // be wrong in the future because we think the cursor is + // |t.pos| chars into the string, but there will be a gap at + // the end of any wrapped line. + // + // But the position will actually be correct until we move, so + // we can move back to the beginning and repaint everything. + t.clearAndRepaintLinePlusNPrevious(t.maxLine) + } + + _, err := t.c.Write(t.outBuf) + t.outBuf = t.outBuf[:0] + return err +} + +type pasteIndicatorError struct{} + +func (pasteIndicatorError) Error() string { + return "terminal: ErrPasteIndicator not correctly handled" +} + +// ErrPasteIndicator may be returned from ReadLine as the error, in addition +// to valid line data. It indicates that bracketed paste mode is enabled and +// that the returned line consists only of pasted data. Programs may wish to +// interpret pasted data more literally than typed data. +var ErrPasteIndicator = pasteIndicatorError{} + +// SetBracketedPasteMode requests that the terminal bracket paste operations +// with markers. Not all terminals support this but, if it is supported, then +// enabling this mode will stop any autocomplete callback from running due to +// pastes. Additionally, any lines that are completely pasted will be returned +// from ReadLine with the error set to ErrPasteIndicator. +func (t *Terminal) SetBracketedPasteMode(on bool) { + if on { + io.WriteString(t.c, "\x1b[?2004h") + } else { + io.WriteString(t.c, "\x1b[?2004l") + } +} + +// stRingBuffer is a ring buffer of strings. +type stRingBuffer struct { + // entries contains max elements. + entries []string + max int + // head contains the index of the element most recently added to the ring. + head int + // size contains the number of elements in the ring. + size int +} + +func (s *stRingBuffer) Add(a string) { + if s.entries == nil { + const defaultNumEntries = 100 + s.entries = make([]string, defaultNumEntries) + s.max = defaultNumEntries + } + + s.head = (s.head + 1) % s.max + s.entries[s.head] = a + if s.size < s.max { + s.size++ + } +} + +// NthPreviousEntry returns the value passed to the nth previous call to Add. +// If n is zero then the immediately prior value is returned, if one, then the +// next most recent, and so on. If such an element doesn't exist then ok is +// false. +func (s *stRingBuffer) NthPreviousEntry(n int) (value string, ok bool) { + if n >= s.size { + return "", false + } + index := s.head - n + if index < 0 { + index += s.max + } + return s.entries[index], true +} + +// readPasswordLine reads from reader until it finds \n or io.EOF. +// The slice returned does not include the \n. +// readPasswordLine also ignores any \r it finds. +func readPasswordLine(reader io.Reader) ([]byte, error) { + var buf [1]byte + var ret []byte + + for { + n, err := reader.Read(buf[:]) + if n > 0 { + switch buf[0] { + case '\n': + return ret, nil + case '\r': + // remove \r from passwords on Windows + default: + ret = append(ret, buf[0]) + } + continue + } + if err != nil { + if err == io.EOF && len(ret) > 0 { + return ret, nil + } + return ret, err + } + } +} diff --git a/vendor/golang.org/x/crypto/ssh/terminal/util.go b/vendor/golang.org/x/crypto/ssh/terminal/util.go new file mode 100644 index 000000000..02dad484e --- /dev/null +++ b/vendor/golang.org/x/crypto/ssh/terminal/util.go @@ -0,0 +1,116 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin dragonfly freebsd linux,!appengine netbsd openbsd + +// Package terminal provides support functions for dealing with terminals, as +// commonly found on UNIX systems. +// +// Putting a terminal into raw mode is the most common requirement: +// +// oldState, err := terminal.MakeRaw(0) +// if err != nil { +// panic(err) +// } +// defer terminal.Restore(0, oldState) +package terminal // import "golang.org/x/crypto/ssh/terminal" + +import ( + "golang.org/x/sys/unix" +) + +// State contains the state of a terminal. +type State struct { + termios unix.Termios +} + +// IsTerminal returns true if the given file descriptor is a terminal. +func IsTerminal(fd int) bool { + _, err := unix.IoctlGetTermios(fd, ioctlReadTermios) + return err == nil +} + +// MakeRaw put the terminal connected to the given file descriptor into raw +// mode and returns the previous state of the terminal so that it can be +// restored. +func MakeRaw(fd int) (*State, error) { + termios, err := unix.IoctlGetTermios(fd, ioctlReadTermios) + if err != nil { + return nil, err + } + + oldState := State{termios: *termios} + + // This attempts to replicate the behaviour documented for cfmakeraw in + // the termios(3) manpage. + termios.Iflag &^= unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON + termios.Oflag &^= unix.OPOST + termios.Lflag &^= unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN + termios.Cflag &^= unix.CSIZE | unix.PARENB + termios.Cflag |= unix.CS8 + termios.Cc[unix.VMIN] = 1 + termios.Cc[unix.VTIME] = 0 + if err := unix.IoctlSetTermios(fd, ioctlWriteTermios, termios); err != nil { + return nil, err + } + + return &oldState, nil +} + +// GetState returns the current state of a terminal which may be useful to +// restore the terminal after a signal. +func GetState(fd int) (*State, error) { + termios, err := unix.IoctlGetTermios(fd, ioctlReadTermios) + if err != nil { + return nil, err + } + + return &State{termios: *termios}, nil +} + +// Restore restores the terminal connected to the given file descriptor to a +// previous state. +func Restore(fd int, state *State) error { + return unix.IoctlSetTermios(fd, ioctlWriteTermios, &state.termios) +} + +// GetSize returns the dimensions of the given terminal. +func GetSize(fd int) (width, height int, err error) { + ws, err := unix.IoctlGetWinsize(fd, unix.TIOCGWINSZ) + if err != nil { + return -1, -1, err + } + return int(ws.Col), int(ws.Row), nil +} + +// passwordReader is an io.Reader that reads from a specific file descriptor. +type passwordReader int + +func (r passwordReader) Read(buf []byte) (int, error) { + return unix.Read(int(r), buf) +} + +// ReadPassword reads a line of input from a terminal without local echo. This +// is commonly used for inputting passwords and other sensitive data. The slice +// returned does not include the \n. +func ReadPassword(fd int) ([]byte, error) { + termios, err := unix.IoctlGetTermios(fd, ioctlReadTermios) + if err != nil { + return nil, err + } + + newState := *termios + newState.Lflag &^= unix.ECHO + newState.Lflag |= unix.ICANON | unix.ISIG + newState.Iflag |= unix.ICRNL + if err := unix.IoctlSetTermios(fd, ioctlWriteTermios, &newState); err != nil { + return nil, err + } + + defer func() { + unix.IoctlSetTermios(fd, ioctlWriteTermios, termios) + }() + + return readPasswordLine(passwordReader(fd)) +} diff --git a/vendor/golang.org/x/crypto/ssh/terminal/util_bsd.go b/vendor/golang.org/x/crypto/ssh/terminal/util_bsd.go new file mode 100644 index 000000000..cb23a5904 --- /dev/null +++ b/vendor/golang.org/x/crypto/ssh/terminal/util_bsd.go @@ -0,0 +1,12 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin dragonfly freebsd netbsd openbsd + +package terminal + +import "golang.org/x/sys/unix" + +const ioctlReadTermios = unix.TIOCGETA +const ioctlWriteTermios = unix.TIOCSETA diff --git a/vendor/golang.org/x/crypto/ssh/terminal/util_linux.go b/vendor/golang.org/x/crypto/ssh/terminal/util_linux.go new file mode 100644 index 000000000..5fadfe8a1 --- /dev/null +++ b/vendor/golang.org/x/crypto/ssh/terminal/util_linux.go @@ -0,0 +1,10 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package terminal + +import "golang.org/x/sys/unix" + +const ioctlReadTermios = unix.TCGETS +const ioctlWriteTermios = unix.TCSETS diff --git a/vendor/golang.org/x/crypto/ssh/terminal/util_plan9.go b/vendor/golang.org/x/crypto/ssh/terminal/util_plan9.go new file mode 100644 index 000000000..799f049f0 --- /dev/null +++ b/vendor/golang.org/x/crypto/ssh/terminal/util_plan9.go @@ -0,0 +1,58 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package terminal provides support functions for dealing with terminals, as +// commonly found on UNIX systems. +// +// Putting a terminal into raw mode is the most common requirement: +// +// oldState, err := terminal.MakeRaw(0) +// if err != nil { +// panic(err) +// } +// defer terminal.Restore(0, oldState) +package terminal + +import ( + "fmt" + "runtime" +) + +type State struct{} + +// IsTerminal returns true if the given file descriptor is a terminal. +func IsTerminal(fd int) bool { + return false +} + +// MakeRaw put the terminal connected to the given file descriptor into raw +// mode and returns the previous state of the terminal so that it can be +// restored. +func MakeRaw(fd int) (*State, error) { + return nil, fmt.Errorf("terminal: MakeRaw not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) +} + +// GetState returns the current state of a terminal which may be useful to +// restore the terminal after a signal. +func GetState(fd int) (*State, error) { + return nil, fmt.Errorf("terminal: GetState not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) +} + +// Restore restores the terminal connected to the given file descriptor to a +// previous state. +func Restore(fd int, state *State) error { + return fmt.Errorf("terminal: Restore not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) +} + +// GetSize returns the dimensions of the given terminal. +func GetSize(fd int) (width, height int, err error) { + return 0, 0, fmt.Errorf("terminal: GetSize not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) +} + +// ReadPassword reads a line of input from a terminal without local echo. This +// is commonly used for inputting passwords and other sensitive data. The slice +// returned does not include the \n. +func ReadPassword(fd int) ([]byte, error) { + return nil, fmt.Errorf("terminal: ReadPassword not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) +} diff --git a/vendor/golang.org/x/crypto/ssh/terminal/util_solaris.go b/vendor/golang.org/x/crypto/ssh/terminal/util_solaris.go new file mode 100644 index 000000000..a2e1b57dc --- /dev/null +++ b/vendor/golang.org/x/crypto/ssh/terminal/util_solaris.go @@ -0,0 +1,128 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build solaris + +package terminal // import "golang.org/x/crypto/ssh/terminal" + +import ( + "golang.org/x/sys/unix" + "io" + "syscall" +) + +// State contains the state of a terminal. +type State struct { + state *unix.Termios +} + +// IsTerminal returns true if the given file descriptor is a terminal. +func IsTerminal(fd int) bool { + _, err := unix.IoctlGetTermio(fd, unix.TCGETA) + return err == nil +} + +// ReadPassword reads a line of input from a terminal without local echo. This +// is commonly used for inputting passwords and other sensitive data. The slice +// returned does not include the \n. +func ReadPassword(fd int) ([]byte, error) { + // see also: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libast/common/uwin/getpass.c + val, err := unix.IoctlGetTermios(fd, unix.TCGETS) + if err != nil { + return nil, err + } + oldState := *val + + newState := oldState + newState.Lflag &^= syscall.ECHO + newState.Lflag |= syscall.ICANON | syscall.ISIG + newState.Iflag |= syscall.ICRNL + err = unix.IoctlSetTermios(fd, unix.TCSETS, &newState) + if err != nil { + return nil, err + } + + defer unix.IoctlSetTermios(fd, unix.TCSETS, &oldState) + + var buf [16]byte + var ret []byte + for { + n, err := syscall.Read(fd, buf[:]) + if err != nil { + return nil, err + } + if n == 0 { + if len(ret) == 0 { + return nil, io.EOF + } + break + } + if buf[n-1] == '\n' { + n-- + } + ret = append(ret, buf[:n]...) + if n < len(buf) { + break + } + } + + return ret, nil +} + +// MakeRaw puts the terminal connected to the given file descriptor into raw +// mode and returns the previous state of the terminal so that it can be +// restored. +// see http://cr.illumos.org/~webrev/andy_js/1060/ +func MakeRaw(fd int) (*State, error) { + oldTermiosPtr, err := unix.IoctlGetTermios(fd, unix.TCGETS) + if err != nil { + return nil, err + } + oldTermios := *oldTermiosPtr + + newTermios := oldTermios + newTermios.Iflag &^= syscall.IGNBRK | syscall.BRKINT | syscall.PARMRK | syscall.ISTRIP | syscall.INLCR | syscall.IGNCR | syscall.ICRNL | syscall.IXON + newTermios.Oflag &^= syscall.OPOST + newTermios.Lflag &^= syscall.ECHO | syscall.ECHONL | syscall.ICANON | syscall.ISIG | syscall.IEXTEN + newTermios.Cflag &^= syscall.CSIZE | syscall.PARENB + newTermios.Cflag |= syscall.CS8 + newTermios.Cc[unix.VMIN] = 1 + newTermios.Cc[unix.VTIME] = 0 + + if err := unix.IoctlSetTermios(fd, unix.TCSETS, &newTermios); err != nil { + return nil, err + } + + return &State{ + state: oldTermiosPtr, + }, nil +} + +// Restore restores the terminal connected to the given file descriptor to a +// previous state. +func Restore(fd int, oldState *State) error { + return unix.IoctlSetTermios(fd, unix.TCSETS, oldState.state) +} + +// GetState returns the current state of a terminal which may be useful to +// restore the terminal after a signal. +func GetState(fd int) (*State, error) { + oldTermiosPtr, err := unix.IoctlGetTermios(fd, unix.TCGETS) + if err != nil { + return nil, err + } + + return &State{ + state: oldTermiosPtr, + }, nil +} + +// GetSize returns the dimensions of the given terminal. +func GetSize(fd int) (width, height int, err error) { + ws, err := unix.IoctlGetWinsize(fd, unix.TIOCGWINSZ) + if err != nil { + return 0, 0, err + } + return int(ws.Col), int(ws.Row), nil +} diff --git a/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go b/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go new file mode 100644 index 000000000..4933ac361 --- /dev/null +++ b/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go @@ -0,0 +1,105 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +// Package terminal provides support functions for dealing with terminals, as +// commonly found on UNIX systems. +// +// Putting a terminal into raw mode is the most common requirement: +// +// oldState, err := terminal.MakeRaw(0) +// if err != nil { +// panic(err) +// } +// defer terminal.Restore(0, oldState) +package terminal + +import ( + "os" + + "golang.org/x/sys/windows" +) + +type State struct { + mode uint32 +} + +// IsTerminal returns true if the given file descriptor is a terminal. +func IsTerminal(fd int) bool { + var st uint32 + err := windows.GetConsoleMode(windows.Handle(fd), &st) + return err == nil +} + +// MakeRaw put the terminal connected to the given file descriptor into raw +// mode and returns the previous state of the terminal so that it can be +// restored. +func MakeRaw(fd int) (*State, error) { + var st uint32 + if err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil { + return nil, err + } + raw := st &^ (windows.ENABLE_ECHO_INPUT | windows.ENABLE_PROCESSED_INPUT | windows.ENABLE_LINE_INPUT | windows.ENABLE_PROCESSED_OUTPUT) + if err := windows.SetConsoleMode(windows.Handle(fd), raw); err != nil { + return nil, err + } + return &State{st}, nil +} + +// GetState returns the current state of a terminal which may be useful to +// restore the terminal after a signal. +func GetState(fd int) (*State, error) { + var st uint32 + if err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil { + return nil, err + } + return &State{st}, nil +} + +// Restore restores the terminal connected to the given file descriptor to a +// previous state. +func Restore(fd int, state *State) error { + return windows.SetConsoleMode(windows.Handle(fd), state.mode) +} + +// GetSize returns the dimensions of the given terminal. +func GetSize(fd int) (width, height int, err error) { + var info windows.ConsoleScreenBufferInfo + if err := windows.GetConsoleScreenBufferInfo(windows.Handle(fd), &info); err != nil { + return 0, 0, err + } + return int(info.Size.X), int(info.Size.Y), nil +} + +// ReadPassword reads a line of input from a terminal without local echo. This +// is commonly used for inputting passwords and other sensitive data. The slice +// returned does not include the \n. +func ReadPassword(fd int) ([]byte, error) { + var st uint32 + if err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil { + return nil, err + } + old := st + + st &^= (windows.ENABLE_ECHO_INPUT) + st |= (windows.ENABLE_PROCESSED_INPUT | windows.ENABLE_LINE_INPUT | windows.ENABLE_PROCESSED_OUTPUT) + if err := windows.SetConsoleMode(windows.Handle(fd), st); err != nil { + return nil, err + } + + defer func() { + windows.SetConsoleMode(windows.Handle(fd), old) + }() + + var h windows.Handle + p, _ := windows.GetCurrentProcess() + if err := windows.DuplicateHandle(p, windows.Handle(fd), p, &h, 0, false, windows.DUPLICATE_SAME_ACCESS); err != nil { + return nil, err + } + + f := os.NewFile(uintptr(h), "stdin") + defer f.Close() + return readPasswordLine(f) +} diff --git a/vendor/k8s.io/api/core/v1/generated.pb.go b/vendor/k8s.io/api/core/v1/generated.pb.go index 7f11d1127..85c7b634b 100644 --- a/vendor/k8s.io/api/core/v1/generated.pb.go +++ b/vendor/k8s.io/api/core/v1/generated.pb.go @@ -208,6 +208,7 @@ limitations under the License. Volume VolumeDevice VolumeMount + VolumeNodeAffinity VolumeProjection VolumeSource VsphereVirtualDiskVolumeSource @@ -1027,24 +1028,28 @@ func (m *VolumeMount) Reset() { *m = VolumeMount{} } func (*VolumeMount) ProtoMessage() {} func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{182} } +func (m *VolumeNodeAffinity) Reset() { *m = VolumeNodeAffinity{} } +func (*VolumeNodeAffinity) ProtoMessage() {} +func (*VolumeNodeAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{183} } + func (m *VolumeProjection) Reset() { *m = VolumeProjection{} } func (*VolumeProjection) ProtoMessage() {} -func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{183} } +func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{184} } func (m *VolumeSource) Reset() { *m = VolumeSource{} } func (*VolumeSource) ProtoMessage() {} -func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{184} } +func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{185} } func (m *VsphereVirtualDiskVolumeSource) Reset() { *m = VsphereVirtualDiskVolumeSource{} } func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {} func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{185} + return fileDescriptorGenerated, []int{186} } func (m *WeightedPodAffinityTerm) Reset() { *m = WeightedPodAffinityTerm{} } func (*WeightedPodAffinityTerm) ProtoMessage() {} func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{186} + return fileDescriptorGenerated, []int{187} } func init() { @@ -1231,6 +1236,7 @@ func init() { proto.RegisterType((*Volume)(nil), "k8s.io.api.core.v1.Volume") proto.RegisterType((*VolumeDevice)(nil), "k8s.io.api.core.v1.VolumeDevice") proto.RegisterType((*VolumeMount)(nil), "k8s.io.api.core.v1.VolumeMount") + proto.RegisterType((*VolumeNodeAffinity)(nil), "k8s.io.api.core.v1.VolumeNodeAffinity") proto.RegisterType((*VolumeProjection)(nil), "k8s.io.api.core.v1.VolumeProjection") proto.RegisterType((*VolumeSource)(nil), "k8s.io.api.core.v1.VolumeSource") proto.RegisterType((*VsphereVirtualDiskVolumeSource)(nil), "k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource") @@ -1574,6 +1580,58 @@ func (m *CSIPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) i += copy(dAtA[i:], m.FSType) + if len(m.VolumeAttributes) > 0 { + keysForVolumeAttributes := make([]string, 0, len(m.VolumeAttributes)) + for k := range m.VolumeAttributes { + keysForVolumeAttributes = append(keysForVolumeAttributes, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForVolumeAttributes) + for _, k := range keysForVolumeAttributes { + dAtA[i] = 0x2a + i++ + v := m.VolumeAttributes[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + if m.ControllerPublishSecretRef != nil { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ControllerPublishSecretRef.Size())) + n6, err := m.ControllerPublishSecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + if m.NodeStageSecretRef != nil { + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NodeStageSecretRef.Size())) + n7, err := m.NodeStageSecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + if m.NodePublishSecretRef != nil { + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NodePublishSecretRef.Size())) + n8, err := m.NodePublishSecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } return i, nil } @@ -1671,11 +1729,11 @@ func (m *CephFSPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n6, err := m.SecretRef.MarshalTo(dAtA[i:]) + n9, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n6 + i += n9 } dAtA[i] = 0x30 i++ @@ -1734,11 +1792,11 @@ func (m *CephFSVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n7, err := m.SecretRef.MarshalTo(dAtA[i:]) + n10, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n7 + i += n10 } dAtA[i] = 0x30 i++ @@ -1860,11 +1918,11 @@ func (m *ComponentStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n8, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n11, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n8 + i += n11 if len(m.Conditions) > 0 { for _, msg := range m.Conditions { dAtA[i] = 0x12 @@ -1898,11 +1956,11 @@ func (m *ComponentStatusList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n9, err := m.ListMeta.MarshalTo(dAtA[i:]) + n12, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n9 + i += n12 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -1936,11 +1994,11 @@ func (m *ConfigMap) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n10, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n13, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n10 + i += n13 if len(m.Data) > 0 { keysForData := make([]string, 0, len(m.Data)) for k := range m.Data { @@ -2012,11 +2070,11 @@ func (m *ConfigMapEnvSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n11, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n14, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n11 + i += n14 if m.Optional != nil { dAtA[i] = 0x10 i++ @@ -2048,11 +2106,11 @@ func (m *ConfigMapKeySelector) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n12, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n15, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n12 + i += n15 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) @@ -2088,11 +2146,11 @@ func (m *ConfigMapList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n13, err := m.ListMeta.MarshalTo(dAtA[i:]) + n16, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n13 + i += n16 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -2126,11 +2184,11 @@ func (m *ConfigMapProjection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n14, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n17, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n14 + i += n17 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -2174,11 +2232,11 @@ func (m *ConfigMapVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n15, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n18, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n15 + i += n18 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -2293,11 +2351,11 @@ func (m *Container) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Resources.Size())) - n16, err := m.Resources.MarshalTo(dAtA[i:]) + n19, err := m.Resources.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n16 + i += n19 if len(m.VolumeMounts) > 0 { for _, msg := range m.VolumeMounts { dAtA[i] = 0x4a @@ -2314,31 +2372,31 @@ func (m *Container) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x52 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LivenessProbe.Size())) - n17, err := m.LivenessProbe.MarshalTo(dAtA[i:]) + n20, err := m.LivenessProbe.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n17 + i += n20 } if m.ReadinessProbe != nil { dAtA[i] = 0x5a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ReadinessProbe.Size())) - n18, err := m.ReadinessProbe.MarshalTo(dAtA[i:]) + n21, err := m.ReadinessProbe.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n18 + i += n21 } if m.Lifecycle != nil { dAtA[i] = 0x62 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Lifecycle.Size())) - n19, err := m.Lifecycle.MarshalTo(dAtA[i:]) + n22, err := m.Lifecycle.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n19 + i += n22 } dAtA[i] = 0x6a i++ @@ -2352,11 +2410,11 @@ func (m *Container) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x7a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecurityContext.Size())) - n20, err := m.SecurityContext.MarshalTo(dAtA[i:]) + n23, err := m.SecurityContext.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n20 + i += n23 } dAtA[i] = 0x80 i++ @@ -2516,31 +2574,31 @@ func (m *ContainerState) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Waiting.Size())) - n21, err := m.Waiting.MarshalTo(dAtA[i:]) + n24, err := m.Waiting.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n21 + i += n24 } if m.Running != nil { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Running.Size())) - n22, err := m.Running.MarshalTo(dAtA[i:]) + n25, err := m.Running.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n22 + i += n25 } if m.Terminated != nil { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Terminated.Size())) - n23, err := m.Terminated.MarshalTo(dAtA[i:]) + n26, err := m.Terminated.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n23 + i += n26 } return i, nil } @@ -2563,11 +2621,11 @@ func (m *ContainerStateRunning) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.StartedAt.Size())) - n24, err := m.StartedAt.MarshalTo(dAtA[i:]) + n27, err := m.StartedAt.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n24 + i += n27 return i, nil } @@ -2603,19 +2661,19 @@ func (m *ContainerStateTerminated) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.StartedAt.Size())) - n25, err := m.StartedAt.MarshalTo(dAtA[i:]) + n28, err := m.StartedAt.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n25 + i += n28 dAtA[i] = 0x32 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.FinishedAt.Size())) - n26, err := m.FinishedAt.MarshalTo(dAtA[i:]) + n29, err := m.FinishedAt.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n26 + i += n29 dAtA[i] = 0x3a i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.ContainerID))) @@ -2671,19 +2729,19 @@ func (m *ContainerStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.State.Size())) - n27, err := m.State.MarshalTo(dAtA[i:]) + n30, err := m.State.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n27 + i += n30 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LastTerminationState.Size())) - n28, err := m.LastTerminationState.MarshalTo(dAtA[i:]) + n31, err := m.LastTerminationState.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n28 + i += n31 dAtA[i] = 0x20 i++ if m.Ready { @@ -2755,11 +2813,11 @@ func (m *DeleteOptions) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Preconditions.Size())) - n29, err := m.Preconditions.MarshalTo(dAtA[i:]) + n32, err := m.Preconditions.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n29 + i += n32 } if m.OrphanDependents != nil { dAtA[i] = 0x18 @@ -2833,21 +2891,21 @@ func (m *DownwardAPIVolumeFile) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.FieldRef.Size())) - n30, err := m.FieldRef.MarshalTo(dAtA[i:]) + n33, err := m.FieldRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n30 + i += n33 } if m.ResourceFieldRef != nil { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceFieldRef.Size())) - n31, err := m.ResourceFieldRef.MarshalTo(dAtA[i:]) + n34, err := m.ResourceFieldRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n31 + i += n34 } if m.Mode != nil { dAtA[i] = 0x20 @@ -2915,11 +2973,11 @@ func (m *EmptyDirVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SizeLimit.Size())) - n32, err := m.SizeLimit.MarshalTo(dAtA[i:]) + n35, err := m.SizeLimit.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n32 + i += n35 } return i, nil } @@ -2947,11 +3005,11 @@ func (m *EndpointAddress) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.TargetRef.Size())) - n33, err := m.TargetRef.MarshalTo(dAtA[i:]) + n36, err := m.TargetRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n33 + i += n36 } dAtA[i] = 0x1a i++ @@ -3067,11 +3125,11 @@ func (m *Endpoints) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n34, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n37, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n34 + i += n37 if len(m.Subsets) > 0 { for _, msg := range m.Subsets { dAtA[i] = 0x12 @@ -3105,11 +3163,11 @@ func (m *EndpointsList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n35, err := m.ListMeta.MarshalTo(dAtA[i:]) + n38, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n35 + i += n38 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -3148,21 +3206,21 @@ func (m *EnvFromSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMapRef.Size())) - n36, err := m.ConfigMapRef.MarshalTo(dAtA[i:]) + n39, err := m.ConfigMapRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n36 + i += n39 } if m.SecretRef != nil { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n37, err := m.SecretRef.MarshalTo(dAtA[i:]) + n40, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n37 + i += n40 } return i, nil } @@ -3194,11 +3252,11 @@ func (m *EnvVar) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ValueFrom.Size())) - n38, err := m.ValueFrom.MarshalTo(dAtA[i:]) + n41, err := m.ValueFrom.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n38 + i += n41 } return i, nil } @@ -3222,41 +3280,41 @@ func (m *EnvVarSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.FieldRef.Size())) - n39, err := m.FieldRef.MarshalTo(dAtA[i:]) + n42, err := m.FieldRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n39 + i += n42 } if m.ResourceFieldRef != nil { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceFieldRef.Size())) - n40, err := m.ResourceFieldRef.MarshalTo(dAtA[i:]) + n43, err := m.ResourceFieldRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n40 + i += n43 } if m.ConfigMapKeyRef != nil { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMapKeyRef.Size())) - n41, err := m.ConfigMapKeyRef.MarshalTo(dAtA[i:]) + n44, err := m.ConfigMapKeyRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n41 + i += n44 } if m.SecretKeyRef != nil { dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretKeyRef.Size())) - n42, err := m.SecretKeyRef.MarshalTo(dAtA[i:]) + n45, err := m.SecretKeyRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n42 + i += n45 } return i, nil } @@ -3279,19 +3337,19 @@ func (m *Event) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n43, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n46, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n43 + i += n46 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.InvolvedObject.Size())) - n44, err := m.InvolvedObject.MarshalTo(dAtA[i:]) + n47, err := m.InvolvedObject.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n44 + i += n47 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) @@ -3303,27 +3361,27 @@ func (m *Event) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Source.Size())) - n45, err := m.Source.MarshalTo(dAtA[i:]) + n48, err := m.Source.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n45 + i += n48 dAtA[i] = 0x32 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.FirstTimestamp.Size())) - n46, err := m.FirstTimestamp.MarshalTo(dAtA[i:]) + n49, err := m.FirstTimestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n46 + i += n49 dAtA[i] = 0x3a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LastTimestamp.Size())) - n47, err := m.LastTimestamp.MarshalTo(dAtA[i:]) + n50, err := m.LastTimestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n47 + i += n50 dAtA[i] = 0x40 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Count)) @@ -3334,20 +3392,20 @@ func (m *Event) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x52 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.EventTime.Size())) - n48, err := m.EventTime.MarshalTo(dAtA[i:]) + n51, err := m.EventTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n48 + i += n51 if m.Series != nil { dAtA[i] = 0x5a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Series.Size())) - n49, err := m.Series.MarshalTo(dAtA[i:]) + n52, err := m.Series.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n49 + i += n52 } dAtA[i] = 0x62 i++ @@ -3357,11 +3415,11 @@ func (m *Event) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x6a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Related.Size())) - n50, err := m.Related.MarshalTo(dAtA[i:]) + n53, err := m.Related.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n50 + i += n53 } dAtA[i] = 0x72 i++ @@ -3392,11 +3450,11 @@ func (m *EventList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n51, err := m.ListMeta.MarshalTo(dAtA[i:]) + n54, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n51 + i += n54 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -3433,11 +3491,11 @@ func (m *EventSeries) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LastObservedTime.Size())) - n52, err := m.LastObservedTime.MarshalTo(dAtA[i:]) + n55, err := m.LastObservedTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n52 + i += n55 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.State))) @@ -3596,11 +3654,11 @@ func (m *FlexPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n53, err := m.SecretRef.MarshalTo(dAtA[i:]) + n56, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n53 + i += n56 } dAtA[i] = 0x20 i++ @@ -3662,11 +3720,11 @@ func (m *FlexVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n54, err := m.SecretRef.MarshalTo(dAtA[i:]) + n57, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n54 + i += n57 } dAtA[i] = 0x20 i++ @@ -3850,11 +3908,11 @@ func (m *HTTPGetAction) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Port.Size())) - n55, err := m.Port.MarshalTo(dAtA[i:]) + n58, err := m.Port.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n55 + i += n58 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Host))) @@ -3923,31 +3981,31 @@ func (m *Handler) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Exec.Size())) - n56, err := m.Exec.MarshalTo(dAtA[i:]) + n59, err := m.Exec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n56 + i += n59 } if m.HTTPGet != nil { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.HTTPGet.Size())) - n57, err := m.HTTPGet.MarshalTo(dAtA[i:]) + n60, err := m.HTTPGet.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n57 + i += n60 } if m.TCPSocket != nil { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.TCPSocket.Size())) - n58, err := m.TCPSocket.MarshalTo(dAtA[i:]) + n61, err := m.TCPSocket.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n58 + i += n61 } return i, nil } @@ -4086,11 +4144,11 @@ func (m *ISCSIPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x52 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n59, err := m.SecretRef.MarshalTo(dAtA[i:]) + n62, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n59 + i += n62 } dAtA[i] = 0x58 i++ @@ -4178,11 +4236,11 @@ func (m *ISCSIVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x52 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n60, err := m.SecretRef.MarshalTo(dAtA[i:]) + n63, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n60 + i += n63 } dAtA[i] = 0x58 i++ @@ -4251,21 +4309,21 @@ func (m *Lifecycle) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PostStart.Size())) - n61, err := m.PostStart.MarshalTo(dAtA[i:]) + n64, err := m.PostStart.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n61 + i += n64 } if m.PreStop != nil { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PreStop.Size())) - n62, err := m.PreStop.MarshalTo(dAtA[i:]) + n65, err := m.PreStop.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n62 + i += n65 } return i, nil } @@ -4288,19 +4346,19 @@ func (m *LimitRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n63, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n66, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n63 + i += n66 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n64, err := m.Spec.MarshalTo(dAtA[i:]) + n67, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n64 + i += n67 return i, nil } @@ -4347,11 +4405,11 @@ func (m *LimitRangeItem) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n65, err := (&v).MarshalTo(dAtA[i:]) + n68, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n65 + i += n68 } } if len(m.Min) > 0 { @@ -4378,11 +4436,11 @@ func (m *LimitRangeItem) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n66, err := (&v).MarshalTo(dAtA[i:]) + n69, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n66 + i += n69 } } if len(m.Default) > 0 { @@ -4409,11 +4467,11 @@ func (m *LimitRangeItem) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n67, err := (&v).MarshalTo(dAtA[i:]) + n70, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n67 + i += n70 } } if len(m.DefaultRequest) > 0 { @@ -4440,11 +4498,11 @@ func (m *LimitRangeItem) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n68, err := (&v).MarshalTo(dAtA[i:]) + n71, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n68 + i += n71 } } if len(m.MaxLimitRequestRatio) > 0 { @@ -4471,11 +4529,11 @@ func (m *LimitRangeItem) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n69, err := (&v).MarshalTo(dAtA[i:]) + n72, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n69 + i += n72 } } return i, nil @@ -4499,11 +4557,11 @@ func (m *LimitRangeList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n70, err := m.ListMeta.MarshalTo(dAtA[i:]) + n73, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n70 + i += n73 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -4567,11 +4625,11 @@ func (m *List) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n71, err := m.ListMeta.MarshalTo(dAtA[i:]) + n74, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n71 + i += n74 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -4790,27 +4848,27 @@ func (m *Namespace) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n72, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n75, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n72 + i += n75 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n73, err := m.Spec.MarshalTo(dAtA[i:]) + n76, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n73 + i += n76 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n74, err := m.Status.MarshalTo(dAtA[i:]) + n77, err := m.Status.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n74 + i += n77 return i, nil } @@ -4832,11 +4890,11 @@ func (m *NamespaceList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n75, err := m.ListMeta.MarshalTo(dAtA[i:]) + n78, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n75 + i += n78 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -4925,27 +4983,27 @@ func (m *Node) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n76, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n79, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n76 + i += n79 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n77, err := m.Spec.MarshalTo(dAtA[i:]) + n80, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n77 + i += n80 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n78, err := m.Status.MarshalTo(dAtA[i:]) + n81, err := m.Status.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n78 + i += n81 return i, nil } @@ -4994,11 +5052,11 @@ func (m *NodeAffinity) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.RequiredDuringSchedulingIgnoredDuringExecution.Size())) - n79, err := m.RequiredDuringSchedulingIgnoredDuringExecution.MarshalTo(dAtA[i:]) + n82, err := m.RequiredDuringSchedulingIgnoredDuringExecution.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n79 + i += n82 } if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { for _, msg := range m.PreferredDuringSchedulingIgnoredDuringExecution { @@ -5041,19 +5099,19 @@ func (m *NodeCondition) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LastHeartbeatTime.Size())) - n80, err := m.LastHeartbeatTime.MarshalTo(dAtA[i:]) + n83, err := m.LastHeartbeatTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n80 + i += n83 dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) - n81, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + n84, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n81 + i += n84 dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) @@ -5084,11 +5142,11 @@ func (m *NodeConfigSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMapRef.Size())) - n82, err := m.ConfigMapRef.MarshalTo(dAtA[i:]) + n85, err := m.ConfigMapRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n82 + i += n85 } return i, nil } @@ -5111,11 +5169,11 @@ func (m *NodeDaemonEndpoints) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.KubeletEndpoint.Size())) - n83, err := m.KubeletEndpoint.MarshalTo(dAtA[i:]) + n86, err := m.KubeletEndpoint.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n83 + i += n86 return i, nil } @@ -5137,11 +5195,11 @@ func (m *NodeList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n84, err := m.ListMeta.MarshalTo(dAtA[i:]) + n87, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n84 + i += n87 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -5218,11 +5276,11 @@ func (m *NodeResources) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n85, err := (&v).MarshalTo(dAtA[i:]) + n88, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n85 + i += n88 } } return i, nil @@ -5380,11 +5438,11 @@ func (m *NodeSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x32 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigSource.Size())) - n86, err := m.ConfigSource.MarshalTo(dAtA[i:]) + n89, err := m.ConfigSource.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n86 + i += n89 } return i, nil } @@ -5428,11 +5486,11 @@ func (m *NodeStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n87, err := (&v).MarshalTo(dAtA[i:]) + n90, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n87 + i += n90 } } if len(m.Allocatable) > 0 { @@ -5459,11 +5517,11 @@ func (m *NodeStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n88, err := (&v).MarshalTo(dAtA[i:]) + n91, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n88 + i += n91 } } dAtA[i] = 0x1a @@ -5497,19 +5555,19 @@ func (m *NodeStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x32 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.DaemonEndpoints.Size())) - n89, err := m.DaemonEndpoints.MarshalTo(dAtA[i:]) + n92, err := m.DaemonEndpoints.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n89 + i += n92 dAtA[i] = 0x3a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.NodeInfo.Size())) - n90, err := m.NodeInfo.MarshalTo(dAtA[i:]) + n93, err := m.NodeInfo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n90 + i += n93 if len(m.Images) > 0 { for _, msg := range m.Images { dAtA[i] = 0x42 @@ -5681,20 +5739,20 @@ func (m *ObjectMeta) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.CreationTimestamp.Size())) - n91, err := m.CreationTimestamp.MarshalTo(dAtA[i:]) + n94, err := m.CreationTimestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n91 + i += n94 if m.DeletionTimestamp != nil { dAtA[i] = 0x4a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.DeletionTimestamp.Size())) - n92, err := m.DeletionTimestamp.MarshalTo(dAtA[i:]) + n95, err := m.DeletionTimestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n92 + i += n95 } if m.DeletionGracePeriodSeconds != nil { dAtA[i] = 0x50 @@ -5782,11 +5840,11 @@ func (m *ObjectMeta) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Initializers.Size())) - n93, err := m.Initializers.MarshalTo(dAtA[i:]) + n96, err := m.Initializers.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n93 + i += n96 } return i, nil } @@ -5848,48 +5906,6 @@ func (m *PersistentVolume) Marshal() (dAtA []byte, err error) { } func (m *PersistentVolume) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - dAtA[i] = 0xa - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n94, err := m.ObjectMeta.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n94 - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n95, err := m.Spec.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n95 - dAtA[i] = 0x1a - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n96, err := m.Status.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n96 - return i, nil -} - -func (m *PersistentVolumeClaim) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *PersistentVolumeClaim) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int @@ -5921,6 +5937,48 @@ func (m *PersistentVolumeClaim) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *PersistentVolumeClaim) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolumeClaim) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n100, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n100 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n101, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n101 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n102, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n102 + return i, nil +} + func (m *PersistentVolumeClaimCondition) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -5947,19 +6005,19 @@ func (m *PersistentVolumeClaimCondition) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LastProbeTime.Size())) - n100, err := m.LastProbeTime.MarshalTo(dAtA[i:]) + n103, err := m.LastProbeTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n100 + i += n103 dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) - n101, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + n104, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n101 + i += n104 dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) @@ -5989,11 +6047,11 @@ func (m *PersistentVolumeClaimList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n102, err := m.ListMeta.MarshalTo(dAtA[i:]) + n105, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n102 + i += n105 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -6042,11 +6100,11 @@ func (m *PersistentVolumeClaimSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Resources.Size())) - n103, err := m.Resources.MarshalTo(dAtA[i:]) + n106, err := m.Resources.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n103 + i += n106 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeName))) @@ -6055,11 +6113,11 @@ func (m *PersistentVolumeClaimSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size())) - n104, err := m.Selector.MarshalTo(dAtA[i:]) + n107, err := m.Selector.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n104 + i += n107 } if m.StorageClassName != nil { dAtA[i] = 0x2a @@ -6134,11 +6192,11 @@ func (m *PersistentVolumeClaimStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n105, err := (&v).MarshalTo(dAtA[i:]) + n108, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n105 + i += n108 } } if len(m.Conditions) > 0 { @@ -6204,11 +6262,11 @@ func (m *PersistentVolumeList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n106, err := m.ListMeta.MarshalTo(dAtA[i:]) + n109, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n106 + i += n109 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -6243,163 +6301,163 @@ func (m *PersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) - n107, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n107 - } - if m.AWSElasticBlockStore != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) - n108, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n108 - } - if m.HostPath != nil { - dAtA[i] = 0x1a - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.HostPath.Size())) - n109, err := m.HostPath.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n109 - } - if m.Glusterfs != nil { - dAtA[i] = 0x22 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) - n110, err := m.Glusterfs.MarshalTo(dAtA[i:]) + n110, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n110 } - if m.NFS != nil { - dAtA[i] = 0x2a + if m.AWSElasticBlockStore != nil { + dAtA[i] = 0x12 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) - n111, err := m.NFS.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) + n111, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n111 } - if m.RBD != nil { - dAtA[i] = 0x32 + if m.HostPath != nil { + dAtA[i] = 0x1a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) - n112, err := m.RBD.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.HostPath.Size())) + n112, err := m.HostPath.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n112 } - if m.ISCSI != nil { - dAtA[i] = 0x3a + if m.Glusterfs != nil { + dAtA[i] = 0x22 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) - n113, err := m.ISCSI.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) + n113, err := m.Glusterfs.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n113 } - if m.Cinder != nil { - dAtA[i] = 0x42 + if m.NFS != nil { + dAtA[i] = 0x2a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) - n114, err := m.Cinder.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) + n114, err := m.NFS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n114 } - if m.CephFS != nil { - dAtA[i] = 0x4a + if m.RBD != nil { + dAtA[i] = 0x32 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) - n115, err := m.CephFS.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) + n115, err := m.RBD.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n115 } - if m.FC != nil { - dAtA[i] = 0x52 + if m.ISCSI != nil { + dAtA[i] = 0x3a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.FC.Size())) - n116, err := m.FC.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) + n116, err := m.ISCSI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n116 } - if m.Flocker != nil { - dAtA[i] = 0x5a + if m.Cinder != nil { + dAtA[i] = 0x42 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) - n117, err := m.Flocker.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) + n117, err := m.Cinder.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n117 } - if m.FlexVolume != nil { - dAtA[i] = 0x62 + if m.CephFS != nil { + dAtA[i] = 0x4a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) - n118, err := m.FlexVolume.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) + n118, err := m.CephFS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n118 } - if m.AzureFile != nil { - dAtA[i] = 0x6a + if m.FC != nil { + dAtA[i] = 0x52 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.AzureFile.Size())) - n119, err := m.AzureFile.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.FC.Size())) + n119, err := m.FC.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n119 } - if m.VsphereVolume != nil { - dAtA[i] = 0x72 + if m.Flocker != nil { + dAtA[i] = 0x5a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.VsphereVolume.Size())) - n120, err := m.VsphereVolume.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) + n120, err := m.Flocker.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n120 } - if m.Quobyte != nil { - dAtA[i] = 0x7a + if m.FlexVolume != nil { + dAtA[i] = 0x62 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Quobyte.Size())) - n121, err := m.Quobyte.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) + n121, err := m.FlexVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n121 } + if m.AzureFile != nil { + dAtA[i] = 0x6a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AzureFile.Size())) + n122, err := m.AzureFile.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n122 + } + if m.VsphereVolume != nil { + dAtA[i] = 0x72 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.VsphereVolume.Size())) + n123, err := m.VsphereVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n123 + } + if m.Quobyte != nil { + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Quobyte.Size())) + n124, err := m.Quobyte.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n124 + } if m.AzureDisk != nil { dAtA[i] = 0x82 i++ dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size())) - n122, err := m.AzureDisk.MarshalTo(dAtA[i:]) + n125, err := m.AzureDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n122 + i += n125 } if m.PhotonPersistentDisk != nil { dAtA[i] = 0x8a @@ -6407,11 +6465,11 @@ func (m *PersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PhotonPersistentDisk.Size())) - n123, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) + n126, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n123 + i += n126 } if m.PortworxVolume != nil { dAtA[i] = 0x92 @@ -6419,11 +6477,11 @@ func (m *PersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PortworxVolume.Size())) - n124, err := m.PortworxVolume.MarshalTo(dAtA[i:]) + n127, err := m.PortworxVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n124 + i += n127 } if m.ScaleIO != nil { dAtA[i] = 0x9a @@ -6431,11 +6489,11 @@ func (m *PersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleIO.Size())) - n125, err := m.ScaleIO.MarshalTo(dAtA[i:]) + n128, err := m.ScaleIO.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n125 + i += n128 } if m.Local != nil { dAtA[i] = 0xa2 @@ -6443,11 +6501,11 @@ func (m *PersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Local.Size())) - n126, err := m.Local.MarshalTo(dAtA[i:]) + n129, err := m.Local.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n126 + i += n129 } if m.StorageOS != nil { dAtA[i] = 0xaa @@ -6455,11 +6513,11 @@ func (m *PersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.StorageOS.Size())) - n127, err := m.StorageOS.MarshalTo(dAtA[i:]) + n130, err := m.StorageOS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n127 + i += n130 } if m.CSI != nil { dAtA[i] = 0xb2 @@ -6467,11 +6525,11 @@ func (m *PersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.CSI.Size())) - n128, err := m.CSI.MarshalTo(dAtA[i:]) + n131, err := m.CSI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n128 + i += n131 } return i, nil } @@ -6515,21 +6573,21 @@ func (m *PersistentVolumeSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n129, err := (&v).MarshalTo(dAtA[i:]) + n132, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n129 + i += n132 } } dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeSource.Size())) - n130, err := m.PersistentVolumeSource.MarshalTo(dAtA[i:]) + n133, err := m.PersistentVolumeSource.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n130 + i += n133 if len(m.AccessModes) > 0 { for _, s := range m.AccessModes { dAtA[i] = 0x1a @@ -6549,11 +6607,11 @@ func (m *PersistentVolumeSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ClaimRef.Size())) - n131, err := m.ClaimRef.MarshalTo(dAtA[i:]) + n134, err := m.ClaimRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n131 + i += n134 } dAtA[i] = 0x2a i++ @@ -6584,6 +6642,16 @@ func (m *PersistentVolumeSpec) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintGenerated(dAtA, i, uint64(len(*m.VolumeMode))) i += copy(dAtA[i:], *m.VolumeMode) } + if m.NodeAffinity != nil { + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NodeAffinity.Size())) + n135, err := m.NodeAffinity.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n135 + } return i, nil } @@ -6661,27 +6729,27 @@ func (m *Pod) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n132, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n136, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n132 + i += n136 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n133, err := m.Spec.MarshalTo(dAtA[i:]) + n137, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n133 + i += n137 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n134, err := m.Status.MarshalTo(dAtA[i:]) + n138, err := m.Status.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n134 + i += n138 return i, nil } @@ -6746,11 +6814,11 @@ func (m *PodAffinityTerm) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LabelSelector.Size())) - n135, err := m.LabelSelector.MarshalTo(dAtA[i:]) + n139, err := m.LabelSelector.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n135 + i += n139 } if len(m.Namespaces) > 0 { for _, s := range m.Namespaces { @@ -6896,19 +6964,19 @@ func (m *PodCondition) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LastProbeTime.Size())) - n136, err := m.LastProbeTime.MarshalTo(dAtA[i:]) + n140, err := m.LastProbeTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n136 + i += n140 dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) - n137, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + n141, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n137 + i += n141 dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) @@ -7095,11 +7163,11 @@ func (m *PodList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n138, err := m.ListMeta.MarshalTo(dAtA[i:]) + n142, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n138 + i += n142 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -7159,11 +7227,11 @@ func (m *PodLogOptions) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SinceTime.Size())) - n139, err := m.SinceTime.MarshalTo(dAtA[i:]) + n143, err := m.SinceTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n139 + i += n143 } dAtA[i] = 0x30 i++ @@ -7252,11 +7320,11 @@ func (m *PodSecurityContext) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SELinuxOptions.Size())) - n140, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) + n144, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n140 + i += n144 } if m.RunAsUser != nil { dAtA[i] = 0x10 @@ -7285,6 +7353,11 @@ func (m *PodSecurityContext) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintGenerated(dAtA, i, uint64(*m.FSGroup)) } + if m.RunAsGroup != nil { + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RunAsGroup)) + } return i, nil } @@ -7307,11 +7380,11 @@ func (m *PodSignature) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PodController.Size())) - n141, err := m.PodController.MarshalTo(dAtA[i:]) + n145, err := m.PodController.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n141 + i += n145 } return i, nil } @@ -7435,11 +7508,11 @@ func (m *PodSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x72 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecurityContext.Size())) - n142, err := m.SecurityContext.MarshalTo(dAtA[i:]) + n146, err := m.SecurityContext.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n142 + i += n146 } if len(m.ImagePullSecrets) > 0 { for _, msg := range m.ImagePullSecrets { @@ -7471,11 +7544,11 @@ func (m *PodSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Affinity.Size())) - n143, err := m.Affinity.MarshalTo(dAtA[i:]) + n147, err := m.Affinity.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n143 + i += n147 } dAtA[i] = 0x9a i++ @@ -7556,11 +7629,23 @@ func (m *PodSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.DNSConfig.Size())) - n144, err := m.DNSConfig.MarshalTo(dAtA[i:]) + n148, err := m.DNSConfig.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n144 + i += n148 + } + if m.ShareProcessNamespace != nil { + dAtA[i] = 0xd8 + i++ + dAtA[i] = 0x1 + i++ + if *m.ShareProcessNamespace { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ } return i, nil } @@ -7616,11 +7701,11 @@ func (m *PodStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.StartTime.Size())) - n145, err := m.StartTime.MarshalTo(dAtA[i:]) + n149, err := m.StartTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n145 + i += n149 } if len(m.ContainerStatuses) > 0 { for _, msg := range m.ContainerStatuses { @@ -7675,19 +7760,19 @@ func (m *PodStatusResult) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n146, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n150, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n146 + i += n150 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n147, err := m.Status.MarshalTo(dAtA[i:]) + n151, err := m.Status.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n147 + i += n151 return i, nil } @@ -7709,19 +7794,19 @@ func (m *PodTemplate) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n148, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n152, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n148 + i += n152 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) - n149, err := m.Template.MarshalTo(dAtA[i:]) + n153, err := m.Template.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n149 + i += n153 return i, nil } @@ -7743,11 +7828,11 @@ func (m *PodTemplateList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n150, err := m.ListMeta.MarshalTo(dAtA[i:]) + n154, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n150 + i += n154 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -7781,19 +7866,19 @@ func (m *PodTemplateSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n151, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n155, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n151 + i += n155 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n152, err := m.Spec.MarshalTo(dAtA[i:]) + n156, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n152 + i += n156 return i, nil } @@ -7873,19 +7958,19 @@ func (m *PreferAvoidPodsEntry) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PodSignature.Size())) - n153, err := m.PodSignature.MarshalTo(dAtA[i:]) + n157, err := m.PodSignature.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n153 + i += n157 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.EvictionTime.Size())) - n154, err := m.EvictionTime.MarshalTo(dAtA[i:]) + n158, err := m.EvictionTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n154 + i += n158 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) @@ -7918,11 +8003,11 @@ func (m *PreferredSchedulingTerm) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Preference.Size())) - n155, err := m.Preference.MarshalTo(dAtA[i:]) + n159, err := m.Preference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n155 + i += n159 return i, nil } @@ -7944,11 +8029,11 @@ func (m *Probe) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Handler.Size())) - n156, err := m.Handler.MarshalTo(dAtA[i:]) + n160, err := m.Handler.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n156 + i += n160 dAtA[i] = 0x10 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.InitialDelaySeconds)) @@ -8098,11 +8183,11 @@ func (m *RBDPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n157, err := m.SecretRef.MarshalTo(dAtA[i:]) + n161, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n157 + i += n161 } dAtA[i] = 0x40 i++ @@ -8169,11 +8254,11 @@ func (m *RBDVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n158, err := m.SecretRef.MarshalTo(dAtA[i:]) + n162, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n158 + i += n162 } dAtA[i] = 0x40 i++ @@ -8204,11 +8289,11 @@ func (m *RangeAllocation) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n159, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n163, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n159 + i += n163 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Range))) @@ -8240,27 +8325,27 @@ func (m *ReplicationController) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n160, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n164, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n160 + i += n164 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n161, err := m.Spec.MarshalTo(dAtA[i:]) + n165, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n161 + i += n165 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n162, err := m.Status.MarshalTo(dAtA[i:]) + n166, err := m.Status.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n162 + i += n166 return i, nil } @@ -8290,11 +8375,11 @@ func (m *ReplicationControllerCondition) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) - n163, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + n167, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n163 + i += n167 dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) @@ -8324,11 +8409,11 @@ func (m *ReplicationControllerList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n164, err := m.ListMeta.MarshalTo(dAtA[i:]) + n168, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n164 + i += n168 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -8390,11 +8475,11 @@ func (m *ReplicationControllerSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) - n165, err := m.Template.MarshalTo(dAtA[i:]) + n169, err := m.Template.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n165 + i += n169 } dAtA[i] = 0x20 i++ @@ -8473,11 +8558,11 @@ func (m *ResourceFieldSelector) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Divisor.Size())) - n166, err := m.Divisor.MarshalTo(dAtA[i:]) + n170, err := m.Divisor.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n166 + i += n170 return i, nil } @@ -8499,27 +8584,27 @@ func (m *ResourceQuota) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n167, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n171, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n167 + i += n171 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n168, err := m.Spec.MarshalTo(dAtA[i:]) + n172, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n168 + i += n172 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n169, err := m.Status.MarshalTo(dAtA[i:]) + n173, err := m.Status.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n169 + i += n173 return i, nil } @@ -8541,11 +8626,11 @@ func (m *ResourceQuotaList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n170, err := m.ListMeta.MarshalTo(dAtA[i:]) + n174, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n170 + i += n174 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -8600,11 +8685,11 @@ func (m *ResourceQuotaSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n171, err := (&v).MarshalTo(dAtA[i:]) + n175, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n171 + i += n175 } } if len(m.Scopes) > 0 { @@ -8664,11 +8749,11 @@ func (m *ResourceQuotaStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n172, err := (&v).MarshalTo(dAtA[i:]) + n176, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n172 + i += n176 } } if len(m.Used) > 0 { @@ -8695,11 +8780,11 @@ func (m *ResourceQuotaStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n173, err := (&v).MarshalTo(dAtA[i:]) + n177, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n173 + i += n177 } } return i, nil @@ -8744,11 +8829,11 @@ func (m *ResourceRequirements) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n174, err := (&v).MarshalTo(dAtA[i:]) + n178, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n174 + i += n178 } } if len(m.Requests) > 0 { @@ -8775,11 +8860,11 @@ func (m *ResourceRequirements) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) - n175, err := (&v).MarshalTo(dAtA[i:]) + n179, err := (&v).MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n175 + i += n179 } } return i, nil @@ -8846,11 +8931,11 @@ func (m *ScaleIOPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n176, err := m.SecretRef.MarshalTo(dAtA[i:]) + n180, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n176 + i += n180 } dAtA[i] = 0x20 i++ @@ -8918,11 +9003,11 @@ func (m *ScaleIOVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n177, err := m.SecretRef.MarshalTo(dAtA[i:]) + n181, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n177 + i += n181 } dAtA[i] = 0x20 i++ @@ -8981,11 +9066,11 @@ func (m *Secret) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n178, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n182, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n178 + i += n182 if len(m.Data) > 0 { keysForData := make([]string, 0, len(m.Data)) for k := range m.Data { @@ -9061,11 +9146,11 @@ func (m *SecretEnvSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n179, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n183, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n179 + i += n183 if m.Optional != nil { dAtA[i] = 0x10 i++ @@ -9097,11 +9182,11 @@ func (m *SecretKeySelector) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n180, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n184, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n180 + i += n184 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) @@ -9137,11 +9222,11 @@ func (m *SecretList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n181, err := m.ListMeta.MarshalTo(dAtA[i:]) + n185, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n181 + i += n185 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -9175,11 +9260,11 @@ func (m *SecretProjection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n182, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n186, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n182 + i += n186 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -9299,11 +9384,11 @@ func (m *SecurityContext) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Capabilities.Size())) - n183, err := m.Capabilities.MarshalTo(dAtA[i:]) + n187, err := m.Capabilities.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n183 + i += n187 } if m.Privileged != nil { dAtA[i] = 0x10 @@ -9319,11 +9404,11 @@ func (m *SecurityContext) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SELinuxOptions.Size())) - n184, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) + n188, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n184 + i += n188 } if m.RunAsUser != nil { dAtA[i] = 0x20 @@ -9360,6 +9445,11 @@ func (m *SecurityContext) MarshalTo(dAtA []byte) (int, error) { } i++ } + if m.RunAsGroup != nil { + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RunAsGroup)) + } return i, nil } @@ -9381,11 +9471,11 @@ func (m *SerializedReference) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Reference.Size())) - n185, err := m.Reference.MarshalTo(dAtA[i:]) + n189, err := m.Reference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n185 + i += n189 return i, nil } @@ -9407,27 +9497,27 @@ func (m *Service) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n186, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n190, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n186 + i += n190 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n187, err := m.Spec.MarshalTo(dAtA[i:]) + n191, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n187 + i += n191 dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n188, err := m.Status.MarshalTo(dAtA[i:]) + n192, err := m.Status.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n188 + i += n192 return i, nil } @@ -9449,11 +9539,11 @@ func (m *ServiceAccount) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n189, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n193, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n189 + i += n193 if len(m.Secrets) > 0 { for _, msg := range m.Secrets { dAtA[i] = 0x12 @@ -9509,11 +9599,11 @@ func (m *ServiceAccountList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n190, err := m.ListMeta.MarshalTo(dAtA[i:]) + n194, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n190 + i += n194 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -9547,11 +9637,11 @@ func (m *ServiceList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n191, err := m.ListMeta.MarshalTo(dAtA[i:]) + n195, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n191 + i += n195 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -9596,11 +9686,11 @@ func (m *ServicePort) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.TargetPort.Size())) - n192, err := m.TargetPort.MarshalTo(dAtA[i:]) + n196, err := m.TargetPort.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n192 + i += n196 dAtA[i] = 0x28 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.NodePort)) @@ -9747,11 +9837,11 @@ func (m *ServiceSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x72 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SessionAffinityConfig.Size())) - n193, err := m.SessionAffinityConfig.MarshalTo(dAtA[i:]) + n197, err := m.SessionAffinityConfig.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n193 + i += n197 } return i, nil } @@ -9774,11 +9864,11 @@ func (m *ServiceStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LoadBalancer.Size())) - n194, err := m.LoadBalancer.MarshalTo(dAtA[i:]) + n198, err := m.LoadBalancer.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n194 + i += n198 return i, nil } @@ -9801,11 +9891,11 @@ func (m *SessionAffinityConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ClientIP.Size())) - n195, err := m.ClientIP.MarshalTo(dAtA[i:]) + n199, err := m.ClientIP.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n195 + i += n199 } return i, nil } @@ -9849,11 +9939,11 @@ func (m *StorageOSPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n196, err := m.SecretRef.MarshalTo(dAtA[i:]) + n200, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n196 + i += n200 } return i, nil } @@ -9897,11 +9987,11 @@ func (m *StorageOSVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n197, err := m.SecretRef.MarshalTo(dAtA[i:]) + n201, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n197 + i += n201 } return i, nil } @@ -9950,11 +10040,11 @@ func (m *TCPSocketAction) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Port.Size())) - n198, err := m.Port.MarshalTo(dAtA[i:]) + n202, err := m.Port.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n198 + i += n202 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Host))) @@ -9993,11 +10083,11 @@ func (m *Taint) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.TimeAdded.Size())) - n199, err := m.TimeAdded.MarshalTo(dAtA[i:]) + n203, err := m.TimeAdded.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n199 + i += n203 } return i, nil } @@ -10063,11 +10153,11 @@ func (m *Volume) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.VolumeSource.Size())) - n200, err := m.VolumeSource.MarshalTo(dAtA[i:]) + n204, err := m.VolumeSource.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n200 + i += n204 return i, nil } @@ -10141,6 +10231,34 @@ func (m *VolumeMount) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *VolumeNodeAffinity) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *VolumeNodeAffinity) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Required != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Required.Size())) + n205, err := m.Required.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n205 + } + return i, nil +} + func (m *VolumeProjection) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -10160,31 +10278,31 @@ func (m *VolumeProjection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) - n201, err := m.Secret.MarshalTo(dAtA[i:]) + n206, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n201 + i += n206 } if m.DownwardAPI != nil { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) - n202, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + n207, err := m.DownwardAPI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n202 + i += n207 } if m.ConfigMap != nil { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) - n203, err := m.ConfigMap.MarshalTo(dAtA[i:]) + n208, err := m.ConfigMap.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n203 + i += n208 } return i, nil } @@ -10208,163 +10326,163 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.HostPath.Size())) - n204, err := m.HostPath.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n204 - } - if m.EmptyDir != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.EmptyDir.Size())) - n205, err := m.EmptyDir.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n205 - } - if m.GCEPersistentDisk != nil { - dAtA[i] = 0x1a - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) - n206, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n206 - } - if m.AWSElasticBlockStore != nil { - dAtA[i] = 0x22 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) - n207, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n207 - } - if m.GitRepo != nil { - dAtA[i] = 0x2a - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.GitRepo.Size())) - n208, err := m.GitRepo.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n208 - } - if m.Secret != nil { - dAtA[i] = 0x32 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) - n209, err := m.Secret.MarshalTo(dAtA[i:]) + n209, err := m.HostPath.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n209 } - if m.NFS != nil { - dAtA[i] = 0x3a + if m.EmptyDir != nil { + dAtA[i] = 0x12 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) - n210, err := m.NFS.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.EmptyDir.Size())) + n210, err := m.EmptyDir.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n210 } - if m.ISCSI != nil { - dAtA[i] = 0x42 + if m.GCEPersistentDisk != nil { + dAtA[i] = 0x1a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) - n211, err := m.ISCSI.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) + n211, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n211 } - if m.Glusterfs != nil { - dAtA[i] = 0x4a + if m.AWSElasticBlockStore != nil { + dAtA[i] = 0x22 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) - n212, err := m.Glusterfs.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) + n212, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n212 } - if m.PersistentVolumeClaim != nil { - dAtA[i] = 0x52 + if m.GitRepo != nil { + dAtA[i] = 0x2a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeClaim.Size())) - n213, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.GitRepo.Size())) + n213, err := m.GitRepo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n213 } - if m.RBD != nil { - dAtA[i] = 0x5a + if m.Secret != nil { + dAtA[i] = 0x32 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) - n214, err := m.RBD.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) + n214, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n214 } - if m.FlexVolume != nil { - dAtA[i] = 0x62 + if m.NFS != nil { + dAtA[i] = 0x3a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) - n215, err := m.FlexVolume.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) + n215, err := m.NFS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n215 } - if m.Cinder != nil { - dAtA[i] = 0x6a + if m.ISCSI != nil { + dAtA[i] = 0x42 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) - n216, err := m.Cinder.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) + n216, err := m.ISCSI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n216 } - if m.CephFS != nil { - dAtA[i] = 0x72 + if m.Glusterfs != nil { + dAtA[i] = 0x4a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) - n217, err := m.CephFS.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) + n217, err := m.Glusterfs.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n217 } - if m.Flocker != nil { - dAtA[i] = 0x7a + if m.PersistentVolumeClaim != nil { + dAtA[i] = 0x52 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) - n218, err := m.Flocker.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeClaim.Size())) + n218, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n218 } + if m.RBD != nil { + dAtA[i] = 0x5a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) + n219, err := m.RBD.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n219 + } + if m.FlexVolume != nil { + dAtA[i] = 0x62 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) + n220, err := m.FlexVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n220 + } + if m.Cinder != nil { + dAtA[i] = 0x6a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) + n221, err := m.Cinder.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n221 + } + if m.CephFS != nil { + dAtA[i] = 0x72 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) + n222, err := m.CephFS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n222 + } + if m.Flocker != nil { + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) + n223, err := m.Flocker.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n223 + } if m.DownwardAPI != nil { dAtA[i] = 0x82 i++ dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) - n219, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + n224, err := m.DownwardAPI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n219 + i += n224 } if m.FC != nil { dAtA[i] = 0x8a @@ -10372,11 +10490,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.FC.Size())) - n220, err := m.FC.MarshalTo(dAtA[i:]) + n225, err := m.FC.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n220 + i += n225 } if m.AzureFile != nil { dAtA[i] = 0x92 @@ -10384,11 +10502,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AzureFile.Size())) - n221, err := m.AzureFile.MarshalTo(dAtA[i:]) + n226, err := m.AzureFile.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n221 + i += n226 } if m.ConfigMap != nil { dAtA[i] = 0x9a @@ -10396,11 +10514,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) - n222, err := m.ConfigMap.MarshalTo(dAtA[i:]) + n227, err := m.ConfigMap.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n222 + i += n227 } if m.VsphereVolume != nil { dAtA[i] = 0xa2 @@ -10408,11 +10526,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.VsphereVolume.Size())) - n223, err := m.VsphereVolume.MarshalTo(dAtA[i:]) + n228, err := m.VsphereVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n223 + i += n228 } if m.Quobyte != nil { dAtA[i] = 0xaa @@ -10420,11 +10538,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Quobyte.Size())) - n224, err := m.Quobyte.MarshalTo(dAtA[i:]) + n229, err := m.Quobyte.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n224 + i += n229 } if m.AzureDisk != nil { dAtA[i] = 0xb2 @@ -10432,11 +10550,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size())) - n225, err := m.AzureDisk.MarshalTo(dAtA[i:]) + n230, err := m.AzureDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n225 + i += n230 } if m.PhotonPersistentDisk != nil { dAtA[i] = 0xba @@ -10444,11 +10562,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PhotonPersistentDisk.Size())) - n226, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) + n231, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n226 + i += n231 } if m.PortworxVolume != nil { dAtA[i] = 0xc2 @@ -10456,11 +10574,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PortworxVolume.Size())) - n227, err := m.PortworxVolume.MarshalTo(dAtA[i:]) + n232, err := m.PortworxVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n227 + i += n232 } if m.ScaleIO != nil { dAtA[i] = 0xca @@ -10468,11 +10586,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleIO.Size())) - n228, err := m.ScaleIO.MarshalTo(dAtA[i:]) + n233, err := m.ScaleIO.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n228 + i += n233 } if m.Projected != nil { dAtA[i] = 0xd2 @@ -10480,11 +10598,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Projected.Size())) - n229, err := m.Projected.MarshalTo(dAtA[i:]) + n234, err := m.Projected.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n229 + i += n234 } if m.StorageOS != nil { dAtA[i] = 0xda @@ -10492,11 +10610,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.StorageOS.Size())) - n230, err := m.StorageOS.MarshalTo(dAtA[i:]) + n235, err := m.StorageOS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n230 + i += n235 } return i, nil } @@ -10556,11 +10674,11 @@ func (m *WeightedPodAffinityTerm) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PodAffinityTerm.Size())) - n231, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) + n236, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n231 + i += n236 return i, nil } @@ -10714,6 +10832,26 @@ func (m *CSIPersistentVolumeSource) Size() (n int) { n += 2 l = len(m.FSType) n += 1 + l + sovGenerated(uint64(l)) + if len(m.VolumeAttributes) > 0 { + for k, v := range m.VolumeAttributes { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if m.ControllerPublishSecretRef != nil { + l = m.ControllerPublishSecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NodeStageSecretRef != nil { + l = m.NodeStageSecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NodePublishSecretRef != nil { + l = m.NodePublishSecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -12547,6 +12685,10 @@ func (m *PersistentVolumeSpec) Size() (n int) { l = len(*m.VolumeMode) n += 1 + l + sovGenerated(uint64(l)) } + if m.NodeAffinity != nil { + l = m.NodeAffinity.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -12800,6 +12942,9 @@ func (m *PodSecurityContext) Size() (n int) { if m.FSGroup != nil { n += 1 + sovGenerated(uint64(*m.FSGroup)) } + if m.RunAsGroup != nil { + n += 1 + sovGenerated(uint64(*m.RunAsGroup)) + } return n } @@ -12905,6 +13050,9 @@ func (m *PodSpec) Size() (n int) { l = m.DNSConfig.Size() n += 2 + l + sovGenerated(uint64(l)) } + if m.ShareProcessNamespace != nil { + n += 3 + } return n } @@ -13544,6 +13692,9 @@ func (m *SecurityContext) Size() (n int) { if m.AllowPrivilegeEscalation != nil { n += 2 } + if m.RunAsGroup != nil { + n += 1 + sovGenerated(uint64(*m.RunAsGroup)) + } return n } @@ -13832,6 +13983,16 @@ func (m *VolumeMount) Size() (n int) { return n } +func (m *VolumeNodeAffinity) Size() (n int) { + var l int + _ = l + if m.Required != nil { + l = m.Required.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *VolumeProjection) Size() (n int) { var l int _ = l @@ -14101,11 +14262,25 @@ func (this *CSIPersistentVolumeSource) String() string { if this == nil { return "nil" } + keysForVolumeAttributes := make([]string, 0, len(this.VolumeAttributes)) + for k := range this.VolumeAttributes { + keysForVolumeAttributes = append(keysForVolumeAttributes, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForVolumeAttributes) + mapStringForVolumeAttributes := "map[string]string{" + for _, k := range keysForVolumeAttributes { + mapStringForVolumeAttributes += fmt.Sprintf("%v: %v,", k, this.VolumeAttributes[k]) + } + mapStringForVolumeAttributes += "}" s := strings.Join([]string{`&CSIPersistentVolumeSource{`, `Driver:` + fmt.Sprintf("%v", this.Driver) + `,`, `VolumeHandle:` + fmt.Sprintf("%v", this.VolumeHandle) + `,`, `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `VolumeAttributes:` + mapStringForVolumeAttributes + `,`, + `ControllerPublishSecretRef:` + strings.Replace(fmt.Sprintf("%v", this.ControllerPublishSecretRef), "SecretReference", "SecretReference", 1) + `,`, + `NodeStageSecretRef:` + strings.Replace(fmt.Sprintf("%v", this.NodeStageSecretRef), "SecretReference", "SecretReference", 1) + `,`, + `NodePublishSecretRef:` + strings.Replace(fmt.Sprintf("%v", this.NodePublishSecretRef), "SecretReference", "SecretReference", 1) + `,`, `}`, }, "") return s @@ -15554,6 +15729,7 @@ func (this *PersistentVolumeSpec) String() string { `StorageClassName:` + fmt.Sprintf("%v", this.StorageClassName) + `,`, `MountOptions:` + fmt.Sprintf("%v", this.MountOptions) + `,`, `VolumeMode:` + valueToStringGenerated(this.VolumeMode) + `,`, + `NodeAffinity:` + strings.Replace(fmt.Sprintf("%v", this.NodeAffinity), "VolumeNodeAffinity", "VolumeNodeAffinity", 1) + `,`, `}`, }, "") return s @@ -15752,6 +15928,7 @@ func (this *PodSecurityContext) String() string { `RunAsNonRoot:` + valueToStringGenerated(this.RunAsNonRoot) + `,`, `SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`, `FSGroup:` + valueToStringGenerated(this.FSGroup) + `,`, + `RunAsGroup:` + valueToStringGenerated(this.RunAsGroup) + `,`, `}`, }, "") return s @@ -15807,6 +15984,7 @@ func (this *PodSpec) String() string { `PriorityClassName:` + fmt.Sprintf("%v", this.PriorityClassName) + `,`, `Priority:` + valueToStringGenerated(this.Priority) + `,`, `DNSConfig:` + strings.Replace(fmt.Sprintf("%v", this.DNSConfig), "PodDNSConfig", "PodDNSConfig", 1) + `,`, + `ShareProcessNamespace:` + valueToStringGenerated(this.ShareProcessNamespace) + `,`, `}`, }, "") return s @@ -16366,6 +16544,7 @@ func (this *SecurityContext) String() string { `RunAsNonRoot:` + valueToStringGenerated(this.RunAsNonRoot) + `,`, `ReadOnlyRootFilesystem:` + valueToStringGenerated(this.ReadOnlyRootFilesystem) + `,`, `AllowPrivilegeEscalation:` + valueToStringGenerated(this.AllowPrivilegeEscalation) + `,`, + `RunAsGroup:` + valueToStringGenerated(this.RunAsGroup) + `,`, `}`, }, "") return s @@ -16616,6 +16795,16 @@ func (this *VolumeMount) String() string { }, "") return s } +func (this *VolumeNodeAffinity) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&VolumeNodeAffinity{`, + `Required:` + strings.Replace(fmt.Sprintf("%v", this.Required), "NodeSelector", "NodeSelector", 1) + `,`, + `}`, + }, "") + return s +} func (this *VolumeProjection) String() string { if this == nil { return "nil" @@ -17932,6 +18121,221 @@ func (m *CSIPersistentVolumeSource) Unmarshal(dAtA []byte) error { } m.FSType = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeAttributes", 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 + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.VolumeAttributes == nil { + m.VolumeAttributes = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.VolumeAttributes[mapkey] = mapvalue + } else { + var mapvalue string + m.VolumeAttributes[mapkey] = mapvalue + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ControllerPublishSecretRef", 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 + } + if m.ControllerPublishSecretRef == nil { + m.ControllerPublishSecretRef = &SecretReference{} + } + if err := m.ControllerPublishSecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeStageSecretRef", 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 + } + if m.NodeStageSecretRef == nil { + m.NodeStageSecretRef = &SecretReference{} + } + if err := m.NodeStageSecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodePublishSecretRef", 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 + } + if m.NodePublishSecretRef == nil { + m.NodePublishSecretRef = &SecretReference{} + } + if err := m.NodePublishSecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -35540,6 +35944,39 @@ func (m *PersistentVolumeSpec) Unmarshal(dAtA []byte) error { s := PersistentVolumeMode(dAtA[iNdEx:postIndex]) m.VolumeMode = &s iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeAffinity", 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 + } + if m.NodeAffinity == nil { + m.NodeAffinity = &VolumeNodeAffinity{} + } + if err := m.NodeAffinity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -37851,6 +38288,26 @@ func (m *PodSecurityContext) Unmarshal(dAtA []byte) error { } } m.FSGroup = &v + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsGroup", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RunAsGroup = &v default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -38787,6 +39244,27 @@ func (m *PodSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 27: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ShareProcessNamespace", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ShareProcessNamespace = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -45385,6 +45863,26 @@ func (m *SecurityContext) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.AllowPrivilegeEscalation = &b + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsGroup", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RunAsGroup = &v default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -48287,6 +48785,89 @@ func (m *VolumeMount) Unmarshal(dAtA []byte) error { } return nil } +func (m *VolumeNodeAffinity) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VolumeNodeAffinity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VolumeNodeAffinity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Required", 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 + } + if m.Required == nil { + m.Required = &NodeSelector{} + } + if err := m.Required.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *VolumeProjection) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -49752,784 +50333,797 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 12452 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x90, 0x24, 0x47, - 0x56, 0xd8, 0x55, 0xf7, 0x7c, 0xf5, 0x9b, 0xef, 0xdc, 0x5d, 0xa9, 0x77, 0x24, 0x6d, 0xaf, 0x4a, - 0x77, 0xab, 0xd5, 0xd7, 0xcc, 0x69, 0x25, 0x9d, 0x96, 0xd3, 0x9d, 0x60, 0x66, 0x7a, 0x66, 0xb7, - 0xb5, 0x3b, 0xb3, 0xad, 0xec, 0xd9, 0xdd, 0x3b, 0x21, 0xce, 0x57, 0xd3, 0x9d, 0x33, 0x53, 0x9a, - 0x9a, 0xaa, 0x56, 0x55, 0xf5, 0xec, 0x8e, 0x02, 0x22, 0x6c, 0x19, 0xf0, 0x07, 0xfc, 0xb8, 0x30, - 0x84, 0x8d, 0x81, 0xc0, 0x11, 0x36, 0x0e, 0x38, 0x63, 0x3b, 0x02, 0x83, 0x01, 0x03, 0xb6, 0x31, - 0x76, 0x38, 0xe0, 0x0f, 0x06, 0xf3, 0xe3, 0x88, 0x20, 0x3c, 0x86, 0x85, 0xb0, 0x83, 0x1f, 0x76, - 0x38, 0xcc, 0x2f, 0xc6, 0xd8, 0x38, 0xf2, 0xb3, 0x32, 0xab, 0xab, 0xba, 0x7b, 0x56, 0xb3, 0x23, - 0x71, 0x71, 0xff, 0xba, 0xf3, 0xbd, 0x7c, 0x99, 0x95, 0x1f, 0x2f, 0x5f, 0xbe, 0x7c, 0x1f, 0xf0, - 0xc6, 0xee, 0xd5, 0x68, 0xde, 0x0d, 0x16, 0x76, 0x3b, 0x9b, 0x24, 0xf4, 0x49, 0x4c, 0xa2, 0x85, - 0x7d, 0xe2, 0xb7, 0x82, 0x70, 0x41, 0x00, 0x9c, 0xb6, 0xbb, 0xd0, 0x0c, 0x42, 0xb2, 0xb0, 0xff, - 0xf2, 0xc2, 0x36, 0xf1, 0x49, 0xe8, 0xc4, 0xa4, 0x35, 0xdf, 0x0e, 0x83, 0x38, 0x40, 0x88, 0xe3, - 0xcc, 0x3b, 0x6d, 0x77, 0x9e, 0xe2, 0xcc, 0xef, 0xbf, 0x3c, 0xf7, 0xd2, 0xb6, 0x1b, 0xef, 0x74, - 0x36, 0xe7, 0x9b, 0xc1, 0xde, 0xc2, 0x76, 0xb0, 0x1d, 0x2c, 0x30, 0xd4, 0xcd, 0xce, 0x16, 0xfb, - 0xc7, 0xfe, 0xb0, 0x5f, 0x9c, 0xc4, 0xdc, 0x5a, 0xd2, 0x0c, 0xb9, 0x1f, 0x13, 0x3f, 0x72, 0x03, - 0x3f, 0x7a, 0xc9, 0x69, 0xbb, 0x11, 0x09, 0xf7, 0x49, 0xb8, 0xd0, 0xde, 0xdd, 0xa6, 0xb0, 0xc8, - 0x44, 0x58, 0xd8, 0x7f, 0x79, 0x93, 0xc4, 0x4e, 0x57, 0x8f, 0xe6, 0x5e, 0x4d, 0xc8, 0xed, 0x39, - 0xcd, 0x1d, 0xd7, 0x27, 0xe1, 0x81, 0xa4, 0xb1, 0x10, 0x92, 0x28, 0xe8, 0x84, 0x4d, 0x72, 0xac, - 0x5a, 0xd1, 0xc2, 0x1e, 0x89, 0x9d, 0x8c, 0xaf, 0x9f, 0x5b, 0xc8, 0xab, 0x15, 0x76, 0xfc, 0xd8, - 0xdd, 0xeb, 0x6e, 0xe6, 0x73, 0xfd, 0x2a, 0x44, 0xcd, 0x1d, 0xb2, 0xe7, 0x74, 0xd5, 0x7b, 0x25, - 0xaf, 0x5e, 0x27, 0x76, 0xbd, 0x05, 0xd7, 0x8f, 0xa3, 0x38, 0x4c, 0x57, 0xb2, 0xbf, 0x61, 0xc1, - 0xc5, 0xc5, 0xbb, 0x8d, 0x15, 0xcf, 0x89, 0x62, 0xb7, 0xb9, 0xe4, 0x05, 0xcd, 0xdd, 0x46, 0x1c, - 0x84, 0xe4, 0x4e, 0xe0, 0x75, 0xf6, 0x48, 0x83, 0x0d, 0x04, 0x7a, 0x11, 0xc6, 0xf6, 0xd9, 0xff, - 0x5a, 0xb5, 0x6c, 0x5d, 0xb4, 0x2e, 0x97, 0x96, 0x66, 0x7e, 0xe3, 0xb0, 0xf2, 0xa9, 0x07, 0x87, - 0x95, 0xb1, 0x3b, 0xa2, 0x1c, 0x2b, 0x0c, 0x74, 0x09, 0x46, 0xb6, 0xa2, 0x8d, 0x83, 0x36, 0x29, - 0x17, 0x18, 0xee, 0x94, 0xc0, 0x1d, 0x59, 0x6d, 0xd0, 0x52, 0x2c, 0xa0, 0x68, 0x01, 0x4a, 0x6d, - 0x27, 0x8c, 0xdd, 0xd8, 0x0d, 0xfc, 0x72, 0xf1, 0xa2, 0x75, 0x79, 0x78, 0x69, 0x56, 0xa0, 0x96, - 0xea, 0x12, 0x80, 0x13, 0x1c, 0xda, 0x8d, 0x90, 0x38, 0xad, 0x5b, 0xbe, 0x77, 0x50, 0x1e, 0xba, - 0x68, 0x5d, 0x1e, 0x4b, 0xba, 0x81, 0x45, 0x39, 0x56, 0x18, 0xf6, 0x8f, 0x16, 0x60, 0x6c, 0x71, - 0x6b, 0xcb, 0xf5, 0xdd, 0xf8, 0x00, 0xdd, 0x81, 0x09, 0x3f, 0x68, 0x11, 0xf9, 0x9f, 0x7d, 0xc5, - 0xf8, 0x95, 0x8b, 0xf3, 0xdd, 0x2b, 0x73, 0x7e, 0x5d, 0xc3, 0x5b, 0x9a, 0x79, 0x70, 0x58, 0x99, - 0xd0, 0x4b, 0xb0, 0x41, 0x07, 0x61, 0x18, 0x6f, 0x07, 0x2d, 0x45, 0xb6, 0xc0, 0xc8, 0x56, 0xb2, - 0xc8, 0xd6, 0x13, 0xb4, 0xa5, 0xe9, 0x07, 0x87, 0x95, 0x71, 0xad, 0x00, 0xeb, 0x44, 0xd0, 0x26, - 0x4c, 0xd3, 0xbf, 0x7e, 0xec, 0x2a, 0xba, 0x45, 0x46, 0xf7, 0x99, 0x3c, 0xba, 0x1a, 0xea, 0xd2, - 0x99, 0x07, 0x87, 0x95, 0xe9, 0x54, 0x21, 0x4e, 0x13, 0xb4, 0x3f, 0x80, 0xa9, 0xc5, 0x38, 0x76, - 0x9a, 0x3b, 0xa4, 0xc5, 0x67, 0x10, 0xbd, 0x0a, 0x43, 0xbe, 0xb3, 0x47, 0xc4, 0xfc, 0x5e, 0x14, - 0x03, 0x3b, 0xb4, 0xee, 0xec, 0x91, 0xa3, 0xc3, 0xca, 0xcc, 0x6d, 0xdf, 0x7d, 0xbf, 0x23, 0x56, - 0x05, 0x2d, 0xc3, 0x0c, 0x1b, 0x5d, 0x01, 0x68, 0x91, 0x7d, 0xb7, 0x49, 0xea, 0x4e, 0xbc, 0x23, - 0xe6, 0x1b, 0x89, 0xba, 0x50, 0x55, 0x10, 0xac, 0x61, 0xd9, 0xf7, 0xa1, 0xb4, 0xb8, 0x1f, 0xb8, - 0xad, 0x7a, 0xd0, 0x8a, 0xd0, 0x2e, 0x4c, 0xb7, 0x43, 0xb2, 0x45, 0x42, 0x55, 0x54, 0xb6, 0x2e, - 0x16, 0x2f, 0x8f, 0x5f, 0xb9, 0x9c, 0xf9, 0xb1, 0x26, 0xea, 0x8a, 0x1f, 0x87, 0x07, 0x4b, 0x8f, - 0x8b, 0xf6, 0xa6, 0x53, 0x50, 0x9c, 0xa6, 0x6c, 0xff, 0x87, 0x02, 0x9c, 0x5b, 0xfc, 0xa0, 0x13, - 0x92, 0xaa, 0x1b, 0xed, 0xa6, 0x57, 0x78, 0xcb, 0x8d, 0x76, 0xd7, 0x93, 0x11, 0x50, 0x4b, 0xab, - 0x2a, 0xca, 0xb1, 0xc2, 0x40, 0x2f, 0xc1, 0x28, 0xfd, 0x7d, 0x1b, 0xd7, 0xc4, 0x27, 0x9f, 0x11, - 0xc8, 0xe3, 0x55, 0x27, 0x76, 0xaa, 0x1c, 0x84, 0x25, 0x0e, 0x5a, 0x83, 0xf1, 0x26, 0xdb, 0x90, - 0xdb, 0x6b, 0x41, 0x8b, 0xb0, 0xc9, 0x2c, 0x2d, 0xbd, 0x40, 0xd1, 0x97, 0x93, 0xe2, 0xa3, 0xc3, - 0x4a, 0x99, 0xf7, 0x4d, 0x90, 0xd0, 0x60, 0x58, 0xaf, 0x8f, 0x6c, 0xb5, 0xbf, 0x86, 0x18, 0x25, - 0xc8, 0xd8, 0x5b, 0x97, 0xb5, 0xad, 0x32, 0xcc, 0xb6, 0xca, 0x44, 0xf6, 0x36, 0x41, 0x2f, 0xc3, - 0xd0, 0xae, 0xeb, 0xb7, 0xca, 0x23, 0x8c, 0xd6, 0x53, 0x74, 0xce, 0x6f, 0xb8, 0x7e, 0xeb, 0xe8, - 0xb0, 0x32, 0x6b, 0x74, 0x87, 0x16, 0x62, 0x86, 0x6a, 0xff, 0xa9, 0x05, 0x15, 0x06, 0x5b, 0x75, - 0x3d, 0x52, 0x27, 0x61, 0xe4, 0x46, 0x31, 0xf1, 0x63, 0x63, 0x40, 0xaf, 0x00, 0x44, 0xa4, 0x19, - 0x92, 0x58, 0x1b, 0x52, 0xb5, 0x30, 0x1a, 0x0a, 0x82, 0x35, 0x2c, 0xca, 0x10, 0xa2, 0x1d, 0x27, - 0x64, 0xeb, 0x4b, 0x0c, 0xac, 0x62, 0x08, 0x0d, 0x09, 0xc0, 0x09, 0x8e, 0xc1, 0x10, 0x8a, 0xfd, - 0x18, 0x02, 0xfa, 0x22, 0x4c, 0x27, 0x8d, 0x45, 0x6d, 0xa7, 0x29, 0x07, 0x90, 0x6d, 0x99, 0x86, - 0x09, 0xc2, 0x69, 0x5c, 0xfb, 0x9f, 0x58, 0x62, 0xf1, 0xd0, 0xaf, 0xfe, 0x84, 0x7f, 0xab, 0xfd, - 0x4b, 0x16, 0x8c, 0x2e, 0xb9, 0x7e, 0xcb, 0xf5, 0xb7, 0xd1, 0x57, 0x61, 0x8c, 0x9e, 0x4d, 0x2d, - 0x27, 0x76, 0x04, 0xdf, 0xfb, 0xac, 0xb6, 0xb7, 0xd4, 0x51, 0x31, 0xdf, 0xde, 0xdd, 0xa6, 0x05, - 0xd1, 0x3c, 0xc5, 0xa6, 0xbb, 0xed, 0xd6, 0xe6, 0x7b, 0xa4, 0x19, 0xaf, 0x91, 0xd8, 0x49, 0x3e, - 0x27, 0x29, 0xc3, 0x8a, 0x2a, 0xba, 0x01, 0x23, 0xb1, 0x13, 0x6e, 0x93, 0x58, 0x30, 0xc0, 0x4c, - 0x46, 0xc5, 0x6b, 0x62, 0xba, 0x23, 0x89, 0xdf, 0x24, 0xc9, 0xb1, 0xb0, 0xc1, 0xaa, 0x62, 0x41, - 0xc2, 0xfe, 0x5d, 0x0b, 0xce, 0x2f, 0x37, 0x6a, 0x39, 0xeb, 0xea, 0x12, 0x8c, 0xb4, 0x42, 0x77, - 0x9f, 0x84, 0x62, 0x9c, 0x15, 0x95, 0x2a, 0x2b, 0xc5, 0x02, 0x8a, 0xae, 0xc2, 0x04, 0x3f, 0x90, - 0xae, 0x3b, 0x7e, 0xcb, 0x93, 0x43, 0x7c, 0x56, 0x60, 0x4f, 0xdc, 0xd1, 0x60, 0xd8, 0xc0, 0x3c, - 0xe6, 0xa2, 0xba, 0x94, 0xda, 0x8c, 0x39, 0x87, 0x9d, 0xdd, 0x84, 0x89, 0x65, 0xa7, 0xed, 0x6c, - 0xba, 0x9e, 0x1b, 0xbb, 0x24, 0x42, 0xcf, 0x42, 0xd1, 0x69, 0xb5, 0x18, 0xaf, 0x2b, 0x2d, 0x9d, - 0x7b, 0x70, 0x58, 0x29, 0x2e, 0xb6, 0xe8, 0xa6, 0x03, 0x85, 0x75, 0x80, 0x29, 0x06, 0x7a, 0x1e, - 0x86, 0x5a, 0x61, 0xd0, 0x2e, 0x17, 0x18, 0xe6, 0x63, 0x74, 0x7f, 0x56, 0xc3, 0xa0, 0x9d, 0x42, - 0x65, 0x38, 0xf6, 0xaf, 0x15, 0xe0, 0xc9, 0x65, 0xd2, 0xde, 0x59, 0x6d, 0xe4, 0x8c, 0xde, 0x65, - 0x18, 0xdb, 0x0b, 0x7c, 0x37, 0x0e, 0xc2, 0x48, 0x34, 0xcd, 0xd8, 0xc2, 0x9a, 0x28, 0xc3, 0x0a, - 0x8a, 0x2e, 0xc2, 0x50, 0x3b, 0x61, 0xe9, 0x13, 0xf2, 0x38, 0x60, 0xcc, 0x9c, 0x41, 0x28, 0x46, - 0x27, 0x22, 0xa1, 0x60, 0x67, 0x0a, 0xe3, 0x76, 0x44, 0x42, 0xcc, 0x20, 0xc9, 0xbe, 0xa0, 0x3b, - 0x46, 0x8c, 0x4f, 0x6a, 0x5f, 0x50, 0x08, 0xd6, 0xb0, 0x50, 0x1d, 0x4a, 0xfc, 0x1f, 0x26, 0x5b, - 0x8c, 0x73, 0xe5, 0xac, 0xa6, 0x86, 0x44, 0x12, 0xab, 0x69, 0x92, 0x6d, 0x1c, 0x59, 0x88, 0x13, - 0x22, 0xc6, 0x7c, 0x8e, 0xf4, 0xdd, 0x38, 0xbf, 0x52, 0x00, 0xc4, 0x87, 0xf0, 0x2f, 0xd9, 0xc0, - 0xdd, 0xee, 0x1e, 0xb8, 0xcc, 0x23, 0xf4, 0x66, 0xd0, 0x74, 0xbc, 0xf4, 0x5e, 0x3c, 0xa9, 0xd1, - 0xfb, 0x11, 0x0b, 0xd0, 0xb2, 0xeb, 0xb7, 0x48, 0x78, 0x0a, 0xf2, 0xe3, 0xf1, 0x38, 0xe2, 0x4d, - 0x98, 0x5a, 0xf6, 0x5c, 0xe2, 0xc7, 0xb5, 0xfa, 0x72, 0xe0, 0x6f, 0xb9, 0xdb, 0xe8, 0xf3, 0x30, - 0x45, 0xc5, 0xe9, 0xa0, 0x13, 0x37, 0x48, 0x33, 0xf0, 0x99, 0xe4, 0x41, 0x85, 0x50, 0xf4, 0xe0, - 0xb0, 0x32, 0xb5, 0x61, 0x40, 0x70, 0x0a, 0xd3, 0xfe, 0x7d, 0xfa, 0xa1, 0xc1, 0x5e, 0x3b, 0xf0, - 0x89, 0x1f, 0x2f, 0x07, 0x7e, 0x8b, 0x4b, 0xa8, 0x9f, 0x87, 0xa1, 0x98, 0x76, 0x9c, 0x7f, 0xe4, - 0x25, 0x39, 0xb5, 0xb4, 0xbb, 0x47, 0x87, 0x95, 0xc7, 0xba, 0x6b, 0xb0, 0x0f, 0x62, 0x75, 0xd0, - 0xb7, 0xc1, 0x48, 0x14, 0x3b, 0x71, 0x27, 0x12, 0x9f, 0xfd, 0xb4, 0xfc, 0xec, 0x06, 0x2b, 0x3d, - 0x3a, 0xac, 0x4c, 0xab, 0x6a, 0xbc, 0x08, 0x8b, 0x0a, 0xe8, 0x39, 0x18, 0xdd, 0x23, 0x51, 0xe4, - 0x6c, 0x4b, 0xe1, 0x62, 0x5a, 0xd4, 0x1d, 0x5d, 0xe3, 0xc5, 0x58, 0xc2, 0xd1, 0x33, 0x30, 0x4c, - 0xc2, 0x30, 0x08, 0xc5, 0xaa, 0x9a, 0x14, 0x88, 0xc3, 0x2b, 0xb4, 0x10, 0x73, 0x98, 0xfd, 0x9f, - 0x2c, 0x98, 0x56, 0x7d, 0xe5, 0x6d, 0x9d, 0xc2, 0x29, 0xf2, 0x0e, 0x40, 0x53, 0x7e, 0x60, 0xc4, - 0xf8, 0xdd, 0xf8, 0x95, 0x4b, 0x59, 0x4b, 0xb8, 0x7b, 0x18, 0x13, 0xca, 0xaa, 0x28, 0xc2, 0x1a, - 0x35, 0xfb, 0x5f, 0x5b, 0x70, 0x26, 0xf5, 0x45, 0x37, 0xdd, 0x28, 0x46, 0xef, 0x76, 0x7d, 0xd5, - 0xfc, 0x60, 0x5f, 0x45, 0x6b, 0xb3, 0x6f, 0x52, 0x6b, 0x4e, 0x96, 0x68, 0x5f, 0x74, 0x1d, 0x86, - 0xdd, 0x98, 0xec, 0xc9, 0x8f, 0x79, 0xa6, 0xe7, 0xc7, 0xf0, 0x5e, 0x25, 0x33, 0x52, 0xa3, 0x35, - 0x31, 0x27, 0x60, 0xff, 0x50, 0x11, 0x4a, 0x7c, 0xd9, 0xae, 0x39, 0xed, 0x53, 0x98, 0x8b, 0x1a, - 0x0c, 0x31, 0xea, 0xbc, 0xe3, 0xcf, 0x66, 0x77, 0x5c, 0x74, 0x67, 0x9e, 0x8a, 0x88, 0x5c, 0x14, - 0x57, 0xcc, 0x8c, 0x16, 0x61, 0x46, 0x02, 0x39, 0x00, 0x9b, 0xae, 0xef, 0x84, 0x07, 0xb4, 0xac, - 0x5c, 0x64, 0x04, 0x5f, 0xea, 0x4d, 0x70, 0x49, 0xe1, 0x73, 0xb2, 0xaa, 0xaf, 0x09, 0x00, 0x6b, - 0x44, 0xe7, 0x5e, 0x87, 0x92, 0x42, 0x46, 0x33, 0x50, 0xdc, 0x25, 0xfc, 0x86, 0x57, 0xc2, 0xf4, - 0x27, 0x3a, 0x0b, 0xc3, 0xfb, 0x8e, 0xd7, 0x11, 0xfc, 0x04, 0xf3, 0x3f, 0x9f, 0x2f, 0x5c, 0xb5, - 0xe6, 0xbe, 0x08, 0xd3, 0xa9, 0xb6, 0xfa, 0x55, 0x9f, 0xd0, 0xaa, 0xdb, 0xbf, 0xcc, 0xb8, 0x80, - 0xe8, 0xf5, 0x8a, 0xbf, 0x2f, 0xd8, 0xdd, 0x07, 0x70, 0xd6, 0xcb, 0xe0, 0xb2, 0x62, 0xaa, 0x06, - 0xe7, 0xca, 0x4f, 0x8a, 0xcf, 0x3e, 0x9b, 0x05, 0xc5, 0x99, 0x6d, 0xd0, 0x83, 0x2a, 0x68, 0xd3, - 0x35, 0xef, 0x78, 0xac, 0xbf, 0x42, 0xf0, 0xbf, 0x25, 0xca, 0xb0, 0x82, 0x52, 0x16, 0x76, 0x56, - 0x75, 0xfe, 0x06, 0x39, 0x68, 0x10, 0x8f, 0x34, 0xe3, 0x20, 0xfc, 0x58, 0xbb, 0xff, 0x14, 0x1f, - 0x7d, 0xce, 0x01, 0xc7, 0x05, 0x81, 0xe2, 0x0d, 0x72, 0xc0, 0xa7, 0x42, 0xff, 0xba, 0x62, 0xcf, - 0xaf, 0xfb, 0x59, 0x0b, 0x26, 0xd5, 0xd7, 0x9d, 0xc2, 0x56, 0x5f, 0x32, 0xb7, 0xfa, 0x53, 0x3d, - 0x17, 0x78, 0xce, 0x26, 0xff, 0x0b, 0xc6, 0xa4, 0x04, 0x4e, 0x3d, 0x0c, 0xe8, 0xd0, 0xd0, 0x53, - 0xe5, 0xe3, 0x9c, 0x90, 0x41, 0xbe, 0xeb, 0x06, 0x39, 0xd8, 0x08, 0xa8, 0x80, 0x93, 0xfd, 0x5d, - 0xc6, 0xac, 0x0d, 0xf5, 0x9c, 0xb5, 0x9f, 0x2f, 0xc0, 0x39, 0x35, 0x02, 0x86, 0x08, 0xf1, 0x97, - 0x7d, 0x0c, 0x5e, 0x86, 0xf1, 0x16, 0xd9, 0x72, 0x3a, 0x5e, 0xac, 0x74, 0x00, 0xc3, 0x5c, 0x0f, - 0x54, 0x4d, 0x8a, 0xb1, 0x8e, 0x73, 0x8c, 0x61, 0xfb, 0xc9, 0x71, 0x76, 0x3a, 0xc4, 0x0e, 0x5d, - 0xc1, 0x54, 0xbe, 0xd4, 0x34, 0x39, 0x13, 0xba, 0x26, 0x47, 0x68, 0x6d, 0x9e, 0x81, 0x61, 0x77, - 0x8f, 0x4a, 0x0b, 0x05, 0x53, 0x08, 0xa8, 0xd1, 0x42, 0xcc, 0x61, 0xe8, 0x33, 0x30, 0xda, 0x0c, - 0xf6, 0xf6, 0x1c, 0xbf, 0xc5, 0x98, 0x76, 0x69, 0x69, 0x9c, 0x0a, 0x14, 0xcb, 0xbc, 0x08, 0x4b, - 0x18, 0x7a, 0x12, 0x86, 0x9c, 0x70, 0x3b, 0x2a, 0x0f, 0x31, 0x9c, 0x31, 0xda, 0xd2, 0x62, 0xb8, - 0x1d, 0x61, 0x56, 0x4a, 0x25, 0xd9, 0x7b, 0x41, 0xb8, 0xeb, 0xfa, 0xdb, 0x55, 0x37, 0x64, 0x62, - 0xa9, 0x26, 0xc9, 0xde, 0x55, 0x10, 0xac, 0x61, 0xa1, 0x55, 0x18, 0x6e, 0x07, 0x61, 0x1c, 0x95, - 0x47, 0xd8, 0x70, 0x3f, 0x9d, 0xb3, 0x95, 0xf8, 0xd7, 0xd6, 0x83, 0x30, 0x4e, 0x3e, 0x80, 0xfe, - 0x8b, 0x30, 0xaf, 0x8e, 0xbe, 0x0d, 0x8a, 0xc4, 0xdf, 0x2f, 0x8f, 0x32, 0x2a, 0x73, 0x59, 0x54, - 0x56, 0xfc, 0xfd, 0x3b, 0x4e, 0x98, 0xf0, 0x99, 0x15, 0x7f, 0x1f, 0xd3, 0x3a, 0xe8, 0xcb, 0x50, - 0x92, 0x5a, 0xe0, 0xa8, 0x3c, 0x96, 0xbf, 0xc4, 0xb0, 0x40, 0xc2, 0xe4, 0xfd, 0x8e, 0x1b, 0x92, - 0x3d, 0xe2, 0xc7, 0x51, 0x72, 0x8f, 0x97, 0xd0, 0x08, 0x27, 0xd4, 0xd0, 0x97, 0xe5, 0xc5, 0x74, - 0x2d, 0xe8, 0xf8, 0x71, 0x54, 0x2e, 0xb1, 0xee, 0x65, 0xaa, 0x0c, 0xef, 0x24, 0x78, 0xe9, 0x9b, - 0x2b, 0xaf, 0x8c, 0x0d, 0x52, 0x08, 0xc3, 0xa4, 0xe7, 0xee, 0x13, 0x9f, 0x44, 0x51, 0x3d, 0x0c, - 0x36, 0x49, 0x19, 0x58, 0xcf, 0xcf, 0x67, 0x6b, 0xd2, 0x82, 0x4d, 0xb2, 0x34, 0xfb, 0xe0, 0xb0, - 0x32, 0x79, 0x53, 0xaf, 0x83, 0x4d, 0x12, 0xe8, 0x36, 0x4c, 0x51, 0x11, 0xda, 0x4d, 0x88, 0x8e, - 0xf7, 0x23, 0xca, 0xe4, 0x67, 0x6c, 0x54, 0xc2, 0x29, 0x22, 0xe8, 0x2d, 0x28, 0x79, 0xee, 0x16, - 0x69, 0x1e, 0x34, 0x3d, 0x52, 0x9e, 0x60, 0x14, 0x33, 0xb7, 0xd5, 0x4d, 0x89, 0xc4, 0xaf, 0x28, - 0xea, 0x2f, 0x4e, 0xaa, 0xa3, 0x3b, 0xf0, 0x58, 0x4c, 0xc2, 0x3d, 0xd7, 0x77, 0xe8, 0x76, 0x10, - 0x12, 0x2f, 0xd3, 0x47, 0x4e, 0xb2, 0xf5, 0x76, 0x41, 0x0c, 0xdd, 0x63, 0x1b, 0x99, 0x58, 0x38, - 0xa7, 0x36, 0xba, 0x05, 0xd3, 0x6c, 0x27, 0xd4, 0x3b, 0x9e, 0x57, 0x0f, 0x3c, 0xb7, 0x79, 0x50, - 0x9e, 0x62, 0x04, 0x3f, 0x23, 0x15, 0x8e, 0x35, 0x13, 0x4c, 0xef, 0xe4, 0xc9, 0x3f, 0x9c, 0xae, - 0x8d, 0x36, 0x99, 0x02, 0xaa, 0x13, 0xba, 0xf1, 0x01, 0x5d, 0xbf, 0xe4, 0x7e, 0x5c, 0x9e, 0xee, - 0x79, 0xc3, 0xd5, 0x51, 0x95, 0x96, 0x4a, 0x2f, 0xc4, 0x69, 0x82, 0x74, 0x6b, 0x47, 0x71, 0xcb, - 0xf5, 0xcb, 0x33, 0x8c, 0x63, 0xa8, 0x9d, 0xd1, 0xa0, 0x85, 0x98, 0xc3, 0x98, 0xf2, 0x89, 0xfe, - 0xb8, 0x45, 0x39, 0xe8, 0x2c, 0x43, 0x4c, 0x94, 0x4f, 0x12, 0x80, 0x13, 0x1c, 0x7a, 0x2c, 0xc7, - 0xf1, 0x41, 0x19, 0x31, 0x54, 0xb5, 0x5d, 0x36, 0x36, 0xbe, 0x8c, 0x69, 0x39, 0xba, 0x09, 0xa3, - 0xc4, 0xdf, 0x5f, 0x0d, 0x83, 0xbd, 0xf2, 0x99, 0xfc, 0x3d, 0xbb, 0xc2, 0x51, 0x38, 0x43, 0x4f, - 0xae, 0x28, 0xa2, 0x18, 0x4b, 0x12, 0xe8, 0x3e, 0x94, 0x33, 0x66, 0x84, 0x4f, 0xc0, 0x59, 0x36, - 0x01, 0x5f, 0x10, 0x75, 0xcb, 0x1b, 0x39, 0x78, 0x47, 0x3d, 0x60, 0x38, 0x97, 0x3a, 0xfa, 0x2e, - 0x98, 0xe4, 0x1b, 0x8a, 0x6b, 0xae, 0xa3, 0xf2, 0x39, 0xf6, 0x35, 0x17, 0xf3, 0x37, 0x27, 0x47, - 0x5c, 0x3a, 0x27, 0x3a, 0x34, 0xa9, 0x97, 0x46, 0xd8, 0xa4, 0x66, 0x6f, 0xc2, 0x94, 0xe2, 0x5b, - 0x6c, 0xe9, 0xa0, 0x0a, 0x0c, 0x53, 0x86, 0x2c, 0x75, 0x0a, 0x25, 0x3a, 0x53, 0x4c, 0xe3, 0x88, - 0x79, 0x39, 0x9b, 0x29, 0xf7, 0x03, 0xb2, 0x74, 0x10, 0x13, 0x7e, 0x2f, 0x2c, 0x6a, 0x33, 0x25, - 0x01, 0x38, 0xc1, 0xb1, 0xff, 0x1f, 0x97, 0x7b, 0x12, 0xe6, 0x38, 0xc0, 0x71, 0xf0, 0x22, 0x8c, - 0xed, 0x04, 0x51, 0x4c, 0xb1, 0x59, 0x1b, 0xc3, 0x89, 0xa4, 0x73, 0x5d, 0x94, 0x63, 0x85, 0x81, - 0xde, 0x80, 0xc9, 0xa6, 0xde, 0x80, 0x38, 0xcb, 0xd4, 0x10, 0x18, 0xad, 0x63, 0x13, 0x17, 0x5d, - 0x85, 0x31, 0xf6, 0xee, 0xd4, 0x0c, 0x3c, 0x71, 0x03, 0x95, 0x07, 0xf2, 0x58, 0x5d, 0x94, 0x1f, - 0x69, 0xbf, 0xb1, 0xc2, 0x46, 0x97, 0x60, 0x84, 0x76, 0xa1, 0x56, 0x17, 0xa7, 0x88, 0xd2, 0x0a, - 0x5c, 0x67, 0xa5, 0x58, 0x40, 0xed, 0xbf, 0x53, 0xd0, 0x46, 0x99, 0xde, 0xa9, 0x08, 0xaa, 0xc3, - 0xe8, 0x3d, 0xc7, 0x8d, 0x5d, 0x7f, 0x5b, 0x88, 0x0b, 0xcf, 0xf5, 0x3c, 0x52, 0x58, 0xa5, 0xbb, - 0xbc, 0x02, 0x3f, 0xf4, 0xc4, 0x1f, 0x2c, 0xc9, 0x50, 0x8a, 0x61, 0xc7, 0xf7, 0x29, 0xc5, 0xc2, - 0xa0, 0x14, 0x31, 0xaf, 0xc0, 0x29, 0x8a, 0x3f, 0x58, 0x92, 0x41, 0xef, 0x02, 0xc8, 0x65, 0x49, - 0x5a, 0xe2, 0xbd, 0xe7, 0xc5, 0xfe, 0x44, 0x37, 0x54, 0x9d, 0xa5, 0x29, 0x7a, 0xa4, 0x26, 0xff, - 0xb1, 0x46, 0xcf, 0x8e, 0x99, 0x58, 0xd5, 0xdd, 0x19, 0xf4, 0x9d, 0x94, 0x13, 0x38, 0x61, 0x4c, - 0x5a, 0x8b, 0xb1, 0x18, 0x9c, 0xe7, 0x07, 0x93, 0x8a, 0x37, 0xdc, 0x3d, 0xa2, 0x73, 0x0d, 0x41, - 0x04, 0x27, 0xf4, 0xec, 0x5f, 0x2c, 0x42, 0x39, 0xaf, 0xbb, 0x74, 0xd1, 0x91, 0xfb, 0x6e, 0xbc, - 0x4c, 0xa5, 0x21, 0xcb, 0x5c, 0x74, 0x2b, 0xa2, 0x1c, 0x2b, 0x0c, 0x3a, 0xfb, 0x91, 0xbb, 0x2d, - 0x2f, 0x35, 0xc3, 0xc9, 0xec, 0x37, 0x58, 0x29, 0x16, 0x50, 0x8a, 0x17, 0x12, 0x27, 0x12, 0x0f, - 0x8a, 0xda, 0x2a, 0xc1, 0xac, 0x14, 0x0b, 0xa8, 0xae, 0x31, 0x19, 0xea, 0xa3, 0x31, 0x31, 0x86, - 0x68, 0xf8, 0x64, 0x87, 0x08, 0x7d, 0x05, 0x60, 0xcb, 0xf5, 0xdd, 0x68, 0x87, 0x51, 0x1f, 0x39, - 0x36, 0x75, 0x25, 0x4b, 0xad, 0x2a, 0x2a, 0x58, 0xa3, 0x88, 0x5e, 0x83, 0x71, 0xb5, 0x01, 0x6b, - 0xd5, 0xf2, 0xa8, 0xf9, 0x5a, 0x95, 0x70, 0xa3, 0x2a, 0xd6, 0xf1, 0xec, 0xf7, 0xd2, 0xeb, 0x45, - 0xec, 0x00, 0x6d, 0x7c, 0xad, 0x41, 0xc7, 0xb7, 0xd0, 0x7b, 0x7c, 0xed, 0x5f, 0x2f, 0xc2, 0xb4, - 0xd1, 0x58, 0x27, 0x1a, 0x80, 0x67, 0x5d, 0xa3, 0xe7, 0x9c, 0x13, 0x13, 0xb1, 0xff, 0xec, 0xfe, - 0x5b, 0x45, 0x3f, 0x0b, 0xe9, 0x0e, 0xe0, 0xf5, 0xd1, 0x57, 0xa0, 0xe4, 0x39, 0x11, 0xd3, 0xbe, - 0x10, 0xb1, 0xef, 0x06, 0x21, 0x96, 0xdc, 0x23, 0x9c, 0x28, 0xd6, 0x8e, 0x1a, 0x4e, 0x3b, 0x21, - 0x49, 0x0f, 0x64, 0x2a, 0xfb, 0xc8, 0x17, 0x6b, 0xd5, 0x09, 0x2a, 0x20, 0x1d, 0x60, 0x0e, 0x43, - 0x57, 0x61, 0x22, 0x24, 0x6c, 0x55, 0x2c, 0x53, 0x51, 0x8e, 0x2d, 0xb3, 0xe1, 0x44, 0xe6, 0xc3, - 0x1a, 0x0c, 0x1b, 0x98, 0x89, 0x28, 0x3f, 0xd2, 0x43, 0x94, 0x7f, 0x0e, 0x46, 0xd9, 0x0f, 0xb5, - 0x02, 0xd4, 0x6c, 0xd4, 0x78, 0x31, 0x96, 0xf0, 0xf4, 0x82, 0x19, 0x1b, 0x70, 0xc1, 0x3c, 0x0f, - 0x53, 0x55, 0x87, 0xec, 0x05, 0xfe, 0x8a, 0xdf, 0x6a, 0x07, 0xae, 0x1f, 0xa3, 0x32, 0x0c, 0xb1, - 0xd3, 0x81, 0xef, 0xed, 0x21, 0x4a, 0x01, 0x0f, 0x51, 0xc1, 0xdc, 0xfe, 0x9d, 0x02, 0x4c, 0x56, - 0x89, 0x47, 0x62, 0xc2, 0xaf, 0x32, 0x11, 0x5a, 0x05, 0xb4, 0x1d, 0x3a, 0x4d, 0x52, 0x27, 0xa1, - 0x1b, 0xb4, 0x74, 0x6d, 0x6c, 0x91, 0xbd, 0x78, 0xa0, 0x6b, 0x5d, 0x50, 0x9c, 0x51, 0x03, 0xbd, - 0x03, 0x93, 0xed, 0x90, 0x18, 0x4a, 0x44, 0x2b, 0x4f, 0x1a, 0xa9, 0xeb, 0x88, 0x5c, 0x10, 0x36, - 0x8a, 0xb0, 0x49, 0x0a, 0x7d, 0x07, 0xcc, 0x04, 0x61, 0x7b, 0xc7, 0xf1, 0xab, 0xa4, 0x4d, 0xfc, - 0x16, 0x95, 0xf4, 0x85, 0x0a, 0xe2, 0xec, 0x83, 0xc3, 0xca, 0xcc, 0xad, 0x14, 0x0c, 0x77, 0x61, - 0xa3, 0x77, 0x60, 0xb6, 0x1d, 0x06, 0x6d, 0x67, 0x9b, 0x2d, 0x14, 0x21, 0xd0, 0x70, 0xee, 0xf3, - 0xe2, 0x83, 0xc3, 0xca, 0x6c, 0x3d, 0x0d, 0x3c, 0x3a, 0xac, 0x9c, 0x61, 0x03, 0x45, 0x4b, 0x12, - 0x20, 0xee, 0x26, 0x63, 0x6f, 0xc3, 0xb9, 0x6a, 0x70, 0xcf, 0xbf, 0xe7, 0x84, 0xad, 0xc5, 0x7a, - 0x4d, 0xd3, 0x1d, 0xac, 0xcb, 0xbb, 0x2b, 0x7f, 0x55, 0xcf, 0x3c, 0xa7, 0xb4, 0x9a, 0x5c, 0x7e, - 0x59, 0x75, 0x3d, 0x92, 0xa3, 0xa3, 0xf8, 0x7b, 0x05, 0xa3, 0xa5, 0x04, 0x5f, 0x3d, 0x7c, 0x58, - 0xb9, 0x0f, 0x1f, 0x6f, 0xc3, 0xd8, 0x96, 0x4b, 0xbc, 0x16, 0x26, 0x5b, 0x62, 0x66, 0x9e, 0xcd, - 0x7f, 0x28, 0x5c, 0xa5, 0x98, 0x52, 0x27, 0xc5, 0x6f, 0xbe, 0xab, 0xa2, 0x32, 0x56, 0x64, 0xd0, - 0x2e, 0xcc, 0xc8, 0xab, 0x95, 0x84, 0x8a, 0x4d, 0xfc, 0x5c, 0xaf, 0xfb, 0x9a, 0x49, 0x9c, 0x4d, - 0x20, 0x4e, 0x91, 0xc1, 0x5d, 0x84, 0xe9, 0x55, 0x77, 0x8f, 0x1e, 0x57, 0x43, 0x6c, 0x49, 0xb3, - 0xab, 0x2e, 0xbb, 0xb5, 0xb3, 0x52, 0xfb, 0xc7, 0x2d, 0x78, 0xbc, 0x6b, 0x64, 0x84, 0xf6, 0xe2, - 0x84, 0x67, 0x21, 0xad, 0x4d, 0x28, 0xf4, 0xd7, 0x26, 0xd8, 0xff, 0xd4, 0x82, 0xb3, 0x2b, 0x7b, - 0xed, 0xf8, 0xa0, 0xea, 0x9a, 0x8f, 0x33, 0xaf, 0xc3, 0xc8, 0x1e, 0x69, 0xb9, 0x9d, 0x3d, 0x31, - 0x73, 0x15, 0xc9, 0xd2, 0xd7, 0x58, 0xe9, 0xd1, 0x61, 0x65, 0xb2, 0x11, 0x07, 0xa1, 0xb3, 0x4d, - 0x78, 0x01, 0x16, 0xe8, 0xec, 0x60, 0x74, 0x3f, 0x20, 0x37, 0xdd, 0x3d, 0x57, 0x3e, 0xfc, 0xf6, - 0xd4, 0xa8, 0xcd, 0xcb, 0x01, 0x9d, 0x7f, 0xbb, 0xe3, 0xf8, 0xb1, 0x1b, 0x1f, 0x88, 0x77, 0x27, - 0x49, 0x04, 0x27, 0xf4, 0xec, 0x6f, 0x58, 0x30, 0x2d, 0x79, 0xc9, 0x62, 0xab, 0x15, 0x92, 0x28, - 0x42, 0x73, 0x50, 0x70, 0xdb, 0xa2, 0x97, 0x20, 0x7a, 0x59, 0xa8, 0xd5, 0x71, 0xc1, 0x6d, 0xa3, - 0x3a, 0x94, 0xf8, 0xfb, 0x71, 0xb2, 0xb8, 0x06, 0x7a, 0x85, 0x66, 0x3d, 0xd8, 0x90, 0x35, 0x71, - 0x42, 0x44, 0x4a, 0xc5, 0xec, 0x1c, 0x2a, 0x9a, 0x8f, 0x56, 0xd7, 0x45, 0x39, 0x56, 0x18, 0xe8, - 0x32, 0x8c, 0xf9, 0x41, 0x8b, 0x3f, 0xe7, 0xf3, 0x3d, 0xcd, 0x96, 0xec, 0xba, 0x28, 0xc3, 0x0a, - 0x6a, 0xff, 0xa0, 0x05, 0x13, 0xf2, 0xcb, 0x06, 0x14, 0xd0, 0xe9, 0xd6, 0x4a, 0x84, 0xf3, 0x64, - 0x6b, 0x51, 0x01, 0x9b, 0x41, 0x0c, 0xb9, 0xba, 0x78, 0x1c, 0xb9, 0xda, 0xfe, 0xb1, 0x02, 0x4c, - 0xc9, 0xee, 0x34, 0x3a, 0x9b, 0x11, 0x89, 0xd1, 0x06, 0x94, 0x1c, 0x3e, 0xe4, 0x44, 0xae, 0xd8, - 0x67, 0xb2, 0x2f, 0x74, 0xc6, 0xfc, 0x24, 0xa2, 0xce, 0xa2, 0xac, 0x8d, 0x13, 0x42, 0xc8, 0x83, - 0x59, 0x3f, 0x88, 0xd9, 0xb1, 0xa7, 0xe0, 0xbd, 0x1e, 0x46, 0xd2, 0xd4, 0xcf, 0x0b, 0xea, 0xb3, - 0xeb, 0x69, 0x2a, 0xb8, 0x9b, 0x30, 0x5a, 0x91, 0x4a, 0xa4, 0x62, 0xfe, 0x15, 0x4e, 0x9f, 0x85, - 0x6c, 0x1d, 0x92, 0xfd, 0xab, 0x16, 0x94, 0x24, 0xda, 0x69, 0xbc, 0x81, 0xad, 0xc1, 0x68, 0xc4, - 0x26, 0x41, 0x0e, 0x8d, 0xdd, 0xab, 0xe3, 0x7c, 0xbe, 0x92, 0xd3, 0x9c, 0xff, 0x8f, 0xb0, 0xa4, - 0xc1, 0xb4, 0xe0, 0xaa, 0xfb, 0x9f, 0x10, 0x2d, 0xb8, 0xea, 0x4f, 0xce, 0x09, 0xf3, 0xdf, 0x59, - 0x9f, 0x35, 0x55, 0x01, 0x15, 0x3a, 0xdb, 0x21, 0xd9, 0x72, 0xef, 0xa7, 0x85, 0xce, 0x3a, 0x2b, - 0xc5, 0x02, 0x8a, 0xde, 0x85, 0x89, 0xa6, 0x54, 0x1e, 0x27, 0x6c, 0xe0, 0x52, 0x4f, 0x55, 0xbc, - 0x7a, 0xb5, 0xe1, 0xa6, 0x7e, 0xcb, 0x5a, 0x7d, 0x6c, 0x50, 0x33, 0x2d, 0x13, 0x8a, 0xfd, 0x2c, - 0x13, 0x12, 0xba, 0xb9, 0x6f, 0xeb, 0xf6, 0x4f, 0x58, 0x30, 0xc2, 0x55, 0x90, 0x83, 0xe9, 0x6c, - 0xb5, 0x47, 0xac, 0x64, 0xec, 0xee, 0xd0, 0x42, 0xf1, 0x28, 0x85, 0xd6, 0xa0, 0xc4, 0x7e, 0x30, - 0x55, 0x4c, 0x31, 0xdf, 0xc6, 0x91, 0xb7, 0xaa, 0x77, 0xf0, 0x8e, 0xac, 0x86, 0x13, 0x0a, 0xf6, - 0x0f, 0x17, 0x29, 0xab, 0x4a, 0x50, 0x8d, 0x13, 0xdc, 0x7a, 0x74, 0x27, 0x78, 0xe1, 0x51, 0x9d, - 0xe0, 0xdb, 0x30, 0xdd, 0xd4, 0x9e, 0xbc, 0x92, 0x99, 0xbc, 0xdc, 0x73, 0x91, 0x68, 0xaf, 0x63, - 0x5c, 0x0d, 0xb7, 0x6c, 0x12, 0xc1, 0x69, 0xaa, 0xe8, 0x3b, 0x61, 0x82, 0xcf, 0xb3, 0x68, 0x65, - 0x88, 0xb5, 0xf2, 0x99, 0xfc, 0xf5, 0xa2, 0x37, 0xc1, 0x56, 0x62, 0x43, 0xab, 0x8e, 0x0d, 0x62, - 0xf6, 0x2f, 0x8e, 0xc1, 0xf0, 0xca, 0x3e, 0xf1, 0xe3, 0x53, 0x60, 0x48, 0x4d, 0x98, 0x72, 0xfd, - 0xfd, 0xc0, 0xdb, 0x27, 0x2d, 0x0e, 0x3f, 0xce, 0xe1, 0xfa, 0x98, 0x20, 0x3d, 0x55, 0x33, 0x48, - 0xe0, 0x14, 0xc9, 0x47, 0x71, 0x6b, 0xbf, 0x06, 0x23, 0x7c, 0xee, 0xc5, 0x95, 0x3d, 0x53, 0xc1, - 0xce, 0x06, 0x51, 0xec, 0x82, 0x44, 0xa3, 0xc0, 0x35, 0xfa, 0xa2, 0x3a, 0x7a, 0x0f, 0xa6, 0xb6, - 0xdc, 0x30, 0x8a, 0xe9, 0x75, 0x3b, 0x8a, 0x9d, 0xbd, 0xf6, 0x43, 0xdc, 0xd2, 0xd5, 0x38, 0xac, - 0x1a, 0x94, 0x70, 0x8a, 0x32, 0xda, 0x86, 0x49, 0x7a, 0x71, 0x4c, 0x9a, 0x1a, 0x3d, 0x76, 0x53, - 0x4a, 0x0d, 0x77, 0x53, 0x27, 0x84, 0x4d, 0xba, 0x94, 0x99, 0x34, 0xd9, 0x45, 0x73, 0x8c, 0x49, - 0x14, 0x8a, 0x99, 0xf0, 0x1b, 0x26, 0x87, 0x51, 0x9e, 0xc4, 0x8c, 0x59, 0x4a, 0x26, 0x4f, 0xd2, - 0x4c, 0x56, 0xbe, 0x0a, 0x25, 0x42, 0x87, 0x90, 0x12, 0x16, 0x8f, 0x0d, 0x0b, 0x83, 0xf5, 0x75, - 0xcd, 0x6d, 0x86, 0x81, 0xa9, 0x1f, 0x59, 0x91, 0x94, 0x70, 0x42, 0x14, 0x2d, 0xc3, 0x48, 0x44, - 0x42, 0x97, 0x44, 0xe2, 0xd9, 0xa1, 0xc7, 0x34, 0x32, 0x34, 0x6e, 0x0c, 0xcb, 0x7f, 0x63, 0x51, - 0x95, 0x2e, 0x2f, 0x87, 0xdd, 0x86, 0xd8, 0x4b, 0x83, 0xb6, 0xbc, 0x16, 0x59, 0x29, 0x16, 0x50, - 0xf4, 0x16, 0x8c, 0x86, 0xc4, 0x63, 0x0a, 0xb8, 0xc9, 0xc1, 0x17, 0x39, 0xd7, 0xe7, 0xf1, 0x7a, - 0x58, 0x12, 0x40, 0x37, 0x00, 0x85, 0x84, 0xca, 0x10, 0xae, 0xbf, 0xad, 0x4c, 0x3c, 0xc4, 0xfb, - 0xc1, 0x13, 0xa2, 0xfd, 0x33, 0x38, 0xc1, 0xf0, 0xe3, 0x30, 0xf0, 0x3c, 0x12, 0xe2, 0x8c, 0x6a, - 0xe8, 0x1a, 0xcc, 0xaa, 0xd2, 0x9a, 0x1f, 0xc5, 0x8e, 0xdf, 0x24, 0xec, 0xe9, 0xa0, 0x94, 0x48, - 0x45, 0x38, 0x8d, 0x80, 0xbb, 0xeb, 0xd8, 0x5f, 0xa7, 0xe2, 0x0c, 0x1d, 0xad, 0x53, 0x90, 0x05, - 0xde, 0x34, 0x65, 0x81, 0xf3, 0xb9, 0x33, 0x97, 0x23, 0x07, 0x3c, 0xb0, 0x60, 0x5c, 0x9b, 0xd9, - 0x64, 0xcd, 0x5a, 0x3d, 0xd6, 0x6c, 0x07, 0x66, 0xe8, 0x4a, 0xbf, 0xb5, 0xc9, 0xfc, 0x42, 0x5a, - 0x6c, 0x61, 0x16, 0x1e, 0x6e, 0x61, 0x96, 0x45, 0x03, 0x33, 0x37, 0x53, 0x04, 0x71, 0x57, 0x13, - 0xe8, 0x75, 0xa9, 0x8d, 0x2a, 0x1a, 0xa6, 0x5b, 0x5c, 0xd3, 0x74, 0x74, 0x58, 0x99, 0xd1, 0x3e, - 0x44, 0xd7, 0x3e, 0xd9, 0x5f, 0x95, 0xdf, 0xc8, 0x99, 0xcd, 0x02, 0x94, 0x9a, 0x6a, 0xb1, 0x58, - 0xa6, 0x55, 0xb0, 0x5a, 0x0e, 0x38, 0xc1, 0xa1, 0x7b, 0x94, 0x5e, 0x41, 0xd2, 0xd6, 0x86, 0xf4, - 0x82, 0x82, 0x19, 0xc4, 0x7e, 0x05, 0x60, 0xe5, 0x3e, 0x69, 0xf2, 0xa5, 0xae, 0x3f, 0xea, 0x5a, - 0xf9, 0x8f, 0xba, 0xf6, 0x7f, 0xb6, 0x60, 0x6a, 0x75, 0xd9, 0xb8, 0x26, 0xce, 0x03, 0xf0, 0xbb, - 0xd1, 0xdd, 0xbb, 0xeb, 0xf2, 0xbd, 0x82, 0xab, 0x9c, 0x55, 0x29, 0xd6, 0x30, 0xd0, 0x79, 0x28, - 0x7a, 0x1d, 0x5f, 0x5c, 0x59, 0x46, 0x1f, 0x1c, 0x56, 0x8a, 0x37, 0x3b, 0x3e, 0xa6, 0x65, 0x9a, - 0x81, 0x5f, 0x71, 0x60, 0x03, 0xbf, 0xbe, 0xfe, 0x1e, 0xa8, 0x02, 0xc3, 0xf7, 0xee, 0xb9, 0xad, - 0xa8, 0x3c, 0x9c, 0xbc, 0xa5, 0xdc, 0xbd, 0x5b, 0xab, 0x46, 0x98, 0x97, 0xdb, 0x5f, 0x2b, 0xc2, - 0xdc, 0xaa, 0x47, 0xee, 0x7f, 0x44, 0xcb, 0xe2, 0x41, 0xcd, 0x13, 0x8f, 0x27, 0x2f, 0x1e, 0xd7, - 0x16, 0xb3, 0xff, 0x78, 0x6c, 0xc1, 0x28, 0x37, 0x10, 0xe0, 0x23, 0x32, 0x7e, 0xe5, 0x8d, 0xac, - 0xd6, 0xf3, 0x07, 0x64, 0x5e, 0x68, 0xe7, 0xb8, 0x09, 0x96, 0x3a, 0x69, 0x45, 0x29, 0x96, 0xc4, - 0xe7, 0x3e, 0x0f, 0x13, 0x3a, 0xe6, 0x71, 0xec, 0xaf, 0xec, 0xbf, 0x56, 0x84, 0x19, 0xda, 0x83, - 0x47, 0x3a, 0x11, 0xb7, 0xbb, 0x27, 0xe2, 0xa4, 0x2d, 0x63, 0xfb, 0xcf, 0xc6, 0xbb, 0xe9, 0xd9, - 0x78, 0x39, 0x6f, 0x36, 0x4e, 0x7b, 0x0e, 0xfe, 0xba, 0x05, 0x67, 0x56, 0xbd, 0xa0, 0xb9, 0x9b, - 0x32, 0xda, 0x7d, 0x0d, 0xc6, 0x29, 0x1f, 0x8f, 0x0c, 0xb7, 0x06, 0xc3, 0xd1, 0x45, 0x80, 0xb0, - 0x8e, 0xa7, 0x55, 0xbb, 0x7d, 0xbb, 0x56, 0xcd, 0xf2, 0x8f, 0x11, 0x20, 0xac, 0xe3, 0xd9, 0xbf, - 0x65, 0xc1, 0x53, 0xd7, 0x96, 0x57, 0x92, 0xa5, 0xd8, 0xe5, 0xa2, 0x43, 0x6f, 0x81, 0x2d, 0xad, - 0x2b, 0xc9, 0x2d, 0xb0, 0xca, 0x7a, 0x21, 0xa0, 0x9f, 0x14, 0xf7, 0xb3, 0x9f, 0xb6, 0xe0, 0xcc, - 0x35, 0x37, 0xa6, 0xc7, 0x72, 0xda, 0x59, 0x84, 0x9e, 0xcb, 0x91, 0x1b, 0x07, 0xe1, 0x41, 0xda, - 0x59, 0x04, 0x2b, 0x08, 0xd6, 0xb0, 0x78, 0xcb, 0xfb, 0x6e, 0x44, 0x7b, 0x5a, 0x30, 0x55, 0x51, - 0x58, 0x94, 0x63, 0x85, 0x41, 0x3f, 0xac, 0xe5, 0x86, 0xec, 0x2a, 0x71, 0x20, 0x38, 0xac, 0xfa, - 0xb0, 0xaa, 0x04, 0xe0, 0x04, 0xc7, 0xfe, 0x71, 0x0b, 0xce, 0x5d, 0xf3, 0x3a, 0x51, 0x4c, 0xc2, - 0xad, 0xc8, 0xe8, 0xec, 0x2b, 0x50, 0x22, 0xf2, 0xba, 0x2e, 0xfa, 0xaa, 0x04, 0x4c, 0x75, 0x8f, - 0xe7, 0x9e, 0x2a, 0x0a, 0x6f, 0x00, 0x0b, 0xf8, 0xe3, 0x59, 0x6e, 0xff, 0x5c, 0x01, 0x26, 0xaf, - 0x6f, 0x6c, 0xd4, 0xaf, 0x91, 0x58, 0x9c, 0x62, 0xfd, 0x55, 0xcd, 0x58, 0xd3, 0x98, 0xf5, 0xba, - 0x14, 0x75, 0x62, 0xd7, 0x9b, 0xe7, 0xae, 0x91, 0xf3, 0x35, 0x3f, 0xbe, 0x15, 0x36, 0xe2, 0xd0, - 0xf5, 0xb7, 0x33, 0x75, 0x6c, 0xf2, 0xac, 0x2d, 0xe6, 0x9d, 0xb5, 0xe8, 0x15, 0x18, 0x61, 0xbe, - 0x99, 0xf2, 0x7a, 0xf2, 0x84, 0xba, 0x53, 0xb0, 0xd2, 0xa3, 0xc3, 0x4a, 0xe9, 0x36, 0xae, 0xf1, - 0x3f, 0x58, 0xa0, 0xa2, 0xdb, 0x30, 0xbe, 0x13, 0xc7, 0xed, 0xeb, 0xc4, 0x69, 0x91, 0x50, 0x72, - 0x87, 0x0b, 0x59, 0xdc, 0x81, 0x0e, 0x02, 0x47, 0x4b, 0x36, 0x54, 0x52, 0x16, 0x61, 0x9d, 0x8e, - 0xdd, 0x00, 0x48, 0x60, 0x27, 0xa4, 0x5f, 0xb0, 0xff, 0xc8, 0x82, 0x51, 0xee, 0x26, 0x13, 0xa2, - 0x2f, 0xc0, 0x10, 0xb9, 0x4f, 0x9a, 0x42, 0x72, 0xcc, 0xec, 0x70, 0x22, 0x78, 0x70, 0x6d, 0x39, - 0xfd, 0x8f, 0x59, 0x2d, 0x74, 0x1d, 0x46, 0x69, 0x6f, 0xaf, 0x29, 0x9f, 0xa1, 0xa7, 0xf3, 0xbe, - 0x58, 0x4d, 0x3b, 0x97, 0x55, 0x44, 0x11, 0x96, 0xd5, 0x99, 0xe6, 0xb7, 0xd9, 0x6e, 0x50, 0x06, - 0x16, 0xf7, 0x3a, 0x67, 0x37, 0x96, 0xeb, 0x1c, 0x49, 0x50, 0xe3, 0x9a, 0x5f, 0x59, 0x88, 0x13, - 0x22, 0xf6, 0x06, 0x94, 0xe8, 0xa4, 0x2e, 0x7a, 0xae, 0xd3, 0x5b, 0xe9, 0xfc, 0x02, 0x94, 0xa4, - 0x02, 0x38, 0x12, 0x0e, 0x3a, 0x8c, 0xaa, 0xd4, 0x0f, 0x47, 0x38, 0x81, 0xdb, 0x5b, 0x70, 0x96, - 0x59, 0x53, 0x38, 0xf1, 0x8e, 0xb1, 0xc7, 0xfa, 0x2f, 0xe6, 0x17, 0xc5, 0x45, 0x8c, 0xcf, 0x4c, - 0x59, 0xf3, 0x28, 0x98, 0x90, 0x14, 0x93, 0x4b, 0x99, 0xfd, 0x27, 0x43, 0xf0, 0x44, 0xad, 0x91, - 0xef, 0x41, 0x75, 0x15, 0x26, 0xb8, 0x98, 0x46, 0x97, 0xb6, 0xe3, 0x89, 0x76, 0xd5, 0x5b, 0xe3, - 0x86, 0x06, 0xc3, 0x06, 0x26, 0x7a, 0x0a, 0x8a, 0xee, 0xfb, 0x7e, 0xda, 0x38, 0xb7, 0xf6, 0xf6, - 0x3a, 0xa6, 0xe5, 0x14, 0x4c, 0x25, 0x3e, 0xce, 0x4a, 0x15, 0x58, 0x49, 0x7d, 0x6f, 0xc2, 0x94, - 0x1b, 0x35, 0x23, 0xb7, 0xe6, 0x53, 0x3e, 0x93, 0x78, 0xdf, 0x25, 0x4a, 0x02, 0xda, 0x69, 0x05, - 0xc5, 0x29, 0x6c, 0x8d, 0xaf, 0x0f, 0x0f, 0x2c, 0x35, 0xf6, 0xf5, 0x58, 0xa1, 0x02, 0x71, 0x9b, - 0x7d, 0x5d, 0xc4, 0x0c, 0x05, 0x85, 0x40, 0xcc, 0x3f, 0x38, 0xc2, 0x12, 0x46, 0x6f, 0x60, 0xcd, - 0x1d, 0xa7, 0xbd, 0xd8, 0x89, 0x77, 0xaa, 0x6e, 0xd4, 0x0c, 0xf6, 0x49, 0x78, 0xc0, 0x2e, 0xcf, - 0x63, 0xc9, 0x0d, 0x4c, 0x01, 0x96, 0xaf, 0x2f, 0xd6, 0x29, 0x26, 0xee, 0xae, 0x63, 0x4a, 0x85, - 0x70, 0x12, 0x52, 0xe1, 0x22, 0x4c, 0xcb, 0x66, 0x1a, 0x24, 0x62, 0x67, 0xc4, 0x38, 0xeb, 0x98, - 0xf2, 0x8b, 0x15, 0xc5, 0xaa, 0x5b, 0x69, 0x7c, 0xf4, 0x3a, 0x4c, 0xba, 0xbe, 0x1b, 0xbb, 0x4e, - 0x1c, 0x84, 0xec, 0x84, 0xe5, 0xf7, 0x64, 0xf6, 0x28, 0x5a, 0xd3, 0x01, 0xd8, 0xc4, 0xb3, 0xff, - 0x78, 0x08, 0x66, 0xd9, 0xb4, 0x7d, 0x6b, 0x85, 0x7d, 0x62, 0x56, 0xd8, 0xed, 0xee, 0x15, 0x76, - 0x12, 0xe2, 0xee, 0xc7, 0xb9, 0xcc, 0xde, 0x83, 0x92, 0xb2, 0xaf, 0x96, 0x2e, 0x02, 0x56, 0x8e, - 0x8b, 0x40, 0x7f, 0xe9, 0x43, 0x3e, 0xe3, 0x16, 0x33, 0x9f, 0x71, 0xff, 0xbe, 0x05, 0x89, 0x99, - 0x29, 0xba, 0x0e, 0xa5, 0x76, 0xc0, 0x4c, 0x39, 0x42, 0x69, 0x1f, 0xf5, 0x44, 0xe6, 0x41, 0xc5, - 0x0f, 0x45, 0x3e, 0x7e, 0x75, 0x59, 0x03, 0x27, 0x95, 0xd1, 0x12, 0x8c, 0xb6, 0x43, 0xd2, 0x88, - 0x99, 0x2b, 0x67, 0x5f, 0x3a, 0x7c, 0x8d, 0x70, 0x7c, 0x2c, 0x2b, 0xda, 0x3f, 0x6f, 0x01, 0xf0, - 0x97, 0x52, 0xc7, 0xdf, 0x26, 0xa7, 0xa0, 0xfd, 0xad, 0xc2, 0x50, 0xd4, 0x26, 0xcd, 0x5e, 0x46, - 0x36, 0x49, 0x7f, 0x1a, 0x6d, 0xd2, 0x4c, 0x06, 0x9c, 0xfe, 0xc3, 0xac, 0xb6, 0xfd, 0x7d, 0x00, - 0x53, 0x09, 0x5a, 0x2d, 0x26, 0x7b, 0xe8, 0x25, 0xc3, 0x51, 0xee, 0x7c, 0xca, 0x51, 0xae, 0xc4, - 0xb0, 0x35, 0x45, 0xe3, 0x7b, 0x50, 0xdc, 0x73, 0xee, 0x0b, 0x4d, 0xd2, 0x0b, 0xbd, 0xbb, 0x41, - 0xe9, 0xcf, 0xaf, 0x39, 0xf7, 0xf9, 0x9d, 0xe9, 0x05, 0xb9, 0x40, 0xd6, 0x9c, 0xfb, 0x47, 0xdc, - 0x94, 0x86, 0x31, 0xa9, 0x9b, 0x6e, 0x14, 0x7f, 0xf8, 0x5f, 0x93, 0xff, 0x6c, 0xd9, 0xd1, 0x46, - 0x58, 0x5b, 0xae, 0x2f, 0xde, 0x0d, 0x07, 0x6a, 0xcb, 0xf5, 0xd3, 0x6d, 0xb9, 0xfe, 0x00, 0x6d, - 0xb9, 0x3e, 0xfa, 0x00, 0x46, 0xc5, 0x1b, 0x3d, 0xb3, 0x9f, 0x37, 0xb5, 0x54, 0x79, 0xed, 0x89, - 0x27, 0x7e, 0xde, 0xe6, 0x82, 0xbc, 0x13, 0x8a, 0xd2, 0xbe, 0xed, 0xca, 0x06, 0xd1, 0xdf, 0xb5, - 0x60, 0x4a, 0xfc, 0xc6, 0xe4, 0xfd, 0x0e, 0x89, 0x62, 0x21, 0x7b, 0x7e, 0x6e, 0xf0, 0x3e, 0x88, - 0x8a, 0xbc, 0x2b, 0x9f, 0x93, 0x6c, 0xd6, 0x04, 0xf6, 0xed, 0x51, 0xaa, 0x17, 0xe8, 0x9f, 0x5b, - 0x70, 0x76, 0xcf, 0xb9, 0xcf, 0x5b, 0xe4, 0x65, 0xd8, 0x89, 0xdd, 0x40, 0xf8, 0x03, 0x7c, 0x61, - 0xb0, 0xe9, 0xef, 0xaa, 0xce, 0x3b, 0x29, 0x4d, 0x87, 0xcf, 0x66, 0xa1, 0xf4, 0xed, 0x6a, 0x66, - 0xbf, 0xe6, 0xb6, 0x60, 0x4c, 0xae, 0xb7, 0x8c, 0x9b, 0x77, 0x55, 0x17, 0xac, 0x8f, 0x6d, 0x22, - 0xa1, 0x7b, 0xab, 0xd1, 0x76, 0xc4, 0x5a, 0x7b, 0xa4, 0xed, 0xbc, 0x07, 0x13, 0xfa, 0x1a, 0x7b, - 0xa4, 0x6d, 0xbd, 0x0f, 0x67, 0x32, 0xd6, 0xd2, 0x23, 0x6d, 0xf2, 0x1e, 0x9c, 0xcf, 0x5d, 0x1f, - 0x8f, 0xb2, 0x61, 0xfb, 0xe7, 0x2c, 0x9d, 0x0f, 0x9e, 0x82, 0x0a, 0x7e, 0xd9, 0x54, 0xc1, 0x5f, - 0xe8, 0xbd, 0x73, 0x72, 0xf4, 0xf0, 0xef, 0xea, 0x9d, 0xa6, 0x5c, 0x1d, 0xbd, 0x05, 0x23, 0x1e, - 0x2d, 0x91, 0xc6, 0x21, 0x76, 0xff, 0x1d, 0x99, 0xc8, 0x52, 0xac, 0x3c, 0xc2, 0x82, 0x82, 0xfd, - 0x4b, 0x16, 0x0c, 0x9d, 0xc2, 0x48, 0x60, 0x73, 0x24, 0x5e, 0xca, 0x25, 0x2d, 0x62, 0x2c, 0xcd, - 0x63, 0xe7, 0xde, 0x8a, 0x8c, 0x23, 0x95, 0x33, 0x30, 0xff, 0xb7, 0x00, 0xe3, 0xb4, 0x29, 0x69, - 0xc5, 0xf8, 0x06, 0x4c, 0x7a, 0xce, 0x26, 0xf1, 0xe4, 0x3b, 0x6e, 0x5a, 0x61, 0x72, 0x53, 0x07, - 0x62, 0x13, 0x97, 0x56, 0xde, 0xd2, 0x9f, 0xb4, 0x85, 0xfc, 0xa2, 0x2a, 0x1b, 0xef, 0xdd, 0xd8, - 0xc4, 0xa5, 0x77, 0xf7, 0x7b, 0x4e, 0xdc, 0xdc, 0x11, 0xca, 0x14, 0xd5, 0xdd, 0xbb, 0xb4, 0x10, - 0x73, 0x18, 0x15, 0xe0, 0xe4, 0xea, 0xbc, 0x43, 0x6f, 0x86, 0x81, 0x2f, 0xc4, 0x63, 0x25, 0xc0, - 0x61, 0x13, 0x8c, 0xd3, 0xf8, 0x19, 0x1e, 0xf3, 0xc3, 0xcc, 0x46, 0x73, 0x00, 0x8f, 0x79, 0x54, - 0x87, 0xb3, 0xae, 0xdf, 0xf4, 0x3a, 0x2d, 0x72, 0xdb, 0xe7, 0xd2, 0x9d, 0xe7, 0x7e, 0x40, 0x5a, - 0x42, 0x80, 0x56, 0xe6, 0xb4, 0xb5, 0x0c, 0x1c, 0x9c, 0x59, 0xd3, 0xfe, 0x2b, 0x70, 0xe6, 0x66, - 0xe0, 0xb4, 0x96, 0x1c, 0xcf, 0xf1, 0x9b, 0x24, 0xac, 0xf9, 0xdb, 0x7d, 0xad, 0xc4, 0x74, 0x9b, - 0xae, 0x42, 0x3f, 0x9b, 0x2e, 0x7b, 0x07, 0x90, 0xde, 0x80, 0xb0, 0x4d, 0xc6, 0x30, 0xea, 0xf2, - 0xa6, 0xc4, 0xf2, 0x7f, 0x36, 0x5b, 0xba, 0xee, 0xea, 0x99, 0x66, 0x75, 0xcb, 0x0b, 0xb0, 0x24, - 0x64, 0x5f, 0x85, 0x4c, 0x7f, 0xc4, 0xfe, 0x6a, 0x1b, 0xfb, 0x35, 0x98, 0x65, 0x35, 0x8f, 0xa7, - 0x52, 0xb0, 0xff, 0x96, 0x05, 0xd3, 0xeb, 0xa9, 0x18, 0x17, 0x97, 0xd8, 0x5b, 0x6b, 0x86, 0xde, - 0xbd, 0xc1, 0x4a, 0xb1, 0x80, 0x9e, 0xb8, 0x7e, 0xef, 0x2f, 0x2c, 0x28, 0xa9, 0x30, 0x3b, 0xa7, - 0x20, 0xd4, 0x2e, 0x1b, 0x42, 0x6d, 0xa6, 0xde, 0x49, 0x75, 0x27, 0x4f, 0xa6, 0x45, 0x37, 0x54, - 0xb4, 0x86, 0x1e, 0x2a, 0xa7, 0x84, 0x0c, 0xf7, 0xed, 0x9f, 0x32, 0x43, 0x3a, 0xc8, 0xf8, 0x0d, - 0xcc, 0x4c, 0x4b, 0xe1, 0x7e, 0x42, 0xcc, 0xb4, 0x54, 0x7f, 0x72, 0xb8, 0x5f, 0x5d, 0xeb, 0x32, - 0x3b, 0x15, 0xbe, 0x9d, 0xb9, 0x32, 0xb0, 0xbd, 0xa9, 0x82, 0xa4, 0x54, 0x84, 0x6b, 0x82, 0x28, - 0x3d, 0x62, 0x8c, 0x4c, 0xfc, 0xe3, 0x21, 0x91, 0x92, 0x2a, 0xf6, 0x75, 0x98, 0x4e, 0x0d, 0x18, - 0x7a, 0x0d, 0x86, 0xdb, 0x3b, 0x4e, 0x44, 0x52, 0xa6, 0xa9, 0xc3, 0x75, 0x5a, 0x78, 0x74, 0x58, - 0x99, 0x52, 0x15, 0x58, 0x09, 0xe6, 0xd8, 0xf6, 0xff, 0xb2, 0x60, 0x68, 0x3d, 0x68, 0x9d, 0xc6, - 0x62, 0x7a, 0xd3, 0x58, 0x4c, 0x4f, 0xe6, 0x05, 0x94, 0xcb, 0x5d, 0x47, 0xab, 0xa9, 0x75, 0x74, - 0x21, 0x97, 0x42, 0xef, 0x25, 0xb4, 0x07, 0xe3, 0x2c, 0x4c, 0x9d, 0x30, 0x95, 0x7d, 0xc5, 0xb8, - 0x5f, 0x55, 0x52, 0xf7, 0xab, 0x69, 0x0d, 0x55, 0xbb, 0x65, 0x3d, 0x07, 0xa3, 0xc2, 0x5c, 0x33, - 0xed, 0xb4, 0x21, 0x70, 0xb1, 0x84, 0xdb, 0x3f, 0x51, 0x04, 0x23, 0x2c, 0x1e, 0xfa, 0x55, 0x0b, - 0xe6, 0x43, 0xee, 0x05, 0xdb, 0xaa, 0x76, 0x42, 0xd7, 0xdf, 0x6e, 0x34, 0x77, 0x48, 0xab, 0xe3, - 0xb9, 0xfe, 0x76, 0x6d, 0xdb, 0x0f, 0x54, 0xf1, 0xca, 0x7d, 0xd2, 0xec, 0xb0, 0x37, 0x97, 0x3e, - 0x31, 0xf8, 0x94, 0x39, 0xd4, 0x95, 0x07, 0x87, 0x95, 0x79, 0x7c, 0x2c, 0xda, 0xf8, 0x98, 0x7d, - 0x41, 0xbf, 0x65, 0xc1, 0x02, 0x8f, 0x16, 0x37, 0x78, 0xff, 0x7b, 0xdc, 0x46, 0xeb, 0x92, 0x54, - 0x42, 0x64, 0x83, 0x84, 0x7b, 0x4b, 0xaf, 0x8b, 0x01, 0x5d, 0xa8, 0x1f, 0xaf, 0x2d, 0x7c, 0xdc, - 0xce, 0xd9, 0xff, 0xae, 0x08, 0x93, 0x74, 0x14, 0x93, 0xd8, 0x34, 0xaf, 0x19, 0x4b, 0xe2, 0xe9, - 0xd4, 0x92, 0x98, 0x35, 0x90, 0x4f, 0x26, 0x2c, 0x4d, 0x04, 0xb3, 0x9e, 0x13, 0xc5, 0xd7, 0x89, - 0x13, 0xc6, 0x9b, 0xc4, 0xe1, 0x66, 0x42, 0xc5, 0x63, 0x9b, 0x34, 0x29, 0xf5, 0xd7, 0xcd, 0x34, - 0x31, 0xdc, 0x4d, 0x1f, 0xed, 0x03, 0x62, 0xb6, 0x4e, 0xa1, 0xe3, 0x47, 0xfc, 0x5b, 0x5c, 0xf1, - 0x1e, 0x73, 0xbc, 0x56, 0xe7, 0x44, 0xab, 0xe8, 0x66, 0x17, 0x35, 0x9c, 0xd1, 0x82, 0x66, 0xc3, - 0x36, 0x3c, 0xa8, 0x0d, 0xdb, 0x48, 0x1f, 0xcf, 0xa8, 0x3d, 0x98, 0x11, 0xb3, 0xb2, 0xe5, 0x6e, - 0x8b, 0x43, 0xfa, 0xcb, 0x29, 0x1b, 0x57, 0x6b, 0x70, 0x43, 0xa5, 0x3e, 0x06, 0xae, 0xf6, 0x77, - 0xc3, 0x19, 0xda, 0x9c, 0xe9, 0xc7, 0x13, 0x21, 0x02, 0xd3, 0xbb, 0x9d, 0x4d, 0xe2, 0x91, 0x58, - 0x96, 0x89, 0x46, 0x33, 0xc5, 0x7e, 0xb3, 0x76, 0x22, 0x5b, 0xde, 0x30, 0x49, 0xe0, 0x34, 0x4d, - 0xfb, 0xa7, 0x2c, 0x60, 0xd6, 0xf2, 0xa7, 0x70, 0xfc, 0x7d, 0xd1, 0x3c, 0xfe, 0xca, 0x79, 0x1c, - 0x28, 0xe7, 0xe4, 0x7b, 0x95, 0x4f, 0x4b, 0x3d, 0x0c, 0xee, 0x1f, 0x48, 0xd9, 0xbf, 0xbf, 0xc4, - 0xf5, 0x7f, 0x2c, 0xbe, 0x21, 0x55, 0x50, 0x00, 0xf4, 0x3d, 0x30, 0xd6, 0x74, 0xda, 0x4e, 0x93, - 0xc7, 0x23, 0xcd, 0xd5, 0xfe, 0x18, 0x95, 0xe6, 0x97, 0x45, 0x0d, 0xae, 0xcd, 0xf8, 0xac, 0xfc, - 0x4a, 0x59, 0xdc, 0x57, 0x83, 0xa1, 0x9a, 0x9c, 0xdb, 0x85, 0x49, 0x83, 0xd8, 0x23, 0xbd, 0xfa, - 0x7e, 0x0f, 0x3f, 0x2e, 0xd4, 0x8d, 0x65, 0x0f, 0x66, 0x7d, 0xed, 0x3f, 0x65, 0x8e, 0x52, 0x9c, - 0xfe, 0x74, 0xbf, 0x03, 0x81, 0x71, 0x52, 0xcd, 0x1b, 0x20, 0x45, 0x06, 0x77, 0x53, 0xb6, 0xff, - 0xa1, 0x05, 0x8f, 0xeb, 0x88, 0x5a, 0xbc, 0x86, 0x7e, 0xfa, 0xe4, 0x2a, 0x8c, 0x05, 0x6d, 0x12, - 0x3a, 0xc9, 0x9d, 0xec, 0xb2, 0x1c, 0xf4, 0x5b, 0xa2, 0xfc, 0xe8, 0xb0, 0x72, 0x56, 0xa7, 0x2e, - 0xcb, 0xb1, 0xaa, 0x89, 0x6c, 0x18, 0x61, 0x83, 0x11, 0x89, 0x58, 0x1a, 0xcc, 0x4c, 0x91, 0x3d, - 0xad, 0x46, 0x58, 0x40, 0xec, 0xef, 0xb3, 0xf8, 0xc2, 0xd2, 0xbb, 0x8e, 0xde, 0x87, 0x99, 0x3d, - 0x7a, 0x7d, 0x5b, 0xb9, 0xdf, 0x0e, 0xb9, 0x1a, 0x5d, 0x8e, 0xd3, 0x0b, 0xfd, 0xc6, 0x49, 0xfb, - 0xc8, 0xc4, 0x98, 0x6d, 0x2d, 0x45, 0x0c, 0x77, 0x91, 0xb7, 0xff, 0xac, 0xc0, 0x77, 0x22, 0x93, - 0xea, 0x9e, 0x83, 0xd1, 0x76, 0xd0, 0x5a, 0xae, 0x55, 0xb1, 0x18, 0x21, 0xc5, 0xae, 0xea, 0xbc, - 0x18, 0x4b, 0x38, 0xba, 0x02, 0x40, 0xee, 0xc7, 0x24, 0xf4, 0x1d, 0x4f, 0x19, 0x7e, 0x28, 0xe1, - 0x69, 0x45, 0x41, 0xb0, 0x86, 0x45, 0xeb, 0xb4, 0xc3, 0x60, 0xdf, 0x6d, 0x31, 0x6f, 0xc3, 0xa2, - 0x59, 0xa7, 0xae, 0x20, 0x58, 0xc3, 0xa2, 0x57, 0xe5, 0x8e, 0x1f, 0xf1, 0x03, 0xd0, 0xd9, 0x14, - 0x01, 0xf2, 0xc6, 0x92, 0xab, 0xf2, 0x6d, 0x1d, 0x88, 0x4d, 0x5c, 0xb4, 0x08, 0x23, 0xb1, 0xc3, - 0xcc, 0x19, 0x86, 0xf3, 0xcd, 0x12, 0x37, 0x28, 0x86, 0x1e, 0xa0, 0x92, 0x56, 0xc0, 0xa2, 0x22, - 0x7a, 0x47, 0xb2, 0x60, 0xce, 0x92, 0x85, 0x3d, 0x70, 0xee, 0xb2, 0xd5, 0xd9, 0xb7, 0xce, 0x83, - 0x85, 0x9d, 0xb1, 0x41, 0xcb, 0xfe, 0xde, 0x12, 0x40, 0x22, 0xed, 0xa1, 0x0f, 0xba, 0x58, 0xc4, - 0x8b, 0xbd, 0xe5, 0xc3, 0x93, 0xe3, 0x0f, 0xe8, 0xfb, 0x2d, 0x18, 0x77, 0x3c, 0x2f, 0x68, 0x3a, - 0x31, 0x1b, 0xe5, 0x42, 0x6f, 0x16, 0x25, 0xda, 0x5f, 0x4c, 0x6a, 0xf0, 0x2e, 0xbc, 0x22, 0x2d, - 0x15, 0x34, 0x48, 0xdf, 0x5e, 0xe8, 0x0d, 0xa3, 0xcf, 0xca, 0x4b, 0x00, 0x5f, 0x1e, 0x73, 0xe9, - 0x4b, 0x40, 0x89, 0x71, 0x63, 0x4d, 0xfe, 0x47, 0xb7, 0x8d, 0x48, 0x72, 0x43, 0xf9, 0x21, 0x29, - 0x0c, 0xa1, 0xa7, 0x5f, 0x10, 0x39, 0x54, 0xd7, 0xfd, 0xa2, 0x86, 0xf3, 0xe3, 0xb6, 0x68, 0xd2, - 0x75, 0x1f, 0x9f, 0xa8, 0xf7, 0x60, 0xba, 0x65, 0x1e, 0xb7, 0x62, 0x35, 0x3d, 0x9b, 0x47, 0x37, - 0x75, 0x3a, 0x27, 0x07, 0x6c, 0x0a, 0x80, 0xd3, 0x84, 0x51, 0x9d, 0x7b, 0xa8, 0xd5, 0xfc, 0xad, - 0x40, 0xd8, 0x95, 0xdb, 0xb9, 0x73, 0x79, 0x10, 0xc5, 0x64, 0x8f, 0x62, 0x26, 0xe7, 0xe8, 0xba, - 0xa8, 0x8b, 0x15, 0x15, 0xf4, 0x16, 0x8c, 0x30, 0xb7, 0xe1, 0xa8, 0x3c, 0x96, 0xaf, 0x07, 0x34, - 0x23, 0x5e, 0x24, 0x9b, 0x8a, 0xfd, 0x8d, 0xb0, 0xa0, 0x80, 0xae, 0xcb, 0xb0, 0x38, 0x51, 0xcd, - 0xbf, 0x1d, 0x11, 0x16, 0x16, 0xa7, 0xb4, 0xf4, 0xe9, 0x24, 0xe2, 0x0d, 0x2f, 0xcf, 0x0c, 0x45, - 0x6d, 0xd4, 0xa4, 0xf2, 0x8a, 0xf8, 0x2f, 0x23, 0x5c, 0x97, 0x21, 0xbf, 0x7b, 0x66, 0x14, 0xec, - 0x64, 0x38, 0xef, 0x98, 0x24, 0x70, 0x9a, 0xe6, 0xa9, 0x1e, 0x9f, 0x73, 0x3e, 0xcc, 0xa4, 0x37, - 0xd6, 0x23, 0x3d, 0xae, 0xff, 0x68, 0x08, 0xa6, 0xcc, 0x85, 0x80, 0x16, 0xa0, 0x24, 0x88, 0xa8, - 0x20, 0x9e, 0x6a, 0x6d, 0xaf, 0x49, 0x00, 0x4e, 0x70, 0x58, 0x10, 0x53, 0x56, 0x5d, 0xb3, 0x03, - 0x4c, 0x82, 0x98, 0x2a, 0x08, 0xd6, 0xb0, 0xa8, 0x10, 0xbd, 0x19, 0x04, 0xb1, 0x3a, 0x0a, 0xd4, - 0x6a, 0x59, 0x62, 0xa5, 0x58, 0x40, 0xe9, 0x11, 0xb0, 0x4b, 0x42, 0x9f, 0x78, 0xa6, 0x26, 0x53, - 0x1d, 0x01, 0x37, 0x74, 0x20, 0x36, 0x71, 0xe9, 0x91, 0x16, 0x44, 0x6c, 0xf9, 0x09, 0x51, 0x3d, - 0xb1, 0xab, 0x6c, 0x70, 0xb7, 0x79, 0x09, 0x47, 0x5f, 0x86, 0xc7, 0x95, 0x97, 0x3b, 0xe6, 0x9a, - 0x61, 0xd9, 0xe2, 0x88, 0x71, 0xb3, 0x7e, 0x7c, 0x39, 0x1b, 0x0d, 0xe7, 0xd5, 0x47, 0x6f, 0xc2, - 0x94, 0x10, 0x81, 0x25, 0xc5, 0x51, 0xd3, 0x58, 0xe1, 0x86, 0x01, 0xc5, 0x29, 0x6c, 0x54, 0x85, - 0x19, 0x5a, 0xc2, 0xa4, 0x50, 0x49, 0x81, 0x7b, 0xeb, 0xab, 0xb3, 0xfe, 0x46, 0x0a, 0x8e, 0xbb, - 0x6a, 0xa0, 0x45, 0x98, 0xe6, 0x32, 0x0a, 0xbd, 0x53, 0xb2, 0x79, 0x10, 0xee, 0x1e, 0x6a, 0x23, - 0xdc, 0x32, 0xc1, 0x38, 0x8d, 0x8f, 0xae, 0xc2, 0x84, 0x13, 0x36, 0x77, 0xdc, 0x98, 0x34, 0xe3, - 0x4e, 0xc8, 0xfd, 0x40, 0x34, 0x6b, 0x8f, 0x45, 0x0d, 0x86, 0x0d, 0x4c, 0xfb, 0x03, 0x38, 0x93, - 0xe1, 0x29, 0x46, 0x17, 0x8e, 0xd3, 0x76, 0xe5, 0x37, 0xa5, 0x2c, 0x24, 0x17, 0xeb, 0x35, 0xf9, - 0x35, 0x1a, 0x16, 0x5d, 0x9d, 0x4c, 0x25, 0xae, 0x85, 0xa1, 0x57, 0xab, 0x73, 0x55, 0x02, 0x70, - 0x82, 0x63, 0xff, 0x26, 0x80, 0xa6, 0xd0, 0x19, 0xc0, 0x3e, 0xee, 0x2a, 0x4c, 0xc8, 0xdc, 0x09, - 0x5a, 0xcc, 0x6e, 0xf5, 0x99, 0xd7, 0x34, 0x18, 0x36, 0x30, 0x69, 0xdf, 0x7c, 0x15, 0x71, 0x3c, - 0x65, 0x8f, 0x99, 0xc4, 0x1b, 0x4f, 0x70, 0xd0, 0x8b, 0x30, 0x16, 0x11, 0x6f, 0xeb, 0xa6, 0xeb, - 0xef, 0x8a, 0x85, 0xad, 0xb8, 0x70, 0x43, 0x94, 0x63, 0x85, 0x81, 0x96, 0xa0, 0xd8, 0x71, 0x5b, - 0x62, 0x29, 0xcb, 0x03, 0xbf, 0x78, 0xbb, 0x56, 0x3d, 0x3a, 0xac, 0x3c, 0x9d, 0x97, 0x12, 0x82, - 0x5e, 0xed, 0xa3, 0x79, 0xba, 0xfd, 0x68, 0xe5, 0xac, 0xb7, 0x81, 0x91, 0x63, 0xbe, 0x0d, 0x5c, - 0x01, 0x10, 0x5f, 0x2d, 0xd7, 0x72, 0x31, 0x99, 0xb5, 0x6b, 0x0a, 0x82, 0x35, 0x2c, 0x14, 0xc1, - 0x6c, 0x33, 0x24, 0x8e, 0xbc, 0x43, 0x73, 0x9f, 0xa7, 0xb1, 0x87, 0x57, 0x10, 0x2c, 0xa7, 0x89, - 0xe1, 0x6e, 0xfa, 0x28, 0x80, 0xd9, 0x96, 0x08, 0xaa, 0x90, 0x34, 0x5a, 0x3a, 0xbe, 0xa3, 0x15, - 0x33, 0xc8, 0x49, 0x13, 0xc2, 0xdd, 0xb4, 0xd1, 0x57, 0x60, 0x4e, 0x16, 0x76, 0xc7, 0xb1, 0x60, - 0xdb, 0xa5, 0xb8, 0x74, 0xe1, 0xc1, 0x61, 0x65, 0xae, 0x9a, 0x8b, 0x85, 0x7b, 0x50, 0x40, 0x18, - 0x46, 0xd8, 0x5b, 0x52, 0x54, 0x1e, 0x67, 0xe7, 0xdc, 0xf3, 0xf9, 0xca, 0x00, 0xba, 0xd6, 0xe7, - 0xd9, 0x3b, 0x94, 0x30, 0x29, 0x4f, 0x9e, 0xe5, 0x58, 0x21, 0x16, 0x94, 0xd0, 0x16, 0x8c, 0x3b, - 0xbe, 0x1f, 0xc4, 0x0e, 0x17, 0xa1, 0x26, 0xf2, 0x65, 0x3f, 0x8d, 0xf0, 0x62, 0x52, 0x83, 0x53, - 0x57, 0x56, 0xaa, 0x1a, 0x04, 0xeb, 0x84, 0xd1, 0x3d, 0x98, 0x0e, 0xee, 0x51, 0xe6, 0x28, 0xb5, - 0x14, 0x51, 0x79, 0x92, 0xb5, 0xf5, 0xea, 0x80, 0x7a, 0x5a, 0xa3, 0xb2, 0xc6, 0xb5, 0x4c, 0xa2, - 0x38, 0xdd, 0x0a, 0x9a, 0x37, 0xb4, 0xd5, 0x53, 0x89, 0x3b, 0x4b, 0xa2, 0xad, 0xd6, 0x95, 0xd3, - 0x2c, 0x2e, 0x0a, 0x37, 0x91, 0x66, 0xbb, 0x7f, 0x3a, 0x15, 0x17, 0x25, 0x01, 0x61, 0x1d, 0x0f, - 0xed, 0xc0, 0x44, 0xf2, 0x64, 0x15, 0x46, 0x2c, 0x2a, 0xdb, 0xf8, 0x95, 0x2b, 0x83, 0x7d, 0x5c, - 0x4d, 0xab, 0xc9, 0x6f, 0x0e, 0x7a, 0x09, 0x36, 0x28, 0xcf, 0x7d, 0x1b, 0x8c, 0x6b, 0x13, 0x7b, - 0xac, 0x28, 0xb8, 0x6f, 0xc2, 0x4c, 0x7a, 0xea, 0x8e, 0xe5, 0x41, 0xf0, 0xbf, 0x0b, 0x30, 0x9d, - 0xf1, 0x72, 0xc5, 0xd2, 0x4a, 0xa4, 0x18, 0x6a, 0x92, 0x45, 0xc2, 0x64, 0x8b, 0x85, 0x01, 0xd8, - 0xa2, 0xe4, 0xd1, 0xc5, 0x5c, 0x1e, 0x2d, 0x58, 0xe1, 0xd0, 0x47, 0x61, 0x85, 0xe6, 0xe9, 0x33, - 0x3c, 0xd0, 0xe9, 0x73, 0x02, 0xec, 0xd3, 0x38, 0xc0, 0x46, 0x07, 0x38, 0xc0, 0x7e, 0xb8, 0x00, - 0x33, 0x69, 0x0b, 0xdf, 0x53, 0x78, 0xef, 0x78, 0xcb, 0x78, 0xef, 0xc8, 0x4e, 0xd2, 0x92, 0xb6, - 0x3b, 0xce, 0x7b, 0xfb, 0xc0, 0xa9, 0xb7, 0x8f, 0xe7, 0x07, 0xa2, 0xd6, 0xfb, 0x1d, 0xe4, 0x1f, - 0x15, 0xe0, 0x5c, 0xba, 0xca, 0xb2, 0xe7, 0xb8, 0x7b, 0xa7, 0x30, 0x36, 0xb7, 0x8c, 0xb1, 0x79, - 0x69, 0x90, 0xaf, 0x61, 0x5d, 0xcb, 0x1d, 0xa0, 0xbb, 0xa9, 0x01, 0x5a, 0x18, 0x9c, 0x64, 0xef, - 0x51, 0xfa, 0x46, 0x11, 0x2e, 0x64, 0xd6, 0x4b, 0x9e, 0x0b, 0x56, 0x8d, 0xe7, 0x82, 0x2b, 0xa9, - 0xe7, 0x02, 0xbb, 0x77, 0xed, 0x93, 0x79, 0x3f, 0x10, 0xee, 0xd0, 0x2c, 0x62, 0xe8, 0x43, 0xbe, - 0x1d, 0x18, 0xee, 0xd0, 0x8a, 0x10, 0x36, 0xe9, 0x7e, 0x33, 0xbd, 0x19, 0xfc, 0xa6, 0x05, 0xe7, - 0x33, 0xe7, 0xe6, 0x14, 0xf4, 0xea, 0xeb, 0xa6, 0x5e, 0xfd, 0xb9, 0x81, 0x57, 0x6b, 0x8e, 0xa2, - 0xfd, 0x8f, 0x8b, 0x39, 0xdf, 0xc2, 0x34, 0x93, 0xb7, 0x60, 0xdc, 0x69, 0x36, 0x49, 0x14, 0xad, - 0x05, 0x2d, 0x15, 0x41, 0xf3, 0x25, 0x26, 0x6d, 0x24, 0xc5, 0x47, 0x87, 0x95, 0xb9, 0x34, 0x89, - 0x04, 0x8c, 0x75, 0x0a, 0x66, 0xd0, 0xdf, 0xc2, 0x89, 0x06, 0xfd, 0xbd, 0x02, 0xb0, 0xaf, 0xf4, - 0x15, 0x69, 0x35, 0xa7, 0xa6, 0xc9, 0xd0, 0xb0, 0xd0, 0x77, 0xb1, 0x5b, 0x00, 0x37, 0x06, 0xe2, - 0x4b, 0xf1, 0x95, 0x01, 0xe7, 0x4a, 0x37, 0x2c, 0xe2, 0x71, 0x37, 0x94, 0x4a, 0x58, 0x91, 0x44, - 0xdf, 0x01, 0x33, 0x11, 0x0f, 0xeb, 0xb4, 0xec, 0x39, 0x11, 0x73, 0xe2, 0x12, 0xab, 0x90, 0x05, - 0xd3, 0x68, 0xa4, 0x60, 0xb8, 0x0b, 0x1b, 0xad, 0xca, 0x8f, 0x62, 0x31, 0xa8, 0xf8, 0xc2, 0xbc, - 0x94, 0x7c, 0x90, 0x48, 0x6a, 0x75, 0x36, 0x3d, 0xfc, 0x6c, 0xe0, 0xb5, 0x9a, 0xf6, 0x0f, 0x0f, - 0xc1, 0x13, 0x3d, 0x98, 0x18, 0x5a, 0x34, 0x8d, 0x00, 0x5e, 0x48, 0xeb, 0xff, 0xe6, 0x32, 0x2b, - 0x1b, 0x0a, 0xc1, 0xd4, 0x5a, 0x29, 0x7c, 0xe4, 0xb5, 0xf2, 0x03, 0x96, 0xa6, 0x99, 0xe5, 0xa6, - 0xc2, 0x5f, 0x3c, 0x26, 0x73, 0x3e, 0x41, 0x55, 0xed, 0x56, 0x86, 0xbe, 0xf3, 0xca, 0xc0, 0xdd, - 0x19, 0x58, 0x01, 0x7a, 0xba, 0x4f, 0x46, 0x1f, 0x5a, 0xf0, 0x74, 0x66, 0x7f, 0x0d, 0xa3, 0xa5, - 0x05, 0x28, 0x35, 0x69, 0xa1, 0xe6, 0x18, 0x9a, 0x78, 0xcc, 0x4b, 0x00, 0x4e, 0x70, 0x0c, 0xdb, - 0xa4, 0x42, 0x5f, 0xdb, 0xa4, 0x7f, 0x6b, 0x41, 0xd7, 0x02, 0x3e, 0x05, 0x4e, 0x5a, 0x33, 0x39, - 0xe9, 0xa7, 0x07, 0x99, 0xcb, 0x1c, 0x26, 0xfa, 0xfb, 0xd3, 0xf0, 0x58, 0x8e, 0x27, 0xd8, 0x3e, - 0xcc, 0x6e, 0x37, 0x89, 0xe9, 0x72, 0x2b, 0x3e, 0x26, 0xd3, 0x3b, 0xb9, 0xa7, 0x7f, 0x2e, 0xbf, - 0x10, 0x77, 0xa1, 0xe0, 0xee, 0x26, 0xd0, 0x87, 0x16, 0x9c, 0x75, 0xee, 0x45, 0x5d, 0x39, 0x27, - 0xc5, 0x9a, 0x79, 0x35, 0x53, 0x4f, 0xdb, 0x27, 0x47, 0x25, 0x73, 0x8b, 0x3b, 0x9b, 0x85, 0x85, - 0x33, 0xdb, 0x42, 0x58, 0x04, 0x3d, 0xa6, 0xf2, 0x76, 0x0f, 0xa7, 0xf0, 0x2c, 0x97, 0x3d, 0xce, - 0x53, 0x25, 0x04, 0x2b, 0x3a, 0xe8, 0x0e, 0x94, 0xb6, 0xa5, 0x1f, 0xad, 0xe0, 0xd9, 0x99, 0x87, - 0x60, 0xa6, 0xb3, 0x2d, 0xf7, 0x1d, 0x51, 0x20, 0x9c, 0x90, 0x42, 0x6f, 0x42, 0xd1, 0xdf, 0x8a, - 0x7a, 0xa5, 0xc3, 0x4a, 0xd9, 0xf2, 0xf1, 0x80, 0x0b, 0xeb, 0xab, 0x0d, 0x4c, 0x2b, 0xa2, 0xeb, - 0x50, 0x0c, 0x37, 0x5b, 0xe2, 0x69, 0x21, 0x53, 0x2e, 0xc5, 0x4b, 0xd5, 0xec, 0x45, 0xc2, 0x29, - 0xe1, 0xa5, 0x2a, 0xa6, 0x24, 0x50, 0x1d, 0x86, 0x99, 0xd3, 0x94, 0x78, 0x41, 0xc8, 0x14, 0x48, - 0x7b, 0x38, 0x1f, 0xf2, 0xa8, 0x0c, 0x0c, 0x01, 0x73, 0x42, 0xe8, 0x2d, 0x18, 0x69, 0xb2, 0x8c, - 0x51, 0x42, 0xf1, 0x93, 0x1d, 0xae, 0xab, 0x2b, 0xa7, 0x14, 0x7f, 0x41, 0xe5, 0xe5, 0x58, 0x50, - 0x40, 0x1b, 0x30, 0xd2, 0x24, 0xed, 0x9d, 0xad, 0x48, 0xe8, 0x73, 0x3e, 0x9b, 0x49, 0xab, 0x47, - 0x82, 0x34, 0x41, 0x95, 0x61, 0x60, 0x41, 0x0b, 0x7d, 0x1e, 0x0a, 0x5b, 0x4d, 0xe1, 0x49, 0x95, - 0xf9, 0x86, 0x60, 0x46, 0xca, 0x58, 0x1a, 0x79, 0x70, 0x58, 0x29, 0xac, 0x2e, 0xe3, 0xc2, 0x56, - 0x13, 0xad, 0xc3, 0xe8, 0x16, 0xf7, 0xad, 0x17, 0x01, 0x6c, 0x9e, 0xcd, 0x76, 0xfb, 0xef, 0x72, - 0xbf, 0xe7, 0x1e, 0x40, 0x02, 0x80, 0x25, 0x11, 0x16, 0x2f, 0x58, 0xc5, 0x08, 0x10, 0x81, 0xf3, - 0xe7, 0x8f, 0x17, 0xd7, 0x41, 0xa8, 0x39, 0x14, 0x15, 0xac, 0x51, 0x44, 0x5f, 0x85, 0x92, 0x23, - 0x73, 0x1c, 0x8a, 0x20, 0x38, 0xaf, 0x64, 0x6e, 0xc7, 0xde, 0xe9, 0x1f, 0xf9, 0x5a, 0x56, 0x48, - 0x38, 0x21, 0x8a, 0x76, 0x61, 0x72, 0x3f, 0x6a, 0xef, 0x10, 0xb9, 0x7d, 0x59, 0x4c, 0x9c, 0x9c, - 0xe3, 0xea, 0x8e, 0x40, 0x74, 0xc3, 0xb8, 0xe3, 0x78, 0x5d, 0x1c, 0x87, 0x39, 0x8e, 0xdd, 0xd1, - 0x89, 0x61, 0x93, 0x36, 0x1d, 0xfe, 0xf7, 0x3b, 0xc1, 0xe6, 0x41, 0x4c, 0x44, 0xa4, 0xfd, 0xcc, - 0xe1, 0x7f, 0x9b, 0xa3, 0x74, 0x0f, 0xbf, 0x00, 0x60, 0x49, 0x84, 0x6e, 0x70, 0x47, 0xe6, 0x0f, - 0x15, 0xba, 0x9c, 0xe7, 0x72, 0x87, 0xa7, 0xab, 0xbf, 0xc9, 0xa0, 0x30, 0xce, 0x98, 0x90, 0x62, - 0x1c, 0xb1, 0xbd, 0x13, 0xc4, 0x81, 0x9f, 0xe2, 0xc6, 0xb3, 0xf9, 0x1c, 0xb1, 0x9e, 0x81, 0xdf, - 0xcd, 0x11, 0xb3, 0xb0, 0x70, 0x66, 0x5b, 0xa8, 0x05, 0x53, 0xed, 0x20, 0x8c, 0xef, 0x05, 0xa1, - 0x5c, 0x5f, 0xa8, 0xc7, 0x25, 0xdf, 0xc0, 0x14, 0x2d, 0x32, 0x3b, 0x70, 0x13, 0x82, 0x53, 0x34, - 0xd1, 0x97, 0x60, 0x34, 0x6a, 0x3a, 0x1e, 0xa9, 0xdd, 0x2a, 0x9f, 0xc9, 0x3f, 0x6a, 0x1a, 0x1c, - 0x25, 0x67, 0x75, 0xb1, 0xc9, 0x11, 0x28, 0x58, 0x92, 0x43, 0xab, 0x30, 0xcc, 0xd2, 0xb7, 0xb0, - 0x24, 0x01, 0x39, 0xc1, 0xd6, 0xba, 0x6c, 0xa5, 0x39, 0x47, 0x62, 0xc5, 0x98, 0x57, 0xa7, 0x7b, - 0x40, 0xc8, 0xba, 0x41, 0x54, 0x3e, 0x97, 0xbf, 0x07, 0x84, 0x88, 0x7c, 0xab, 0xd1, 0x6b, 0x0f, - 0x28, 0x24, 0x9c, 0x10, 0xa5, 0xfc, 0x98, 0xf2, 0xd0, 0xc7, 0xf2, 0xf9, 0x71, 0x3e, 0x07, 0x65, - 0xfc, 0x98, 0xf2, 0x4f, 0x4a, 0xc2, 0xfe, 0x70, 0xb4, 0x5b, 0x3e, 0x61, 0xb7, 0xa3, 0xef, 0xb5, - 0xba, 0x4c, 0x07, 0x3e, 0x37, 0xa8, 0xb2, 0xe6, 0x04, 0x25, 0xd3, 0x0f, 0x2d, 0x78, 0xac, 0x9d, - 0xf9, 0x21, 0xe2, 0xb0, 0x1f, 0x4c, 0xe7, 0xc3, 0x3f, 0x5d, 0x25, 0xf2, 0xc8, 0x86, 0xe3, 0x9c, - 0x96, 0xd2, 0xd2, 0x7f, 0xf1, 0x23, 0x4b, 0xff, 0x6b, 0x30, 0xc6, 0x04, 0xca, 0x24, 0xb2, 0xdf, - 0x40, 0x06, 0x78, 0x4c, 0x6c, 0x58, 0x16, 0x15, 0xb1, 0x22, 0x81, 0x7e, 0xd0, 0x82, 0xa7, 0xd2, - 0x5d, 0xc7, 0x84, 0x81, 0x45, 0x94, 0x68, 0x7e, 0x31, 0x5b, 0x15, 0xdf, 0xff, 0x54, 0xbd, 0x17, - 0xf2, 0x51, 0x3f, 0x04, 0xdc, 0xbb, 0x31, 0x54, 0xcd, 0xb8, 0x19, 0x8e, 0x98, 0x2f, 0x8b, 0x03, - 0xdc, 0x0e, 0x5f, 0x85, 0x89, 0xbd, 0xa0, 0xe3, 0x4b, 0xef, 0x18, 0xe1, 0xfb, 0xcc, 0xb4, 0xd8, - 0x6b, 0x5a, 0x39, 0x36, 0xb0, 0x52, 0x77, 0xca, 0xb1, 0x87, 0xbd, 0x53, 0x9e, 0xee, 0x4d, 0xe5, - 0xeb, 0x56, 0x86, 0x88, 0xcd, 0xef, 0xae, 0x5f, 0x30, 0xef, 0xae, 0x97, 0xd2, 0x77, 0xd7, 0x2e, - 0x5d, 0xa5, 0x71, 0x6d, 0x1d, 0x3c, 0x8a, 0xfe, 0xa0, 0x21, 0x14, 0x6d, 0x0f, 0x2e, 0xf6, 0x3b, - 0x38, 0x98, 0x31, 0x63, 0x4b, 0xbd, 0xf2, 0x27, 0xc6, 0x8c, 0xad, 0x5a, 0x15, 0x33, 0xc8, 0xa0, - 0x31, 0x76, 0xec, 0xff, 0x61, 0x41, 0xb1, 0x1e, 0xb4, 0x4e, 0x41, 0xf7, 0xfa, 0x45, 0x43, 0xf7, - 0xfa, 0x44, 0x4e, 0xa6, 0xf4, 0x5c, 0x4d, 0xeb, 0x4a, 0x4a, 0xd3, 0xfa, 0x54, 0x1e, 0x81, 0xde, - 0x7a, 0xd5, 0x9f, 0x2c, 0x82, 0x9e, 0xd7, 0x1d, 0xfd, 0xfb, 0x87, 0xb1, 0x8a, 0x2f, 0xf6, 0x4a, - 0xf5, 0x2e, 0x28, 0x33, 0x1b, 0x48, 0xe9, 0x70, 0xfb, 0x97, 0xcc, 0x38, 0xfe, 0x2e, 0x71, 0xb7, - 0x77, 0x62, 0xd2, 0x4a, 0x7f, 0xce, 0xe9, 0x19, 0xc7, 0xff, 0x37, 0x0b, 0xa6, 0x53, 0xad, 0x23, - 0x2f, 0xcb, 0x7b, 0xef, 0x21, 0x75, 0x6e, 0xb3, 0x7d, 0xdd, 0xfd, 0xe6, 0x01, 0xd4, 0xc3, 0x96, - 0xd4, 0x47, 0x31, 0xb9, 0x5c, 0xbd, 0x7c, 0x45, 0x58, 0xc3, 0x40, 0xaf, 0xc1, 0x78, 0x1c, 0xb4, - 0x03, 0x2f, 0xd8, 0x3e, 0xb8, 0x41, 0x64, 0x54, 0x27, 0xf5, 0xfc, 0xb8, 0x91, 0x80, 0xb0, 0x8e, - 0x67, 0xff, 0x74, 0x91, 0x7f, 0xa8, 0x96, 0xfa, 0xff, 0x5b, 0x6b, 0xf2, 0x93, 0xb9, 0x26, 0xbf, - 0x61, 0xc1, 0x0c, 0x6d, 0x9d, 0xd9, 0x97, 0xc9, 0xe3, 0x50, 0x65, 0xf3, 0xb2, 0x7a, 0x64, 0xf3, - 0xba, 0x44, 0x79, 0x57, 0x2b, 0xe8, 0xc4, 0x42, 0x9f, 0xa5, 0x31, 0x27, 0x5a, 0x8a, 0x05, 0x54, - 0xe0, 0x91, 0x30, 0x14, 0x3e, 0x79, 0x3a, 0x1e, 0x09, 0x43, 0x2c, 0xa0, 0x32, 0xd9, 0xd7, 0x50, - 0x4e, 0xb2, 0x2f, 0x16, 0xa3, 0x52, 0xd8, 0x34, 0x09, 0xc1, 0x44, 0x8b, 0x51, 0x29, 0x8d, 0x9d, - 0x12, 0x1c, 0xfb, 0xe7, 0x8a, 0x30, 0x51, 0x0f, 0x5a, 0xc9, 0xd3, 0xd2, 0xab, 0xc6, 0xd3, 0xd2, - 0xc5, 0xd4, 0xd3, 0xd2, 0x8c, 0x8e, 0xfb, 0xad, 0x87, 0xa4, 0x8f, 0xeb, 0x21, 0xe9, 0xdf, 0x58, - 0x6c, 0xd6, 0xaa, 0xeb, 0x0d, 0x91, 0x2e, 0xfb, 0x65, 0x18, 0x67, 0x0c, 0x89, 0x39, 0x81, 0xca, - 0xf7, 0x16, 0x96, 0x73, 0x62, 0x3d, 0x29, 0xc6, 0x3a, 0x0e, 0xba, 0x0c, 0x63, 0x11, 0x71, 0xc2, - 0xe6, 0x8e, 0xe2, 0x71, 0xe2, 0x35, 0x82, 0x97, 0x61, 0x05, 0x45, 0x6f, 0x27, 0xe1, 0x11, 0x8b, - 0xf9, 0x89, 0x9f, 0xf5, 0xfe, 0xf0, 0x2d, 0x92, 0x1f, 0x13, 0xd1, 0xbe, 0x0b, 0xa8, 0x1b, 0x7f, - 0x00, 0x43, 0xaf, 0x8a, 0x19, 0x08, 0xad, 0xd4, 0x15, 0x04, 0xed, 0xcf, 0x2d, 0x98, 0xaa, 0x07, - 0x2d, 0xba, 0x75, 0xbf, 0x99, 0xf6, 0xa9, 0x1e, 0x1b, 0x76, 0xa4, 0x47, 0x6c, 0xd8, 0x7f, 0x6c, - 0xc1, 0x68, 0x3d, 0x68, 0x9d, 0x82, 0x16, 0xfc, 0x0b, 0xa6, 0x16, 0xfc, 0xf1, 0x9c, 0x25, 0x91, - 0xa3, 0xf8, 0xfe, 0x85, 0x22, 0x4c, 0xd2, 0x7e, 0x06, 0xdb, 0x72, 0x96, 0x8c, 0x11, 0xb1, 0x06, - 0x18, 0x11, 0x2a, 0xe6, 0x06, 0x9e, 0x17, 0xdc, 0x4b, 0xcf, 0xd8, 0x2a, 0x2b, 0xc5, 0x02, 0x8a, - 0x5e, 0x84, 0xb1, 0x76, 0x48, 0xf6, 0xdd, 0xa0, 0x13, 0xa5, 0xfd, 0x9d, 0xeb, 0xa2, 0x1c, 0x2b, - 0x0c, 0x7a, 0x33, 0x8a, 0x5c, 0xbf, 0x49, 0xa4, 0x05, 0xd8, 0x10, 0xb3, 0x00, 0xe3, 0x41, 0xdf, - 0xb5, 0x72, 0x6c, 0x60, 0xa1, 0xbb, 0x50, 0x62, 0xff, 0x19, 0x47, 0x39, 0x7e, 0x1a, 0x32, 0x91, - 0x69, 0x45, 0x10, 0xc0, 0x09, 0x2d, 0x74, 0x05, 0x20, 0x96, 0xb6, 0x6a, 0x91, 0x70, 0xc7, 0x57, - 0xb2, 0xb6, 0xb2, 0x62, 0x8b, 0xb0, 0x86, 0x85, 0x5e, 0x80, 0x52, 0xec, 0xb8, 0xde, 0x4d, 0xd7, - 0x27, 0x91, 0xb0, 0xf5, 0x13, 0x89, 0x54, 0x44, 0x21, 0x4e, 0xe0, 0x54, 0xd6, 0x61, 0xc1, 0x1e, - 0x78, 0x12, 0xc3, 0x31, 0x86, 0xcd, 0x64, 0x9d, 0x9b, 0xaa, 0x14, 0x6b, 0x18, 0xf6, 0x55, 0x38, - 0x57, 0x0f, 0x5a, 0xf5, 0x20, 0x8c, 0x57, 0x83, 0xf0, 0x9e, 0x13, 0xb6, 0xe4, 0xfc, 0x55, 0x64, - 0x4e, 0x0f, 0xca, 0x7b, 0x86, 0xf9, 0xce, 0x34, 0xb2, 0x75, 0xbc, 0xc2, 0xa4, 0x9d, 0x63, 0x3a, - 0x66, 0xfd, 0xc7, 0x02, 0x63, 0x14, 0xa9, 0xcc, 0x9a, 0xe8, 0x2b, 0x30, 0x15, 0x91, 0x9b, 0xae, - 0xdf, 0xb9, 0x2f, 0x6f, 0xb0, 0x3d, 0xbc, 0xde, 0x1a, 0x2b, 0x3a, 0x26, 0xd7, 0x83, 0x99, 0x65, - 0x38, 0x45, 0x8d, 0x0e, 0x61, 0xd8, 0xf1, 0x17, 0xa3, 0xdb, 0x11, 0x09, 0x45, 0x66, 0x47, 0x36, - 0x84, 0x58, 0x16, 0xe2, 0x04, 0x4e, 0x97, 0x0c, 0xfb, 0xb3, 0x1e, 0xf8, 0x38, 0x08, 0x62, 0xb9, - 0xc8, 0x58, 0x6e, 0x30, 0xad, 0x1c, 0x1b, 0x58, 0x68, 0x15, 0x50, 0xd4, 0x69, 0xb7, 0x3d, 0xf6, - 0x44, 0xed, 0x78, 0xd7, 0xc2, 0xa0, 0xd3, 0xe6, 0xcf, 0x83, 0x22, 0xad, 0x56, 0xa3, 0x0b, 0x8a, - 0x33, 0x6a, 0x50, 0xc6, 0xb0, 0x15, 0xb1, 0xdf, 0x22, 0xde, 0x03, 0xd7, 0x4d, 0x37, 0x58, 0x11, - 0x96, 0x30, 0xfb, 0x7b, 0xd8, 0x81, 0xc1, 0x12, 0xf2, 0xc5, 0x9d, 0x90, 0xa0, 0x3d, 0x98, 0x6c, - 0xb3, 0xa3, 0x5c, 0x84, 0x36, 0x17, 0x03, 0xf8, 0x70, 0x96, 0x7d, 0x3c, 0x41, 0x97, 0x4e, 0x0e, - 0x9b, 0xd4, 0xed, 0xdf, 0x9d, 0x66, 0x7c, 0xa9, 0xc1, 0xaf, 0x73, 0xa3, 0xc2, 0x5e, 0x5f, 0xc8, - 0xae, 0x73, 0xf9, 0x29, 0x3c, 0x93, 0x23, 0x44, 0xd8, 0xfc, 0x63, 0x59, 0x17, 0xbd, 0xcd, 0xde, - 0x55, 0x39, 0x33, 0xe8, 0x97, 0xd9, 0x9b, 0x63, 0x19, 0x4f, 0xa8, 0xa2, 0x22, 0xd6, 0x88, 0xa0, - 0x9b, 0x30, 0x29, 0xf2, 0xb7, 0x09, 0xd5, 0x4e, 0xd1, 0x50, 0x0c, 0x4c, 0x62, 0x1d, 0x78, 0x94, - 0x2e, 0xc0, 0x66, 0x65, 0xb4, 0x0d, 0x4f, 0x69, 0xc9, 0x4c, 0x33, 0xac, 0x4b, 0x39, 0x6f, 0x79, - 0xfa, 0xc1, 0x61, 0xe5, 0xa9, 0x8d, 0x5e, 0x88, 0xb8, 0x37, 0x1d, 0x74, 0x0b, 0xce, 0x39, 0xcd, - 0xd8, 0xdd, 0x27, 0x55, 0xe2, 0xb4, 0x3c, 0xd7, 0x27, 0x66, 0x00, 0x90, 0xf3, 0x0f, 0x0e, 0x2b, - 0xe7, 0x16, 0xb3, 0x10, 0x70, 0x76, 0x3d, 0xf4, 0x05, 0x28, 0xb5, 0xfc, 0x48, 0x8c, 0xc1, 0x88, - 0x91, 0xa7, 0xb7, 0x54, 0x5d, 0x6f, 0xa8, 0xef, 0x4f, 0xfe, 0xe0, 0xa4, 0x02, 0xda, 0x86, 0x09, - 0xdd, 0xc9, 0x4f, 0xe4, 0x78, 0x7e, 0xa9, 0xc7, 0xad, 0xdf, 0xf0, 0x8c, 0xe3, 0x7a, 0x4d, 0x65, - 0xbb, 0x6d, 0x38, 0xcd, 0x19, 0x84, 0xd1, 0x5b, 0x80, 0xa8, 0x30, 0xe3, 0x36, 0xc9, 0x62, 0x93, - 0x45, 0x98, 0x67, 0xda, 0xb0, 0x31, 0xc3, 0x11, 0x09, 0x35, 0xba, 0x30, 0x70, 0x46, 0x2d, 0x74, - 0x9d, 0x72, 0x14, 0xbd, 0x54, 0x98, 0xda, 0x4b, 0x01, 0xb8, 0x5c, 0x25, 0xed, 0x90, 0x34, 0x9d, - 0x98, 0xb4, 0x4c, 0x8a, 0x38, 0x55, 0x8f, 0x9e, 0x37, 0x2a, 0xd9, 0x14, 0x98, 0x06, 0xe2, 0xdd, - 0x09, 0xa7, 0xe8, 0xdd, 0x71, 0x27, 0x88, 0xe2, 0x75, 0x12, 0xdf, 0x0b, 0xc2, 0x5d, 0x11, 0xb5, - 0x2f, 0x09, 0x20, 0x9b, 0x80, 0xb0, 0x8e, 0x47, 0x65, 0x45, 0xf6, 0xb0, 0x59, 0xab, 0xb2, 0x77, - 0xa6, 0xb1, 0x64, 0x9f, 0x5c, 0xe7, 0xc5, 0x58, 0xc2, 0x25, 0x6a, 0xad, 0xbe, 0xcc, 0xde, 0x8c, - 0x52, 0xa8, 0xb5, 0xfa, 0x32, 0x96, 0x70, 0x44, 0xba, 0x73, 0x20, 0x4f, 0xe5, 0xbf, 0xfb, 0x75, - 0xf3, 0xe5, 0x01, 0xd3, 0x20, 0xfb, 0x30, 0xa3, 0xb2, 0x2f, 0xf3, 0x70, 0x86, 0x51, 0x79, 0x9a, - 0x2d, 0x92, 0xc1, 0x63, 0x21, 0x2a, 0x6d, 0x67, 0x2d, 0x45, 0x09, 0x77, 0xd1, 0x36, 0x02, 0xcb, - 0xcc, 0xf4, 0x4d, 0x16, 0xb6, 0x00, 0xa5, 0xa8, 0xb3, 0xd9, 0x0a, 0xf6, 0x1c, 0xd7, 0x67, 0x4f, - 0x3c, 0x9a, 0x20, 0xd2, 0x90, 0x00, 0x9c, 0xe0, 0xa0, 0x55, 0x18, 0x73, 0xc4, 0xb5, 0x54, 0x3c, - 0xca, 0x64, 0x46, 0x9a, 0x90, 0x57, 0x57, 0x2e, 0x66, 0xcb, 0x7f, 0x58, 0xd5, 0x45, 0x6f, 0xc0, - 0xa4, 0x70, 0x86, 0x14, 0x76, 0xcc, 0x67, 0x4c, 0xbf, 0x99, 0x86, 0x0e, 0xc4, 0x26, 0x2e, 0xfa, - 0x2e, 0x98, 0xa2, 0x54, 0x12, 0xc6, 0x56, 0x3e, 0x3b, 0x08, 0x47, 0xd4, 0x92, 0xc0, 0xe8, 0x95, - 0x71, 0x8a, 0x18, 0x6a, 0xc1, 0x93, 0x4e, 0x27, 0x0e, 0x98, 0x3a, 0xd8, 0x5c, 0xff, 0x1b, 0xc1, - 0x2e, 0xf1, 0xd9, 0x4b, 0xcc, 0xd8, 0xd2, 0xc5, 0x07, 0x87, 0x95, 0x27, 0x17, 0x7b, 0xe0, 0xe1, - 0x9e, 0x54, 0xd0, 0x6d, 0x18, 0x8f, 0x03, 0x4f, 0x38, 0x20, 0x44, 0xe5, 0xc7, 0xf2, 0x03, 0x63, - 0x6d, 0x28, 0x34, 0x5d, 0xd1, 0xa2, 0xaa, 0x62, 0x9d, 0x0e, 0xda, 0xe0, 0x7b, 0x8c, 0x85, 0x0c, - 0x26, 0x51, 0xf9, 0xf1, 0xfc, 0x81, 0x51, 0x91, 0x85, 0xcd, 0x2d, 0x28, 0x6a, 0x62, 0x9d, 0x0c, - 0xba, 0x06, 0xb3, 0xed, 0xd0, 0x0d, 0xd8, 0xc2, 0x56, 0xaa, 0xf8, 0xb2, 0x99, 0xf7, 0xa3, 0x9e, - 0x46, 0xc0, 0xdd, 0x75, 0xe8, 0x45, 0x4c, 0x16, 0x96, 0xcf, 0xf3, 0x24, 0x72, 0x5c, 0x38, 0xe5, - 0x65, 0x58, 0x41, 0xd1, 0x1a, 0xe3, 0xcb, 0xfc, 0xca, 0x54, 0x9e, 0xcb, 0x8f, 0xd0, 0xa1, 0x5f, - 0xad, 0xb8, 0xe0, 0xa2, 0xfe, 0xe2, 0x84, 0xc2, 0xdc, 0xb7, 0xc3, 0x6c, 0x17, 0xe3, 0x3d, 0x96, - 0x6d, 0xf9, 0x9f, 0x0d, 0x43, 0x49, 0xe9, 0x5d, 0xd1, 0x82, 0xa9, 0x4e, 0x3f, 0x9f, 0x56, 0xa7, - 0x8f, 0x51, 0xf1, 0x4f, 0xd7, 0xa0, 0x6f, 0x18, 0x96, 0x51, 0x85, 0xfc, 0x5c, 0x70, 0xba, 0xd2, - 0xa1, 0xaf, 0x23, 0xa8, 0x76, 0x8d, 0x2e, 0x0e, 0xac, 0x97, 0x1f, 0xea, 0x79, 0x33, 0x1f, 0x30, - 0xbd, 0x35, 0xbd, 0x69, 0xb6, 0x83, 0x56, 0xad, 0x9e, 0xce, 0xf7, 0x5a, 0xa7, 0x85, 0x98, 0xc3, - 0xd8, 0x5d, 0x81, 0x4a, 0x09, 0xec, 0xae, 0x30, 0xfa, 0x90, 0x77, 0x05, 0x49, 0x00, 0x27, 0xb4, - 0x90, 0x07, 0xb3, 0x4d, 0x33, 0x55, 0xaf, 0x72, 0xfe, 0x7c, 0xa6, 0x6f, 0xd2, 0xdc, 0x8e, 0x96, - 0xc3, 0x6f, 0x39, 0x4d, 0x05, 0x77, 0x13, 0x46, 0x6f, 0xc0, 0xd8, 0xfb, 0x41, 0xc4, 0x56, 0xb1, - 0x38, 0x2a, 0xa5, 0xbb, 0xdd, 0xd8, 0xdb, 0xb7, 0x1a, 0xac, 0xfc, 0xe8, 0xb0, 0x32, 0x5e, 0x0f, - 0x5a, 0xf2, 0x2f, 0x56, 0x15, 0xd0, 0x7d, 0x38, 0x67, 0x30, 0x18, 0xd5, 0x5d, 0x18, 0xbc, 0xbb, - 0x4f, 0x89, 0xe6, 0xce, 0xd5, 0xb2, 0x28, 0xe1, 0xec, 0x06, 0xe8, 0xae, 0xf5, 0x03, 0x91, 0xe6, - 0x5a, 0x1e, 0xc7, 0xec, 0xd4, 0x2d, 0xe9, 0x51, 0x0b, 0x52, 0x08, 0xb8, 0xbb, 0x8e, 0xfd, 0xcb, - 0x5c, 0x4d, 0x2d, 0x94, 0x59, 0x24, 0xea, 0x78, 0xa7, 0x91, 0xf1, 0x6b, 0xc5, 0xd0, 0xb3, 0x3d, - 0xf4, 0x53, 0xc8, 0xaf, 0x5b, 0xec, 0x29, 0x64, 0x83, 0xec, 0xb5, 0x3d, 0x27, 0x3e, 0x0d, 0xd7, - 0x84, 0xb7, 0x61, 0x2c, 0x16, 0xad, 0xf5, 0x4a, 0x52, 0xa6, 0x75, 0x8a, 0x3d, 0x07, 0xa9, 0x83, - 0x5a, 0x96, 0x62, 0x45, 0xc6, 0xfe, 0x97, 0x7c, 0x06, 0x24, 0xe4, 0x14, 0x74, 0x1e, 0x55, 0x53, - 0xe7, 0x51, 0xe9, 0xf3, 0x05, 0x39, 0xba, 0x8f, 0x7f, 0x61, 0xf6, 0x9b, 0xdd, 0x89, 0x3e, 0xe9, - 0x6f, 0x70, 0xf6, 0x8f, 0x5a, 0x70, 0x36, 0xcb, 0xac, 0x84, 0x0a, 0x57, 0xfc, 0x46, 0xa6, 0xde, - 0x24, 0xd5, 0x08, 0xde, 0x11, 0xe5, 0x58, 0x61, 0x0c, 0x9c, 0xff, 0xe3, 0x78, 0x41, 0xea, 0x6e, - 0x81, 0x99, 0x1e, 0x1a, 0xbd, 0xc9, 0x7d, 0x8d, 0x2c, 0x95, 0xbf, 0xf9, 0x78, 0x7e, 0x46, 0xf6, - 0xcf, 0x14, 0xe0, 0x2c, 0x7f, 0x54, 0x58, 0xdc, 0x0f, 0xdc, 0x56, 0x3d, 0x68, 0x09, 0xcf, 0xab, - 0x77, 0x60, 0xa2, 0xad, 0x5d, 0xa3, 0x7b, 0x85, 0xc9, 0xd2, 0xaf, 0xdb, 0xc9, 0x75, 0x46, 0x2f, - 0xc5, 0x06, 0x2d, 0xd4, 0x82, 0x09, 0xb2, 0xef, 0x36, 0x95, 0x66, 0xba, 0x70, 0xec, 0xb3, 0x41, - 0xb5, 0xb2, 0xa2, 0xd1, 0xc1, 0x06, 0xd5, 0x47, 0x90, 0xce, 0xcf, 0xfe, 0x31, 0x0b, 0x1e, 0xcf, - 0x09, 0xaa, 0x45, 0x9b, 0xbb, 0xc7, 0x9e, 0x6f, 0x44, 0x66, 0x30, 0xd5, 0x1c, 0x7f, 0xd4, 0xc1, - 0x02, 0x8a, 0xbe, 0x04, 0xc0, 0x1f, 0x65, 0xa8, 0x74, 0x2f, 0x3e, 0x7d, 0xb0, 0x60, 0x33, 0x5a, - 0x44, 0x12, 0x59, 0x1f, 0x6b, 0xb4, 0xec, 0x9f, 0x2a, 0xc2, 0x30, 0x7b, 0x04, 0x40, 0xab, 0x30, - 0xba, 0xc3, 0x43, 0x78, 0x0f, 0x12, 0x2d, 0x3c, 0xb9, 0x26, 0xf1, 0x02, 0x2c, 0x2b, 0xa3, 0x35, - 0x38, 0x23, 0xbc, 0xfb, 0xaa, 0xc4, 0x73, 0x0e, 0xe4, 0x6d, 0x9b, 0x67, 0xd3, 0x52, 0xf9, 0xe3, - 0x6a, 0xdd, 0x28, 0x38, 0xab, 0x1e, 0x7a, 0xb3, 0x2b, 0x70, 0x27, 0x0f, 0x7e, 0xae, 0x64, 0xf3, - 0x3e, 0xc1, 0x3b, 0xdf, 0x80, 0xc9, 0x76, 0x97, 0x5e, 0x61, 0x38, 0xb9, 0x37, 0x98, 0xba, 0x04, - 0x13, 0x97, 0xd9, 0x93, 0x74, 0x98, 0xf5, 0xcc, 0xc6, 0x4e, 0x48, 0xa2, 0x9d, 0xc0, 0x6b, 0x89, - 0x04, 0xf7, 0x89, 0x3d, 0x49, 0x0a, 0x8e, 0xbb, 0x6a, 0x50, 0x2a, 0x5b, 0x8e, 0xeb, 0x75, 0x42, - 0x92, 0x50, 0x19, 0x31, 0xa9, 0xac, 0xa6, 0xe0, 0xb8, 0xab, 0x06, 0x5d, 0x47, 0xe7, 0x44, 0x76, - 0x74, 0x19, 0xf3, 0x41, 0x19, 0x09, 0x8d, 0x4a, 0xdf, 0x8f, 0x1e, 0x71, 0x88, 0x84, 0x91, 0x86, - 0xca, 0xaf, 0xae, 0xe5, 0xde, 0x15, 0x5e, 0x1f, 0x92, 0xca, 0xc3, 0xe4, 0xe8, 0xfe, 0x03, 0x0b, - 0xce, 0x64, 0x18, 0x23, 0x72, 0x56, 0xb5, 0xed, 0x46, 0xb1, 0xca, 0x18, 0xa4, 0xb1, 0x2a, 0x5e, - 0x8e, 0x15, 0x06, 0xdd, 0x0f, 0x9c, 0x19, 0xa6, 0x19, 0xa0, 0x30, 0xf6, 0x11, 0xd0, 0xe3, 0x31, - 0x40, 0x74, 0x11, 0x86, 0x3a, 0x11, 0x09, 0x65, 0x72, 0x6b, 0xc9, 0xbf, 0x99, 0xa6, 0x92, 0x41, - 0xa8, 0x68, 0xba, 0xad, 0x94, 0x84, 0x9a, 0x68, 0xca, 0xd5, 0x84, 0x1c, 0x66, 0x7f, 0xad, 0x08, - 0xe7, 0x73, 0x8d, 0x8d, 0x69, 0x97, 0xf6, 0x02, 0xdf, 0x8d, 0x03, 0xf5, 0xc0, 0xc4, 0x03, 0xe6, - 0x90, 0xf6, 0xce, 0x9a, 0x28, 0xc7, 0x0a, 0x03, 0x5d, 0x82, 0x61, 0x76, 0x11, 0xef, 0xca, 0x89, - 0xb4, 0x54, 0xe5, 0x71, 0x1c, 0x38, 0x78, 0xe0, 0x7c, 0x73, 0xcf, 0xc0, 0x50, 0x3b, 0x08, 0xbc, - 0x34, 0x33, 0xa2, 0xdd, 0x0d, 0x02, 0x0f, 0x33, 0x20, 0xfa, 0x8c, 0x18, 0x87, 0xd4, 0x8b, 0x0a, - 0x76, 0x5a, 0x41, 0xa4, 0x0d, 0xc6, 0x73, 0x30, 0xba, 0x4b, 0x0e, 0x42, 0xd7, 0xdf, 0x4e, 0xbf, - 0xb4, 0xdd, 0xe0, 0xc5, 0x58, 0xc2, 0xcd, 0x94, 0x20, 0xa3, 0x27, 0x9d, 0x28, 0x6e, 0xac, 0xef, - 0xd1, 0xf6, 0x03, 0x45, 0x98, 0xc6, 0x4b, 0xd5, 0x6f, 0x4d, 0xc4, 0xed, 0xee, 0x89, 0x38, 0xe9, - 0x44, 0x71, 0xfd, 0x67, 0xe3, 0x17, 0x2c, 0x98, 0x66, 0x61, 0xb3, 0x45, 0xc0, 0x17, 0x37, 0xf0, - 0x4f, 0x41, 0x74, 0x7b, 0x06, 0x86, 0x43, 0xda, 0x68, 0x3a, 0xfb, 0x13, 0xeb, 0x09, 0xe6, 0x30, - 0xf4, 0x24, 0x0c, 0xb1, 0x2e, 0xd0, 0xc9, 0x9b, 0xe0, 0x89, 0x33, 0xaa, 0x4e, 0xec, 0x60, 0x56, - 0xca, 0x3c, 0x6f, 0x31, 0x69, 0x7b, 0x2e, 0xef, 0x74, 0xa2, 0x99, 0xff, 0x64, 0x78, 0xde, 0x66, - 0x76, 0xed, 0xa3, 0x79, 0xde, 0x66, 0x93, 0xec, 0x7d, 0x2d, 0xfa, 0x9f, 0x05, 0xb8, 0x90, 0x59, - 0x6f, 0x60, 0xcf, 0xdb, 0xde, 0xb5, 0x4f, 0xc6, 0x60, 0x22, 0xdb, 0x8e, 0xa1, 0x78, 0x8a, 0x76, - 0x0c, 0x43, 0x83, 0x4a, 0x8e, 0xc3, 0x03, 0x38, 0xc4, 0x66, 0x0e, 0xd9, 0x27, 0xc4, 0x21, 0x36, - 0xb3, 0x6f, 0x39, 0xd7, 0xba, 0xbf, 0x28, 0xe4, 0x7c, 0x0b, 0xbb, 0xe0, 0x5d, 0xa6, 0x7c, 0x86, - 0x01, 0x23, 0x21, 0x09, 0x4f, 0x70, 0x1e, 0xc3, 0xcb, 0xb0, 0x82, 0x22, 0x57, 0x73, 0x2d, 0x2d, - 0xe4, 0xe7, 0x06, 0xcd, 0x6d, 0x6a, 0xde, 0x7c, 0x48, 0xd1, 0xa3, 0xd3, 0xa4, 0xdd, 0x4c, 0xd7, - 0xb4, 0x4b, 0x79, 0x71, 0xf0, 0x4b, 0xf9, 0x44, 0xf6, 0x85, 0x1c, 0x2d, 0xc2, 0xf4, 0x9e, 0xeb, - 0x53, 0xb6, 0x79, 0x60, 0x8a, 0xa2, 0x2a, 0xd2, 0xc2, 0x9a, 0x09, 0xc6, 0x69, 0xfc, 0xb9, 0x37, - 0x60, 0xf2, 0xe1, 0xd5, 0x91, 0xdf, 0x28, 0xc2, 0x13, 0x3d, 0xb6, 0x3d, 0xe7, 0xf5, 0xc6, 0x1c, - 0x68, 0xbc, 0xbe, 0x6b, 0x1e, 0xea, 0x70, 0x76, 0xab, 0xe3, 0x79, 0x07, 0xcc, 0x54, 0x90, 0xb4, - 0x24, 0x86, 0x90, 0x15, 0x55, 0x4c, 0xfc, 0xd5, 0x0c, 0x1c, 0x9c, 0x59, 0x13, 0xbd, 0x05, 0x28, - 0x10, 0x89, 0x89, 0x93, 0x98, 0x3b, 0x6c, 0xe0, 0x8b, 0xc9, 0x66, 0xbc, 0xd5, 0x85, 0x81, 0x33, - 0x6a, 0x51, 0xa1, 0x9f, 0x9e, 0x4a, 0x07, 0xaa, 0x5b, 0x29, 0xa1, 0x1f, 0xeb, 0x40, 0x6c, 0xe2, - 0xa2, 0x6b, 0x30, 0xeb, 0xec, 0x3b, 0x2e, 0x8f, 0xc1, 0x28, 0x09, 0x70, 0xa9, 0x5f, 0x29, 0xc1, - 0x16, 0xd3, 0x08, 0xb8, 0xbb, 0x4e, 0xca, 0xb7, 0x75, 0x24, 0xdf, 0xb7, 0xb5, 0x37, 0x5f, 0xec, - 0xa7, 0xd3, 0xb5, 0xff, 0x8b, 0x45, 0x8f, 0x2f, 0x2e, 0xbc, 0x9b, 0xf1, 0xa8, 0xde, 0x80, 0x49, - 0xa5, 0x9b, 0xd4, 0xdc, 0x4c, 0xd5, 0x38, 0x2c, 0xeb, 0x40, 0x6c, 0xe2, 0xf2, 0x05, 0x11, 0x25, - 0x1e, 0x0f, 0x86, 0xe8, 0x2e, 0xfc, 0xc8, 0x15, 0x06, 0xfa, 0x32, 0x8c, 0xb6, 0xdc, 0x7d, 0x37, - 0x0a, 0x42, 0xb1, 0x59, 0x8e, 0x69, 0x95, 0x9e, 0xf0, 0xc1, 0x2a, 0x27, 0x83, 0x25, 0x3d, 0xfb, - 0x07, 0x0a, 0x30, 0x29, 0x5b, 0x7c, 0xbb, 0x13, 0xc4, 0xce, 0x29, 0x1c, 0xcb, 0xd7, 0x8c, 0x63, - 0xf9, 0x33, 0xbd, 0x9c, 0xe9, 0x59, 0x97, 0x72, 0x8f, 0xe3, 0x5b, 0xa9, 0xe3, 0xf8, 0xd9, 0xfe, - 0xa4, 0x7a, 0x1f, 0xc3, 0xff, 0xca, 0x82, 0x59, 0x03, 0xff, 0x14, 0x4e, 0x83, 0x55, 0xf3, 0x34, - 0x78, 0xba, 0xef, 0x37, 0xe4, 0x9c, 0x02, 0x5f, 0x2f, 0xa4, 0xfa, 0xce, 0xb8, 0xff, 0xfb, 0x30, - 0xb4, 0xe3, 0x84, 0xad, 0x5e, 0x91, 0x84, 0xbb, 0x2a, 0xcd, 0x5f, 0x77, 0xc2, 0x16, 0xe7, 0xe1, - 0x2f, 0xaa, 0x74, 0xa6, 0x4e, 0xd8, 0xea, 0xeb, 0xe0, 0xc3, 0x9a, 0x42, 0x57, 0x61, 0x24, 0x6a, - 0x06, 0x6d, 0x65, 0xdc, 0x77, 0x91, 0xa7, 0x3a, 0xa5, 0x25, 0x47, 0x87, 0x15, 0x64, 0x36, 0x47, - 0x8b, 0xb1, 0xc0, 0x9f, 0xdb, 0x86, 0x92, 0x6a, 0xfa, 0x91, 0xba, 0x66, 0xfc, 0x4e, 0x11, 0xce, - 0x64, 0xac, 0x0b, 0x14, 0x19, 0xa3, 0xf5, 0xf2, 0x80, 0xcb, 0xe9, 0x23, 0x8e, 0x57, 0xc4, 0x6e, - 0x2c, 0x2d, 0x31, 0xff, 0x03, 0x37, 0x7a, 0x3b, 0x22, 0xe9, 0x46, 0x69, 0x51, 0xff, 0x46, 0x69, - 0x63, 0xa7, 0x36, 0xd4, 0xb4, 0x21, 0xd5, 0xd3, 0x47, 0x3a, 0xa7, 0x7f, 0x5a, 0x84, 0xb3, 0x59, - 0x31, 0x38, 0xd0, 0x77, 0xa7, 0xf2, 0x12, 0xbd, 0x3a, 0x68, 0xf4, 0x0e, 0x9e, 0xac, 0x48, 0x04, - 0x2d, 0x9b, 0x37, 0x33, 0x15, 0xf5, 0x1d, 0x66, 0xd1, 0x26, 0xf3, 0xb8, 0x0b, 0x79, 0x3e, 0x29, - 0xb9, 0xc5, 0x3f, 0x37, 0x70, 0x07, 0x44, 0x22, 0xaa, 0x28, 0xe5, 0x71, 0x27, 0x8b, 0xfb, 0x7b, - 0xdc, 0xc9, 0x96, 0xe7, 0x5c, 0x18, 0xd7, 0xbe, 0xe6, 0x91, 0xce, 0xf8, 0x2e, 0x3d, 0x51, 0xb4, - 0x7e, 0x3f, 0xd2, 0x59, 0xff, 0x31, 0x0b, 0x52, 0x26, 0x75, 0x4a, 0x25, 0x65, 0xe5, 0xaa, 0xa4, - 0x2e, 0xc2, 0x50, 0x18, 0x78, 0x24, 0x9d, 0xaa, 0x06, 0x07, 0x1e, 0xc1, 0x0c, 0x42, 0x31, 0xe2, - 0x44, 0x21, 0x31, 0xa1, 0x5f, 0xb6, 0xc4, 0x35, 0xea, 0x19, 0x18, 0xf6, 0xc8, 0x3e, 0x91, 0xda, - 0x08, 0xc5, 0x93, 0x6f, 0xd2, 0x42, 0xcc, 0x61, 0xf6, 0x2f, 0x0c, 0xc1, 0x53, 0x3d, 0x7d, 0x56, - 0xe9, 0x95, 0x65, 0xdb, 0x89, 0xc9, 0x3d, 0xe7, 0x20, 0x1d, 0x48, 0xfb, 0x1a, 0x2f, 0xc6, 0x12, - 0xce, 0x0c, 0x80, 0x79, 0x2c, 0xce, 0x94, 0x02, 0x4f, 0x84, 0xe0, 0x14, 0x50, 0x53, 0x71, 0x54, - 0x3c, 0x09, 0xc5, 0xd1, 0x15, 0x80, 0x28, 0xf2, 0x56, 0x7c, 0x2a, 0x81, 0xb5, 0x84, 0x65, 0x71, - 0x12, 0xb3, 0xb5, 0x71, 0x53, 0x40, 0xb0, 0x86, 0x85, 0xaa, 0x30, 0xd3, 0x0e, 0x83, 0x98, 0xeb, - 0x43, 0xab, 0xdc, 0xa6, 0x65, 0xd8, 0x74, 0x17, 0xac, 0xa7, 0xe0, 0xb8, 0xab, 0x06, 0x7a, 0x0d, - 0xc6, 0x85, 0x0b, 0x61, 0x3d, 0x08, 0x3c, 0xa1, 0xaa, 0x51, 0x16, 0x12, 0x8d, 0x04, 0x84, 0x75, - 0x3c, 0xad, 0x1a, 0x53, 0xb2, 0x8e, 0x66, 0x56, 0xe3, 0x8a, 0x56, 0x0d, 0x2f, 0x15, 0x8f, 0x67, - 0x6c, 0xa0, 0x78, 0x3c, 0x89, 0xf2, 0xaa, 0x34, 0xf0, 0xbb, 0x12, 0xf4, 0x55, 0xf7, 0xfc, 0xec, - 0x10, 0x9c, 0x11, 0x0b, 0xe7, 0x51, 0x2f, 0x97, 0xdb, 0xdd, 0xcb, 0xe5, 0x24, 0xd4, 0x5b, 0xdf, - 0x5a, 0x33, 0xa7, 0xbd, 0x66, 0x7e, 0xb9, 0x08, 0x23, 0x7c, 0x2a, 0x4e, 0x41, 0x86, 0x5f, 0x15, - 0x4a, 0xbf, 0x1e, 0x91, 0x68, 0x78, 0x5f, 0xe6, 0xab, 0x4e, 0xec, 0xf0, 0xf3, 0x4b, 0xb1, 0xd1, - 0x44, 0x3d, 0x88, 0xe6, 0x0d, 0x46, 0x3b, 0x97, 0xd2, 0x6a, 0x01, 0xa7, 0xa1, 0xb1, 0xdd, 0xaf, - 0x00, 0x44, 0x2c, 0x17, 0x3f, 0xa5, 0x21, 0x62, 0x1a, 0x3d, 0xdf, 0xa3, 0xf5, 0x86, 0x42, 0xe6, - 0x7d, 0x48, 0x96, 0xa0, 0x02, 0x60, 0x8d, 0xe2, 0xdc, 0xeb, 0x50, 0x52, 0xc8, 0xfd, 0x54, 0x00, - 0x13, 0xfa, 0xa9, 0xf7, 0x45, 0x98, 0x4e, 0xb5, 0x75, 0x2c, 0x0d, 0xc2, 0x2f, 0x5a, 0x30, 0xcd, - 0xbb, 0xbc, 0xe2, 0xef, 0x8b, 0xcd, 0xfe, 0x01, 0x9c, 0xf5, 0x32, 0x36, 0x9d, 0x98, 0xd1, 0xc1, - 0x37, 0xa9, 0xd2, 0x18, 0x64, 0x41, 0x71, 0x66, 0x1b, 0xe8, 0x32, 0x8c, 0x71, 0x8f, 0x19, 0xc7, - 0x13, 0x5e, 0x0e, 0x13, 0x3c, 0xb7, 0x05, 0x2f, 0xc3, 0x0a, 0x6a, 0xff, 0x9e, 0x05, 0xb3, 0xbc, - 0xe7, 0x37, 0xc8, 0x81, 0xba, 0x1d, 0x7f, 0x9c, 0x7d, 0x17, 0xa9, 0x3b, 0x0a, 0x39, 0xa9, 0x3b, - 0xf4, 0x4f, 0x2b, 0xf6, 0xfc, 0xb4, 0x9f, 0xb1, 0x40, 0xac, 0xc0, 0x53, 0xb8, 0x07, 0x7e, 0xbb, - 0x79, 0x0f, 0x9c, 0xcb, 0x5f, 0xd4, 0x39, 0x17, 0xc0, 0x3f, 0xb7, 0x60, 0x86, 0x23, 0x24, 0x0f, - 0x91, 0x1f, 0xeb, 0x3c, 0x0c, 0x92, 0x4f, 0x4e, 0x25, 0xf0, 0xce, 0xfe, 0x28, 0x63, 0xb2, 0x86, - 0x7a, 0x4e, 0x56, 0x4b, 0x6e, 0xa0, 0x63, 0xe4, 0x49, 0x3c, 0x76, 0xb4, 0x59, 0xfb, 0x4f, 0x2c, - 0x40, 0xbc, 0x19, 0xe3, 0x5c, 0xa6, 0xa7, 0x1d, 0x2b, 0xd5, 0x34, 0x41, 0x09, 0xab, 0x51, 0x10, - 0xac, 0x61, 0x9d, 0xc8, 0xf0, 0xa4, 0x5e, 0x93, 0x8b, 0xfd, 0x5f, 0x93, 0x8f, 0x31, 0xa2, 0x7f, - 0x7b, 0x08, 0xd2, 0x26, 0xd5, 0xe8, 0x0e, 0x4c, 0x34, 0x9d, 0xb6, 0xb3, 0xe9, 0x7a, 0x6e, 0xec, - 0x92, 0xa8, 0x97, 0x19, 0xca, 0xb2, 0x86, 0x27, 0xde, 0x09, 0xb5, 0x12, 0x6c, 0xd0, 0x41, 0xf3, - 0x00, 0xed, 0xd0, 0xdd, 0x77, 0x3d, 0xb2, 0xcd, 0xae, 0xc2, 0xcc, 0xaf, 0x8a, 0xdb, 0x56, 0xc8, - 0x52, 0xac, 0x61, 0x64, 0xf8, 0xe1, 0x14, 0x1f, 0x9d, 0x1f, 0xce, 0xd0, 0x31, 0xfd, 0x70, 0x86, - 0x07, 0xf2, 0xc3, 0xc1, 0xf0, 0x98, 0x3c, 0xbb, 0xe9, 0xff, 0x55, 0xd7, 0x23, 0x42, 0x60, 0xe3, - 0xde, 0x56, 0x73, 0x0f, 0x0e, 0x2b, 0x8f, 0xe1, 0x4c, 0x0c, 0x9c, 0x53, 0x13, 0x7d, 0x09, 0xca, - 0x8e, 0xe7, 0x05, 0xf7, 0xd4, 0xa8, 0xad, 0x44, 0x4d, 0xc7, 0x4b, 0x82, 0xaf, 0x8f, 0x2d, 0x3d, - 0xf9, 0xe0, 0xb0, 0x52, 0x5e, 0xcc, 0xc1, 0xc1, 0xb9, 0xb5, 0xed, 0x5d, 0x38, 0xd3, 0x20, 0xa1, - 0x4c, 0xbd, 0xaa, 0xb6, 0xd8, 0x06, 0x94, 0xc2, 0x14, 0x53, 0x19, 0x28, 0xe8, 0x89, 0x16, 0x18, - 0x53, 0x32, 0x91, 0x84, 0x90, 0xfd, 0x67, 0x16, 0x8c, 0x0a, 0x33, 0xed, 0x53, 0x90, 0x65, 0x16, - 0x0d, 0x7d, 0x64, 0x25, 0x9b, 0xf1, 0xb2, 0xce, 0xe4, 0x6a, 0x22, 0x6b, 0x29, 0x4d, 0xe4, 0xd3, - 0xbd, 0x88, 0xf4, 0xd6, 0x41, 0xfe, 0x48, 0x11, 0xa6, 0x4c, 0x13, 0xf5, 0x53, 0x18, 0x82, 0x75, - 0x18, 0x8d, 0x84, 0x3f, 0x44, 0x21, 0xdf, 0x10, 0x36, 0x3d, 0x89, 0x89, 0x95, 0x8b, 0xf0, 0x80, - 0x90, 0x44, 0x32, 0x1d, 0x2d, 0x8a, 0x8f, 0xd0, 0xd1, 0xa2, 0x9f, 0x97, 0xc0, 0xd0, 0x49, 0x78, - 0x09, 0xd8, 0xbf, 0xc2, 0x98, 0xbf, 0x5e, 0x7e, 0x0a, 0x72, 0xc1, 0x35, 0xf3, 0x98, 0xb0, 0x7b, - 0xac, 0x2c, 0xd1, 0xa9, 0x1c, 0xf9, 0xe0, 0x9f, 0x59, 0x30, 0x2e, 0x10, 0x4f, 0xa1, 0xdb, 0xdf, - 0x61, 0x76, 0xfb, 0x89, 0x1e, 0xdd, 0xce, 0xe9, 0xef, 0x3f, 0x28, 0xa8, 0xfe, 0xd6, 0x83, 0x30, - 0x1e, 0x28, 0x19, 0xc7, 0x18, 0xbd, 0x0d, 0x06, 0xcd, 0xc0, 0x13, 0x87, 0xf9, 0x93, 0x89, 0xc3, - 0x2d, 0x2f, 0x3f, 0xd2, 0x7e, 0x63, 0x85, 0xcd, 0xfc, 0x41, 0x83, 0x30, 0x16, 0x07, 0x68, 0xe2, - 0x0f, 0x1a, 0x84, 0x31, 0x66, 0x10, 0xd4, 0x02, 0x88, 0x9d, 0x70, 0x9b, 0xc4, 0xb4, 0x4c, 0xf8, - 0xee, 0xe7, 0xef, 0xc2, 0x4e, 0xec, 0x7a, 0xf3, 0xae, 0x1f, 0x47, 0x71, 0x38, 0x5f, 0xf3, 0xe3, - 0x5b, 0x21, 0xbf, 0x1b, 0x68, 0x1e, 0xb4, 0x8a, 0x16, 0xd6, 0xe8, 0x4a, 0x17, 0x2e, 0xd6, 0xc6, - 0xb0, 0xf9, 0x50, 0xb8, 0x2e, 0xca, 0xb1, 0xc2, 0xb0, 0x5f, 0x67, 0x3c, 0x99, 0x0d, 0xd0, 0xf1, - 0x9c, 0x5b, 0x7f, 0x6b, 0x4c, 0x0d, 0x2d, 0x7b, 0x25, 0xa8, 0xea, 0x2e, 0xb4, 0xbd, 0x59, 0x20, - 0x6d, 0x58, 0xf7, 0x2f, 0x48, 0xfc, 0x6c, 0xd1, 0x77, 0x76, 0xbd, 0x1f, 0xbf, 0xd4, 0x87, 0x97, - 0x1e, 0xe3, 0xc5, 0x98, 0x45, 0x74, 0x65, 0x91, 0x2f, 0x6b, 0xf5, 0x74, 0xba, 0x94, 0x65, 0x09, - 0xc0, 0x09, 0x0e, 0x5a, 0x10, 0x37, 0x4b, 0xae, 0x9f, 0x7b, 0x22, 0x75, 0xb3, 0x94, 0x9f, 0xaf, - 0x5d, 0x2d, 0x5f, 0x86, 0x71, 0x95, 0x82, 0xae, 0xce, 0x33, 0x79, 0x89, 0x48, 0x06, 0x2b, 0x49, - 0x31, 0xd6, 0x71, 0xd0, 0x06, 0x4c, 0x47, 0x3c, 0x3f, 0x9e, 0xf4, 0xaa, 0x12, 0x7a, 0x83, 0xe7, - 0xe5, 0xbb, 0x73, 0xc3, 0x04, 0x1f, 0xb1, 0x22, 0xbe, 0x59, 0xa5, 0x1f, 0x56, 0x9a, 0x04, 0x7a, - 0x13, 0xa6, 0x3c, 0x3d, 0x4f, 0x78, 0x5d, 0xa8, 0x15, 0x94, 0x59, 0xa6, 0x91, 0x45, 0xbc, 0x8e, - 0x53, 0xd8, 0x54, 0x08, 0xd0, 0x4b, 0x44, 0x18, 0x34, 0xc7, 0xdf, 0x26, 0x91, 0x48, 0xa0, 0xc5, - 0x84, 0x80, 0x9b, 0x39, 0x38, 0x38, 0xb7, 0x36, 0xba, 0x0a, 0x13, 0xf2, 0xf3, 0x35, 0x2f, 0xc3, - 0xc4, 0xf8, 0x57, 0x83, 0x61, 0x03, 0x13, 0xdd, 0x83, 0x73, 0xf2, 0xff, 0x46, 0xe8, 0x6c, 0x6d, - 0xb9, 0x4d, 0xe1, 0xe4, 0xc9, 0x3d, 0x20, 0x16, 0xa5, 0x4b, 0xc5, 0x4a, 0x16, 0xd2, 0xd1, 0x61, - 0xe5, 0xa2, 0x18, 0xb5, 0x4c, 0x38, 0x9b, 0xc4, 0x6c, 0xfa, 0x68, 0x0d, 0xce, 0xec, 0x10, 0xc7, - 0x8b, 0x77, 0x96, 0x77, 0x48, 0x73, 0x57, 0x6e, 0x22, 0xe6, 0xbb, 0xa8, 0x99, 0xcc, 0x5e, 0xef, - 0x46, 0xc1, 0x59, 0xf5, 0xd0, 0xbb, 0x50, 0x6e, 0x77, 0x36, 0x3d, 0x37, 0xda, 0x59, 0x0f, 0x62, - 0xf6, 0xd4, 0xad, 0x32, 0xb8, 0x09, 0x27, 0x47, 0xe5, 0xb7, 0x59, 0xcf, 0xc1, 0xc3, 0xb9, 0x14, - 0xd0, 0x07, 0x70, 0x2e, 0xb5, 0x18, 0x84, 0xcb, 0xd5, 0x54, 0x7e, 0x50, 0xc9, 0x46, 0x56, 0x05, - 0xee, 0x7a, 0x9b, 0x09, 0xc2, 0xd9, 0x4d, 0x7c, 0x34, 0x03, 0x88, 0xf7, 0x69, 0x65, 0x4d, 0xba, - 0x41, 0x5f, 0x85, 0x09, 0x7d, 0x15, 0x89, 0x03, 0xe6, 0x52, 0xbf, 0x9c, 0xf8, 0x42, 0x36, 0x52, - 0x2b, 0x4a, 0x87, 0x61, 0x83, 0xa2, 0x4d, 0x20, 0xfb, 0xfb, 0xd0, 0x4d, 0x18, 0x6b, 0x7a, 0x2e, - 0xf1, 0xe3, 0x5a, 0xbd, 0x97, 0x73, 0xfe, 0xb2, 0xc0, 0x11, 0x03, 0x26, 0xa2, 0xf0, 0xf1, 0x32, - 0xac, 0x28, 0xd8, 0xbf, 0x56, 0x80, 0x4a, 0x9f, 0x90, 0x8e, 0x29, 0x1d, 0xa0, 0x35, 0x90, 0x0e, - 0x70, 0x51, 0xe6, 0xa3, 0x5b, 0x4f, 0xdd, 0x3f, 0x53, 0xb9, 0xe6, 0x92, 0x5b, 0x68, 0x1a, 0x7f, - 0x60, 0xbb, 0x49, 0x5d, 0x8d, 0x38, 0xd4, 0xd7, 0xa2, 0xd7, 0x78, 0x3e, 0x18, 0x1e, 0x5c, 0xa2, - 0xcf, 0x55, 0x05, 0xdb, 0xbf, 0x52, 0x80, 0x73, 0x6a, 0x08, 0xbf, 0x79, 0x07, 0xee, 0x76, 0xf7, - 0xc0, 0x9d, 0x80, 0x22, 0xdd, 0xbe, 0x05, 0x23, 0x8d, 0x83, 0xa8, 0x19, 0x7b, 0x03, 0x08, 0x40, - 0xcf, 0x98, 0x41, 0x6a, 0xd4, 0x31, 0x6d, 0x04, 0xaa, 0xf9, 0x1b, 0x16, 0x4c, 0x6f, 0x2c, 0xd7, - 0x1b, 0x41, 0x73, 0x97, 0xc4, 0x8b, 0x5c, 0x4d, 0x84, 0x85, 0xfc, 0x63, 0x3d, 0xa4, 0x5c, 0x93, - 0x25, 0x31, 0x5d, 0x84, 0xa1, 0x9d, 0x20, 0x8a, 0xd3, 0xaf, 0x6c, 0xd7, 0x83, 0x28, 0xc6, 0x0c, - 0x62, 0xff, 0xbe, 0x05, 0xc3, 0x2c, 0x8b, 0x6a, 0xbf, 0x6c, 0xbb, 0x83, 0x7c, 0x17, 0x7a, 0x0d, - 0x46, 0xc8, 0xd6, 0x16, 0x69, 0xc6, 0x62, 0x56, 0xa5, 0x9b, 0xde, 0xc8, 0x0a, 0x2b, 0xa5, 0x87, - 0x3e, 0x6b, 0x8c, 0xff, 0xc5, 0x02, 0x19, 0xdd, 0x85, 0x52, 0xec, 0xee, 0x91, 0xc5, 0x56, 0x4b, - 0xbc, 0x53, 0x3c, 0x84, 0x57, 0xe4, 0x86, 0x24, 0x80, 0x13, 0x5a, 0xf6, 0xd7, 0x0a, 0x00, 0x89, - 0x67, 0x70, 0xbf, 0x4f, 0x5c, 0xea, 0x4a, 0x28, 0x7c, 0x29, 0x23, 0xa1, 0x30, 0x4a, 0x08, 0x66, - 0xa4, 0x13, 0x56, 0xc3, 0x54, 0x1c, 0x68, 0x98, 0x86, 0x8e, 0x33, 0x4c, 0xcb, 0x30, 0x9b, 0x78, - 0x36, 0x9b, 0x61, 0x1e, 0x58, 0x88, 0xf7, 0x8d, 0x34, 0x10, 0x77, 0xe3, 0xdb, 0xdf, 0x6f, 0x81, - 0x70, 0x37, 0x18, 0x60, 0x31, 0xbf, 0x23, 0x73, 0x7f, 0x1a, 0x91, 0x61, 0x2f, 0xe6, 0xfb, 0x5f, - 0x88, 0x78, 0xb0, 0xea, 0xf0, 0x30, 0xa2, 0xc0, 0x1a, 0xb4, 0xec, 0x16, 0x08, 0x68, 0x95, 0x30, - 0x25, 0x43, 0xff, 0xde, 0x5c, 0x01, 0x68, 0x31, 0x5c, 0x2d, 0x97, 0xa0, 0x62, 0x55, 0x55, 0x05, - 0xc1, 0x1a, 0x96, 0xfd, 0x43, 0x05, 0x18, 0x97, 0x91, 0x48, 0xe9, 0x3d, 0xbe, 0x7f, 0x2b, 0xc7, - 0x4a, 0x43, 0xc0, 0x92, 0x6f, 0x52, 0xc2, 0x2a, 0x5a, 0xbd, 0x9e, 0x7c, 0x53, 0x02, 0x70, 0x82, - 0x83, 0x9e, 0x83, 0xd1, 0xa8, 0xb3, 0xc9, 0xd0, 0x53, 0x46, 0xf4, 0x0d, 0x5e, 0x8c, 0x25, 0x1c, - 0x7d, 0x09, 0x66, 0x78, 0xbd, 0x30, 0x68, 0x3b, 0xdb, 0x5c, 0x83, 0x34, 0xac, 0xbc, 0xda, 0x66, - 0xd6, 0x52, 0xb0, 0xa3, 0xc3, 0xca, 0xd9, 0x74, 0x19, 0xd3, 0x3d, 0x76, 0x51, 0xa1, 0xfb, 0x62, - 0x26, 0xed, 0x30, 0x83, 0xae, 0xc3, 0x08, 0x67, 0x79, 0x82, 0x05, 0xf5, 0x78, 0x51, 0xd2, 0xdc, - 0x6c, 0x58, 0x5c, 0x76, 0xc1, 0x35, 0x45, 0x7d, 0xf4, 0x2e, 0x8c, 0xb7, 0x82, 0x7b, 0xfe, 0x3d, - 0x27, 0x6c, 0x2d, 0xd6, 0x6b, 0x62, 0xd5, 0x64, 0x4a, 0x4e, 0xd5, 0x04, 0x4d, 0x77, 0xdd, 0x61, - 0xda, 0xd3, 0x04, 0x84, 0x75, 0x72, 0x68, 0x83, 0x05, 0x8b, 0xe2, 0xd9, 0xf1, 0x7b, 0x59, 0x9d, - 0xa9, 0x84, 0xfa, 0x1a, 0xe5, 0x49, 0x11, 0x51, 0x4a, 0xe4, 0xd6, 0x4f, 0x08, 0xd9, 0x1f, 0x9e, - 0x01, 0x63, 0xb5, 0x1a, 0x69, 0x08, 0xac, 0x13, 0x4a, 0x43, 0x80, 0x61, 0x8c, 0xec, 0xb5, 0xe3, - 0x83, 0xaa, 0x1b, 0xf6, 0xca, 0x63, 0xb3, 0x22, 0x70, 0xba, 0x69, 0x4a, 0x08, 0x56, 0x74, 0xb2, - 0x73, 0x45, 0x14, 0x3f, 0xc6, 0x5c, 0x11, 0x43, 0xa7, 0x98, 0x2b, 0x62, 0x1d, 0x46, 0xb7, 0xdd, - 0x18, 0x93, 0x76, 0x20, 0x8e, 0xfb, 0xcc, 0x95, 0x70, 0x8d, 0xa3, 0x74, 0x47, 0x2a, 0x17, 0x00, - 0x2c, 0x89, 0xa0, 0xb7, 0xd4, 0x1e, 0x18, 0xc9, 0x97, 0x96, 0xbb, 0x1f, 0x1f, 0x32, 0x77, 0x81, - 0xc8, 0x0d, 0x31, 0xfa, 0xb0, 0xb9, 0x21, 0x56, 0x65, 0x46, 0x87, 0xb1, 0x7c, 0x23, 0x4d, 0x96, - 0xb0, 0xa1, 0x4f, 0x1e, 0x07, 0x23, 0xf7, 0x45, 0xe9, 0xe4, 0x72, 0x5f, 0x7c, 0xbf, 0x05, 0xe7, - 0xda, 0x59, 0x69, 0x60, 0x44, 0x46, 0x86, 0xd7, 0x06, 0xce, 0x73, 0x63, 0x34, 0xc8, 0xae, 0x4d, - 0x99, 0x68, 0x38, 0xbb, 0x39, 0x3a, 0xd0, 0xe1, 0x66, 0x4b, 0xa4, 0x71, 0x78, 0x26, 0x27, 0x89, - 0x46, 0x8f, 0xd4, 0x19, 0x1b, 0x19, 0xa9, 0x1b, 0x3e, 0x9d, 0x97, 0xba, 0x61, 0xe0, 0x84, 0x0d, - 0x49, 0xfa, 0x8c, 0xc9, 0x8f, 0x9c, 0x3e, 0xe3, 0x2d, 0x95, 0x3e, 0xa3, 0x47, 0x48, 0x1e, 0x9e, - 0x1c, 0xa3, 0x6f, 0xd2, 0x0c, 0x2d, 0xf1, 0xc5, 0xf4, 0xc9, 0x24, 0xbe, 0x30, 0x98, 0x3d, 0xcf, - 0xbd, 0xf0, 0x42, 0x1f, 0x66, 0x6f, 0xd0, 0xed, 0xcd, 0xee, 0x79, 0x92, 0x8f, 0xd9, 0x87, 0x4a, - 0xf2, 0x71, 0x47, 0x4f, 0x9a, 0x81, 0xfa, 0x64, 0x85, 0xa0, 0x48, 0x03, 0xa6, 0xca, 0xb8, 0xa3, - 0x1f, 0x41, 0x67, 0xf2, 0xe9, 0xaa, 0x93, 0xa6, 0x9b, 0x6e, 0xd6, 0x21, 0xd4, 0x9d, 0x82, 0xe3, - 0xec, 0xe9, 0xa4, 0xe0, 0x38, 0x77, 0xe2, 0x29, 0x38, 0x1e, 0x3b, 0x85, 0x14, 0x1c, 0x8f, 0x7f, - 0xac, 0x29, 0x38, 0xca, 0x8f, 0x20, 0x05, 0xc7, 0x7a, 0x92, 0x82, 0xe3, 0x7c, 0xfe, 0x94, 0x64, - 0x58, 0xa5, 0xe5, 0x24, 0xde, 0xb8, 0x03, 0xa5, 0xb6, 0xf4, 0xa9, 0x16, 0x31, 0x83, 0xb2, 0x73, - 0xff, 0x65, 0x39, 0x5e, 0xf3, 0x29, 0x51, 0x20, 0x9c, 0x90, 0xa2, 0x74, 0x93, 0x44, 0x1c, 0x4f, - 0xf4, 0x50, 0x8c, 0x65, 0xa9, 0x1c, 0xf2, 0xd3, 0x6f, 0xd8, 0x7f, 0xb3, 0x00, 0x17, 0x7a, 0xaf, - 0xeb, 0x44, 0x5f, 0x51, 0x4f, 0xf4, 0xeb, 0x29, 0x7d, 0x05, 0xbf, 0x04, 0x24, 0x58, 0x03, 0x07, - 0x9e, 0xb8, 0x06, 0xb3, 0xca, 0x1c, 0xcd, 0x73, 0x9b, 0x07, 0x5a, 0x4e, 0x40, 0xe5, 0x1a, 0xd3, - 0x48, 0x23, 0xe0, 0xee, 0x3a, 0x68, 0x11, 0xa6, 0x8d, 0xc2, 0x5a, 0x55, 0x08, 0xfb, 0x4a, 0x41, - 0xd2, 0x30, 0xc1, 0x38, 0x8d, 0x6f, 0x7f, 0xdd, 0x82, 0xc7, 0x73, 0x62, 0x5f, 0x0f, 0x1c, 0x57, - 0x61, 0x0b, 0xa6, 0xdb, 0x66, 0xd5, 0x3e, 0xe1, 0x57, 0x8c, 0x08, 0xdb, 0xaa, 0xaf, 0x29, 0x00, - 0x4e, 0x13, 0x5d, 0xba, 0xfc, 0x1b, 0x7f, 0x78, 0xe1, 0x53, 0xbf, 0xfd, 0x87, 0x17, 0x3e, 0xf5, - 0x7b, 0x7f, 0x78, 0xe1, 0x53, 0x7f, 0xf5, 0xc1, 0x05, 0xeb, 0x37, 0x1e, 0x5c, 0xb0, 0x7e, 0xfb, - 0xc1, 0x05, 0xeb, 0xf7, 0x1e, 0x5c, 0xb0, 0xfe, 0xe0, 0xc1, 0x05, 0xeb, 0x6b, 0x7f, 0x74, 0xe1, - 0x53, 0xef, 0x14, 0xf6, 0x5f, 0xfe, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x16, 0xdf, 0x88, 0xcf, - 0xae, 0xe0, 0x00, 0x00, + // 12666 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x24, 0x49, + 0x56, 0xd8, 0x55, 0xb7, 0xbe, 0xfa, 0xe9, 0x3b, 0x67, 0x66, 0x57, 0xa3, 0xdd, 0x9d, 0x9e, 0xad, + 0xbd, 0x9b, 0x9b, 0xfd, 0x92, 0x6e, 0x67, 0x77, 0x6f, 0x97, 0xdb, 0xbb, 0x05, 0x49, 0x2d, 0xcd, + 0xf4, 0xce, 0x48, 0xd3, 0x9b, 0xad, 0x99, 0xb9, 0x5b, 0x96, 0xf3, 0x95, 0xba, 0x53, 0xad, 0x5a, + 0x95, 0xaa, 0x7a, 0xab, 0xaa, 0x35, 0xa3, 0x0d, 0x88, 0xb0, 0x8f, 0x0f, 0x1b, 0xc3, 0x8f, 0x0b, + 0x43, 0xd8, 0x18, 0x08, 0x1c, 0x61, 0xe3, 0x80, 0x33, 0xb6, 0x23, 0x30, 0x18, 0xf0, 0x81, 0x6d, + 0x8c, 0xfd, 0x03, 0xfe, 0x60, 0xf0, 0x9f, 0x23, 0x82, 0xb0, 0x0c, 0x82, 0xb0, 0x83, 0x1f, 0x76, + 0x38, 0x4c, 0x84, 0x23, 0x90, 0xb1, 0x71, 0xe4, 0x67, 0x65, 0x56, 0x57, 0x75, 0xb7, 0x66, 0x35, + 0xda, 0x85, 0xb8, 0x7f, 0xdd, 0xf9, 0x5e, 0xbe, 0xcc, 0xca, 0x8f, 0x97, 0x2f, 0x5f, 0xbe, 0x0f, + 0x78, 0x63, 0xf7, 0xf5, 0x68, 0xc1, 0x0d, 0x16, 0x77, 0x3b, 0x5b, 0x24, 0xf4, 0x49, 0x4c, 0xa2, + 0xc5, 0x7d, 0xe2, 0x37, 0x83, 0x70, 0x51, 0x00, 0x9c, 0xb6, 0xbb, 0xd8, 0x08, 0x42, 0xb2, 0xb8, + 0xff, 0xd2, 0x62, 0x8b, 0xf8, 0x24, 0x74, 0x62, 0xd2, 0x5c, 0x68, 0x87, 0x41, 0x1c, 0x20, 0xc4, + 0x71, 0x16, 0x9c, 0xb6, 0xbb, 0x40, 0x71, 0x16, 0xf6, 0x5f, 0x9a, 0x7f, 0xb1, 0xe5, 0xc6, 0x3b, + 0x9d, 0xad, 0x85, 0x46, 0xb0, 0xb7, 0xd8, 0x0a, 0x5a, 0xc1, 0x22, 0x43, 0xdd, 0xea, 0x6c, 0xb3, + 0x7f, 0xec, 0x0f, 0xfb, 0xc5, 0x49, 0xcc, 0xaf, 0x27, 0xcd, 0x90, 0x07, 0x31, 0xf1, 0x23, 0x37, + 0xf0, 0xa3, 0x17, 0x9d, 0xb6, 0x1b, 0x91, 0x70, 0x9f, 0x84, 0x8b, 0xed, 0xdd, 0x16, 0x85, 0x45, + 0x26, 0xc2, 0xe2, 0xfe, 0x4b, 0x5b, 0x24, 0x76, 0xba, 0x7a, 0x34, 0xff, 0x4a, 0x42, 0x6e, 0xcf, + 0x69, 0xec, 0xb8, 0x3e, 0x09, 0x0f, 0x24, 0x8d, 0xc5, 0x90, 0x44, 0x41, 0x27, 0x6c, 0x90, 0x13, + 0xd5, 0x8a, 0x16, 0xf7, 0x48, 0xec, 0x64, 0x7c, 0xfd, 0xfc, 0x62, 0x5e, 0xad, 0xb0, 0xe3, 0xc7, + 0xee, 0x5e, 0x77, 0x33, 0x9f, 0xed, 0x57, 0x21, 0x6a, 0xec, 0x90, 0x3d, 0xa7, 0xab, 0xde, 0xcb, + 0x79, 0xf5, 0x3a, 0xb1, 0xeb, 0x2d, 0xba, 0x7e, 0x1c, 0xc5, 0x61, 0xba, 0x92, 0xfd, 0x4d, 0x0b, + 0x2e, 0x2f, 0xdd, 0xab, 0xaf, 0x7a, 0x4e, 0x14, 0xbb, 0x8d, 0x65, 0x2f, 0x68, 0xec, 0xd6, 0xe3, + 0x20, 0x24, 0x77, 0x03, 0xaf, 0xb3, 0x47, 0xea, 0x6c, 0x20, 0xd0, 0x0b, 0x30, 0xb6, 0xcf, 0xfe, + 0x57, 0x2b, 0x73, 0xd6, 0x65, 0xeb, 0x6a, 0x69, 0x79, 0xe6, 0x37, 0x0f, 0xcb, 0x9f, 0x38, 0x3a, + 0x2c, 0x8f, 0xdd, 0x15, 0xe5, 0x58, 0x61, 0xa0, 0x2b, 0x30, 0xb2, 0x1d, 0x6d, 0x1e, 0xb4, 0xc9, + 0x5c, 0x81, 0xe1, 0x4e, 0x09, 0xdc, 0x91, 0xb5, 0x3a, 0x2d, 0xc5, 0x02, 0x8a, 0x16, 0xa1, 0xd4, + 0x76, 0xc2, 0xd8, 0x8d, 0xdd, 0xc0, 0x9f, 0x2b, 0x5e, 0xb6, 0xae, 0x0e, 0x2f, 0xcf, 0x0a, 0xd4, + 0x52, 0x4d, 0x02, 0x70, 0x82, 0x43, 0xbb, 0x11, 0x12, 0xa7, 0x79, 0xdb, 0xf7, 0x0e, 0xe6, 0x86, + 0x2e, 0x5b, 0x57, 0xc7, 0x92, 0x6e, 0x60, 0x51, 0x8e, 0x15, 0x86, 0xfd, 0xe3, 0x05, 0x18, 0x5b, + 0xda, 0xde, 0x76, 0x7d, 0x37, 0x3e, 0x40, 0x77, 0x61, 0xc2, 0x0f, 0x9a, 0x44, 0xfe, 0x67, 0x5f, + 0x31, 0x7e, 0xed, 0xf2, 0x42, 0xf7, 0xca, 0x5c, 0xd8, 0xd0, 0xf0, 0x96, 0x67, 0x8e, 0x0e, 0xcb, + 0x13, 0x7a, 0x09, 0x36, 0xe8, 0x20, 0x0c, 0xe3, 0xed, 0xa0, 0xa9, 0xc8, 0x16, 0x18, 0xd9, 0x72, + 0x16, 0xd9, 0x5a, 0x82, 0xb6, 0x3c, 0x7d, 0x74, 0x58, 0x1e, 0xd7, 0x0a, 0xb0, 0x4e, 0x04, 0x6d, + 0xc1, 0x34, 0xfd, 0xeb, 0xc7, 0xae, 0xa2, 0x5b, 0x64, 0x74, 0x9f, 0xc9, 0xa3, 0xab, 0xa1, 0x2e, + 0x9f, 0x3b, 0x3a, 0x2c, 0x4f, 0xa7, 0x0a, 0x71, 0x9a, 0xa0, 0xfd, 0x01, 0x4c, 0x2d, 0xc5, 0xb1, + 0xd3, 0xd8, 0x21, 0x4d, 0x3e, 0x83, 0xe8, 0x15, 0x18, 0xf2, 0x9d, 0x3d, 0x22, 0xe6, 0xf7, 0xb2, + 0x18, 0xd8, 0xa1, 0x0d, 0x67, 0x8f, 0x1c, 0x1f, 0x96, 0x67, 0xee, 0xf8, 0xee, 0xfb, 0x1d, 0xb1, + 0x2a, 0x68, 0x19, 0x66, 0xd8, 0xe8, 0x1a, 0x40, 0x93, 0xec, 0xbb, 0x0d, 0x52, 0x73, 0xe2, 0x1d, + 0x31, 0xdf, 0x48, 0xd4, 0x85, 0x8a, 0x82, 0x60, 0x0d, 0xcb, 0x7e, 0x00, 0xa5, 0xa5, 0xfd, 0xc0, + 0x6d, 0xd6, 0x82, 0x66, 0x84, 0x76, 0x61, 0xba, 0x1d, 0x92, 0x6d, 0x12, 0xaa, 0xa2, 0x39, 0xeb, + 0x72, 0xf1, 0xea, 0xf8, 0xb5, 0xab, 0x99, 0x1f, 0x6b, 0xa2, 0xae, 0xfa, 0x71, 0x78, 0xb0, 0xfc, + 0xb8, 0x68, 0x6f, 0x3a, 0x05, 0xc5, 0x69, 0xca, 0xf6, 0x7f, 0x28, 0xc0, 0x85, 0xa5, 0x0f, 0x3a, + 0x21, 0xa9, 0xb8, 0xd1, 0x6e, 0x7a, 0x85, 0x37, 0xdd, 0x68, 0x77, 0x23, 0x19, 0x01, 0xb5, 0xb4, + 0x2a, 0xa2, 0x1c, 0x2b, 0x0c, 0xf4, 0x22, 0x8c, 0xd2, 0xdf, 0x77, 0x70, 0x55, 0x7c, 0xf2, 0x39, + 0x81, 0x3c, 0x5e, 0x71, 0x62, 0xa7, 0xc2, 0x41, 0x58, 0xe2, 0xa0, 0x75, 0x18, 0x6f, 0xb0, 0x0d, + 0xd9, 0x5a, 0x0f, 0x9a, 0x84, 0x4d, 0x66, 0x69, 0xf9, 0x79, 0x8a, 0xbe, 0x92, 0x14, 0x1f, 0x1f, + 0x96, 0xe7, 0x78, 0xdf, 0x04, 0x09, 0x0d, 0x86, 0xf5, 0xfa, 0xc8, 0x56, 0xfb, 0x6b, 0x88, 0x51, + 0x82, 0x8c, 0xbd, 0x75, 0x55, 0xdb, 0x2a, 0xc3, 0x6c, 0xab, 0x4c, 0x64, 0x6f, 0x13, 0xf4, 0x12, + 0x0c, 0xed, 0xba, 0x7e, 0x73, 0x6e, 0x84, 0xd1, 0x7a, 0x8a, 0xce, 0xf9, 0x4d, 0xd7, 0x6f, 0x1e, + 0x1f, 0x96, 0x67, 0x8d, 0xee, 0xd0, 0x42, 0xcc, 0x50, 0xed, 0x3f, 0xb5, 0xa0, 0xcc, 0x60, 0x6b, + 0xae, 0x47, 0x6a, 0x24, 0x8c, 0xdc, 0x28, 0x26, 0x7e, 0x6c, 0x0c, 0xe8, 0x35, 0x80, 0x88, 0x34, + 0x42, 0x12, 0x6b, 0x43, 0xaa, 0x16, 0x46, 0x5d, 0x41, 0xb0, 0x86, 0x45, 0x19, 0x42, 0xb4, 0xe3, + 0x84, 0x6c, 0x7d, 0x89, 0x81, 0x55, 0x0c, 0xa1, 0x2e, 0x01, 0x38, 0xc1, 0x31, 0x18, 0x42, 0xb1, + 0x1f, 0x43, 0x40, 0x5f, 0x80, 0xe9, 0xa4, 0xb1, 0xa8, 0xed, 0x34, 0xe4, 0x00, 0xb2, 0x2d, 0x53, + 0x37, 0x41, 0x38, 0x8d, 0x6b, 0xff, 0x13, 0x4b, 0x2c, 0x1e, 0xfa, 0xd5, 0x1f, 0xf3, 0x6f, 0xb5, + 0x7f, 0xc5, 0x82, 0xd1, 0x65, 0xd7, 0x6f, 0xba, 0x7e, 0x0b, 0x7d, 0x05, 0xc6, 0xe8, 0xd9, 0xd4, + 0x74, 0x62, 0x47, 0xf0, 0xbd, 0xcf, 0x68, 0x7b, 0x4b, 0x1d, 0x15, 0x0b, 0xed, 0xdd, 0x16, 0x2d, + 0x88, 0x16, 0x28, 0x36, 0xdd, 0x6d, 0xb7, 0xb7, 0xde, 0x23, 0x8d, 0x78, 0x9d, 0xc4, 0x4e, 0xf2, + 0x39, 0x49, 0x19, 0x56, 0x54, 0xd1, 0x4d, 0x18, 0x89, 0x9d, 0xb0, 0x45, 0x62, 0xc1, 0x00, 0x33, + 0x19, 0x15, 0xaf, 0x89, 0xe9, 0x8e, 0x24, 0x7e, 0x83, 0x24, 0xc7, 0xc2, 0x26, 0xab, 0x8a, 0x05, + 0x09, 0xfb, 0x6f, 0x8f, 0xc0, 0xc5, 0x95, 0x7a, 0x35, 0x67, 0x5d, 0x5d, 0x81, 0x91, 0x66, 0xe8, + 0xee, 0x93, 0x50, 0x8c, 0xb3, 0xa2, 0x52, 0x61, 0xa5, 0x58, 0x40, 0xd1, 0xeb, 0x30, 0xc1, 0x0f, + 0xa4, 0x1b, 0x8e, 0xdf, 0xf4, 0xe4, 0x10, 0x9f, 0x17, 0xd8, 0x13, 0x77, 0x35, 0x18, 0x36, 0x30, + 0x4f, 0xb8, 0xa8, 0xae, 0xa4, 0x36, 0x63, 0xde, 0x61, 0xf7, 0x83, 0x16, 0xcc, 0xf0, 0x66, 0x96, + 0xe2, 0x38, 0x74, 0xb7, 0x3a, 0x31, 0x89, 0xe6, 0x86, 0x19, 0xa7, 0x5b, 0xc9, 0x1a, 0xad, 0xdc, + 0x11, 0x58, 0xb8, 0x9b, 0xa2, 0xc2, 0x99, 0xe0, 0x9c, 0x68, 0x77, 0x26, 0x0d, 0xc6, 0x5d, 0xcd, + 0xa2, 0xef, 0xb5, 0x60, 0xbe, 0x11, 0xf8, 0x71, 0x18, 0x78, 0x1e, 0x09, 0x6b, 0x9d, 0x2d, 0xcf, + 0x8d, 0x76, 0xf8, 0x3a, 0xc5, 0x64, 0x9b, 0x71, 0x82, 0x9c, 0x39, 0x54, 0x48, 0x62, 0x0e, 0x2f, + 0x1d, 0x1d, 0x96, 0xe7, 0x57, 0x72, 0x49, 0xe1, 0x1e, 0xcd, 0xa0, 0x5d, 0x40, 0xf4, 0x28, 0xad, + 0xc7, 0x4e, 0x8b, 0x24, 0x8d, 0x8f, 0x0e, 0xde, 0xf8, 0x63, 0x47, 0x87, 0x65, 0xb4, 0xd1, 0x45, + 0x02, 0x67, 0x90, 0x45, 0xef, 0xc3, 0x79, 0x5a, 0xda, 0xf5, 0xad, 0x63, 0x83, 0x37, 0x37, 0x77, + 0x74, 0x58, 0x3e, 0xbf, 0x91, 0x41, 0x04, 0x67, 0x92, 0x9e, 0x5f, 0x81, 0x0b, 0x99, 0x53, 0x85, + 0x66, 0xa0, 0xb8, 0x4b, 0xb8, 0x08, 0x52, 0xc2, 0xf4, 0x27, 0x3a, 0x0f, 0xc3, 0xfb, 0x8e, 0xd7, + 0x11, 0xab, 0x14, 0xf3, 0x3f, 0x9f, 0x2b, 0xbc, 0x6e, 0xd9, 0x0d, 0x98, 0x58, 0x71, 0xda, 0xce, + 0x96, 0xeb, 0xb9, 0xb1, 0x4b, 0x22, 0xf4, 0x69, 0x28, 0x3a, 0xcd, 0x26, 0x3b, 0x22, 0x4b, 0xcb, + 0x17, 0x8e, 0x0e, 0xcb, 0xc5, 0xa5, 0x26, 0xe5, 0xd5, 0xa0, 0xb0, 0x0e, 0x30, 0xc5, 0x40, 0xcf, + 0xc1, 0x50, 0x33, 0x0c, 0xda, 0x73, 0x05, 0x86, 0x49, 0x87, 0x6a, 0xa8, 0x12, 0x06, 0xed, 0x14, + 0x2a, 0xc3, 0xb1, 0x7f, 0xbd, 0x00, 0x4f, 0xae, 0x90, 0xf6, 0xce, 0x5a, 0x3d, 0x67, 0xd3, 0x5d, + 0x85, 0xb1, 0xbd, 0xc0, 0x77, 0xe3, 0x20, 0x8c, 0x44, 0xd3, 0xec, 0x34, 0x59, 0x17, 0x65, 0x58, + 0x41, 0xd1, 0x65, 0x18, 0x6a, 0x27, 0x92, 0xc0, 0x84, 0x94, 0x22, 0x98, 0x0c, 0xc0, 0x20, 0x14, + 0xa3, 0x13, 0x91, 0x50, 0x9c, 0x82, 0x0a, 0xe3, 0x4e, 0x44, 0x42, 0xcc, 0x20, 0x09, 0x3b, 0xa5, + 0x8c, 0x56, 0x6c, 0xab, 0x14, 0x3b, 0xa5, 0x10, 0xac, 0x61, 0xa1, 0x1a, 0x94, 0x22, 0x35, 0xa9, + 0xc3, 0x83, 0x4f, 0xea, 0x24, 0xe3, 0xb7, 0x6a, 0x26, 0x13, 0x22, 0x06, 0x1b, 0x18, 0xe9, 0xcb, + 0x6f, 0x7f, 0xb5, 0x00, 0x88, 0x0f, 0xe1, 0x5f, 0xb2, 0x81, 0xbb, 0xd3, 0x3d, 0x70, 0x99, 0x92, + 0xd7, 0xad, 0xa0, 0xe1, 0x78, 0x69, 0x16, 0x7e, 0x5a, 0xa3, 0xf7, 0x63, 0x16, 0xa0, 0x15, 0xd7, + 0x6f, 0x92, 0xf0, 0x0c, 0xae, 0x1d, 0x27, 0x3b, 0x48, 0x6f, 0xc1, 0xd4, 0x8a, 0xe7, 0x12, 0x3f, + 0xae, 0xd6, 0x56, 0x02, 0x7f, 0xdb, 0x6d, 0xa1, 0xcf, 0xc1, 0x14, 0xbd, 0x85, 0x05, 0x9d, 0xb8, + 0x4e, 0x1a, 0x81, 0xcf, 0x04, 0x56, 0x7a, 0x77, 0x41, 0x47, 0x87, 0xe5, 0xa9, 0x4d, 0x03, 0x82, + 0x53, 0x98, 0xf6, 0xef, 0xd3, 0x0f, 0x0d, 0xf6, 0xda, 0x81, 0x4f, 0xfc, 0x78, 0x25, 0xf0, 0x9b, + 0xfc, 0x62, 0xf3, 0x39, 0x18, 0x8a, 0x69, 0xc7, 0xf9, 0x47, 0x5e, 0x91, 0x53, 0x4b, 0xbb, 0x7b, + 0x7c, 0x58, 0x7e, 0xac, 0xbb, 0x06, 0xfb, 0x20, 0x56, 0x07, 0x7d, 0x1b, 0x8c, 0x44, 0xb1, 0x13, + 0x77, 0x22, 0xf1, 0xd9, 0x4f, 0xcb, 0xcf, 0xae, 0xb3, 0xd2, 0xe3, 0xc3, 0xf2, 0xb4, 0xaa, 0xc6, + 0x8b, 0xb0, 0xa8, 0x80, 0x9e, 0x85, 0xd1, 0x3d, 0x12, 0x45, 0x4e, 0x4b, 0xca, 0xa4, 0xd3, 0xa2, + 0xee, 0xe8, 0x3a, 0x2f, 0xc6, 0x12, 0x8e, 0x9e, 0x81, 0x61, 0x12, 0x86, 0x41, 0x28, 0x56, 0xd5, + 0xa4, 0x40, 0x1c, 0x5e, 0xa5, 0x85, 0x98, 0xc3, 0xec, 0xff, 0x68, 0xc1, 0xb4, 0xea, 0x2b, 0x6f, + 0xeb, 0x0c, 0x84, 0x8f, 0x77, 0x00, 0x1a, 0xf2, 0x03, 0x23, 0xc6, 0xef, 0xc6, 0xaf, 0x5d, 0xc9, + 0x3c, 0x52, 0xbb, 0x86, 0x31, 0xa1, 0xac, 0x8a, 0x22, 0xac, 0x51, 0xb3, 0xff, 0xb5, 0x05, 0xe7, + 0x52, 0x5f, 0x74, 0xcb, 0x8d, 0x62, 0xf4, 0x6e, 0xd7, 0x57, 0x2d, 0x0c, 0xf6, 0x55, 0xb4, 0x36, + 0xfb, 0x26, 0xb5, 0xe6, 0x64, 0x89, 0xf6, 0x45, 0x37, 0x60, 0xd8, 0x8d, 0xc9, 0x9e, 0xfc, 0x98, + 0x67, 0x7a, 0x7e, 0x0c, 0xef, 0x55, 0x32, 0x23, 0x55, 0x5a, 0x13, 0x73, 0x02, 0xf6, 0x8f, 0x14, + 0xa1, 0xc4, 0x97, 0xed, 0xba, 0xd3, 0x3e, 0x83, 0xb9, 0xa8, 0xc2, 0x10, 0xa3, 0xce, 0x3b, 0xfe, + 0xe9, 0xec, 0x8e, 0x8b, 0xee, 0x2c, 0xd0, 0x9b, 0x05, 0x17, 0x5e, 0x14, 0x33, 0xa3, 0x45, 0x98, + 0x91, 0x40, 0x0e, 0xc0, 0x96, 0xeb, 0x3b, 0xe1, 0x01, 0x2d, 0x9b, 0x2b, 0x32, 0x82, 0x2f, 0xf6, + 0x26, 0xb8, 0xac, 0xf0, 0x39, 0x59, 0xd5, 0xd7, 0x04, 0x80, 0x35, 0xa2, 0xf3, 0xaf, 0x41, 0x49, + 0x21, 0x9f, 0xe4, 0x54, 0x9e, 0xff, 0x02, 0x4c, 0xa7, 0xda, 0xea, 0x57, 0x7d, 0x42, 0x3f, 0xd4, + 0xbf, 0xc1, 0xb8, 0x80, 0xe8, 0xf5, 0xaa, 0xbf, 0x2f, 0xd8, 0xdd, 0x07, 0x70, 0xde, 0xcb, 0xe0, + 0xb2, 0x62, 0xaa, 0x06, 0xe7, 0xca, 0x4f, 0x8a, 0xcf, 0x3e, 0x9f, 0x05, 0xc5, 0x99, 0x6d, 0xd0, + 0x83, 0x2a, 0x68, 0xd3, 0x35, 0xef, 0x78, 0xac, 0xbf, 0xe2, 0xbe, 0x78, 0x5b, 0x94, 0x61, 0x05, + 0xa5, 0x2c, 0xec, 0xbc, 0xea, 0xfc, 0x4d, 0x72, 0x50, 0x27, 0x1e, 0x69, 0xc4, 0x41, 0xf8, 0x91, + 0x76, 0xff, 0x29, 0x3e, 0xfa, 0x9c, 0x03, 0x8e, 0x0b, 0x02, 0xc5, 0x9b, 0xe4, 0x80, 0x4f, 0x85, + 0xfe, 0x75, 0xc5, 0x9e, 0x5f, 0xf7, 0xf3, 0x16, 0x4c, 0xaa, 0xaf, 0x3b, 0x83, 0xad, 0xbe, 0x6c, + 0x6e, 0xf5, 0xa7, 0x7a, 0x2e, 0xf0, 0x9c, 0x4d, 0xfe, 0x17, 0x8c, 0x49, 0x09, 0x9c, 0x5a, 0x18, + 0xd0, 0xa1, 0xa1, 0xa7, 0xca, 0x47, 0x39, 0x21, 0x83, 0x7c, 0xd7, 0x4d, 0x72, 0xb0, 0x19, 0x50, + 0x01, 0x27, 0xfb, 0xbb, 0x8c, 0x59, 0x1b, 0xea, 0x39, 0x6b, 0xbf, 0x58, 0x80, 0x0b, 0x6a, 0x04, + 0x0c, 0x11, 0xe2, 0x2f, 0xfb, 0x18, 0xbc, 0x04, 0xe3, 0x4d, 0xb2, 0xed, 0x74, 0xbc, 0x58, 0xa9, + 0x8e, 0x86, 0xb9, 0xfa, 0xb0, 0x92, 0x14, 0x63, 0x1d, 0xe7, 0x04, 0xc3, 0xf6, 0xd3, 0xe3, 0xec, + 0x74, 0x88, 0x1d, 0xba, 0x82, 0xa9, 0x7c, 0xa9, 0x29, 0x00, 0x27, 0x74, 0x05, 0xa0, 0x50, 0xf6, + 0x3d, 0x03, 0xc3, 0xee, 0x1e, 0x95, 0x16, 0x0a, 0xa6, 0x10, 0x50, 0xa5, 0x85, 0x98, 0xc3, 0xd0, + 0xa7, 0x60, 0xb4, 0x11, 0xec, 0xed, 0x39, 0x7e, 0x93, 0x31, 0xed, 0xd2, 0xf2, 0x38, 0x15, 0x28, + 0x56, 0x78, 0x11, 0x96, 0x30, 0xf4, 0x24, 0x0c, 0x39, 0x61, 0x2b, 0x9a, 0x1b, 0x62, 0x38, 0x63, + 0xb4, 0xa5, 0xa5, 0xb0, 0x15, 0x61, 0x56, 0x4a, 0x25, 0xd9, 0xfb, 0x41, 0xb8, 0xeb, 0xfa, 0xad, + 0x8a, 0x1b, 0x32, 0xb1, 0x54, 0x93, 0x64, 0xef, 0x29, 0x08, 0xd6, 0xb0, 0xd0, 0x1a, 0x0c, 0xb7, + 0x83, 0x30, 0x8e, 0xe6, 0x46, 0xd8, 0x70, 0x3f, 0x9d, 0xb3, 0x95, 0xf8, 0xd7, 0xd6, 0x82, 0x30, + 0x4e, 0x3e, 0x80, 0xfe, 0x8b, 0x30, 0xaf, 0x8e, 0xbe, 0x0d, 0x8a, 0xc4, 0xdf, 0x9f, 0x1b, 0x65, + 0x54, 0xe6, 0xb3, 0xa8, 0xac, 0xfa, 0xfb, 0x77, 0x9d, 0x30, 0xe1, 0x33, 0xab, 0xfe, 0x3e, 0xa6, + 0x75, 0xd0, 0x97, 0xa0, 0x24, 0x1f, 0x0f, 0x22, 0x71, 0xb5, 0xcc, 0x5c, 0x62, 0x58, 0x20, 0x61, + 0xf2, 0x7e, 0xc7, 0x0d, 0xc9, 0x1e, 0xf1, 0xe3, 0x28, 0x51, 0xff, 0x48, 0x68, 0x84, 0x13, 0x6a, + 0xe8, 0x4b, 0x52, 0x9f, 0xb1, 0x1e, 0x74, 0xfc, 0x38, 0x9a, 0x2b, 0xb1, 0xee, 0x65, 0x6a, 0x9a, + 0xef, 0x26, 0x78, 0x69, 0x85, 0x07, 0xaf, 0x8c, 0x0d, 0x52, 0x08, 0xc3, 0xa4, 0xe7, 0xee, 0x13, + 0x9f, 0x44, 0x51, 0x2d, 0x0c, 0xb6, 0xc8, 0x1c, 0xb0, 0x9e, 0x5f, 0xcc, 0x56, 0xc0, 0x06, 0x5b, + 0x64, 0x79, 0xf6, 0xe8, 0xb0, 0x3c, 0x79, 0x4b, 0xaf, 0x83, 0x4d, 0x12, 0xe8, 0x0e, 0x4c, 0x51, + 0x11, 0xda, 0x4d, 0x88, 0x8e, 0xf7, 0x23, 0xca, 0xe4, 0x67, 0x6c, 0x54, 0xc2, 0x29, 0x22, 0xe8, + 0x2d, 0x28, 0x79, 0xee, 0x36, 0x69, 0x1c, 0x34, 0x3c, 0x32, 0x37, 0xc1, 0x28, 0x66, 0x6e, 0xab, + 0x5b, 0x12, 0x89, 0x5f, 0x51, 0xd4, 0x5f, 0x9c, 0x54, 0x47, 0x77, 0xe1, 0xb1, 0x98, 0x84, 0x7b, + 0xae, 0xef, 0xd0, 0xed, 0x20, 0x24, 0x5e, 0xa6, 0xc6, 0x9e, 0x64, 0xeb, 0xed, 0x92, 0x18, 0xba, + 0xc7, 0x36, 0x33, 0xb1, 0x70, 0x4e, 0x6d, 0x74, 0x1b, 0xa6, 0xd9, 0x4e, 0xa8, 0x75, 0x3c, 0xaf, + 0x16, 0x78, 0x6e, 0xe3, 0x60, 0x6e, 0x8a, 0x11, 0xfc, 0x94, 0xd4, 0x53, 0x57, 0x4d, 0x30, 0xbd, + 0x93, 0x27, 0xff, 0x70, 0xba, 0x36, 0xda, 0x62, 0x7a, 0xcb, 0x4e, 0xe8, 0xc6, 0x07, 0x74, 0xfd, + 0x92, 0x07, 0xf1, 0xdc, 0x74, 0xcf, 0x1b, 0xae, 0x8e, 0xaa, 0x94, 0x9b, 0x7a, 0x21, 0x4e, 0x13, + 0xa4, 0x5b, 0x3b, 0x8a, 0x9b, 0xae, 0x3f, 0x37, 0xc3, 0x38, 0x86, 0xda, 0x19, 0x75, 0x5a, 0x88, + 0x39, 0x8c, 0xe9, 0x2c, 0xe9, 0x8f, 0xdb, 0x94, 0x83, 0xce, 0x32, 0xc4, 0x44, 0x67, 0x29, 0x01, + 0x38, 0xc1, 0xa1, 0xc7, 0x72, 0x1c, 0x1f, 0xcc, 0x21, 0x86, 0xaa, 0xb6, 0xcb, 0xe6, 0xe6, 0x97, + 0x30, 0x2d, 0x47, 0xb7, 0x60, 0x94, 0xf8, 0xfb, 0x6b, 0x61, 0xb0, 0x37, 0x77, 0x2e, 0x7f, 0xcf, + 0xae, 0x72, 0x14, 0xce, 0xd0, 0x93, 0x2b, 0x8a, 0x28, 0xc6, 0x92, 0x04, 0x7a, 0x00, 0x73, 0x19, + 0x33, 0xc2, 0x27, 0xe0, 0x3c, 0x9b, 0x80, 0xcf, 0x8b, 0xba, 0x73, 0x9b, 0x39, 0x78, 0xc7, 0x3d, + 0x60, 0x38, 0x97, 0x3a, 0xfa, 0x2e, 0x98, 0xe4, 0x1b, 0x8a, 0x3f, 0x78, 0x44, 0x73, 0x17, 0xd8, + 0xd7, 0x5c, 0xce, 0xdf, 0x9c, 0x1c, 0x71, 0xf9, 0x82, 0xe8, 0xd0, 0xa4, 0x5e, 0x1a, 0x61, 0x93, + 0x9a, 0xbd, 0x05, 0x53, 0x8a, 0x6f, 0xb1, 0xa5, 0x83, 0xca, 0x30, 0x4c, 0x19, 0xb2, 0xd4, 0x29, + 0x94, 0xe8, 0x4c, 0x31, 0x45, 0x35, 0xe6, 0xe5, 0x6c, 0xa6, 0xdc, 0x0f, 0xc8, 0xf2, 0x41, 0x4c, + 0xf8, 0xbd, 0xb0, 0xa8, 0xcd, 0x94, 0x04, 0xe0, 0x04, 0xc7, 0xfe, 0x7f, 0x5c, 0xee, 0x49, 0x98, + 0xe3, 0x00, 0xc7, 0xc1, 0x0b, 0x30, 0xb6, 0x13, 0x44, 0x31, 0xc5, 0x66, 0x6d, 0x0c, 0x27, 0x92, + 0xce, 0x0d, 0x51, 0x8e, 0x15, 0x06, 0x7a, 0x03, 0x26, 0x1b, 0x7a, 0x03, 0xe2, 0x2c, 0x53, 0x43, + 0x60, 0xb4, 0x8e, 0x4d, 0x5c, 0xf4, 0x3a, 0x8c, 0xb1, 0xe7, 0xca, 0x46, 0xe0, 0x89, 0x1b, 0xa8, + 0x3c, 0x90, 0xc7, 0x6a, 0xa2, 0xfc, 0x58, 0xfb, 0x8d, 0x15, 0x36, 0xba, 0x02, 0x23, 0xb4, 0x0b, + 0xd5, 0x9a, 0x38, 0x45, 0x94, 0x56, 0xe0, 0x06, 0x2b, 0xc5, 0x02, 0x6a, 0xff, 0x9d, 0x82, 0x36, + 0xca, 0xf4, 0x4e, 0x45, 0x50, 0x0d, 0x46, 0xef, 0x3b, 0x6e, 0xec, 0xfa, 0x2d, 0x21, 0x2e, 0x3c, + 0xdb, 0xf3, 0x48, 0x61, 0x95, 0xee, 0xf1, 0x0a, 0xfc, 0xd0, 0x13, 0x7f, 0xb0, 0x24, 0x43, 0x29, + 0x86, 0x1d, 0xdf, 0xa7, 0x14, 0x0b, 0x83, 0x52, 0xc4, 0xbc, 0x02, 0xa7, 0x28, 0xfe, 0x60, 0x49, + 0x06, 0xbd, 0x0b, 0x20, 0x97, 0x25, 0x69, 0x8a, 0x67, 0xc2, 0x17, 0xfa, 0x13, 0xdd, 0x54, 0x75, + 0x96, 0xa7, 0xe8, 0x91, 0x9a, 0xfc, 0xc7, 0x1a, 0x3d, 0x3b, 0x66, 0x62, 0x55, 0x77, 0x67, 0xd0, + 0x77, 0x52, 0x4e, 0xe0, 0x84, 0x31, 0x69, 0x2e, 0xc5, 0x62, 0x70, 0x9e, 0x1b, 0x4c, 0x2a, 0xde, + 0x74, 0xf7, 0x88, 0xce, 0x35, 0x04, 0x11, 0x9c, 0xd0, 0xb3, 0x7f, 0xb9, 0x08, 0x73, 0x79, 0xdd, + 0xa5, 0x8b, 0x8e, 0x3c, 0x70, 0xe3, 0x15, 0x2a, 0x0d, 0x59, 0xe6, 0xa2, 0x5b, 0x15, 0xe5, 0x58, + 0x61, 0xd0, 0xd9, 0x8f, 0xdc, 0x96, 0xbc, 0xd4, 0x0c, 0x27, 0xb3, 0x5f, 0x67, 0xa5, 0x58, 0x40, + 0x29, 0x5e, 0x48, 0x9c, 0x48, 0xbc, 0x43, 0x6b, 0xab, 0x04, 0xb3, 0x52, 0x2c, 0xa0, 0xba, 0xc6, + 0x64, 0xa8, 0x8f, 0xc6, 0xc4, 0x18, 0xa2, 0xe1, 0xd3, 0x1d, 0x22, 0xf4, 0x65, 0x80, 0x6d, 0xd7, + 0x77, 0xa3, 0x1d, 0x46, 0x7d, 0xe4, 0xc4, 0xd4, 0x95, 0x2c, 0xb5, 0xa6, 0xa8, 0x60, 0x8d, 0x22, + 0x7a, 0x15, 0xc6, 0xd5, 0x06, 0xac, 0x56, 0x98, 0x52, 0x5e, 0x7b, 0xe4, 0x4c, 0xb8, 0x51, 0x05, + 0xeb, 0x78, 0xf6, 0x7b, 0xe9, 0xf5, 0x22, 0x76, 0x80, 0x36, 0xbe, 0xd6, 0xa0, 0xe3, 0x5b, 0xe8, + 0x3d, 0xbe, 0xf6, 0x6f, 0x14, 0x61, 0xda, 0x68, 0xac, 0x13, 0x0d, 0xc0, 0xb3, 0xae, 0xd3, 0x73, + 0xce, 0x89, 0x89, 0xd8, 0x7f, 0x76, 0xff, 0xad, 0xa2, 0x9f, 0x85, 0x74, 0x07, 0xf0, 0xfa, 0xe8, + 0xcb, 0x50, 0xf2, 0x9c, 0x88, 0x69, 0x5f, 0x88, 0xd8, 0x77, 0x83, 0x10, 0x4b, 0xee, 0x11, 0x4e, + 0x14, 0x6b, 0x47, 0x0d, 0xa7, 0x9d, 0x90, 0xa4, 0x07, 0x32, 0x95, 0x7d, 0xa4, 0xa1, 0x83, 0xea, + 0x04, 0x15, 0x90, 0x0e, 0x30, 0x87, 0xa1, 0xd7, 0x61, 0x22, 0x24, 0x6c, 0x55, 0xac, 0x50, 0x51, + 0x8e, 0x2d, 0xb3, 0xe1, 0x44, 0xe6, 0xc3, 0x1a, 0x0c, 0x1b, 0x98, 0x89, 0x28, 0x3f, 0xd2, 0x43, + 0x94, 0x7f, 0x16, 0x46, 0xd9, 0x0f, 0xb5, 0x02, 0xd4, 0x6c, 0x54, 0x79, 0x31, 0x96, 0xf0, 0xf4, + 0x82, 0x19, 0x1b, 0x70, 0xc1, 0x3c, 0x07, 0x53, 0x15, 0x87, 0xec, 0x05, 0xfe, 0xaa, 0xdf, 0x6c, + 0x07, 0xae, 0x1f, 0xa3, 0x39, 0x18, 0x62, 0xa7, 0x03, 0xdf, 0xdb, 0x43, 0x94, 0x02, 0x1e, 0xa2, + 0x82, 0xb9, 0xfd, 0xbb, 0x05, 0x98, 0xac, 0x10, 0x8f, 0xc4, 0x84, 0x5f, 0x65, 0x22, 0xb4, 0x06, + 0xa8, 0x15, 0x3a, 0x0d, 0x52, 0x23, 0xa1, 0x1b, 0x34, 0x75, 0x6d, 0x6c, 0x91, 0x3f, 0x0e, 0x5d, + 0xef, 0x82, 0xe2, 0x8c, 0x1a, 0xe8, 0x1d, 0x98, 0x6c, 0x87, 0xc4, 0x50, 0x22, 0x5a, 0x79, 0xd2, + 0x48, 0x4d, 0x47, 0xe4, 0x82, 0xb0, 0x51, 0x84, 0x4d, 0x52, 0xe8, 0x3b, 0x60, 0x26, 0x08, 0xdb, + 0x3b, 0x8e, 0x5f, 0x21, 0x6d, 0xe2, 0x37, 0xa9, 0xa4, 0x2f, 0x54, 0x10, 0xe7, 0x8f, 0x0e, 0xcb, + 0x33, 0xb7, 0x53, 0x30, 0xdc, 0x85, 0x8d, 0xde, 0x81, 0xd9, 0x76, 0x18, 0xb4, 0x9d, 0x16, 0x5b, + 0x28, 0x42, 0xa0, 0xe1, 0xdc, 0xe7, 0x85, 0xa3, 0xc3, 0xf2, 0x6c, 0x2d, 0x0d, 0x3c, 0x3e, 0x2c, + 0x9f, 0x63, 0x03, 0x45, 0x4b, 0x12, 0x20, 0xee, 0x26, 0x63, 0xb7, 0xe0, 0x42, 0x25, 0xb8, 0xef, + 0xdf, 0x77, 0xc2, 0xe6, 0x52, 0xad, 0xaa, 0xe9, 0x0e, 0x36, 0xe4, 0xdd, 0x95, 0x1b, 0x63, 0x64, + 0x9e, 0x53, 0x5a, 0x4d, 0x2e, 0xbf, 0xac, 0xb9, 0x1e, 0xc9, 0xd1, 0x51, 0xfc, 0xbd, 0x82, 0xd1, + 0x52, 0x82, 0xaf, 0x1e, 0x3e, 0xac, 0xdc, 0x87, 0x8f, 0xb7, 0x61, 0x6c, 0xdb, 0x25, 0x5e, 0x13, + 0x93, 0x6d, 0x31, 0x33, 0x9f, 0xce, 0x7f, 0x5f, 0x5e, 0xa3, 0x98, 0x52, 0x27, 0xc5, 0x6f, 0xbe, + 0x6b, 0xa2, 0x32, 0x56, 0x64, 0xd0, 0x2e, 0xcc, 0xc8, 0xab, 0x95, 0x84, 0x8a, 0x4d, 0xfc, 0x6c, + 0xaf, 0xfb, 0x9a, 0x49, 0x9c, 0x4d, 0x20, 0x4e, 0x91, 0xc1, 0x5d, 0x84, 0xe9, 0x55, 0x77, 0x8f, + 0x1e, 0x57, 0x43, 0x6c, 0x49, 0xb3, 0xab, 0x2e, 0xbb, 0xb5, 0xb3, 0x52, 0xfb, 0x27, 0x2d, 0x78, + 0xbc, 0x6b, 0x64, 0x84, 0xf6, 0xe2, 0x94, 0x67, 0x21, 0xad, 0x4d, 0x28, 0xf4, 0xd7, 0x26, 0xd8, + 0xff, 0xd4, 0x82, 0xf3, 0xab, 0x7b, 0xed, 0xf8, 0xa0, 0xe2, 0x9a, 0x8f, 0x33, 0xaf, 0xc1, 0xc8, + 0x1e, 0x69, 0xba, 0x9d, 0x3d, 0x31, 0x73, 0x65, 0xc9, 0xd2, 0xd7, 0x59, 0xe9, 0xf1, 0x61, 0x79, + 0xb2, 0x1e, 0x07, 0xa1, 0xd3, 0x22, 0xbc, 0x00, 0x0b, 0x74, 0x76, 0x30, 0xba, 0x1f, 0x90, 0x5b, + 0xee, 0x9e, 0x2b, 0xed, 0x05, 0x7a, 0x6a, 0xd4, 0x16, 0xe4, 0x80, 0x2e, 0xbc, 0xdd, 0x71, 0xfc, + 0xd8, 0x8d, 0x0f, 0xc4, 0xbb, 0x93, 0x24, 0x82, 0x13, 0x7a, 0xf6, 0x37, 0x2d, 0x98, 0x96, 0xbc, + 0x64, 0xa9, 0xd9, 0x0c, 0x49, 0x14, 0xa1, 0x79, 0x28, 0xb8, 0x6d, 0xd1, 0x4b, 0x10, 0xbd, 0x2c, + 0x54, 0x6b, 0xb8, 0xe0, 0xb6, 0x51, 0x0d, 0x4a, 0xdc, 0xec, 0x20, 0x59, 0x5c, 0x03, 0x19, 0x2f, + 0xb0, 0x1e, 0x6c, 0xca, 0x9a, 0x38, 0x21, 0x22, 0xa5, 0x62, 0x76, 0x0e, 0x15, 0xcd, 0x47, 0xab, + 0x1b, 0xa2, 0x1c, 0x2b, 0x0c, 0x74, 0x15, 0xc6, 0xfc, 0xa0, 0xc9, 0xad, 0x40, 0xf8, 0x9e, 0x66, + 0x4b, 0x76, 0x43, 0x94, 0x61, 0x05, 0xb5, 0x7f, 0xd8, 0x82, 0x09, 0xf9, 0x65, 0x03, 0x0a, 0xe8, + 0x74, 0x6b, 0x25, 0xc2, 0x79, 0xb2, 0xb5, 0xa8, 0x80, 0xcd, 0x20, 0x86, 0x5c, 0x5d, 0x3c, 0x89, + 0x5c, 0x6d, 0xff, 0x44, 0x01, 0xa6, 0x64, 0x77, 0xea, 0x9d, 0xad, 0x88, 0xc4, 0x68, 0x13, 0x4a, + 0x0e, 0x1f, 0x72, 0x22, 0x57, 0xec, 0x33, 0xd9, 0x17, 0x3a, 0x63, 0x7e, 0x12, 0x51, 0x67, 0x49, + 0xd6, 0xc6, 0x09, 0x21, 0xe4, 0xc1, 0xac, 0x1f, 0xc4, 0xec, 0xd8, 0x53, 0xf0, 0x5e, 0x0f, 0x23, + 0x69, 0xea, 0x17, 0x05, 0xf5, 0xd9, 0x8d, 0x34, 0x15, 0xdc, 0x4d, 0x18, 0xad, 0x4a, 0x25, 0x52, + 0x31, 0xff, 0x0a, 0xa7, 0xcf, 0x42, 0xb6, 0x0e, 0xc9, 0xfe, 0x35, 0x0b, 0x4a, 0x12, 0xed, 0x2c, + 0xde, 0xc0, 0xd6, 0x61, 0x34, 0x62, 0x93, 0x20, 0x87, 0xc6, 0xee, 0xd5, 0x71, 0x3e, 0x5f, 0xc9, + 0x69, 0xce, 0xff, 0x47, 0x58, 0xd2, 0x60, 0x5a, 0x70, 0xd5, 0xfd, 0x8f, 0x89, 0x16, 0x5c, 0xf5, + 0x27, 0xe7, 0x84, 0xf9, 0x6f, 0xac, 0xcf, 0x9a, 0xaa, 0x80, 0x0a, 0x9d, 0xed, 0x90, 0x6c, 0xbb, + 0x0f, 0xd2, 0x42, 0x67, 0x8d, 0x95, 0x62, 0x01, 0x45, 0xef, 0xc2, 0x44, 0x43, 0x2a, 0x8f, 0x13, + 0x36, 0x70, 0xa5, 0xa7, 0x2a, 0x5e, 0xbd, 0xda, 0x70, 0x0b, 0xd1, 0x15, 0xad, 0x3e, 0x36, 0xa8, + 0x99, 0x96, 0x09, 0xc5, 0x7e, 0x96, 0x09, 0x09, 0xdd, 0xdc, 0xb7, 0x75, 0xfb, 0xa7, 0x2c, 0x18, + 0xe1, 0x2a, 0xc8, 0xc1, 0x74, 0xb6, 0xda, 0x23, 0x56, 0x32, 0x76, 0x77, 0x69, 0xa1, 0x78, 0x94, + 0x42, 0xeb, 0x50, 0x62, 0x3f, 0x98, 0x2a, 0xa6, 0x98, 0x6f, 0x1a, 0xcb, 0x5b, 0xd5, 0x3b, 0x78, + 0x57, 0x56, 0xc3, 0x09, 0x05, 0xfb, 0x47, 0x8b, 0x94, 0x55, 0x25, 0xa8, 0xc6, 0x09, 0x6e, 0x3d, + 0xba, 0x13, 0xbc, 0xf0, 0xa8, 0x4e, 0xf0, 0x16, 0x4c, 0x37, 0xb4, 0x27, 0xaf, 0x64, 0x26, 0xaf, + 0xf6, 0x5c, 0x24, 0xda, 0xeb, 0x18, 0x57, 0xc3, 0xad, 0x98, 0x44, 0x70, 0x9a, 0x2a, 0xfa, 0x4e, + 0x98, 0xe0, 0xf3, 0x2c, 0x5a, 0x19, 0x62, 0xad, 0x7c, 0x2a, 0x7f, 0xbd, 0xe8, 0x4d, 0xb0, 0x95, + 0x58, 0xd7, 0xaa, 0x63, 0x83, 0x98, 0xfd, 0xcb, 0x63, 0x30, 0xbc, 0xba, 0x4f, 0xfc, 0xf8, 0x0c, + 0x18, 0x52, 0x03, 0xa6, 0x5c, 0x7f, 0x3f, 0xf0, 0xf6, 0x49, 0x93, 0xc3, 0x4f, 0x72, 0xb8, 0x3e, + 0x26, 0x48, 0x4f, 0x55, 0x0d, 0x12, 0x38, 0x45, 0xf2, 0x51, 0xdc, 0xda, 0xaf, 0xc3, 0x08, 0x9f, + 0x7b, 0x71, 0x65, 0xcf, 0x54, 0xb0, 0xb3, 0x41, 0x14, 0xbb, 0x20, 0xd1, 0x28, 0x70, 0x8d, 0xbe, + 0xa8, 0x8e, 0xde, 0x83, 0xa9, 0x6d, 0x37, 0x8c, 0x62, 0x7a, 0xdd, 0x8e, 0x62, 0x67, 0xaf, 0xfd, + 0x10, 0xb7, 0x74, 0x35, 0x0e, 0x6b, 0x06, 0x25, 0x9c, 0xa2, 0x8c, 0x5a, 0x30, 0x49, 0x2f, 0x8e, + 0x49, 0x53, 0xa3, 0x27, 0x6e, 0x4a, 0xa9, 0xe1, 0x6e, 0xe9, 0x84, 0xb0, 0x49, 0x97, 0x32, 0x93, + 0x06, 0xbb, 0x68, 0x8e, 0x31, 0x89, 0x42, 0x31, 0x13, 0x7e, 0xc3, 0xe4, 0x30, 0xca, 0x93, 0x98, + 0x31, 0x4b, 0xc9, 0xe4, 0x49, 0x9a, 0xc9, 0xca, 0x57, 0xa0, 0x44, 0xe8, 0x10, 0x52, 0xc2, 0xe2, + 0xb1, 0x61, 0x71, 0xb0, 0xbe, 0xae, 0xbb, 0x8d, 0x30, 0x30, 0xf5, 0x23, 0xab, 0x92, 0x12, 0x4e, + 0x88, 0xa2, 0x15, 0x18, 0x89, 0x48, 0xe8, 0x92, 0x48, 0x3c, 0x3b, 0xf4, 0x98, 0x46, 0x86, 0xc6, + 0x6d, 0xa8, 0xf9, 0x6f, 0x2c, 0xaa, 0xd2, 0xe5, 0xe5, 0xb0, 0xdb, 0x10, 0x7b, 0x69, 0xd0, 0x96, + 0xd7, 0x12, 0x2b, 0xc5, 0x02, 0x8a, 0xde, 0x82, 0xd1, 0x90, 0x78, 0x4c, 0x01, 0x37, 0x39, 0xf8, + 0x22, 0xe7, 0xfa, 0x3c, 0x5e, 0x0f, 0x4b, 0x02, 0xe8, 0x26, 0xa0, 0x90, 0x50, 0x19, 0xc2, 0xf5, + 0x5b, 0xca, 0xc4, 0x43, 0xbc, 0x1f, 0x3c, 0x21, 0xda, 0x3f, 0x87, 0x13, 0x0c, 0x69, 0x5d, 0x89, + 0x33, 0xaa, 0xa1, 0xeb, 0x30, 0xab, 0x4a, 0xab, 0x7e, 0x14, 0x3b, 0x7e, 0x83, 0xb0, 0xa7, 0x83, + 0x52, 0x22, 0x15, 0xe1, 0x34, 0x02, 0xee, 0xae, 0x63, 0x7f, 0x9d, 0x8a, 0x33, 0x74, 0xb4, 0xce, + 0x40, 0x16, 0x78, 0xd3, 0x94, 0x05, 0x2e, 0xe6, 0xce, 0x5c, 0x8e, 0x1c, 0x70, 0x64, 0xc1, 0xb8, + 0x36, 0xb3, 0xc9, 0x9a, 0xb5, 0x7a, 0xac, 0xd9, 0x0e, 0xcc, 0xd0, 0x95, 0x7e, 0x7b, 0x8b, 0xb9, + 0x13, 0x35, 0xd9, 0xc2, 0x2c, 0x3c, 0xdc, 0xc2, 0x54, 0x86, 0xb8, 0xb7, 0x52, 0x04, 0x71, 0x57, + 0x13, 0xe8, 0x35, 0xa9, 0x8d, 0x2a, 0x1a, 0xa6, 0x5b, 0x5c, 0xd3, 0x74, 0x7c, 0x58, 0x9e, 0xd1, + 0x3e, 0x44, 0xd7, 0x3e, 0xd9, 0x5f, 0x91, 0xdf, 0xc8, 0x99, 0xcd, 0x22, 0x94, 0x1a, 0x6a, 0xb1, + 0x58, 0xa6, 0x31, 0xb9, 0x5a, 0x0e, 0x38, 0xc1, 0xa1, 0x7b, 0x94, 0x5e, 0x41, 0xd2, 0xd6, 0x86, + 0xf4, 0x82, 0x82, 0x19, 0xc4, 0x7e, 0x19, 0x60, 0xf5, 0x01, 0x69, 0xf0, 0xa5, 0xae, 0x3f, 0xea, + 0x5a, 0xf9, 0x8f, 0xba, 0xf6, 0x7f, 0xb2, 0x60, 0x6a, 0x6d, 0xc5, 0xb8, 0x26, 0x2e, 0x00, 0xf0, + 0xbb, 0xd1, 0xbd, 0x7b, 0x1b, 0xf2, 0xbd, 0x82, 0xab, 0x9c, 0x55, 0x29, 0xd6, 0x30, 0xd0, 0x45, + 0x28, 0x7a, 0x1d, 0x5f, 0x5c, 0x59, 0x46, 0x8f, 0x0e, 0xcb, 0xc5, 0x5b, 0x1d, 0x1f, 0xd3, 0x32, + 0xcd, 0xc0, 0xaf, 0x38, 0xb0, 0x81, 0x5f, 0x5f, 0x37, 0x21, 0x54, 0x86, 0xe1, 0xfb, 0xf7, 0xdd, + 0x26, 0x37, 0xc6, 0x16, 0x6f, 0x29, 0xf7, 0xee, 0x55, 0x2b, 0x11, 0xe6, 0xe5, 0xf6, 0xd7, 0x8a, + 0x30, 0xbf, 0xe6, 0x91, 0x07, 0x1f, 0xd2, 0x20, 0x7d, 0x50, 0xf3, 0xc4, 0x93, 0xc9, 0x8b, 0x27, + 0xb5, 0xc5, 0xec, 0x3f, 0x1e, 0xdb, 0x30, 0xca, 0x0d, 0x04, 0xa4, 0x79, 0xfa, 0x1b, 0x59, 0xad, + 0xe7, 0x0f, 0xc8, 0x82, 0xd0, 0xce, 0x71, 0x13, 0x2c, 0x75, 0xd2, 0x8a, 0x52, 0x2c, 0x89, 0xcf, + 0x7f, 0x0e, 0x26, 0x74, 0xcc, 0x13, 0x59, 0x45, 0xff, 0x8d, 0x22, 0xcc, 0xd0, 0x1e, 0x3c, 0xd2, + 0x89, 0xb8, 0xd3, 0x3d, 0x11, 0xa7, 0x6d, 0x19, 0xdb, 0x7f, 0x36, 0xde, 0x4d, 0xcf, 0xc6, 0x4b, + 0x79, 0xb3, 0x71, 0xd6, 0x73, 0xf0, 0xbd, 0x16, 0x9c, 0x5b, 0xf3, 0x82, 0xc6, 0x6e, 0xca, 0x68, + 0xf7, 0x55, 0x18, 0xa7, 0x7c, 0x3c, 0x32, 0xbc, 0x61, 0x0c, 0xff, 0x28, 0x01, 0xc2, 0x3a, 0x9e, + 0x56, 0xed, 0xce, 0x9d, 0x6a, 0x25, 0xcb, 0xad, 0x4a, 0x80, 0xb0, 0x8e, 0x67, 0xff, 0xb6, 0x05, + 0x4f, 0x5d, 0x5f, 0x59, 0x4d, 0x96, 0x62, 0x97, 0x67, 0x17, 0xbd, 0x05, 0x36, 0xb5, 0xae, 0x24, + 0xb7, 0xc0, 0x0a, 0xeb, 0x85, 0x80, 0x7e, 0x5c, 0xbc, 0x16, 0x7f, 0xd6, 0x82, 0x73, 0xd7, 0xdd, + 0x98, 0x1e, 0xcb, 0x69, 0x1f, 0x23, 0x7a, 0x2e, 0x47, 0x6e, 0x1c, 0x84, 0x07, 0x69, 0x1f, 0x23, + 0xac, 0x20, 0x58, 0xc3, 0xe2, 0x2d, 0xef, 0xbb, 0x11, 0xed, 0x69, 0xc1, 0x54, 0x45, 0x61, 0x51, + 0x8e, 0x15, 0x06, 0xfd, 0xb0, 0xa6, 0x1b, 0xb2, 0xab, 0xc4, 0x81, 0xe0, 0xb0, 0xea, 0xc3, 0x2a, + 0x12, 0x80, 0x13, 0x1c, 0xfb, 0x27, 0x2d, 0xb8, 0x70, 0xdd, 0xeb, 0x44, 0x31, 0x09, 0xb7, 0x23, + 0xa3, 0xb3, 0x2f, 0x43, 0x89, 0xc8, 0xeb, 0xba, 0xe8, 0xab, 0x12, 0x30, 0xd5, 0x3d, 0x9e, 0x3b, + 0x38, 0x29, 0xbc, 0x01, 0x2c, 0xe0, 0x4f, 0x66, 0xb9, 0xfd, 0x0b, 0x05, 0x98, 0xbc, 0xb1, 0xb9, + 0x59, 0xbb, 0x4e, 0x62, 0x71, 0x8a, 0xf5, 0x57, 0x35, 0x63, 0x4d, 0x63, 0xd6, 0xeb, 0x52, 0xd4, + 0x89, 0x5d, 0x6f, 0x81, 0x7b, 0xd4, 0x2e, 0x54, 0xfd, 0xf8, 0x76, 0x58, 0x8f, 0x43, 0xd7, 0x6f, + 0x65, 0xea, 0xd8, 0xe4, 0x59, 0x5b, 0xcc, 0x3b, 0x6b, 0xd1, 0xcb, 0x30, 0xc2, 0x5c, 0x7a, 0xe5, + 0xf5, 0xe4, 0x09, 0x75, 0xa7, 0x60, 0xa5, 0xc7, 0x87, 0xe5, 0xd2, 0x1d, 0x5c, 0xe5, 0x7f, 0xb0, + 0x40, 0x45, 0x77, 0x60, 0x7c, 0x27, 0x8e, 0xdb, 0x37, 0x88, 0xd3, 0x24, 0xa1, 0xe4, 0x0e, 0x97, + 0xb2, 0xb8, 0x03, 0x1d, 0x04, 0x8e, 0x96, 0x6c, 0xa8, 0xa4, 0x2c, 0xc2, 0x3a, 0x1d, 0xbb, 0x0e, + 0x90, 0xc0, 0x4e, 0x49, 0xbf, 0x60, 0xff, 0x91, 0x05, 0xa3, 0xdc, 0xbb, 0x2a, 0x44, 0x9f, 0x87, + 0x21, 0xf2, 0x80, 0x34, 0x84, 0xe4, 0x98, 0xd9, 0xe1, 0x44, 0xf0, 0xe0, 0xda, 0x72, 0xfa, 0x1f, + 0xb3, 0x5a, 0xe8, 0x06, 0x8c, 0xd2, 0xde, 0x5e, 0x57, 0xae, 0x66, 0x4f, 0xe7, 0x7d, 0xb1, 0x9a, + 0x76, 0x2e, 0xab, 0x88, 0x22, 0x2c, 0xab, 0x33, 0xcd, 0x6f, 0xa3, 0x5d, 0xa7, 0x0c, 0x2c, 0xee, + 0x75, 0xce, 0x6e, 0xae, 0xd4, 0x38, 0x92, 0xa0, 0xc6, 0x35, 0xbf, 0xb2, 0x10, 0x27, 0x44, 0xec, + 0x4d, 0x28, 0xd1, 0x49, 0x5d, 0xf2, 0x5c, 0xa7, 0xb7, 0xd2, 0xf9, 0x79, 0x28, 0x49, 0x05, 0x70, + 0x24, 0x1c, 0x74, 0x18, 0x55, 0xa9, 0x1f, 0x8e, 0x70, 0x02, 0xb7, 0xb7, 0xe1, 0x3c, 0xb3, 0xa6, + 0x70, 0xe2, 0x1d, 0x63, 0x8f, 0xf5, 0x5f, 0xcc, 0x2f, 0x88, 0x8b, 0x18, 0x9f, 0x99, 0x39, 0xcd, + 0xa3, 0x60, 0x42, 0x52, 0x4c, 0x2e, 0x65, 0xf6, 0x9f, 0x0c, 0xc1, 0x13, 0xd5, 0x7a, 0xbe, 0xe3, + 0xdd, 0xeb, 0x30, 0xc1, 0xc5, 0x34, 0xba, 0xb4, 0x1d, 0x4f, 0xb4, 0xab, 0xde, 0x1a, 0x37, 0x35, + 0x18, 0x36, 0x30, 0xd1, 0x53, 0x50, 0x74, 0xdf, 0xf7, 0xd3, 0xc6, 0xb9, 0xd5, 0xb7, 0x37, 0x30, + 0x2d, 0xa7, 0x60, 0x2a, 0xf1, 0x71, 0x56, 0xaa, 0xc0, 0x4a, 0xea, 0x7b, 0x13, 0xa6, 0xdc, 0xa8, + 0x11, 0xb9, 0x55, 0x9f, 0xf2, 0x99, 0xc4, 0x69, 0x33, 0x51, 0x12, 0xd0, 0x4e, 0x2b, 0x28, 0x4e, + 0x61, 0x6b, 0x7c, 0x7d, 0x78, 0x60, 0xa9, 0xb1, 0xaf, 0xc7, 0x0a, 0x15, 0x88, 0xdb, 0xec, 0xeb, + 0x22, 0x66, 0x28, 0x28, 0x04, 0x62, 0xfe, 0xc1, 0x11, 0x96, 0x30, 0x7a, 0x03, 0x6b, 0xec, 0x38, + 0xed, 0xa5, 0x4e, 0xbc, 0x53, 0x71, 0xa3, 0x46, 0xb0, 0x4f, 0xc2, 0x03, 0x76, 0x79, 0x1e, 0x4b, + 0x6e, 0x60, 0x0a, 0xb0, 0x72, 0x63, 0xa9, 0x46, 0x31, 0x71, 0x77, 0x1d, 0x53, 0x2a, 0x84, 0xd3, + 0x90, 0x0a, 0x97, 0x60, 0x5a, 0x36, 0x53, 0x27, 0x11, 0x3b, 0x23, 0xc6, 0x59, 0xc7, 0x94, 0x3b, + 0xb5, 0x28, 0x56, 0xdd, 0x4a, 0xe3, 0xa3, 0xd7, 0x60, 0xd2, 0xf5, 0xdd, 0xd8, 0x75, 0xe2, 0x20, + 0x64, 0x27, 0x2c, 0xbf, 0x27, 0xb3, 0x47, 0xd1, 0xaa, 0x0e, 0xc0, 0x26, 0x9e, 0xfd, 0xc7, 0x43, + 0x30, 0xcb, 0xa6, 0xed, 0x5b, 0x2b, 0xec, 0x63, 0xb3, 0xc2, 0xee, 0x74, 0xaf, 0xb0, 0xd3, 0x10, + 0x77, 0x3f, 0xca, 0x65, 0xf6, 0x1e, 0x94, 0x94, 0x7d, 0xb5, 0x74, 0x11, 0xb0, 0x72, 0x5c, 0x04, + 0xfa, 0x4b, 0x1f, 0xf2, 0x19, 0xb7, 0x98, 0xf9, 0x8c, 0xfb, 0xf7, 0x2d, 0x48, 0xcc, 0x4c, 0xd1, + 0x0d, 0x28, 0xb5, 0x03, 0x66, 0xca, 0x11, 0x4a, 0xfb, 0xa8, 0x27, 0x32, 0x0f, 0x2a, 0x7e, 0x28, + 0xf2, 0xf1, 0xab, 0xc9, 0x1a, 0x38, 0xa9, 0x8c, 0x96, 0x61, 0xb4, 0x1d, 0x92, 0x7a, 0xcc, 0x5c, + 0x39, 0xfb, 0xd2, 0xe1, 0x6b, 0x84, 0xe3, 0x63, 0x59, 0xd1, 0xfe, 0x45, 0x0b, 0x80, 0xbf, 0x94, + 0x3a, 0x7e, 0x8b, 0x9c, 0x81, 0xf6, 0xb7, 0x02, 0x43, 0x51, 0x9b, 0x34, 0x7a, 0x19, 0xd9, 0x24, + 0xfd, 0xa9, 0xb7, 0x49, 0x23, 0x19, 0x70, 0xfa, 0x0f, 0xb3, 0xda, 0xf6, 0xf7, 0x03, 0x4c, 0x25, + 0x68, 0xd5, 0x98, 0xec, 0xa1, 0x17, 0x0d, 0x47, 0xb9, 0x8b, 0x29, 0x47, 0xb9, 0x12, 0xc3, 0xd6, + 0x14, 0x8d, 0xef, 0x41, 0x71, 0xcf, 0x79, 0x20, 0x34, 0x49, 0xcf, 0xf7, 0xee, 0x06, 0xa5, 0xbf, + 0xb0, 0xee, 0x3c, 0xe0, 0x77, 0xa6, 0xe7, 0xe5, 0x02, 0x59, 0x77, 0x1e, 0x1c, 0x73, 0x53, 0x1a, + 0xc6, 0xa4, 0x6e, 0xb9, 0x51, 0xfc, 0xd5, 0xff, 0x92, 0xfc, 0x67, 0xcb, 0x8e, 0x36, 0xc2, 0xda, + 0x72, 0x7d, 0xf1, 0x6e, 0x38, 0x50, 0x5b, 0xae, 0x9f, 0x6e, 0xcb, 0xf5, 0x07, 0x68, 0xcb, 0xf5, + 0xd1, 0x07, 0x30, 0x2a, 0xde, 0xe8, 0x99, 0xfd, 0xbc, 0xa9, 0xa5, 0xca, 0x6b, 0x4f, 0x3c, 0xf1, + 0xf3, 0x36, 0x17, 0xe5, 0x9d, 0x50, 0x94, 0xf6, 0x6d, 0x57, 0x36, 0x88, 0xfe, 0xae, 0x05, 0x53, + 0xe2, 0x37, 0x26, 0xef, 0x77, 0x48, 0x14, 0x0b, 0xd9, 0xf3, 0xb3, 0x83, 0xf7, 0x41, 0x54, 0xe4, + 0x5d, 0xf9, 0xac, 0x64, 0xb3, 0x26, 0xb0, 0x6f, 0x8f, 0x52, 0xbd, 0x40, 0xff, 0xdc, 0x82, 0xf3, + 0x7b, 0xce, 0x03, 0xde, 0x22, 0x2f, 0xc3, 0x4e, 0xec, 0x06, 0xc2, 0x1f, 0xe0, 0xf3, 0x83, 0x4d, + 0x7f, 0x57, 0x75, 0xde, 0x49, 0x69, 0x3a, 0x7c, 0x3e, 0x0b, 0xa5, 0x6f, 0x57, 0x33, 0xfb, 0x35, + 0xbf, 0x0d, 0x63, 0x72, 0xbd, 0x65, 0xdc, 0xbc, 0x2b, 0xba, 0x60, 0x7d, 0x62, 0x13, 0x09, 0xdd, + 0x5b, 0x8d, 0xb6, 0x23, 0xd6, 0xda, 0x23, 0x6d, 0xe7, 0x3d, 0x98, 0xd0, 0xd7, 0xd8, 0x23, 0x6d, + 0xeb, 0x7d, 0x38, 0x97, 0xb1, 0x96, 0x1e, 0x69, 0x93, 0xf7, 0xe1, 0x62, 0xee, 0xfa, 0x78, 0x94, + 0x0d, 0xdb, 0xbf, 0x60, 0xe9, 0x7c, 0xf0, 0x0c, 0x54, 0xf0, 0x2b, 0xa6, 0x0a, 0xfe, 0x52, 0xef, + 0x9d, 0x93, 0xa3, 0x87, 0x7f, 0x57, 0xef, 0x34, 0xe5, 0xea, 0xe8, 0x2d, 0x18, 0xf1, 0x68, 0x89, + 0x34, 0x0e, 0xb1, 0xfb, 0xef, 0xc8, 0x44, 0x96, 0x62, 0xe5, 0x11, 0x16, 0x14, 0xec, 0x5f, 0xb1, + 0x60, 0xe8, 0x0c, 0x46, 0x02, 0x9b, 0x23, 0xf1, 0x62, 0x2e, 0x69, 0x11, 0x9a, 0x6b, 0x01, 0x3b, + 0xf7, 0x57, 0x65, 0xf8, 0xb1, 0x9c, 0x81, 0xf9, 0xbf, 0x05, 0x18, 0xa7, 0x4d, 0x49, 0x2b, 0xc6, + 0x37, 0x60, 0xd2, 0x73, 0xb6, 0x88, 0x27, 0xdf, 0x71, 0xd3, 0x0a, 0x93, 0x5b, 0x3a, 0x10, 0x9b, + 0xb8, 0xb4, 0xf2, 0xb6, 0xfe, 0xa4, 0x2d, 0xe4, 0x17, 0x55, 0xd9, 0x78, 0xef, 0xc6, 0x26, 0x2e, + 0xbd, 0xbb, 0xdf, 0x77, 0xe2, 0xc6, 0x8e, 0x50, 0xa6, 0xa8, 0xee, 0xde, 0xa3, 0x85, 0x98, 0xc3, + 0xa8, 0x00, 0x27, 0x57, 0xe7, 0x5d, 0x7a, 0x33, 0x0c, 0x7c, 0x21, 0x1e, 0x2b, 0x01, 0x0e, 0x9b, + 0x60, 0x9c, 0xc6, 0xcf, 0xf0, 0x98, 0x1f, 0x66, 0x36, 0x9a, 0x03, 0x78, 0xcc, 0xa3, 0x1a, 0x9c, + 0x77, 0xfd, 0x86, 0xd7, 0x69, 0x92, 0x3b, 0x3e, 0x97, 0xee, 0x3c, 0xf7, 0x03, 0xd2, 0x14, 0x02, + 0xb4, 0x32, 0xa7, 0xad, 0x66, 0xe0, 0xe0, 0xcc, 0x9a, 0xf6, 0x5f, 0x83, 0x73, 0xb7, 0x02, 0xa7, + 0xb9, 0xec, 0x78, 0x8e, 0xdf, 0x20, 0x61, 0xd5, 0x6f, 0xf5, 0xb5, 0x12, 0xd3, 0x6d, 0xba, 0x0a, + 0xfd, 0x6c, 0xba, 0xec, 0x1d, 0x40, 0x7a, 0x03, 0xc2, 0x36, 0x19, 0xc3, 0xa8, 0xcb, 0x9b, 0x12, + 0xcb, 0xff, 0xd3, 0xd9, 0xd2, 0x75, 0x57, 0xcf, 0x34, 0xab, 0x5b, 0x5e, 0x80, 0x25, 0x21, 0xfb, + 0x75, 0xc8, 0xf4, 0x47, 0xec, 0xaf, 0xb6, 0xb1, 0x5f, 0x85, 0x59, 0x56, 0xf3, 0x64, 0x2a, 0x05, + 0xfb, 0x07, 0x2d, 0x98, 0xde, 0x48, 0xc5, 0xb8, 0xb8, 0xc2, 0xde, 0x5a, 0x33, 0xf4, 0xee, 0x75, + 0x56, 0x8a, 0x05, 0xf4, 0xd4, 0xf5, 0x7b, 0x7f, 0x61, 0x41, 0x49, 0x45, 0x67, 0x3a, 0x03, 0xa1, + 0x76, 0xc5, 0x10, 0x6a, 0x33, 0xf5, 0x4e, 0xaa, 0x3b, 0x79, 0x32, 0x2d, 0xba, 0xa9, 0xa2, 0x35, + 0xf4, 0x50, 0x39, 0x25, 0x64, 0xb8, 0x6f, 0xff, 0x94, 0x19, 0xd2, 0x41, 0xc6, 0x6f, 0x60, 0x66, + 0x5a, 0x0a, 0xf7, 0x63, 0x62, 0xa6, 0xa5, 0xfa, 0x93, 0xc3, 0xfd, 0x6a, 0x5a, 0x97, 0xd9, 0xa9, + 0xf0, 0xed, 0xcc, 0x95, 0x81, 0xed, 0x4d, 0x15, 0x24, 0xa5, 0x2c, 0x5c, 0x13, 0x44, 0xe9, 0x31, + 0x63, 0x64, 0xe2, 0x1f, 0x8f, 0xa4, 0x95, 0x54, 0xb1, 0x6f, 0xc0, 0x74, 0x6a, 0xc0, 0xd0, 0xab, + 0x30, 0xdc, 0xde, 0x71, 0x22, 0x92, 0x32, 0x4d, 0x1d, 0xae, 0xd1, 0xc2, 0xe3, 0xc3, 0xf2, 0x94, + 0xaa, 0xc0, 0x4a, 0x30, 0xc7, 0xb6, 0xff, 0xa7, 0x05, 0x43, 0x1b, 0x41, 0xf3, 0x2c, 0x16, 0xd3, + 0x9b, 0xc6, 0x62, 0x7a, 0x32, 0x2f, 0x0e, 0x61, 0xee, 0x3a, 0x5a, 0x4b, 0xad, 0xa3, 0x4b, 0xb9, + 0x14, 0x7a, 0x2f, 0xa1, 0x3d, 0x18, 0x67, 0xd1, 0x0d, 0x85, 0xa9, 0xec, 0xcb, 0xc6, 0xfd, 0xaa, + 0x9c, 0xba, 0x5f, 0x4d, 0x6b, 0xa8, 0xda, 0x2d, 0xeb, 0x59, 0x18, 0x15, 0xe6, 0x9a, 0x69, 0xa7, + 0x0d, 0x81, 0x8b, 0x25, 0xdc, 0xfe, 0xa9, 0x22, 0x18, 0xd1, 0x14, 0xd1, 0xaf, 0x59, 0xb0, 0x10, + 0x72, 0x2f, 0xd8, 0x66, 0xa5, 0x13, 0xba, 0x7e, 0xab, 0xde, 0xd8, 0x21, 0xcd, 0x8e, 0xe7, 0xfa, + 0xad, 0x6a, 0xcb, 0x0f, 0x54, 0xf1, 0xea, 0x03, 0xd2, 0xe8, 0xb0, 0x37, 0x97, 0x3e, 0xa1, 0x1b, + 0x95, 0x39, 0xd4, 0xb5, 0xa3, 0xc3, 0xf2, 0x02, 0x3e, 0x11, 0x6d, 0x7c, 0xc2, 0xbe, 0xa0, 0xdf, + 0xb6, 0x60, 0x91, 0x07, 0x19, 0x1c, 0xbc, 0xff, 0x3d, 0x6e, 0xa3, 0x35, 0x49, 0x2a, 0x21, 0xb2, + 0x49, 0xc2, 0xbd, 0xe5, 0xd7, 0xc4, 0x80, 0x2e, 0xd6, 0x4e, 0xd6, 0x16, 0x3e, 0x69, 0xe7, 0xec, + 0x7f, 0x57, 0x84, 0x49, 0x3a, 0x8a, 0x49, 0x6c, 0x9a, 0x57, 0x8d, 0x25, 0xf1, 0x74, 0x6a, 0x49, + 0xcc, 0x1a, 0xc8, 0xa7, 0x13, 0x96, 0x26, 0x82, 0x59, 0xcf, 0x89, 0xe2, 0x1b, 0xc4, 0x09, 0xe3, + 0x2d, 0xe2, 0x70, 0x33, 0xa1, 0xe2, 0x89, 0x4d, 0x9a, 0x94, 0xfa, 0xeb, 0x56, 0x9a, 0x18, 0xee, + 0xa6, 0x8f, 0xf6, 0x01, 0x31, 0x5b, 0xa7, 0xd0, 0xf1, 0x23, 0xfe, 0x2d, 0xae, 0x78, 0x8f, 0x39, + 0x59, 0xab, 0xf3, 0xa2, 0x55, 0x74, 0xab, 0x8b, 0x1a, 0xce, 0x68, 0x41, 0xb3, 0x61, 0x1b, 0x1e, + 0xd4, 0x86, 0x6d, 0xa4, 0x8f, 0x67, 0xd4, 0x1e, 0xcc, 0x88, 0x59, 0xd9, 0x76, 0x5b, 0xe2, 0x90, + 0xfe, 0x52, 0xca, 0xc6, 0xd5, 0x1a, 0xdc, 0x50, 0xa9, 0x8f, 0x81, 0xab, 0xfd, 0xdd, 0x70, 0x8e, + 0x36, 0x67, 0xfa, 0xf1, 0x44, 0x88, 0xc0, 0xf4, 0x6e, 0x67, 0x8b, 0x78, 0x24, 0x96, 0x65, 0xa2, + 0xd1, 0x4c, 0xb1, 0xdf, 0xac, 0x9d, 0xc8, 0x96, 0x37, 0x4d, 0x12, 0x38, 0x4d, 0xd3, 0xfe, 0x19, + 0x0b, 0x98, 0xb5, 0xfc, 0x19, 0x1c, 0x7f, 0x5f, 0x30, 0x8f, 0xbf, 0xb9, 0x3c, 0x0e, 0x94, 0x73, + 0xf2, 0xbd, 0xc2, 0xa7, 0xa5, 0x16, 0x06, 0x0f, 0x0e, 0xa4, 0xec, 0xdf, 0x5f, 0xe2, 0xfa, 0x3f, + 0x16, 0xdf, 0x90, 0x2a, 0x28, 0x00, 0xfa, 0x1e, 0x18, 0x6b, 0x38, 0x6d, 0xa7, 0xc1, 0xc3, 0xd8, + 0xe6, 0x6a, 0x7f, 0x8c, 0x4a, 0x0b, 0x2b, 0xa2, 0x06, 0xd7, 0x66, 0x7c, 0x46, 0x7e, 0xa5, 0x2c, + 0xee, 0xab, 0xc1, 0x50, 0x4d, 0xce, 0xef, 0xc2, 0xa4, 0x41, 0xec, 0x91, 0x5e, 0x7d, 0xbf, 0x87, + 0x1f, 0x17, 0xea, 0xc6, 0xb2, 0x07, 0xb3, 0xbe, 0xf6, 0x9f, 0x32, 0x47, 0x29, 0x4e, 0x7f, 0xb2, + 0xdf, 0x81, 0xc0, 0x38, 0xa9, 0xe6, 0x0d, 0x90, 0x22, 0x83, 0xbb, 0x29, 0xdb, 0xff, 0xd0, 0x82, + 0xc7, 0x75, 0x44, 0x2d, 0x5e, 0x43, 0x3f, 0x7d, 0x72, 0x05, 0xc6, 0x82, 0x36, 0x09, 0x9d, 0xe4, + 0x4e, 0x76, 0x55, 0x0e, 0xfa, 0x6d, 0x51, 0x7e, 0x2c, 0xe2, 0x09, 0x4a, 0xea, 0xb2, 0x1c, 0xab, + 0x9a, 0xc8, 0x86, 0x11, 0x36, 0x18, 0x91, 0x88, 0xa5, 0xc1, 0xcc, 0x14, 0xd9, 0xd3, 0x6a, 0x84, + 0x05, 0xc4, 0xfe, 0x7e, 0x8b, 0x2f, 0x2c, 0xbd, 0xeb, 0xe8, 0x7d, 0x98, 0xd9, 0xa3, 0xd7, 0xb7, + 0xd5, 0x07, 0xed, 0x90, 0xab, 0xd1, 0xe5, 0x38, 0x3d, 0xdf, 0x6f, 0x9c, 0xb4, 0x8f, 0x4c, 0x8c, + 0xd9, 0xd6, 0x53, 0xc4, 0x70, 0x17, 0x79, 0xfb, 0xcf, 0x0a, 0x7c, 0x27, 0x32, 0xa9, 0xee, 0x59, + 0x18, 0x6d, 0x07, 0xcd, 0x95, 0x6a, 0x05, 0x8b, 0x11, 0x52, 0xec, 0xaa, 0xc6, 0x8b, 0xb1, 0x84, + 0xa3, 0x6b, 0x00, 0xe4, 0x41, 0x4c, 0x42, 0xdf, 0xf1, 0x94, 0xe1, 0x87, 0x12, 0x9e, 0x56, 0x15, + 0x04, 0x6b, 0x58, 0xb4, 0x4e, 0x3b, 0x0c, 0xf6, 0xdd, 0x26, 0xf3, 0x36, 0x2c, 0x9a, 0x75, 0x6a, + 0x0a, 0x82, 0x35, 0x2c, 0x7a, 0x55, 0xee, 0xf8, 0x11, 0x3f, 0x00, 0x9d, 0x2d, 0x11, 0x20, 0x6f, + 0x2c, 0xb9, 0x2a, 0xdf, 0xd1, 0x81, 0xd8, 0xc4, 0x45, 0x4b, 0x30, 0x12, 0x3b, 0xcc, 0x9c, 0x61, + 0x38, 0xdf, 0x2c, 0x71, 0x93, 0x62, 0xe8, 0x71, 0x4d, 0x69, 0x05, 0x2c, 0x2a, 0xa2, 0x77, 0x24, + 0x0b, 0xe6, 0x2c, 0x59, 0xd8, 0x03, 0xe7, 0x2e, 0x5b, 0x9d, 0x7d, 0xeb, 0x3c, 0x58, 0xd8, 0x19, + 0x1b, 0xb4, 0xec, 0xef, 0x2b, 0x01, 0x24, 0xd2, 0x1e, 0xfa, 0xa0, 0x8b, 0x45, 0xbc, 0xd0, 0x5b, + 0x3e, 0x3c, 0x3d, 0xfe, 0x80, 0x7e, 0xc0, 0x82, 0x71, 0xc7, 0xf3, 0x82, 0x86, 0x13, 0xb3, 0x51, + 0x2e, 0xf4, 0x66, 0x51, 0xa2, 0xfd, 0xa5, 0xa4, 0x06, 0xef, 0xc2, 0xcb, 0xd2, 0x52, 0x41, 0x83, + 0xf4, 0xed, 0x85, 0xde, 0x30, 0xfa, 0x8c, 0xbc, 0x04, 0xf0, 0xe5, 0x31, 0x9f, 0xbe, 0x04, 0x94, + 0x18, 0x37, 0xd6, 0xe4, 0x7f, 0x74, 0xc7, 0x88, 0x24, 0x37, 0x94, 0x1f, 0x92, 0xc2, 0x10, 0x7a, + 0xfa, 0x05, 0x91, 0x43, 0x35, 0xdd, 0x2f, 0x6a, 0x38, 0x3f, 0x6e, 0x8b, 0x26, 0x5d, 0xf7, 0xf1, + 0x89, 0x7a, 0x0f, 0xa6, 0x9b, 0xe6, 0x71, 0x2b, 0x56, 0xd3, 0xa7, 0xf3, 0xe8, 0xa6, 0x4e, 0xe7, + 0xe4, 0x80, 0x4d, 0x01, 0x70, 0x9a, 0x30, 0xaa, 0x71, 0x0f, 0xb5, 0xaa, 0xbf, 0x1d, 0x08, 0xbb, + 0x72, 0x3b, 0x77, 0x2e, 0x0f, 0xa2, 0x98, 0xec, 0x51, 0xcc, 0xe4, 0x1c, 0xdd, 0x10, 0x75, 0xb1, + 0xa2, 0x82, 0xde, 0x82, 0x11, 0xe6, 0x36, 0x1c, 0xcd, 0x8d, 0xe5, 0xeb, 0x01, 0xcd, 0x88, 0x17, + 0xc9, 0xa6, 0x62, 0x7f, 0x23, 0x2c, 0x28, 0xa0, 0x1b, 0x32, 0x2c, 0x4e, 0x54, 0xf5, 0xef, 0x44, + 0x84, 0x85, 0xc5, 0x29, 0x2d, 0x7f, 0x32, 0x89, 0x78, 0xc3, 0xcb, 0x33, 0x23, 0x98, 0x1b, 0x35, + 0xa9, 0xbc, 0x22, 0xfe, 0xcb, 0xc0, 0xe8, 0x73, 0x90, 0xdf, 0x3d, 0x33, 0x78, 0x7a, 0x32, 0x9c, + 0x77, 0x4d, 0x12, 0x38, 0x4d, 0xf3, 0x4c, 0x8f, 0xcf, 0x79, 0x1f, 0x66, 0xd2, 0x1b, 0xeb, 0x91, + 0x1e, 0xd7, 0x7f, 0x34, 0x04, 0x53, 0xe6, 0x42, 0x40, 0x8b, 0x50, 0x12, 0x44, 0x54, 0x10, 0x4f, + 0xb5, 0xb6, 0xd7, 0x25, 0x00, 0x27, 0x38, 0x2c, 0x88, 0x29, 0xab, 0xae, 0xd9, 0x01, 0x26, 0x41, + 0x4c, 0x15, 0x04, 0x6b, 0x58, 0x54, 0x88, 0xde, 0x0a, 0x82, 0x58, 0x1d, 0x05, 0x6a, 0xb5, 0x2c, + 0xb3, 0x52, 0x2c, 0xa0, 0xf4, 0x08, 0xd8, 0x25, 0xa1, 0x4f, 0x3c, 0x53, 0x93, 0xa9, 0x8e, 0x80, + 0x9b, 0x3a, 0x10, 0x9b, 0xb8, 0xf4, 0x48, 0x0b, 0x22, 0xb6, 0xfc, 0x84, 0xa8, 0x9e, 0xd8, 0x55, + 0xd6, 0xb9, 0xdb, 0xbc, 0x84, 0xa3, 0x2f, 0xc1, 0xe3, 0xca, 0xcb, 0x1d, 0x73, 0xcd, 0xb0, 0x6c, + 0x71, 0xc4, 0xb8, 0x59, 0x3f, 0xbe, 0x92, 0x8d, 0x86, 0xf3, 0xea, 0xa3, 0x37, 0x61, 0x4a, 0x88, + 0xc0, 0x92, 0xe2, 0xa8, 0x69, 0xac, 0x70, 0xd3, 0x80, 0xe2, 0x14, 0x36, 0xaa, 0xc0, 0x0c, 0x2d, + 0x61, 0x52, 0xa8, 0xa4, 0xc0, 0xbd, 0xf5, 0xd5, 0x59, 0x7f, 0x33, 0x05, 0xc7, 0x5d, 0x35, 0xd0, + 0x12, 0x4c, 0x73, 0x19, 0x85, 0xde, 0x29, 0xd9, 0x3c, 0x08, 0x77, 0x0f, 0xb5, 0x11, 0x6e, 0x9b, + 0x60, 0x9c, 0xc6, 0x47, 0xaf, 0xc3, 0x84, 0x13, 0x36, 0x76, 0xdc, 0x98, 0x34, 0xe2, 0x4e, 0xc8, + 0xfd, 0x40, 0x34, 0x6b, 0x8f, 0x25, 0x0d, 0x86, 0x0d, 0x4c, 0xfb, 0x03, 0x38, 0x97, 0xe1, 0x29, + 0x46, 0x17, 0x8e, 0xd3, 0x76, 0xe5, 0x37, 0xa5, 0x2c, 0x24, 0x97, 0x6a, 0x55, 0xf9, 0x35, 0x1a, + 0x16, 0x5d, 0x9d, 0x4c, 0x25, 0xae, 0x65, 0x2f, 0x50, 0xab, 0x73, 0x4d, 0x02, 0x70, 0x82, 0x63, + 0xff, 0x16, 0x80, 0xa6, 0xd0, 0x19, 0xc0, 0x3e, 0xee, 0x75, 0x98, 0x90, 0x29, 0x37, 0xb4, 0x50, + 0xef, 0xea, 0x33, 0xaf, 0x6b, 0x30, 0x6c, 0x60, 0xd2, 0xbe, 0xf9, 0x2a, 0x50, 0x7d, 0xca, 0x1e, + 0x33, 0x09, 0x53, 0x9f, 0xe0, 0xa0, 0x17, 0x60, 0x2c, 0x22, 0xde, 0xf6, 0x2d, 0xd7, 0xdf, 0x15, + 0x0b, 0x5b, 0x71, 0xe1, 0xba, 0x28, 0xc7, 0x0a, 0x03, 0x2d, 0x43, 0xb1, 0xe3, 0x36, 0xc5, 0x52, + 0x96, 0x07, 0x7e, 0xf1, 0x4e, 0xb5, 0x72, 0x7c, 0x58, 0x7e, 0x3a, 0x2f, 0x93, 0x08, 0xbd, 0xda, + 0x47, 0x0b, 0x74, 0xfb, 0xd1, 0xca, 0x59, 0x6f, 0x03, 0x23, 0x27, 0x7c, 0x1b, 0xb8, 0x06, 0x20, + 0xbe, 0x5a, 0xae, 0xe5, 0x62, 0x32, 0x6b, 0xd7, 0x15, 0x04, 0x6b, 0x58, 0x28, 0x82, 0xd9, 0x46, + 0x48, 0x1c, 0x79, 0x87, 0xe6, 0x3e, 0x4f, 0x63, 0x0f, 0xaf, 0x20, 0x58, 0x49, 0x13, 0xc3, 0xdd, + 0xf4, 0x51, 0x00, 0xb3, 0x4d, 0x11, 0x54, 0x21, 0x69, 0xb4, 0x74, 0x72, 0x47, 0x2b, 0x66, 0x90, + 0x93, 0x26, 0x84, 0xbb, 0x69, 0xa3, 0x2f, 0xc3, 0xbc, 0x2c, 0xec, 0x8e, 0x63, 0xc1, 0xb6, 0x4b, + 0x91, 0xc7, 0x5f, 0xaf, 0xe4, 0x62, 0xe1, 0x1e, 0x14, 0x10, 0x86, 0x11, 0xf6, 0x96, 0x14, 0xcd, + 0x8d, 0xb3, 0x73, 0xee, 0xb9, 0x7c, 0x65, 0x00, 0x5d, 0xeb, 0x0b, 0xec, 0x1d, 0x4a, 0x98, 0x94, + 0x27, 0xcf, 0x72, 0xac, 0x10, 0x0b, 0x4a, 0x68, 0x1b, 0xc6, 0x1d, 0xdf, 0x0f, 0x62, 0x87, 0x8b, + 0x50, 0x13, 0xf9, 0xb2, 0x9f, 0x46, 0x78, 0x29, 0xa9, 0xc1, 0xa9, 0x2b, 0x2b, 0x55, 0x0d, 0x82, + 0x75, 0xc2, 0xe8, 0x3e, 0x4c, 0x07, 0xf7, 0x29, 0x73, 0x94, 0x5a, 0x8a, 0x68, 0x6e, 0x92, 0xb5, + 0xf5, 0xca, 0x80, 0x7a, 0x5a, 0xa3, 0xb2, 0xc6, 0xb5, 0x4c, 0xa2, 0x38, 0xdd, 0x0a, 0x5a, 0x30, + 0xb4, 0xd5, 0x53, 0x89, 0x3b, 0x4b, 0xa2, 0xad, 0xd6, 0x95, 0xd3, 0x2c, 0x2e, 0x0a, 0x37, 0x91, + 0x66, 0xbb, 0x7f, 0x3a, 0x15, 0x17, 0x25, 0x01, 0x61, 0x1d, 0x0f, 0xed, 0xc0, 0x44, 0xf2, 0x64, + 0x15, 0x46, 0x2c, 0x2a, 0xdb, 0xf8, 0xb5, 0x6b, 0x83, 0x7d, 0x5c, 0x55, 0xab, 0xc9, 0x6f, 0x0e, + 0x7a, 0x09, 0x36, 0x28, 0xcf, 0x7f, 0x1b, 0x8c, 0x6b, 0x13, 0x7b, 0xa2, 0x28, 0xb8, 0x6f, 0xc2, + 0x4c, 0x7a, 0xea, 0x4e, 0xe4, 0x41, 0xf0, 0xbf, 0x0a, 0x30, 0x9d, 0xf1, 0x72, 0xc5, 0xb2, 0x91, + 0xa4, 0x18, 0x6a, 0x92, 0x7c, 0xc4, 0x64, 0x8b, 0x85, 0x01, 0xd8, 0xa2, 0xe4, 0xd1, 0xc5, 0x5c, + 0x1e, 0x2d, 0x58, 0xe1, 0xd0, 0x87, 0x61, 0x85, 0xe6, 0xe9, 0x33, 0x3c, 0xd0, 0xe9, 0x73, 0x0a, + 0xec, 0xd3, 0x38, 0xc0, 0x46, 0x07, 0x38, 0xc0, 0x7e, 0xb4, 0x00, 0x33, 0x69, 0x0b, 0xdf, 0x33, + 0x78, 0xef, 0x78, 0xcb, 0x78, 0xef, 0xc8, 0xce, 0xed, 0x93, 0xb6, 0x3b, 0xce, 0x7b, 0xfb, 0xc0, + 0xa9, 0xb7, 0x8f, 0xe7, 0x06, 0xa2, 0xd6, 0xfb, 0x1d, 0xe4, 0x1f, 0x15, 0xe0, 0x42, 0xba, 0xca, + 0x8a, 0xe7, 0xb8, 0x7b, 0x67, 0x30, 0x36, 0xb7, 0x8d, 0xb1, 0x79, 0x71, 0x90, 0xaf, 0x61, 0x5d, + 0xcb, 0x1d, 0xa0, 0x7b, 0xa9, 0x01, 0x5a, 0x1c, 0x9c, 0x64, 0xef, 0x51, 0xfa, 0x66, 0x11, 0x2e, + 0x65, 0xd6, 0x4b, 0x9e, 0x0b, 0xd6, 0x8c, 0xe7, 0x82, 0x6b, 0xa9, 0xe7, 0x02, 0xbb, 0x77, 0xed, + 0xd3, 0x79, 0x3f, 0x10, 0xee, 0xd0, 0x2c, 0x62, 0xe8, 0x43, 0xbe, 0x1d, 0x18, 0xee, 0xd0, 0x8a, + 0x10, 0x36, 0xe9, 0xfe, 0x55, 0x7a, 0x33, 0xf8, 0x2d, 0x0b, 0x2e, 0x66, 0xce, 0xcd, 0x19, 0xe8, + 0xd5, 0x37, 0x4c, 0xbd, 0xfa, 0xb3, 0x03, 0xaf, 0xd6, 0x1c, 0x45, 0xfb, 0x1f, 0x17, 0x73, 0xbe, + 0x85, 0x69, 0x26, 0x6f, 0xc3, 0xb8, 0xd3, 0x68, 0x90, 0x28, 0x5a, 0x0f, 0x9a, 0x2a, 0x82, 0xe6, + 0x8b, 0x4c, 0xda, 0x48, 0x8a, 0x8f, 0x0f, 0xcb, 0xf3, 0x69, 0x12, 0x09, 0x18, 0xeb, 0x14, 0xcc, + 0xa0, 0xbf, 0x85, 0x53, 0x0d, 0xfa, 0x7b, 0x0d, 0x60, 0x5f, 0xe9, 0x2b, 0xd2, 0x6a, 0x4e, 0x4d, + 0x93, 0xa1, 0x61, 0xa1, 0xef, 0x62, 0xb7, 0x00, 0x6e, 0x0c, 0xc4, 0x97, 0xe2, 0xcb, 0x03, 0xce, + 0x95, 0x6e, 0x58, 0xc4, 0xe3, 0x6e, 0x28, 0x95, 0xb0, 0x22, 0x89, 0xbe, 0x03, 0x66, 0x22, 0x1e, + 0xd6, 0x69, 0xc5, 0x73, 0x22, 0xe6, 0xc4, 0x25, 0x56, 0x21, 0x0b, 0xa6, 0x51, 0x4f, 0xc1, 0x70, + 0x17, 0x36, 0x5a, 0x93, 0x1f, 0xc5, 0x62, 0x50, 0xf1, 0x85, 0x79, 0x25, 0xf9, 0x20, 0x91, 0x0b, + 0xed, 0x7c, 0x7a, 0xf8, 0xd9, 0xc0, 0x6b, 0x35, 0xed, 0x1f, 0x1d, 0x82, 0x27, 0x7a, 0x30, 0x31, + 0xb4, 0x64, 0x1a, 0x01, 0x3c, 0x9f, 0xd6, 0xff, 0xcd, 0x67, 0x56, 0x36, 0x14, 0x82, 0xa9, 0xb5, + 0x52, 0xf8, 0xd0, 0x6b, 0xe5, 0x87, 0x2c, 0x4d, 0x33, 0xcb, 0x4d, 0x85, 0xbf, 0x70, 0x42, 0xe6, + 0x7c, 0x8a, 0xaa, 0xda, 0xed, 0x0c, 0x7d, 0xe7, 0xb5, 0x81, 0xbb, 0x33, 0xb0, 0x02, 0xf4, 0x6c, + 0x9f, 0x8c, 0xbe, 0x6a, 0xc1, 0xd3, 0x99, 0xfd, 0x35, 0x8c, 0x96, 0x16, 0xa1, 0xd4, 0xa0, 0x85, + 0x9a, 0x63, 0x68, 0xe2, 0x31, 0x2f, 0x01, 0x38, 0xc1, 0x31, 0x6c, 0x93, 0x0a, 0x7d, 0x6d, 0x93, + 0xfe, 0xad, 0x05, 0x5d, 0x0b, 0xf8, 0x0c, 0x38, 0x69, 0xd5, 0xe4, 0xa4, 0x9f, 0x1c, 0x64, 0x2e, + 0x73, 0x98, 0xe8, 0xef, 0x4f, 0xc3, 0x63, 0x39, 0x9e, 0x60, 0xfb, 0x30, 0xdb, 0x6a, 0x10, 0xd3, + 0xe5, 0x56, 0x7c, 0x4c, 0xa6, 0x77, 0x72, 0x4f, 0xff, 0x5c, 0x7e, 0x21, 0xee, 0x42, 0xc1, 0xdd, + 0x4d, 0xa0, 0xaf, 0x5a, 0x70, 0xde, 0xb9, 0x1f, 0x75, 0xa5, 0x2a, 0x15, 0x6b, 0xe6, 0x95, 0x4c, + 0x3d, 0x6d, 0x9f, 0xd4, 0xa6, 0x3c, 0xab, 0x57, 0x16, 0x16, 0xce, 0x6c, 0x0b, 0x61, 0x11, 0xf4, + 0x98, 0xca, 0xdb, 0x3d, 0x9c, 0xc2, 0xb3, 0x5c, 0xf6, 0x38, 0x4f, 0x95, 0x10, 0xac, 0xe8, 0xa0, + 0xbb, 0x50, 0x6a, 0x49, 0x3f, 0x5a, 0xc1, 0xb3, 0x33, 0x0f, 0xc1, 0x4c, 0x67, 0x5b, 0xee, 0x3b, + 0xa2, 0x40, 0x38, 0x21, 0x85, 0xde, 0x84, 0xa2, 0xbf, 0x1d, 0xf5, 0x4a, 0x87, 0x95, 0xb2, 0xe5, + 0xe3, 0x01, 0x17, 0x36, 0xd6, 0xea, 0x98, 0x56, 0x44, 0x37, 0xa0, 0x18, 0x6e, 0x35, 0xc5, 0xd3, + 0x42, 0xa6, 0x5c, 0x8a, 0x97, 0x2b, 0xd9, 0x8b, 0x84, 0x53, 0xc2, 0xcb, 0x15, 0x4c, 0x49, 0xa0, + 0x1a, 0x0c, 0x33, 0xa7, 0x29, 0xf1, 0x82, 0x90, 0x29, 0x90, 0xf6, 0x70, 0x3e, 0xe4, 0x51, 0x19, + 0x18, 0x02, 0xe6, 0x84, 0xd0, 0x5b, 0x30, 0xd2, 0x60, 0x19, 0xa3, 0x84, 0xe2, 0x27, 0x3b, 0x5c, + 0x57, 0x57, 0x4e, 0x29, 0xfe, 0x82, 0xca, 0xcb, 0xb1, 0xa0, 0x80, 0x36, 0x61, 0xa4, 0x41, 0xda, + 0x3b, 0xdb, 0x91, 0xd0, 0xe7, 0x7c, 0x26, 0x93, 0x56, 0x8f, 0x04, 0x69, 0x82, 0x2a, 0xc3, 0xc0, + 0x82, 0x16, 0xfa, 0x1c, 0x14, 0xb6, 0x1b, 0xc2, 0x93, 0x2a, 0xf3, 0x0d, 0xc1, 0x8c, 0x94, 0xb1, + 0x3c, 0x72, 0x74, 0x58, 0x2e, 0xac, 0xad, 0xe0, 0xc2, 0x76, 0x03, 0x6d, 0xc0, 0xe8, 0x36, 0xf7, + 0xad, 0x17, 0x01, 0x6c, 0x3e, 0x9d, 0xed, 0xf6, 0xdf, 0xe5, 0x7e, 0xcf, 0x3d, 0x80, 0x04, 0x00, + 0x4b, 0x22, 0x2c, 0x5e, 0xb0, 0x8a, 0x11, 0x20, 0x02, 0xe7, 0x2f, 0x9c, 0x2c, 0xae, 0x83, 0x50, + 0x73, 0x28, 0x2a, 0x58, 0xa3, 0x88, 0xbe, 0x02, 0x25, 0x47, 0xa6, 0xc6, 0x14, 0x41, 0x70, 0x5e, + 0xce, 0xdc, 0x8e, 0xbd, 0xb3, 0x86, 0xf2, 0xb5, 0xac, 0x90, 0x70, 0x42, 0x14, 0xed, 0xc2, 0xe4, + 0x7e, 0xd4, 0xde, 0x21, 0x72, 0xfb, 0xb2, 0x98, 0x38, 0x39, 0xc7, 0xd5, 0x5d, 0x81, 0xe8, 0x86, + 0x71, 0xc7, 0xf1, 0xba, 0x38, 0x0e, 0x73, 0x1c, 0xbb, 0xab, 0x13, 0xc3, 0x26, 0x6d, 0x3a, 0xfc, + 0xef, 0x77, 0x82, 0xad, 0x83, 0x98, 0x88, 0x48, 0xfb, 0x99, 0xc3, 0xff, 0x36, 0x47, 0xe9, 0x1e, + 0x7e, 0x01, 0xc0, 0x92, 0x08, 0xdd, 0xe0, 0x8e, 0x4c, 0x3b, 0x2b, 0x74, 0x39, 0xcf, 0xe6, 0x0e, + 0x4f, 0x57, 0x7f, 0x93, 0x41, 0x61, 0x9c, 0x31, 0x21, 0xc5, 0x38, 0x62, 0x7b, 0x27, 0x88, 0x03, + 0x3f, 0xc5, 0x8d, 0x67, 0xf3, 0x39, 0x62, 0x2d, 0x03, 0xbf, 0x9b, 0x23, 0x66, 0x61, 0xe1, 0xcc, + 0xb6, 0x50, 0x13, 0xa6, 0xda, 0x41, 0x18, 0xdf, 0x0f, 0x42, 0xb9, 0xbe, 0x50, 0x8f, 0x4b, 0xbe, + 0x81, 0x29, 0x5a, 0x64, 0x76, 0xe0, 0x26, 0x04, 0xa7, 0x68, 0xa2, 0x2f, 0xc2, 0x68, 0xd4, 0x70, + 0x3c, 0x52, 0xbd, 0x3d, 0x77, 0x2e, 0xff, 0xa8, 0xa9, 0x73, 0x94, 0x9c, 0xd5, 0xc5, 0x26, 0x47, + 0xa0, 0x60, 0x49, 0x0e, 0xad, 0xc1, 0x30, 0x4b, 0xdf, 0xc2, 0x92, 0x04, 0xe4, 0x04, 0x5b, 0xeb, + 0xb2, 0x95, 0xe6, 0x1c, 0x89, 0x15, 0x63, 0x5e, 0x9d, 0xee, 0x01, 0x21, 0xeb, 0x06, 0xd1, 0xdc, + 0x85, 0xfc, 0x3d, 0x20, 0x44, 0xe4, 0xdb, 0xf5, 0x5e, 0x7b, 0x40, 0x21, 0xe1, 0x84, 0x28, 0xe5, + 0xc7, 0x94, 0x87, 0x3e, 0x96, 0xcf, 0x8f, 0xf3, 0x39, 0x28, 0xe3, 0xc7, 0x94, 0x7f, 0x52, 0x12, + 0xf6, 0x1f, 0x8c, 0x76, 0xcb, 0x27, 0xec, 0x76, 0xf4, 0x7d, 0x56, 0x97, 0xe9, 0xc0, 0x67, 0x07, + 0x55, 0xd6, 0x9c, 0xa2, 0x64, 0xfa, 0x55, 0x0b, 0x1e, 0x6b, 0x67, 0x7e, 0x88, 0x38, 0xec, 0x07, + 0xd3, 0xf9, 0xf0, 0x4f, 0x57, 0x89, 0x3c, 0xb2, 0xe1, 0x38, 0xa7, 0xa5, 0xb4, 0xf4, 0x5f, 0xfc, + 0xd0, 0xd2, 0xff, 0x3a, 0x8c, 0x31, 0x81, 0x32, 0x89, 0xec, 0x37, 0x90, 0x01, 0x1e, 0x13, 0x1b, + 0x56, 0x44, 0x45, 0xac, 0x48, 0xa0, 0x1f, 0xb6, 0xe0, 0xa9, 0x74, 0xd7, 0x31, 0x61, 0x60, 0x11, + 0x25, 0x9a, 0x5f, 0xcc, 0xd6, 0xc4, 0xf7, 0x3f, 0x55, 0xeb, 0x85, 0x7c, 0xdc, 0x0f, 0x01, 0xf7, + 0x6e, 0x0c, 0x55, 0x32, 0x6e, 0x86, 0x23, 0xe6, 0xcb, 0xe2, 0x00, 0xb7, 0xc3, 0x57, 0x60, 0x62, + 0x2f, 0xe8, 0xf8, 0xd2, 0x3b, 0x46, 0xf8, 0x3e, 0x33, 0x2d, 0xf6, 0xba, 0x56, 0x8e, 0x0d, 0xac, + 0xd4, 0x9d, 0x72, 0xec, 0x61, 0xef, 0x94, 0xe8, 0xdd, 0x54, 0x9a, 0xf8, 0x52, 0xbe, 0x6c, 0x21, + 0xae, 0xdf, 0x27, 0x48, 0x16, 0x7f, 0xb6, 0xf7, 0xa0, 0xaf, 0x5b, 0x19, 0x02, 0x3c, 0xbf, 0x19, + 0x7f, 0xde, 0xbc, 0x19, 0x5f, 0x49, 0xdf, 0x8c, 0xbb, 0x34, 0xa1, 0xc6, 0xa5, 0x78, 0xf0, 0x18, + 0xfd, 0x83, 0x06, 0x68, 0xb4, 0x3d, 0xb8, 0xdc, 0xef, 0x58, 0x62, 0xa6, 0x92, 0x4d, 0x65, 0x43, + 0x90, 0x98, 0x4a, 0x36, 0xab, 0x15, 0xcc, 0x20, 0x83, 0x46, 0xf0, 0xb1, 0xff, 0xbb, 0x05, 0xc5, + 0x5a, 0xd0, 0x3c, 0x03, 0xcd, 0xee, 0x17, 0x0c, 0xcd, 0xee, 0x13, 0x39, 0xe9, 0xfb, 0x73, 0xf5, + 0xb8, 0xab, 0x29, 0x3d, 0xee, 0x53, 0x79, 0x04, 0x7a, 0x6b, 0x6d, 0x7f, 0xba, 0x08, 0xe3, 0xb5, + 0xa0, 0xa9, 0x6c, 0xee, 0xff, 0xfd, 0xc3, 0xd8, 0xdc, 0xe7, 0xc6, 0x5b, 0xd6, 0x28, 0x33, 0x0b, + 0x4b, 0xe9, 0xce, 0xfb, 0x97, 0xcc, 0xf4, 0xfe, 0x1e, 0x71, 0x5b, 0x3b, 0x31, 0x69, 0xa6, 0x3f, + 0xe7, 0xec, 0x4c, 0xef, 0xff, 0xab, 0x05, 0xd3, 0xa9, 0xd6, 0x91, 0x97, 0xe5, 0x1b, 0xf8, 0x90, + 0x1a, 0xbd, 0xd9, 0xbe, 0xce, 0x84, 0x0b, 0x00, 0xea, 0xd9, 0x4c, 0x6a, 0xbb, 0x98, 0xd4, 0xaf, + 0xde, 0xd5, 0x22, 0xac, 0x61, 0xa0, 0x57, 0x61, 0x3c, 0x0e, 0xda, 0x81, 0x17, 0xb4, 0x0e, 0x6e, + 0x12, 0x19, 0x33, 0x4a, 0x3d, 0x6e, 0x6e, 0x26, 0x20, 0xac, 0xe3, 0xd9, 0x3f, 0x5b, 0xe4, 0x1f, + 0xea, 0xc7, 0xee, 0xb7, 0xd6, 0xe4, 0xc7, 0x7b, 0x4d, 0x7e, 0xd3, 0x82, 0x19, 0xda, 0x3a, 0xb3, + 0x5e, 0x93, 0x87, 0xad, 0xca, 0x15, 0x66, 0xf5, 0xc8, 0x15, 0x76, 0x85, 0xf2, 0xae, 0x66, 0xd0, + 0x89, 0x85, 0xb6, 0x4c, 0x63, 0x4e, 0xb4, 0x14, 0x0b, 0xa8, 0xc0, 0x23, 0x61, 0x28, 0x3c, 0xfe, + 0x74, 0x3c, 0x12, 0x86, 0x58, 0x40, 0x65, 0x2a, 0xb1, 0xa1, 0x9c, 0x54, 0x62, 0x2c, 0x02, 0xa6, + 0xb0, 0x98, 0x12, 0x62, 0x8f, 0x16, 0x01, 0x53, 0x9a, 0x52, 0x25, 0x38, 0xf6, 0x2f, 0x14, 0x61, + 0xa2, 0x16, 0x34, 0x93, 0x87, 0xab, 0x57, 0x8c, 0x87, 0xab, 0xcb, 0xa9, 0x87, 0xab, 0x19, 0x1d, + 0xf7, 0x5b, 0xcf, 0x54, 0x1f, 0xd5, 0x33, 0xd5, 0xbf, 0xb1, 0xd8, 0xac, 0x55, 0x36, 0xea, 0x22, + 0x19, 0xf7, 0x4b, 0x30, 0xce, 0x18, 0x12, 0x73, 0x31, 0x95, 0xaf, 0x39, 0x2c, 0xa3, 0xc5, 0x46, + 0x52, 0x8c, 0x75, 0x1c, 0x74, 0x15, 0xc6, 0x22, 0xe2, 0x84, 0x8d, 0x1d, 0xc5, 0xe3, 0xc4, 0x5b, + 0x07, 0x2f, 0xc3, 0x0a, 0x8a, 0xde, 0x4e, 0x82, 0x2f, 0x16, 0xf3, 0xd3, 0x4a, 0xeb, 0xfd, 0xe1, + 0x5b, 0x24, 0x3f, 0xe2, 0xa2, 0x7d, 0x0f, 0x50, 0x37, 0xfe, 0x00, 0x66, 0x64, 0x65, 0x33, 0xcc, + 0x5a, 0xa9, 0x2b, 0xc4, 0xda, 0x9f, 0x5b, 0x30, 0x55, 0x0b, 0x9a, 0x74, 0xeb, 0xfe, 0x55, 0xda, + 0xa7, 0x7a, 0xe4, 0xd9, 0x91, 0x1e, 0x91, 0x67, 0xff, 0xb1, 0x05, 0xa3, 0xb5, 0xa0, 0x79, 0x06, + 0x3a, 0xf6, 0xcf, 0x9b, 0x3a, 0xf6, 0xc7, 0x73, 0x96, 0x44, 0x8e, 0x5a, 0xfd, 0x97, 0x8a, 0x30, + 0x49, 0xfb, 0x19, 0xb4, 0xe4, 0x2c, 0x19, 0x23, 0x62, 0x0d, 0x30, 0x22, 0x54, 0xcc, 0x0d, 0x3c, + 0x2f, 0xb8, 0x9f, 0x9e, 0xb1, 0x35, 0x56, 0x8a, 0x05, 0x14, 0xbd, 0x00, 0x63, 0xed, 0x90, 0xec, + 0xbb, 0x41, 0x27, 0x4a, 0x7b, 0x53, 0xd7, 0x44, 0x39, 0x56, 0x18, 0xf4, 0xde, 0x15, 0xb9, 0x7e, + 0x83, 0x48, 0xfb, 0xb2, 0x21, 0x66, 0x5f, 0xc6, 0x43, 0xca, 0x6b, 0xe5, 0xd8, 0xc0, 0x42, 0xf7, + 0xa0, 0xc4, 0xfe, 0x33, 0x8e, 0x72, 0xf2, 0x24, 0x67, 0x22, 0x8f, 0x8b, 0x20, 0x80, 0x13, 0x5a, + 0xe8, 0x1a, 0x40, 0x2c, 0x2d, 0xe1, 0x22, 0xe1, 0xec, 0xaf, 0x64, 0x6d, 0x65, 0x23, 0x17, 0x61, + 0x0d, 0x0b, 0x3d, 0x0f, 0xa5, 0xd8, 0x71, 0xbd, 0x5b, 0xae, 0x4f, 0x22, 0x61, 0x49, 0x28, 0xd2, + 0xb4, 0x88, 0x42, 0x9c, 0xc0, 0xa9, 0xac, 0xc3, 0x42, 0x49, 0xf0, 0x14, 0x89, 0x63, 0x0c, 0x9b, + 0xc9, 0x3a, 0xb7, 0x54, 0x29, 0xd6, 0x30, 0xec, 0xd7, 0xe1, 0x42, 0x2d, 0x68, 0xd6, 0x82, 0x30, + 0x5e, 0x0b, 0xc2, 0xfb, 0x4e, 0xd8, 0x94, 0xf3, 0x57, 0x96, 0x19, 0x43, 0x28, 0xef, 0x19, 0xe6, + 0x3b, 0xd3, 0xc8, 0x05, 0xf2, 0x32, 0x93, 0x76, 0x4e, 0xe8, 0xf6, 0xf5, 0xbf, 0x0b, 0x8c, 0x51, + 0xa4, 0xf2, 0x76, 0xa2, 0x2f, 0xc3, 0x54, 0x44, 0x6e, 0xb9, 0x7e, 0xe7, 0x81, 0xbc, 0x1f, 0xf7, + 0xf0, 0xa9, 0xab, 0xaf, 0xea, 0x98, 0x5c, 0xcb, 0x66, 0x96, 0xe1, 0x14, 0x35, 0x3a, 0x84, 0x61, + 0xc7, 0x5f, 0x8a, 0xee, 0x44, 0x24, 0x14, 0x79, 0x23, 0xd9, 0x10, 0x62, 0x59, 0x88, 0x13, 0x38, + 0x5d, 0x32, 0xec, 0xcf, 0x46, 0xe0, 0xe3, 0x20, 0x88, 0xe5, 0x22, 0x63, 0x99, 0xc7, 0xb4, 0x72, + 0x6c, 0x60, 0xa1, 0x35, 0x40, 0x51, 0xa7, 0xdd, 0xf6, 0xd8, 0x03, 0xb8, 0xe3, 0x5d, 0x0f, 0x83, + 0x4e, 0x9b, 0x3f, 0x3e, 0x8a, 0xa4, 0x5d, 0xf5, 0x2e, 0x28, 0xce, 0xa8, 0x41, 0x19, 0xc3, 0x76, + 0xc4, 0x7e, 0x8b, 0x68, 0x12, 0x5c, 0xf3, 0x5d, 0x67, 0x45, 0x58, 0xc2, 0xe8, 0x3c, 0xb3, 0xe6, + 0x39, 0xe6, 0x48, 0x32, 0xcf, 0x58, 0x95, 0x62, 0x0d, 0xc3, 0xfe, 0x1e, 0x76, 0xc0, 0xb0, 0xf4, + 0x80, 0x71, 0x27, 0x24, 0x68, 0x0f, 0x26, 0xdb, 0xec, 0xe8, 0x17, 0x81, 0xd6, 0xc5, 0x80, 0x3f, + 0x9c, 0x9d, 0x21, 0x4f, 0x17, 0xa6, 0x93, 0xc3, 0x26, 0x75, 0xfb, 0xa7, 0x67, 0x18, 0x1f, 0xab, + 0xf3, 0xeb, 0xdf, 0xa8, 0xf0, 0x1e, 0x10, 0xb2, 0xee, 0x7c, 0xbe, 0x1e, 0x22, 0x39, 0x72, 0x84, + 0x07, 0x02, 0x96, 0x75, 0xd1, 0xdb, 0xec, 0x95, 0x97, 0x33, 0x8f, 0x7e, 0x79, 0xc6, 0x39, 0x96, + 0xf1, 0xa0, 0x2b, 0x2a, 0x62, 0x8d, 0x08, 0xba, 0x05, 0x93, 0x22, 0x9b, 0x9c, 0x50, 0x34, 0x15, + 0x0d, 0x45, 0xc2, 0x24, 0xd6, 0x81, 0xc7, 0xe9, 0x02, 0x6c, 0x56, 0x46, 0x2d, 0x78, 0x4a, 0x4b, + 0xad, 0x9a, 0x61, 0xeb, 0xca, 0x79, 0xd1, 0xd3, 0x47, 0x87, 0xe5, 0xa7, 0x36, 0x7b, 0x21, 0xe2, + 0xde, 0x74, 0xd0, 0x6d, 0xb8, 0xe0, 0x34, 0x62, 0x77, 0x9f, 0x54, 0x88, 0xd3, 0xf4, 0x5c, 0x9f, + 0x98, 0xe1, 0x48, 0x2e, 0x1e, 0x1d, 0x96, 0x2f, 0x2c, 0x65, 0x21, 0xe0, 0xec, 0x7a, 0xe8, 0xf3, + 0x50, 0x6a, 0xfa, 0x91, 0x18, 0x83, 0x11, 0x23, 0x6b, 0x70, 0xa9, 0xb2, 0x51, 0x57, 0xdf, 0x9f, + 0xfc, 0xc1, 0x49, 0x05, 0xd4, 0xe2, 0xca, 0x26, 0x75, 0xb7, 0x1b, 0xed, 0x8a, 0x31, 0x93, 0xd6, + 0x12, 0x18, 0x7e, 0x7a, 0x5c, 0xcb, 0xaa, 0x2c, 0xc9, 0x0d, 0x17, 0x3e, 0x83, 0x30, 0x7a, 0x0b, + 0x10, 0x15, 0x7e, 0xdc, 0x06, 0x59, 0x6a, 0xb0, 0x78, 0xf7, 0x4c, 0x37, 0x37, 0x66, 0xb8, 0x45, + 0xa1, 0x7a, 0x17, 0x06, 0xce, 0xa8, 0x85, 0x6e, 0x50, 0x0e, 0xa4, 0x97, 0x0a, 0xc3, 0x7f, 0x29, + 0x30, 0xcf, 0x55, 0x48, 0x3b, 0x24, 0x0d, 0x27, 0x26, 0x4d, 0x93, 0x22, 0x4e, 0xd5, 0xa3, 0xe7, + 0x93, 0x4a, 0x7d, 0x05, 0xa6, 0xb9, 0x7a, 0x77, 0xfa, 0x2b, 0x7a, 0xd7, 0xdc, 0x09, 0xa2, 0x78, + 0x83, 0xc4, 0xf7, 0x83, 0x70, 0x57, 0xc4, 0x10, 0x4c, 0xc2, 0xd9, 0x26, 0x20, 0xac, 0xe3, 0x51, + 0xd9, 0x92, 0x3d, 0xb3, 0x56, 0x2b, 0xec, 0xd5, 0x6b, 0x2c, 0xd9, 0x27, 0x37, 0x78, 0x31, 0x96, + 0x70, 0x89, 0x5a, 0xad, 0xad, 0xb0, 0x17, 0xac, 0x14, 0x6a, 0xb5, 0xb6, 0x82, 0x25, 0x1c, 0x91, + 0xee, 0x8c, 0xcc, 0x53, 0xf9, 0x9a, 0xc2, 0x6e, 0x3e, 0x3e, 0x60, 0x52, 0x66, 0x1f, 0x66, 0x54, + 0x2e, 0x68, 0x1e, 0x5c, 0x31, 0x9a, 0x9b, 0x66, 0x8b, 0x64, 0xf0, 0xc8, 0x8c, 0x4a, 0xf7, 0x5a, + 0x4d, 0x51, 0xc2, 0x5d, 0xb4, 0x8d, 0x30, 0x37, 0x33, 0x7d, 0x53, 0x97, 0x2d, 0x42, 0x29, 0xea, + 0x6c, 0x35, 0x83, 0x3d, 0xc7, 0xf5, 0xd9, 0x83, 0x93, 0x26, 0xb8, 0xd4, 0x25, 0x00, 0x27, 0x38, + 0x68, 0x0d, 0xc6, 0x1c, 0xa9, 0x58, 0x45, 0xf9, 0x71, 0x2f, 0x94, 0x3a, 0x95, 0x89, 0xe5, 0x4a, + 0x95, 0xaa, 0xea, 0xa2, 0x37, 0x60, 0x52, 0xb8, 0x66, 0x0a, 0xab, 0xea, 0x73, 0xa6, 0x17, 0x4f, + 0x5d, 0x07, 0x62, 0x13, 0x17, 0x7d, 0x17, 0x4c, 0x51, 0x2a, 0x09, 0x63, 0x9b, 0x3b, 0x3f, 0x08, + 0x47, 0xd4, 0x52, 0xd2, 0xe8, 0x95, 0x71, 0x8a, 0x18, 0x6a, 0xc2, 0x93, 0x4e, 0x27, 0x0e, 0x98, + 0x72, 0xda, 0x5c, 0xff, 0x9b, 0xc1, 0x2e, 0xf1, 0xd9, 0xbb, 0xd0, 0xd8, 0xf2, 0xe5, 0xa3, 0xc3, + 0xf2, 0x93, 0x4b, 0x3d, 0xf0, 0x70, 0x4f, 0x2a, 0xe8, 0x0e, 0x8c, 0xc7, 0x81, 0x27, 0xdc, 0x21, + 0xa2, 0xb9, 0xc7, 0xf2, 0xc3, 0x74, 0x6d, 0x2a, 0x34, 0x5d, 0x31, 0xa3, 0xaa, 0x62, 0x9d, 0x0e, + 0xda, 0xe4, 0x7b, 0x8c, 0x05, 0x30, 0x26, 0xd1, 0xdc, 0xe3, 0xf9, 0x03, 0xa3, 0xe2, 0x1c, 0x9b, + 0x5b, 0x50, 0xd4, 0xc4, 0x3a, 0x19, 0x74, 0x1d, 0x66, 0xdb, 0xa1, 0x1b, 0xb0, 0x85, 0xad, 0x1e, + 0x06, 0xe6, 0xcc, 0x2c, 0x24, 0xb5, 0x34, 0x02, 0xee, 0xae, 0x43, 0x2f, 0x6e, 0xb2, 0x70, 0xee, + 0x22, 0x4f, 0x69, 0xc7, 0x85, 0x59, 0x5e, 0x86, 0x15, 0x14, 0xad, 0x33, 0xbe, 0xcc, 0xaf, 0x58, + 0x73, 0xf3, 0xf9, 0xf1, 0x42, 0xf4, 0xab, 0x18, 0x17, 0x74, 0xd4, 0x5f, 0x9c, 0x50, 0xa0, 0xe7, + 0x46, 0xb4, 0xe3, 0x84, 0xa4, 0x16, 0x06, 0x0d, 0xc2, 0x3b, 0xc3, 0xcd, 0xcf, 0x9f, 0xe0, 0x71, + 0x56, 0xe9, 0xb9, 0x51, 0xcf, 0x42, 0xc0, 0xd9, 0xf5, 0xe6, 0xbf, 0x1d, 0x66, 0xbb, 0x38, 0xf9, + 0x89, 0x4c, 0xe7, 0xff, 0x6c, 0x18, 0x4a, 0x4a, 0xf1, 0x8b, 0x16, 0x4d, 0x7d, 0xfe, 0xc5, 0xb4, + 0x3e, 0x7f, 0x8c, 0xca, 0x9f, 0xba, 0x0a, 0x7f, 0xd3, 0x30, 0xfc, 0x2a, 0xe4, 0xa7, 0xba, 0xd3, + 0xb5, 0x1e, 0x7d, 0xfd, 0x5c, 0xb5, 0x7b, 0x7c, 0x71, 0xe0, 0x87, 0x81, 0xa1, 0x9e, 0xaa, 0x81, + 0x01, 0xb3, 0x77, 0xd3, 0xab, 0x6e, 0x3b, 0x68, 0x56, 0x6b, 0xe9, 0x74, 0xb6, 0x35, 0x5a, 0x88, + 0x39, 0x8c, 0x5d, 0x56, 0xa8, 0xd8, 0xc1, 0x2e, 0x2b, 0xa3, 0x0f, 0x79, 0x59, 0x91, 0x04, 0x70, + 0x42, 0x0b, 0x79, 0x30, 0xdb, 0x30, 0x33, 0x11, 0x2b, 0xdf, 0xd6, 0x67, 0xfa, 0xe6, 0x04, 0xee, + 0x68, 0x29, 0x0a, 0x57, 0xd2, 0x54, 0x70, 0x37, 0x61, 0xf4, 0x06, 0x8c, 0xbd, 0x1f, 0x44, 0x6c, + 0x5b, 0x88, 0xb3, 0x57, 0x7a, 0x13, 0x8e, 0xbd, 0x7d, 0xbb, 0xce, 0xca, 0x8f, 0x0f, 0xcb, 0xe3, + 0xb5, 0xa0, 0x29, 0xff, 0x62, 0x55, 0x01, 0x3d, 0x80, 0x0b, 0x06, 0xc7, 0x52, 0xdd, 0x85, 0xc1, + 0xbb, 0xfb, 0x94, 0x68, 0xee, 0x42, 0x35, 0x8b, 0x12, 0xce, 0x6e, 0x80, 0xb2, 0x01, 0x3f, 0x10, + 0x59, 0xbc, 0xe5, 0xf9, 0xce, 0x8e, 0xf1, 0x92, 0x1e, 0x94, 0x21, 0x85, 0x80, 0xbb, 0xeb, 0xd8, + 0xdf, 0xe0, 0x7a, 0x72, 0xa1, 0x4d, 0x23, 0x51, 0xc7, 0x3b, 0x8b, 0x84, 0x66, 0xab, 0x86, 0xa2, + 0xef, 0xa1, 0xdf, 0x62, 0x7e, 0xc3, 0x62, 0x6f, 0x31, 0x9b, 0x64, 0xaf, 0xed, 0x39, 0xf1, 0x59, + 0x78, 0x5e, 0xbc, 0x0d, 0x63, 0xb1, 0x68, 0xad, 0x57, 0x0e, 0x36, 0xad, 0x53, 0xec, 0x3d, 0x4a, + 0x9d, 0xfc, 0xb2, 0x14, 0x2b, 0x32, 0xf6, 0xbf, 0xe4, 0x33, 0x20, 0x21, 0x67, 0xa0, 0x74, 0xa9, + 0x98, 0x4a, 0x97, 0x72, 0x9f, 0x2f, 0xc8, 0x51, 0xbe, 0xfc, 0x0b, 0xb3, 0xdf, 0xec, 0x92, 0xf5, + 0x71, 0x7f, 0x04, 0xb4, 0x7f, 0xdc, 0x82, 0xf3, 0x59, 0x56, 0x33, 0x54, 0x5a, 0xe3, 0x57, 0x3c, + 0xf5, 0x28, 0xaa, 0x46, 0xf0, 0xae, 0x28, 0xc7, 0x0a, 0x63, 0xe0, 0xf4, 0x26, 0x27, 0x8b, 0xc1, + 0x77, 0x1b, 0xcc, 0xec, 0xd7, 0xe8, 0x4d, 0xee, 0x4a, 0x65, 0xa9, 0xf4, 0xd4, 0x27, 0x73, 0xa3, + 0xb2, 0x7f, 0xae, 0x00, 0xe7, 0xf9, 0xab, 0xc6, 0xd2, 0x7e, 0xe0, 0x36, 0x6b, 0x41, 0x53, 0x38, + 0x96, 0xbd, 0x03, 0x13, 0x6d, 0xed, 0x5e, 0xde, 0x2b, 0x0a, 0x98, 0x7e, 0x7f, 0x4f, 0xee, 0x47, + 0x7a, 0x29, 0x36, 0x68, 0xa1, 0x26, 0x4c, 0x90, 0x7d, 0xb7, 0xa1, 0x54, 0xe3, 0x85, 0x13, 0x9f, + 0x0d, 0xaa, 0x95, 0x55, 0x8d, 0x0e, 0x36, 0xa8, 0x3e, 0x82, 0x6c, 0x85, 0xf6, 0x4f, 0x58, 0xf0, + 0x78, 0x4e, 0xcc, 0x30, 0xda, 0xdc, 0x7d, 0xf6, 0x7e, 0x24, 0x12, 0x9f, 0xa9, 0xe6, 0xf8, 0xab, + 0x12, 0x16, 0x50, 0xf4, 0x45, 0x00, 0xfe, 0x2a, 0x44, 0xaf, 0x0b, 0xe2, 0xd3, 0x07, 0x8b, 0xa5, + 0xa3, 0x05, 0x5c, 0x91, 0xf5, 0xb1, 0x46, 0xcb, 0xfe, 0x99, 0x22, 0x0c, 0xb3, 0x57, 0x08, 0xb4, + 0x06, 0xa3, 0x3b, 0x3c, 0x42, 0xf9, 0x20, 0xc1, 0xd0, 0x93, 0x7b, 0x17, 0x2f, 0xc0, 0xb2, 0x32, + 0x5a, 0x87, 0x73, 0xc2, 0x79, 0xb1, 0x42, 0x3c, 0xe7, 0x40, 0x5e, 0xdf, 0x79, 0xb2, 0x30, 0x95, + 0x1e, 0xaf, 0xda, 0x8d, 0x82, 0xb3, 0xea, 0xa1, 0x37, 0xbb, 0xe2, 0x92, 0xf2, 0xd8, 0xee, 0x4a, + 0xd8, 0xef, 0x13, 0x9b, 0xf4, 0x0d, 0x98, 0x6c, 0x77, 0x29, 0x2a, 0x86, 0x93, 0x8b, 0x88, 0xa9, + 0x9c, 0x30, 0x71, 0x99, 0xb9, 0x4c, 0x87, 0x19, 0x07, 0x6d, 0xee, 0x84, 0x24, 0xda, 0x09, 0xbc, + 0xa6, 0xc8, 0xdf, 0x9f, 0x98, 0xcb, 0xa4, 0xe0, 0xb8, 0xab, 0x06, 0xa5, 0xb2, 0xed, 0xb8, 0x5e, + 0x27, 0x24, 0x09, 0x95, 0x11, 0x93, 0xca, 0x5a, 0x0a, 0x8e, 0xbb, 0x6a, 0xd0, 0x75, 0x74, 0x41, + 0x24, 0x7f, 0x97, 0x21, 0x2d, 0x94, 0x0d, 0xd4, 0xa8, 0x74, 0x6d, 0xe9, 0x11, 0x66, 0x49, 0x58, + 0x89, 0xa8, 0xf4, 0xf1, 0x5a, 0x6a, 0x61, 0xe1, 0xd4, 0x22, 0xa9, 0x3c, 0x4c, 0x0a, 0xf2, 0x3f, + 0xb0, 0xe0, 0x5c, 0x86, 0xad, 0x25, 0x67, 0x55, 0x2d, 0x37, 0x8a, 0x55, 0x42, 0x24, 0x8d, 0x55, + 0xf1, 0x72, 0xac, 0x30, 0xe8, 0x7e, 0xe0, 0xcc, 0x30, 0xcd, 0x00, 0x85, 0x2d, 0x93, 0x80, 0x9e, + 0x8c, 0x01, 0xa2, 0xcb, 0x30, 0xd4, 0x89, 0x48, 0x28, 0x73, 0x77, 0x4b, 0xfe, 0xcd, 0x54, 0xa5, + 0x0c, 0x42, 0x45, 0xd3, 0x96, 0xd2, 0x52, 0x6a, 0xa2, 0x29, 0x57, 0x3d, 0x72, 0x98, 0xfd, 0xb5, + 0x22, 0x5c, 0xcc, 0xb5, 0xa5, 0xa6, 0x5d, 0xda, 0x0b, 0x7c, 0x37, 0x0e, 0xd4, 0x0b, 0x17, 0x8f, + 0x07, 0x44, 0xda, 0x3b, 0xeb, 0xa2, 0x1c, 0x2b, 0x0c, 0x74, 0x05, 0x86, 0xd9, 0xcd, 0xbe, 0x2b, + 0xe5, 0xd3, 0x72, 0x85, 0x87, 0xa9, 0xe0, 0xe0, 0x81, 0xd3, 0xe9, 0x3d, 0x03, 0x43, 0xed, 0x20, + 0xf0, 0xd2, 0xcc, 0x88, 0x76, 0x37, 0x08, 0x3c, 0xcc, 0x80, 0xe8, 0x53, 0x62, 0x1c, 0x52, 0x4f, + 0x3a, 0xd8, 0x69, 0x06, 0x91, 0x36, 0x18, 0xcf, 0xc2, 0xe8, 0x2e, 0x39, 0x08, 0x5d, 0xbf, 0x95, + 0x7e, 0xea, 0xbb, 0xc9, 0x8b, 0xb1, 0x84, 0x9b, 0x19, 0x4f, 0x46, 0x4f, 0x3b, 0x0f, 0xde, 0x58, + 0xdf, 0xa3, 0xed, 0x87, 0x8a, 0x30, 0x8d, 0x97, 0x2b, 0xdf, 0x9a, 0x88, 0x3b, 0xdd, 0x13, 0x71, + 0xda, 0x79, 0xf0, 0xfa, 0xcf, 0xc6, 0x2f, 0x59, 0x30, 0xcd, 0xa2, 0x82, 0x8b, 0x78, 0x36, 0x6e, + 0xe0, 0x9f, 0x81, 0xe8, 0xf6, 0x0c, 0x0c, 0x87, 0xb4, 0xd1, 0x74, 0x72, 0x2b, 0xd6, 0x13, 0xcc, + 0x61, 0xe8, 0x49, 0x18, 0x62, 0x5d, 0xa0, 0x93, 0x37, 0xc1, 0xf3, 0x82, 0x54, 0x9c, 0xd8, 0xc1, + 0xac, 0x94, 0x39, 0x16, 0x63, 0xd2, 0xf6, 0x5c, 0xde, 0xe9, 0x44, 0xd5, 0xff, 0xf1, 0x70, 0x2c, + 0xce, 0xec, 0xda, 0x87, 0x73, 0x2c, 0xce, 0x26, 0xd9, 0xfb, 0x5a, 0xf4, 0x3f, 0x0a, 0x70, 0x29, + 0xb3, 0xde, 0xc0, 0x8e, 0xc5, 0xbd, 0x6b, 0x9f, 0x8e, 0xc5, 0x46, 0xb6, 0x21, 0x45, 0xf1, 0x0c, + 0x0d, 0x29, 0x86, 0x06, 0x95, 0x1c, 0x87, 0x07, 0xf0, 0xf7, 0xcd, 0x1c, 0xb2, 0x8f, 0x89, 0xbf, + 0x6f, 0x66, 0xdf, 0x72, 0xae, 0x75, 0x7f, 0x51, 0xc8, 0xf9, 0x16, 0x76, 0xc1, 0xbb, 0x4a, 0xf9, + 0x0c, 0x03, 0x46, 0x42, 0x12, 0x9e, 0xe0, 0x3c, 0x86, 0x97, 0x61, 0x05, 0x45, 0xae, 0xe6, 0x39, + 0x5b, 0xc8, 0x4f, 0x7d, 0x9a, 0xdb, 0xd4, 0x82, 0xf9, 0x32, 0xa3, 0x07, 0xdf, 0x49, 0x7b, 0xd1, + 0xae, 0x6b, 0x97, 0xf2, 0xe2, 0xe0, 0x97, 0xf2, 0x89, 0xec, 0x0b, 0x39, 0x5a, 0x82, 0xe9, 0x3d, + 0xd7, 0xa7, 0x6c, 0xf3, 0xc0, 0x14, 0x45, 0x55, 0x20, 0x89, 0x75, 0x13, 0x8c, 0xd3, 0xf8, 0xf3, + 0x6f, 0xc0, 0xe4, 0xc3, 0xab, 0x23, 0xbf, 0x59, 0x84, 0x27, 0x7a, 0x6c, 0x7b, 0xce, 0xeb, 0x8d, + 0x39, 0xd0, 0x78, 0x7d, 0xd7, 0x3c, 0xd4, 0xe0, 0xfc, 0x76, 0xc7, 0xf3, 0x0e, 0x98, 0xad, 0x22, + 0x69, 0x4a, 0x0c, 0x21, 0x2b, 0xaa, 0x90, 0xff, 0x6b, 0x19, 0x38, 0x38, 0xb3, 0x26, 0x7a, 0x0b, + 0x50, 0x20, 0xf2, 0x2e, 0x27, 0x21, 0x85, 0xd8, 0xc0, 0x17, 0x93, 0xcd, 0x78, 0xbb, 0x0b, 0x03, + 0x67, 0xd4, 0xa2, 0x42, 0x3f, 0x3d, 0x95, 0x0e, 0x54, 0xb7, 0x52, 0x42, 0x3f, 0xd6, 0x81, 0xd8, + 0xc4, 0x45, 0xd7, 0x61, 0xd6, 0xd9, 0x77, 0x5c, 0x1e, 0x62, 0x52, 0x12, 0xe0, 0x52, 0xbf, 0x52, + 0x82, 0x2d, 0xa5, 0x11, 0x70, 0x77, 0x9d, 0x94, 0xeb, 0xee, 0x48, 0xbe, 0xeb, 0x6e, 0x6f, 0xbe, + 0xd8, 0x4f, 0xa7, 0x6b, 0xff, 0x67, 0x8b, 0x1e, 0x5f, 0x5c, 0x78, 0x37, 0xc3, 0x6d, 0xbd, 0x01, + 0x93, 0x4a, 0x37, 0xa9, 0x79, 0xd1, 0xaa, 0x71, 0x58, 0xd1, 0x81, 0xd8, 0xc4, 0xe5, 0x0b, 0x22, + 0x4a, 0x1c, 0x3a, 0x0c, 0xd1, 0x5d, 0xb8, 0xc9, 0x2b, 0x0c, 0xf4, 0x25, 0x18, 0x6d, 0xba, 0xfb, + 0x6e, 0x14, 0x84, 0x62, 0xb3, 0x9c, 0xd0, 0x2c, 0x3e, 0xe1, 0x83, 0x15, 0x4e, 0x06, 0x4b, 0x7a, + 0xf6, 0x0f, 0x15, 0x60, 0x52, 0xb6, 0xf8, 0x76, 0x27, 0x88, 0x9d, 0x33, 0x38, 0x96, 0xaf, 0x1b, + 0xc7, 0xf2, 0xa7, 0x7a, 0xc5, 0x0a, 0x60, 0x5d, 0xca, 0x3d, 0x8e, 0x6f, 0xa7, 0x8e, 0xe3, 0x4f, + 0xf7, 0x27, 0xd5, 0xfb, 0x18, 0xfe, 0x57, 0x16, 0xcc, 0x1a, 0xf8, 0x67, 0x70, 0x1a, 0xac, 0x99, + 0xa7, 0xc1, 0xd3, 0x7d, 0xbf, 0x21, 0xe7, 0x14, 0xf8, 0x7a, 0x21, 0xd5, 0x77, 0xc6, 0xfd, 0xdf, + 0x87, 0xa1, 0x1d, 0x27, 0x6c, 0xf6, 0x0a, 0x94, 0xdc, 0x55, 0x69, 0xe1, 0x86, 0x13, 0x36, 0x39, + 0x0f, 0x7f, 0x41, 0x65, 0x6b, 0x75, 0xc2, 0x66, 0x5f, 0xff, 0x25, 0xd6, 0x14, 0x7a, 0x1d, 0x46, + 0xa2, 0x46, 0xd0, 0x56, 0xd6, 0x85, 0x97, 0x79, 0x26, 0x57, 0x5a, 0x72, 0x7c, 0x58, 0x46, 0x66, + 0x73, 0xb4, 0x18, 0x0b, 0xfc, 0xf9, 0x16, 0x94, 0x54, 0xd3, 0x8f, 0xd4, 0x37, 0xe4, 0x77, 0x8b, + 0x70, 0x2e, 0x63, 0x5d, 0xa0, 0xc8, 0x18, 0xad, 0x97, 0x06, 0x5c, 0x4e, 0x1f, 0x72, 0xbc, 0x22, + 0x76, 0x63, 0x69, 0x8a, 0xf9, 0x1f, 0xb8, 0xd1, 0x3b, 0x11, 0x49, 0x37, 0x4a, 0x8b, 0xfa, 0x37, + 0x4a, 0x1b, 0x3b, 0xb3, 0xa1, 0xa6, 0x0d, 0xa9, 0x9e, 0x3e, 0xd2, 0x39, 0xfd, 0xd3, 0x22, 0x9c, + 0xcf, 0x0a, 0x31, 0x82, 0xbe, 0x3b, 0x95, 0x76, 0xe9, 0x95, 0x41, 0x83, 0x93, 0xf0, 0x5c, 0x4c, + 0x22, 0x26, 0xdb, 0x82, 0x99, 0x88, 0xa9, 0xef, 0x30, 0x8b, 0x36, 0x99, 0x43, 0x61, 0xc8, 0xd3, + 0x65, 0xc9, 0x2d, 0xfe, 0xd9, 0x81, 0x3b, 0x20, 0xf2, 0x6c, 0x45, 0x29, 0x87, 0x42, 0x59, 0xdc, + 0xdf, 0xa1, 0x50, 0xb6, 0x3c, 0xef, 0xc2, 0xb8, 0xf6, 0x35, 0x8f, 0x74, 0xc6, 0x77, 0xe9, 0x89, + 0xa2, 0xf5, 0xfb, 0x91, 0xce, 0xfa, 0x4f, 0x58, 0x90, 0xb2, 0xe9, 0x53, 0x2a, 0x29, 0x2b, 0x57, + 0x25, 0x75, 0x19, 0x86, 0xc2, 0xc0, 0x23, 0xe9, 0x4c, 0x3c, 0x38, 0xf0, 0x08, 0x66, 0x10, 0x8a, + 0x11, 0x27, 0x0a, 0x89, 0x09, 0xfd, 0xb2, 0x25, 0xae, 0x51, 0xcf, 0xc0, 0xb0, 0x47, 0xf6, 0x89, + 0xd4, 0x46, 0x28, 0x9e, 0x7c, 0x8b, 0x16, 0x62, 0x0e, 0xb3, 0x7f, 0x69, 0x08, 0x9e, 0xea, 0xe9, + 0x92, 0x4b, 0xaf, 0x2c, 0x2d, 0x27, 0x26, 0xf7, 0x9d, 0x83, 0x74, 0x9c, 0xf0, 0xeb, 0xbc, 0x18, + 0x4b, 0x38, 0xb3, 0x40, 0xe6, 0xa1, 0x46, 0x53, 0x0a, 0x3c, 0x11, 0x61, 0x54, 0x40, 0x4d, 0xc5, + 0x51, 0xf1, 0x34, 0x14, 0x47, 0xd7, 0x00, 0xa2, 0xc8, 0x5b, 0xf5, 0xa9, 0x04, 0xd6, 0x14, 0xa6, + 0xcd, 0x49, 0x48, 0xda, 0xfa, 0x2d, 0x01, 0xc1, 0x1a, 0x16, 0xaa, 0xc0, 0x4c, 0x3b, 0x0c, 0x62, + 0xae, 0x0f, 0xad, 0x70, 0x23, 0x99, 0x61, 0xd3, 0x1b, 0xb2, 0x96, 0x82, 0xe3, 0xae, 0x1a, 0xe8, + 0x55, 0x18, 0x17, 0x1e, 0x92, 0xb5, 0x20, 0xf0, 0x84, 0xaa, 0x46, 0x99, 0x5c, 0xd4, 0x13, 0x10, + 0xd6, 0xf1, 0xb4, 0x6a, 0x4c, 0xc9, 0x3a, 0x9a, 0x59, 0x8d, 0x2b, 0x5a, 0x35, 0xbc, 0x54, 0xb8, + 0xa1, 0xb1, 0x81, 0xc2, 0x0d, 0x25, 0xca, 0xab, 0xd2, 0xc0, 0xef, 0x4a, 0xd0, 0x57, 0xdd, 0xf3, + 0xf3, 0x43, 0x70, 0x4e, 0x2c, 0x9c, 0x47, 0xbd, 0x5c, 0xee, 0x74, 0x2f, 0x97, 0xd3, 0x50, 0x6f, + 0x7d, 0x6b, 0xcd, 0x9c, 0xf5, 0x9a, 0xf9, 0x46, 0x11, 0x46, 0xf8, 0x54, 0x9c, 0x81, 0x0c, 0xbf, + 0x26, 0x94, 0x7e, 0x3d, 0x02, 0xed, 0xf0, 0xbe, 0x2c, 0x54, 0x9c, 0xd8, 0xe1, 0xe7, 0x97, 0x62, + 0xa3, 0x89, 0x7a, 0x10, 0x2d, 0x18, 0x8c, 0x76, 0x3e, 0xa5, 0xd5, 0x02, 0x4e, 0x43, 0x63, 0xbb, + 0x5f, 0x06, 0x88, 0xe2, 0xd0, 0xf5, 0x5b, 0x94, 0x86, 0x08, 0xd9, 0xf4, 0x5c, 0x8f, 0xd6, 0xeb, + 0x0a, 0x99, 0xf7, 0x21, 0x59, 0x82, 0x0a, 0x80, 0x35, 0x8a, 0xf3, 0xaf, 0x41, 0x49, 0x21, 0xf7, + 0x53, 0x01, 0x4c, 0xe8, 0xa7, 0xde, 0x17, 0x60, 0x3a, 0xd5, 0xd6, 0x89, 0x34, 0x08, 0xbf, 0x6c, + 0xc1, 0x34, 0xef, 0xf2, 0xaa, 0xbf, 0x2f, 0x36, 0xfb, 0x07, 0x70, 0xde, 0xcb, 0xd8, 0x74, 0x62, + 0x46, 0x07, 0xdf, 0xa4, 0x4a, 0x63, 0x90, 0x05, 0xc5, 0x99, 0x6d, 0xa0, 0xab, 0x30, 0xc6, 0x5d, + 0x76, 0x1c, 0x4f, 0xb8, 0x59, 0x4c, 0xf0, 0xd4, 0x1d, 0xbc, 0x0c, 0x2b, 0xa8, 0xfd, 0x7b, 0x16, + 0xcc, 0xf2, 0x9e, 0xdf, 0x24, 0x07, 0xea, 0x76, 0xfc, 0x51, 0xf6, 0x5d, 0x64, 0x26, 0x29, 0xe4, + 0x64, 0x26, 0xd1, 0x3f, 0xad, 0xd8, 0xf3, 0xd3, 0x7e, 0xce, 0x02, 0xb1, 0x02, 0xcf, 0xe0, 0x1e, + 0xf8, 0xed, 0xe6, 0x3d, 0x70, 0x3e, 0x7f, 0x51, 0xe7, 0x5c, 0x00, 0xff, 0xdc, 0x82, 0x19, 0x8e, + 0x90, 0x3c, 0x44, 0x7e, 0xa4, 0xf3, 0x30, 0x48, 0xba, 0x3c, 0x95, 0x9f, 0x3c, 0xfb, 0xa3, 0x8c, + 0xc9, 0x1a, 0xea, 0x39, 0x59, 0x4d, 0xb9, 0x81, 0x4e, 0x90, 0x06, 0xf2, 0xc4, 0xc1, 0x74, 0xed, + 0x3f, 0xb1, 0x00, 0xf1, 0x66, 0x8c, 0x73, 0x99, 0x9e, 0x76, 0xac, 0x54, 0xd3, 0x04, 0x25, 0xac, + 0x46, 0x41, 0xb0, 0x86, 0x75, 0x2a, 0xc3, 0x93, 0x7a, 0x4d, 0x2e, 0xf6, 0x7f, 0x4d, 0x3e, 0xc1, + 0x88, 0x7e, 0x63, 0x08, 0xd2, 0x36, 0xda, 0xe8, 0x2e, 0x4c, 0x34, 0x9c, 0xb6, 0xb3, 0xe5, 0x7a, + 0x6e, 0xec, 0x92, 0xa8, 0x97, 0x19, 0xca, 0x8a, 0x86, 0x27, 0xde, 0x09, 0xb5, 0x12, 0x6c, 0xd0, + 0x41, 0x0b, 0x00, 0xed, 0xd0, 0xdd, 0x77, 0x3d, 0xd2, 0x62, 0x57, 0x61, 0xe6, 0xd8, 0xc5, 0x6d, + 0x2b, 0x64, 0x29, 0xd6, 0x30, 0x32, 0x1c, 0x81, 0x8a, 0x8f, 0xce, 0x11, 0x68, 0xe8, 0x84, 0x8e, + 0x40, 0xc3, 0x03, 0x39, 0x02, 0x61, 0x78, 0x4c, 0x9e, 0xdd, 0xf4, 0xff, 0x9a, 0xeb, 0x11, 0x21, + 0xb0, 0x71, 0x77, 0xaf, 0xf9, 0xa3, 0xc3, 0xf2, 0x63, 0x38, 0x13, 0x03, 0xe7, 0xd4, 0x44, 0x5f, + 0x84, 0x39, 0xc7, 0xf3, 0x82, 0xfb, 0x6a, 0xd4, 0x56, 0xa3, 0x86, 0xe3, 0x25, 0xb1, 0xe5, 0xc7, + 0x96, 0x9f, 0x3c, 0x3a, 0x2c, 0xcf, 0x2d, 0xe5, 0xe0, 0xe0, 0xdc, 0xda, 0x29, 0x3f, 0xa2, 0xb1, + 0xbe, 0x7e, 0x44, 0xbb, 0x70, 0xae, 0x4e, 0x42, 0x99, 0x89, 0x56, 0x6d, 0xc9, 0x4d, 0x28, 0x85, + 0x29, 0x26, 0x34, 0x50, 0x0c, 0x18, 0x2d, 0x4e, 0xa8, 0x64, 0x3a, 0x09, 0x21, 0xfb, 0xcf, 0x2c, + 0x18, 0x15, 0x76, 0xe2, 0x67, 0x20, 0xfb, 0x2c, 0x19, 0xfa, 0xcb, 0x72, 0x36, 0xa3, 0x66, 0x9d, + 0xc9, 0xd5, 0x5c, 0x56, 0x53, 0x9a, 0xcb, 0xa7, 0x7b, 0x11, 0xe9, 0xad, 0xb3, 0xfc, 0xb1, 0x22, + 0x4c, 0x99, 0x36, 0xf2, 0x67, 0x30, 0x04, 0x1b, 0x30, 0x1a, 0x09, 0x87, 0x8c, 0x42, 0xbe, 0xe1, + 0x6c, 0x7a, 0x12, 0x13, 0xab, 0x18, 0xe1, 0x82, 0x21, 0x89, 0x64, 0x7a, 0x7a, 0x14, 0x1f, 0xa1, + 0xa7, 0x47, 0x3f, 0x37, 0x85, 0xa1, 0xd3, 0x70, 0x53, 0xb0, 0x7f, 0x95, 0x1d, 0x16, 0x7a, 0xf9, + 0x19, 0xc8, 0x11, 0xd7, 0xcd, 0x63, 0xc5, 0xee, 0xb1, 0xb2, 0x44, 0xa7, 0x72, 0xe4, 0x89, 0x7f, + 0x66, 0xc1, 0xb8, 0x40, 0x3c, 0x83, 0x6e, 0x7f, 0x87, 0xd9, 0xed, 0x27, 0x7a, 0x74, 0x3b, 0xa7, + 0xbf, 0xff, 0xa0, 0xa0, 0xfa, 0x5b, 0x0b, 0xc2, 0x78, 0xa0, 0xdc, 0x24, 0x63, 0xf4, 0xf6, 0x18, + 0x34, 0x02, 0x4f, 0x1c, 0xfe, 0x4f, 0x26, 0x1e, 0xc2, 0xbc, 0xfc, 0x58, 0xfb, 0x8d, 0x15, 0x36, + 0x73, 0x60, 0x0d, 0xc2, 0x58, 0x1c, 0xb8, 0x89, 0x03, 0x6b, 0x10, 0xc6, 0x98, 0x41, 0x50, 0x13, + 0x20, 0x76, 0xc2, 0x16, 0x89, 0x69, 0x99, 0x08, 0x36, 0x90, 0xbf, 0x0b, 0x3b, 0xb1, 0xeb, 0x2d, + 0xb8, 0x7e, 0x1c, 0xc5, 0xe1, 0x42, 0xd5, 0x8f, 0x6f, 0x87, 0xfc, 0x2e, 0xa1, 0xb9, 0xfc, 0x2a, + 0x5a, 0x58, 0xa3, 0x2b, 0x7d, 0xc8, 0x58, 0x1b, 0xc3, 0xe6, 0xc3, 0xe2, 0x86, 0x28, 0xc7, 0x0a, + 0xc3, 0x7e, 0x8d, 0xf1, 0x64, 0x36, 0x40, 0x27, 0xf3, 0xc6, 0xfd, 0xed, 0x31, 0x35, 0xb4, 0xec, + 0x55, 0xa1, 0xa2, 0xfb, 0xfc, 0xf6, 0x66, 0x81, 0xb4, 0x61, 0xdd, 0x1f, 0x21, 0x71, 0x0c, 0x46, + 0xdf, 0xd9, 0xf5, 0xde, 0xfc, 0x62, 0x1f, 0x5e, 0x7a, 0x82, 0x17, 0x66, 0x16, 0xe0, 0x96, 0x05, + 0x02, 0xad, 0xd6, 0xd2, 0xd9, 0x63, 0x56, 0x24, 0x00, 0x27, 0x38, 0x68, 0x51, 0xdc, 0x44, 0xb9, + 0x3e, 0xef, 0x89, 0xd4, 0x4d, 0x54, 0x7e, 0xbe, 0x76, 0x15, 0x7d, 0x09, 0xc6, 0x55, 0x46, 0xbe, + 0x1a, 0x4f, 0x6c, 0x26, 0x42, 0x2f, 0xac, 0x26, 0xc5, 0x58, 0xc7, 0x41, 0x9b, 0x30, 0x1d, 0xf1, + 0x74, 0x81, 0x2a, 0xc2, 0x16, 0xd7, 0x33, 0x3c, 0x27, 0xdf, 0xa9, 0xeb, 0x26, 0xf8, 0x98, 0x15, + 0xf1, 0xcd, 0x2a, 0x1d, 0xc1, 0xd2, 0x24, 0xd0, 0x9b, 0x30, 0xe5, 0xe9, 0x69, 0xd3, 0x6b, 0x42, + 0x0d, 0xa1, 0xcc, 0x38, 0x8d, 0xa4, 0xea, 0x35, 0x9c, 0xc2, 0xa6, 0x42, 0x83, 0x5e, 0x22, 0xa2, + 0xc2, 0x39, 0x7e, 0x8b, 0x44, 0x22, 0x9f, 0x18, 0x13, 0x1a, 0x6e, 0xe5, 0xe0, 0xe0, 0xdc, 0xda, + 0xe8, 0x75, 0x98, 0x90, 0x9f, 0xaf, 0xb9, 0x39, 0x26, 0xc6, 0xc2, 0x1a, 0x0c, 0x1b, 0x98, 0xe8, + 0x3e, 0x5c, 0x90, 0xff, 0x37, 0x43, 0x67, 0x7b, 0xdb, 0x6d, 0x08, 0x2f, 0x53, 0xee, 0x31, 0xb1, + 0x24, 0x5d, 0x30, 0x56, 0xb3, 0x90, 0x8e, 0x0f, 0xcb, 0x97, 0xc5, 0xa8, 0x65, 0xc2, 0xd9, 0x24, + 0x66, 0xd3, 0x47, 0xeb, 0x70, 0x6e, 0x87, 0x38, 0x5e, 0xbc, 0xb3, 0xb2, 0x43, 0x1a, 0xbb, 0x72, + 0x13, 0x31, 0xe7, 0x49, 0xcd, 0xc4, 0xf6, 0x46, 0x37, 0x0a, 0xce, 0xaa, 0x87, 0xde, 0x85, 0xb9, + 0x76, 0x67, 0xcb, 0x73, 0xa3, 0x9d, 0x8d, 0x20, 0x66, 0x4f, 0xe3, 0x2a, 0xa1, 0x9d, 0xf0, 0xb2, + 0x54, 0x8e, 0xa3, 0xb5, 0x1c, 0x3c, 0x9c, 0x4b, 0x01, 0x7d, 0x00, 0x17, 0x52, 0x8b, 0x41, 0xf8, + 0x7c, 0x4d, 0xe5, 0xc7, 0xd8, 0xac, 0x67, 0x55, 0x10, 0x3e, 0x5c, 0x59, 0x20, 0x9c, 0xdd, 0xc4, + 0x87, 0x33, 0x98, 0x78, 0x9f, 0x56, 0xd6, 0xa4, 0x1b, 0xf4, 0x15, 0x98, 0xd0, 0x57, 0x91, 0x38, + 0x60, 0xae, 0x64, 0x1f, 0xfe, 0xda, 0x6a, 0xe3, 0xb2, 0x91, 0x5a, 0x51, 0x3a, 0x0c, 0x1b, 0x14, + 0x6d, 0x02, 0xd9, 0xdf, 0x87, 0x6e, 0xc1, 0x58, 0xc3, 0x73, 0x89, 0x1f, 0x57, 0x6b, 0xbd, 0xa2, + 0x09, 0xac, 0x08, 0x1c, 0x31, 0x60, 0x22, 0x28, 0x21, 0x2f, 0xc3, 0x8a, 0x82, 0xfd, 0xeb, 0x05, + 0x28, 0xf7, 0x89, 0x70, 0x99, 0xd2, 0x19, 0x5a, 0x03, 0xe9, 0x0c, 0x97, 0x64, 0x7a, 0xbe, 0x8d, + 0xd4, 0x7d, 0x35, 0x95, 0x7a, 0x2f, 0xb9, 0xb5, 0xa6, 0xf1, 0x07, 0xb6, 0xb3, 0xd4, 0xd5, 0x8e, + 0x43, 0x7d, 0x2d, 0x80, 0x8d, 0xe7, 0x86, 0xe1, 0xc1, 0x25, 0xfa, 0x5c, 0xd5, 0xb1, 0xfd, 0xab, + 0x05, 0xb8, 0xa0, 0x86, 0xf0, 0xaf, 0xee, 0xc0, 0xdd, 0xe9, 0x1e, 0xb8, 0x53, 0x50, 0xbc, 0xdb, + 0xb7, 0x61, 0xa4, 0x7e, 0x10, 0x35, 0x62, 0x6f, 0x00, 0x01, 0xe8, 0x19, 0x33, 0xaa, 0x8e, 0x3a, + 0xa6, 0x8d, 0xc8, 0x3a, 0x7f, 0xd3, 0x82, 0xe9, 0xcd, 0x95, 0x5a, 0x3d, 0x68, 0xec, 0x92, 0x78, + 0x89, 0xab, 0x95, 0xb0, 0x90, 0x7f, 0xac, 0x87, 0x94, 0x6b, 0xb2, 0x24, 0xa6, 0xcb, 0x30, 0xb4, + 0x13, 0x44, 0x71, 0xfa, 0x55, 0xee, 0x46, 0x10, 0xc5, 0x98, 0x41, 0xec, 0xdf, 0xb7, 0x60, 0x98, + 0x25, 0x95, 0xed, 0x97, 0x7c, 0x78, 0x90, 0xef, 0x42, 0xaf, 0xc2, 0x08, 0xd9, 0xde, 0x26, 0x8d, + 0x58, 0xcc, 0xaa, 0x74, 0xeb, 0x1b, 0x59, 0x65, 0xa5, 0xf4, 0xd0, 0x67, 0x8d, 0xf1, 0xbf, 0x58, + 0x20, 0xa3, 0x7b, 0x50, 0x8a, 0xdd, 0x3d, 0xb2, 0xd4, 0x6c, 0x8a, 0x77, 0x8d, 0x87, 0xf0, 0xa2, + 0xdc, 0x94, 0x04, 0x70, 0x42, 0xcb, 0xfe, 0x5a, 0x01, 0x20, 0x71, 0x4d, 0xee, 0xf7, 0x89, 0xcb, + 0x5d, 0xf9, 0x95, 0xaf, 0x64, 0xe4, 0x57, 0x46, 0x09, 0xc1, 0x8c, 0xec, 0xca, 0x6a, 0x98, 0x8a, + 0x03, 0x0d, 0xd3, 0xd0, 0x49, 0x86, 0x69, 0x05, 0x66, 0x13, 0xd7, 0x6a, 0x33, 0xce, 0x04, 0x8b, + 0x78, 0xbf, 0x99, 0x06, 0xe2, 0x6e, 0x7c, 0xfb, 0x07, 0x2c, 0x10, 0xee, 0x09, 0x03, 0x2c, 0xe6, + 0x77, 0x64, 0x2a, 0x54, 0x23, 0x50, 0xee, 0xe5, 0x7c, 0x7f, 0x0d, 0x11, 0x1e, 0x57, 0x1d, 0x1e, + 0x46, 0x50, 0x5c, 0x83, 0x96, 0xdd, 0x04, 0x01, 0xad, 0x10, 0xa6, 0x64, 0xe8, 0xdf, 0x9b, 0x6b, + 0x00, 0x4d, 0x86, 0xab, 0xa5, 0x56, 0x54, 0xac, 0xaa, 0xa2, 0x20, 0x58, 0xc3, 0xb2, 0x7f, 0xa4, + 0x00, 0xe3, 0x32, 0x30, 0x2b, 0xbd, 0xc7, 0xf7, 0x6f, 0xe5, 0x44, 0x59, 0x19, 0x58, 0x2e, 0x52, + 0x4a, 0x58, 0x05, 0xef, 0xd7, 0x73, 0x91, 0x4a, 0x00, 0x4e, 0x70, 0xd0, 0xb3, 0x30, 0x1a, 0x75, + 0xb6, 0x18, 0x7a, 0xca, 0xe8, 0xbe, 0xce, 0x8b, 0xb1, 0x84, 0xa3, 0x2f, 0xc2, 0x0c, 0xaf, 0x17, + 0x06, 0x6d, 0xa7, 0xc5, 0x35, 0x4e, 0xc3, 0xca, 0x0b, 0x6e, 0x66, 0x3d, 0x05, 0x3b, 0x3e, 0x2c, + 0x9f, 0x4f, 0x97, 0x31, 0x5d, 0x65, 0x17, 0x15, 0xfb, 0x2b, 0x80, 0xba, 0x63, 0xcd, 0xa2, 0xb7, + 0xb8, 0x59, 0x85, 0x1b, 0x92, 0x66, 0x2f, 0x25, 0xa4, 0xee, 0xb4, 0x25, 0x0d, 0x5f, 0x79, 0x2d, + 0xac, 0xea, 0xd3, 0x9d, 0x37, 0x93, 0x76, 0xe1, 0x41, 0x37, 0x60, 0x84, 0x33, 0x55, 0x41, 0xbe, + 0xc7, 0x1b, 0x97, 0xe6, 0xf8, 0xc3, 0x02, 0xe1, 0x0b, 0xbe, 0x2c, 0xea, 0xa3, 0x77, 0x61, 0xbc, + 0x19, 0xdc, 0xf7, 0xef, 0x3b, 0x61, 0x73, 0xa9, 0x56, 0x15, 0xeb, 0x32, 0x53, 0x36, 0xab, 0x24, + 0x68, 0xba, 0x33, 0x11, 0xd3, 0xe7, 0x26, 0x20, 0xac, 0x93, 0x43, 0x9b, 0x2c, 0x7e, 0xd6, 0xb6, + 0xdb, 0x5a, 0x77, 0xda, 0xbd, 0xec, 0xe0, 0x56, 0x24, 0x92, 0x46, 0x79, 0x52, 0x04, 0xd9, 0xe2, + 0x00, 0x9c, 0x10, 0xb2, 0xbf, 0x7a, 0x0e, 0x8c, 0xfd, 0x60, 0xe4, 0x7d, 0xb0, 0x4e, 0x29, 0xef, + 0x03, 0x86, 0x31, 0xb2, 0xd7, 0x8e, 0x0f, 0x2a, 0x6e, 0xd8, 0x2b, 0x71, 0xd0, 0xaa, 0xc0, 0xe9, + 0xa6, 0x29, 0x21, 0x58, 0xd1, 0xc9, 0x4e, 0xce, 0x51, 0xfc, 0x08, 0x93, 0x73, 0x0c, 0x9d, 0x61, + 0x72, 0x8e, 0x0d, 0x18, 0x6d, 0xb9, 0x31, 0x26, 0xed, 0x40, 0x08, 0x14, 0x99, 0x2b, 0xe1, 0x3a, + 0x47, 0xe9, 0x0e, 0x0d, 0x2f, 0x00, 0x58, 0x12, 0x41, 0x6f, 0xa9, 0x3d, 0x30, 0x92, 0x2f, 0x8f, + 0x77, 0x3f, 0x87, 0x64, 0xee, 0x02, 0x91, 0x8c, 0x63, 0xf4, 0x61, 0x93, 0x71, 0xac, 0xc9, 0x14, + 0x1a, 0x63, 0xf9, 0x66, 0xa3, 0x2c, 0x43, 0x46, 0x9f, 0xc4, 0x19, 0x46, 0xb2, 0x91, 0xd2, 0xe9, + 0x25, 0x1b, 0xf9, 0x01, 0x0b, 0x2e, 0xb4, 0xb3, 0xf2, 0xee, 0x88, 0x14, 0x18, 0xaf, 0x0e, 0x9c, + 0x58, 0xc8, 0x68, 0x90, 0x5d, 0xcc, 0x32, 0xd1, 0x70, 0x76, 0x73, 0x74, 0xa0, 0xc3, 0xad, 0xa6, + 0xc8, 0x9b, 0xf1, 0x4c, 0x4e, 0xd6, 0x92, 0x1e, 0xb9, 0x4a, 0x36, 0x33, 0x72, 0x65, 0x7c, 0x32, + 0x2f, 0x57, 0xc6, 0xc0, 0x19, 0x32, 0x92, 0x7c, 0x25, 0x93, 0x1f, 0x3a, 0x5f, 0xc9, 0x5b, 0x2a, + 0x5f, 0x49, 0x8f, 0xa8, 0x43, 0x3c, 0x1b, 0x49, 0xdf, 0x2c, 0x25, 0x5a, 0xa6, 0x91, 0xe9, 0xd3, + 0xc9, 0x34, 0x62, 0x30, 0x7b, 0x9e, 0xec, 0xe2, 0xf9, 0x3e, 0xcc, 0xde, 0xa0, 0xdb, 0x9b, 0xdd, + 0xf3, 0xac, 0x2a, 0xb3, 0x0f, 0x95, 0x55, 0xe5, 0xae, 0x9e, 0xa5, 0x04, 0xf5, 0x49, 0xc3, 0x41, + 0x91, 0x06, 0xcc, 0x4d, 0x72, 0x57, 0x3f, 0x82, 0xce, 0xe5, 0xd3, 0x55, 0x27, 0x4d, 0x37, 0xdd, + 0xac, 0x43, 0xa8, 0x3b, 0xe7, 0xc9, 0xf9, 0xb3, 0xc9, 0x79, 0x72, 0xe1, 0xd4, 0x73, 0x9e, 0x3c, + 0x76, 0x06, 0x39, 0x4f, 0x1e, 0xff, 0x48, 0x73, 0x9e, 0xcc, 0x3d, 0x82, 0x9c, 0x27, 0x1b, 0x49, + 0xce, 0x93, 0x8b, 0xf9, 0x53, 0x92, 0x61, 0x27, 0x97, 0x93, 0xe9, 0xe4, 0x2e, 0x94, 0xda, 0xd2, + 0xcb, 0x5b, 0x84, 0x45, 0xca, 0x4e, 0xb6, 0x98, 0xe5, 0x0a, 0xce, 0xa7, 0x44, 0x81, 0x70, 0x42, + 0x8a, 0xd2, 0x4d, 0x32, 0x9f, 0x3c, 0xd1, 0x43, 0xf5, 0x96, 0xa5, 0xd4, 0xc8, 0xcf, 0x77, 0x62, + 0xff, 0xad, 0x02, 0x5c, 0xea, 0xbd, 0xae, 0x13, 0x8d, 0x48, 0x2d, 0xd1, 0xe0, 0xa7, 0x34, 0x22, + 0xfc, 0x9a, 0x91, 0x60, 0x0d, 0x1c, 0x0a, 0xe3, 0x3a, 0xcc, 0x2a, 0x03, 0x39, 0xcf, 0x6d, 0x1c, + 0x68, 0x49, 0x18, 0x95, 0xb3, 0x4e, 0x3d, 0x8d, 0x80, 0xbb, 0xeb, 0xa0, 0x25, 0x98, 0x36, 0x0a, + 0xab, 0x15, 0x71, 0x9d, 0x50, 0x2a, 0x98, 0xba, 0x09, 0xc6, 0x69, 0x7c, 0xfb, 0xeb, 0x16, 0x3c, + 0x9e, 0x13, 0x0e, 0x7c, 0xe0, 0x48, 0x0f, 0xdb, 0x30, 0xdd, 0x36, 0xab, 0xf6, 0x09, 0x08, 0x63, + 0x04, 0x1d, 0x57, 0x7d, 0x4d, 0x01, 0x70, 0x9a, 0xe8, 0xf2, 0xd5, 0xdf, 0xfc, 0xc3, 0x4b, 0x9f, + 0xf8, 0x9d, 0x3f, 0xbc, 0xf4, 0x89, 0xdf, 0xfb, 0xc3, 0x4b, 0x9f, 0xf8, 0xeb, 0x47, 0x97, 0xac, + 0xdf, 0x3c, 0xba, 0x64, 0xfd, 0xce, 0xd1, 0x25, 0xeb, 0xf7, 0x8e, 0x2e, 0x59, 0x7f, 0x70, 0x74, + 0xc9, 0xfa, 0xda, 0x1f, 0x5d, 0xfa, 0xc4, 0x3b, 0x85, 0xfd, 0x97, 0xfe, 0x7f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xcc, 0x93, 0x27, 0x7c, 0x56, 0xe4, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/core/v1/generated.proto b/vendor/k8s.io/api/core/v1/generated.proto index e5d8f74db..845db97b1 100644 --- a/vendor/k8s.io/api/core/v1/generated.proto +++ b/vendor/k8s.io/api/core/v1/generated.proto @@ -170,7 +170,7 @@ message Binding { optional ObjectReference target = 2; } -// Represents storage that is managed by an external CSI volume driver +// Represents storage that is managed by an external CSI volume driver (Beta feature) message CSIPersistentVolumeSource { // Driver is the name of the driver to use for this volume. // Required. @@ -191,6 +191,34 @@ message CSIPersistentVolumeSource { // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. // +optional optional string fsType = 4; + + // Attributes of the volume to publish. + // +optional + map volumeAttributes = 5; + + // ControllerPublishSecretRef is a reference to the secret object containing + // sensitive information to pass to the CSI driver to complete the CSI + // ControllerPublishVolume and ControllerUnpublishVolume calls. + // This field is optional, and may be empty if no secret is required. If the + // secret object contains more than one secret, all secrets are passed. + // +optional + optional SecretReference controllerPublishSecretRef = 6; + + // NodeStageSecretRef is a reference to the secret object containing sensitive + // information to pass to the CSI driver to complete the CSI NodeStageVolume + // and NodeStageVolume and NodeUnstageVolume calls. + // This field is optional, and may be empty if no secret is required. If the + // secret object contains more than one secret, all secrets are passed. + // +optional + optional SecretReference nodeStageSecretRef = 7; + + // NodePublishSecretRef is a reference to the secret object containing + // sensitive information to pass to the CSI driver to complete the CSI + // NodePublishVolume and NodeUnpublishVolume calls. + // This field is optional, and may be empty if no secret is required. If the + // secret object contains more than one secret, all secrets are passed. + // +optional + optional SecretReference nodePublishSecretRef = 8; } // Adds and removes POSIX capabilities from running containers. @@ -976,6 +1004,7 @@ message Endpoints { // subsets for the different ports. No address will appear in both Addresses and // NotReadyAddresses in the same subset. // Sets of addresses and ports that comprise a service. + // +optional repeated EndpointSubset subsets = 2; } @@ -992,7 +1021,7 @@ message EndpointsList { // EnvFromSource represents the source of a set of ConfigMaps message EnvFromSource { - // An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + // An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. // +optional optional string prefix = 1; @@ -1124,12 +1153,12 @@ message EventList { } // EventSeries contain information on series of events, i.e. thing that was/is happening -// continously for some time. +// continuously for some time. message EventSeries { // Number of occurrences in this series up to the last heartbeat time optional int32 count = 1; - // Time of the last occurence observed + // Time of the last occurrence observed optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2; // State of this Series: Ongoing or Finished @@ -2528,7 +2557,7 @@ message PersistentVolumeSource { // +optional optional StorageOSPersistentVolumeSource storageos = 21; - // CSI represents storage that handled by an external CSI driver + // CSI represents storage that handled by an external CSI driver (Beta feature). // +optional optional CSIPersistentVolumeSource csi = 22; } @@ -2556,8 +2585,9 @@ message PersistentVolumeSpec { optional ObjectReference claimRef = 4; // What happens to a persistent volume when released from its claim. - // Valid options are Retain (default) and Recycle. - // Recycling must be supported by the volume plugin underlying this persistent volume. + // Valid options are Retain (default for manually created PersistentVolumes), Delete (default + // for dynamically provisioned PersistentVolumes), and Recycle (deprecated). + // Recycle must be supported by the volume plugin underlying this PersistentVolume. // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming // +optional optional string persistentVolumeReclaimPolicy = 5; @@ -2578,6 +2608,11 @@ message PersistentVolumeSpec { // This is an alpha feature and may change in the future. // +optional optional string volumeMode = 8; + + // NodeAffinity defines constraints that limit what nodes this volume can be accessed from. + // This field influences the scheduling of pods that use this volume. + // +optional + optional VolumeNodeAffinity nodeAffinity = 9; } // PersistentVolumeStatus is the current status of a persistent volume. @@ -2929,6 +2964,14 @@ message PodSecurityContext { // +optional optional int64 runAsUser = 2; + // The GID to run the entrypoint of the container process. + // Uses runtime default if unset. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. + // +optional + optional int64 runAsGroup = 6; + // Indicates that the container must run as a non-root user. // If true, the Kubelet will validate the image at runtime to ensure that it // does not run as UID 0 (root) and fail to start the container if it does. @@ -3028,7 +3071,6 @@ message PodSpec { // DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. // To have DNS options set along with hostNetwork, you have to specify DNS policy // explicitly to 'ClusterFirstWithHostNet'. - // Note that 'None' policy is an alpha feature introduced in v1.9 and CustomPodDNS feature gate must be enabled to use it. // +optional optional string dnsPolicy = 6; @@ -3078,6 +3120,16 @@ message PodSpec { // +optional optional bool hostIPC = 13; + // Share a single process namespace between all of the containers in a pod. + // When this is set containers will be able to view and signal processes from other containers + // in the same pod, and the first process in each container will not be assigned PID 1. + // HostPID and ShareProcessNamespace cannot both be set. + // Optional: Default to false. + // This field is alpha-level and is honored only by servers that enable the PodShareProcessNamespace feature. + // +k8s:conversion-gen=false + // +optional + optional bool shareProcessNamespace = 27; + // SecurityContext holds pod-level security attributes and common container settings. // Optional: Defaults to empty. See type description for default values of each field. // +optional @@ -3142,7 +3194,6 @@ message PodSpec { // Specifies the DNS parameters of a pod. // Parameters specified here will be merged to the generated DNS // configuration based on DNSPolicy. - // This is an alpha feature introduced in v1.9 and CustomPodDNS feature gate must be enabled to use it. // +optional optional PodDNSConfig dnsConfig = 26; } @@ -3981,6 +4032,13 @@ message SecurityContext { // +optional optional int64 runAsUser = 4; + // The GID to run the entrypoint of the container process. + // Uses runtime default if unset. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + optional int64 runAsGroup = 8; + // Indicates that the container must run as a non-root user. // If true, the Kubelet will validate the image at runtime to ensure that it // does not run as UID 0 (root) and fail to start the container if it does. @@ -4451,12 +4509,17 @@ message VolumeMount { // mountPropagation determines how mounts are propagated from the host // to container and the other way around. // When not set, MountPropagationHostToContainer is used. - // This field is alpha in 1.8 and can be reworked or removed in a future - // release. + // This field is beta in 1.10. // +optional optional string mountPropagation = 5; } +// VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from. +message VolumeNodeAffinity { + // Required specifies hard node constraints that must be met. + optional NodeSelector required = 1; +} + // Projection that may be projected along with other supported volume types message VolumeProjection { // information about the secret data to project diff --git a/vendor/k8s.io/api/core/v1/types.go b/vendor/k8s.io/api/core/v1/types.go index d1b464fd4..08ef4194e 100644 --- a/vendor/k8s.io/api/core/v1/types.go +++ b/vendor/k8s.io/api/core/v1/types.go @@ -446,7 +446,7 @@ type PersistentVolumeSource struct { // More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md // +optional StorageOS *StorageOSPersistentVolumeSource `json:"storageos,omitempty" protobuf:"bytes,21,opt,name=storageos"` - // CSI represents storage that handled by an external CSI driver + // CSI represents storage that handled by an external CSI driver (Beta feature). // +optional CSI *CSIPersistentVolumeSource `json:"csi,omitempty" protobuf:"bytes,22,opt,name=csi"` } @@ -511,8 +511,9 @@ type PersistentVolumeSpec struct { // +optional ClaimRef *ObjectReference `json:"claimRef,omitempty" protobuf:"bytes,4,opt,name=claimRef"` // What happens to a persistent volume when released from its claim. - // Valid options are Retain (default) and Recycle. - // Recycling must be supported by the volume plugin underlying this persistent volume. + // Valid options are Retain (default for manually created PersistentVolumes), Delete (default + // for dynamically provisioned PersistentVolumes), and Recycle (deprecated). + // Recycle must be supported by the volume plugin underlying this PersistentVolume. // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming // +optional PersistentVolumeReclaimPolicy PersistentVolumeReclaimPolicy `json:"persistentVolumeReclaimPolicy,omitempty" protobuf:"bytes,5,opt,name=persistentVolumeReclaimPolicy,casttype=PersistentVolumeReclaimPolicy"` @@ -530,6 +531,16 @@ type PersistentVolumeSpec struct { // This is an alpha feature and may change in the future. // +optional VolumeMode *PersistentVolumeMode `json:"volumeMode,omitempty" protobuf:"bytes,8,opt,name=volumeMode,casttype=PersistentVolumeMode"` + // NodeAffinity defines constraints that limit what nodes this volume can be accessed from. + // This field influences the scheduling of pods that use this volume. + // +optional + NodeAffinity *VolumeNodeAffinity `json:"nodeAffinity,omitempty" protobuf:"bytes,9,opt,name=nodeAffinity"` +} + +// VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from. +type VolumeNodeAffinity struct { + // Required specifies hard node constraints that must be met. + Required *NodeSelector `json:"required,omitempty" protobuf:"bytes,1,opt,name=required"` } // PersistentVolumeReclaimPolicy describes a policy for end-of-life maintenance of persistent volumes. @@ -1010,8 +1021,8 @@ type FlockerVolumeSource struct { type StorageMedium string const ( - StorageMediumDefault StorageMedium = "" // use whatever the default is for the node - StorageMediumMemory StorageMedium = "Memory" // use memory (tmpfs) + StorageMediumDefault StorageMedium = "" // use whatever the default is for the node, assume anything we don't explicitly handle is this + StorageMediumMemory StorageMedium = "Memory" // use memory (e.g. tmpfs on linux) StorageMediumHugePages StorageMedium = "HugePages" // use hugepages ) @@ -1717,7 +1728,7 @@ type LocalVolumeSource struct { Path string `json:"path" protobuf:"bytes,1,opt,name=path"` } -// Represents storage that is managed by an external CSI volume driver +// Represents storage that is managed by an external CSI volume driver (Beta feature) type CSIPersistentVolumeSource struct { // Driver is the name of the driver to use for this volume. // Required. @@ -1738,6 +1749,34 @@ type CSIPersistentVolumeSource struct { // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. // +optional FSType string `json:"fsType,omitempty" protobuf:"bytes,4,opt,name=fsType"` + + // Attributes of the volume to publish. + // +optional + VolumeAttributes map[string]string `json:"volumeAttributes,omitempty" protobuf:"bytes,5,rep,name=volumeAttributes"` + + // ControllerPublishSecretRef is a reference to the secret object containing + // sensitive information to pass to the CSI driver to complete the CSI + // ControllerPublishVolume and ControllerUnpublishVolume calls. + // This field is optional, and may be empty if no secret is required. If the + // secret object contains more than one secret, all secrets are passed. + // +optional + ControllerPublishSecretRef *SecretReference `json:"controllerPublishSecretRef,omitempty" protobuf:"bytes,6,opt,name=controllerPublishSecretRef"` + + // NodeStageSecretRef is a reference to the secret object containing sensitive + // information to pass to the CSI driver to complete the CSI NodeStageVolume + // and NodeStageVolume and NodeUnstageVolume calls. + // This field is optional, and may be empty if no secret is required. If the + // secret object contains more than one secret, all secrets are passed. + // +optional + NodeStageSecretRef *SecretReference `json:"nodeStageSecretRef,omitempty" protobuf:"bytes,7,opt,name=nodeStageSecretRef"` + + // NodePublishSecretRef is a reference to the secret object containing + // sensitive information to pass to the CSI driver to complete the CSI + // NodePublishVolume and NodeUnpublishVolume calls. + // This field is optional, and may be empty if no secret is required. If the + // secret object contains more than one secret, all secrets are passed. + // +optional + NodePublishSecretRef *SecretReference `json:"nodePublishSecretRef,omitempty" protobuf:"bytes,8,opt,name=nodePublishSecretRef"` } // ContainerPort represents a network port in a single container. @@ -1783,8 +1822,7 @@ type VolumeMount struct { // mountPropagation determines how mounts are propagated from the host // to container and the other way around. // When not set, MountPropagationHostToContainer is used. - // This field is alpha in 1.8 and can be reworked or removed in a future - // release. + // This field is beta in 1.10. // +optional MountPropagation *MountPropagationMode `json:"mountPropagation,omitempty" protobuf:"bytes,5,opt,name=mountPropagation,casttype=MountPropagationMode"` } @@ -1901,7 +1939,7 @@ type SecretKeySelector struct { // EnvFromSource represents the source of a set of ConfigMaps type EnvFromSource struct { - // An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + // An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. // +optional Prefix string `json:"prefix,omitempty" protobuf:"bytes,1,opt,name=prefix"` // The ConfigMap to select from @@ -2808,7 +2846,6 @@ type PodSpec struct { // DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. // To have DNS options set along with hostNetwork, you have to specify DNS policy // explicitly to 'ClusterFirstWithHostNet'. - // Note that 'None' policy is an alpha feature introduced in v1.9 and CustomPodDNS feature gate must be enabled to use it. // +optional DNSPolicy DNSPolicy `json:"dnsPolicy,omitempty" protobuf:"bytes,6,opt,name=dnsPolicy,casttype=DNSPolicy"` // NodeSelector is a selector which must be true for the pod to fit on a node. @@ -2851,6 +2888,15 @@ type PodSpec struct { // +k8s:conversion-gen=false // +optional HostIPC bool `json:"hostIPC,omitempty" protobuf:"varint,13,opt,name=hostIPC"` + // Share a single process namespace between all of the containers in a pod. + // When this is set containers will be able to view and signal processes from other containers + // in the same pod, and the first process in each container will not be assigned PID 1. + // HostPID and ShareProcessNamespace cannot both be set. + // Optional: Default to false. + // This field is alpha-level and is honored only by servers that enable the PodShareProcessNamespace feature. + // +k8s:conversion-gen=false + // +optional + ShareProcessNamespace *bool `json:"shareProcessNamespace,omitempty" protobuf:"varint,27,opt,name=shareProcessNamespace"` // SecurityContext holds pod-level security attributes and common container settings. // Optional: Defaults to empty. See type description for default values of each field. // +optional @@ -2905,7 +2951,6 @@ type PodSpec struct { // Specifies the DNS parameters of a pod. // Parameters specified here will be merged to the generated DNS // configuration based on DNSPolicy. - // This is an alpha feature introduced in v1.9 and CustomPodDNS feature gate must be enabled to use it. // +optional DNSConfig *PodDNSConfig `json:"dnsConfig,omitempty" protobuf:"bytes,26,opt,name=dnsConfig"` } @@ -2937,6 +2982,13 @@ type PodSecurityContext struct { // for that container. // +optional RunAsUser *int64 `json:"runAsUser,omitempty" protobuf:"varint,2,opt,name=runAsUser"` + // The GID to run the entrypoint of the container process. + // Uses runtime default if unset. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. + // +optional + RunAsGroup *int64 `json:"runAsGroup,omitempty" protobuf:"varint,6,opt,name=runAsGroup"` // Indicates that the container must run as a non-root user. // If true, the Kubelet will validate the image at runtime to ensure that it // does not run as UID 0 (root) and fail to start the container if it does. @@ -3675,7 +3727,8 @@ type Endpoints struct { // subsets for the different ports. No address will appear in both Addresses and // NotReadyAddresses in the same subset. // Sets of addresses and ports that comprise a service. - Subsets []EndpointSubset `json:"subsets" protobuf:"bytes,2,rep,name=subsets"` + // +optional + Subsets []EndpointSubset `json:"subsets,omitempty" protobuf:"bytes,2,rep,name=subsets"` } // EndpointSubset is a group of addresses with a common set of ports. The @@ -3962,10 +4015,12 @@ const ( NodeMemoryPressure NodeConditionType = "MemoryPressure" // NodeDiskPressure means the kubelet is under pressure due to insufficient available disk. NodeDiskPressure NodeConditionType = "DiskPressure" + // NodePIDPressure means the kubelet is under pressure due to insufficient available PID. + NodePIDPressure NodeConditionType = "PIDPressure" // NodeNetworkUnavailable means that network for the node is not correctly configured. NodeNetworkUnavailable NodeConditionType = "NetworkUnavailable" - // NodeConfigOK indicates whether the kubelet is correctly configured - NodeConfigOK NodeConditionType = "ConfigOK" + // NodeKubeletConfigOk indicates whether the kubelet is correctly configured + NodeKubeletConfigOk NodeConditionType = "KubeletConfigOk" ) // NodeCondition contains condition information for a node. @@ -4583,11 +4638,11 @@ type Event struct { } // EventSeries contain information on series of events, i.e. thing that was/is happening -// continously for some time. +// continuously for some time. type EventSeries struct { // Number of occurrences in this series up to the last heartbeat time Count int32 `json:"count,omitempty" protobuf:"varint,1,name=count"` - // Time of the last occurence observed + // Time of the last occurrence observed LastObservedTime metav1.MicroTime `json:"lastObservedTime,omitempty" protobuf:"bytes,2,name=lastObservedTime"` // State of this Series: Ongoing or Finished State EventSeriesState `json:"state,omitempty" protobuf:"bytes,3,name=state"` @@ -4733,6 +4788,8 @@ const ( // HugePages request, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) // As burst is not supported for HugePages, we would only quota its request, and ignore the limit. ResourceRequestsHugePagesPrefix = "requests.hugepages-" + // Default resource requests prefix + DefaultResourceRequestsPrefix = "requests." ) // A ResourceQuotaScope defines a filter that must match each object tracked by a quota @@ -5114,6 +5171,12 @@ type SecurityContext struct { // PodSecurityContext, the value specified in SecurityContext takes precedence. // +optional RunAsUser *int64 `json:"runAsUser,omitempty" protobuf:"varint,4,opt,name=runAsUser"` + // The GID to run the entrypoint of the container process. + // Uses runtime default if unset. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + RunAsGroup *int64 `json:"runAsGroup,omitempty" protobuf:"varint,8,opt,name=runAsGroup"` // Indicates that the container must run as a non-root user. // If true, the Kubelet will validate the image at runtime to ensure that it // does not run as UID 0 (root) and fail to start the container if it does. diff --git a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go index 2c274b13d..7b41f018a 100644 --- a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go +++ b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go @@ -117,11 +117,15 @@ func (Binding) SwaggerDoc() map[string]string { } var map_CSIPersistentVolumeSource = map[string]string{ - "": "Represents storage that is managed by an external CSI volume driver", - "driver": "Driver is the name of the driver to use for this volume. Required.", - "volumeHandle": "VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.", - "readOnly": "Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).", - "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "": "Represents storage that is managed by an external CSI volume driver (Beta feature)", + "driver": "Driver is the name of the driver to use for this volume. Required.", + "volumeHandle": "VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.", + "readOnly": "Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "volumeAttributes": "Attributes of the volume to publish.", + "controllerPublishSecretRef": "ControllerPublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI ControllerPublishVolume and ControllerUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.", + "nodeStageSecretRef": "NodeStageSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeStageVolume and NodeStageVolume and NodeUnstageVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.", + "nodePublishSecretRef": "NodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.", } func (CSIPersistentVolumeSource) SwaggerDoc() map[string]string { @@ -510,7 +514,7 @@ func (EndpointsList) SwaggerDoc() map[string]string { var map_EnvFromSource = map[string]string{ "": "EnvFromSource represents the source of a set of ConfigMaps", - "prefix": "An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", + "prefix": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", "configMapRef": "The ConfigMap to select from", "secretRef": "The Secret to select from", } @@ -576,9 +580,9 @@ func (EventList) SwaggerDoc() map[string]string { } var map_EventSeries = map[string]string{ - "": "EventSeries contain information on series of events, i.e. thing that was/is happening continously for some time.", + "": "EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.", "count": "Number of occurrences in this series up to the last heartbeat time", - "lastObservedTime": "Time of the last occurence observed", + "lastObservedTime": "Time of the last occurrence observed", "state": "State of this Series: Ongoing or Finished", } @@ -1276,7 +1280,7 @@ var map_PersistentVolumeSource = map[string]string{ "scaleIO": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", "local": "Local represents directly-attached storage with node affinity", "storageos": "StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md", - "csi": "CSI represents storage that handled by an external CSI driver", + "csi": "CSI represents storage that handled by an external CSI driver (Beta feature).", } func (PersistentVolumeSource) SwaggerDoc() map[string]string { @@ -1288,10 +1292,11 @@ var map_PersistentVolumeSpec = map[string]string{ "capacity": "A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", "accessModes": "AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes", "claimRef": "ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding", - "persistentVolumeReclaimPolicy": "What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming", + "persistentVolumeReclaimPolicy": "What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming", "storageClassName": "Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.", "mountOptions": "A list of mount options, e.g. [\"ro\", \"soft\"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options", "volumeMode": "volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec. This is an alpha feature and may change in the future.", + "nodeAffinity": "NodeAffinity defines constraints that limit what nodes this volume can be accessed from. This field influences the scheduling of pods that use this volume.", } func (PersistentVolumeSpec) SwaggerDoc() map[string]string { @@ -1470,6 +1475,7 @@ var map_PodSecurityContext = map[string]string{ "": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", "seLinuxOptions": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "runAsGroup": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", "runAsNonRoot": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", "supplementalGroups": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", "fsGroup": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw ", @@ -1496,7 +1502,7 @@ var map_PodSpec = map[string]string{ "restartPolicy": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy", "terminationGracePeriodSeconds": "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.", "activeDeadlineSeconds": "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.", - "dnsPolicy": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. Note that 'None' policy is an alpha feature introduced in v1.9 and CustomPodDNS feature gate must be enabled to use it.", + "dnsPolicy": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", "nodeSelector": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", "serviceAccountName": "ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", "serviceAccount": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.", @@ -1505,6 +1511,7 @@ var map_PodSpec = map[string]string{ "hostNetwork": "Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", "hostPID": "Use the host's pid namespace. Optional: Default to false.", "hostIPC": "Use the host's ipc namespace. Optional: Default to false.", + "shareProcessNamespace": "Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is alpha-level and is honored only by servers that enable the PodShareProcessNamespace feature.", "securityContext": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.", "imagePullSecrets": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod", "hostname": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", @@ -1515,7 +1522,7 @@ var map_PodSpec = map[string]string{ "hostAliases": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", "priorityClassName": "If specified, indicates the pod's priority. \"system-node-critical\" and \"system-cluster-critical\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", "priority": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.", - "dnsConfig": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy. This is an alpha feature introduced in v1.9 and CustomPodDNS feature gate must be enabled to use it.", + "dnsConfig": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", } func (PodSpec) SwaggerDoc() map[string]string { @@ -1951,6 +1958,7 @@ var map_SecurityContext = map[string]string{ "privileged": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.", "seLinuxOptions": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "runAsGroup": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", "runAsNonRoot": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", "readOnlyRootFilesystem": "Whether this container has a read-only root filesystem. Default is false.", "allowPrivilegeEscalation": "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN", @@ -2169,13 +2177,22 @@ var map_VolumeMount = map[string]string{ "readOnly": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.", "mountPath": "Path within the container at which the volume should be mounted. Must not contain ':'.", "subPath": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).", - "mountPropagation": "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationHostToContainer is used. This field is alpha in 1.8 and can be reworked or removed in a future release.", + "mountPropagation": "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationHostToContainer is used. This field is beta in 1.10.", } func (VolumeMount) SwaggerDoc() map[string]string { return map_VolumeMount } +var map_VolumeNodeAffinity = map[string]string{ + "": "VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.", + "required": "Required specifies hard node constraints that must be met.", +} + +func (VolumeNodeAffinity) SwaggerDoc() map[string]string { + return map_VolumeNodeAffinity +} + var map_VolumeProjection = map[string]string{ "": "Projection that may be projected along with other supported volume types", "secret": "information about the secret data to project", diff --git a/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go index 50a44edcd..ebdcb890d 100644 --- a/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go @@ -16,12 +16,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// Code generated by deepcopy-gen. DO NOT EDIT. package v1 import ( - resource "k8s.io/apimachinery/pkg/api/resource" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" types "k8s.io/apimachinery/pkg/types" @@ -241,14 +240,47 @@ func (in *Binding) DeepCopy() *Binding { func (in *Binding) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CSIPersistentVolumeSource) DeepCopyInto(out *CSIPersistentVolumeSource) { *out = *in + if in.VolumeAttributes != nil { + in, out := &in.VolumeAttributes, &out.VolumeAttributes + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ControllerPublishSecretRef != nil { + in, out := &in.ControllerPublishSecretRef, &out.ControllerPublishSecretRef + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } + } + if in.NodeStageSecretRef != nil { + in, out := &in.NodeStageSecretRef, &out.NodeStageSecretRef + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } + } + if in.NodePublishSecretRef != nil { + in, out := &in.NodePublishSecretRef, &out.NodePublishSecretRef + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } + } return } @@ -432,9 +464,8 @@ func (in *ComponentStatus) DeepCopy() *ComponentStatus { func (in *ComponentStatus) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -466,9 +497,8 @@ func (in *ComponentStatusList) DeepCopy() *ComponentStatusList { func (in *ComponentStatusList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -512,9 +542,8 @@ func (in *ConfigMap) DeepCopy() *ConfigMap { func (in *ConfigMap) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -598,9 +627,8 @@ func (in *ConfigMapList) DeepCopy() *ConfigMapList { func (in *ConfigMapList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -994,9 +1022,8 @@ func (in *DeleteOptions) DeepCopy() *DeleteOptions { func (in *DeleteOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -1105,8 +1132,8 @@ func (in *EmptyDirVolumeSource) DeepCopyInto(out *EmptyDirVolumeSource) { if *in == nil { *out = nil } else { - *out = new(resource.Quantity) - **out = (*in).DeepCopy() + x := (*in).DeepCopy() + *out = &x } } return @@ -1236,9 +1263,8 @@ func (in *Endpoints) DeepCopy() *Endpoints { func (in *Endpoints) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -1270,9 +1296,8 @@ func (in *EndpointsList) DeepCopy() *EndpointsList { func (in *EndpointsList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -1431,9 +1456,8 @@ func (in *Event) DeepCopy() *Event { func (in *Event) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -1465,9 +1489,8 @@ func (in *EventList) DeepCopy() *EventList { func (in *EventList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -1974,9 +1997,8 @@ func (in *LimitRange) DeepCopy() *LimitRange { func (in *LimitRange) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2059,9 +2081,8 @@ func (in *LimitRangeList) DeepCopy() *LimitRangeList { func (in *LimitRangeList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2116,9 +2137,8 @@ func (in *List) DeepCopy() *List { func (in *List) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2151,9 +2171,8 @@ func (in *ListOptions) DeepCopy() *ListOptions { func (in *ListOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2265,9 +2284,8 @@ func (in *Namespace) DeepCopy() *Namespace { func (in *Namespace) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2299,9 +2317,8 @@ func (in *NamespaceList) DeepCopy() *NamespaceList { func (in *NamespaceList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2365,9 +2382,8 @@ func (in *Node) DeepCopy() *Node { func (in *Node) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2466,9 +2482,8 @@ func (in *NodeConfigSource) DeepCopy() *NodeConfigSource { func (in *NodeConfigSource) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2517,9 +2532,8 @@ func (in *NodeList) DeepCopy() *NodeList { func (in *NodeList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2543,9 +2557,8 @@ func (in *NodeProxyOptions) DeepCopy() *NodeProxyOptions { func (in *NodeProxyOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2772,8 +2785,7 @@ func (in *ObjectMeta) DeepCopyInto(out *ObjectMeta) { if *in == nil { *out = nil } else { - *out = new(meta_v1.Time) - (*in).DeepCopyInto(*out) + *out = (*in).DeepCopy() } } if in.DeletionGracePeriodSeconds != nil { @@ -2853,9 +2865,8 @@ func (in *ObjectReference) DeepCopy() *ObjectReference { func (in *ObjectReference) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2882,9 +2893,8 @@ func (in *PersistentVolume) DeepCopy() *PersistentVolume { func (in *PersistentVolume) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2911,9 +2921,8 @@ func (in *PersistentVolumeClaim) DeepCopy() *PersistentVolumeClaim { func (in *PersistentVolumeClaim) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2963,9 +2972,8 @@ func (in *PersistentVolumeClaimList) DeepCopy() *PersistentVolumeClaimList { func (in *PersistentVolumeClaimList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3097,9 +3105,8 @@ func (in *PersistentVolumeList) DeepCopy() *PersistentVolumeList { func (in *PersistentVolumeList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3300,7 +3307,7 @@ func (in *PersistentVolumeSource) DeepCopyInto(out *PersistentVolumeSource) { *out = nil } else { *out = new(CSIPersistentVolumeSource) - **out = **in + (*in).DeepCopyInto(*out) } } return @@ -3355,6 +3362,15 @@ func (in *PersistentVolumeSpec) DeepCopyInto(out *PersistentVolumeSpec) { **out = **in } } + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + if *in == nil { + *out = nil + } else { + *out = new(VolumeNodeAffinity) + (*in).DeepCopyInto(*out) + } + } return } @@ -3424,9 +3440,8 @@ func (in *Pod) DeepCopy() *Pod { func (in *Pod) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3540,9 +3555,8 @@ func (in *PodAttachOptions) DeepCopy() *PodAttachOptions { func (in *PodAttachOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3647,9 +3661,8 @@ func (in *PodExecOptions) DeepCopy() *PodExecOptions { func (in *PodExecOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3681,9 +3694,8 @@ func (in *PodList) DeepCopy() *PodList { func (in *PodList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3704,8 +3716,7 @@ func (in *PodLogOptions) DeepCopyInto(out *PodLogOptions) { if *in == nil { *out = nil } else { - *out = new(meta_v1.Time) - (*in).DeepCopyInto(*out) + *out = (*in).DeepCopy() } } if in.TailLines != nil { @@ -3743,9 +3754,8 @@ func (in *PodLogOptions) DeepCopy() *PodLogOptions { func (in *PodLogOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3774,9 +3784,8 @@ func (in *PodPortForwardOptions) DeepCopy() *PodPortForwardOptions { func (in *PodPortForwardOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3800,9 +3809,8 @@ func (in *PodProxyOptions) DeepCopy() *PodProxyOptions { func (in *PodProxyOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3826,6 +3834,15 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { **out = **in } } + if in.RunAsGroup != nil { + in, out := &in.RunAsGroup, &out.RunAsGroup + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } if in.RunAsNonRoot != nil { in, out := &in.RunAsNonRoot, &out.RunAsNonRoot if *in == nil { @@ -3945,6 +3962,15 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { **out = **in } } + if in.ShareProcessNamespace != nil { + in, out := &in.ShareProcessNamespace, &out.ShareProcessNamespace + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } if in.SecurityContext != nil { in, out := &in.SecurityContext, &out.SecurityContext if *in == nil { @@ -4028,8 +4054,7 @@ func (in *PodStatus) DeepCopyInto(out *PodStatus) { if *in == nil { *out = nil } else { - *out = new(meta_v1.Time) - (*in).DeepCopyInto(*out) + *out = (*in).DeepCopy() } } if in.InitContainerStatuses != nil { @@ -4082,9 +4107,8 @@ func (in *PodStatusResult) DeepCopy() *PodStatusResult { func (in *PodStatusResult) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4110,9 +4134,8 @@ func (in *PodTemplate) DeepCopy() *PodTemplate { func (in *PodTemplate) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4144,9 +4167,8 @@ func (in *PodTemplateList) DeepCopy() *PodTemplateList { func (in *PodTemplateList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4395,9 +4417,8 @@ func (in *RangeAllocation) DeepCopy() *RangeAllocation { func (in *RangeAllocation) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4424,9 +4445,8 @@ func (in *ReplicationController) DeepCopy() *ReplicationController { func (in *ReplicationController) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4475,9 +4495,8 @@ func (in *ReplicationControllerList) DeepCopy() *ReplicationControllerList { func (in *ReplicationControllerList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4561,6 +4580,28 @@ func (in *ResourceFieldSelector) DeepCopy() *ResourceFieldSelector { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in ResourceList) DeepCopyInto(out *ResourceList) { + { + in := &in + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + return + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceList. +func (in ResourceList) DeepCopy() ResourceList { + if in == nil { + return nil + } + out := new(ResourceList) + in.DeepCopyInto(out) + return *out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ResourceQuota) DeepCopyInto(out *ResourceQuota) { *out = *in @@ -4585,9 +4626,8 @@ func (in *ResourceQuota) DeepCopy() *ResourceQuota { func (in *ResourceQuota) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4619,9 +4659,8 @@ func (in *ResourceQuotaList) DeepCopy() *ResourceQuotaList { func (in *ResourceQuotaList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4819,9 +4858,8 @@ func (in *Secret) DeepCopy() *Secret { func (in *Secret) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4905,9 +4943,8 @@ func (in *SecretList) DeepCopy() *SecretList { func (in *SecretList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5039,6 +5076,15 @@ func (in *SecurityContext) DeepCopyInto(out *SecurityContext) { **out = **in } } + if in.RunAsGroup != nil { + in, out := &in.RunAsGroup, &out.RunAsGroup + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } if in.RunAsNonRoot != nil { in, out := &in.RunAsNonRoot, &out.RunAsNonRoot if *in == nil { @@ -5101,9 +5147,8 @@ func (in *SerializedReference) DeepCopy() *SerializedReference { func (in *SerializedReference) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5130,9 +5175,8 @@ func (in *Service) DeepCopy() *Service { func (in *Service) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5176,9 +5220,8 @@ func (in *ServiceAccount) DeepCopy() *ServiceAccount { func (in *ServiceAccount) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5210,9 +5253,8 @@ func (in *ServiceAccountList) DeepCopy() *ServiceAccountList { func (in *ServiceAccountList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5244,9 +5286,8 @@ func (in *ServiceList) DeepCopy() *ServiceList { func (in *ServiceList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5287,9 +5328,8 @@ func (in *ServiceProxyOptions) DeepCopy() *ServiceProxyOptions { func (in *ServiceProxyOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5472,8 +5512,7 @@ func (in *Taint) DeepCopyInto(out *Taint) { if *in == nil { *out = nil } else { - *out = new(meta_v1.Time) - (*in).DeepCopyInto(*out) + *out = (*in).DeepCopy() } } return @@ -5572,6 +5611,31 @@ func (in *VolumeMount) DeepCopy() *VolumeMount { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VolumeNodeAffinity) DeepCopyInto(out *VolumeNodeAffinity) { + *out = *in + if in.Required != nil { + in, out := &in.Required, &out.Required + if *in == nil { + *out = nil + } else { + *out = new(NodeSelector) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeNodeAffinity. +func (in *VolumeNodeAffinity) DeepCopy() *VolumeNodeAffinity { + if in == nil { + return nil + } + out := new(VolumeNodeAffinity) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VolumeProjection) DeepCopyInto(out *VolumeProjection) { *out = *in diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go index 6de71e508..083c82256 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto index 40185777e..31a46a6d3 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go index 186d9007e..ab4740790 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// Code generated by deepcopy-gen. DO NOT EDIT. package resource diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go index 247577b0c..a63b3fc2c 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by conversion-gen. Do not edit it manually! +// Code generated by conversion-gen. DO NOT EDIT. package internalversion diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go index 2bc1c3f96..77bd9a6b4 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// Code generated by deepcopy-gen. DO NOT EDIT. package internalversion @@ -57,9 +57,8 @@ func (in *List) DeepCopy() *List { func (in *List) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -102,7 +101,6 @@ func (in *ListOptions) DeepCopy() *ListOptions { func (in *ListOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go index 1fa478f5a..febace500 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto index bd5abcb79..e78380ab6 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go index caf929ee0..f91d8a81f 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go @@ -1,5 +1,5 @@ /* -Copyright 2016 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -26,7 +26,7 @@ package v1 // // Those methods can be generated by using hack/update-generated-swagger-docs.sh -// AUTO-GENERATED FUNCTIONS START HERE +// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT. var map_APIGroup = map[string]string{ "": "APIGroup contains the name, the supported versions, and the preferred version of a group.", "name": "name is the name of the group.", diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go index 2aa209025..98dfea095 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// Code generated by deepcopy-gen. DO NOT EDIT. package v1 @@ -57,9 +57,8 @@ func (in *APIGroup) DeepCopy() *APIGroup { func (in *APIGroup) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -90,9 +89,8 @@ func (in *APIGroupList) DeepCopy() *APIGroupList { func (in *APIGroupList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -154,9 +152,8 @@ func (in *APIResourceList) DeepCopy() *APIResourceList { func (in *APIResourceList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -190,9 +187,8 @@ func (in *APIVersions) DeepCopy() *APIVersions { func (in *APIVersions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -252,9 +248,8 @@ func (in *DeleteOptions) DeepCopy() *DeleteOptions { func (in *DeleteOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -294,9 +289,8 @@ func (in *ExportOptions) DeepCopy() *ExportOptions { func (in *ExportOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -320,9 +314,8 @@ func (in *GetOptions) DeepCopy() *GetOptions { func (in *GetOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -568,9 +561,8 @@ func (in *List) DeepCopy() *List { func (in *List) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -619,9 +611,8 @@ func (in *ListOptions) DeepCopy() *ListOptions { func (in *ListOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MicroTime. @@ -643,8 +634,7 @@ func (in *ObjectMeta) DeepCopyInto(out *ObjectMeta) { if *in == nil { *out = nil } else { - *out = new(Time) - (*in).DeepCopyInto(*out) + *out = (*in).DeepCopy() } } if in.DeletionGracePeriodSeconds != nil { @@ -847,9 +837,8 @@ func (in *Status) DeepCopy() *Status { func (in *Status) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -915,6 +904,26 @@ func (in *Timestamp) DeepCopy() *Timestamp { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in Verbs) DeepCopyInto(out *Verbs) { + { + in := &in + *out = make(Verbs, len(*in)) + copy(*out, *in) + return + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Verbs. +func (in Verbs) DeepCopy() Verbs { + if in == nil { + return nil + } + out := new(Verbs) + in.DeepCopyInto(out) + return *out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *WatchEvent) DeepCopyInto(out *WatchEvent) { *out = *in @@ -936,7 +945,6 @@ func (in *WatchEvent) DeepCopy() *WatchEvent { func (in *WatchEvent) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.defaults.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.defaults.go index 88d7af085..cce2e603a 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.defaults.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.defaults.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by defaulter-gen. Do not edit it manually! +// Code generated by defaulter-gen. DO NOT EDIT. package v1 diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go index dda05bea4..4e427b3b3 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto index a9060bf96..472902ad3 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/types_swagger_doc_generated.go index 2680fbf7e..235c2039d 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/types_swagger_doc_generated.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/types_swagger_doc_generated.go @@ -1,5 +1,5 @@ /* -Copyright 2016 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -26,7 +26,7 @@ package v1beta1 // // Those methods can be generated by using hack/update-generated-swagger-docs.sh -// AUTO-GENERATED FUNCTIONS START HERE +// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT. var map_PartialObjectMetadata = map[string]string{ "": "PartialObjectMetadata is a generic representation of any object with ObjectMeta. It allows clients to get access to a particular ObjectMeta schema without knowing the details of the version.", "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go index a1f58daa3..2e79a131f 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// Code generated by deepcopy-gen. DO NOT EDIT. package v1beta1 @@ -46,9 +46,8 @@ func (in *PartialObjectMetadata) DeepCopy() *PartialObjectMetadata { func (in *PartialObjectMetadata) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -84,9 +83,8 @@ func (in *PartialObjectMetadataList) DeepCopy() *PartialObjectMetadataList { func (in *PartialObjectMetadataList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -123,9 +121,8 @@ func (in *Table) DeepCopy() *Table { func (in *Table) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -165,9 +162,8 @@ func (in *TableOptions) DeepCopy() *TableOptions { func (in *TableOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.defaults.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.defaults.go index b61dda74c..73e63fc11 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.defaults.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.defaults.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by defaulter-gen. Do not edit it manually! +// Code generated by defaulter-gen. DO NOT EDIT. package v1beta1 diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert.go b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert.go index 17b366617..b3804aa42 100644 --- a/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert.go +++ b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert.go @@ -174,6 +174,9 @@ func convertStruct(result url.Values, st reflect.Type, sv reflect.Value) { kind = ft.Kind() if !field.IsNil() { field = reflect.Indirect(field) + // If the field is non-nil, it should be added to params + // and the omitempty should be overwite to false + omitempty = false } } diff --git a/vendor/k8s.io/apimachinery/pkg/fields/selector.go b/vendor/k8s.io/apimachinery/pkg/fields/selector.go index 273e9a2c1..3785d8c2f 100644 --- a/vendor/k8s.io/apimachinery/pkg/fields/selector.go +++ b/vendor/k8s.io/apimachinery/pkg/fields/selector.go @@ -396,7 +396,7 @@ const ( var termOperators = []string{notEqualOperator, doubleEqualOperator, equalOperator} // splitTerm returns the lhs, operator, and rhs parsed from the given term, along with an indicator of whether the parse was successful. -// no escaping of special characters is supported in the lhs value, so the first occurance of a recognized operator is used as the split point. +// no escaping of special characters is supported in the lhs value, so the first occurrence of a recognized operator is used as the split point. // the literal rhs is returned, and the caller is responsible for applying any desired unescaping. func splitTerm(term string) (lhs, op, rhs string, ok bool) { for i := range term { diff --git a/vendor/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go index d22cddbff..4d482947f 100644 --- a/vendor/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// Code generated by deepcopy-gen. DO NOT EDIT. package labels diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/codec.go b/vendor/k8s.io/apimachinery/pkg/runtime/codec.go index 5b3080aa5..10dc12cca 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/codec.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/codec.go @@ -281,7 +281,7 @@ func (disabledGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersi // GroupVersioners implements GroupVersioner and resolves to the first exact match for any kind. type GroupVersioners []GroupVersioner -// KindForGroupVersionKinds returns the first match of any of the group versioners, or false if no match occured. +// KindForGroupVersionKinds returns the first match of any of the group versioners, or false if no match occurred. func (gvs GroupVersioners) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) { for _, gv := range gvs { target, ok := gv.KindForGroupVersionKinds(kinds) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go index f561fd476..9bcbd7226 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto b/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto index 02e388e90..2ff383915 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go index 5357628ad..46c853661 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto index 50c2f2a63..8655f4818 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go b/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go index 1a9bba106..da642fa73 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go @@ -36,6 +36,21 @@ func ParseResourceArg(arg string) (*GroupVersionResource, GroupResource) { return gvr, ParseGroupResource(arg) } +// ParseKindArg takes the common style of string which may be either `Kind.group.com` or `Kind.version.group.com` +// and parses it out into both possibilities. This code takes no responsibility for knowing which representation was intended +// but with a knowledge of all GroupKinds, calling code can take a very good guess. If there are only two segments, then +// `*GroupVersionResource` is nil. +// `Kind.group.com` -> `group=com, version=group, kind=Kind` and `group=group.com, kind=Kind` +func ParseKindArg(arg string) (*GroupVersionKind, GroupKind) { + var gvk *GroupVersionKind + if strings.Count(arg, ".") >= 2 { + s := strings.SplitN(arg, ".", 3) + gvk = &GroupVersionKind{Group: s[2], Version: s[1], Kind: s[0]} + } + + return gvk, ParseGroupKind(arg) +} + // GroupResource specifies a Group and a Resource, but does not force a version. This is useful for identifying // concepts during lookup stages without having partially valid types type GroupResource struct { @@ -58,6 +73,15 @@ func (gr *GroupResource) String() string { return gr.Resource + "." + gr.Group } +func ParseGroupKind(gk string) GroupKind { + i := strings.Index(gk, ".") + if i == -1 { + return GroupKind{Kind: gk} + } + + return GroupKind{Group: gk[i+1:], Kind: gk[:i]} +} + // ParseGroupResource turns "resource.group" string into a GroupResource struct. Empty strings are allowed // for each field. func ParseGroupResource(gr string) GroupResource { diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go b/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go index 08b755381..3d94a3041 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go @@ -431,6 +431,7 @@ func (s *Scheme) Convert(in, out interface{}, context interface{}) error { return err } unstructuredOut.SetUnstructuredContent(content) + unstructuredOut.GetObjectKind().SetGroupVersionKind(gvk) return nil } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go index 82cf19ce1..167de6104 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// Code generated by deepcopy-gen. DO NOT EDIT. package runtime @@ -72,9 +72,8 @@ func (in *Unknown) DeepCopy() *Unknown { func (in *Unknown) DeepCopyObject() Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -108,7 +107,6 @@ func (in *VersionedObjects) DeepCopy() *VersionedObjects { func (in *VersionedObjects) DeepCopyObject() Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } diff --git a/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go b/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go index 26e7eb208..88e937679 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go +++ b/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go @@ -21,7 +21,7 @@ import ( "fmt" ) -// MessageCountMap contains occurance for each error message. +// MessageCountMap contains occurrence for each error message. type MessageCountMap map[string]int // Aggregate represents an object that contains multiple errors, but does not diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go index 161e9a6f8..5c2ac4f23 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto index 6819d468d..1c3ec732e 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/http.go b/vendor/k8s.io/apimachinery/pkg/util/net/http.go index bc2a531b9..76eb8b4fa 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/net/http.go +++ b/vendor/k8s.io/apimachinery/pkg/util/net/http.go @@ -61,6 +61,9 @@ func JoinPreservingTrailingSlash(elem ...string) string { // differentiate probable errors in connection behavior between normal "this is // disconnected" should use the method. func IsProbableEOF(err error) bool { + if err == nil { + return false + } if uerr, ok := err.(*url.Error); ok { err = uerr.Err } diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/port_range.go b/vendor/k8s.io/apimachinery/pkg/util/net/port_range.go index 6a50e6186..7b6eca893 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/net/port_range.go +++ b/vendor/k8s.io/apimachinery/pkg/util/net/port_range.go @@ -43,14 +43,19 @@ func (pr PortRange) String() string { return fmt.Sprintf("%d-%d", pr.Base, pr.Base+pr.Size-1) } -// Set parses a string of the form "min-max", inclusive at both ends, and +// Set parses a string of the form "value", "min-max", or "min+offset", inclusive at both ends, and // sets the PortRange from it. This is part of the flag.Value and pflag.Value // interfaces. func (pr *PortRange) Set(value string) error { - value = strings.TrimSpace(value) + const ( + SinglePortNotation = 1 << iota + HyphenNotation + PlusNotation + ) - // TODO: Accept "80" syntax - // TODO: Accept "80+8" syntax + value = strings.TrimSpace(value) + hyphenIndex := strings.Index(value, "-") + plusIndex := strings.Index(value, "+") if value == "" { pr.Base = 0 @@ -58,20 +63,51 @@ func (pr *PortRange) Set(value string) error { return nil } - hyphenIndex := strings.Index(value, "-") - if hyphenIndex == -1 { - return fmt.Errorf("expected hyphen in port range") + var err error + var low, high int + var notation int + + if plusIndex == -1 && hyphenIndex == -1 { + notation |= SinglePortNotation + } + if hyphenIndex != -1 { + notation |= HyphenNotation + } + if plusIndex != -1 { + notation |= PlusNotation } - var err error - var low int - var high int - low, err = strconv.Atoi(value[:hyphenIndex]) - if err == nil { + switch notation { + case SinglePortNotation: + var port int + port, err = strconv.Atoi(value) + if err != nil { + return err + } + low = port + high = port + case HyphenNotation: + low, err = strconv.Atoi(value[:hyphenIndex]) + if err != nil { + return err + } high, err = strconv.Atoi(value[hyphenIndex+1:]) - } - if err != nil { - return fmt.Errorf("unable to parse port range: %s: %v", value, err) + if err != nil { + return err + } + case PlusNotation: + var offset int + low, err = strconv.Atoi(value[:plusIndex]) + if err != nil { + return err + } + offset, err = strconv.Atoi(value[plusIndex+1:]) + if err != nil { + return err + } + high = low + offset + default: + return fmt.Errorf("unable to parse port range: %s", value) } if low > 65535 || high > 65535 { diff --git a/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go b/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go index 442dde7df..c3cb9c037 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go +++ b/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go @@ -43,7 +43,7 @@ var PanicHandlers = []func(interface{}){logPanic} // TODO: remove this function. We are switching to a world where it's safe for // apiserver to panic, since it will be restarted by kubelet. At the beginning // of the Kubernetes project, nothing was going to restart apiserver and so -// catching panics was important. But it's actually much simpler for montoring +// catching panics was important. But it's actually much simpler for monitoring // software if we just exit when an unexpected panic happens. func HandleCrash(additionalHandlers ...func(interface{})) { if r := recover(); r != nil { @@ -128,9 +128,8 @@ func (r *rudimentaryErrorBackoff) OnError(error) { r.lastErrorTimeLock.Lock() defer r.lastErrorTimeLock.Unlock() d := time.Since(r.lastErrorTime) - if d < r.minPeriod && d >= 0 { + if d < r.minPeriod { // If the time moves backwards for any reason, do nothing - // TODO: remove check "d >= 0" after go 1.8 is no longer supported time.Sleep(r.minPeriod - d) } r.lastErrorTime = time.Now() diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go b/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go index a460e4b1f..766f4501e 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go @@ -1,5 +1,5 @@ /* -Copyright 2017 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by set-gen. Do not edit it manually! +// Code generated by set-gen. DO NOT EDIT. package sets @@ -26,7 +26,7 @@ import ( // sets.Byte is a set of bytes, implemented via map[byte]struct{} for minimal memory consumption. type Byte map[byte]Empty -// New creates a Byte from a list of values. +// NewByte creates a Byte from a list of values. func NewByte(items ...byte) Byte { ss := Byte{} ss.Insert(items...) diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go b/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go index 28a6a7d5c..b152a0bf0 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2017 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by set-gen. Do not edit it manually! +// Code generated by set-gen. DO NOT EDIT. // Package sets has auto-generated set types. package sets diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/empty.go b/vendor/k8s.io/apimachinery/pkg/util/sets/empty.go index cd22b953a..e11e622c5 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/sets/empty.go +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/empty.go @@ -1,5 +1,5 @@ /* -Copyright 2017 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by set-gen. Do not edit it manually! +// Code generated by set-gen. DO NOT EDIT. package sets diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/int.go b/vendor/k8s.io/apimachinery/pkg/util/sets/int.go index 0614e9fb0..a0a513cd9 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/sets/int.go +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/int.go @@ -1,5 +1,5 @@ /* -Copyright 2017 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by set-gen. Do not edit it manually! +// Code generated by set-gen. DO NOT EDIT. package sets @@ -26,7 +26,7 @@ import ( // sets.Int is a set of ints, implemented via map[int]struct{} for minimal memory consumption. type Int map[int]Empty -// New creates a Int from a list of values. +// NewInt creates a Int from a list of values. func NewInt(items ...int) Int { ss := Int{} ss.Insert(items...) diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go b/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go index 82e1ba782..9ca9af0c5 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go @@ -1,5 +1,5 @@ /* -Copyright 2017 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by set-gen. Do not edit it manually! +// Code generated by set-gen. DO NOT EDIT. package sets @@ -26,7 +26,7 @@ import ( // sets.Int64 is a set of int64s, implemented via map[int64]struct{} for minimal memory consumption. type Int64 map[int64]Empty -// New creates a Int64 from a list of values. +// NewInt64 creates a Int64 from a list of values. func NewInt64(items ...int64) Int64 { ss := Int64{} ss.Insert(items...) diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/string.go b/vendor/k8s.io/apimachinery/pkg/util/sets/string.go index baef7a6a2..ba00ad7df 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/sets/string.go +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/string.go @@ -1,5 +1,5 @@ /* -Copyright 2017 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by set-gen. Do not edit it manually! +// Code generated by set-gen. DO NOT EDIT. package sets @@ -26,7 +26,7 @@ import ( // sets.String is a set of strings, implemented via map[string]struct{} for minimal memory consumption. type String map[string]Empty -// New creates a String from a list of values. +// NewString creates a String from a list of values. func NewString(items ...string) String { ss := String{} ss.Insert(items...) diff --git a/vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go index 738d0a29c..0d266ffb6 100644 --- a/vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2018 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// Code generated by deepcopy-gen. DO NOT EDIT. package watch diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/doc.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/doc.go new file mode 100644 index 000000000..d06482d55 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package +// +groupName=client.authentication.k8s.io +package clientauthentication // import "k8s.io/client-go/pkg/apis/clientauthentication" diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/register.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/register.go new file mode 100644 index 000000000..e4fbc3ea9 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/register.go @@ -0,0 +1,50 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientauthentication + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "client.authentication.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &ExecCredential{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/types.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/types.go new file mode 100644 index 000000000..5c05825f6 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/types.go @@ -0,0 +1,70 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientauthentication + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ExecCredentials is used by exec-based plugins to communicate credentials to +// HTTP transports. +type ExecCredential struct { + metav1.TypeMeta + + // Spec holds information passed to the plugin by the transport. This contains + // request and runtime specific information, such as if the session is interactive. + Spec ExecCredentialSpec + + // Status is filled in by the plugin and holds the credentials that the transport + // should use to contact the API. + // +optional + Status *ExecCredentialStatus +} + +// ExecCredenitalSpec holds request and runtime specific information provided by +// the transport. +type ExecCredentialSpec struct { + // Response is populated when the transport encounters HTTP status codes, such as 401, + // suggesting previous credentials were invalid. + // +optional + Response *Response + + // Interactive is true when the transport detects the command is being called from an + // interactive prompt. + // +optional + Interactive bool +} + +// ExecCredentialStatus holds credentials for the transport to use. +type ExecCredentialStatus struct { + // ExpirationTimestamp indicates a time when the provided credentials expire. + // +optional + ExpirationTimestamp *metav1.Time + // Token is a bearer token used by the client for request authentication. + Token string +} + +// Response defines metadata about a failed request, including HTTP status code and +// response headers. +type Response struct { + // Headers holds HTTP headers returned by the server. + Header map[string][]string + // Code is the HTTP status code returned by the server. + Code int32 +} diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/doc.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/doc.go new file mode 100644 index 000000000..016adb28a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/doc.go @@ -0,0 +1,23 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package +// +k8s:conversion-gen=k8s.io/client-go/pkg/apis/clientauthentication +// +k8s:openapi-gen=true +// +k8s:defaulter-gen=TypeMeta + +// +groupName=client.authentication.k8s.io +package v1alpha1 // import "k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1" diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/register.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/register.go new file mode 100644 index 000000000..2acd13dea --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/register.go @@ -0,0 +1,55 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "client.authentication.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes) +} + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &ExecCredential{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/types.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/types.go new file mode 100644 index 000000000..8920d3187 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/types.go @@ -0,0 +1,70 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ExecCredentials is used by exec-based plugins to communicate credentials to +// HTTP transports. +type ExecCredential struct { + metav1.TypeMeta `json:",inline"` + + // Spec holds information passed to the plugin by the transport. This contains + // request and runtime specific information, such as if the session is interactive. + Spec ExecCredentialSpec `json:"spec,omitempty"` + + // Status is filled in by the plugin and holds the credentials that the transport + // should use to contact the API. + // +optional + Status *ExecCredentialStatus `json:"status,omitempty"` +} + +// ExecCredenitalSpec holds request and runtime specific information provided by +// the transport. +type ExecCredentialSpec struct { + // Response is populated when the transport encounters HTTP status codes, such as 401, + // suggesting previous credentials were invalid. + // +optional + Response *Response `json:"response,omitempty"` + + // Interactive is true when the transport detects the command is being called from an + // interactive prompt. + // +optional + Interactive bool `json:"interactive,omitempty"` +} + +// ExecCredentialStatus holds credentials for the transport to use. +type ExecCredentialStatus struct { + // ExpirationTimestamp indicates a time when the provided credentials expire. + // +optional + ExpirationTimestamp *metav1.Time `json:"expirationTimestamp,omitempty"` + // Token is a bearer token used by the client for request authentication. + Token string `json:"token,omitempty"` +} + +// Response defines metadata about a failed request, including HTTP status code and +// response headers. +type Response struct { + // Header holds HTTP headers returned by the server. + Header map[string][]string `json:"header,omitempty"` + // Code is the HTTP status code returned by the server. + Code int32 `json:"code,omitempty"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.conversion.go new file mode 100644 index 000000000..bf28baef2 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.conversion.go @@ -0,0 +1,141 @@ +// +build !ignore_autogenerated + +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by conversion-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + unsafe "unsafe" + + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + clientauthentication "k8s.io/client-go/pkg/apis/clientauthentication" +) + +func init() { + localSchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1alpha1_ExecCredential_To_clientauthentication_ExecCredential, + Convert_clientauthentication_ExecCredential_To_v1alpha1_ExecCredential, + Convert_v1alpha1_ExecCredentialSpec_To_clientauthentication_ExecCredentialSpec, + Convert_clientauthentication_ExecCredentialSpec_To_v1alpha1_ExecCredentialSpec, + Convert_v1alpha1_ExecCredentialStatus_To_clientauthentication_ExecCredentialStatus, + Convert_clientauthentication_ExecCredentialStatus_To_v1alpha1_ExecCredentialStatus, + Convert_v1alpha1_Response_To_clientauthentication_Response, + Convert_clientauthentication_Response_To_v1alpha1_Response, + ) +} + +func autoConvert_v1alpha1_ExecCredential_To_clientauthentication_ExecCredential(in *ExecCredential, out *clientauthentication.ExecCredential, s conversion.Scope) error { + if err := Convert_v1alpha1_ExecCredentialSpec_To_clientauthentication_ExecCredentialSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + out.Status = (*clientauthentication.ExecCredentialStatus)(unsafe.Pointer(in.Status)) + return nil +} + +// Convert_v1alpha1_ExecCredential_To_clientauthentication_ExecCredential is an autogenerated conversion function. +func Convert_v1alpha1_ExecCredential_To_clientauthentication_ExecCredential(in *ExecCredential, out *clientauthentication.ExecCredential, s conversion.Scope) error { + return autoConvert_v1alpha1_ExecCredential_To_clientauthentication_ExecCredential(in, out, s) +} + +func autoConvert_clientauthentication_ExecCredential_To_v1alpha1_ExecCredential(in *clientauthentication.ExecCredential, out *ExecCredential, s conversion.Scope) error { + if err := Convert_clientauthentication_ExecCredentialSpec_To_v1alpha1_ExecCredentialSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + out.Status = (*ExecCredentialStatus)(unsafe.Pointer(in.Status)) + return nil +} + +// Convert_clientauthentication_ExecCredential_To_v1alpha1_ExecCredential is an autogenerated conversion function. +func Convert_clientauthentication_ExecCredential_To_v1alpha1_ExecCredential(in *clientauthentication.ExecCredential, out *ExecCredential, s conversion.Scope) error { + return autoConvert_clientauthentication_ExecCredential_To_v1alpha1_ExecCredential(in, out, s) +} + +func autoConvert_v1alpha1_ExecCredentialSpec_To_clientauthentication_ExecCredentialSpec(in *ExecCredentialSpec, out *clientauthentication.ExecCredentialSpec, s conversion.Scope) error { + out.Response = (*clientauthentication.Response)(unsafe.Pointer(in.Response)) + out.Interactive = in.Interactive + return nil +} + +// Convert_v1alpha1_ExecCredentialSpec_To_clientauthentication_ExecCredentialSpec is an autogenerated conversion function. +func Convert_v1alpha1_ExecCredentialSpec_To_clientauthentication_ExecCredentialSpec(in *ExecCredentialSpec, out *clientauthentication.ExecCredentialSpec, s conversion.Scope) error { + return autoConvert_v1alpha1_ExecCredentialSpec_To_clientauthentication_ExecCredentialSpec(in, out, s) +} + +func autoConvert_clientauthentication_ExecCredentialSpec_To_v1alpha1_ExecCredentialSpec(in *clientauthentication.ExecCredentialSpec, out *ExecCredentialSpec, s conversion.Scope) error { + out.Response = (*Response)(unsafe.Pointer(in.Response)) + out.Interactive = in.Interactive + return nil +} + +// Convert_clientauthentication_ExecCredentialSpec_To_v1alpha1_ExecCredentialSpec is an autogenerated conversion function. +func Convert_clientauthentication_ExecCredentialSpec_To_v1alpha1_ExecCredentialSpec(in *clientauthentication.ExecCredentialSpec, out *ExecCredentialSpec, s conversion.Scope) error { + return autoConvert_clientauthentication_ExecCredentialSpec_To_v1alpha1_ExecCredentialSpec(in, out, s) +} + +func autoConvert_v1alpha1_ExecCredentialStatus_To_clientauthentication_ExecCredentialStatus(in *ExecCredentialStatus, out *clientauthentication.ExecCredentialStatus, s conversion.Scope) error { + out.ExpirationTimestamp = (*v1.Time)(unsafe.Pointer(in.ExpirationTimestamp)) + out.Token = in.Token + return nil +} + +// Convert_v1alpha1_ExecCredentialStatus_To_clientauthentication_ExecCredentialStatus is an autogenerated conversion function. +func Convert_v1alpha1_ExecCredentialStatus_To_clientauthentication_ExecCredentialStatus(in *ExecCredentialStatus, out *clientauthentication.ExecCredentialStatus, s conversion.Scope) error { + return autoConvert_v1alpha1_ExecCredentialStatus_To_clientauthentication_ExecCredentialStatus(in, out, s) +} + +func autoConvert_clientauthentication_ExecCredentialStatus_To_v1alpha1_ExecCredentialStatus(in *clientauthentication.ExecCredentialStatus, out *ExecCredentialStatus, s conversion.Scope) error { + out.ExpirationTimestamp = (*v1.Time)(unsafe.Pointer(in.ExpirationTimestamp)) + out.Token = in.Token + return nil +} + +// Convert_clientauthentication_ExecCredentialStatus_To_v1alpha1_ExecCredentialStatus is an autogenerated conversion function. +func Convert_clientauthentication_ExecCredentialStatus_To_v1alpha1_ExecCredentialStatus(in *clientauthentication.ExecCredentialStatus, out *ExecCredentialStatus, s conversion.Scope) error { + return autoConvert_clientauthentication_ExecCredentialStatus_To_v1alpha1_ExecCredentialStatus(in, out, s) +} + +func autoConvert_v1alpha1_Response_To_clientauthentication_Response(in *Response, out *clientauthentication.Response, s conversion.Scope) error { + out.Header = *(*map[string][]string)(unsafe.Pointer(&in.Header)) + out.Code = in.Code + return nil +} + +// Convert_v1alpha1_Response_To_clientauthentication_Response is an autogenerated conversion function. +func Convert_v1alpha1_Response_To_clientauthentication_Response(in *Response, out *clientauthentication.Response, s conversion.Scope) error { + return autoConvert_v1alpha1_Response_To_clientauthentication_Response(in, out, s) +} + +func autoConvert_clientauthentication_Response_To_v1alpha1_Response(in *clientauthentication.Response, out *Response, s conversion.Scope) error { + out.Header = *(*map[string][]string)(unsafe.Pointer(&in.Header)) + out.Code = in.Code + return nil +} + +// Convert_clientauthentication_Response_To_v1alpha1_Response is an autogenerated conversion function. +func Convert_clientauthentication_Response_To_v1alpha1_Response(in *clientauthentication.Response, out *Response, s conversion.Scope) error { + return autoConvert_clientauthentication_Response_To_v1alpha1_Response(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 000000000..c6dbbce4d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,137 @@ +// +build !ignore_autogenerated + +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by deepcopy-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecCredential) DeepCopyInto(out *ExecCredential) { + *out = *in + out.TypeMeta = in.TypeMeta + in.Spec.DeepCopyInto(&out.Spec) + if in.Status != nil { + in, out := &in.Status, &out.Status + if *in == nil { + *out = nil + } else { + *out = new(ExecCredentialStatus) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecCredential. +func (in *ExecCredential) DeepCopy() *ExecCredential { + if in == nil { + return nil + } + out := new(ExecCredential) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExecCredential) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecCredentialSpec) DeepCopyInto(out *ExecCredentialSpec) { + *out = *in + if in.Response != nil { + in, out := &in.Response, &out.Response + if *in == nil { + *out = nil + } else { + *out = new(Response) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecCredentialSpec. +func (in *ExecCredentialSpec) DeepCopy() *ExecCredentialSpec { + if in == nil { + return nil + } + out := new(ExecCredentialSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecCredentialStatus) DeepCopyInto(out *ExecCredentialStatus) { + *out = *in + if in.ExpirationTimestamp != nil { + in, out := &in.ExpirationTimestamp, &out.ExpirationTimestamp + if *in == nil { + *out = nil + } else { + *out = (*in).DeepCopy() + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecCredentialStatus. +func (in *ExecCredentialStatus) DeepCopy() *ExecCredentialStatus { + if in == nil { + return nil + } + out := new(ExecCredentialStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Response) DeepCopyInto(out *Response) { + *out = *in + if in.Header != nil { + in, out := &in.Header, &out.Header + *out = make(map[string][]string, len(*in)) + for key, val := range *in { + if val == nil { + (*out)[key] = nil + } else { + (*out)[key] = make([]string, len(val)) + copy((*out)[key], val) + } + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Response. +func (in *Response) DeepCopy() *Response { + if in == nil { + return nil + } + out := new(Response) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.defaults.go new file mode 100644 index 000000000..2bd0078a3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.defaults.go @@ -0,0 +1,32 @@ +// +build !ignore_autogenerated + +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by defaulter-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/zz_generated.deepcopy.go new file mode 100644 index 000000000..f8b15d848 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/zz_generated.deepcopy.go @@ -0,0 +1,137 @@ +// +build !ignore_autogenerated + +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by deepcopy-gen. DO NOT EDIT. + +package clientauthentication + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecCredential) DeepCopyInto(out *ExecCredential) { + *out = *in + out.TypeMeta = in.TypeMeta + in.Spec.DeepCopyInto(&out.Spec) + if in.Status != nil { + in, out := &in.Status, &out.Status + if *in == nil { + *out = nil + } else { + *out = new(ExecCredentialStatus) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecCredential. +func (in *ExecCredential) DeepCopy() *ExecCredential { + if in == nil { + return nil + } + out := new(ExecCredential) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExecCredential) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecCredentialSpec) DeepCopyInto(out *ExecCredentialSpec) { + *out = *in + if in.Response != nil { + in, out := &in.Response, &out.Response + if *in == nil { + *out = nil + } else { + *out = new(Response) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecCredentialSpec. +func (in *ExecCredentialSpec) DeepCopy() *ExecCredentialSpec { + if in == nil { + return nil + } + out := new(ExecCredentialSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecCredentialStatus) DeepCopyInto(out *ExecCredentialStatus) { + *out = *in + if in.ExpirationTimestamp != nil { + in, out := &in.ExpirationTimestamp, &out.ExpirationTimestamp + if *in == nil { + *out = nil + } else { + *out = (*in).DeepCopy() + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecCredentialStatus. +func (in *ExecCredentialStatus) DeepCopy() *ExecCredentialStatus { + if in == nil { + return nil + } + out := new(ExecCredentialStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Response) DeepCopyInto(out *Response) { + *out = *in + if in.Header != nil { + in, out := &in.Header, &out.Header + *out = make(map[string][]string, len(*in)) + for key, val := range *in { + if val == nil { + (*out)[key] = nil + } else { + (*out)[key] = make([]string, len(val)) + copy((*out)[key], val) + } + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Response. +func (in *Response) DeepCopy() *Response { + if in == nil { + return nil + } + out := new(Response) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go b/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go new file mode 100644 index 000000000..dfd434d0c --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go @@ -0,0 +1,280 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package exec + +import ( + "bytes" + "fmt" + "io" + "net/http" + "os" + "os/exec" + "sync" + "time" + + "github.com/golang/glog" + "golang.org/x/crypto/ssh/terminal" + "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/pkg/apis/clientauthentication" + "k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1" + "k8s.io/client-go/tools/clientcmd/api" +) + +const execInfoEnv = "KUBERNETES_EXEC_INFO" + +var scheme = runtime.NewScheme() +var codecs = serializer.NewCodecFactory(scheme) + +func init() { + v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"}) + v1alpha1.AddToScheme(scheme) + clientauthentication.AddToScheme(scheme) +} + +var ( + // Since transports can be constantly re-initialized by programs like kubectl, + // keep a cache of initialized authenticators keyed by a hash of their config. + globalCache = newCache() + // The list of API versions we accept. + apiVersions = map[string]schema.GroupVersion{ + v1alpha1.SchemeGroupVersion.String(): v1alpha1.SchemeGroupVersion, + } +) + +func newCache() *cache { + return &cache{m: make(map[string]*Authenticator)} +} + +func cacheKey(c *api.ExecConfig) string { + return fmt.Sprintf("%#v", c) +} + +type cache struct { + mu sync.Mutex + m map[string]*Authenticator +} + +func (c *cache) get(s string) (*Authenticator, bool) { + c.mu.Lock() + defer c.mu.Unlock() + a, ok := c.m[s] + return a, ok +} + +// put inserts an authenticator into the cache. If an authenticator is already +// associated with the key, the first one is returned instead. +func (c *cache) put(s string, a *Authenticator) *Authenticator { + c.mu.Lock() + defer c.mu.Unlock() + existing, ok := c.m[s] + if ok { + return existing + } + c.m[s] = a + return a +} + +// GetAuthenticator returns an exec-based plugin for providing client credentials. +func GetAuthenticator(config *api.ExecConfig) (*Authenticator, error) { + return newAuthenticator(globalCache, config) +} + +func newAuthenticator(c *cache, config *api.ExecConfig) (*Authenticator, error) { + key := cacheKey(config) + if a, ok := c.get(key); ok { + return a, nil + } + + gv, ok := apiVersions[config.APIVersion] + if !ok { + return nil, fmt.Errorf("exec plugin: invalid apiVersion %q", config.APIVersion) + } + + a := &Authenticator{ + cmd: config.Command, + args: config.Args, + group: gv, + + stdin: os.Stdin, + stderr: os.Stderr, + interactive: terminal.IsTerminal(int(os.Stdout.Fd())), + now: time.Now, + environ: os.Environ, + } + + for _, env := range config.Env { + a.env = append(a.env, env.Name+"="+env.Value) + } + + return c.put(key, a), nil +} + +// Authenticator is a client credential provider that rotates credentials by executing a plugin. +// The plugin input and output are defined by the API group client.authentication.k8s.io. +type Authenticator struct { + // Set by the config + cmd string + args []string + group schema.GroupVersion + env []string + + // Stubbable for testing + stdin io.Reader + stderr io.Writer + interactive bool + now func() time.Time + environ func() []string + + // Cached results. + // + // The mutex also guards calling the plugin. Since the plugin could be + // interactive we want to make sure it's only called once. + mu sync.Mutex + cachedToken string + exp time.Time +} + +// WrapTransport instruments an existing http.RoundTripper with credentials returned +// by the plugin. +func (a *Authenticator) WrapTransport(rt http.RoundTripper) http.RoundTripper { + return &roundTripper{a, rt} +} + +type roundTripper struct { + a *Authenticator + base http.RoundTripper +} + +func (r *roundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + // If a user has already set credentials, use that. This makes commands like + // "kubectl get --token (token) pods" work. + if req.Header.Get("Authorization") != "" { + return r.base.RoundTrip(req) + } + + token, err := r.a.token() + if err != nil { + return nil, fmt.Errorf("getting token: %v", err) + } + req.Header.Set("Authorization", "Bearer "+token) + + res, err := r.base.RoundTrip(req) + if err != nil { + return nil, err + } + if res.StatusCode == http.StatusUnauthorized { + resp := &clientauthentication.Response{ + Header: res.Header, + Code: int32(res.StatusCode), + } + if err := r.a.refresh(token, resp); err != nil { + glog.Errorf("refreshing token: %v", err) + } + } + return res, nil +} + +func (a *Authenticator) tokenExpired() bool { + if a.exp.IsZero() { + return false + } + return a.now().After(a.exp) +} + +func (a *Authenticator) token() (string, error) { + a.mu.Lock() + defer a.mu.Unlock() + if a.cachedToken != "" && !a.tokenExpired() { + return a.cachedToken, nil + } + + return a.getToken(nil) +} + +// refresh executes the plugin to force a rotation of the token. +func (a *Authenticator) refresh(token string, r *clientauthentication.Response) error { + a.mu.Lock() + defer a.mu.Unlock() + + if token != a.cachedToken { + // Token already rotated. + return nil + } + + _, err := a.getToken(r) + return err +} + +// getToken executes the plugin and reads the credentials from stdout. It must be +// called while holding the Authenticator's mutex. +func (a *Authenticator) getToken(r *clientauthentication.Response) (string, error) { + cred := &clientauthentication.ExecCredential{ + Spec: clientauthentication.ExecCredentialSpec{ + Response: r, + Interactive: a.interactive, + }, + } + + data, err := runtime.Encode(codecs.LegacyCodec(a.group), cred) + if err != nil { + return "", fmt.Errorf("encode ExecCredentials: %v", err) + } + + env := append(a.environ(), a.env...) + env = append(env, fmt.Sprintf("%s=%s", execInfoEnv, data)) + + stdout := &bytes.Buffer{} + cmd := exec.Command(a.cmd, a.args...) + cmd.Env = env + cmd.Stderr = a.stderr + cmd.Stdout = stdout + if a.interactive { + cmd.Stdin = a.stdin + } + + if err := cmd.Run(); err != nil { + return "", fmt.Errorf("exec: %v", err) + } + + _, gvk, err := codecs.UniversalDecoder(a.group).Decode(stdout.Bytes(), nil, cred) + if err != nil { + return "", fmt.Errorf("decode stdout: %v", err) + } + if gvk.Group != a.group.Group || gvk.Version != a.group.Version { + return "", fmt.Errorf("exec plugin is configured to use API version %s, plugin returned version %s", + a.group, schema.GroupVersion{Group: gvk.Group, Version: gvk.Version}) + } + + if cred.Status == nil { + return "", fmt.Errorf("exec plugin didn't return a status field") + } + if cred.Status.Token == "" { + return "", fmt.Errorf("exec plugin didn't return a token") + } + + if cred.Status.ExpirationTimestamp != nil { + a.exp = cred.Status.ExpirationTimestamp.Time + } else { + a.exp = time.Time{} + } + a.cachedToken = cred.Status.Token + + return a.cachedToken, nil +} diff --git a/vendor/k8s.io/client-go/rest/config.go b/vendor/k8s.io/client-go/rest/config.go index c1a11b8f0..72a78bc0a 100644 --- a/vendor/k8s.io/client-go/rest/config.go +++ b/vendor/k8s.io/client-go/rest/config.go @@ -77,6 +77,9 @@ type Config struct { // Callback to persist config for AuthProvider. AuthConfigPersister AuthProviderConfigPersister + // Exec-based authentication provider. + ExecProvider *clientcmdapi.ExecConfig + // TLSClientConfig contains settings to enable transport layer security TLSClientConfig @@ -432,6 +435,7 @@ func CopyConfig(config *Config) *Config { }, AuthProvider: config.AuthProvider, AuthConfigPersister: config.AuthConfigPersister, + ExecProvider: config.ExecProvider, TLSClientConfig: TLSClientConfig{ Insecure: config.TLSClientConfig.Insecure, ServerName: config.TLSClientConfig.ServerName, diff --git a/vendor/k8s.io/client-go/rest/transport.go b/vendor/k8s.io/client-go/rest/transport.go index 878c6abf1..b6a067632 100644 --- a/vendor/k8s.io/client-go/rest/transport.go +++ b/vendor/k8s.io/client-go/rest/transport.go @@ -20,6 +20,7 @@ import ( "crypto/tls" "net/http" + "k8s.io/client-go/plugin/pkg/client/auth/exec" "k8s.io/client-go/transport" ) @@ -59,6 +60,20 @@ func HTTPWrappersForConfig(config *Config, rt http.RoundTripper) (http.RoundTrip // TransportConfig converts a client config to an appropriate transport config. func (c *Config) TransportConfig() (*transport.Config, error) { wt := c.WrapTransport + if c.ExecProvider != nil { + provider, err := exec.GetAuthenticator(c.ExecProvider) + if err != nil { + return nil, err + } + if wt != nil { + previousWT := wt + wt = func(rt http.RoundTripper) http.RoundTripper { + return provider.WrapTransport(previousWT(rt)) + } + } else { + wt = provider.WrapTransport + } + } if c.AuthProvider != nil { provider, err := GetAuthProvider(c.Host, c.AuthProvider, c.AuthConfigPersister) if err != nil { diff --git a/vendor/k8s.io/client-go/rest/versions.go b/vendor/k8s.io/client-go/rest/versions.go deleted file mode 100644 index 9d41812f2..000000000 --- a/vendor/k8s.io/client-go/rest/versions.go +++ /dev/null @@ -1,88 +0,0 @@ -/* -Copyright 2014 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package rest - -import ( - "encoding/json" - "fmt" - "net/http" - "path" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -const ( - legacyAPIPath = "/api" - defaultAPIPath = "/apis" -) - -// TODO: Is this obsoleted by the discovery client? - -// ServerAPIVersions returns the GroupVersions supported by the API server. -// It creates a RESTClient based on the passed in config, but it doesn't rely -// on the Version and Codec of the config, because it uses AbsPath and -// takes the raw response. -func ServerAPIVersions(c *Config) (groupVersions []string, err error) { - transport, err := TransportFor(c) - if err != nil { - return nil, err - } - client := http.Client{Transport: transport} - - configCopy := *c - configCopy.GroupVersion = nil - configCopy.APIPath = "" - baseURL, _, err := defaultServerUrlFor(&configCopy) - if err != nil { - return nil, err - } - // Get the groupVersions exposed at /api - originalPath := baseURL.Path - baseURL.Path = path.Join(originalPath, legacyAPIPath) - resp, err := client.Get(baseURL.String()) - if err != nil { - return nil, err - } - var v metav1.APIVersions - defer resp.Body.Close() - err = json.NewDecoder(resp.Body).Decode(&v) - if err != nil { - return nil, fmt.Errorf("unexpected error: %v", err) - } - - groupVersions = append(groupVersions, v.Versions...) - // Get the groupVersions exposed at /apis - baseURL.Path = path.Join(originalPath, defaultAPIPath) - resp2, err := client.Get(baseURL.String()) - if err != nil { - return nil, err - } - var apiGroupList metav1.APIGroupList - defer resp2.Body.Close() - err = json.NewDecoder(resp2.Body).Decode(&apiGroupList) - if err != nil { - return nil, fmt.Errorf("unexpected error: %v", err) - } - - for _, g := range apiGroupList.Groups { - for _, gv := range g.Versions { - groupVersions = append(groupVersions, gv.GroupVersion) - } - } - - return groupVersions, nil -} diff --git a/vendor/k8s.io/client-go/rest/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/rest/zz_generated.deepcopy.go index 02d3b606e..67568bf0b 100644 --- a/vendor/k8s.io/client-go/rest/zz_generated.deepcopy.go +++ b/vendor/k8s.io/client-go/rest/zz_generated.deepcopy.go @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// Code generated by deepcopy-gen. DO NOT EDIT. package rest diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/types.go b/vendor/k8s.io/client-go/tools/clientcmd/api/types.go index 407dec83a..1391df702 100644 --- a/vendor/k8s.io/client-go/tools/clientcmd/api/types.go +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/types.go @@ -119,6 +119,9 @@ type AuthInfo struct { // AuthProvider specifies a custom authentication plugin for the kubernetes cluster. // +optional AuthProvider *AuthProviderConfig `json:"auth-provider,omitempty"` + // Exec specifies a custom exec-based authentication plugin for the kubernetes cluster. + // +optional + Exec *ExecConfig `json:"exec,omitempty"` // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields // +optional Extensions map[string]runtime.Object `json:"extensions,omitempty"` @@ -147,6 +150,35 @@ type AuthProviderConfig struct { Config map[string]string `json:"config,omitempty"` } +// ExecConfig specifies a command to provide client credentials. The command is exec'd +// and outputs structured stdout holding credentials. +// +// See the client.authentiction.k8s.io API group for specifications of the exact input +// and output format +type ExecConfig struct { + // Command to execute. + Command string `json:"command"` + // Arguments to pass to the command when executing it. + // +optional + Args []string `json:"args"` + // Env defines additional environment variables to expose to the process. These + // are unioned with the host's environment, as well as variables client-go uses + // to pass argument to the plugin. + // +optional + Env []ExecEnvVar `json:"env"` + + // Preferred input version of the ExecInfo. The returned ExecCredentials MUST use + // the same encoding version as the input. + APIVersion string `json:"apiVersion,omitempty"` +} + +// ExecEnvVar is used for setting environment variables when executing an exec-based +// credential plugin. +type ExecEnvVar struct { + Name string `json:"name"` + Value string `json:"value"` +} + // NewConfig is a convenience function that returns a new Config object with non-nil maps func NewConfig() *Config { return &Config{ diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go index e575b23d7..085c088ee 100644 --- a/vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// Code generated by deepcopy-gen. DO NOT EDIT. package api @@ -63,6 +63,15 @@ func (in *AuthInfo) DeepCopyInto(out *AuthInfo) { (*in).DeepCopyInto(*out) } } + if in.Exec != nil { + in, out := &in.Exec, &out.Exec + if *in == nil { + *out = nil + } else { + *out = new(ExecConfig) + (*in).DeepCopyInto(*out) + } + } if in.Extensions != nil { in, out := &in.Extensions, &out.Extensions *out = make(map[string]runtime.Object, len(*in)) @@ -210,9 +219,8 @@ func (in *Config) DeepCopy() *Config { func (in *Config) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -242,6 +250,48 @@ func (in *Context) DeepCopy() *Context { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecConfig) DeepCopyInto(out *ExecConfig) { + *out = *in + if in.Args != nil { + in, out := &in.Args, &out.Args + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]ExecEnvVar, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecConfig. +func (in *ExecConfig) DeepCopy() *ExecConfig { + if in == nil { + return nil + } + out := new(ExecConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecEnvVar) DeepCopyInto(out *ExecEnvVar) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecEnvVar. +func (in *ExecEnvVar) DeepCopy() *ExecEnvVar { + if in == nil { + return nil + } + out := new(ExecEnvVar) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Preferences) DeepCopyInto(out *Preferences) { *out = *in diff --git a/vendor/k8s.io/client-go/util/cert/cert.go b/vendor/k8s.io/client-go/util/cert/cert.go index 2c95754c1..fb7f5facc 100644 --- a/vendor/k8s.io/client-go/util/cert/cert.go +++ b/vendor/k8s.io/client-go/util/cert/cert.go @@ -138,23 +138,50 @@ func MakeEllipticPrivateKeyPEM() ([]byte, error) { // Host may be an IP or a DNS name // You may also specify additional subject alt names (either ip or dns names) for the certificate func GenerateSelfSignedCertKey(host string, alternateIPs []net.IP, alternateDNS []string) ([]byte, []byte, error) { + caKey, err := rsa.GenerateKey(cryptorand.Reader, 2048) + if err != nil { + return nil, nil, err + } + + caTemplate := x509.Certificate{ + SerialNumber: big.NewInt(1), + Subject: pkix.Name{ + CommonName: fmt.Sprintf("%s-ca@%d", host, time.Now().Unix()), + }, + NotBefore: time.Now(), + NotAfter: time.Now().Add(time.Hour * 24 * 365), + + KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, + BasicConstraintsValid: true, + IsCA: true, + } + + caDERBytes, err := x509.CreateCertificate(cryptorand.Reader, &caTemplate, &caTemplate, &caKey.PublicKey, caKey) + if err != nil { + return nil, nil, err + } + + caCertificate, err := x509.ParseCertificate(caDERBytes) + if err != nil { + return nil, nil, err + } + priv, err := rsa.GenerateKey(cryptorand.Reader, 2048) if err != nil { return nil, nil, err } template := x509.Certificate{ - SerialNumber: big.NewInt(1), + SerialNumber: big.NewInt(2), Subject: pkix.Name{ CommonName: fmt.Sprintf("%s@%d", host, time.Now().Unix()), }, NotBefore: time.Now(), NotAfter: time.Now().Add(time.Hour * 24 * 365), - KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, + KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, BasicConstraintsValid: true, - IsCA: true, } if ip := net.ParseIP(host); ip != nil { @@ -166,16 +193,19 @@ func GenerateSelfSignedCertKey(host string, alternateIPs []net.IP, alternateDNS template.IPAddresses = append(template.IPAddresses, alternateIPs...) template.DNSNames = append(template.DNSNames, alternateDNS...) - derBytes, err := x509.CreateCertificate(cryptorand.Reader, &template, &template, &priv.PublicKey, priv) + derBytes, err := x509.CreateCertificate(cryptorand.Reader, &template, caCertificate, &priv.PublicKey, caKey) if err != nil { return nil, nil, err } - // Generate cert + // Generate cert, followed by ca certBuffer := bytes.Buffer{} if err := pem.Encode(&certBuffer, &pem.Block{Type: CertificateBlockType, Bytes: derBytes}); err != nil { return nil, nil, err } + if err := pem.Encode(&certBuffer, &pem.Block{Type: CertificateBlockType, Bytes: caDERBytes}); err != nil { + return nil, nil, err + } // Generate key keyBuffer := bytes.Buffer{} diff --git a/vendor/k8s.io/kubernetes/README.md b/vendor/k8s.io/kubernetes/README.md index 65cc9cb55..83e5deda7 100644 --- a/vendor/k8s.io/kubernetes/README.md +++ b/vendor/k8s.io/kubernetes/README.md @@ -68,10 +68,10 @@ That said, if you have questions, reach out to us [announcement]: https://cncf.io/news/announcement/2015/07/new-cloud-native-computing-foundation-drive-alignment-among-container [Borg]: https://research.google.com/pubs/pub43438.html [CNCF]: https://www.cncf.io/about -[communication]: https://github.com/kubernetes/community/blob/master/communication.md -[community repository]: https://github.com/kubernetes/community +[communication]: https://git.k8s.io/community/communication +[community repository]: https://git.k8s.io/community [containerized applications]: https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ -[developer's documentation]: https://github.com/kubernetes/community/tree/master/contributors/devel#readme +[developer's documentation]: https://git.k8s.io/community/contributors/devel#readme [Docker environment]: https://docs.docker.com/engine [Go environment]: https://golang.org/doc/install [GoDoc]: https://godoc.org/k8s.io/kubernetes diff --git a/vendor/k8s.io/kubernetes/pkg/apis/core/types.go b/vendor/k8s.io/kubernetes/pkg/apis/core/types.go index f6982d0d8..8b183deb7 100644 --- a/vendor/k8s.io/kubernetes/pkg/apis/core/types.go +++ b/vendor/k8s.io/kubernetes/pkg/apis/core/types.go @@ -391,7 +391,7 @@ type PersistentVolumeSource struct { // More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md // +optional StorageOS *StorageOSPersistentVolumeSource - // CSI (Container Storage Interface) represents storage that handled by an external CSI driver + // CSI (Container Storage Interface) represents storage that handled by an external CSI driver (Beta feature). // +optional CSI *CSIPersistentVolumeSource } @@ -467,6 +467,16 @@ type PersistentVolumeSpec struct { // This is an alpha feature and may change in the future. // +optional VolumeMode *PersistentVolumeMode + // NodeAffinity defines constraints that limit what nodes this volume can be accessed from. + // This field influences the scheduling of pods that use this volume. + // +optional + NodeAffinity *VolumeNodeAffinity +} + +// VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from. +type VolumeNodeAffinity struct { + // Required specifies hard node constraints that must be met. + Required *NodeSelector } // PersistentVolumeReclaimPolicy describes a policy for end-of-life maintenance of persistent volumes @@ -1603,7 +1613,7 @@ type LocalVolumeSource struct { Path string } -// Represents storage that is managed by an external CSI volume driver +// Represents storage that is managed by an external CSI volume driver (Beta feature) type CSIPersistentVolumeSource struct { // Driver is the name of the driver to use for this volume. // Required. @@ -1624,6 +1634,34 @@ type CSIPersistentVolumeSource struct { // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. // +optional FSType string + + // Attributes of the volume to publish. + // +optional + VolumeAttributes map[string]string + + // ControllerPublishSecretRef is a reference to the secret object containing + // sensitive information to pass to the CSI driver to complete the CSI + // ControllerPublishVolume and ControllerUnpublishVolume calls. + // This field is optional, and may be empty if no secret is required. If the + // secret object contains more than one secret, all secrets are passed. + // +optional + ControllerPublishSecretRef *SecretReference + + // NodeStageSecretRef is a reference to the secret object containing sensitive + // information to pass to the CSI driver to complete the CSI NodeStageVolume + // and NodeStageVolume and NodeUnstageVolume calls. + // This field is optional, and may be empty if no secret is required. If the + // secret object contains more than one secret, all secrets are passed. + // +optional + NodeStageSecretRef *SecretReference + + // NodePublishSecretRef is a reference to the secret object containing + // sensitive information to pass to the CSI driver to complete the CSI + // NodePublishVolume and NodeUnpublishVolume calls. + // This field is optional, and may be empty if no secret is required. If the + // secret object contains more than one secret, all secrets are passed. + // +optional + NodePublishSecretRef *SecretReference } // ContainerPort represents a network port in a single container @@ -1664,8 +1702,7 @@ type VolumeMount struct { // mountPropagation determines how mounts are propagated from the host // to container and the other way around. // When not set, MountPropagationHostToContainer is used. - // This field is alpha in 1.8 and can be reworked or removed in a future - // release. + // This field is beta in 1.10. // +optional MountPropagation *MountPropagationMode } @@ -2634,6 +2671,15 @@ type PodSecurityContext struct { // +k8s:conversion-gen=false // +optional HostIPC bool + // Share a single process namespace between all of the containers in a pod. + // When this is set containers will be able to view and signal processes from other containers + // in the same pod, and the first process in each container will not be assigned PID 1. + // HostPID and ShareProcessNamespace cannot both be set. + // Optional: Default to false. + // This field is alpha-level and is honored only by servers that enable the PodShareProcessNamespace feature. + // +k8s:conversion-gen=false + // +optional + ShareProcessNamespace *bool // The SELinux context to be applied to all containers. // If unspecified, the container runtime will allocate a random SELinux context for each // container. May also be set in SecurityContext. If set in @@ -2648,12 +2694,20 @@ type PodSecurityContext struct { // for that container. // +optional RunAsUser *int64 + // The GID to run the entrypoint of the container process. + // Uses runtime default if unset. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. + // +optional + RunAsGroup *int64 // Indicates that the container must run as a non-root user. // If true, the Kubelet will validate the image at runtime to ensure that it // does not run as UID 0 (root) and fail to start the container if it does. // If unset or false, no such validation will be performed. // May also be set in SecurityContext. If set in both SecurityContext and - // PodSecurityContext, the value specified in SecurityContext takes precedence. + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. // +optional RunAsNonRoot *bool // A list of groups applied to the first process run in each container, in addition @@ -3533,8 +3587,8 @@ const ( NodeDiskPressure NodeConditionType = "DiskPressure" // NodeNetworkUnavailable means that network for the node is not correctly configured. NodeNetworkUnavailable NodeConditionType = "NetworkUnavailable" - // NodeConfigOK indicates whether the kubelet is correctly configured - NodeConfigOK NodeConditionType = "ConfigOK" + // NodeKubeletConfigOk indicates whether the kubelet is correctly configured + NodeKubeletConfigOk NodeConditionType = "KubeletConfigOk" ) type NodeCondition struct { @@ -4065,7 +4119,7 @@ type Event struct { type EventSeries struct { // Number of occurrences in this series up to the last heartbeat time Count int32 - // Time of the last occurence observed + // Time of the last occurrence observed LastObservedTime metav1.MicroTime // State of this Series: Ongoing or Finished State EventSeriesState @@ -4202,6 +4256,8 @@ const ( // HugePages request, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) // As burst is not supported for HugePages, we would only quota its request, and ignore the limit. ResourceRequestsHugePagesPrefix = "requests.hugepages-" + // Default resource requests prefix + DefaultResourceRequestsPrefix = "requests." ) // A ResourceQuotaScope defines a filter that must match each object tracked by a quota @@ -4536,6 +4592,12 @@ type SecurityContext struct { // PodSecurityContext, the value specified in SecurityContext takes precedence. // +optional RunAsUser *int64 + // The GID to run the entrypoint of the container process. + // Uses runtime default if unset. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + RunAsGroup *int64 // Indicates that the container must run as a non-root user. // If true, the Kubelet will validate the image at runtime to ensure that it // does not run as UID 0 (root) and fail to start the container if it does. diff --git a/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go b/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go index 646f70d5a..35225755d 100644 --- a/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go +++ b/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go @@ -16,12 +16,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// Code generated by deepcopy-gen. DO NOT EDIT. package core import ( - resource "k8s.io/apimachinery/pkg/api/resource" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" types "k8s.io/apimachinery/pkg/types" @@ -241,14 +240,47 @@ func (in *Binding) DeepCopy() *Binding { func (in *Binding) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CSIPersistentVolumeSource) DeepCopyInto(out *CSIPersistentVolumeSource) { *out = *in + if in.VolumeAttributes != nil { + in, out := &in.VolumeAttributes, &out.VolumeAttributes + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ControllerPublishSecretRef != nil { + in, out := &in.ControllerPublishSecretRef, &out.ControllerPublishSecretRef + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } + } + if in.NodeStageSecretRef != nil { + in, out := &in.NodeStageSecretRef, &out.NodeStageSecretRef + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } + } + if in.NodePublishSecretRef != nil { + in, out := &in.NodePublishSecretRef, &out.NodePublishSecretRef + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } + } return } @@ -432,9 +464,8 @@ func (in *ComponentStatus) DeepCopy() *ComponentStatus { func (in *ComponentStatus) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -466,9 +497,8 @@ func (in *ComponentStatusList) DeepCopy() *ComponentStatusList { func (in *ComponentStatusList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -512,9 +542,8 @@ func (in *ConfigMap) DeepCopy() *ConfigMap { func (in *ConfigMap) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -598,9 +627,8 @@ func (in *ConfigMapList) DeepCopy() *ConfigMapList { func (in *ConfigMapList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -994,9 +1022,8 @@ func (in *DeleteOptions) DeepCopy() *DeleteOptions { func (in *DeleteOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -1105,8 +1132,8 @@ func (in *EmptyDirVolumeSource) DeepCopyInto(out *EmptyDirVolumeSource) { if *in == nil { *out = nil } else { - *out = new(resource.Quantity) - **out = (*in).DeepCopy() + x := (*in).DeepCopy() + *out = &x } } return @@ -1236,9 +1263,8 @@ func (in *Endpoints) DeepCopy() *Endpoints { func (in *Endpoints) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -1270,9 +1296,8 @@ func (in *EndpointsList) DeepCopy() *EndpointsList { func (in *EndpointsList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -1431,9 +1456,8 @@ func (in *Event) DeepCopy() *Event { func (in *Event) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -1465,9 +1489,8 @@ func (in *EventList) DeepCopy() *EventList { func (in *EventList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -1974,9 +1997,8 @@ func (in *LimitRange) DeepCopy() *LimitRange { func (in *LimitRange) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2059,9 +2081,8 @@ func (in *LimitRangeList) DeepCopy() *LimitRangeList { func (in *LimitRangeList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2120,9 +2141,8 @@ func (in *List) DeepCopy() *List { func (in *List) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2165,9 +2185,8 @@ func (in *ListOptions) DeepCopy() *ListOptions { func (in *ListOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2279,9 +2298,8 @@ func (in *Namespace) DeepCopy() *Namespace { func (in *Namespace) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2313,9 +2331,8 @@ func (in *NamespaceList) DeepCopy() *NamespaceList { func (in *NamespaceList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2379,9 +2396,8 @@ func (in *Node) DeepCopy() *Node { func (in *Node) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2480,9 +2496,8 @@ func (in *NodeConfigSource) DeepCopy() *NodeConfigSource { func (in *NodeConfigSource) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2531,9 +2546,8 @@ func (in *NodeList) DeepCopy() *NodeList { func (in *NodeList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2557,9 +2571,8 @@ func (in *NodeProxyOptions) DeepCopy() *NodeProxyOptions { func (in *NodeProxyOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2786,8 +2799,7 @@ func (in *ObjectMeta) DeepCopyInto(out *ObjectMeta) { if *in == nil { *out = nil } else { - *out = new(v1.Time) - (*in).DeepCopyInto(*out) + *out = (*in).DeepCopy() } } if in.DeletionGracePeriodSeconds != nil { @@ -2867,9 +2879,8 @@ func (in *ObjectReference) DeepCopy() *ObjectReference { func (in *ObjectReference) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2896,9 +2907,8 @@ func (in *PersistentVolume) DeepCopy() *PersistentVolume { func (in *PersistentVolume) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2925,9 +2935,8 @@ func (in *PersistentVolumeClaim) DeepCopy() *PersistentVolumeClaim { func (in *PersistentVolumeClaim) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -2977,9 +2986,8 @@ func (in *PersistentVolumeClaimList) DeepCopy() *PersistentVolumeClaimList { func (in *PersistentVolumeClaimList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3111,9 +3119,8 @@ func (in *PersistentVolumeList) DeepCopy() *PersistentVolumeList { func (in *PersistentVolumeList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3314,7 +3321,7 @@ func (in *PersistentVolumeSource) DeepCopyInto(out *PersistentVolumeSource) { *out = nil } else { *out = new(CSIPersistentVolumeSource) - **out = **in + (*in).DeepCopyInto(*out) } } return @@ -3369,6 +3376,15 @@ func (in *PersistentVolumeSpec) DeepCopyInto(out *PersistentVolumeSpec) { **out = **in } } + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + if *in == nil { + *out = nil + } else { + *out = new(VolumeNodeAffinity) + (*in).DeepCopyInto(*out) + } + } return } @@ -3438,9 +3454,8 @@ func (in *Pod) DeepCopy() *Pod { func (in *Pod) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3554,9 +3569,8 @@ func (in *PodAttachOptions) DeepCopy() *PodAttachOptions { func (in *PodAttachOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3661,9 +3675,8 @@ func (in *PodExecOptions) DeepCopy() *PodExecOptions { func (in *PodExecOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3695,9 +3708,8 @@ func (in *PodList) DeepCopy() *PodList { func (in *PodList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3718,8 +3730,7 @@ func (in *PodLogOptions) DeepCopyInto(out *PodLogOptions) { if *in == nil { *out = nil } else { - *out = new(v1.Time) - (*in).DeepCopyInto(*out) + *out = (*in).DeepCopy() } } if in.TailLines != nil { @@ -3757,9 +3768,8 @@ func (in *PodLogOptions) DeepCopy() *PodLogOptions { func (in *PodLogOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3788,9 +3798,8 @@ func (in *PodPortForwardOptions) DeepCopy() *PodPortForwardOptions { func (in *PodPortForwardOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -3814,14 +3823,22 @@ func (in *PodProxyOptions) DeepCopy() *PodProxyOptions { func (in *PodProxyOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { *out = *in + if in.ShareProcessNamespace != nil { + in, out := &in.ShareProcessNamespace, &out.ShareProcessNamespace + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions if *in == nil { @@ -3840,6 +3857,15 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { **out = **in } } + if in.RunAsGroup != nil { + in, out := &in.RunAsGroup, &out.RunAsGroup + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } if in.RunAsNonRoot != nil { in, out := &in.RunAsNonRoot, &out.RunAsNonRoot if *in == nil { @@ -4042,8 +4068,7 @@ func (in *PodStatus) DeepCopyInto(out *PodStatus) { if *in == nil { *out = nil } else { - *out = new(v1.Time) - (*in).DeepCopyInto(*out) + *out = (*in).DeepCopy() } } if in.InitContainerStatuses != nil { @@ -4096,9 +4121,8 @@ func (in *PodStatusResult) DeepCopy() *PodStatusResult { func (in *PodStatusResult) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4124,9 +4148,8 @@ func (in *PodTemplate) DeepCopy() *PodTemplate { func (in *PodTemplate) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4158,9 +4181,8 @@ func (in *PodTemplateList) DeepCopy() *PodTemplateList { func (in *PodTemplateList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4409,9 +4431,8 @@ func (in *RangeAllocation) DeepCopy() *RangeAllocation { func (in *RangeAllocation) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4438,9 +4459,8 @@ func (in *ReplicationController) DeepCopy() *ReplicationController { func (in *ReplicationController) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4489,9 +4509,8 @@ func (in *ReplicationControllerList) DeepCopy() *ReplicationControllerList { func (in *ReplicationControllerList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4566,6 +4585,28 @@ func (in *ResourceFieldSelector) DeepCopy() *ResourceFieldSelector { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in ResourceList) DeepCopyInto(out *ResourceList) { + { + in := &in + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + return + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceList. +func (in ResourceList) DeepCopy() ResourceList { + if in == nil { + return nil + } + out := new(ResourceList) + in.DeepCopyInto(out) + return *out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ResourceQuota) DeepCopyInto(out *ResourceQuota) { *out = *in @@ -4590,9 +4631,8 @@ func (in *ResourceQuota) DeepCopy() *ResourceQuota { func (in *ResourceQuota) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4624,9 +4664,8 @@ func (in *ResourceQuotaList) DeepCopy() *ResourceQuotaList { func (in *ResourceQuotaList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4817,9 +4856,8 @@ func (in *Secret) DeepCopy() *Secret { func (in *Secret) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -4903,9 +4941,8 @@ func (in *SecretList) DeepCopy() *SecretList { func (in *SecretList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5037,6 +5074,15 @@ func (in *SecurityContext) DeepCopyInto(out *SecurityContext) { **out = **in } } + if in.RunAsGroup != nil { + in, out := &in.RunAsGroup, &out.RunAsGroup + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } if in.RunAsNonRoot != nil { in, out := &in.RunAsNonRoot, &out.RunAsNonRoot if *in == nil { @@ -5099,9 +5145,8 @@ func (in *SerializedReference) DeepCopy() *SerializedReference { func (in *SerializedReference) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5128,9 +5173,8 @@ func (in *Service) DeepCopy() *Service { func (in *Service) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5174,9 +5218,8 @@ func (in *ServiceAccount) DeepCopy() *ServiceAccount { func (in *ServiceAccount) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5208,9 +5251,8 @@ func (in *ServiceAccountList) DeepCopy() *ServiceAccountList { func (in *ServiceAccountList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5242,9 +5284,8 @@ func (in *ServiceList) DeepCopy() *ServiceList { func (in *ServiceList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5285,9 +5326,8 @@ func (in *ServiceProxyOptions) DeepCopy() *ServiceProxyOptions { func (in *ServiceProxyOptions) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c - } else { - return nil } + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -5470,8 +5510,7 @@ func (in *Taint) DeepCopyInto(out *Taint) { if *in == nil { *out = nil } else { - *out = new(v1.Time) - (*in).DeepCopyInto(*out) + *out = (*in).DeepCopy() } } return @@ -5570,6 +5609,31 @@ func (in *VolumeMount) DeepCopy() *VolumeMount { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VolumeNodeAffinity) DeepCopyInto(out *VolumeNodeAffinity) { + *out = *in + if in.Required != nil { + in, out := &in.Required, &out.Required + if *in == nil { + *out = nil + } else { + *out = new(NodeSelector) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeNodeAffinity. +func (in *VolumeNodeAffinity) DeepCopy() *VolumeNodeAffinity { + if in == nil { + return nil + } + out := new(VolumeNodeAffinity) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VolumeProjection) DeepCopyInto(out *VolumeProjection) { *out = *in diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.pb.go b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.pb.go index 79aea6410..82e5a5e5e 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.pb.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.pb.go @@ -555,6 +555,8 @@ type LinuxSandboxSecurityContext struct { SelinuxOptions *SELinuxOption `protobuf:"bytes,2,opt,name=selinux_options,json=selinuxOptions" json:"selinux_options,omitempty"` // UID to run sandbox processes as, when applicable. RunAsUser *Int64Value `protobuf:"bytes,3,opt,name=run_as_user,json=runAsUser" json:"run_as_user,omitempty"` + // GID to run sandbox processes as, when applicable. + RunAsGroup *Int64Value `protobuf:"bytes,8,opt,name=run_as_group,json=runAsGroup" json:"run_as_group,omitempty"` // If set, the root filesystem of the sandbox is read-only. ReadonlyRootfs bool `protobuf:"varint,4,opt,name=readonly_rootfs,json=readonlyRootfs,proto3" json:"readonly_rootfs,omitempty"` // List of groups applied to the first process run in the sandbox, in @@ -600,6 +602,13 @@ func (m *LinuxSandboxSecurityContext) GetRunAsUser() *Int64Value { return nil } +func (m *LinuxSandboxSecurityContext) GetRunAsGroup() *Int64Value { + if m != nil { + return m.RunAsGroup + } + return nil +} + func (m *LinuxSandboxSecurityContext) GetReadonlyRootfs() bool { if m != nil { return m.ReadonlyRootfs @@ -1066,7 +1075,7 @@ func (m *PodSandboxStatus) GetAnnotations() map[string]string { type PodSandboxStatusResponse struct { // Status of the PodSandbox. Status *PodSandboxStatus `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` - // Info is extra information of the PodSandbox. The key could be abitrary string, and + // Info is extra information of the PodSandbox. The key could be arbitrary string, and // value should be in json format. The information could include anything useful for // debug, e.g. network namespace for linux container based container runtime. // It should only be returned non-empty when Verbose is true. @@ -1454,6 +1463,9 @@ type LinuxContainerSecurityContext struct { // UID to run the container process as. Only one of run_as_user and // run_as_username can be specified at a time. RunAsUser *Int64Value `protobuf:"bytes,5,opt,name=run_as_user,json=runAsUser" json:"run_as_user,omitempty"` + // GID to run the container process as. Only one of run_as_group and + // run_as_groupname can be specified at a time. + RunAsGroup *Int64Value `protobuf:"bytes,12,opt,name=run_as_group,json=runAsGroup" json:"run_as_group,omitempty"` // User name to run the container process as. If specified, the user MUST // exist in the container image (i.e. in the /etc/passwd inside the image), // and be resolved there by the runtime; otherwise, the runtime MUST error. @@ -1523,6 +1535,13 @@ func (m *LinuxContainerSecurityContext) GetRunAsUser() *Int64Value { return nil } +func (m *LinuxContainerSecurityContext) GetRunAsGroup() *Int64Value { + if m != nil { + return m.RunAsGroup + } + return nil +} + func (m *LinuxContainerSecurityContext) GetRunAsUsername() string { if m != nil { return m.RunAsUsername @@ -2401,7 +2420,7 @@ func (m *ContainerStatus) GetLogPath() string { type ContainerStatusResponse struct { // Status of the container. Status *ContainerStatus `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` - // Info is extra information of the Container. The key could be abitrary string, and + // Info is extra information of the Container. The key could be arbitrary string, and // value should be in json format. The information could include anything useful for // debug, e.g. pid for linux container based container runtime. // It should only be returned non-empty when Verbose is true. @@ -2870,7 +2889,7 @@ func (m *ImageStatusRequest) GetVerbose() bool { type ImageStatusResponse struct { // Status of the image. Image *Image `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"` - // Info is extra information of the Image. The key could be abitrary string, and + // Info is extra information of the Image. The key could be arbitrary string, and // value should be in json format. The information could include anything useful // for debug, e.g. image config for oci image based container runtime. // It should only be returned non-empty when Verbose is true. @@ -3173,7 +3192,7 @@ func (m *StatusRequest) GetVerbose() bool { type StatusResponse struct { // Status of the Runtime. Status *RuntimeStatus `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` - // Info is extra information of the Runtime. The key could be abitrary string, and + // Info is extra information of the Runtime. The key could be arbitrary string, and // value should be in json format. The information could include anything useful for // debug, e.g. plugins used by the container runtime. // It should only be returned non-empty when Verbose is true. @@ -3739,7 +3758,9 @@ type RuntimeServiceClient interface { UpdateContainerResources(ctx context.Context, in *UpdateContainerResourcesRequest, opts ...grpc.CallOption) (*UpdateContainerResourcesResponse, error) // ReopenContainerLog asks runtime to reopen the stdout/stderr log file // for the container. This is often called after the log file has been - // rotated. + // rotated. If the container is not running, container runtime can choose + // to either create a new log file and return nil, or return an error. + // Once it returns error, new container log file MUST NOT be created. ReopenContainerLog(ctx context.Context, in *ReopenContainerLogRequest, opts ...grpc.CallOption) (*ReopenContainerLogResponse, error) // ExecSync runs a command in a container synchronously. ExecSync(ctx context.Context, in *ExecSyncRequest, opts ...grpc.CallOption) (*ExecSyncResponse, error) @@ -4017,7 +4038,9 @@ type RuntimeServiceServer interface { UpdateContainerResources(context.Context, *UpdateContainerResourcesRequest) (*UpdateContainerResourcesResponse, error) // ReopenContainerLog asks runtime to reopen the stdout/stderr log file // for the container. This is often called after the log file has been - // rotated. + // rotated. If the container is not running, container runtime can choose + // to either create a new log file and return nil, or return an error. + // Once it returns error, new container log file MUST NOT be created. ReopenContainerLog(context.Context, *ReopenContainerLogRequest) (*ReopenContainerLogResponse, error) // ExecSync runs a command in a container synchronously. ExecSync(context.Context, *ExecSyncRequest) (*ExecSyncResponse, error) @@ -5117,6 +5140,16 @@ func (m *LinuxSandboxSecurityContext) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintApi(dAtA, i, uint64(len(m.SeccompProfilePath))) i += copy(dAtA[i:], m.SeccompProfilePath) } + if m.RunAsGroup != nil { + dAtA[i] = 0x42 + i++ + i = encodeVarintApi(dAtA, i, uint64(m.RunAsGroup.Size())) + n6, err := m.RunAsGroup.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } return i, nil } @@ -5145,11 +5178,11 @@ func (m *LinuxPodSandboxConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.SecurityContext.Size())) - n6, err := m.SecurityContext.MarshalTo(dAtA[i:]) + n7, err := m.SecurityContext.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n6 + i += n7 } if len(m.Sysctls) > 0 { for k := range m.Sysctls { @@ -5231,11 +5264,11 @@ func (m *PodSandboxConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size())) - n7, err := m.Metadata.MarshalTo(dAtA[i:]) + n8, err := m.Metadata.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n7 + i += n8 } if len(m.Hostname) > 0 { dAtA[i] = 0x12 @@ -5253,11 +5286,11 @@ func (m *PodSandboxConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.DnsConfig.Size())) - n8, err := m.DnsConfig.MarshalTo(dAtA[i:]) + n9, err := m.DnsConfig.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n8 + i += n9 } if len(m.PortMappings) > 0 { for _, msg := range m.PortMappings { @@ -5309,11 +5342,11 @@ func (m *PodSandboxConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintApi(dAtA, i, uint64(m.Linux.Size())) - n9, err := m.Linux.MarshalTo(dAtA[i:]) + n10, err := m.Linux.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n9 + i += n10 } return i, nil } @@ -5337,11 +5370,11 @@ func (m *RunPodSandboxRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Config.Size())) - n10, err := m.Config.MarshalTo(dAtA[i:]) + n11, err := m.Config.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n10 + i += n11 } return i, nil } @@ -5531,11 +5564,11 @@ func (m *Namespace) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Options.Size())) - n11, err := m.Options.MarshalTo(dAtA[i:]) + n12, err := m.Options.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n11 + i += n12 } return i, nil } @@ -5559,11 +5592,11 @@ func (m *LinuxPodSandboxStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Namespaces.Size())) - n12, err := m.Namespaces.MarshalTo(dAtA[i:]) + n13, err := m.Namespaces.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n12 + i += n13 } return i, nil } @@ -5593,11 +5626,11 @@ func (m *PodSandboxStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size())) - n13, err := m.Metadata.MarshalTo(dAtA[i:]) + n14, err := m.Metadata.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n13 + i += n14 } if m.State != 0 { dAtA[i] = 0x18 @@ -5613,21 +5646,21 @@ func (m *PodSandboxStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.Network.Size())) - n14, err := m.Network.MarshalTo(dAtA[i:]) + n15, err := m.Network.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n14 + i += n15 } if m.Linux != nil { dAtA[i] = 0x32 i++ i = encodeVarintApi(dAtA, i, uint64(m.Linux.Size())) - n15, err := m.Linux.MarshalTo(dAtA[i:]) + n16, err := m.Linux.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n15 + i += n16 } if len(m.Labels) > 0 { for k := range m.Labels { @@ -5685,11 +5718,11 @@ func (m *PodSandboxStatusResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Status.Size())) - n16, err := m.Status.MarshalTo(dAtA[i:]) + n17, err := m.Status.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n16 + i += n17 } if len(m.Info) > 0 { for k := range m.Info { @@ -5759,11 +5792,11 @@ func (m *PodSandboxFilter) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.State.Size())) - n17, err := m.State.MarshalTo(dAtA[i:]) + n18, err := m.State.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n17 + i += n18 } if len(m.LabelSelector) > 0 { for k := range m.LabelSelector { @@ -5804,11 +5837,11 @@ func (m *ListPodSandboxRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Filter.Size())) - n18, err := m.Filter.MarshalTo(dAtA[i:]) + n19, err := m.Filter.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n18 + i += n19 } return i, nil } @@ -5838,11 +5871,11 @@ func (m *PodSandbox) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size())) - n19, err := m.Metadata.MarshalTo(dAtA[i:]) + n20, err := m.Metadata.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n19 + i += n20 } if m.State != 0 { dAtA[i] = 0x18 @@ -6139,11 +6172,11 @@ func (m *LinuxContainerSecurityContext) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Capabilities.Size())) - n20, err := m.Capabilities.MarshalTo(dAtA[i:]) + n21, err := m.Capabilities.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n20 + i += n21 } if m.Privileged { dAtA[i] = 0x10 @@ -6159,32 +6192,32 @@ func (m *LinuxContainerSecurityContext) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.NamespaceOptions.Size())) - n21, err := m.NamespaceOptions.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n21 - } - if m.SelinuxOptions != nil { - dAtA[i] = 0x22 - i++ - i = encodeVarintApi(dAtA, i, uint64(m.SelinuxOptions.Size())) - n22, err := m.SelinuxOptions.MarshalTo(dAtA[i:]) + n22, err := m.NamespaceOptions.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n22 } - if m.RunAsUser != nil { - dAtA[i] = 0x2a + if m.SelinuxOptions != nil { + dAtA[i] = 0x22 i++ - i = encodeVarintApi(dAtA, i, uint64(m.RunAsUser.Size())) - n23, err := m.RunAsUser.MarshalTo(dAtA[i:]) + i = encodeVarintApi(dAtA, i, uint64(m.SelinuxOptions.Size())) + n23, err := m.SelinuxOptions.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n23 } + if m.RunAsUser != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintApi(dAtA, i, uint64(m.RunAsUser.Size())) + n24, err := m.RunAsUser.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n24 + } if len(m.RunAsUsername) > 0 { dAtA[i] = 0x32 i++ @@ -6202,22 +6235,22 @@ func (m *LinuxContainerSecurityContext) MarshalTo(dAtA []byte) (int, error) { i++ } if len(m.SupplementalGroups) > 0 { - dAtA25 := make([]byte, len(m.SupplementalGroups)*10) - var j24 int + dAtA26 := make([]byte, len(m.SupplementalGroups)*10) + var j25 int for _, num1 := range m.SupplementalGroups { num := uint64(num1) for num >= 1<<7 { - dAtA25[j24] = uint8(uint64(num)&0x7f | 0x80) + dAtA26[j25] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j24++ + j25++ } - dAtA25[j24] = uint8(num) - j24++ + dAtA26[j25] = uint8(num) + j25++ } dAtA[i] = 0x42 i++ - i = encodeVarintApi(dAtA, i, uint64(j24)) - i += copy(dAtA[i:], dAtA25[:j24]) + i = encodeVarintApi(dAtA, i, uint64(j25)) + i += copy(dAtA[i:], dAtA26[:j25]) } if len(m.ApparmorProfile) > 0 { dAtA[i] = 0x4a @@ -6241,6 +6274,16 @@ func (m *LinuxContainerSecurityContext) MarshalTo(dAtA []byte) (int, error) { } i++ } + if m.RunAsGroup != nil { + dAtA[i] = 0x62 + i++ + i = encodeVarintApi(dAtA, i, uint64(m.RunAsGroup.Size())) + n27, err := m.RunAsGroup.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n27 + } return i, nil } @@ -6263,21 +6306,21 @@ func (m *LinuxContainerConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Resources.Size())) - n26, err := m.Resources.MarshalTo(dAtA[i:]) + n28, err := m.Resources.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n26 + i += n28 } if m.SecurityContext != nil { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.SecurityContext.Size())) - n27, err := m.SecurityContext.MarshalTo(dAtA[i:]) + n29, err := m.SecurityContext.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n27 + i += n29 } return i, nil } @@ -6301,11 +6344,11 @@ func (m *WindowsContainerConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Resources.Size())) - n28, err := m.Resources.MarshalTo(dAtA[i:]) + n30, err := m.Resources.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n28 + i += n30 } return i, nil } @@ -6432,21 +6475,21 @@ func (m *ContainerConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size())) - n29, err := m.Metadata.MarshalTo(dAtA[i:]) + n31, err := m.Metadata.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n29 + i += n31 } if m.Image != nil { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size())) - n30, err := m.Image.MarshalTo(dAtA[i:]) + n32, err := m.Image.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n30 + i += n32 } if len(m.Command) > 0 { for _, s := range m.Command { @@ -6594,11 +6637,11 @@ func (m *ContainerConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x7a i++ i = encodeVarintApi(dAtA, i, uint64(m.Linux.Size())) - n31, err := m.Linux.MarshalTo(dAtA[i:]) + n33, err := m.Linux.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n31 + i += n33 } if m.Windows != nil { dAtA[i] = 0x82 @@ -6606,11 +6649,11 @@ func (m *ContainerConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.Windows.Size())) - n32, err := m.Windows.MarshalTo(dAtA[i:]) + n34, err := m.Windows.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n32 + i += n34 } return i, nil } @@ -6640,21 +6683,21 @@ func (m *CreateContainerRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Config.Size())) - n33, err := m.Config.MarshalTo(dAtA[i:]) + n35, err := m.Config.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n33 + i += n35 } if m.SandboxConfig != nil { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.SandboxConfig.Size())) - n34, err := m.SandboxConfig.MarshalTo(dAtA[i:]) + n36, err := m.SandboxConfig.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n34 + i += n36 } return i, nil } @@ -6862,11 +6905,11 @@ func (m *ContainerFilter) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.State.Size())) - n35, err := m.State.MarshalTo(dAtA[i:]) + n37, err := m.State.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n35 + i += n37 } if len(m.PodSandboxId) > 0 { dAtA[i] = 0x1a @@ -6913,11 +6956,11 @@ func (m *ListContainersRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Filter.Size())) - n36, err := m.Filter.MarshalTo(dAtA[i:]) + n38, err := m.Filter.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n36 + i += n38 } return i, nil } @@ -6953,21 +6996,21 @@ func (m *Container) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size())) - n37, err := m.Metadata.MarshalTo(dAtA[i:]) + n39, err := m.Metadata.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n37 + i += n39 } if m.Image != nil { dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size())) - n38, err := m.Image.MarshalTo(dAtA[i:]) + n40, err := m.Image.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n38 + i += n40 } if len(m.ImageRef) > 0 { dAtA[i] = 0x2a @@ -7111,11 +7154,11 @@ func (m *ContainerStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size())) - n39, err := m.Metadata.MarshalTo(dAtA[i:]) + n41, err := m.Metadata.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n39 + i += n41 } if m.State != 0 { dAtA[i] = 0x18 @@ -7146,11 +7189,11 @@ func (m *ContainerStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size())) - n40, err := m.Image.MarshalTo(dAtA[i:]) + n42, err := m.Image.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n40 + i += n42 } if len(m.ImageRef) > 0 { dAtA[i] = 0x4a @@ -7244,11 +7287,11 @@ func (m *ContainerStatusResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Status.Size())) - n41, err := m.Status.MarshalTo(dAtA[i:]) + n43, err := m.Status.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n41 + i += n43 } if len(m.Info) > 0 { for k := range m.Info { @@ -7295,11 +7338,11 @@ func (m *UpdateContainerResourcesRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Linux.Size())) - n42, err := m.Linux.MarshalTo(dAtA[i:]) + n44, err := m.Linux.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n42 + i += n44 } return i, nil } @@ -7614,22 +7657,22 @@ func (m *PortForwardRequest) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], m.PodSandboxId) } if len(m.Port) > 0 { - dAtA44 := make([]byte, len(m.Port)*10) - var j43 int + dAtA46 := make([]byte, len(m.Port)*10) + var j45 int for _, num1 := range m.Port { num := uint64(num1) for num >= 1<<7 { - dAtA44[j43] = uint8(uint64(num)&0x7f | 0x80) + dAtA46[j45] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j43++ + j45++ } - dAtA44[j43] = uint8(num) - j43++ + dAtA46[j45] = uint8(num) + j45++ } dAtA[i] = 0x12 i++ - i = encodeVarintApi(dAtA, i, uint64(j43)) - i += copy(dAtA[i:], dAtA44[:j43]) + i = encodeVarintApi(dAtA, i, uint64(j45)) + i += copy(dAtA[i:], dAtA46[:j45]) } return i, nil } @@ -7677,11 +7720,11 @@ func (m *ImageFilter) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size())) - n45, err := m.Image.MarshalTo(dAtA[i:]) + n47, err := m.Image.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n45 + i += n47 } return i, nil } @@ -7705,11 +7748,11 @@ func (m *ListImagesRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Filter.Size())) - n46, err := m.Filter.MarshalTo(dAtA[i:]) + n48, err := m.Filter.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n46 + i += n48 } return i, nil } @@ -7774,11 +7817,11 @@ func (m *Image) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.Uid.Size())) - n47, err := m.Uid.MarshalTo(dAtA[i:]) + n49, err := m.Uid.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n47 + i += n49 } if len(m.Username) > 0 { dAtA[i] = 0x32 @@ -7838,11 +7881,11 @@ func (m *ImageStatusRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size())) - n48, err := m.Image.MarshalTo(dAtA[i:]) + n50, err := m.Image.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n48 + i += n50 } if m.Verbose { dAtA[i] = 0x10 @@ -7876,11 +7919,11 @@ func (m *ImageStatusResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size())) - n49, err := m.Image.MarshalTo(dAtA[i:]) + n51, err := m.Image.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n49 + i += n51 } if len(m.Info) > 0 { for k := range m.Info { @@ -7975,31 +8018,31 @@ func (m *PullImageRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size())) - n50, err := m.Image.MarshalTo(dAtA[i:]) + n52, err := m.Image.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n50 + i += n52 } if m.Auth != nil { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Auth.Size())) - n51, err := m.Auth.MarshalTo(dAtA[i:]) + n53, err := m.Auth.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n51 + i += n53 } if m.SandboxConfig != nil { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.SandboxConfig.Size())) - n52, err := m.SandboxConfig.MarshalTo(dAtA[i:]) + n54, err := m.SandboxConfig.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n52 + i += n54 } return i, nil } @@ -8047,11 +8090,11 @@ func (m *RemoveImageRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size())) - n53, err := m.Image.MarshalTo(dAtA[i:]) + n55, err := m.Image.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n53 + i += n55 } return i, nil } @@ -8117,11 +8160,11 @@ func (m *RuntimeConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.NetworkConfig.Size())) - n54, err := m.NetworkConfig.MarshalTo(dAtA[i:]) + n56, err := m.NetworkConfig.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n54 + i += n56 } return i, nil } @@ -8145,11 +8188,11 @@ func (m *UpdateRuntimeConfigRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.RuntimeConfig.Size())) - n55, err := m.RuntimeConfig.MarshalTo(dAtA[i:]) + n57, err := m.RuntimeConfig.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n55 + i += n57 } return i, nil } @@ -8295,11 +8338,11 @@ func (m *StatusResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Status.Size())) - n56, err := m.Status.MarshalTo(dAtA[i:]) + n58, err := m.Status.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n56 + i += n58 } if len(m.Info) > 0 { for k := range m.Info { @@ -8410,31 +8453,31 @@ func (m *FilesystemUsage) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.FsId.Size())) - n57, err := m.FsId.MarshalTo(dAtA[i:]) + n59, err := m.FsId.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n57 + i += n59 } if m.UsedBytes != nil { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.UsedBytes.Size())) - n58, err := m.UsedBytes.MarshalTo(dAtA[i:]) + n60, err := m.UsedBytes.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n58 + i += n60 } if m.InodesUsed != nil { dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.InodesUsed.Size())) - n59, err := m.InodesUsed.MarshalTo(dAtA[i:]) + n61, err := m.InodesUsed.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n59 + i += n61 } return i, nil } @@ -8512,11 +8555,11 @@ func (m *ContainerStatsResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Stats.Size())) - n60, err := m.Stats.MarshalTo(dAtA[i:]) + n62, err := m.Stats.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n60 + i += n62 } return i, nil } @@ -8540,11 +8583,11 @@ func (m *ListContainerStatsRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Filter.Size())) - n61, err := m.Filter.MarshalTo(dAtA[i:]) + n63, err := m.Filter.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n61 + i += n63 } return i, nil } @@ -8651,11 +8694,11 @@ func (m *ContainerAttributes) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size())) - n62, err := m.Metadata.MarshalTo(dAtA[i:]) + n64, err := m.Metadata.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n62 + i += n64 } if len(m.Labels) > 0 { for k := range m.Labels { @@ -8713,42 +8756,42 @@ func (m *ContainerStats) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Attributes.Size())) - n63, err := m.Attributes.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n63 - } - if m.Cpu != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintApi(dAtA, i, uint64(m.Cpu.Size())) - n64, err := m.Cpu.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n64 - } - if m.Memory != nil { - dAtA[i] = 0x1a - i++ - i = encodeVarintApi(dAtA, i, uint64(m.Memory.Size())) - n65, err := m.Memory.MarshalTo(dAtA[i:]) + n65, err := m.Attributes.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n65 } - if m.WritableLayer != nil { - dAtA[i] = 0x22 + if m.Cpu != nil { + dAtA[i] = 0x12 i++ - i = encodeVarintApi(dAtA, i, uint64(m.WritableLayer.Size())) - n66, err := m.WritableLayer.MarshalTo(dAtA[i:]) + i = encodeVarintApi(dAtA, i, uint64(m.Cpu.Size())) + n66, err := m.Cpu.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n66 } + if m.Memory != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintApi(dAtA, i, uint64(m.Memory.Size())) + n67, err := m.Memory.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n67 + } + if m.WritableLayer != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintApi(dAtA, i, uint64(m.WritableLayer.Size())) + n68, err := m.WritableLayer.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n68 + } return i, nil } @@ -8776,11 +8819,11 @@ func (m *CpuUsage) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.UsageCoreNanoSeconds.Size())) - n67, err := m.UsageCoreNanoSeconds.MarshalTo(dAtA[i:]) + n69, err := m.UsageCoreNanoSeconds.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n67 + i += n69 } return i, nil } @@ -8809,11 +8852,11 @@ func (m *MemoryUsage) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.WorkingSetBytes.Size())) - n68, err := m.WorkingSetBytes.MarshalTo(dAtA[i:]) + n70, err := m.WorkingSetBytes.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n68 + i += n70 } return i, nil } @@ -9041,6 +9084,10 @@ func (m *LinuxSandboxSecurityContext) Size() (n int) { if l > 0 { n += 1 + l + sovApi(uint64(l)) } + if m.RunAsGroup != nil { + l = m.RunAsGroup.Size() + n += 1 + l + sovApi(uint64(l)) + } return n } @@ -9521,6 +9568,10 @@ func (m *LinuxContainerSecurityContext) Size() (n int) { if m.NoNewPrivs { n += 2 } + if m.RunAsGroup != nil { + l = m.RunAsGroup.Size() + n += 1 + l + sovApi(uint64(l)) + } return n } @@ -10712,6 +10763,7 @@ func (this *LinuxSandboxSecurityContext) String() string { `SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`, `Privileged:` + fmt.Sprintf("%v", this.Privileged) + `,`, `SeccompProfilePath:` + fmt.Sprintf("%v", this.SeccompProfilePath) + `,`, + `RunAsGroup:` + strings.Replace(fmt.Sprintf("%v", this.RunAsGroup), "Int64Value", "Int64Value", 1) + `,`, `}`, }, "") return s @@ -11109,6 +11161,7 @@ func (this *LinuxContainerSecurityContext) String() string { `ApparmorProfile:` + fmt.Sprintf("%v", this.ApparmorProfile) + `,`, `SeccompProfilePath:` + fmt.Sprintf("%v", this.SeccompProfilePath) + `,`, `NoNewPrivs:` + fmt.Sprintf("%v", this.NoNewPrivs) + `,`, + `RunAsGroup:` + strings.Replace(fmt.Sprintf("%v", this.RunAsGroup), "Int64Value", "Int64Value", 1) + `,`, `}`, }, "") return s @@ -13131,6 +13184,39 @@ func (m *LinuxSandboxSecurityContext) Unmarshal(dAtA []byte) error { } m.SeccompProfilePath = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsGroup", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RunAsGroup == nil { + m.RunAsGroup = &Int64Value{} + } + if err := m.RunAsGroup.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -17294,6 +17380,39 @@ func (m *LinuxContainerSecurityContext) Unmarshal(dAtA []byte) error { } } m.NoNewPrivs = bool(v != 0) + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsGroup", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RunAsGroup == nil { + m.RunAsGroup = &Int64Value{} + } + if err := m.RunAsGroup.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -26331,293 +26450,294 @@ var ( func init() { proto.RegisterFile("api.proto", fileDescriptorApi) } var fileDescriptorApi = []byte{ - // 4602 bytes of a gzipped FileDescriptorProto + // 4623 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5c, 0xcd, 0x6f, 0x1b, 0x49, 0x76, 0x17, 0x49, 0x7d, 0x90, 0x8f, 0xa2, 0x44, 0x95, 0x65, 0x8b, 0xa6, 0x6d, 0x8d, 0xd5, 0x1e, 0x7f, 0xce, 0x58, 0x1e, 0x6b, 0x76, 0x3d, 0xb1, 0x3d, 0x6b, 0x9b, 0x96, 0x64, 0x9b, 0x59, 0x9b, 0x52, 0x9a, 0xd2, 0x7c, 0xec, 0x2c, 0xd0, 0xdb, 0x62, 0x97, 0xa8, 0x5e, 0x93, 0x5d, 0x3d, 0xdd, - 0x4d, 0xdb, 0xca, 0x21, 0x58, 0x20, 0xc8, 0x1e, 0x02, 0x04, 0xc8, 0x39, 0xb7, 0x6c, 0x0e, 0x39, - 0xe4, 0x16, 0x20, 0xc8, 0x21, 0xa7, 0x04, 0x7b, 0xd8, 0x4b, 0x80, 0x9c, 0x16, 0xf9, 0xb8, 0x64, - 0x27, 0xc8, 0x25, 0x87, 0x20, 0x7f, 0x40, 0x0e, 0x41, 0x7d, 0xf5, 0x77, 0xf3, 0x43, 0xe3, 0x9d, - 0x99, 0x9c, 0xd4, 0xf5, 0xfa, 0xbd, 0x57, 0xaf, 0x5e, 0xbd, 0x7e, 0xf5, 0xea, 0x57, 0x45, 0x41, - 0x49, 0xb7, 0xcd, 0x75, 0xdb, 0x21, 0x1e, 0x41, 0x55, 0x67, 0x60, 0x79, 0x66, 0x1f, 0xaf, 0xbf, - 0xba, 0xad, 0xf7, 0xec, 0x23, 0x7d, 0xa3, 0x7e, 0xb3, 0x6b, 0x7a, 0x47, 0x83, 0x83, 0xf5, 0x0e, - 0xe9, 0xdf, 0xea, 0x92, 0x2e, 0xb9, 0xc5, 0x18, 0x0f, 0x06, 0x87, 0xac, 0xc5, 0x1a, 0xec, 0x89, - 0x2b, 0x50, 0x6e, 0xc0, 0xc2, 0x27, 0xd8, 0x71, 0x4d, 0x62, 0xa9, 0xf8, 0xcb, 0x01, 0x76, 0x3d, - 0x54, 0x83, 0xb9, 0x57, 0x9c, 0x52, 0xcb, 0x5d, 0xcc, 0x5d, 0x2b, 0xa9, 0xb2, 0xa9, 0xfc, 0x65, - 0x0e, 0x16, 0x7d, 0x66, 0xd7, 0x26, 0x96, 0x8b, 0xb3, 0xb9, 0xd1, 0x1a, 0xcc, 0x0b, 0xe3, 0x34, - 0x4b, 0xef, 0xe3, 0x5a, 0x9e, 0xbd, 0x2e, 0x0b, 0x5a, 0x4b, 0xef, 0x63, 0x74, 0x15, 0x16, 0x25, - 0x8b, 0x54, 0x52, 0x60, 0x5c, 0x0b, 0x82, 0x2c, 0x7a, 0x43, 0xeb, 0x70, 0x4a, 0x32, 0xea, 0xb6, - 0xe9, 0x33, 0x4f, 0x33, 0xe6, 0x25, 0xf1, 0xaa, 0x61, 0x9b, 0x82, 0x5f, 0xf9, 0x02, 0x4a, 0x5b, - 0xad, 0xf6, 0x26, 0xb1, 0x0e, 0xcd, 0x2e, 0x35, 0xd1, 0xc5, 0x0e, 0x95, 0xa9, 0xe5, 0x2e, 0x16, - 0xa8, 0x89, 0xa2, 0x89, 0xea, 0x50, 0x74, 0xb1, 0xee, 0x74, 0x8e, 0xb0, 0x5b, 0xcb, 0xb3, 0x57, - 0x7e, 0x9b, 0x4a, 0x11, 0xdb, 0x33, 0x89, 0xe5, 0xd6, 0x0a, 0x5c, 0x4a, 0x34, 0x95, 0x5f, 0xe4, - 0xa0, 0xbc, 0x4b, 0x1c, 0xef, 0x85, 0x6e, 0xdb, 0xa6, 0xd5, 0x45, 0x77, 0xa0, 0xc8, 0x7c, 0xd9, - 0x21, 0x3d, 0xe6, 0x83, 0x85, 0x8d, 0xfa, 0x7a, 0x7c, 0x5a, 0xd6, 0x77, 0x05, 0x87, 0xea, 0xf3, - 0xa2, 0xcb, 0xb0, 0xd0, 0x21, 0x96, 0xa7, 0x9b, 0x16, 0x76, 0x34, 0x9b, 0x38, 0x1e, 0x73, 0xd1, - 0x8c, 0x5a, 0xf1, 0xa9, 0xb4, 0x17, 0x74, 0x0e, 0x4a, 0x47, 0xc4, 0xf5, 0x38, 0x47, 0x81, 0x71, - 0x14, 0x29, 0x81, 0xbd, 0x5c, 0x81, 0x39, 0xf6, 0xd2, 0xb4, 0x85, 0x33, 0x66, 0x69, 0xb3, 0x69, - 0x2b, 0xbf, 0xce, 0xc1, 0xcc, 0x0b, 0x32, 0xb0, 0xbc, 0x58, 0x37, 0xba, 0x77, 0x24, 0x26, 0x2a, - 0xd4, 0x8d, 0xee, 0x1d, 0x05, 0xdd, 0x50, 0x0e, 0x3e, 0x57, 0xbc, 0x1b, 0xfa, 0xb2, 0x0e, 0x45, - 0x07, 0xeb, 0x06, 0xb1, 0x7a, 0xc7, 0xcc, 0x84, 0xa2, 0xea, 0xb7, 0xe9, 0x24, 0xba, 0xb8, 0x67, - 0x5a, 0x83, 0x37, 0x9a, 0x83, 0x7b, 0xfa, 0x01, 0xee, 0x31, 0x53, 0x8a, 0xea, 0x82, 0x20, 0xab, - 0x9c, 0x8a, 0xb6, 0xa0, 0x6c, 0x3b, 0xc4, 0xd6, 0xbb, 0x3a, 0xf5, 0x63, 0x6d, 0x86, 0xb9, 0x4a, - 0x49, 0xba, 0x8a, 0x99, 0xbd, 0x1b, 0x70, 0xaa, 0x61, 0x31, 0xe5, 0xaf, 0x73, 0xb0, 0x48, 0x83, - 0xc7, 0xb5, 0xf5, 0x0e, 0xde, 0x61, 0x53, 0x82, 0xee, 0xc2, 0x9c, 0x85, 0xbd, 0xd7, 0xc4, 0x79, - 0x29, 0x26, 0xe0, 0x9d, 0xa4, 0x56, 0x5f, 0xe6, 0x05, 0x31, 0xb0, 0x2a, 0xf9, 0xd1, 0x6d, 0x28, - 0xd8, 0xa6, 0xc1, 0x06, 0x3c, 0x86, 0x18, 0xe5, 0xa5, 0x22, 0xa6, 0xdd, 0x61, 0x7e, 0x18, 0x47, - 0xc4, 0xb4, 0x3b, 0x8a, 0x02, 0xd0, 0xb4, 0xbc, 0x3b, 0xdf, 0xfb, 0x44, 0xef, 0x0d, 0x30, 0x5a, - 0x86, 0x99, 0x57, 0xf4, 0x81, 0x19, 0x5b, 0x50, 0x79, 0x43, 0xf9, 0xf3, 0x02, 0x9c, 0x7b, 0x4e, - 0xfd, 0xd5, 0xd6, 0x2d, 0xe3, 0x80, 0xbc, 0x69, 0xe3, 0xce, 0xc0, 0x31, 0xbd, 0xe3, 0x4d, 0x62, - 0x79, 0xf8, 0x8d, 0x87, 0x5a, 0xb0, 0x64, 0x49, 0xcd, 0x9a, 0x0c, 0x4d, 0xaa, 0xa1, 0xbc, 0xb1, - 0x36, 0xc4, 0x08, 0xee, 0x22, 0xb5, 0x6a, 0x45, 0x09, 0x2e, 0x7a, 0x16, 0xcc, 0x9b, 0xd4, 0x96, - 0x67, 0xda, 0x52, 0x86, 0xd4, 0xde, 0x66, 0x96, 0x09, 0x5d, 0x72, 0x62, 0xa5, 0xa6, 0x8f, 0x81, - 0x7e, 0xd5, 0x9a, 0xee, 0x6a, 0x03, 0x17, 0x3b, 0xcc, 0x31, 0xe5, 0x8d, 0xf3, 0x49, 0x2d, 0x81, - 0x0b, 0xd4, 0x92, 0x33, 0xb0, 0x1a, 0xee, 0xbe, 0x8b, 0x1d, 0x96, 0x04, 0x44, 0x2c, 0x69, 0x0e, - 0x21, 0xde, 0xa1, 0x2b, 0xe3, 0x47, 0x92, 0x55, 0x46, 0x45, 0xb7, 0xe0, 0x94, 0x3b, 0xb0, 0xed, + 0x4d, 0xdb, 0xca, 0x21, 0x58, 0x20, 0xc8, 0x1e, 0x02, 0x04, 0xc8, 0x79, 0x8f, 0x9b, 0x43, 0x0e, + 0xb9, 0x05, 0x08, 0x72, 0xc8, 0x29, 0xc1, 0x1e, 0xf6, 0x12, 0x20, 0xa7, 0x45, 0x3e, 0x2e, 0x99, + 0x09, 0x72, 0xc9, 0x21, 0xc8, 0x1f, 0x90, 0x43, 0x50, 0x5f, 0xfd, 0xdd, 0xfc, 0xd0, 0x78, 0x77, + 0x26, 0x27, 0x75, 0xbd, 0x7a, 0xef, 0xd5, 0xab, 0xaa, 0x57, 0xaf, 0x5e, 0xfd, 0xaa, 0x28, 0x28, + 0xe9, 0xb6, 0xb9, 0x6e, 0x3b, 0xc4, 0x23, 0xa8, 0xea, 0x0c, 0x2c, 0xcf, 0xec, 0xe3, 0xf5, 0x57, + 0xb7, 0xf5, 0x9e, 0x7d, 0xa4, 0x6f, 0xd4, 0x6f, 0x76, 0x4d, 0xef, 0x68, 0x70, 0xb0, 0xde, 0x21, + 0xfd, 0x5b, 0x5d, 0xd2, 0x25, 0xb7, 0x18, 0xe3, 0xc1, 0xe0, 0x90, 0x95, 0x58, 0x81, 0x7d, 0x71, + 0x05, 0xca, 0x0d, 0x58, 0xf8, 0x04, 0x3b, 0xae, 0x49, 0x2c, 0x15, 0x7f, 0x39, 0xc0, 0xae, 0x87, + 0x6a, 0x30, 0xf7, 0x8a, 0x53, 0x6a, 0xb9, 0x8b, 0xb9, 0x6b, 0x25, 0x55, 0x16, 0x95, 0xbf, 0xcc, + 0xc1, 0xa2, 0xcf, 0xec, 0xda, 0xc4, 0x72, 0x71, 0x36, 0x37, 0x5a, 0x83, 0x79, 0x61, 0x9c, 0x66, + 0xe9, 0x7d, 0x5c, 0xcb, 0xb3, 0xea, 0xb2, 0xa0, 0xb5, 0xf4, 0x3e, 0x46, 0x57, 0x61, 0x51, 0xb2, + 0x48, 0x25, 0x05, 0xc6, 0xb5, 0x20, 0xc8, 0xa2, 0x35, 0xb4, 0x0e, 0xa7, 0x24, 0xa3, 0x6e, 0x9b, + 0x3e, 0xf3, 0x34, 0x63, 0x5e, 0x12, 0x55, 0x0d, 0xdb, 0x14, 0xfc, 0xca, 0x17, 0x50, 0xda, 0x6a, + 0xb5, 0x37, 0x89, 0x75, 0x68, 0x76, 0xa9, 0x89, 0x2e, 0x76, 0xa8, 0x4c, 0x2d, 0x77, 0xb1, 0x40, + 0x4d, 0x14, 0x45, 0x54, 0x87, 0xa2, 0x8b, 0x75, 0xa7, 0x73, 0x84, 0xdd, 0x5a, 0x9e, 0x55, 0xf9, + 0x65, 0x2a, 0x45, 0x6c, 0xcf, 0x24, 0x96, 0x5b, 0x2b, 0x70, 0x29, 0x51, 0x54, 0x7e, 0x99, 0x83, + 0xf2, 0x2e, 0x71, 0xbc, 0x17, 0xba, 0x6d, 0x9b, 0x56, 0x17, 0xdd, 0x81, 0x22, 0x1b, 0xcb, 0x0e, + 0xe9, 0xb1, 0x31, 0x58, 0xd8, 0xa8, 0xaf, 0xc7, 0xa7, 0x65, 0x7d, 0x57, 0x70, 0xa8, 0x3e, 0x2f, + 0xba, 0x0c, 0x0b, 0x1d, 0x62, 0x79, 0xba, 0x69, 0x61, 0x47, 0xb3, 0x89, 0xe3, 0xb1, 0x21, 0x9a, + 0x51, 0x2b, 0x3e, 0x95, 0xb6, 0x82, 0xce, 0x41, 0xe9, 0x88, 0xb8, 0x1e, 0xe7, 0x28, 0x30, 0x8e, + 0x22, 0x25, 0xb0, 0xca, 0x15, 0x98, 0x63, 0x95, 0xa6, 0x2d, 0x06, 0x63, 0x96, 0x16, 0x9b, 0xb6, + 0xf2, 0x9b, 0x1c, 0xcc, 0xbc, 0x20, 0x03, 0xcb, 0x8b, 0x35, 0xa3, 0x7b, 0x47, 0x62, 0xa2, 0x42, + 0xcd, 0xe8, 0xde, 0x51, 0xd0, 0x0c, 0xe5, 0xe0, 0x73, 0xc5, 0x9b, 0xa1, 0x95, 0x75, 0x28, 0x3a, + 0x58, 0x37, 0x88, 0xd5, 0x3b, 0x66, 0x26, 0x14, 0x55, 0xbf, 0x4c, 0x27, 0xd1, 0xc5, 0x3d, 0xd3, + 0x1a, 0xbc, 0xd1, 0x1c, 0xdc, 0xd3, 0x0f, 0x70, 0x8f, 0x99, 0x52, 0x54, 0x17, 0x04, 0x59, 0xe5, + 0x54, 0xb4, 0x05, 0x65, 0xdb, 0x21, 0xb6, 0xde, 0xd5, 0xe9, 0x38, 0xd6, 0x66, 0xd8, 0x50, 0x29, + 0xc9, 0xa1, 0x62, 0x66, 0xef, 0x06, 0x9c, 0x6a, 0x58, 0x4c, 0xf9, 0xeb, 0x1c, 0x2c, 0x52, 0xe7, + 0x71, 0x6d, 0xbd, 0x83, 0x77, 0xd8, 0x94, 0xa0, 0xbb, 0x30, 0x67, 0x61, 0xef, 0x35, 0x71, 0x5e, + 0x8a, 0x09, 0x78, 0x27, 0xa9, 0xd5, 0x97, 0x79, 0x41, 0x0c, 0xac, 0x4a, 0x7e, 0x74, 0x1b, 0x0a, + 0xb6, 0x69, 0xb0, 0x0e, 0x8f, 0x21, 0x46, 0x79, 0xa9, 0x88, 0x69, 0x77, 0xd8, 0x38, 0x8c, 0x23, + 0x62, 0xda, 0x1d, 0x45, 0x01, 0x68, 0x5a, 0xde, 0x9d, 0xef, 0x7d, 0xa2, 0xf7, 0x06, 0x18, 0x2d, + 0xc3, 0xcc, 0x2b, 0xfa, 0xc1, 0x8c, 0x2d, 0xa8, 0xbc, 0xa0, 0x7c, 0x55, 0x80, 0x73, 0xcf, 0xe9, + 0x78, 0xb5, 0x75, 0xcb, 0x38, 0x20, 0x6f, 0xda, 0xb8, 0x33, 0x70, 0x4c, 0xef, 0x78, 0x93, 0x58, + 0x1e, 0x7e, 0xe3, 0xa1, 0x16, 0x2c, 0x59, 0x52, 0xb3, 0x26, 0x5d, 0x93, 0x6a, 0x28, 0x6f, 0xac, + 0x0d, 0x31, 0x82, 0x0f, 0x91, 0x5a, 0xb5, 0xa2, 0x04, 0x17, 0x3d, 0x0b, 0xe6, 0x4d, 0x6a, 0xcb, + 0x33, 0x6d, 0x29, 0x5d, 0x6a, 0x6f, 0x33, 0xcb, 0x84, 0x2e, 0x39, 0xb1, 0x52, 0xd3, 0xc7, 0x40, + 0x57, 0xb5, 0xa6, 0xbb, 0xda, 0xc0, 0xc5, 0x0e, 0x1b, 0x98, 0xf2, 0xc6, 0xf9, 0xa4, 0x96, 0x60, + 0x08, 0xd4, 0x92, 0x33, 0xb0, 0x1a, 0xee, 0xbe, 0x8b, 0x1d, 0x16, 0x04, 0x84, 0x2f, 0x69, 0x0e, + 0x21, 0xde, 0xa1, 0x2b, 0xfd, 0x47, 0x92, 0x55, 0x46, 0x45, 0xb7, 0xe0, 0x94, 0x3b, 0xb0, 0xed, 0x1e, 0xee, 0x63, 0xcb, 0xd3, 0x7b, 0x5a, 0xd7, 0x21, 0x03, 0xdb, 0xad, 0xcd, 0x5c, 0x2c, 0x5c, - 0x2b, 0xa8, 0x28, 0xfc, 0xea, 0x29, 0x7b, 0x83, 0x56, 0x01, 0x6c, 0xc7, 0x7c, 0x65, 0xf6, 0x70, - 0x17, 0x1b, 0xb5, 0x59, 0xa6, 0x34, 0x44, 0x41, 0x1f, 0xc0, 0xb2, 0x8b, 0x3b, 0x1d, 0xd2, 0xb7, - 0x35, 0xdb, 0x21, 0x87, 0x66, 0x0f, 0xf3, 0xe8, 0x9f, 0x63, 0xd1, 0x8f, 0xc4, 0xbb, 0x5d, 0xfe, - 0x8a, 0x7e, 0x07, 0xca, 0x2f, 0xf2, 0x70, 0x9a, 0x79, 0x62, 0x97, 0x18, 0x62, 0x9a, 0x44, 0x92, - 0xb9, 0x04, 0x95, 0x0e, 0x33, 0x48, 0xb3, 0x75, 0x07, 0x5b, 0x9e, 0xf8, 0xc8, 0xe6, 0x39, 0x71, - 0x97, 0xd1, 0xd0, 0x67, 0x50, 0x75, 0xc5, 0xac, 0x6a, 0x1d, 0x3e, 0xad, 0xc2, 0xe7, 0x37, 0x93, - 0xde, 0x1a, 0x12, 0x0b, 0xea, 0xa2, 0x9b, 0x08, 0x8e, 0x39, 0xf7, 0xd8, 0xed, 0x78, 0x3d, 0x9e, - 0xad, 0xca, 0x1b, 0xdf, 0xcb, 0x50, 0x18, 0x37, 0x7c, 0xbd, 0xcd, 0xc5, 0xb6, 0x2d, 0xcf, 0x39, - 0x56, 0xa5, 0x92, 0xfa, 0x3d, 0x98, 0x0f, 0xbf, 0x40, 0x55, 0x28, 0xbc, 0xc4, 0xc7, 0x62, 0x50, - 0xf4, 0x31, 0x08, 0x62, 0x9e, 0x2b, 0x78, 0xe3, 0x5e, 0xfe, 0x77, 0x72, 0x8a, 0x03, 0x28, 0xe8, - 0xe5, 0x05, 0xf6, 0x74, 0x43, 0xf7, 0x74, 0x84, 0x60, 0x9a, 0x2d, 0x03, 0x5c, 0x05, 0x7b, 0xa6, - 0x5a, 0x07, 0xe2, 0xe3, 0x2b, 0xa9, 0xf4, 0x11, 0x9d, 0x87, 0x92, 0x1f, 0xa8, 0x62, 0x2d, 0x08, - 0x08, 0x34, 0x27, 0xeb, 0x9e, 0x87, 0xfb, 0xb6, 0xc7, 0x42, 0xa4, 0xa2, 0xca, 0xa6, 0xf2, 0xdf, - 0xd3, 0x50, 0x4d, 0xcc, 0xc9, 0x23, 0x28, 0xf6, 0x45, 0xf7, 0xe2, 0x43, 0x79, 0x37, 0x25, 0x31, - 0x27, 0x4c, 0x55, 0x7d, 0x29, 0x9a, 0xf7, 0x68, 0x0e, 0x0c, 0xad, 0x5f, 0x7e, 0x9b, 0xce, 0x78, - 0x8f, 0x74, 0x35, 0xc3, 0x74, 0x70, 0xc7, 0x23, 0xce, 0xb1, 0x30, 0x77, 0xbe, 0x47, 0xba, 0x5b, - 0x92, 0x86, 0xee, 0x01, 0x18, 0x96, 0x4b, 0x27, 0xfb, 0xd0, 0xec, 0x32, 0xa3, 0xcb, 0x1b, 0xe7, - 0x92, 0x46, 0xf8, 0x8b, 0x95, 0x5a, 0x32, 0x2c, 0x57, 0x98, 0xff, 0x18, 0x2a, 0x34, 0xe7, 0x6b, - 0x7d, 0xbe, 0xce, 0xf0, 0x48, 0x2f, 0x6f, 0x5c, 0x48, 0x1b, 0x83, 0xbf, 0x1a, 0xa9, 0xf3, 0x76, - 0xd0, 0x70, 0xd1, 0x13, 0x98, 0x65, 0xc9, 0xd7, 0xad, 0xcd, 0x32, 0xe1, 0xf5, 0x61, 0x0e, 0x10, - 0x11, 0xf1, 0x9c, 0x09, 0xf0, 0x80, 0x10, 0xd2, 0x68, 0x1f, 0xca, 0xba, 0x65, 0x11, 0x4f, 0xe7, - 0x89, 0x62, 0x8e, 0x29, 0xfb, 0x70, 0x0c, 0x65, 0x8d, 0x40, 0x8a, 0x6b, 0x0c, 0xeb, 0x41, 0x3f, - 0x80, 0x19, 0x96, 0x49, 0x6a, 0x45, 0xe6, 0x99, 0xab, 0x63, 0x06, 0xad, 0xca, 0xa5, 0xea, 0x77, - 0xa1, 0x1c, 0x32, 0x76, 0x92, 0x20, 0xad, 0x3f, 0x80, 0x6a, 0xdc, 0xb4, 0x89, 0x82, 0x5c, 0x85, - 0x65, 0x75, 0x60, 0x05, 0x86, 0xc9, 0xea, 0xe9, 0x1e, 0xcc, 0x8a, 0xc9, 0xe6, 0x11, 0xa7, 0x8c, - 0xf6, 0x91, 0x2a, 0x24, 0x94, 0x1f, 0xc0, 0xe9, 0x98, 0x4e, 0x51, 0x64, 0xbd, 0x0b, 0x0b, 0x36, - 0x31, 0x34, 0x97, 0x93, 0x35, 0xd3, 0x90, 0xd9, 0xc5, 0xf6, 0x79, 0x9b, 0x06, 0x15, 0x6f, 0x7b, - 0xc4, 0x4e, 0xda, 0x34, 0x9e, 0x78, 0x0d, 0xce, 0xc4, 0xc5, 0x79, 0xf7, 0xca, 0x43, 0x58, 0x51, - 0x71, 0x9f, 0xbc, 0xc2, 0x27, 0x55, 0x5d, 0x87, 0x5a, 0x52, 0x81, 0x50, 0xfe, 0x39, 0xac, 0x04, - 0xd4, 0xb6, 0xa7, 0x7b, 0x03, 0x77, 0x22, 0xe5, 0xa2, 0x02, 0x3d, 0x20, 0x2e, 0x9f, 0xa5, 0xa2, - 0x2a, 0x9b, 0xca, 0xf5, 0xb0, 0xea, 0x16, 0x5f, 0xf0, 0x79, 0x0f, 0x68, 0x01, 0xf2, 0xa6, 0x2d, - 0xd4, 0xe5, 0x4d, 0x5b, 0x79, 0x06, 0x25, 0x7f, 0xc5, 0x44, 0xf7, 0x83, 0xd2, 0x2f, 0x3f, 0xee, - 0xfa, 0xea, 0x57, 0x87, 0x7b, 0x89, 0x15, 0x42, 0x74, 0x79, 0x1f, 0xc0, 0xcf, 0x64, 0x72, 0xe1, - 0x3e, 0x37, 0x44, 0xb1, 0x1a, 0x62, 0x57, 0xfe, 0x35, 0x92, 0xdf, 0x42, 0x83, 0x30, 0xfc, 0x41, - 0x18, 0x91, 0x7c, 0x97, 0x3f, 0x51, 0xbe, 0xfb, 0x08, 0x66, 0x5c, 0x4f, 0xf7, 0xb0, 0x28, 0x6e, - 0xd6, 0x86, 0x89, 0x53, 0x23, 0xb0, 0xca, 0xf9, 0xd1, 0x05, 0x80, 0x8e, 0x83, 0x75, 0x0f, 0x1b, - 0x9a, 0xce, 0x93, 0x73, 0x41, 0x2d, 0x09, 0x4a, 0xc3, 0x43, 0x9b, 0x41, 0x81, 0x36, 0xc3, 0x0c, - 0xbb, 0x3e, 0x4c, 0x73, 0x64, 0xaa, 0x82, 0x52, 0xcd, 0x4f, 0x16, 0xb3, 0x63, 0x26, 0x0b, 0xa1, - 0x80, 0x4b, 0x85, 0x52, 0xe1, 0xdc, 0xe8, 0x54, 0xc8, 0x45, 0xc7, 0x49, 0x85, 0xc5, 0xd1, 0xa9, - 0x50, 0x28, 0x1b, 0x9a, 0x0a, 0xbf, 0xcd, 0x5c, 0xf6, 0x2f, 0x39, 0xa8, 0x25, 0xbf, 0x41, 0x91, - 0x7b, 0xee, 0xc1, 0xac, 0xcb, 0x28, 0xe3, 0x24, 0x34, 0x21, 0x2b, 0x24, 0xd0, 0x33, 0x98, 0x36, - 0xad, 0x43, 0xc2, 0xf6, 0x56, 0xa9, 0x25, 0x49, 0x56, 0xaf, 0xeb, 0x4d, 0xeb, 0x90, 0x70, 0x27, - 0x31, 0x0d, 0xf5, 0x8f, 0xa0, 0xe4, 0x93, 0x26, 0x1a, 0xdb, 0x0e, 0x2c, 0xc7, 0x42, 0x96, 0xd7, - 0xe0, 0x7e, 0xa4, 0xe7, 0x26, 0x8b, 0x74, 0xe5, 0x67, 0xf9, 0xf0, 0x97, 0xf8, 0xc4, 0xec, 0x79, - 0xd8, 0x49, 0x7c, 0x89, 0x1f, 0x4b, 0xed, 0xfc, 0x33, 0xbc, 0x32, 0x52, 0x3b, 0xaf, 0x8a, 0xc5, - 0xc7, 0xf4, 0x63, 0x58, 0x60, 0xb1, 0xa6, 0xb9, 0xb8, 0xc7, 0xea, 0x08, 0x51, 0xd3, 0x7d, 0x7f, - 0x98, 0x1a, 0x6e, 0x09, 0x8f, 0xd8, 0xb6, 0x90, 0xe3, 0x1e, 0xac, 0xf4, 0xc2, 0xb4, 0xfa, 0x23, - 0x40, 0x49, 0xa6, 0x89, 0x7c, 0xda, 0xa6, 0x29, 0x8e, 0x6e, 0x40, 0x53, 0x16, 0xbf, 0x43, 0x66, - 0xc6, 0x38, 0xb1, 0xc2, 0x0d, 0x56, 0x85, 0x84, 0xf2, 0xcb, 0x02, 0x40, 0xf0, 0xf2, 0xff, 0x51, - 0x6e, 0x7b, 0xe4, 0xe7, 0x15, 0x5e, 0x9f, 0x5d, 0x1b, 0xa6, 0x38, 0x35, 0xa3, 0xec, 0x44, 0x33, - 0x0a, 0xaf, 0xd4, 0x6e, 0x0e, 0x55, 0xf3, 0x9d, 0xcd, 0x25, 0xcf, 0xe1, 0x4c, 0x3c, 0x36, 0x44, - 0x22, 0xd9, 0x80, 0x19, 0xd3, 0xc3, 0x7d, 0x0e, 0xc2, 0xa4, 0xee, 0x0f, 0x43, 0x42, 0x9c, 0x55, - 0x59, 0x83, 0x52, 0xb3, 0xaf, 0x77, 0x71, 0xdb, 0xc6, 0x1d, 0xda, 0xa9, 0x49, 0x1b, 0xc2, 0x10, - 0xde, 0x50, 0x36, 0xa0, 0xf8, 0x43, 0x7c, 0xcc, 0x3f, 0xea, 0x31, 0x0d, 0x55, 0xfe, 0x24, 0x0f, - 0x2b, 0x6c, 0xad, 0xd8, 0x94, 0x10, 0x88, 0x8a, 0x5d, 0x32, 0x70, 0x3a, 0xd8, 0x65, 0xb3, 0x6d, - 0x0f, 0x34, 0x1b, 0x3b, 0x26, 0x31, 0xc4, 0x0e, 0xbd, 0xd4, 0xb1, 0x07, 0xbb, 0x8c, 0x80, 0xce, - 0x01, 0x6d, 0x68, 0x5f, 0x0e, 0x88, 0x08, 0xc4, 0x82, 0x5a, 0xec, 0xd8, 0x83, 0xdf, 0xa3, 0x6d, - 0x29, 0xeb, 0x1e, 0xe9, 0x0e, 0x76, 0x59, 0x9c, 0x71, 0xd9, 0x36, 0x23, 0xa0, 0xdb, 0x70, 0xba, - 0x8f, 0xfb, 0xc4, 0x39, 0xd6, 0x7a, 0x66, 0xdf, 0xf4, 0x34, 0xd3, 0xd2, 0x0e, 0x8e, 0x3d, 0xec, - 0x8a, 0x98, 0x42, 0xfc, 0xe5, 0x73, 0xfa, 0xae, 0x69, 0x3d, 0xa6, 0x6f, 0x90, 0x02, 0x15, 0x42, - 0xfa, 0x9a, 0xdb, 0x21, 0x0e, 0xd6, 0x74, 0xe3, 0xa7, 0x6c, 0xf9, 0x2c, 0xa8, 0x65, 0x42, 0xfa, - 0x6d, 0x4a, 0x6b, 0x18, 0x3f, 0x45, 0xef, 0x40, 0xb9, 0x63, 0x0f, 0x5c, 0xec, 0x69, 0xf4, 0x0f, - 0x5b, 0x1d, 0x4b, 0x2a, 0x70, 0xd2, 0xa6, 0x3d, 0x70, 0x43, 0x0c, 0x7d, 0xea, 0xff, 0xb9, 0x30, - 0xc3, 0x0b, 0xea, 0x66, 0x1d, 0x2a, 0x91, 0x1d, 0x3e, 0xdd, 0xac, 0xb1, 0xad, 0xbc, 0xd8, 0xac, - 0xd1, 0x67, 0x4a, 0x73, 0x48, 0x4f, 0x7a, 0x92, 0x3d, 0x53, 0x9a, 0x77, 0x6c, 0xcb, 0x9d, 0x1a, - 0x7b, 0xa6, 0x2e, 0xef, 0xe1, 0x57, 0x02, 0x05, 0x2a, 0xa9, 0xbc, 0xa1, 0x18, 0x00, 0x9b, 0xba, - 0xad, 0x1f, 0x98, 0x3d, 0xd3, 0x3b, 0x46, 0xd7, 0xa1, 0xaa, 0x1b, 0x86, 0xd6, 0x91, 0x14, 0x13, - 0x4b, 0x6c, 0x6e, 0x51, 0x37, 0x8c, 0xcd, 0x10, 0x19, 0xbd, 0x07, 0x4b, 0x86, 0x43, 0xec, 0x28, - 0x2f, 0x07, 0xeb, 0xaa, 0xf4, 0x45, 0x98, 0x99, 0x96, 0x49, 0x17, 0xa2, 0x13, 0x1b, 0x47, 0x51, - 0x1e, 0xc1, 0x7c, 0xac, 0xd7, 0x0c, 0xb0, 0x22, 0xb0, 0x56, 0x8d, 0x48, 0xc4, 0x50, 0x85, 0x7c, - 0x02, 0x55, 0x48, 0xc5, 0x69, 0x0a, 0x6f, 0x15, 0xa7, 0x99, 0x7e, 0x2b, 0x38, 0xcd, 0xcc, 0x64, - 0x38, 0xcd, 0x15, 0x06, 0xd6, 0x4a, 0x69, 0xb6, 0x25, 0xe6, 0xa1, 0x56, 0xf1, 0x79, 0x2c, 0x09, - 0xea, 0xc6, 0xf0, 0x9c, 0xb9, 0x49, 0xf0, 0x9c, 0x62, 0x26, 0x9e, 0x43, 0xa3, 0xc6, 0xb6, 0x75, - 0xa7, 0x4f, 0x1c, 0x09, 0xd8, 0xd4, 0x4a, 0xcc, 0x84, 0x45, 0x49, 0x17, 0x60, 0x4d, 0x26, 0xb4, - 0x03, 0x59, 0xd0, 0x0e, 0xba, 0x08, 0xf3, 0x16, 0xd1, 0x2c, 0xfc, 0x5a, 0xa3, 0x73, 0xe9, 0xd6, - 0xca, 0x7c, 0x62, 0x2d, 0xd2, 0xc2, 0xaf, 0x77, 0x29, 0x45, 0xf9, 0xbb, 0x1c, 0x2c, 0x47, 0x83, - 0x4b, 0x6c, 0xd4, 0x9f, 0x42, 0xc9, 0x91, 0xf9, 0x43, 0x04, 0xd4, 0xf5, 0x8c, 0xe2, 0x34, 0x99, - 0x70, 0xd4, 0x40, 0x16, 0xfd, 0x28, 0x13, 0x1f, 0xba, 0x35, 0x4a, 0xdf, 0x28, 0x84, 0x48, 0xe9, - 0xc0, 0x99, 0x4f, 0x4d, 0xcb, 0x20, 0xaf, 0xdd, 0xb8, 0xf9, 0xcd, 0xa4, 0xf9, 0xef, 0x25, 0xbb, - 0x8b, 0x0b, 0xa7, 0x0d, 0x40, 0xf9, 0xab, 0x1c, 0x9c, 0xcd, 0x64, 0x8c, 0xa5, 0xc7, 0x5c, 0x3c, - 0x3d, 0x8a, 0xd4, 0xda, 0x21, 0x03, 0xcb, 0x0b, 0xa5, 0xd6, 0x4d, 0x86, 0x62, 0xf3, 0x1c, 0xa6, - 0xf5, 0xf5, 0x37, 0x66, 0x7f, 0xd0, 0x17, 0xb9, 0x95, 0xaa, 0x7b, 0xc1, 0x29, 0x27, 0x48, 0xae, - 0x4a, 0x03, 0x96, 0x7c, 0x2b, 0x87, 0xe2, 0x54, 0x21, 0xdc, 0x29, 0x1f, 0xc5, 0x9d, 0x2c, 0x98, - 0xdd, 0xc2, 0xaf, 0xcc, 0x0e, 0x7e, 0x2b, 0x30, 0xfb, 0x45, 0x28, 0xdb, 0xd8, 0xe9, 0x9b, 0xae, - 0xeb, 0x27, 0x8d, 0x92, 0x1a, 0x26, 0x29, 0xff, 0x39, 0x0b, 0x8b, 0xf1, 0xf9, 0x7b, 0x98, 0x80, - 0xb9, 0x2e, 0xa5, 0xa4, 0xb3, 0xf8, 0x40, 0x43, 0x95, 0xd1, 0x6d, 0xb9, 0xb0, 0xe6, 0xb3, 0x36, - 0xa5, 0xfe, 0x22, 0x2c, 0x56, 0x5d, 0xea, 0x91, 0x0e, 0xe9, 0xf7, 0x75, 0xcb, 0x90, 0xa7, 0x23, - 0xa2, 0x49, 0xfd, 0xa7, 0x3b, 0x5d, 0xea, 0x76, 0x4a, 0x66, 0xcf, 0x74, 0xf2, 0xe8, 0x0e, 0xce, - 0xb4, 0x18, 0x5c, 0xc6, 0x12, 0x4f, 0x49, 0x05, 0x41, 0xda, 0x32, 0x1d, 0xb4, 0x0e, 0xd3, 0xd8, - 0x7a, 0x25, 0x4b, 0x9f, 0x94, 0xe3, 0x13, 0xb9, 0xc4, 0xab, 0x8c, 0x0f, 0xdd, 0x82, 0xd9, 0x3e, - 0x0d, 0x0b, 0xb9, 0x97, 0x5b, 0xc9, 0x38, 0x45, 0x50, 0x05, 0x1b, 0xda, 0x80, 0x39, 0x83, 0xcd, - 0x93, 0xdc, 0xb0, 0xd5, 0x52, 0x40, 0x38, 0xc6, 0xa0, 0x4a, 0x46, 0xb4, 0xed, 0x17, 0x76, 0xa5, - 0xac, 0x8a, 0x2c, 0x36, 0x15, 0xa9, 0xd5, 0xdd, 0x5e, 0xb4, 0xba, 0x03, 0xa6, 0x6b, 0x63, 0xb4, - 0xae, 0xe1, 0xc8, 0xd9, 0x59, 0x28, 0xf6, 0x48, 0x97, 0x87, 0x51, 0x99, 0x1f, 0xbc, 0xf5, 0x48, - 0x97, 0x45, 0xd1, 0x32, 0x2d, 0x74, 0x0d, 0xd3, 0xaa, 0xcd, 0xb3, 0x14, 0xc6, 0x1b, 0xf4, 0xe3, - 0x63, 0x0f, 0x1a, 0xb1, 0x3a, 0xb8, 0x56, 0x61, 0xaf, 0x4a, 0x8c, 0xb2, 0x63, 0x75, 0x58, 0xe9, - 0xe4, 0x79, 0xc7, 0xb5, 0x05, 0x46, 0xa7, 0x8f, 0x74, 0x0f, 0xc3, 0xb7, 0xdb, 0x8b, 0x59, 0x7b, - 0x98, 0xb4, 0x64, 0x28, 0x77, 0xdb, 0x8f, 0x61, 0xee, 0x35, 0x4f, 0x04, 0xb5, 0x2a, 0x93, 0xbf, - 0x36, 0x3a, 0xa5, 0x08, 0x0d, 0x52, 0xf0, 0xdb, 0x2c, 0x63, 0x7f, 0x99, 0x83, 0x33, 0x9b, 0xac, - 0xc4, 0x0f, 0xe5, 0xb1, 0x49, 0x50, 0xa9, 0xbb, 0x3e, 0x0e, 0x98, 0x09, 0x21, 0xc5, 0xc7, 0x2d, - 0x04, 0x50, 0x13, 0x16, 0xa4, 0x72, 0xa1, 0xa2, 0x30, 0x36, 0x94, 0x58, 0x71, 0xc3, 0x4d, 0xe5, - 0x63, 0x58, 0x49, 0x8c, 0x42, 0x94, 0xe3, 0x6b, 0x30, 0x1f, 0xe4, 0x2b, 0x7f, 0x10, 0x65, 0x9f, - 0xd6, 0x34, 0x94, 0x7b, 0x70, 0xba, 0xed, 0xe9, 0x8e, 0x97, 0x70, 0xc1, 0x18, 0xb2, 0x0c, 0x4d, - 0x8c, 0xca, 0x0a, 0xc0, 0xaf, 0x0d, 0xcb, 0x6d, 0x8f, 0xd8, 0x27, 0x50, 0x4a, 0xb3, 0x0e, 0x1d, - 0x3f, 0x19, 0xc8, 0xf5, 0x41, 0x36, 0x95, 0x15, 0x8e, 0x7d, 0x26, 0x7b, 0xbb, 0x0f, 0x67, 0x38, - 0xf4, 0x78, 0x92, 0x41, 0x9c, 0x95, 0xc0, 0x67, 0x52, 0xef, 0x0b, 0x38, 0x15, 0xac, 0xbd, 0x01, - 0xac, 0x70, 0x27, 0x0a, 0x2b, 0x5c, 0x1c, 0x32, 0xeb, 0x11, 0x54, 0xe1, 0x2f, 0xf2, 0xa1, 0xbc, - 0x9e, 0x01, 0x2a, 0xdc, 0x8f, 0x82, 0x0a, 0x97, 0x47, 0xe9, 0x8e, 0x60, 0x0a, 0xc9, 0xa8, 0x2d, - 0xa4, 0x44, 0xed, 0x17, 0x09, 0xe4, 0x61, 0x3a, 0x0b, 0xba, 0x89, 0x59, 0xfb, 0x8d, 0x00, 0x0f, - 0x2a, 0x07, 0x1e, 0xfc, 0xae, 0x7d, 0xa4, 0xf8, 0x6e, 0x0c, 0x78, 0x58, 0x1b, 0x69, 0xaf, 0x8f, - 0x3b, 0xfc, 0xcd, 0x34, 0x94, 0xfc, 0x77, 0x09, 0x9f, 0x27, 0xdd, 0x96, 0x4f, 0x71, 0x5b, 0x78, - 0x05, 0x2e, 0x7c, 0xad, 0x15, 0x78, 0x7a, 0xec, 0x15, 0xf8, 0x1c, 0x94, 0xd8, 0x83, 0xe6, 0xe0, - 0x43, 0xb1, 0xa2, 0x16, 0x19, 0x41, 0xc5, 0x87, 0x41, 0x18, 0xce, 0x4e, 0x14, 0x86, 0x31, 0xa8, - 0x63, 0x2e, 0x0e, 0x75, 0x3c, 0xf4, 0x57, 0x44, 0xbe, 0x88, 0x5e, 0x1d, 0xa2, 0x37, 0x75, 0x2d, - 0x6c, 0x45, 0xd7, 0x42, 0xbe, 0xae, 0xbe, 0x3f, 0x4c, 0xcb, 0x77, 0x16, 0xe8, 0xd8, 0xe7, 0x40, - 0x47, 0x38, 0x16, 0x45, 0x66, 0xbd, 0x0f, 0xe0, 0x27, 0x11, 0x89, 0x76, 0x9c, 0x1b, 0x32, 0x46, - 0x35, 0xc4, 0x4e, 0xd5, 0x46, 0xa6, 0x26, 0x38, 0x0d, 0x19, 0x2f, 0x3f, 0x66, 0x1c, 0x85, 0xfc, - 0xef, 0x4c, 0x28, 0xbf, 0x64, 0x1c, 0x1f, 0x3c, 0x4c, 0x40, 0x6c, 0x13, 0x46, 0xf1, 0x9d, 0x28, - 0xc2, 0x76, 0xc2, 0xa8, 0x4b, 0x00, 0x6c, 0xac, 0x72, 0xd1, 0x1d, 0xf1, 0x9a, 0x03, 0x20, 0x25, - 0x41, 0x69, 0xb0, 0x9d, 0xc1, 0xa1, 0x69, 0x99, 0xee, 0x11, 0x7f, 0x3f, 0xcb, 0x77, 0x06, 0x92, - 0xd4, 0x60, 0x17, 0x68, 0xf0, 0x1b, 0xd3, 0xd3, 0x3a, 0xc4, 0xc0, 0x2c, 0xa6, 0x67, 0xd4, 0x22, - 0x25, 0x6c, 0x12, 0x03, 0x07, 0x5f, 0x5e, 0xf1, 0x64, 0x5f, 0x5e, 0x29, 0xf6, 0xe5, 0x9d, 0x81, - 0x59, 0x07, 0xeb, 0x2e, 0xb1, 0xc4, 0x56, 0x53, 0xb4, 0xe8, 0xd4, 0xf4, 0xb1, 0xeb, 0xd2, 0x9e, - 0x44, 0xb9, 0x26, 0x9a, 0xa1, 0x32, 0x73, 0x7e, 0x64, 0x99, 0x39, 0xe4, 0x58, 0x22, 0x56, 0x66, - 0x56, 0x46, 0x96, 0x99, 0xe3, 0x9c, 0x4a, 0x84, 0x0a, 0xed, 0x85, 0xf1, 0x0a, 0xed, 0x70, 0x5d, - 0xba, 0x18, 0xa9, 0x4b, 0xbf, 0xcd, 0x8f, 0xf5, 0xd7, 0x39, 0x58, 0x49, 0x7c, 0x56, 0xe2, 0x73, - 0xbd, 0x1b, 0x3b, 0xe0, 0x58, 0x1b, 0xe9, 0x33, 0xff, 0x7c, 0xe3, 0x69, 0xe4, 0x7c, 0xe3, 0xc3, - 0xd1, 0x82, 0x6f, 0xfd, 0x78, 0xe3, 0x8f, 0x72, 0xf0, 0xce, 0xbe, 0x6d, 0xc4, 0x2a, 0x3c, 0xb1, - 0x31, 0x1f, 0x3f, 0x71, 0x3c, 0x94, 0xb5, 0x7e, 0x7e, 0x52, 0xf4, 0x82, 0xcb, 0x29, 0x0a, 0x5c, - 0xcc, 0x36, 0x43, 0x94, 0x4c, 0x3f, 0x81, 0xc5, 0xed, 0x37, 0xb8, 0xd3, 0x3e, 0xb6, 0x3a, 0x13, - 0x98, 0x56, 0x85, 0x42, 0xa7, 0x6f, 0x08, 0xc4, 0x8f, 0x3e, 0x86, 0xab, 0xc0, 0x42, 0xb4, 0x0a, - 0xd4, 0xa0, 0x1a, 0xf4, 0x20, 0xa6, 0xf7, 0x0c, 0x9d, 0x5e, 0x83, 0x32, 0x53, 0xe5, 0xf3, 0xaa, - 0x68, 0x09, 0x3a, 0x76, 0x1c, 0x36, 0x66, 0x4e, 0xc7, 0x8e, 0x13, 0xcd, 0x16, 0x85, 0x68, 0xb6, - 0x50, 0xfe, 0x2c, 0x07, 0x65, 0xda, 0xc3, 0xd7, 0xb2, 0x5f, 0x6c, 0xb5, 0x0a, 0xc1, 0x56, 0xcb, - 0xdf, 0xb1, 0x4d, 0x87, 0x77, 0x6c, 0x81, 0xe5, 0x33, 0x8c, 0x9c, 0xb4, 0x7c, 0xd6, 0xa7, 0x63, - 0xc7, 0x51, 0x2e, 0xc2, 0x3c, 0xb7, 0x4d, 0x8c, 0xbc, 0x0a, 0x85, 0x81, 0xd3, 0x93, 0x71, 0x34, - 0x70, 0x7a, 0xca, 0x1f, 0xe7, 0xa0, 0xd2, 0xf0, 0x3c, 0xbd, 0x73, 0x34, 0xc1, 0x00, 0x7c, 0xe3, - 0xf2, 0x61, 0xe3, 0x92, 0x83, 0x08, 0xcc, 0x9d, 0xce, 0x30, 0x77, 0x26, 0x62, 0xae, 0x02, 0x0b, - 0xd2, 0x96, 0x4c, 0x83, 0x5b, 0x80, 0x76, 0x89, 0xe3, 0x3d, 0x21, 0xce, 0x6b, 0xdd, 0x31, 0x26, - 0xdb, 0x81, 0x21, 0x98, 0x16, 0x97, 0x2a, 0x0b, 0xd7, 0x66, 0x54, 0xf6, 0xac, 0x5c, 0x85, 0x53, - 0x11, 0x7d, 0x99, 0x1d, 0x3f, 0x82, 0x32, 0xcb, 0xfb, 0xa2, 0x14, 0xbf, 0x1d, 0x3e, 0x7a, 0x18, - 0x6b, 0x95, 0x50, 0x7e, 0x17, 0x96, 0x68, 0x7d, 0xc0, 0xe8, 0xfe, 0xa7, 0xf8, 0xfd, 0x58, 0x9d, - 0x7a, 0x21, 0x43, 0x51, 0xac, 0x46, 0xfd, 0xdb, 0x1c, 0xcc, 0x30, 0x7a, 0x62, 0xcd, 0x3e, 0x07, - 0x25, 0x07, 0xdb, 0x44, 0xf3, 0xf4, 0xae, 0x7f, 0x85, 0x95, 0x12, 0xf6, 0xf4, 0xae, 0xcb, 0x6e, - 0xe0, 0xd2, 0x97, 0x86, 0xd9, 0xc5, 0xae, 0x27, 0xef, 0xb1, 0x96, 0x29, 0x6d, 0x8b, 0x93, 0xa8, - 0x93, 0x5c, 0xf3, 0xf7, 0x79, 0xdd, 0x39, 0xad, 0xb2, 0x67, 0xb4, 0xce, 0x6f, 0x65, 0x8d, 0x03, - 0x0f, 0xb3, 0x3b, 0x5b, 0x75, 0x28, 0xc6, 0x10, 0x61, 0xbf, 0xad, 0x6c, 0x03, 0x0a, 0x7b, 0x41, - 0xf8, 0xfb, 0x16, 0xcc, 0x32, 0x27, 0xc9, 0xea, 0x68, 0x25, 0xc3, 0x0d, 0xaa, 0x60, 0x53, 0x74, - 0x40, 0xdc, 0xc1, 0x91, 0x8a, 0x68, 0xf2, 0x59, 0x19, 0x52, 0x21, 0xfd, 0x43, 0x0e, 0x4e, 0x45, - 0xfa, 0x10, 0xb6, 0xde, 0x8c, 0x76, 0x92, 0x69, 0xaa, 0xe8, 0x60, 0x33, 0xb2, 0x24, 0xdc, 0xca, - 0x32, 0xe9, 0xb7, 0xb4, 0x1c, 0xfc, 0x63, 0x0e, 0xa0, 0x31, 0xf0, 0x8e, 0x04, 0x32, 0x18, 0x9e, - 0x99, 0x5c, 0x74, 0x66, 0xe8, 0x3b, 0x5b, 0x77, 0xdd, 0xd7, 0xc4, 0x91, 0x7b, 0x1a, 0xbf, 0xcd, - 0x30, 0xbc, 0x81, 0x77, 0x24, 0x8f, 0x75, 0xe8, 0x33, 0xba, 0x0c, 0x0b, 0xfc, 0xda, 0xb4, 0xa6, - 0x1b, 0x86, 0x83, 0x5d, 0x57, 0x9c, 0xef, 0x54, 0x38, 0xb5, 0xc1, 0x89, 0x94, 0xcd, 0x34, 0xb0, - 0xe5, 0x99, 0xde, 0xb1, 0xe6, 0x91, 0x97, 0xd8, 0x12, 0x7b, 0x93, 0x8a, 0xa4, 0xee, 0x51, 0x22, - 0x65, 0x73, 0x70, 0xd7, 0x74, 0x3d, 0x47, 0xb2, 0xc9, 0xb3, 0x04, 0x41, 0x65, 0x6c, 0x74, 0x52, - 0xaa, 0xbb, 0x83, 0x5e, 0x8f, 0xbb, 0xf8, 0xe4, 0xd3, 0xfe, 0x81, 0x18, 0x50, 0x3e, 0x2b, 0xa6, - 0x03, 0xa7, 0x89, 0xe1, 0xbe, 0x45, 0x10, 0xe6, 0x03, 0x58, 0x0a, 0x8d, 0x41, 0x84, 0x55, 0xa4, - 0x88, 0xcc, 0x45, 0x8b, 0x48, 0xe5, 0x29, 0x20, 0x8e, 0x3b, 0x7c, 0xcd, 0x71, 0x2b, 0xa7, 0xe1, - 0x54, 0x44, 0x91, 0x58, 0x89, 0x6f, 0x40, 0x45, 0xdc, 0xb1, 0x11, 0x81, 0x72, 0x16, 0x8a, 0x34, - 0xa3, 0x76, 0x4c, 0x43, 0x9e, 0xf9, 0xcd, 0xd9, 0xc4, 0xd8, 0x34, 0x0d, 0x47, 0xf9, 0x14, 0x2a, - 0x2a, 0xef, 0x47, 0xf0, 0x3e, 0x81, 0x05, 0x71, 0x23, 0x47, 0x8b, 0xdc, 0x74, 0x4b, 0xbb, 0x09, - 0x1d, 0xee, 0x44, 0xad, 0x58, 0xe1, 0xa6, 0x62, 0x40, 0x9d, 0x97, 0x0c, 0x11, 0xf5, 0x72, 0xb0, - 0x4f, 0x40, 0xfe, 0x06, 0x60, 0x64, 0x2f, 0x51, 0xf9, 0x8a, 0x13, 0x6e, 0x2a, 0x17, 0xe0, 0x5c, - 0x6a, 0x2f, 0xc2, 0x13, 0x36, 0x54, 0x83, 0x17, 0x86, 0x29, 0x0f, 0x3f, 0xd9, 0xa1, 0x66, 0x2e, - 0x74, 0xa8, 0x79, 0xc6, 0x2f, 0x12, 0xf3, 0x72, 0x11, 0x63, 0x15, 0x60, 0x50, 0xee, 0x17, 0xb2, - 0xca, 0xfd, 0xe9, 0x48, 0xb9, 0xaf, 0xb4, 0x7d, 0x7f, 0x8a, 0x6d, 0xd8, 0x63, 0xb6, 0x5d, 0xe4, - 0x7d, 0xcb, 0x84, 0xa8, 0x0c, 0x1b, 0x25, 0x67, 0x55, 0x43, 0x52, 0xca, 0x75, 0xa8, 0x44, 0x53, - 0x63, 0x28, 0xcf, 0xe5, 0x12, 0x79, 0x6e, 0x21, 0x96, 0xe2, 0x3e, 0x8a, 0x55, 0xc0, 0xd9, 0x3e, - 0x8e, 0xd5, 0xbf, 0x0f, 0x22, 0xc9, 0xee, 0x46, 0xca, 0x79, 0xe4, 0x6f, 0x29, 0xcf, 0x2d, 0x8b, - 0xf5, 0xe0, 0x89, 0x4b, 0xe5, 0xc5, 0xa0, 0x95, 0x4b, 0x50, 0xde, 0xcf, 0xba, 0x66, 0x3f, 0x2d, - 0xcf, 0xfe, 0xef, 0xc0, 0xf2, 0x13, 0xb3, 0x87, 0xdd, 0x63, 0xd7, 0xc3, 0xfd, 0x26, 0x4b, 0x4a, - 0x87, 0x26, 0x76, 0xd0, 0x2a, 0x00, 0xdb, 0xc2, 0xd8, 0xc4, 0xf4, 0x6f, 0x6f, 0x87, 0x28, 0xca, - 0x7f, 0xe5, 0x60, 0x31, 0x10, 0xdc, 0x67, 0x5b, 0xb7, 0xf3, 0x50, 0xa2, 0xe3, 0x75, 0x3d, 0xbd, - 0x6f, 0xcb, 0xf3, 0x2c, 0x9f, 0x80, 0xee, 0xc3, 0xcc, 0xa1, 0x2b, 0x21, 0xa3, 0x54, 0x00, 0x3d, - 0xcd, 0x10, 0x75, 0xfa, 0xd0, 0x6d, 0x1a, 0xe8, 0x63, 0x80, 0x81, 0x8b, 0x0d, 0x71, 0x86, 0x55, - 0xc8, 0xaa, 0x16, 0xf6, 0xc3, 0x67, 0xb5, 0x54, 0x80, 0x5f, 0x1b, 0x78, 0x00, 0x65, 0xd3, 0x22, - 0x06, 0x66, 0x67, 0xb5, 0x86, 0x40, 0x95, 0x46, 0x88, 0x03, 0x97, 0xd8, 0x77, 0xb1, 0xa1, 0x60, - 0xb1, 0x16, 0x4a, 0xff, 0x8a, 0x40, 0x69, 0xc1, 0x12, 0x4f, 0x5a, 0x87, 0xbe, 0xe1, 0x32, 0x62, - 0xd7, 0x86, 0x8d, 0x8e, 0x79, 0x4b, 0xad, 0x9a, 0xa2, 0xb4, 0x91, 0xa2, 0xca, 0x3d, 0x38, 0x1d, - 0xd9, 0x21, 0x4d, 0xb0, 0x65, 0x51, 0x76, 0x63, 0x40, 0x49, 0x10, 0xce, 0x02, 0x86, 0x90, 0xd1, - 0x3c, 0x0a, 0x86, 0x70, 0x39, 0x0c, 0xe1, 0x2a, 0x5f, 0xc0, 0xd9, 0x08, 0xa2, 0x13, 0xb1, 0xe8, - 0x41, 0xac, 0x72, 0xbb, 0x32, 0x4a, 0x6b, 0xac, 0x84, 0xfb, 0x9f, 0x1c, 0x2c, 0xa7, 0x31, 0x9c, - 0x10, 0x71, 0xfc, 0x49, 0xc6, 0x15, 0xb1, 0xbb, 0xe3, 0x99, 0xf5, 0x8d, 0xa0, 0xb5, 0x7b, 0x50, - 0x4f, 0xf3, 0x67, 0x72, 0x96, 0x0a, 0x93, 0xcc, 0xd2, 0xcf, 0x0b, 0x21, 0xe4, 0xbd, 0xe1, 0x79, - 0x8e, 0x79, 0x30, 0xa0, 0x21, 0xff, 0xd6, 0xd1, 0xac, 0xa6, 0x8f, 0xcb, 0x70, 0xd7, 0xde, 0x1e, - 0x22, 0x1e, 0xd8, 0x91, 0x8a, 0xcd, 0x7c, 0x16, 0xc5, 0x66, 0x38, 0xa6, 0x7e, 0x67, 0x3c, 0x7d, - 0xdf, 0x59, 0x00, 0xf4, 0xe7, 0x79, 0x58, 0x88, 0x4e, 0x11, 0xda, 0x06, 0xd0, 0x7d, 0xcb, 0xc5, - 0x87, 0x72, 0x79, 0xac, 0x61, 0xaa, 0x21, 0x41, 0xf4, 0x3e, 0x14, 0x3a, 0xf6, 0x40, 0xcc, 0x5a, - 0xca, 0x61, 0xf0, 0xa6, 0x3d, 0xe0, 0x19, 0x85, 0xb2, 0xd1, 0x3d, 0x15, 0x3f, 0xdb, 0xcf, 0xce, - 0x92, 0x2f, 0xd8, 0x7b, 0x2e, 0x23, 0x98, 0xd1, 0x33, 0x58, 0x78, 0xed, 0x98, 0x9e, 0x7e, 0xd0, - 0xc3, 0x5a, 0x4f, 0x3f, 0xc6, 0x8e, 0xc8, 0x92, 0x63, 0x24, 0xb2, 0x8a, 0x14, 0x7c, 0x4e, 0xe5, - 0x94, 0x3f, 0x80, 0xa2, 0xb4, 0x68, 0xc4, 0x8a, 0xb0, 0x07, 0x2b, 0x03, 0xca, 0xa6, 0xb1, 0xeb, - 0x5c, 0x96, 0x6e, 0x11, 0xcd, 0xc5, 0x74, 0x19, 0x97, 0x17, 0xcd, 0x47, 0xa4, 0xe8, 0x65, 0x26, - 0xbd, 0x49, 0x1c, 0xdc, 0xd2, 0x2d, 0xd2, 0xe6, 0xa2, 0xca, 0x2b, 0x28, 0x87, 0x06, 0x38, 0xc2, - 0x84, 0x26, 0x2c, 0xc9, 0xa3, 0x78, 0x17, 0x7b, 0x62, 0x79, 0x19, 0xab, 0xf3, 0x45, 0x21, 0xd7, - 0xc6, 0x1e, 0xbf, 0x3e, 0xf1, 0x00, 0xce, 0xaa, 0x98, 0xd8, 0xd8, 0xf2, 0xe7, 0xf3, 0x39, 0xe9, - 0x4e, 0x90, 0xc1, 0xcf, 0x43, 0x3d, 0x4d, 0x9e, 0xe7, 0x87, 0x1b, 0xe7, 0xa1, 0x28, 0x7f, 0x33, - 0x89, 0xe6, 0xa0, 0xb0, 0xb7, 0xb9, 0x5b, 0x9d, 0xa2, 0x0f, 0xfb, 0x5b, 0xbb, 0xd5, 0xdc, 0x8d, - 0x3e, 0x54, 0xe3, 0x3f, 0x13, 0x44, 0x2b, 0x70, 0x6a, 0x57, 0xdd, 0xd9, 0x6d, 0x3c, 0x6d, 0xec, - 0x35, 0x77, 0x5a, 0xda, 0xae, 0xda, 0xfc, 0xa4, 0xb1, 0xb7, 0x5d, 0x9d, 0x42, 0x6b, 0x70, 0x21, - 0xfc, 0xe2, 0xd9, 0x4e, 0x7b, 0x4f, 0xdb, 0xdb, 0xd1, 0x36, 0x77, 0x5a, 0x7b, 0x8d, 0x66, 0x6b, - 0x5b, 0xad, 0xe6, 0xd0, 0x05, 0x38, 0x1b, 0x66, 0x79, 0xdc, 0xdc, 0x6a, 0xaa, 0xdb, 0x9b, 0xf4, - 0xb9, 0xf1, 0xbc, 0x9a, 0xbf, 0x71, 0x1b, 0x2a, 0x91, 0x5f, 0xf5, 0x51, 0x43, 0x76, 0x77, 0xb6, - 0xaa, 0x53, 0xa8, 0x02, 0xa5, 0xb0, 0x9e, 0x22, 0x4c, 0xb7, 0x76, 0xb6, 0xb6, 0xab, 0xf9, 0x1b, - 0xf7, 0x60, 0x31, 0x76, 0x9f, 0x14, 0x2d, 0x41, 0xa5, 0xdd, 0x68, 0x6d, 0x3d, 0xde, 0xf9, 0x4c, - 0x53, 0xb7, 0x1b, 0x5b, 0x9f, 0x57, 0xa7, 0xd0, 0x32, 0x54, 0x25, 0xa9, 0xb5, 0xb3, 0xc7, 0xa9, - 0xb9, 0x1b, 0x2f, 0x63, 0x5f, 0x16, 0x46, 0xa7, 0x61, 0xc9, 0xef, 0x46, 0xdb, 0x54, 0xb7, 0x1b, - 0x7b, 0xdb, 0xb4, 0xf7, 0x08, 0x59, 0xdd, 0x6f, 0xb5, 0x9a, 0xad, 0xa7, 0xd5, 0x1c, 0xd5, 0x1a, - 0x90, 0xb7, 0x3f, 0x6b, 0x52, 0xe6, 0x7c, 0x94, 0x79, 0xbf, 0xf5, 0xc3, 0xd6, 0xce, 0xa7, 0xad, - 0x6a, 0x61, 0xe3, 0xef, 0x97, 0x60, 0x41, 0x96, 0x77, 0xd8, 0x61, 0x77, 0x59, 0x76, 0x61, 0x4e, - 0xfe, 0xf2, 0x36, 0x25, 0x2f, 0x47, 0x7f, 0x2f, 0x5c, 0x5f, 0x1b, 0xc2, 0x21, 0xaa, 0xec, 0x29, - 0x74, 0xc0, 0xaa, 0xde, 0xd0, 0xfd, 0xde, 0x2b, 0xa9, 0x35, 0x66, 0xe2, 0x4a, 0x71, 0xfd, 0xea, - 0x48, 0x3e, 0xbf, 0x0f, 0x4c, 0x0b, 0xdb, 0xf0, 0x0f, 0x58, 0xd0, 0xd5, 0xb4, 0x8a, 0x34, 0xe5, - 0x17, 0x32, 0xf5, 0x6b, 0xa3, 0x19, 0xfd, 0x6e, 0x5e, 0x42, 0x35, 0xfe, 0x63, 0x16, 0x94, 0x02, - 0x98, 0x66, 0xfc, 0x62, 0xa6, 0x7e, 0x63, 0x1c, 0xd6, 0x70, 0x67, 0x89, 0x9f, 0x7d, 0x5c, 0x1f, - 0xe7, 0x1e, 0x7d, 0x66, 0x67, 0x59, 0x57, 0xee, 0xb9, 0x03, 0xa3, 0x77, 0x77, 0x51, 0xea, 0x6f, - 0x2c, 0x52, 0x6e, 0x7e, 0xa7, 0x39, 0x30, 0xfd, 0x1a, 0xb0, 0x32, 0x85, 0x8e, 0x60, 0x31, 0x76, - 0x29, 0x01, 0xa5, 0x88, 0xa7, 0xdf, 0xbe, 0xa8, 0x5f, 0x1f, 0x83, 0x33, 0x1a, 0x11, 0xe1, 0x4b, - 0x08, 0xe9, 0x11, 0x91, 0x72, 0xc5, 0x21, 0x3d, 0x22, 0x52, 0xef, 0x33, 0xb0, 0xe0, 0x8e, 0x5c, - 0x3e, 0x48, 0x0b, 0xee, 0xb4, 0x2b, 0x0f, 0xf5, 0xab, 0x23, 0xf9, 0xc2, 0x4e, 0x8b, 0x5d, 0x45, - 0x48, 0x73, 0x5a, 0xfa, 0x55, 0x87, 0xfa, 0xf5, 0x31, 0x38, 0xe3, 0x51, 0x10, 0x1c, 0x6c, 0x66, - 0x45, 0x41, 0xe2, 0x18, 0x3e, 0x2b, 0x0a, 0x92, 0x67, 0xa4, 0x22, 0x0a, 0x62, 0x07, 0x92, 0xd7, - 0xc6, 0x38, 0x40, 0xc9, 0x8e, 0x82, 0xf4, 0xa3, 0x16, 0x65, 0x0a, 0xfd, 0x61, 0x0e, 0x6a, 0x59, - 0x87, 0x13, 0x28, 0xa5, 0xaa, 0x1b, 0x71, 0x9e, 0x52, 0xdf, 0x98, 0x44, 0xc4, 0xb7, 0xe2, 0x4b, - 0x40, 0xc9, 0xd5, 0x0e, 0xbd, 0x97, 0x36, 0x33, 0x19, 0x6b, 0x6a, 0xfd, 0xfd, 0xf1, 0x98, 0xfd, - 0x2e, 0xdb, 0x50, 0x94, 0xc7, 0x21, 0x28, 0x25, 0x4b, 0xc7, 0x0e, 0x63, 0xea, 0xca, 0x30, 0x16, - 0x5f, 0xe9, 0x53, 0x98, 0xa6, 0x54, 0x74, 0x21, 0x9d, 0x5b, 0x2a, 0x5b, 0xcd, 0x7a, 0xed, 0x2b, - 0x7a, 0x01, 0xb3, 0x1c, 0xff, 0x47, 0x29, 0x78, 0x43, 0xe4, 0x94, 0xa2, 0x7e, 0x31, 0x9b, 0xc1, - 0x57, 0xf7, 0x63, 0xfe, 0x4f, 0x19, 0x04, 0xb4, 0x8f, 0xde, 0x4d, 0xff, 0x95, 0x6c, 0xf4, 0x24, - 0xa1, 0x7e, 0x79, 0x04, 0x57, 0xf8, 0xa3, 0x88, 0xd5, 0xba, 0x57, 0x47, 0x6e, 0x58, 0xb2, 0x3f, - 0x8a, 0xf4, 0x2d, 0x11, 0x0f, 0x92, 0xe4, 0x96, 0x29, 0x2d, 0x48, 0x32, 0x37, 0xaa, 0x69, 0x41, - 0x92, 0xbd, 0x0b, 0x53, 0xa6, 0x90, 0x07, 0xa7, 0x52, 0x00, 0x32, 0xf4, 0x7e, 0x56, 0x90, 0xa7, - 0xa1, 0x75, 0xf5, 0x9b, 0x63, 0x72, 0x87, 0x27, 0x5f, 0x7c, 0xf4, 0xef, 0x64, 0xa3, 0x46, 0x99, - 0x93, 0x1f, 0xff, 0xc4, 0x37, 0xfe, 0xad, 0x00, 0xf3, 0x1c, 0xfc, 0x14, 0x15, 0xcc, 0xe7, 0x00, - 0xc1, 0xb9, 0x03, 0xba, 0x94, 0xee, 0x93, 0xc8, 0xd9, 0x4c, 0xfd, 0xdd, 0xe1, 0x4c, 0xe1, 0x40, - 0x0b, 0x61, 0xf8, 0x69, 0x81, 0x96, 0x3c, 0xaa, 0x48, 0x0b, 0xb4, 0x94, 0x83, 0x00, 0x65, 0x0a, - 0x7d, 0x02, 0x25, 0x1f, 0x2c, 0x46, 0x69, 0x60, 0x73, 0x0c, 0x0d, 0xaf, 0x5f, 0x1a, 0xca, 0x13, - 0xb6, 0x3a, 0x84, 0x04, 0xa7, 0x59, 0x9d, 0x44, 0x9c, 0xd3, 0xac, 0x4e, 0x83, 0x93, 0x03, 0x9f, - 0x70, 0xbc, 0x28, 0xd3, 0x27, 0x11, 0xb8, 0x2e, 0xd3, 0x27, 0x51, 0xd0, 0x49, 0x99, 0x7a, 0x7c, - 0xe5, 0x57, 0xbf, 0x59, 0xcd, 0xfd, 0xf3, 0x6f, 0x56, 0xa7, 0x7e, 0xf6, 0xd5, 0x6a, 0xee, 0x57, - 0x5f, 0xad, 0xe6, 0xfe, 0xe9, 0xab, 0xd5, 0xdc, 0xbf, 0x7f, 0xb5, 0x9a, 0xfb, 0xd3, 0xff, 0x58, - 0x9d, 0xfa, 0x51, 0x51, 0x4a, 0x1f, 0xcc, 0xb2, 0x7f, 0xad, 0xf2, 0xe1, 0xff, 0x05, 0x00, 0x00, - 0xff, 0xff, 0x36, 0xf8, 0x35, 0x67, 0x20, 0x47, 0x00, 0x00, + 0x2b, 0xa8, 0x28, 0x5c, 0xf5, 0x94, 0xd5, 0xa0, 0x55, 0x00, 0xdb, 0x31, 0x5f, 0x99, 0x3d, 0xdc, + 0xc5, 0x46, 0x6d, 0x96, 0x29, 0x0d, 0x51, 0xd0, 0x07, 0xb0, 0xec, 0xe2, 0x4e, 0x87, 0xf4, 0x6d, + 0xcd, 0x76, 0xc8, 0xa1, 0xd9, 0xc3, 0xdc, 0xfb, 0xe7, 0x98, 0xf7, 0x23, 0x51, 0xb7, 0xcb, 0xab, + 0xd8, 0x3a, 0x78, 0xc0, 0x62, 0x1a, 0xed, 0x29, 0x6b, 0xbc, 0x56, 0x1c, 0xa3, 0xab, 0xc0, 0xba, + 0xca, 0x4c, 0x52, 0x7e, 0x99, 0x87, 0xd3, 0x6c, 0x24, 0x77, 0x89, 0x21, 0xa6, 0x59, 0x04, 0xa9, + 0x4b, 0x50, 0xe9, 0x30, 0x9d, 0x9a, 0xad, 0x3b, 0xd8, 0xf2, 0xc4, 0x22, 0x9d, 0xe7, 0xc4, 0x5d, + 0x46, 0x43, 0x9f, 0x41, 0xd5, 0x15, 0x5e, 0xa1, 0x75, 0xb8, 0x5b, 0x88, 0x39, 0xbb, 0x99, 0x34, + 0x61, 0x88, 0x2f, 0xa9, 0x8b, 0x6e, 0xc2, 0xb9, 0xe6, 0xdc, 0x63, 0xb7, 0xe3, 0xf5, 0x78, 0xb4, + 0x2b, 0x6f, 0x7c, 0x2f, 0x43, 0x61, 0xdc, 0xf0, 0xf5, 0x36, 0x17, 0xdb, 0xb6, 0x3c, 0xe7, 0x58, + 0x95, 0x4a, 0xea, 0xf7, 0x60, 0x3e, 0x5c, 0x81, 0xaa, 0x50, 0x78, 0x89, 0x8f, 0x45, 0xa7, 0xe8, + 0x67, 0xb0, 0x08, 0x78, 0xac, 0xe1, 0x85, 0x7b, 0xf9, 0xdf, 0xcb, 0x29, 0x0e, 0xa0, 0xa0, 0x95, + 0x17, 0xd8, 0xd3, 0x0d, 0xdd, 0xd3, 0x11, 0x82, 0x69, 0xb6, 0x8d, 0x70, 0x15, 0xec, 0x9b, 0x6a, + 0x1d, 0x88, 0xc5, 0x5b, 0x52, 0xe9, 0x27, 0x3a, 0x0f, 0x25, 0xdf, 0xd1, 0xc5, 0x5e, 0x12, 0x10, + 0x68, 0x4c, 0xd7, 0x3d, 0x0f, 0xf7, 0x6d, 0x8f, 0xb9, 0x58, 0x45, 0x95, 0x45, 0xe5, 0xbf, 0xa7, + 0xa1, 0x9a, 0x98, 0x93, 0x47, 0x50, 0xec, 0x8b, 0xe6, 0xc5, 0x42, 0x7b, 0x37, 0x25, 0xb0, 0x27, + 0x4c, 0x55, 0x7d, 0x29, 0x1a, 0x37, 0x69, 0x0c, 0x0d, 0xed, 0x7f, 0x7e, 0x99, 0xce, 0x78, 0x8f, + 0x74, 0x35, 0xc3, 0x74, 0x70, 0xc7, 0x23, 0xce, 0xb1, 0x30, 0x77, 0xbe, 0x47, 0xba, 0x5b, 0x92, + 0x86, 0xee, 0x01, 0x18, 0x96, 0x4b, 0x27, 0xfb, 0xd0, 0xec, 0x32, 0xa3, 0xcb, 0x1b, 0xe7, 0x92, + 0x46, 0xf8, 0x9b, 0x9d, 0x5a, 0x32, 0x2c, 0x57, 0x98, 0xff, 0x18, 0x2a, 0x74, 0xcf, 0xd0, 0xfa, + 0x7c, 0x9f, 0xe2, 0x2b, 0xa5, 0xbc, 0x71, 0x21, 0xad, 0x0f, 0xfe, 0x6e, 0xa6, 0xce, 0xdb, 0x41, + 0xc1, 0x45, 0x4f, 0x60, 0x96, 0x05, 0x6f, 0xb7, 0x36, 0xcb, 0x84, 0xd7, 0x87, 0x0d, 0x80, 0xf0, + 0x88, 0xe7, 0x4c, 0x80, 0x3b, 0x84, 0x90, 0x46, 0xfb, 0x50, 0xd6, 0x2d, 0x8b, 0x78, 0x3a, 0x0f, + 0x34, 0x73, 0x4c, 0xd9, 0x87, 0x63, 0x28, 0x6b, 0x04, 0x52, 0x5c, 0x63, 0x58, 0x0f, 0xfa, 0x01, + 0xcc, 0xb0, 0x48, 0x24, 0x16, 0xe2, 0xd5, 0x31, 0x9d, 0x56, 0xe5, 0x52, 0xf5, 0xbb, 0x50, 0x0e, + 0x19, 0x3b, 0x89, 0x93, 0xd6, 0x1f, 0x40, 0x35, 0x6e, 0xda, 0x44, 0x4e, 0xae, 0xc2, 0xb2, 0x3a, + 0xb0, 0x02, 0xc3, 0x64, 0xf6, 0x75, 0x0f, 0x66, 0xc5, 0x64, 0x73, 0x8f, 0x53, 0x46, 0x8f, 0x91, + 0x2a, 0x24, 0x94, 0x1f, 0xc0, 0xe9, 0x98, 0x4e, 0x91, 0xa4, 0xbd, 0x0b, 0x0b, 0x36, 0x31, 0x34, + 0x97, 0x93, 0x35, 0xd3, 0x90, 0xd1, 0xc5, 0xf6, 0x79, 0x9b, 0x06, 0x15, 0x6f, 0x7b, 0xc4, 0x4e, + 0xda, 0x34, 0x9e, 0x78, 0x0d, 0xce, 0xc4, 0xc5, 0x79, 0xf3, 0xca, 0x43, 0x58, 0x51, 0x71, 0x9f, + 0xbc, 0xc2, 0x27, 0x55, 0x5d, 0x87, 0x5a, 0x52, 0x81, 0x50, 0xfe, 0x39, 0xac, 0x04, 0xd4, 0xb6, + 0xa7, 0x7b, 0x03, 0x77, 0x22, 0xe5, 0x22, 0x83, 0x3d, 0x20, 0x2e, 0x9f, 0xa5, 0xa2, 0x2a, 0x8b, + 0xca, 0xf5, 0xb0, 0xea, 0x16, 0x4f, 0x18, 0x78, 0x0b, 0x68, 0x01, 0xf2, 0xa6, 0x2d, 0xd4, 0xe5, + 0x4d, 0x5b, 0x79, 0x06, 0x25, 0x7f, 0xc7, 0x45, 0xf7, 0x83, 0xd4, 0x31, 0x3f, 0xee, 0xfe, 0xec, + 0x67, 0x97, 0x7b, 0x89, 0x1d, 0x42, 0x34, 0x79, 0x1f, 0xc0, 0x8f, 0x64, 0x72, 0xe3, 0x3f, 0x37, + 0x44, 0xb1, 0x1a, 0x62, 0x57, 0xfe, 0x35, 0x12, 0xdf, 0x42, 0x9d, 0x30, 0xfc, 0x4e, 0x18, 0x91, + 0x78, 0x97, 0x3f, 0x51, 0xbc, 0xfb, 0x08, 0x66, 0x5c, 0x4f, 0xf7, 0xb0, 0x48, 0x8e, 0xd6, 0x86, + 0x89, 0x53, 0x23, 0xb0, 0xca, 0xf9, 0xd1, 0x05, 0x80, 0x8e, 0x83, 0x75, 0x0f, 0x1b, 0x9a, 0xce, + 0x83, 0x73, 0x41, 0x2d, 0x09, 0x4a, 0xc3, 0x43, 0x9b, 0x41, 0x82, 0x37, 0xc3, 0x0c, 0xbb, 0x3e, + 0x4c, 0x73, 0x64, 0xaa, 0x82, 0x54, 0xcf, 0x0f, 0x16, 0xb3, 0x63, 0x06, 0x0b, 0xa1, 0x80, 0x4b, + 0x85, 0x42, 0xe1, 0xdc, 0xe8, 0x50, 0xc8, 0x45, 0xc7, 0x09, 0x85, 0xc5, 0xd1, 0xa1, 0x50, 0x28, + 0x1b, 0x1a, 0x0a, 0xbf, 0xcd, 0x58, 0xf6, 0x2f, 0x39, 0xa8, 0x25, 0xd7, 0xa0, 0x88, 0x3d, 0xf7, + 0x60, 0xd6, 0x65, 0x94, 0x71, 0x02, 0x9a, 0x90, 0x15, 0x12, 0xe8, 0x19, 0x4c, 0x9b, 0xd6, 0x21, + 0x61, 0x67, 0xb3, 0xd4, 0x94, 0x24, 0xab, 0xd5, 0xf5, 0xa6, 0x75, 0x48, 0xf8, 0x20, 0x31, 0x0d, + 0xf5, 0x8f, 0xa0, 0xe4, 0x93, 0x26, 0xea, 0xdb, 0x0e, 0x2c, 0xc7, 0x5c, 0x96, 0xe7, 0xf0, 0xbe, + 0xa7, 0xe7, 0x26, 0xf3, 0x74, 0xe5, 0x67, 0xf9, 0xf0, 0x4a, 0x7c, 0x62, 0xf6, 0x3c, 0xec, 0x24, + 0x56, 0xe2, 0xc7, 0x52, 0x3b, 0x5f, 0x86, 0x57, 0x46, 0x6a, 0xe7, 0xa9, 0xa6, 0x58, 0x4c, 0x3f, + 0x86, 0x05, 0xe6, 0x6b, 0x9a, 0x8b, 0x7b, 0x2c, 0x8f, 0x10, 0x39, 0xdd, 0xf7, 0x87, 0xa9, 0xe1, + 0x96, 0x70, 0x8f, 0x6d, 0x0b, 0x39, 0x3e, 0x82, 0x95, 0x5e, 0x98, 0x56, 0x7f, 0x04, 0x28, 0xc9, + 0x34, 0xd1, 0x98, 0xb6, 0x69, 0x88, 0xa3, 0x07, 0xd8, 0x94, 0xcd, 0xef, 0x90, 0x99, 0x31, 0x8e, + 0xaf, 0x70, 0x83, 0x55, 0x21, 0xa1, 0xfc, 0xaa, 0x00, 0x10, 0x54, 0xfe, 0x3f, 0x8a, 0x6d, 0x8f, + 0xfc, 0xb8, 0xc2, 0xf3, 0xb3, 0x6b, 0xc3, 0x14, 0xa7, 0x46, 0x94, 0x9d, 0x68, 0x44, 0xe1, 0x99, + 0xda, 0xcd, 0xa1, 0x6a, 0xbe, 0xb3, 0xb1, 0xe4, 0x39, 0x9c, 0x89, 0xfb, 0x86, 0x08, 0x24, 0x1b, + 0x30, 0x63, 0x7a, 0xb8, 0xcf, 0x41, 0x9c, 0xd4, 0x43, 0x57, 0x48, 0x88, 0xb3, 0x2a, 0x6b, 0x50, + 0x6a, 0xf6, 0xf5, 0x2e, 0x6e, 0xdb, 0xb8, 0x43, 0x1b, 0x35, 0x69, 0x41, 0x18, 0xc2, 0x0b, 0xca, + 0x06, 0x14, 0x7f, 0x88, 0x8f, 0xf9, 0xa2, 0x1e, 0xd3, 0x50, 0xe5, 0xcf, 0xf2, 0xb0, 0xc2, 0xf6, + 0x8a, 0x4d, 0x09, 0xa1, 0xa8, 0xd8, 0x25, 0x03, 0xa7, 0x83, 0x5d, 0x36, 0xdb, 0xf6, 0x40, 0xb3, + 0xb1, 0x63, 0x12, 0x43, 0x9c, 0xf0, 0x4b, 0x1d, 0x7b, 0xb0, 0xcb, 0x08, 0xe8, 0x1c, 0xd0, 0x82, + 0xf6, 0xe5, 0x80, 0x08, 0x47, 0x2c, 0xa8, 0xc5, 0x8e, 0x3d, 0xf8, 0x03, 0x5a, 0x96, 0xb2, 0xee, + 0x91, 0xee, 0x60, 0x97, 0xf9, 0x19, 0x97, 0x6d, 0x33, 0x02, 0xba, 0x0d, 0xa7, 0xfb, 0xb8, 0x4f, + 0x9c, 0x63, 0xad, 0x67, 0xf6, 0x4d, 0x4f, 0x33, 0x2d, 0xed, 0xe0, 0xd8, 0xc3, 0xae, 0xf0, 0x29, + 0xc4, 0x2b, 0x9f, 0xd3, 0xba, 0xa6, 0xf5, 0x98, 0xd6, 0x20, 0x05, 0x2a, 0x84, 0xf4, 0x35, 0xb7, + 0x43, 0x1c, 0xac, 0xe9, 0xc6, 0x4f, 0xd9, 0xf6, 0x59, 0x50, 0xcb, 0x84, 0xf4, 0xdb, 0x94, 0xd6, + 0x30, 0x7e, 0x8a, 0xde, 0x81, 0x72, 0xc7, 0x1e, 0xb8, 0xd8, 0xd3, 0xe8, 0x1f, 0xb6, 0x3b, 0x96, + 0x54, 0xe0, 0xa4, 0x4d, 0x7b, 0xe0, 0x86, 0x18, 0xfa, 0x74, 0xfc, 0xe7, 0xc2, 0x0c, 0x2f, 0xe8, + 0x30, 0xeb, 0x50, 0x89, 0x20, 0x04, 0xf4, 0xb0, 0xc6, 0xa0, 0x00, 0x71, 0x58, 0xa3, 0xdf, 0x94, + 0xe6, 0x90, 0x9e, 0x1c, 0x49, 0xf6, 0x4d, 0x69, 0xde, 0xb1, 0x2d, 0x4f, 0x6a, 0xec, 0x9b, 0x0e, + 0x79, 0x0f, 0xbf, 0x12, 0x28, 0x52, 0x49, 0xe5, 0x05, 0xc5, 0x00, 0xd8, 0xd4, 0x6d, 0xfd, 0xc0, + 0xec, 0x99, 0xde, 0x31, 0xba, 0x0e, 0x55, 0xdd, 0x30, 0xb4, 0x8e, 0xa4, 0x98, 0x58, 0x62, 0x7b, + 0x8b, 0xba, 0x61, 0x6c, 0x86, 0xc8, 0xe8, 0x3d, 0x58, 0x32, 0x1c, 0x62, 0x47, 0x79, 0x39, 0xd8, + 0x57, 0xa5, 0x15, 0x61, 0x66, 0xe5, 0x17, 0x33, 0x70, 0x21, 0x3a, 0xb1, 0x71, 0x14, 0xe6, 0x11, + 0xcc, 0xc7, 0x5a, 0xcd, 0x40, 0x00, 0x02, 0x6b, 0xd5, 0x88, 0x44, 0x0c, 0x95, 0xc8, 0x27, 0x50, + 0x89, 0x54, 0x9c, 0xa7, 0xf0, 0x56, 0x71, 0x9e, 0xe9, 0xb7, 0x82, 0xf3, 0xcc, 0x4c, 0x86, 0xf3, + 0x5c, 0x61, 0x60, 0xaf, 0x94, 0x66, 0x47, 0x62, 0xee, 0x6a, 0x15, 0x9f, 0xc7, 0x92, 0xa0, 0x70, + 0x0c, 0x0f, 0x9a, 0x9b, 0x04, 0x0f, 0x2a, 0x66, 0xe2, 0x41, 0xd4, 0x6b, 0x6c, 0x5b, 0x77, 0xfa, + 0xc4, 0x91, 0x80, 0x4f, 0xad, 0xc4, 0x4c, 0x58, 0x94, 0x74, 0x01, 0xf6, 0x64, 0x42, 0x43, 0x90, + 0x09, 0x0d, 0x5d, 0x84, 0x79, 0x8b, 0x68, 0x16, 0x7e, 0xad, 0xd1, 0xb9, 0x74, 0x6b, 0x65, 0x3e, + 0xb1, 0x16, 0x69, 0xe1, 0xd7, 0xbb, 0x94, 0x92, 0x00, 0x8f, 0xe6, 0x27, 0x04, 0x8f, 0xfe, 0x2e, + 0x07, 0xcb, 0x51, 0xe7, 0x14, 0x07, 0xfd, 0xa7, 0x50, 0x72, 0x64, 0xfc, 0x11, 0x0e, 0x79, 0x3d, + 0x23, 0xb9, 0x4d, 0x06, 0x2c, 0x35, 0x90, 0x45, 0x3f, 0xca, 0xc4, 0x97, 0x6e, 0x8d, 0xd2, 0x37, + 0x0a, 0x61, 0x52, 0x3a, 0x70, 0xe6, 0x53, 0xd3, 0x32, 0xc8, 0x6b, 0x37, 0x6e, 0x7e, 0x33, 0x69, + 0xfe, 0x7b, 0xc9, 0xe6, 0xe2, 0xc2, 0x69, 0x1d, 0x50, 0xfe, 0x2a, 0x07, 0x67, 0x33, 0x19, 0x63, + 0xe1, 0x35, 0x17, 0x0f, 0xaf, 0x22, 0x34, 0x77, 0xc8, 0xc0, 0xf2, 0x42, 0xa1, 0x79, 0x93, 0xa1, + 0xe8, 0x3c, 0x06, 0x6a, 0x7d, 0xfd, 0x8d, 0xd9, 0x1f, 0xf4, 0x45, 0x6c, 0xa6, 0xea, 0x5e, 0x70, + 0xca, 0x09, 0x82, 0xb3, 0xd2, 0x80, 0x25, 0xdf, 0xca, 0xa1, 0x38, 0x57, 0x08, 0xb7, 0xca, 0x47, + 0x71, 0x2b, 0x0b, 0x66, 0xb7, 0xf0, 0x2b, 0xb3, 0x83, 0xdf, 0x0a, 0xcc, 0x7f, 0x11, 0xca, 0x36, + 0x76, 0xfa, 0xa6, 0xeb, 0xfa, 0x41, 0xa7, 0xa4, 0x86, 0x49, 0xca, 0x7f, 0xce, 0xc2, 0x62, 0x7c, + 0xfe, 0x1e, 0x26, 0x60, 0xb2, 0x4b, 0x29, 0xe1, 0x30, 0xde, 0xd1, 0x50, 0x66, 0x75, 0x5b, 0x6e, + 0xcc, 0xf9, 0xac, 0x43, 0xad, 0xbf, 0x89, 0x8b, 0x5d, 0x9b, 0x8e, 0x48, 0x87, 0xf4, 0xfb, 0xba, + 0x65, 0xc8, 0xdb, 0x19, 0x51, 0xa4, 0xe3, 0xa7, 0x3b, 0x5d, 0x3a, 0xec, 0x94, 0xcc, 0xbe, 0xe9, + 0xe4, 0xd1, 0x13, 0xa0, 0x69, 0x31, 0xb8, 0x8d, 0x05, 0xae, 0x92, 0x0a, 0x82, 0xb4, 0x65, 0x3a, + 0x68, 0x1d, 0xa6, 0xb1, 0xf5, 0x4a, 0xa6, 0x4e, 0x29, 0xd7, 0x37, 0x32, 0x45, 0x50, 0x19, 0x1f, + 0xba, 0x05, 0xb3, 0x7d, 0xea, 0x16, 0xf2, 0x2c, 0xb8, 0x92, 0x71, 0x8b, 0xa1, 0x0a, 0x36, 0xb4, + 0x01, 0x73, 0x06, 0x9b, 0x27, 0x79, 0xe0, 0xab, 0xa5, 0x80, 0x78, 0x8c, 0x41, 0x95, 0x8c, 0x68, + 0xdb, 0x4f, 0x0c, 0x4b, 0x59, 0x19, 0x5d, 0x6c, 0x2a, 0x52, 0xb3, 0xc3, 0xbd, 0x68, 0x76, 0x08, + 0x4c, 0xd7, 0xc6, 0x68, 0x5d, 0xc3, 0x91, 0xb7, 0xb3, 0x50, 0xec, 0x91, 0x2e, 0x77, 0xa3, 0x32, + 0xbf, 0xf8, 0xeb, 0x91, 0x2e, 0xf3, 0xa2, 0x65, 0x9a, 0x28, 0x1b, 0xa6, 0xc5, 0x02, 0x5c, 0x51, + 0xe5, 0x05, 0xba, 0xf8, 0xd8, 0x87, 0x46, 0xac, 0x0e, 0xae, 0x55, 0x58, 0x55, 0x89, 0x51, 0x76, + 0xac, 0x0e, 0x4b, 0xbd, 0x3c, 0xef, 0xb8, 0xb6, 0xc0, 0xe8, 0xf4, 0x93, 0x9e, 0x81, 0xf8, 0x71, + 0x7d, 0x31, 0xeb, 0x0c, 0x94, 0x16, 0x0c, 0xe5, 0x69, 0xfd, 0x31, 0xcc, 0xbd, 0xe6, 0x81, 0xa0, + 0x56, 0x65, 0xf2, 0xd7, 0x46, 0x87, 0x14, 0xa1, 0x41, 0x0a, 0x7e, 0x9b, 0x69, 0xf0, 0xaf, 0x72, + 0x70, 0x66, 0x93, 0x1d, 0x11, 0x42, 0x71, 0x6c, 0x12, 0x54, 0xeb, 0xae, 0x8f, 0x23, 0x66, 0x42, + 0x50, 0xf1, 0x7e, 0x0b, 0x01, 0xd4, 0x84, 0x05, 0xa9, 0x5c, 0xa8, 0x28, 0x8c, 0x0d, 0x45, 0x56, + 0xdc, 0x70, 0x51, 0xf9, 0x18, 0x56, 0x12, 0xbd, 0x10, 0xe9, 0xfc, 0x1a, 0xcc, 0x07, 0xf1, 0xca, + 0xef, 0x44, 0xd9, 0xa7, 0x35, 0x0d, 0xe5, 0x1e, 0x9c, 0x6e, 0x7b, 0xba, 0xe3, 0x25, 0x86, 0x60, + 0x0c, 0x59, 0x86, 0x46, 0x46, 0x65, 0x05, 0x60, 0xd8, 0x86, 0xe5, 0xb6, 0x47, 0xec, 0x13, 0x28, + 0xa5, 0x51, 0x87, 0xf6, 0x9f, 0x0c, 0xe4, 0xfe, 0x20, 0x8b, 0xca, 0x0a, 0xc7, 0x4e, 0x93, 0xad, + 0xdd, 0x87, 0x33, 0x1c, 0xba, 0x3c, 0x49, 0x27, 0xce, 0x4a, 0xe0, 0x34, 0xa9, 0xf7, 0x05, 0x9c, + 0x0a, 0xf6, 0xde, 0x00, 0x96, 0xb8, 0x13, 0x85, 0x25, 0x2e, 0x0e, 0x99, 0xf5, 0x08, 0x2a, 0xf1, + 0x17, 0xf9, 0x50, 0x5c, 0xcf, 0x00, 0x25, 0xee, 0x47, 0x41, 0x89, 0xcb, 0xa3, 0x74, 0x47, 0x30, + 0x89, 0xa4, 0xd7, 0x16, 0x52, 0xbc, 0xf6, 0x8b, 0x04, 0x72, 0x31, 0x9d, 0x05, 0xfd, 0xc4, 0xac, + 0xfd, 0x9d, 0x00, 0x17, 0x2a, 0x07, 0x2e, 0xfc, 0xa6, 0x7d, 0xa4, 0xf9, 0x6e, 0x0c, 0xb8, 0x58, + 0x1b, 0x69, 0xaf, 0x8f, 0x5b, 0xfc, 0xcd, 0x34, 0x94, 0xfc, 0xba, 0xc4, 0x98, 0x27, 0x87, 0x2d, + 0x9f, 0x32, 0x6c, 0xe1, 0x1d, 0xb8, 0xf0, 0x8d, 0x76, 0xe0, 0xe9, 0xb1, 0x77, 0xe0, 0x73, 0x50, + 0x62, 0x1f, 0x9a, 0x83, 0x0f, 0xc5, 0x8e, 0x5a, 0x64, 0x04, 0x15, 0x1f, 0x06, 0x6e, 0x38, 0x3b, + 0x91, 0x1b, 0xc6, 0xa0, 0x92, 0xb9, 0x38, 0x54, 0xf2, 0xd0, 0xdf, 0x11, 0xf9, 0x26, 0x7a, 0x75, + 0x88, 0xde, 0xd4, 0xbd, 0xb0, 0x15, 0xdd, 0x0b, 0xf9, 0xbe, 0xfa, 0xfe, 0x30, 0x2d, 0xdf, 0x59, + 0xa0, 0x64, 0x9f, 0x03, 0x25, 0x61, 0x5f, 0x14, 0x91, 0xf5, 0x3e, 0x80, 0x1f, 0x44, 0x24, 0x5a, + 0x72, 0x6e, 0x48, 0x1f, 0xd5, 0x10, 0x3b, 0x55, 0x1b, 0x99, 0x9a, 0xe0, 0x36, 0x65, 0xbc, 0xf8, + 0x98, 0x71, 0x95, 0xf2, 0xbf, 0x33, 0xa1, 0xf8, 0x92, 0x71, 0xfd, 0xf0, 0x30, 0x01, 0xd1, 0x4d, + 0xe8, 0xc5, 0x77, 0xa2, 0x08, 0xdd, 0x09, 0xbd, 0x2e, 0x01, 0xd0, 0xb1, 0xcc, 0x45, 0x77, 0x44, + 0x35, 0x07, 0x50, 0x4a, 0x82, 0xd2, 0x60, 0x27, 0x83, 0x43, 0xd3, 0x32, 0xdd, 0x23, 0x5e, 0x3f, + 0xcb, 0x4f, 0x06, 0x92, 0xd4, 0x60, 0x0f, 0x78, 0xf0, 0x1b, 0xd3, 0xd3, 0x3a, 0xc4, 0xc0, 0xcc, + 0xa7, 0x67, 0xd4, 0x22, 0x25, 0x6c, 0x12, 0x03, 0x07, 0x2b, 0xaf, 0x78, 0xb2, 0x95, 0x57, 0x8a, + 0xad, 0xbc, 0x33, 0x30, 0xeb, 0x60, 0xdd, 0x25, 0x96, 0x38, 0xaa, 0x8a, 0x12, 0x9d, 0x9a, 0x3e, + 0x76, 0x5d, 0xda, 0x92, 0x48, 0xd7, 0x44, 0x31, 0x94, 0x66, 0xce, 0x8f, 0x4c, 0x33, 0x87, 0x5c, + 0x6b, 0xc4, 0xd2, 0xcc, 0xca, 0xc8, 0x34, 0x73, 0x9c, 0x5b, 0x8d, 0x50, 0xa2, 0xbd, 0x30, 0x5e, + 0xa2, 0x1d, 0xce, 0x4b, 0x17, 0x23, 0x79, 0xe9, 0xb7, 0xb9, 0x58, 0x7f, 0x93, 0x83, 0x95, 0xc4, + 0xb2, 0x12, 0xcb, 0xf5, 0x6e, 0xec, 0x82, 0x64, 0x6d, 0xe4, 0x98, 0xf9, 0xf7, 0x23, 0x4f, 0x23, + 0xf7, 0x23, 0x1f, 0x8e, 0x16, 0x7c, 0xeb, 0xd7, 0x23, 0x7f, 0x92, 0x83, 0x77, 0xf6, 0x6d, 0x23, + 0x96, 0xe1, 0x89, 0x83, 0xf9, 0xf8, 0x81, 0xe3, 0xa1, 0xcc, 0xf5, 0xf3, 0x93, 0xa2, 0x17, 0x5c, + 0x4e, 0x51, 0xe0, 0x62, 0xb6, 0x19, 0x22, 0x65, 0xfa, 0x09, 0x2c, 0x6e, 0xbf, 0xc1, 0x9d, 0xf6, + 0xb1, 0xd5, 0x99, 0xc0, 0xb4, 0x2a, 0x14, 0x3a, 0x7d, 0x43, 0x20, 0x86, 0xf4, 0x33, 0x9c, 0x05, + 0x16, 0xa2, 0x59, 0xa0, 0x06, 0xd5, 0xa0, 0x05, 0x31, 0xbd, 0x67, 0xe8, 0xf4, 0x1a, 0x94, 0x99, + 0x2a, 0x9f, 0x57, 0x45, 0x49, 0xd0, 0xb1, 0xe3, 0xb0, 0x3e, 0x73, 0x3a, 0x76, 0x9c, 0x68, 0xb4, + 0x28, 0x44, 0xa3, 0x85, 0xf2, 0x8b, 0x1c, 0x94, 0x69, 0x0b, 0xdf, 0xc8, 0x7e, 0x71, 0xd4, 0x2a, + 0x04, 0x47, 0x2d, 0xff, 0xc4, 0x36, 0x1d, 0x3e, 0xb1, 0x05, 0x96, 0xcf, 0x30, 0x72, 0xd2, 0xf2, + 0x59, 0x9f, 0x8e, 0x1d, 0x47, 0xb9, 0x08, 0xf3, 0xdc, 0x36, 0xd1, 0xf3, 0x2a, 0x14, 0x06, 0x4e, + 0x4f, 0xfa, 0xd1, 0xc0, 0xe9, 0x29, 0x7f, 0x9a, 0x83, 0x4a, 0xc3, 0xf3, 0xf4, 0xce, 0xd1, 0x04, + 0x1d, 0xf0, 0x8d, 0xcb, 0x87, 0x8d, 0x4b, 0x76, 0x22, 0x30, 0x77, 0x3a, 0xc3, 0xdc, 0x99, 0x88, + 0xb9, 0x0a, 0x2c, 0x48, 0x5b, 0x32, 0x0d, 0x6e, 0x01, 0xda, 0x25, 0x8e, 0xf7, 0x84, 0x38, 0xaf, + 0x75, 0xc7, 0x98, 0xec, 0x04, 0x86, 0x60, 0x5a, 0x3c, 0xea, 0x2c, 0x5c, 0x9b, 0x51, 0xd9, 0xb7, + 0x72, 0x15, 0x4e, 0x45, 0xf4, 0x65, 0x36, 0xfc, 0x08, 0xca, 0x2c, 0xee, 0x8b, 0x54, 0xfc, 0x76, + 0xf8, 0xea, 0x62, 0xac, 0x5d, 0x42, 0xf9, 0x7d, 0x58, 0xa2, 0xf9, 0x01, 0xa3, 0xfb, 0x4b, 0xf1, + 0xfb, 0xb1, 0x3c, 0xf5, 0x42, 0x86, 0xa2, 0x58, 0x8e, 0xfa, 0xb7, 0x39, 0x98, 0x61, 0xf4, 0xc4, + 0x9e, 0x7d, 0x0e, 0x4a, 0x0e, 0xb6, 0x89, 0xe6, 0xe9, 0x5d, 0xff, 0x09, 0x2d, 0x25, 0xec, 0xe9, + 0x5d, 0x97, 0xbd, 0x00, 0xa6, 0x95, 0x86, 0xd9, 0xc5, 0xae, 0x27, 0xdf, 0xd1, 0x96, 0x29, 0x6d, + 0x8b, 0x93, 0xe8, 0x20, 0xb9, 0xe6, 0x1f, 0xf2, 0xbc, 0x73, 0x5a, 0x65, 0xdf, 0x68, 0x9d, 0xbf, + 0xea, 0x1a, 0x07, 0x5e, 0x66, 0x6f, 0xbe, 0xea, 0x50, 0x8c, 0x21, 0xca, 0x7e, 0x59, 0xd9, 0x06, + 0x14, 0x1e, 0x05, 0x31, 0xde, 0xb7, 0x60, 0x96, 0x0d, 0x92, 0xcc, 0x8e, 0x56, 0x32, 0x86, 0x41, + 0x15, 0x6c, 0x8a, 0x0e, 0x88, 0x0f, 0x70, 0x24, 0x23, 0x9a, 0x7c, 0x56, 0x86, 0x64, 0x48, 0xff, + 0x90, 0x83, 0x53, 0x91, 0x36, 0x84, 0xad, 0x37, 0xa3, 0x8d, 0x64, 0x9a, 0x2a, 0x1a, 0xd8, 0x8c, + 0x6c, 0x09, 0xb7, 0xb2, 0x4c, 0xfa, 0x2d, 0x6d, 0x07, 0xff, 0x98, 0x03, 0x68, 0x0c, 0xbc, 0x23, + 0x81, 0x0c, 0x86, 0x67, 0x26, 0x17, 0x9d, 0x19, 0x5a, 0x67, 0xeb, 0xae, 0xfb, 0x9a, 0x38, 0xf2, + 0x4c, 0xe3, 0x97, 0x19, 0x86, 0x37, 0xf0, 0x8e, 0xe4, 0xb5, 0x10, 0xfd, 0x46, 0x97, 0x61, 0x81, + 0x3f, 0xdb, 0xd6, 0x74, 0xc3, 0x70, 0xb0, 0xeb, 0x8a, 0xfb, 0xa1, 0x0a, 0xa7, 0x36, 0x38, 0x91, + 0xb2, 0x99, 0x06, 0xb6, 0x3c, 0xd3, 0x3b, 0xd6, 0x3c, 0xf2, 0x12, 0x5b, 0xe2, 0x6c, 0x52, 0x91, + 0xd4, 0x3d, 0x4a, 0xa4, 0x6c, 0x0e, 0xee, 0x9a, 0xae, 0xe7, 0x48, 0x36, 0x79, 0x17, 0x21, 0xa8, + 0x8c, 0x8d, 0x4e, 0x4a, 0x75, 0x77, 0xd0, 0xeb, 0xf1, 0x21, 0x3e, 0xf9, 0xb4, 0x7f, 0x20, 0x3a, + 0x94, 0xcf, 0xf2, 0xe9, 0x60, 0xd0, 0x44, 0x77, 0xdf, 0x22, 0x08, 0xf3, 0x01, 0x2c, 0x85, 0xfa, + 0x20, 0xdc, 0x2a, 0x92, 0x44, 0xe6, 0xa2, 0x49, 0xa4, 0xf2, 0x14, 0x10, 0xc7, 0x1d, 0xbe, 0x61, + 0xbf, 0x95, 0xd3, 0x70, 0x2a, 0xa2, 0x48, 0xec, 0xc4, 0x37, 0xa0, 0x22, 0xde, 0xe8, 0x08, 0x47, + 0x39, 0x0b, 0x45, 0x1a, 0x51, 0x3b, 0xa6, 0x21, 0xef, 0x0c, 0xe7, 0x6c, 0x62, 0x6c, 0x9a, 0x86, + 0xa3, 0x7c, 0x0a, 0x15, 0x95, 0xb7, 0x23, 0x78, 0x9f, 0xc0, 0x82, 0x78, 0xd1, 0xa3, 0x45, 0x5e, + 0xca, 0xa5, 0xbd, 0xc4, 0x0e, 0x37, 0xa2, 0x56, 0xac, 0x70, 0x51, 0x31, 0xa0, 0xce, 0x53, 0x86, + 0x88, 0x7a, 0xd9, 0xd9, 0x27, 0x20, 0x7f, 0x83, 0x30, 0xb2, 0x95, 0xa8, 0x7c, 0xc5, 0x09, 0x17, + 0x95, 0x0b, 0x70, 0x2e, 0xb5, 0x15, 0x31, 0x12, 0x36, 0x54, 0x83, 0x0a, 0xc3, 0x94, 0x97, 0xa7, + 0xec, 0x52, 0x34, 0x17, 0xba, 0x14, 0x3d, 0xe3, 0x27, 0x89, 0x79, 0xb9, 0x89, 0xb1, 0x0c, 0x30, + 0x48, 0xf7, 0x0b, 0x59, 0xe9, 0xfe, 0x74, 0x24, 0xdd, 0x57, 0xda, 0xfe, 0x78, 0x8a, 0x63, 0xd8, + 0x63, 0x76, 0x5c, 0xe4, 0x6d, 0xcb, 0x80, 0xa8, 0x0c, 0xeb, 0x25, 0x67, 0x55, 0x43, 0x52, 0xca, + 0x75, 0xa8, 0x44, 0x43, 0x63, 0x28, 0xce, 0xe5, 0x12, 0x71, 0x6e, 0x21, 0x16, 0xe2, 0x3e, 0x8a, + 0x65, 0xc0, 0xd9, 0x63, 0x1c, 0xcb, 0x7f, 0x1f, 0x44, 0x82, 0xdd, 0x8d, 0x94, 0xfb, 0xcc, 0xdf, + 0x52, 0x9c, 0x5b, 0x16, 0xfb, 0xc1, 0x13, 0x97, 0xca, 0x8b, 0x4e, 0x2b, 0x97, 0xa0, 0xbc, 0x9f, + 0xf5, 0xcc, 0x7f, 0x5a, 0xbe, 0x1d, 0xb8, 0x03, 0xcb, 0x4f, 0xcc, 0x1e, 0x76, 0x8f, 0x5d, 0x0f, + 0xf7, 0x9b, 0x2c, 0x28, 0x1d, 0x9a, 0xd8, 0x41, 0xab, 0x00, 0xec, 0x08, 0x63, 0x13, 0xd3, 0x7f, + 0xfd, 0x1d, 0xa2, 0x28, 0xff, 0x95, 0x83, 0xc5, 0x40, 0x70, 0x9f, 0x1d, 0xdd, 0xce, 0x43, 0x89, + 0xf6, 0xd7, 0xf5, 0xf4, 0xbe, 0x2d, 0xef, 0xb3, 0x7c, 0x02, 0xba, 0x0f, 0x33, 0x87, 0xae, 0x84, + 0x8c, 0x52, 0x01, 0xf4, 0x34, 0x43, 0xd4, 0xe9, 0x43, 0xb7, 0x69, 0xa0, 0x8f, 0x01, 0x06, 0x2e, + 0x36, 0xc4, 0x1d, 0x56, 0x21, 0x2b, 0x5b, 0xd8, 0x0f, 0xdf, 0xf5, 0x52, 0x01, 0xfe, 0xec, 0xe0, + 0x01, 0x94, 0x4d, 0x8b, 0x18, 0x98, 0xdd, 0xf5, 0x1a, 0x02, 0x55, 0x1a, 0x21, 0x0e, 0x5c, 0x62, + 0xdf, 0xc5, 0x86, 0x82, 0xc5, 0x5e, 0x28, 0xc7, 0x57, 0x38, 0x4a, 0x0b, 0x96, 0x78, 0xd0, 0x3a, + 0xf4, 0x0d, 0x97, 0x1e, 0xbb, 0x36, 0xac, 0x77, 0x6c, 0xb4, 0xd4, 0xaa, 0x29, 0x52, 0x1b, 0x29, + 0xaa, 0xdc, 0x83, 0xd3, 0x91, 0x13, 0xd2, 0x04, 0x47, 0x16, 0x65, 0x37, 0x06, 0x94, 0x04, 0xee, + 0x2c, 0x60, 0x08, 0xe9, 0xcd, 0xa3, 0x60, 0x08, 0x97, 0xc3, 0x10, 0xae, 0xf2, 0x05, 0x9c, 0x8d, + 0x20, 0x3a, 0x11, 0x8b, 0x1e, 0xc4, 0x32, 0xb7, 0x2b, 0xa3, 0xb4, 0xc6, 0x52, 0xb8, 0xff, 0xc9, + 0xc1, 0x72, 0x1a, 0xc3, 0x09, 0x11, 0xc7, 0x9f, 0x64, 0x3c, 0x31, 0xbb, 0x3b, 0x9e, 0x59, 0xbf, + 0x13, 0xb4, 0x76, 0x0f, 0xea, 0x69, 0xe3, 0x99, 0x9c, 0xa5, 0xc2, 0x24, 0xb3, 0xf4, 0xf3, 0x42, + 0x08, 0x79, 0x6f, 0x78, 0x9e, 0x63, 0x1e, 0x0c, 0xa8, 0xcb, 0xbf, 0x75, 0x34, 0xab, 0xe9, 0xe3, + 0x32, 0x7c, 0x68, 0x6f, 0x0f, 0x11, 0x0f, 0xec, 0x48, 0xc5, 0x66, 0x3e, 0x8b, 0x62, 0x33, 0x1c, + 0x53, 0xbf, 0x33, 0x9e, 0xbe, 0xef, 0x2c, 0x00, 0xfa, 0xf3, 0x3c, 0x2c, 0x44, 0xa7, 0x08, 0x6d, + 0x03, 0xe8, 0xbe, 0xe5, 0x62, 0xa1, 0x5c, 0x1e, 0xab, 0x9b, 0x6a, 0x48, 0x10, 0xbd, 0x0f, 0x85, + 0x8e, 0x3d, 0x10, 0xb3, 0x96, 0x72, 0x19, 0xbc, 0x69, 0x0f, 0x78, 0x44, 0xa1, 0x6c, 0xf4, 0x4c, + 0xc5, 0xef, 0xf6, 0xb3, 0xa3, 0xe4, 0x0b, 0x56, 0xcf, 0x65, 0x04, 0x33, 0x7a, 0x06, 0x0b, 0xaf, + 0x1d, 0xd3, 0xd3, 0x0f, 0x7a, 0x58, 0xeb, 0xe9, 0xc7, 0xd8, 0x11, 0x51, 0x72, 0x8c, 0x40, 0x56, + 0x91, 0x82, 0xcf, 0xa9, 0x9c, 0xf2, 0x47, 0x50, 0x94, 0x16, 0x8d, 0xd8, 0x11, 0xf6, 0x60, 0x65, + 0x40, 0xd9, 0x34, 0xf6, 0x1c, 0xcc, 0xd2, 0x2d, 0xa2, 0xb9, 0x98, 0x6e, 0xe3, 0xf2, 0xa1, 0xfa, + 0x88, 0x10, 0xbd, 0xcc, 0xa4, 0x37, 0x89, 0x83, 0x5b, 0xba, 0x45, 0xda, 0x5c, 0x54, 0x79, 0x05, + 0xe5, 0x50, 0x07, 0x47, 0x98, 0xd0, 0x84, 0x25, 0x79, 0x15, 0xef, 0x62, 0x4f, 0x6c, 0x2f, 0x63, + 0x35, 0xbe, 0x28, 0xe4, 0xda, 0xd8, 0xe3, 0xcf, 0x27, 0x1e, 0xc0, 0x59, 0x15, 0x13, 0x1b, 0x5b, + 0xfe, 0x7c, 0x3e, 0x27, 0xdd, 0x09, 0x22, 0xf8, 0x79, 0xa8, 0xa7, 0xc9, 0xf3, 0xf8, 0x70, 0xe3, + 0x3c, 0x14, 0xe5, 0x6f, 0x36, 0xd1, 0x1c, 0x14, 0xf6, 0x36, 0x77, 0xab, 0x53, 0xf4, 0x63, 0x7f, + 0x6b, 0xb7, 0x9a, 0xbb, 0xd1, 0x87, 0x6a, 0xfc, 0x67, 0x8a, 0x68, 0x05, 0x4e, 0xed, 0xaa, 0x3b, + 0xbb, 0x8d, 0xa7, 0x8d, 0xbd, 0xe6, 0x4e, 0x4b, 0xdb, 0x55, 0x9b, 0x9f, 0x34, 0xf6, 0xb6, 0xab, + 0x53, 0x68, 0x0d, 0x2e, 0x84, 0x2b, 0x9e, 0xed, 0xb4, 0xf7, 0xb4, 0xbd, 0x1d, 0x6d, 0x73, 0xa7, + 0xb5, 0xd7, 0x68, 0xb6, 0xb6, 0xd5, 0x6a, 0x0e, 0x5d, 0x80, 0xb3, 0x61, 0x96, 0xc7, 0xcd, 0xad, + 0xa6, 0xba, 0xbd, 0x49, 0xbf, 0x1b, 0xcf, 0xab, 0xf9, 0x1b, 0xb7, 0xa1, 0x12, 0xf9, 0x55, 0x21, + 0x35, 0x64, 0x77, 0x67, 0xab, 0x3a, 0x85, 0x2a, 0x50, 0x0a, 0xeb, 0x29, 0xc2, 0x74, 0x6b, 0x67, + 0x6b, 0xbb, 0x9a, 0xbf, 0x71, 0x0f, 0x16, 0x63, 0xef, 0x51, 0xd1, 0x12, 0x54, 0xda, 0x8d, 0xd6, + 0xd6, 0xe3, 0x9d, 0xcf, 0x34, 0x75, 0xbb, 0xb1, 0xf5, 0x79, 0x75, 0x0a, 0x2d, 0x43, 0x55, 0x92, + 0x5a, 0x3b, 0x7b, 0x9c, 0x9a, 0xbb, 0xf1, 0x32, 0xb6, 0xb2, 0x30, 0x3a, 0x0d, 0x4b, 0x7e, 0x33, + 0xda, 0xa6, 0xba, 0xdd, 0xd8, 0xdb, 0xa6, 0xad, 0x47, 0xc8, 0xea, 0x7e, 0xab, 0xd5, 0x6c, 0x3d, + 0xad, 0xe6, 0xa8, 0xd6, 0x80, 0xbc, 0xfd, 0x59, 0x93, 0x32, 0xe7, 0xa3, 0xcc, 0xfb, 0xad, 0x1f, + 0xb6, 0x76, 0x3e, 0x6d, 0x55, 0x0b, 0x1b, 0x7f, 0xbf, 0x04, 0x0b, 0x32, 0xbd, 0xc3, 0x0e, 0x7b, + 0xcb, 0xb2, 0x0b, 0x73, 0xf2, 0x97, 0xbf, 0x29, 0x71, 0x39, 0xfa, 0x7b, 0xe5, 0xfa, 0xda, 0x10, + 0x0e, 0x91, 0x65, 0x4f, 0xa1, 0x03, 0x96, 0xf5, 0x86, 0xde, 0x07, 0x5f, 0x49, 0xcd, 0x31, 0x13, + 0x4f, 0x92, 0xeb, 0x57, 0x47, 0xf2, 0xf9, 0x6d, 0x60, 0x9a, 0xd8, 0x86, 0x7f, 0x00, 0x83, 0xae, + 0xa6, 0x65, 0xa4, 0x29, 0xbf, 0xb0, 0xa9, 0x5f, 0x1b, 0xcd, 0xe8, 0x37, 0xf3, 0x12, 0xaa, 0xf1, + 0x1f, 0xc3, 0xa0, 0x14, 0xc0, 0x34, 0xe3, 0x17, 0x37, 0xf5, 0x1b, 0xe3, 0xb0, 0x86, 0x1b, 0x4b, + 0xfc, 0x6c, 0xe4, 0xfa, 0x38, 0xef, 0xf0, 0x33, 0x1b, 0xcb, 0x7a, 0xb2, 0xcf, 0x07, 0x30, 0xfa, + 0xf6, 0x17, 0xa5, 0xfe, 0x46, 0x23, 0xe5, 0xe5, 0x78, 0xda, 0x00, 0xa6, 0x3f, 0x23, 0x56, 0xa6, + 0xd0, 0x11, 0x2c, 0xc6, 0x1e, 0x25, 0xa0, 0x14, 0xf1, 0xf4, 0xd7, 0x17, 0xf5, 0xeb, 0x63, 0x70, + 0x46, 0x3d, 0x22, 0xfc, 0x08, 0x21, 0xdd, 0x23, 0x52, 0x9e, 0x38, 0xa4, 0x7b, 0x44, 0xea, 0x7b, + 0x06, 0xe6, 0xdc, 0x91, 0xc7, 0x07, 0x69, 0xce, 0x9d, 0xf6, 0xe4, 0xa1, 0x7e, 0x75, 0x24, 0x5f, + 0x78, 0xd0, 0x62, 0x4f, 0x11, 0xd2, 0x06, 0x2d, 0xfd, 0xa9, 0x43, 0xfd, 0xfa, 0x18, 0x9c, 0x71, + 0x2f, 0x08, 0x2e, 0x36, 0xb3, 0xbc, 0x20, 0x71, 0x0d, 0x9f, 0xe5, 0x05, 0xc9, 0x3b, 0x52, 0xe1, + 0x05, 0xb1, 0x0b, 0xc9, 0x6b, 0x63, 0x5c, 0xa0, 0x64, 0x7b, 0x41, 0xfa, 0x55, 0x8b, 0x32, 0x85, + 0xfe, 0x38, 0x07, 0xb5, 0xac, 0xcb, 0x09, 0x94, 0x92, 0xd5, 0x8d, 0xb8, 0x4f, 0xa9, 0x6f, 0x4c, + 0x22, 0xe2, 0x5b, 0xf1, 0x25, 0xa0, 0xe4, 0x6e, 0x87, 0xde, 0x4b, 0x9b, 0x99, 0x8c, 0x3d, 0xb5, + 0xfe, 0xfe, 0x78, 0xcc, 0x7e, 0x93, 0x6d, 0x28, 0xca, 0xeb, 0x10, 0x94, 0x12, 0xa5, 0x63, 0x97, + 0x31, 0x75, 0x65, 0x18, 0x8b, 0xaf, 0xf4, 0x29, 0x4c, 0x53, 0x2a, 0xba, 0x90, 0xce, 0x2d, 0x95, + 0xad, 0x66, 0x55, 0xfb, 0x8a, 0x5e, 0xc0, 0x2c, 0xc7, 0xff, 0x51, 0x0a, 0xde, 0x10, 0xb9, 0xa5, + 0xa8, 0x5f, 0xcc, 0x66, 0xf0, 0xd5, 0xfd, 0x98, 0xff, 0x53, 0x08, 0x01, 0xed, 0xa3, 0x77, 0xd3, + 0x7f, 0x65, 0x1b, 0xbd, 0x49, 0xa8, 0x5f, 0x1e, 0xc1, 0x15, 0x5e, 0x14, 0xb1, 0x5c, 0xf7, 0xea, + 0xc8, 0x03, 0x4b, 0xf6, 0xa2, 0x48, 0x3f, 0x12, 0x71, 0x27, 0x49, 0x1e, 0x99, 0xd2, 0x9c, 0x24, + 0xf3, 0xa0, 0x9a, 0xe6, 0x24, 0xd9, 0xa7, 0x30, 0x65, 0x0a, 0x79, 0x70, 0x2a, 0x05, 0x20, 0x43, + 0xef, 0x67, 0x39, 0x79, 0x1a, 0x5a, 0x57, 0xbf, 0x39, 0x26, 0x77, 0x78, 0xf2, 0xc5, 0xa2, 0x7f, + 0x27, 0x1b, 0x35, 0xca, 0x9c, 0xfc, 0xf8, 0x12, 0xdf, 0xf8, 0xb7, 0x02, 0xcc, 0x73, 0xf0, 0x53, + 0x64, 0x30, 0x9f, 0x03, 0x04, 0xf7, 0x0e, 0xe8, 0x52, 0xfa, 0x98, 0x44, 0xee, 0x66, 0xea, 0xef, + 0x0e, 0x67, 0x0a, 0x3b, 0x5a, 0x08, 0xc3, 0x4f, 0x73, 0xb4, 0xe4, 0x55, 0x45, 0x9a, 0xa3, 0xa5, + 0x5c, 0x04, 0x28, 0x53, 0xe8, 0x13, 0x28, 0xf9, 0x60, 0x31, 0x4a, 0x03, 0x9b, 0x63, 0x68, 0x78, + 0xfd, 0xd2, 0x50, 0x9e, 0xb0, 0xd5, 0x21, 0x24, 0x38, 0xcd, 0xea, 0x24, 0xe2, 0x9c, 0x66, 0x75, + 0x1a, 0x9c, 0x1c, 0x8c, 0x09, 0xc7, 0x8b, 0x32, 0xc7, 0x24, 0x02, 0xd7, 0x65, 0x8e, 0x49, 0x14, + 0x74, 0x52, 0xa6, 0x1e, 0x5f, 0xf9, 0xf5, 0x57, 0xab, 0xb9, 0x7f, 0xfe, 0x6a, 0x75, 0xea, 0x67, + 0x5f, 0xaf, 0xe6, 0x7e, 0xfd, 0xf5, 0x6a, 0xee, 0x9f, 0xbe, 0x5e, 0xcd, 0xfd, 0xfb, 0xd7, 0xab, + 0xb9, 0x3f, 0xff, 0x8f, 0xd5, 0xa9, 0x1f, 0x15, 0xa5, 0xf4, 0xc1, 0x2c, 0xfb, 0xd7, 0x2e, 0x1f, + 0xfe, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x44, 0x4e, 0x61, 0x00, 0xa0, 0x47, 0x00, 0x00, } diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.proto b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.proto index 5c81e5f4c..382f18138 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.proto +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.proto @@ -66,7 +66,9 @@ service RuntimeService { rpc UpdateContainerResources(UpdateContainerResourcesRequest) returns (UpdateContainerResourcesResponse) {} // ReopenContainerLog asks runtime to reopen the stdout/stderr log file // for the container. This is often called after the log file has been - // rotated. + // rotated. If the container is not running, container runtime can choose + // to either create a new log file and return nil, or return an error. + // Once it returns error, new container log file MUST NOT be created. rpc ReopenContainerLog(ReopenContainerLogRequest) returns (ReopenContainerLogResponse) {} // ExecSync runs a command in a container synchronously. @@ -233,6 +235,8 @@ message LinuxSandboxSecurityContext { SELinuxOption selinux_options = 2; // UID to run sandbox processes as, when applicable. Int64Value run_as_user = 3; + // GID to run sandbox processes as, when applicable. + Int64Value run_as_group = 8; // If set, the root filesystem of the sandbox is read-only. bool readonly_rootfs = 4; // List of groups applied to the first process run in the sandbox, in @@ -414,7 +418,7 @@ message PodSandboxStatus { message PodSandboxStatusResponse { // Status of the PodSandbox. PodSandboxStatus status = 1; - // Info is extra information of the PodSandbox. The key could be abitrary string, and + // Info is extra information of the PodSandbox. The key could be arbitrary string, and // value should be in json format. The information could include anything useful for // debug, e.g. network namespace for linux container based container runtime. // It should only be returned non-empty when Verbose is true. @@ -549,6 +553,9 @@ message LinuxContainerSecurityContext { // UID to run the container process as. Only one of run_as_user and // run_as_username can be specified at a time. Int64Value run_as_user = 5; + // GID to run the container process as. Only one of run_as_group and + // run_as_groupname can be specified at a time. + Int64Value run_as_group = 12; // User name to run the container process as. If specified, the user MUST // exist in the container image (i.e. in the /etc/passwd inside the image), // and be resolved there by the runtime; otherwise, the runtime MUST error. @@ -852,7 +859,7 @@ message ContainerStatus { message ContainerStatusResponse { // Status of the container. ContainerStatus status = 1; - // Info is extra information of the Container. The key could be abitrary string, and + // Info is extra information of the Container. The key could be arbitrary string, and // value should be in json format. The information could include anything useful for // debug, e.g. pid for linux container based container runtime. // It should only be returned non-empty when Verbose is true. @@ -993,7 +1000,7 @@ message ImageStatusRequest { message ImageStatusResponse { // Status of the image. Image image = 1; - // Info is extra information of the Image. The key could be abitrary string, and + // Info is extra information of the Image. The key could be arbitrary string, and // value should be in json format. The information could include anything useful // for debug, e.g. image config for oci image based container runtime. // It should only be returned non-empty when Verbose is true. @@ -1088,7 +1095,7 @@ message StatusRequest { message StatusResponse { // Status of the Runtime. RuntimeStatus status = 1; - // Info is extra information of the Runtime. The key could be abitrary string, and + // Info is extra information of the Runtime. The key could be arbitrary string, and // value should be in json format. The information could include anything useful for // debug, e.g. plugins used by the container runtime. // It should only be returned non-empty when Verbose is true. diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/services.go b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/services.go index 45bc5ef32..d8387dc2f 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/services.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/services.go @@ -53,7 +53,8 @@ type ContainerManager interface { // Attach prepares a streaming endpoint to attach to a running container, and returns the address. Attach(req *runtimeapi.AttachRequest) (*runtimeapi.AttachResponse, error) // ReopenContainerLog asks runtime to reopen the stdout/stderr log file - // for the container. + // for the container. If it returns error, new container log file MUST NOT + // be created. ReopenContainerLog(ContainerID string) error } @@ -77,7 +78,7 @@ type PodSandboxManager interface { PortForward(*runtimeapi.PortForwardRequest) (*runtimeapi.PortForwardResponse, error) } -// ContainerStatsManager contains methods for retriving the container +// ContainerStatsManager contains methods for retrieving the container // statistics. type ContainerStatsManager interface { // ContainerStats returns stats of the container. If the container does not diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/websocket.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/websocket.go index b445c922f..8bd6eb709 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/websocket.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/websocket.go @@ -45,7 +45,7 @@ const ( // options contains details about which streams are required for // port forwarding. -// All fields incldued in V4Options need to be expressed explicilty in the +// All fields included in V4Options need to be expressed explicitly in the // CRI (pkg/kubelet/apis/cri/{version}/api.proto) PortForwardRequest. type V4Options struct { Ports []int32 diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go index 74f0595cf..387ad3d5a 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go @@ -156,7 +156,7 @@ func createHttpStreamStreams(req *http.Request, w http.ResponseWriter, opts *Opt case remotecommandconsts.StreamProtocolV2Name: handler = &v2ProtocolHandler{} case "": - glog.V(4).Infof("Client did not request protocol negotiaion. Falling back to %q", remotecommandconsts.StreamProtocolV1Name) + glog.V(4).Infof("Client did not request protocol negotiation. Falling back to %q", remotecommandconsts.StreamProtocolV1Name) fallthrough case remotecommandconsts.StreamProtocolV1Name: handler = &v1ProtocolHandler{} diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/util/util_unsupported.go b/vendor/k8s.io/kubernetes/pkg/kubelet/util/util_unsupported.go index 5fd2e9c68..77f14ea52 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/util/util_unsupported.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/util/util_unsupported.go @@ -31,3 +31,12 @@ func CreateListener(endpoint string) (net.Listener, error) { func GetAddressAndDialer(endpoint string) (string, func(addr string, timeout time.Duration) (net.Conn, error), error) { return "", nil, fmt.Errorf("GetAddressAndDialer is unsupported in this build") } + +// LockAndCheckSubPath empty implementation +func LockAndCheckSubPath(volumePath, subPath string) ([]uintptr, error) { + return []uintptr{}, nil +} + +// UnlockPath empty implementation +func UnlockPath(fileHandles []uintptr) { +}