diff --git a/Dockerfile b/Dockerfile index 203fcdb8..b6f491e5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ############# builder -FROM golang:1.19.7 AS builder +FROM golang:1.20.4 AS builder WORKDIR /go/src/github.com/gardener/gardener-extension-os-ubuntu COPY . . diff --git a/Makefile b/Makefile index d460ccb4..cca78448 100644 --- a/Makefile +++ b/Makefile @@ -88,8 +88,9 @@ check: $(GOIMPORTS) $(GOLANGCI_LINT) @$(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/check-charts.sh ./charts .PHONY: generate -generate: $(CONTROLLER_GEN) $(GEN_CRD_API_REFERENCE_DOCS) $(HELM) $(MOCKGEN) +generate: $(CONTROLLER_GEN) $(GEN_CRD_API_REFERENCE_DOCS) $(HELM) $(MOCKGEN) $(YQ) @$(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/generate.sh ./charts/... ./cmd/... ./pkg/... + $(MAKE) format .PHONY: format format: $(GOIMPORTS) $(GOIMPORTSREVISER) diff --git a/cmd/gardener-extension-os-ubuntu/app/app.go b/cmd/gardener-extension-os-ubuntu/app/app.go index abf38062..610cb6c4 100644 --- a/cmd/gardener-extension-os-ubuntu/app/app.go +++ b/cmd/gardener-extension-os-ubuntu/app/app.go @@ -19,8 +19,6 @@ import ( "fmt" "os" - "github.com/gardener/gardener-extension-os-ubuntu/pkg/generator" - extcontroller "github.com/gardener/gardener/extensions/pkg/controller" controllercmd "github.com/gardener/gardener/extensions/pkg/controller/cmd" "github.com/gardener/gardener/extensions/pkg/controller/heartbeat" @@ -35,6 +33,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" runtimelog "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" + + "github.com/gardener/gardener-extension-os-ubuntu/pkg/generator" ) var ( diff --git a/cmd/gardener-extension-os-ubuntu/main.go b/cmd/gardener-extension-os-ubuntu/main.go index 6305f928..eb37819c 100644 --- a/cmd/gardener-extension-os-ubuntu/main.go +++ b/cmd/gardener-extension-os-ubuntu/main.go @@ -17,11 +17,11 @@ package main import ( "os" - "github.com/gardener/gardener-extension-os-ubuntu/cmd/gardener-extension-os-ubuntu/app" - "github.com/gardener/gardener/pkg/logger" runtimelog "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager/signals" + + "github.com/gardener/gardener-extension-os-ubuntu/cmd/gardener-extension-os-ubuntu/app" ) func main() { diff --git a/example/controller-registration.yaml b/example/controller-registration.yaml index 95c57c40..b1276f96 100644 --- a/example/controller-registration.yaml +++ b/example/controller-registration.yaml @@ -5,7 +5,7 @@ metadata: name: os-ubuntu type: helm providerConfig: - chart: H4sIAAAAAAAAA+1ce3PbNhLP3/wUe8x1knRCUg8/errJTRXZbT11bY/lpNPpdDIQCUmoKYIHgFLUNPfZbwGQFPWwJNup3bTCeCSKBBaLBXb3t8DSAyIimlDh0feKJpLxxOPSy3pZorLgyacpNSyH+/vmG8vit7muN/fqjf3GwYG+X99v1ptPYP8T9b+2ZFIRAfBEcK7W1dv0/DMtg3Xz7w9pPGKDhAt6nz70BB/s7d04/zjtC/N/uLdfewK1TzXIdeVvPv9P4YIoRUUiQXGwcw2TIU2gl7E4YskAUhJekwGVvvMUroZMgszSlAuFF7g+YhjEvAcjosIh1n4JgsZEsTHFdmpYuU+SCAkkdIBPeQLPU0H77D2NYMKw3j9e+HCexFPgiWmpWYKUCohZQn3HP+q+6yrkDUl0+GiEBN52uhAxIR1/wFRgPi37jt/7TQTms7gxHAT6o/gpx0kwI9TD8WUp9FlMpfOlLycpfvbINX6qEV7/D6u+JYLxTMLJ0TF2mAr+Kw2V47OIksDWw1uOP5Yhj2jgPPasbl/W6n9nSITyp2QU36uPTfrfaC7pf2OvvtP/hygkZW+p0PPegnHdIWla+ek3Gn7Ni+jYiagMBUuVedCG79AvQKhXB/S5ADWk8G2+kOCNWTtw3oVySTkJGdEWrFtrznhVt48tnb9+Wav/EQ/9Ab93Hxv0v1GvL+r/wV7tcKf/D1GCAN1gOkVPOVTwPHwBjVqjBt32BXSPAVWbJOYH6aN7ZERRCPkoJcnUhza6ftNMosuXVIxp5Ft8oD0p4HfMQlxS6OGzJKLWSrQRTOBXl/fVhCDSOLVVXsLYhwYajJCmCoiEhCtsx7GJmDCJ1BLT/PSkc3yGjOkenCDAv4LCik5K2rlFA7Qq8FxXcPNH7ot/axJTniFOmepOIcPOVDmInCHsXQ8bBZCE1OIVNevA1zR+ymnwniJYnWCDFH/1qxWBqJxpU4ZKpa0gmEwmPjEc+1wMglxoMsjH6iHXeas3CSIULe3/ZkzgiHtTQHuNDUgPeY3JxEzYQFB8psFcAhOBoEiDL5kLXJOJmFSC9TI1J7SCRxx6tQKKDZeA2+7CSdeF1+3uSfelJvLjydV352+u4Mf25WX77OrkuAvnl9A5Pzs6uTo5P8Nf30D77Cf4/uTs6CVQpmcSxYmgD0eAbDItTlwxmlaX0jkWCpciUxqyPgtxaMkgQwgKA45uIjGglIoRk3papUGWSCZmI6YMuJTL4/IdrDLgrYE2dnodyyF4Ibi+H+DfmCYRFwFCyGHW83Gug8Iuzi6GCBODorkX8kQJHsdoOQUdaIGZnn0kW9pP8OGfz0OiwHby9viyi6J5kf+k7wnKgAY3UdKwC85T3R0OuDuVio46POmzQSsnv+6hh4DU1WNGfG/ge+6uaaIXi4Q5UVg8b+Se39Qi1tILuRCIdGHGJMwx6aRV6jt//dmVtf4fF1WKwRwao3v1cfv9n8Nmvb7b/3mIsuX8v8NIH62N9FV6+1hw4/4Pro25+W9oALjDfw9RPnzwIKJ9liAq0lGaC97Hj87aSE03QX9pKpofJQE2QldgKQDoJ6wPQyIvzE4PuHJIGvsHLRf8tyTOqPRNfV+RAZQtUsES1Qf3C/n1F3KxpqApl0xxMV1HgsaIIVYQbN2ZIA4Wf1QunarYIprGfDqiicpjWCsBhGYywJC6Iq7HnuwVZUv9n43xDttBG/R/bw+N/bz+N5poEnb6/wCluv9TrNhrlkQtOCqn3BlRRSKiSAsVYoutHFtJIjTEmh8+gH9JY0oQg58Vt61uxaSHuqqJgu7bv856iO6p0lrIg606wiiKxiNE3YEBoFvUX+6IJbgEklW8WjaxDwxzPTImDDnGMFhNNfxHrI32Q/JMhEin6NcPY55FgZqmSG+Gmh0dy+iRCjpmmqvvEEOj2TnVMUsLauaJCeWkZSO3RvnNDkf+LTcS+QuxqRWb2V4/rcjxHpK8i2wKC5FzU1knuuQuAOOzckBYRbBQ+jYO6YYCF2AyKASNLCQYhdsgrqACaMM5thvSrDIcdwVD7g0tpO5Gt1Eio7NKT7UJJ1msIOdK2+mUo7+wEf8sLkMZsRG9gbqOnXJ+FgZpoqoZWxUHYm/EcxN3r6m728LWBatPuECdHywtYl6M3MNZMls8Aq1EHPMJjbZrH+E0zrUo9MCKkXGB2tSJiZRn8yOVJqT1/lWr5ZV19xjKt8NQ68LZtnLRs0jQTYtSzN52JswWgwaM/FgSxlk0Azl+VYbm3kUWxxcc1XU6p8IWUKTlw2q7kI9GqB2zFeBBsBVfHngeTmekq2l7oGsVxsiLeXj9qsKBrXic1yuN1ilWqzKjaY7Ie23bwgzD/kQhSf1DH4xV6c00w1znlbvTBDVogV7EpNbzynbJHKX8cWf2FH6HX1EDwX3pLtIaUrTwPUqUV7qXVzd5F7ihJTJKJx5qOK4mEntSjy+6cXBlO9+0O8mbdW2rpW7s8aLH7bYMzsjMmN3Ug21yXrRolw0WB1+uihxjVgmWapc/W5pUa468Hvp1j0SR3oN71brZXpWNaTKuLk2rN6fH7aPjy3fHp8cdvdP37qz9w3H3ot05LmsCjDXdb9BKtio3AfqMxtEl7c/fze9fEDVslS7EL+fYyb3IzCXmPrfKaXmzhdVB8Z/05tlyi98hQRngYoV6bQHSPzYQe6SyJf5PeYS6KjJzAtjLogG9RSCwAf/Xa83DBfy/1zjc2+H/hyi5ckk6QuPR0Wc7An3cf15B3W/UvRr6uQ5JLeplqErfI8DI4wX/W6bezgxONZBIjaMrg988Hl9Zo4f6Xq/qoQ0+Lnh0VK6312a9/amjkNuCrwIGob99k+SRRYx1638yhP/Yy3NX/uCypf0XPRLeORFog/1vNmqL9r9erx3s7P9DFM/z5gyzmWiSqSFGZr/ZM77rr4yhKDeGOjHKjIpLHtPb2+TPYs9HZLFGkh42ZN8KnqWGYW+W0LS43+PMIVBdNbRCkuYHLw5qbVRrN4/WPQqQO5WtrdFnCYnZb7YL9N29vGPtKfV3zKS9mGgHYq7S8ipLcdLo8gBdd3kkGCMJqmT1+i6dY0PdZaX3GUtb8UHHiNsX+suJbtXeCm5E0k9Fo3hm8IR9np+9L0Tmq2U02TgbIeciQklXtHCZJbNyVw+pmAmo9HfPTm4zZm+VYpYhNayWSiGLe5ml13gDFeavap1whHkQXczlGgFhrWWzvZU4ZNbTWc7GEFoS3bk9uE8Jwx/bDf5ty5b4L999vRsE3JT/2Wwunv/VD5q7+P9BykL+95ye/1ER99IZT+UI4cYTtb7gI4/Ees+WRp490fFw6tBxSC8/YfDMayktePbzB1dfums2OV+6qeCKhzx2W+5V58L9+MuzrZkpx+kVwXreayVax87debM+t7eJvVqi7sfb9JzyyDNequx5thuOYmD6/HAGUw3Zp3B1fnTesrm5pq12OYKTcGiyPWkqaEh0sqc+qEs4xDwZUIHs0Ahv5qm3/UxlgvpwSUd8bPI1RzpRV3KdISrLhVEeX3w9rvuH+zr9A3qUJvq1IL0WIv92M243irzlYZtjpVWL4U70P90C+iwgRLH9ZI+pc2RwcrG0+fRg+2EAVvLO7JwhF7chZ49YN5xYFNOBK71zsUMU25Xb+X9ikd8tYcDG/L/a3oL/bzbqu/e/HqSs8/8Fzv8zb7z/0ZYSQyo+0lKYl8kVv6YosT6JJf2sTc2W+j9Oyd3fA910/lc/aCzof+3woLnT/4coC4frep5tala0cGLnak2QIUJMxFTl3oubWwysphg+vOBRO69HxQrDUU2ksenGOo/Gw263NBsFclnBdwH0qmk28/esrSlTgsxNRiuZQeUjm1/07MtnZYbBiCVtCxKr2QsjRMPC5vuUr2W5y8z4s9a+baKRd9HCXTOMFS0X85IRxhnkWyZWrMrp1PeX8joNUl4zL1jB7sdVxWfv/MAjOofINOvVyv6s3nymxWOv+F2plrX2f2yn9r7/AGCj/a/tL/3/j8Od/X+QYhMcjaUsXoVoAc38QSi0hS+XR/4vL2avQ842GYIqwlJk0AKDGbR5SSspkSf9M64u9KvCaHmc2QEDfPjoOGg9NBO562mBTtS9wXwvG+LCCB/s/cA2mixX+yfXcSpZeLrSQh5jC/bx5o3ZeQXy0/gzP89o2VzAVYmCLWjWHGc+C7NVGZ1OxGwVZyzOck5kC37+xSnfyWnZg5PcK+NInmLQrswBoXmDMw+NXwL1Bz7IIsO6NwWzWTLLXXbymprg01z0ZSZ00a6clCJVu5wbG5N/Vfuq9lkD4F3ZlV3Zlb9p+T8K27CkAFAAAA== + chart: H4sIAAAAAAAAA+0ca3PbNjKf+Sv2mOsk6ZjUw68eb3JTVXZbT13bYznpdDqdDERCEmqK4AGgFDXN/fZbACRFPSzJdmLXrTAemwIXu4sF9gWs3CciogkVHn2vaCIZTzwuvaybJSqrPfs0rY7tcH/f/MU2/9c8N3b3Gs395sGB7m/s7zZ2n8H+J6K/smVSEQHwTHCuVsGte/9EW3/V+vsDGg9ZP+GC3oeGXuCDvb0b1x+XfW79D/f268+g/qkmuar9zdf/OVwQpahIJCgOdq1hPKAJdDMWRyzpQ0rCa9Kn0neew9WASZBZmnKh8AH3Rwz9mHdhSFQ4QOgdEDQmio0ojlODSj9JIkSQ0D6+5Qm8TAXtsfc0gjFDuH+88uE8iSfAEzNSswQpFRCzhPqOf9R511HIG6Jo8+EQEbxtdyBiQjp+n6ma+W3Zd/zu76Jmfhcdg35N/yo+ylFSmyLq4vyyFHosptL50pfjFH93yTX+VkN8/h+CviWC8UzCydExEkwF/42GyvFZREnNwmGX449kyCNacx57VTdvK/W/PSBC+RMyjO9FY53+N5vNef1v7u5t9f8hGknZWyr0ugcwajgkTcuPbsOvu05EZShYqkxXC75HjwCh3hfQ4wLUgMJ3+RaCN2bXwHkHys3kJGRIA1i1y5xRQbDuI8UnpDt/hbZS/yMe+n1+bxpr9L/ZaMz7/4O9+uFW/x+i1WroBtMJesqBgpfhK2jWm3XotC6gcwyo4CQxH0gP3SMjikLIhylJJj600PWbYRJdvqRiRCPfxgfakwL+jVmIWwo9fJZE1NqKFgYT+KfDe2pMMNI4tSA7MPKhiWYjpKkCIiHhCsdxHCLGTCK2xAw/PWkfnyFjmoJTq+FPgWEJkRJ3btGg6dfhpQZw81fuq39rFBOeYZwy0UQhQ2KqnETOEFLX00YBJCG18YqaEvA1jp9zHLyrCIITHJDip14VEIjKmTZtoFQa1Grj8dgnhmOfi34tF5qs5XP1kOt81JsEIxQt7f9mTOCMuxNAe40DSBd5jcnYLFhfUHyng7kExgKDIh18yVzgGk3EpBKsm6kZoRU84tSrACg23AJuqwMnHRe+aXVOOjsayU8nV9+fv7mCn1qXl62zq5PjDpxfQvv87Ojk6uT8DD99C62zn+GHk7OjHaBMrySKE4M+nAGyybQ4ccdoXB1KZ1goHItMach6LMSpJf0MQ1Doc3QWiQlKqRgyqZdVmsgS0cRsyJQJLuXivHwHQfo86Gtjp/exHIAXguv7NfwZ0STiooYh5CDr+rjWtcIuTh8GGCbWiuFeyBMleByj5RS0rwVmKPuItrSf4MM/X4ZEgSXy9viyg6J5lX+k7wnKgNZuwqTDLjhPNTmccGciFR22edJj/SBHv+qlhwGpq+eM8b0J33OnTRO9WSTMiMLG80bueacWsZZeyIXASBemTMIMk05axb713U+urfT/uKlSTObQGN2Lxu3Pfw53G43t+c9DtA3X/x1m+mhtpK/S2+eCa89/cG/MrH9TB4Db+O8h2ocPHkS0xxKMinSu5oL38aOzMl/TQ9BfGkDzoUTAhugKLAYA/Yb1YEDkhTnpAVcOSHP/IHDBf0vijErfwPuK9KEckQqWqB64X8ivv5DzkIKmXDLFxWQVChpjDLEEYXBnhDhZ/FB5dKpii2ga88mQJirPZK0EMDSTNUypK+J67MVe0jbU/+kc73ActEb/9/bQ2M/qf3MXTcJW/x+gVc9/ih17zZIogKNyyZ0hVSQiigSoEBsc6FggiaEhQn74AP4ljSnBGPys6La6FZMu6qpGCpq2f511MbqnSmshr21ECLMoGg8x6q6ZAHQD+EVCLMEtkCzj1bKJNDDN9ciIMOQY02A10eE/xtpoPyTPRIh4Crp+GPMsqqlJivimUbOjcxk9U0FHTHP1PcbQaHZOdc4SQN28MamctGzk1ijvbHPk33Ijkb8Qh1qxmeP104oc7yHJu8imsBA5N5V9olvuAjA/KyeEIIKF0rd5SCcUuAGTfiFoZCHBLNwmcQUWQBvOcdyAZpXpuEsYcm8YITUZPUaJjE6BnmsTTrJYQc6VttMpR39hM/5pXoYyYkN6A3adO+X8zE3SZFVTtioOxHbEMwt3r6W728bWDcHHXKDO9xc2MS9m7uEqmSMegVYijvmYRpuNj3AZZ0YUemDFyLhAbWrHRMqz2ZlKk9J6/6rXc2BNHlP5VhhqXTjbVC56FQm6aVGK2dvMhNlmogEjP5aEcRZNgxy/KkPTd5HF8QVHdZ3MqLANKNLyZXVcyIdD1I7pDvCgthFfHngeLmekwbQ90FCFMfJiHl6/rnBgAY9zuNJonSJYlRmNc0jea9sWZpj2JwpR6g/6YqyKb6oZ5jkH7kwS1KA5fBGTWs8rxyUzmPLX7elb+AN+Qw0Ed8edxzWgaOG7lCivdC+vb/IucMNIZJSOPdRw3E0k9qSeX3Tj5Mpxvhl3kg/r2FELZOz1osftsQyuyNSY3UTBDjkvRrTKAfOTL3dFHmNWEZZql79bWFRrjrwu+nWPRJE+g3sd3GyvysE0GVW3ptWb0+PW0fHlu+PT47Y+6Xt31vrxuHPRah+XkAAjjfdbtJJBpROgx2gcXdLebG/ef0HUIChdiF+usZN7kalLzH1uldOyM0BwUPxnfXi2OOIPSFAGuFmhUZ8L6R87EHuktmH8n/IIdVVk5h6wm0V9eotEYE3836jvHs7F/3vNw+3974O0XLkkHaLxaOu7HYE+7j+voeE3G14d/VybpDbqZahKP2CAkecL/ndMvZ0anGoikRpHVya/eT6+FKKL+t6o6qFNPi54dFTut2/MfvtTZyG3Db6KMAj97ZskzyxihG38ySL8x96e2/aZ24b2X3RJeOdCoDX2f7dZn7f/jUb9YGv/H6J5njdjmM1Ck0wNMDP73d7xXX9lDEV5MNSOUWZUXPKY3t4mP4kzH5HFOpL0cCD7TvAsNQx707Km+fMeZyYC1aChFZI0H3hxUWuzWnt4tOpVDblT2UqIHktIzH63JNB3d3PC2lPqvzGT9mGsHYh5SsunLMVFo4sTdN3FmWCOJKiS1ee7EMeBmmSF+pSljfigI4zb5+jlSDcabwU3JOmnwlG8M/GEfZ/fvc9l5stlNF67GiHnIkJJV7RwkSWzc5dPqVgJqNC7J5HbzNlbpphlSg3LpVLI4l5m6RvsQIX5q1onnGGeRBdruUJACLVotjcSh8y6usrZGEKLojNzBvcpw/DHdoN/27Zh/Jefvt4tBFxX/7m7O3//1zjY1n8/TJur/57R88+VcS/c8VSuEG68UesJPvRIrM9saeTZGx0Plw4dh/TyGwbPfC0lgBe/fHD1o7vikHPHTQVXPOSxG7hX7Qv3468vNmamnKdXJOs51Uq2jsTdWbM+c7aJVC1S9+NtKKc88oyXKilPT8NRDEzfH07DVIP2OVydH50HtjbXjNUuR3ASDky1J00FDYku9tQXdQmHmCd9KpAdGmFnXnrby1QmqA+XdMhHpl5zqAt1JdcVorLcGOX1xdejhn+4r8s/oEtpor8WpPdC5N9uxe1Bkbc4bXOttGwz3An/p9tATyKEKI6f7DV1HhmcXCwcPj3YeRiAlbwzvWfIxW3Q2SvWNTcWxXLgTm9fbCOKzdrt/D+xkd8tw4C19X/1vTn/v9vU9Z9b///52yr/X8T5f+aD989tKTGl4kMthVmZXPFrihLrkVjSJ21qNtT/UUru/j3Qdfd/jYO5738264cHu1v9f4g2d7mu19mWZkVzN3au1gQZYoiJMVV59uLmFgPBFMOXFzxq5XBULDEc1UIaW26s62g8JLuh2SgilyV8F4Fetcxmts/amrIkyHQyWqkMKl/Z+qIXX74oKwyGLGnZILFavTDEaFjYep/ya1nuIjP+dLRvh+jIuxjhrpjGkpHzdckYxpnItyysWFbTqfsX6jpNpLxiXRDAnsdVxWd7fuQRnYnINOtVYH8KN1tp8dg7ftuqbaX9H9mlve8/AFhr/+v7C///43Br/x+k2QJHYymLr0IEQDO/Hwpt4cvtkf/Li+nXIaeHDLVqhKVIPwATM2jzklZKIk96Z1xd6K8Ko+VxphcM8OGj46D10EzkricAXah7g/leNMSFET7Y+5GtNVmu9k+u41Sq8DTQXB1jAPvYeWN1XhH56fgzv88IbC3gskLBAHbrjjNbhRlUZqcLMYPijsVZrIkM4JdfnfI7OYG9OMm9Ms7kOSbtylwQmm9w5qnxDlC/74MsKqy7EzCHJdPaZSeH1Aif56IvK6GLceWiFKXa5drYnPyr+lfbf9mwbdu2bdv2BNv/AbOcVfcAUAAA values: image: tag: v1.22.0-dev diff --git a/go.mod b/go.mod index 5edce985..a36f2f2b 100644 --- a/go.mod +++ b/go.mod @@ -1,23 +1,23 @@ module github.com/gardener/gardener-extension-os-ubuntu -go 1.19 +go 1.20 require ( - github.com/gardener/gardener v1.66.0 - github.com/go-logr/logr v1.2.3 - github.com/onsi/ginkgo/v2 v2.8.3 - github.com/onsi/gomega v1.27.1 + github.com/gardener/gardener v1.70.2 + github.com/go-logr/logr v1.2.4 + github.com/onsi/ginkgo/v2 v2.9.2 + github.com/onsi/gomega v1.27.6 github.com/spf13/cobra v1.6.1 - golang.org/x/tools v0.6.0 - k8s.io/api v0.26.1 - k8s.io/apimachinery v0.26.1 + golang.org/x/tools v0.7.0 + k8s.io/api v0.26.3 + k8s.io/apimachinery v0.26.3 k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible - k8s.io/component-base v0.26.1 - sigs.k8s.io/controller-runtime v0.14.4 + k8s.io/component-base v0.26.3 + sigs.k8s.io/controller-runtime v0.14.6 ) require ( - github.com/BurntSushi/toml v0.3.1 // indirect + github.com/BurntSushi/toml v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect @@ -33,19 +33,19 @@ require ( github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gardener/etcd-druid v0.15.3 // indirect github.com/gardener/hvpa-controller/api v0.5.0 // indirect - github.com/gardener/machine-controller-manager v0.45.0 // indirect + github.com/gardener/machine-controller-manager v0.48.1 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-logr/zapr v1.2.3 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.20.0 // indirect github.com/go-openapi/swag v0.19.14 // indirect - github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gobuffalo/flect v0.3.0 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect - github.com/golang/protobuf v1.5.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect github.com/google/gnostic v0.5.7-v3refs // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/gofuzz v1.1.0 // indirect @@ -58,7 +58,7 @@ require ( github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/kubernetes-csi/external-snapshotter/v2 v2.1.4 // indirect + github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 // indirect github.com/mailru/easyjson v0.7.6 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect @@ -81,33 +81,33 @@ require ( go.uber.org/multierr v1.7.0 // indirect go.uber.org/zap v1.24.0 // indirect golang.org/x/crypto v0.6.0 // indirect - golang.org/x/mod v0.8.0 // indirect - golang.org/x/net v0.7.0 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/net v0.8.0 // indirect golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/term v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/sys v0.6.0 // indirect + golang.org/x/term v0.6.0 // indirect + golang.org/x/text v0.8.0 // indirect golang.org/x/time v0.3.0 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03 // indirect + google.golang.org/genproto v0.0.0-20221018160656-63c7b68cfc55 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - istio.io/api v0.0.0-20221013011440-bc935762d2b9 // indirect - istio.io/client-go v1.15.3 // indirect - k8s.io/apiextensions-apiserver v0.26.1 // indirect + istio.io/api v0.0.0-20230217221049-9d422bf48675 // indirect + istio.io/client-go v1.17.1 // indirect + k8s.io/apiextensions-apiserver v0.26.2 // indirect k8s.io/autoscaler/vertical-pod-autoscaler v0.13.0 // indirect - k8s.io/code-generator v0.26.1 // indirect + k8s.io/code-generator v0.26.3 // indirect k8s.io/gengo v0.0.0-20220902162205-c0856e24416d // indirect k8s.io/helm v2.16.1+incompatible // indirect k8s.io/klog v1.0.0 // indirect k8s.io/klog/v2 v2.80.1 // indirect - k8s.io/kube-aggregator v0.26.1 // indirect + k8s.io/kube-aggregator v0.26.2 // indirect k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect - k8s.io/kubelet v0.26.1 // indirect - k8s.io/metrics v0.26.1 // indirect + k8s.io/kubelet v0.26.2 // indirect + k8s.io/metrics v0.26.2 // indirect k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 // indirect sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20221212190805-d4f1e822ca11 // indirect sigs.k8s.io/controller-tools v0.11.3 // indirect diff --git a/go.sum b/go.sum index 806d3c73..9d503ddd 100644 --- a/go.sum +++ b/go.sum @@ -36,8 +36,9 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.0.0 h1:dtDWrepsVPfW9H/4y7dDgFc2MBUSeJhlaDtK13CxFlU= +github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= @@ -57,7 +58,6 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= @@ -83,25 +83,17 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/container-storage-interface/spec v1.1.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4= -github.com/container-storage-interface/spec v1.2.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.2 h1:jCwT2GTP+PY5nBz3c/YL5PAIbusElVrPujOBSCj8xRg= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20191011121108-aa519ddbe484 h1:pEtiCjIXx3RvGjlUJuCNxNOw0MNblyR9Wi+vJGBFh+8= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= @@ -112,12 +104,11 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v0.0.0-20200808040245-162e5629780b/go.mod h1:NAJj0yf/KaRKURN6nyi7A9IZydMivZEm9oQLWNjfKDc= github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= @@ -130,12 +121,12 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/gardener/etcd-druid v0.15.3 h1:IMsJTaUaSOXusfgOOF5GX5eJ0o1CI/9XtKzgxwWJ0Eo= github.com/gardener/etcd-druid v0.15.3/go.mod h1:VTxoQXmaE2RSP+LQS5qWUDoXzmdK6xlKLUdFhaGu6KM= -github.com/gardener/gardener v1.66.0 h1:krDrGx6asbjLBJGI7MtAHTV5NtRk9K3LJy1/4zQS0uU= -github.com/gardener/gardener v1.66.0/go.mod h1:nS3b9qWHphOkzK3aZZYHSlwKz2qTxcKSQ35iHnk80UY= +github.com/gardener/gardener v1.70.2 h1:C2n9klhcmjudGd5aiRBjxq61Jvzcfw5Md5nXq2eYchg= +github.com/gardener/gardener v1.70.2/go.mod h1:cqFadgATO9ptB8tpTQssDu8imWoehgvaWBO8vhnEGos= github.com/gardener/hvpa-controller/api v0.5.0 h1:f4F3O7YUrenwh4S3TgPREPiB287JjjUiUL18OqPLyAA= github.com/gardener/hvpa-controller/api v0.5.0/go.mod h1:QQl3ELkCaki+8RhXl0FZMfvnm0WCGwGJlGmrxJj6lvM= -github.com/gardener/machine-controller-manager v0.45.0 h1:rpf0PHRXJMGY93oMruNP+tnMawKJXhhzCACyNJsT8Lo= -github.com/gardener/machine-controller-manager v0.45.0/go.mod h1:+4j/6ab3jqbM6tM6FPtlajYgaJHM0xZ44ErOjCBlsP8= +github.com/gardener/machine-controller-manager v0.48.1 h1:Oxr5e6gRm7P40Ds4nGlga/0nmfF7cH4rOfjthR6Mm38= +github.com/gardener/machine-controller-manager v0.48.1/go.mod h1:Axeu1Oh3agySk0oR4T+FUNax41Ni2K8tuksu8KRHuh0= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -154,8 +145,9 @@ github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7 github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= @@ -176,20 +168,19 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/gobuffalo/flect v0.3.0 h1:erfPWM+K1rFNIQeRPdeEXxo8yFr/PO17lhRnS8FUrtk= github.com/gobuffalo/flect v0.3.0/go.mod h1:5pf3aGnsvqvCj50AVni7mJJF8ICxGZ8HomberC3pXLE= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -220,8 +211,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= @@ -237,11 +229,9 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -269,11 +259,10 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= @@ -286,7 +275,6 @@ github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= @@ -295,7 +283,6 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -320,10 +307,8 @@ github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kubernetes-csi/csi-lib-utils v0.7.1/go.mod h1:bze+2G9+cmoHxN6+WyG1qT4MDxgZJMLGwc7V4acPNm0= -github.com/kubernetes-csi/csi-test v2.0.0+incompatible/go.mod h1:YxJ4UiuPWIhMBkxUKY5c267DyA0uDZ/MtAimhx/2TA0= -github.com/kubernetes-csi/external-snapshotter/v2 v2.1.4 h1:5k854kIoa81t4A0BhVAXV/VcNKklXwdPyGrvkCDoZC4= -github.com/kubernetes-csi/external-snapshotter/v2 v2.1.4/go.mod h1:2ar8FelpdkUJaoqp8cQpucBd8pir8c1K5BQIVZwUbJI= +github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 h1:nHHjmvjitIiyPlUHk/ofpgvBcNcawJLtf4PYHORLjAA= +github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0/go.mod h1:YBCo4DoEeDndqvAn6eeu0vWM7QdXmHEeI9cFWplmBys= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -349,7 +334,6 @@ github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0Gq github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= @@ -367,8 +351,6 @@ github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.2/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= @@ -378,8 +360,8 @@ github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47 github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= -github.com/onsi/ginkgo/v2 v2.8.3 h1:RpbK1G8nWPNaCVFBWsOGnEQQGgASi6b8fxcWBvDYjxQ= -github.com/onsi/ginkgo/v2 v2.8.3/go.mod h1:6OaUA8BCi0aZfmzYT/q9AacwTzDpNbxILUT+TlBq6MY= +github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= +github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= @@ -390,15 +372,14 @@ github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeR github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= github.com/onsi/gomega v1.23.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= -github.com/onsi/gomega v1.27.1 h1:rfztXRbg6nv/5f+Raen9RcGoSecHIFgBBLQK3Wdj754= -github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -428,8 +409,6 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= @@ -451,7 +430,6 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -474,7 +452,6 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -501,9 +478,7 @@ golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= @@ -539,8 +514,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -589,8 +564,8 @@ golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -632,14 +607,12 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220220014-0732a990476f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -656,6 +629,7 @@ golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -685,14 +659,14 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -700,16 +674,16 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -717,7 +691,6 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -756,6 +729,7 @@ golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -774,17 +748,14 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= -gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -823,7 +794,6 @@ google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBr google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191220175831-5c49e3ecc1c1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= @@ -836,7 +806,6 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= @@ -851,8 +820,8 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03 h1:W70HjnmXFJm+8RNjOpIDYW2nKsSi/af0VvIZUtYkwuU= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20221018160656-63c7b68cfc55 h1:U1u4KB2kx6KR/aJDjQ97hZ15wQs8ZPvDcGcRynBhkvg= +google.golang.org/genproto v0.0.0-20221018160656-63c7b68cfc55/go.mod h1:45EK0dUbEZ2NHjCeAd2LXmyjAgGUGrpGROgjhC3ADck= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -866,12 +835,9 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -902,7 +868,6 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkep gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -921,39 +886,41 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -istio.io/api v0.0.0-20221013011440-bc935762d2b9 h1:oDY95NgV77atZrCMx7i3XaSPL/OSirRI8jWWsiHA4GI= -istio.io/api v0.0.0-20221013011440-bc935762d2b9/go.mod h1:hQkF0Q19MCmfOTre/Sg4KvrwwETq45oaFplnBm2p4j8= -istio.io/client-go v1.15.3 h1:Zyd4ZVYCImWlPs+7yGye//K7l0j4UM06cqmQm5v8JX4= -istio.io/client-go v1.15.3/go.mod h1:7M4mYZ9o9UVQQEwWihAq//EK9Ak0a/pUfOvP7b3I+XM= -k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= +istio.io/api v0.0.0-20230217221049-9d422bf48675 h1:dxHqYbJwurfq+x2OOG4WP+NkbyjURgcP9PQTsxh7HXM= +istio.io/api v0.0.0-20230217221049-9d422bf48675/go.mod h1:owGDRg9uqMob8CN1gxaOzk6nJxnbT8wrP7PmggpJHHY= +istio.io/client-go v1.17.1 h1:W0kQXYCzIluA/20zLzxeNF7bNMJXXArmGYRt/MIg2io= +istio.io/client-go v1.17.1/go.mod h1:mLTRYYFxHctzUbt8Iclgj+Sueq34+qC2ZEJTn6BxRuE= k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= k8s.io/api v0.18.8/go.mod h1:d/CXqwWv+Z2XEG1LgceeDmHQwpUJhROPx16SlxJgERY= -k8s.io/api v0.26.1 h1:f+SWYiPd/GsiWwVRz+NbFyCgvv75Pk9NK6dlkZgpCRQ= +k8s.io/api v0.19.0/go.mod h1:I1K45XlvTrDjmj5LoM5LuP/KYrhWbjUKT/SoPG0qTjw= k8s.io/api v0.26.1/go.mod h1:xd/GBNgR0f707+ATNyPmQ1oyKSgndzXij81FzWGsejg= -k8s.io/apiextensions-apiserver v0.26.1 h1:cB8h1SRk6e/+i3NOrQgSFij1B2S0Y0wDoNl66bn8RMI= -k8s.io/apiextensions-apiserver v0.26.1/go.mod h1:AptjOSXDGuE0JICx/Em15PaoO7buLwTs0dGleIHixSM= -k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.17.1-beta.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= +k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU= +k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE= +k8s.io/apiextensions-apiserver v0.26.2 h1:/yTG2B9jGY2Q70iGskMf41qTLhL9XeNN2KhI0uDgwko= +k8s.io/apiextensions-apiserver v0.26.2/go.mod h1:Y7UPgch8nph8mGCuVk0SK83LnS8Esf3n6fUBgew8SH8= k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= k8s.io/apimachinery v0.18.8/go.mod h1:6sQd+iHEqmOtALqOFjSWp2KZ9F0wlU/nWm0ZgsYWMig= -k8s.io/apimachinery v0.26.1 h1:8EZ/eGJL+hY/MYCNwhmDzVqq2lPl3N3Bo8rvweJwXUQ= +k8s.io/apimachinery v0.19.0/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apimachinery v0.26.1/go.mod h1:tnPmbONNJ7ByJNz9+n9kMjNP8ON+1qoAIIC70lztu74= +k8s.io/apimachinery v0.26.3 h1:dQx6PNETJ7nODU3XPtrwkfuubs6w7sX0M8n61zHIV/k= +k8s.io/apimachinery v0.26.3/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= +k8s.io/apiserver v0.26.2 h1:Pk8lmX4G14hYqJd1poHGC08G03nIHVqdJMR0SD3IH3o= k8s.io/autoscaler/vertical-pod-autoscaler v0.9.0/go.mod h1:PwWTGRRCxefhAezrDbG/tRYSAW7etHjjMPAr8fXKVAA= k8s.io/autoscaler/vertical-pod-autoscaler v0.13.0 h1:pH6AsxeBZcyX6KBqcnl7SPIJqbN1d59RrEBuIE6Rq6c= k8s.io/autoscaler/vertical-pod-autoscaler v0.13.0/go.mod h1:LraL5kR2xX7jb4VMCG6/tUH4I75uRHlnzC0VWQHcyWk= k8s.io/client-go v0.26.1 h1:87CXzYJnAMGaa/IDDfRdhTzxk/wzGZ+/HUQpqgVSZXU= k8s.io/client-go v0.26.1/go.mod h1:IWNSglg+rQ3OcvDkhY6+QLeasV4OYHDjdqeWkDQZwGE= -k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= k8s.io/code-generator v0.18.3/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= -k8s.io/code-generator v0.26.1 h1:dusFDsnNSKlMFYhzIM0jAO1OlnTN5WYwQQ+Ai12IIlo= -k8s.io/code-generator v0.26.1/go.mod h1:OMoJ5Dqx1wgaQzKgc+ZWaZPfGjdRq/Y3WubFrZmeI3I= -k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= +k8s.io/code-generator v0.19.0/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= +k8s.io/code-generator v0.26.3 h1:DNYPsWoeFwmg4qFg97Z1cHSSv7KSG10mAEIFoZGTQM8= +k8s.io/code-generator v0.26.3/go.mod h1:ryaiIKwfxEJEaywEzx3dhWOydpVctKYbqLajJf0O8dI= k8s.io/component-base v0.18.3/go.mod h1:bp5GzGR0aGkYEfTj+eTY0AN/vXTgkJdQXjNTTVUaa3k= -k8s.io/component-base v0.26.1 h1:4ahudpeQXHZL5kko+iDHqLj/FSGAEUnSVO0EBbgDd+4= -k8s.io/component-base v0.26.1/go.mod h1:VHrLR0b58oC035w6YQiBSbtsf0ThuSwXP+p5dD/kAWU= +k8s.io/component-base v0.26.3 h1:oC0WMK/ggcbGDTkdcqefI4wIZRYdK3JySx9/HADpV0g= +k8s.io/component-base v0.26.3/go.mod h1:5kj1kZYwSC6ZstHJN7oHBqcJC6yyn41eR+Sqa/mQc8E= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201203183100-97869a43a9d9/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20220902162205-c0856e24416d h1:U9tB195lKdzwqicbJvyJeOXV7Klv+wNAWENRnXEGi08= @@ -969,43 +936,36 @@ k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-aggregator v0.26.1 h1:TqDWwuaUJpyhWGWw4JrXR8ZAAaHa9qrsXxR41aR3igw= -k8s.io/kube-aggregator v0.26.1/go.mod h1:E6dnKoQ6f4eFl8QQXHxTASZKXBX6+XcjROWl7GRltl4= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kube-aggregator v0.26.2 h1:WtcLGisa5aCKBbBI1/Xe7gdjPlVb5Xhvs4a8Rdk8EXs= +k8s.io/kube-aggregator v0.26.2/go.mod h1:swDTw0k/XghVLR+PCWnP6Y36wR2+DsqL2HUVq8eu0RI= k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= -k8s.io/kubelet v0.26.1 h1:wQyCQYmLW6GN3v7gVTxnc3jAE4zMYDlzdF3FZV4rKas= -k8s.io/kubelet v0.26.1/go.mod h1:gFVZ1Ab4XdjtnYdVRATwGwku7FhTxo6LVEZwYoQaDT8= -k8s.io/kubernetes v1.14.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/kubelet v0.26.2 h1:egg7YfhCpH9wvLwQdL2Mzuy4/kC6hO91azY0jgdYPWA= +k8s.io/kubelet v0.26.2/go.mod h1:IXthU5hcJQE6+K33LuaYYO0wUcYO8glhl/ip1Hzux44= k8s.io/metrics v0.18.3/go.mod h1:TkuJE3ezDZ1ym8pYkZoEzJB7HDiFE7qxl+EmExEBoPA= -k8s.io/metrics v0.26.1 h1:iB+QdMLa2V70a7zb0XYEcaUpPM0y+p4fZN0UtxcPHLk= -k8s.io/metrics v0.26.1/go.mod h1:fMeLXmK/xgvckFG63GJ0kDjFiQH7P0Dpi5Lvhlo5DXE= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/metrics v0.26.2 h1:2gUvUWWnHPdE2tyA5DvyHC8HGryr+izhY9i5dzLP06s= +k8s.io/metrics v0.26.2/go.mod h1:PX1wm9REV9hSGuw9GcXTFNDgab1KRXck3mNeiLYbRho= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 h1:KTgPnR10d5zhztWptI952TNtt/4u5h3IzDXkdIMuo2Y= k8s.io/utils v0.0.0-20221128185143-99ec85e7a448/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/controller-runtime v0.14.4 h1:Kd/Qgx5pd2XUL08eOV2vwIq3L9GhIbJ5Nxengbd4/0M= -sigs.k8s.io/controller-runtime v0.14.4/go.mod h1:WqIdsAY6JBsjfc/CqO0CORmNtoCtE4S6qbPc9s68h+0= +sigs.k8s.io/controller-runtime v0.14.6 h1:oxstGVvXGNnMvY7TAESYk+lzr6S3V5VFxQ6d92KcwQA= +sigs.k8s.io/controller-runtime v0.14.6/go.mod h1:WqIdsAY6JBsjfc/CqO0CORmNtoCtE4S6qbPc9s68h+0= sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20221212190805-d4f1e822ca11 h1:Nub5Qwhk4i96Qvpuw1v66g45+UfOPFi3q0npFZCW+7o= sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20221212190805-d4f1e822ca11/go.mod h1:Lm5xRgQejdMHAz81exSpqvwEkIdTfoNtUDA6MM4kltw= sigs.k8s.io/controller-tools v0.11.3 h1:T1xzLkog9saiyQSLz1XOImu4OcbdXWytc5cmYsBeBiE= sigs.k8s.io/controller-tools v0.11.3/go.mod h1:qcfX7jfcfYD/b7lAhvqAyTbt/px4GpvN88WKLFFv7p8= sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/generator/generator_test.go b/pkg/generator/generator_test.go index 124458eb..d072498f 100644 --- a/pkg/generator/generator_test.go +++ b/pkg/generator/generator_test.go @@ -15,15 +15,15 @@ package generator_test import ( - "github.com/gardener/gardener-extension-os-ubuntu/pkg/generator" - "github.com/gardener/gardener-extension-os-ubuntu/pkg/generator/testfiles" - "github.com/go-logr/logr" - commongen "github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator" "github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator/test" "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" + "github.com/go-logr/logr" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + + "github.com/gardener/gardener-extension-os-ubuntu/pkg/generator" + "github.com/gardener/gardener-extension-os-ubuntu/pkg/generator/testfiles" ) var logger = logr.Discard() diff --git a/vendor/github.com/BurntSushi/toml/.gitignore b/vendor/github.com/BurntSushi/toml/.gitignore index 0cd38003..cd11be96 100644 --- a/vendor/github.com/BurntSushi/toml/.gitignore +++ b/vendor/github.com/BurntSushi/toml/.gitignore @@ -1,5 +1,2 @@ -TAGS -tags -.*.swp -tomlcheck/tomlcheck toml.test +/toml-test diff --git a/vendor/github.com/BurntSushi/toml/.travis.yml b/vendor/github.com/BurntSushi/toml/.travis.yml deleted file mode 100644 index 8b8afc4f..00000000 --- a/vendor/github.com/BurntSushi/toml/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: go -go: - - 1.1 - - 1.2 - - 1.3 - - 1.4 - - 1.5 - - 1.6 - - tip -install: - - go install ./... - - go get github.com/BurntSushi/toml-test -script: - - export PATH="$PATH:$HOME/gopath/bin" - - make test diff --git a/vendor/github.com/BurntSushi/toml/COMPATIBLE b/vendor/github.com/BurntSushi/toml/COMPATIBLE index 6efcfd0c..f621b011 100644 --- a/vendor/github.com/BurntSushi/toml/COMPATIBLE +++ b/vendor/github.com/BurntSushi/toml/COMPATIBLE @@ -1,3 +1 @@ -Compatible with TOML version -[v0.4.0](https://github.com/toml-lang/toml/blob/v0.4.0/versions/en/toml-v0.4.0.md) - +Compatible with TOML version [v1.0.0](https://toml.io/en/v1.0.0). diff --git a/vendor/github.com/BurntSushi/toml/Makefile b/vendor/github.com/BurntSushi/toml/Makefile deleted file mode 100644 index 3600848d..00000000 --- a/vendor/github.com/BurntSushi/toml/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -install: - go install ./... - -test: install - go test -v - toml-test toml-test-decoder - toml-test -encoder toml-test-encoder - -fmt: - gofmt -w *.go */*.go - colcheck *.go */*.go - -tags: - find ./ -name '*.go' -print0 | xargs -0 gotags > TAGS - -push: - git push origin master - git push github master - diff --git a/vendor/github.com/BurntSushi/toml/README.md b/vendor/github.com/BurntSushi/toml/README.md index 7c1b37ec..cc13f866 100644 --- a/vendor/github.com/BurntSushi/toml/README.md +++ b/vendor/github.com/BurntSushi/toml/README.md @@ -1,46 +1,36 @@ -## TOML parser and encoder for Go with reflection - TOML stands for Tom's Obvious, Minimal Language. This Go package provides a reflection interface similar to Go's standard library `json` and `xml` -packages. This package also supports the `encoding.TextUnmarshaler` and -`encoding.TextMarshaler` interfaces so that you can define custom data -representations. (There is an example of this below.) - -Spec: https://github.com/toml-lang/toml +packages. -Compatible with TOML version -[v0.4.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md) +Compatible with TOML version [v1.0.0](https://toml.io/en/v1.0.0). -Documentation: https://godoc.org/github.com/BurntSushi/toml +Documentation: https://godocs.io/github.com/BurntSushi/toml -Installation: +See the [releases page](https://github.com/BurntSushi/toml/releases) for a +changelog; this information is also in the git tag annotations (e.g. `git show +v0.4.0`). -```bash -go get github.com/BurntSushi/toml -``` +This library requires Go 1.13 or newer; install it with: -Try the toml validator: + % go get github.com/BurntSushi/toml@latest -```bash -go get github.com/BurntSushi/toml/cmd/tomlv -tomlv some-toml-file.toml -``` +It also comes with a TOML validator CLI tool: -[![Build Status](https://travis-ci.org/BurntSushi/toml.svg?branch=master)](https://travis-ci.org/BurntSushi/toml) [![GoDoc](https://godoc.org/github.com/BurntSushi/toml?status.svg)](https://godoc.org/github.com/BurntSushi/toml) + % go install github.com/BurntSushi/toml/cmd/tomlv@latest + % tomlv some-toml-file.toml ### Testing +This package passes all tests in [toml-test] for both the decoder and the +encoder. -This package passes all tests in -[toml-test](https://github.com/BurntSushi/toml-test) for both the decoder -and the encoder. +[toml-test]: https://github.com/BurntSushi/toml-test ### Examples +This package works similar to how the Go standard library handles XML and JSON. +Namely, data is loaded into Go values via reflection. -This package works similarly to how the Go standard library handles `XML` -and `JSON`. Namely, data is loaded into Go values via reflection. - -For the simplest example, consider some TOML file as just a list of keys -and values: +For the simplest example, consider some TOML file as just a list of keys and +values: ```toml Age = 25 @@ -54,11 +44,11 @@ Which could be defined in Go as: ```go type Config struct { - Age int - Cats []string - Pi float64 - Perfection []int - DOB time.Time // requires `import time` + Age int + Cats []string + Pi float64 + Perfection []int + DOB time.Time // requires `import time` } ``` @@ -66,9 +56,8 @@ And then decoded with: ```go var conf Config -if _, err := toml.Decode(tomlData, &conf); err != nil { - // handle error -} +err := toml.Decode(tomlData, &conf) +// handle error ``` You can also use struct tags if your struct field name doesn't map to a TOML @@ -80,12 +69,14 @@ some_key_NAME = "wat" ```go type TOML struct { - ObscureKey string `toml:"some_key_NAME"` + ObscureKey string `toml:"some_key_NAME"` } ``` -### Using the `encoding.TextUnmarshaler` interface +Beware that like other most other decoders **only exported fields** are +considered when encoding and decoding; private fields are silently ignored. +### Using the `Marshaler` and `encoding.TextUnmarshaler` interfaces Here's an example that automatically parses duration strings into `time.Duration` values: @@ -103,19 +94,19 @@ Which can be decoded with: ```go type song struct { - Name string - Duration duration + Name string + Duration duration } type songs struct { - Song []song + Song []song } var favorites songs if _, err := toml.Decode(blob, &favorites); err != nil { - log.Fatal(err) + log.Fatal(err) } for _, s := range favorites.Song { - fmt.Printf("%s (%s)\n", s.Name, s.Duration) + fmt.Printf("%s (%s)\n", s.Name, s.Duration) } ``` @@ -134,8 +125,10 @@ func (d *duration) UnmarshalText(text []byte) error { } ``` -### More complex usage +To target TOML specifically you can implement `UnmarshalTOML` TOML interface in +a similar way. +### More complex usage Here's an example of how to load the example from the official spec page: ```toml @@ -180,23 +173,23 @@ And the corresponding Go types are: ```go type tomlConfig struct { - Title string - Owner ownerInfo - DB database `toml:"database"` + Title string + Owner ownerInfo + DB database `toml:"database"` Servers map[string]server Clients clients } type ownerInfo struct { Name string - Org string `toml:"organization"` - Bio string - DOB time.Time + Org string `toml:"organization"` + Bio string + DOB time.Time } type database struct { - Server string - Ports []int + Server string + Ports []int ConnMax int `toml:"connection_max"` Enabled bool } @@ -207,7 +200,7 @@ type server struct { } type clients struct { - Data [][]interface{} + Data [][]interface{} Hosts []string } ``` @@ -215,4 +208,4 @@ type clients struct { Note that a case insensitive match will be tried if an exact match can't be found. -A working example of the above can be found in `_examples/example.{go,toml}`. +A working example of the above can be found in `_example/example.{go,toml}`. diff --git a/vendor/github.com/BurntSushi/toml/decode.go b/vendor/github.com/BurntSushi/toml/decode.go index b0fd51d5..e24f0c5d 100644 --- a/vendor/github.com/BurntSushi/toml/decode.go +++ b/vendor/github.com/BurntSushi/toml/decode.go @@ -1,19 +1,16 @@ package toml import ( + "encoding" "fmt" "io" "io/ioutil" "math" + "os" "reflect" "strings" - "time" ) -func e(format string, args ...interface{}) error { - return fmt.Errorf("toml: "+format, args...) -} - // Unmarshaler is the interface implemented by objects that can unmarshal a // TOML description of themselves. type Unmarshaler interface { @@ -27,29 +24,27 @@ func Unmarshal(p []byte, v interface{}) error { } // Primitive is a TOML value that hasn't been decoded into a Go value. -// When using the various `Decode*` functions, the type `Primitive` may -// be given to any value, and its decoding will be delayed. // -// A `Primitive` value can be decoded using the `PrimitiveDecode` function. +// This type can be used for any value, which will cause decoding to be delayed. +// You can use the PrimitiveDecode() function to "manually" decode these values. // -// The underlying representation of a `Primitive` value is subject to change. -// Do not rely on it. +// NOTE: The underlying representation of a `Primitive` value is subject to +// change. Do not rely on it. // -// N.B. Primitive values are still parsed, so using them will only avoid -// the overhead of reflection. They can be useful when you don't know the -// exact type of TOML data until run time. +// NOTE: Primitive values are still parsed, so using them will only avoid the +// overhead of reflection. They can be useful when you don't know the exact type +// of TOML data until runtime. type Primitive struct { undecoded interface{} context Key } -// DEPRECATED! -// -// Use MetaData.PrimitiveDecode instead. -func PrimitiveDecode(primValue Primitive, v interface{}) error { - md := MetaData{decoded: make(map[string]bool)} - return md.unify(primValue.undecoded, rvalue(v)) -} +// The significand precision for float32 and float64 is 24 and 53 bits; this is +// the range a natural number can be stored in a float without loss of data. +const ( + maxSafeFloat32Int = 16777215 // 2^24-1 + maxSafeFloat64Int = 9007199254740991 // 2^53-1 +) // PrimitiveDecode is just like the other `Decode*` functions, except it // decodes a TOML value that has already been parsed. Valid primitive values @@ -68,79 +63,117 @@ func (md *MetaData) PrimitiveDecode(primValue Primitive, v interface{}) error { return md.unify(primValue.undecoded, rvalue(v)) } -// Decode will decode the contents of `data` in TOML format into a pointer -// `v`. +// Decoder decodes TOML data. // -// TOML hashes correspond to Go structs or maps. (Dealer's choice. They can be -// used interchangeably.) +// TOML tables correspond to Go structs or maps (dealer's choice – they can be +// used interchangeably). // -// TOML arrays of tables correspond to either a slice of structs or a slice -// of maps. +// TOML table arrays correspond to either a slice of structs or a slice of maps. // -// TOML datetimes correspond to Go `time.Time` values. +// TOML datetimes correspond to Go time.Time values. Local datetimes are parsed +// in the local timezone. // -// All other TOML types (float, string, int, bool and array) correspond -// to the obvious Go types. +// All other TOML types (float, string, int, bool and array) correspond to the +// obvious Go types. // -// An exception to the above rules is if a type implements the -// encoding.TextUnmarshaler interface. In this case, any primitive TOML value -// (floats, strings, integers, booleans and datetimes) will be converted to -// a byte string and given to the value's UnmarshalText method. See the -// Unmarshaler example for a demonstration with time duration strings. +// An exception to the above rules is if a type implements the TextUnmarshaler +// interface, in which case any primitive TOML value (floats, strings, integers, +// booleans, datetimes) will be converted to a []byte and given to the value's +// UnmarshalText method. See the Unmarshaler example for a demonstration with +// time duration strings. // // Key mapping // -// TOML keys can map to either keys in a Go map or field names in a Go -// struct. The special `toml` struct tag may be used to map TOML keys to -// struct fields that don't match the key name exactly. (See the example.) -// A case insensitive match to struct names will be tried if an exact match -// can't be found. +// TOML keys can map to either keys in a Go map or field names in a Go struct. +// The special `toml` struct tag can be used to map TOML keys to struct fields +// that don't match the key name exactly (see the example). A case insensitive +// match to struct names will be tried if an exact match can't be found. // -// The mapping between TOML values and Go values is loose. That is, there -// may exist TOML values that cannot be placed into your representation, and -// there may be parts of your representation that do not correspond to -// TOML values. This loose mapping can be made stricter by using the IsDefined -// and/or Undecoded methods on the MetaData returned. +// The mapping between TOML values and Go values is loose. That is, there may +// exist TOML values that cannot be placed into your representation, and there +// may be parts of your representation that do not correspond to TOML values. +// This loose mapping can be made stricter by using the IsDefined and/or +// Undecoded methods on the MetaData returned. // -// This decoder will not handle cyclic types. If a cyclic type is passed, -// `Decode` will not terminate. -func Decode(data string, v interface{}) (MetaData, error) { +// This decoder does not handle cyclic types. Decode will not terminate if a +// cyclic type is passed. +type Decoder struct { + r io.Reader +} + +// NewDecoder creates a new Decoder. +func NewDecoder(r io.Reader) *Decoder { + return &Decoder{r: r} +} + +var ( + unmarshalToml = reflect.TypeOf((*Unmarshaler)(nil)).Elem() + unmarshalText = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() +) + +// Decode TOML data in to the pointer `v`. +func (dec *Decoder) Decode(v interface{}) (MetaData, error) { rv := reflect.ValueOf(v) if rv.Kind() != reflect.Ptr { - return MetaData{}, e("Decode of non-pointer %s", reflect.TypeOf(v)) + s := "%q" + if reflect.TypeOf(v) == nil { + s = "%v" + } + + return MetaData{}, e("cannot decode to non-pointer "+s, reflect.TypeOf(v)) } if rv.IsNil() { - return MetaData{}, e("Decode of nil %s", reflect.TypeOf(v)) + return MetaData{}, e("cannot decode to nil value of %q", reflect.TypeOf(v)) } - p, err := parse(data) + + // Check if this is a supported type: struct, map, interface{}, or something + // that implements UnmarshalTOML or UnmarshalText. + rv = indirect(rv) + rt := rv.Type() + if rv.Kind() != reflect.Struct && rv.Kind() != reflect.Map && + !(rv.Kind() == reflect.Interface && rv.NumMethod() == 0) && + !rt.Implements(unmarshalToml) && !rt.Implements(unmarshalText) { + return MetaData{}, e("cannot decode to type %s", rt) + } + + // TODO: parser should read from io.Reader? Or at the very least, make it + // read from []byte rather than string + data, err := ioutil.ReadAll(dec.r) if err != nil { return MetaData{}, err } - md := MetaData{ - p.mapping, p.types, p.ordered, - make(map[string]bool, len(p.ordered)), nil, - } - return md, md.unify(p.mapping, indirect(rv)) -} -// DecodeFile is just like Decode, except it will automatically read the -// contents of the file at `fpath` and decode it for you. -func DecodeFile(fpath string, v interface{}) (MetaData, error) { - bs, err := ioutil.ReadFile(fpath) + p, err := parse(string(data)) if err != nil { return MetaData{}, err } - return Decode(string(bs), v) + + md := MetaData{ + mapping: p.mapping, + types: p.types, + keys: p.ordered, + decoded: make(map[string]struct{}, len(p.ordered)), + context: nil, + } + return md, md.unify(p.mapping, rv) } -// DecodeReader is just like Decode, except it will consume all bytes -// from the reader and decode it for you. -func DecodeReader(r io.Reader, v interface{}) (MetaData, error) { - bs, err := ioutil.ReadAll(r) +// Decode the TOML data in to the pointer v. +// +// See the documentation on Decoder for a description of the decoding process. +func Decode(data string, v interface{}) (MetaData, error) { + return NewDecoder(strings.NewReader(data)).Decode(v) +} + +// DecodeFile is just like Decode, except it will automatically read the +// contents of the file at path and decode it for you. +func DecodeFile(path string, v interface{}) (MetaData, error) { + fp, err := os.Open(path) if err != nil { return MetaData{}, err } - return Decode(string(bs), v) + defer fp.Close() + return NewDecoder(fp).Decode(v) } // unify performs a sort of type unification based on the structure of `rv`, @@ -149,8 +182,8 @@ func DecodeReader(r io.Reader, v interface{}) (MetaData, error) { // Any type mismatch produces an error. Finding a type that we don't know // how to handle produces an unsupported type error. func (md *MetaData) unify(data interface{}, rv reflect.Value) error { - // Special case. Look for a `Primitive` value. + // TODO: #76 would make this superfluous after implemented. if rv.Type() == reflect.TypeOf((*Primitive)(nil)).Elem() { // Save the undecoded data and the key context into the primitive // value. @@ -170,25 +203,17 @@ func (md *MetaData) unify(data interface{}, rv reflect.Value) error { } } - // Special case. Handle time.Time values specifically. - // TODO: Remove this code when we decide to drop support for Go 1.1. - // This isn't necessary in Go 1.2 because time.Time satisfies the encoding - // interfaces. - if rv.Type().AssignableTo(rvalue(time.Time{}).Type()) { - return md.unifyDatetime(data, rv) - } - // Special case. Look for a value satisfying the TextUnmarshaler interface. - if v, ok := rv.Interface().(TextUnmarshaler); ok { + if v, ok := rv.Interface().(encoding.TextUnmarshaler); ok { return md.unifyText(data, v) } - // BUG(burntsushi) + // TODO: // The behavior here is incorrect whenever a Go type satisfies the - // encoding.TextUnmarshaler interface but also corresponds to a TOML - // hash or array. In particular, the unmarshaler should only be applied - // to primitive TOML values. But at this point, it will be applied to - // all kinds of values and produce an incorrect error whenever those values - // are hashes or arrays (including arrays of tables). + // encoding.TextUnmarshaler interface but also corresponds to a TOML hash or + // array. In particular, the unmarshaler should only be applied to primitive + // TOML values. But at this point, it will be applied to all kinds of values + // and produce an incorrect error whenever those values are hashes or arrays + // (including arrays of tables). k := rv.Kind() @@ -223,9 +248,7 @@ func (md *MetaData) unify(data interface{}, rv reflect.Value) error { return e("unsupported type %s", rv.Type()) } return md.unifyAnything(data, rv) - case reflect.Float32: - fallthrough - case reflect.Float64: + case reflect.Float32, reflect.Float64: return md.unifyFloat64(data, rv) } return e("unsupported type %s", rv.Kind()) @@ -259,17 +282,17 @@ func (md *MetaData) unifyStruct(mapping interface{}, rv reflect.Value) error { for _, i := range f.index { subv = indirect(subv.Field(i)) } + if isUnifiable(subv) { - md.decoded[md.context.add(key).String()] = true + md.decoded[md.context.add(key).String()] = struct{}{} md.context = append(md.context, key) - if err := md.unify(datum, subv); err != nil { + err := md.unify(datum, subv) + if err != nil { return err } md.context = md.context[0 : len(md.context)-1] } else if f.name != "" { - // Bad user! No soup for you! - return e("cannot write unexported field %s.%s", - rv.Type().String(), f.name) + return e("cannot write unexported field %s.%s", rv.Type().String(), f.name) } } } @@ -277,27 +300,33 @@ func (md *MetaData) unifyStruct(mapping interface{}, rv reflect.Value) error { } func (md *MetaData) unifyMap(mapping interface{}, rv reflect.Value) error { + if k := rv.Type().Key().Kind(); k != reflect.String { + return fmt.Errorf( + "toml: cannot decode to a map with non-string key type (%s in %q)", + k, rv.Type()) + } + tmap, ok := mapping.(map[string]interface{}) if !ok { if tmap == nil { return nil } - return badtype("map", mapping) + return md.badtype("map", mapping) } if rv.IsNil() { rv.Set(reflect.MakeMap(rv.Type())) } for k, v := range tmap { - md.decoded[md.context.add(k).String()] = true + md.decoded[md.context.add(k).String()] = struct{}{} md.context = append(md.context, k) - rvkey := indirect(reflect.New(rv.Type().Key())) rvval := reflect.Indirect(reflect.New(rv.Type().Elem())) if err := md.unify(v, rvval); err != nil { return err } md.context = md.context[0 : len(md.context)-1] + rvkey := indirect(reflect.New(rv.Type().Key())) rvkey.SetString(k) rv.SetMapIndex(rvkey, rvval) } @@ -310,12 +339,10 @@ func (md *MetaData) unifyArray(data interface{}, rv reflect.Value) error { if !datav.IsValid() { return nil } - return badtype("slice", data) + return md.badtype("slice", data) } - sliceLen := datav.Len() - if sliceLen != rv.Len() { - return e("expected array length %d; got TOML array of length %d", - rv.Len(), sliceLen) + if l := datav.Len(); l != rv.Len() { + return e("expected array length %d; got TOML array of length %d", rv.Len(), l) } return md.unifySliceArray(datav, rv) } @@ -326,7 +353,7 @@ func (md *MetaData) unifySlice(data interface{}, rv reflect.Value) error { if !datav.IsValid() { return nil } - return badtype("slice", data) + return md.badtype("slice", data) } n := datav.Len() if rv.IsNil() || rv.Cap() < n { @@ -337,37 +364,31 @@ func (md *MetaData) unifySlice(data interface{}, rv reflect.Value) error { } func (md *MetaData) unifySliceArray(data, rv reflect.Value) error { - sliceLen := data.Len() - for i := 0; i < sliceLen; i++ { - v := data.Index(i).Interface() - sliceval := indirect(rv.Index(i)) - if err := md.unify(v, sliceval); err != nil { + l := data.Len() + for i := 0; i < l; i++ { + err := md.unify(data.Index(i).Interface(), indirect(rv.Index(i))) + if err != nil { return err } } return nil } -func (md *MetaData) unifyDatetime(data interface{}, rv reflect.Value) error { - if _, ok := data.(time.Time); ok { - rv.Set(reflect.ValueOf(data)) - return nil - } - return badtype("time.Time", data) -} - func (md *MetaData) unifyString(data interface{}, rv reflect.Value) error { if s, ok := data.(string); ok { rv.SetString(s) return nil } - return badtype("string", data) + return md.badtype("string", data) } func (md *MetaData) unifyFloat64(data interface{}, rv reflect.Value) error { if num, ok := data.(float64); ok { switch rv.Kind() { case reflect.Float32: + if num < -math.MaxFloat32 || num > math.MaxFloat32 { + return e("value %f is out of range for float32", num) + } fallthrough case reflect.Float64: rv.SetFloat(num) @@ -376,7 +397,26 @@ func (md *MetaData) unifyFloat64(data interface{}, rv reflect.Value) error { } return nil } - return badtype("float", data) + + if num, ok := data.(int64); ok { + switch rv.Kind() { + case reflect.Float32: + if num < -maxSafeFloat32Int || num > maxSafeFloat32Int { + return e("value %d is out of range for float32", num) + } + fallthrough + case reflect.Float64: + if num < -maxSafeFloat64Int || num > maxSafeFloat64Int { + return e("value %d is out of range for float64", num) + } + rv.SetFloat(float64(num)) + default: + panic("bug") + } + return nil + } + + return md.badtype("float", data) } func (md *MetaData) unifyInt(data interface{}, rv reflect.Value) error { @@ -423,7 +463,7 @@ func (md *MetaData) unifyInt(data interface{}, rv reflect.Value) error { } return nil } - return badtype("integer", data) + return md.badtype("integer", data) } func (md *MetaData) unifyBool(data interface{}, rv reflect.Value) error { @@ -431,7 +471,7 @@ func (md *MetaData) unifyBool(data interface{}, rv reflect.Value) error { rv.SetBool(b) return nil } - return badtype("boolean", data) + return md.badtype("boolean", data) } func (md *MetaData) unifyAnything(data interface{}, rv reflect.Value) error { @@ -439,9 +479,15 @@ func (md *MetaData) unifyAnything(data interface{}, rv reflect.Value) error { return nil } -func (md *MetaData) unifyText(data interface{}, v TextUnmarshaler) error { +func (md *MetaData) unifyText(data interface{}, v encoding.TextUnmarshaler) error { var s string switch sdata := data.(type) { + case Marshaler: + text, err := sdata.MarshalTOML() + if err != nil { + return err + } + s = string(text) case TextMarshaler: text, err := sdata.MarshalText() if err != nil { @@ -459,7 +505,7 @@ func (md *MetaData) unifyText(data interface{}, v TextUnmarshaler) error { case float64: s = fmt.Sprintf("%f", sdata) default: - return badtype("primitive (string-like)", data) + return md.badtype("primitive (string-like)", data) } if err := v.UnmarshalText([]byte(s)); err != nil { return err @@ -467,22 +513,27 @@ func (md *MetaData) unifyText(data interface{}, v TextUnmarshaler) error { return nil } +func (md *MetaData) badtype(dst string, data interface{}) error { + return e("incompatible types: TOML key %q has type %T; destination has type %s", md.context, data, dst) +} + // rvalue returns a reflect.Value of `v`. All pointers are resolved. func rvalue(v interface{}) reflect.Value { return indirect(reflect.ValueOf(v)) } // indirect returns the value pointed to by a pointer. -// Pointers are followed until the value is not a pointer. -// New values are allocated for each nil pointer. // -// An exception to this rule is if the value satisfies an interface of -// interest to us (like encoding.TextUnmarshaler). +// Pointers are followed until the value is not a pointer. New values are +// allocated for each nil pointer. +// +// An exception to this rule is if the value satisfies an interface of interest +// to us (like encoding.TextUnmarshaler). func indirect(v reflect.Value) reflect.Value { if v.Kind() != reflect.Ptr { if v.CanSet() { pv := v.Addr() - if _, ok := pv.Interface().(TextUnmarshaler); ok { + if _, ok := pv.Interface().(encoding.TextUnmarshaler); ok { return pv } } @@ -498,12 +549,12 @@ func isUnifiable(rv reflect.Value) bool { if rv.CanSet() { return true } - if _, ok := rv.Interface().(TextUnmarshaler); ok { + if _, ok := rv.Interface().(encoding.TextUnmarshaler); ok { return true } return false } -func badtype(expected string, data interface{}) error { - return e("cannot load TOML value of type %T into a Go %s", data, expected) +func e(format string, args ...interface{}) error { + return fmt.Errorf("toml: "+format, args...) } diff --git a/vendor/github.com/BurntSushi/toml/decode_go116.go b/vendor/github.com/BurntSushi/toml/decode_go116.go new file mode 100644 index 00000000..eddfb641 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/decode_go116.go @@ -0,0 +1,19 @@ +//go:build go1.16 +// +build go1.16 + +package toml + +import ( + "io/fs" +) + +// DecodeFS is just like Decode, except it will automatically read the contents +// of the file at `path` from a fs.FS instance. +func DecodeFS(fsys fs.FS, path string, v interface{}) (MetaData, error) { + fp, err := fsys.Open(path) + if err != nil { + return MetaData{}, err + } + defer fp.Close() + return NewDecoder(fp).Decode(v) +} diff --git a/vendor/github.com/BurntSushi/toml/deprecated.go b/vendor/github.com/BurntSushi/toml/deprecated.go new file mode 100644 index 00000000..c6af3f23 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/deprecated.go @@ -0,0 +1,21 @@ +package toml + +import ( + "encoding" + "io" +) + +// Deprecated: use encoding.TextMarshaler +type TextMarshaler encoding.TextMarshaler + +// Deprecated: use encoding.TextUnmarshaler +type TextUnmarshaler encoding.TextUnmarshaler + +// Deprecated: use MetaData.PrimitiveDecode. +func PrimitiveDecode(primValue Primitive, v interface{}) error { + md := MetaData{decoded: make(map[string]struct{})} + return md.unify(primValue.undecoded, rvalue(v)) +} + +// Deprecated: use NewDecoder(reader).Decode(&value). +func DecodeReader(r io.Reader, v interface{}) (MetaData, error) { return NewDecoder(r).Decode(v) } diff --git a/vendor/github.com/BurntSushi/toml/doc.go b/vendor/github.com/BurntSushi/toml/doc.go index b371f396..099c4a77 100644 --- a/vendor/github.com/BurntSushi/toml/doc.go +++ b/vendor/github.com/BurntSushi/toml/doc.go @@ -1,27 +1,13 @@ /* -Package toml provides facilities for decoding and encoding TOML configuration -files via reflection. There is also support for delaying decoding with -the Primitive type, and querying the set of keys in a TOML document with the -MetaData type. +Package toml implements decoding and encoding of TOML files. -The specification implemented: https://github.com/toml-lang/toml +This package supports TOML v1.0.0, as listed on https://toml.io -The sub-command github.com/BurntSushi/toml/cmd/tomlv can be used to verify -whether a file is a valid TOML document. It can also be used to print the -type of each key in a TOML document. +There is also support for delaying decoding with the Primitive type, and +querying the set of keys in a TOML document with the MetaData type. -Testing - -There are two important types of tests used for this package. The first is -contained inside '*_test.go' files and uses the standard Go unit testing -framework. These tests are primarily devoted to holistically testing the -decoder and encoder. - -The second type of testing is used to verify the implementation's adherence -to the TOML specification. These tests have been factored into their own -project: https://github.com/BurntSushi/toml-test - -The reason the tests are in a separate project is so that they can be used by -any implementation of TOML. Namely, it is language agnostic. +The github.com/BurntSushi/toml/cmd/tomlv package implements a TOML validator, +and can be used to verify if TOML document is valid. It can also be used to +print the type of each key. */ package toml diff --git a/vendor/github.com/BurntSushi/toml/encode.go b/vendor/github.com/BurntSushi/toml/encode.go index d905c21a..dee4e6d3 100644 --- a/vendor/github.com/BurntSushi/toml/encode.go +++ b/vendor/github.com/BurntSushi/toml/encode.go @@ -2,57 +2,106 @@ package toml import ( "bufio" + "encoding" "errors" "fmt" "io" + "math" "reflect" "sort" "strconv" "strings" "time" + + "github.com/BurntSushi/toml/internal" ) type tomlEncodeError struct{ error } var ( - errArrayMixedElementTypes = errors.New( - "toml: cannot encode array with mixed element types") - errArrayNilElement = errors.New( - "toml: cannot encode array with nil element") - errNonString = errors.New( - "toml: cannot encode a map with non-string key type") - errAnonNonStruct = errors.New( - "toml: cannot encode an anonymous field that is not a struct") - errArrayNoTable = errors.New( - "toml: TOML array element cannot contain a table") - errNoKey = errors.New( - "toml: top-level values must be Go maps or structs") - errAnything = errors.New("") // used in testing + errArrayNilElement = errors.New("toml: cannot encode array with nil element") + errNonString = errors.New("toml: cannot encode a map with non-string key type") + errNoKey = errors.New("toml: top-level values must be Go maps or structs") + errAnything = errors.New("") // used in testing ) -var quotedReplacer = strings.NewReplacer( - "\t", "\\t", - "\n", "\\n", - "\r", "\\r", +var dblQuotedReplacer = strings.NewReplacer( "\"", "\\\"", "\\", "\\\\", + "\x00", `\u0000`, + "\x01", `\u0001`, + "\x02", `\u0002`, + "\x03", `\u0003`, + "\x04", `\u0004`, + "\x05", `\u0005`, + "\x06", `\u0006`, + "\x07", `\u0007`, + "\b", `\b`, + "\t", `\t`, + "\n", `\n`, + "\x0b", `\u000b`, + "\f", `\f`, + "\r", `\r`, + "\x0e", `\u000e`, + "\x0f", `\u000f`, + "\x10", `\u0010`, + "\x11", `\u0011`, + "\x12", `\u0012`, + "\x13", `\u0013`, + "\x14", `\u0014`, + "\x15", `\u0015`, + "\x16", `\u0016`, + "\x17", `\u0017`, + "\x18", `\u0018`, + "\x19", `\u0019`, + "\x1a", `\u001a`, + "\x1b", `\u001b`, + "\x1c", `\u001c`, + "\x1d", `\u001d`, + "\x1e", `\u001e`, + "\x1f", `\u001f`, + "\x7f", `\u007f`, ) -// Encoder controls the encoding of Go values to a TOML document to some -// io.Writer. +// Marshaler is the interface implemented by types that can marshal themselves +// into valid TOML. +type Marshaler interface { + MarshalTOML() ([]byte, error) +} + +// Encoder encodes a Go to a TOML document. +// +// The mapping between Go values and TOML values should be precisely the same as +// for the Decode* functions. +// +// The toml.Marshaler and encoder.TextMarshaler interfaces are supported to +// encoding the value as custom TOML. +// +// If you want to write arbitrary binary data then you will need to use +// something like base64 since TOML does not have any binary types. // -// The indentation level can be controlled with the Indent field. +// When encoding TOML hashes (Go maps or structs), keys without any sub-hashes +// are encoded first. +// +// Go maps will be sorted alphabetically by key for deterministic output. +// +// Encoding Go values without a corresponding TOML representation will return an +// error. Examples of this includes maps with non-string keys, slices with nil +// elements, embedded non-struct types, and nested slices containing maps or +// structs. (e.g. [][]map[string]string is not allowed but []map[string]string +// is okay, as is []map[string][]string). +// +// NOTE: only exported keys are encoded due to the use of reflection. Unexported +// keys are silently discarded. type Encoder struct { - // A single indentation level. By default it is two spaces. + // String to use for a single indentation level; default is two spaces. Indent string - // hasWritten is whether we have written any output to w yet. - hasWritten bool w *bufio.Writer + hasWritten bool // written any output to w yet? } -// NewEncoder returns a TOML encoder that encodes Go values to the io.Writer -// given. By default, a single indentation level is 2 spaces. +// NewEncoder create a new Encoder. func NewEncoder(w io.Writer) *Encoder { return &Encoder{ w: bufio.NewWriter(w), @@ -60,29 +109,10 @@ func NewEncoder(w io.Writer) *Encoder { } } -// Encode writes a TOML representation of the Go value to the underlying -// io.Writer. If the value given cannot be encoded to a valid TOML document, -// then an error is returned. -// -// The mapping between Go values and TOML values should be precisely the same -// as for the Decode* functions. Similarly, the TextMarshaler interface is -// supported by encoding the resulting bytes as strings. (If you want to write -// arbitrary binary data then you will need to use something like base64 since -// TOML does not have any binary types.) -// -// When encoding TOML hashes (i.e., Go maps or structs), keys without any -// sub-hashes are encoded first. -// -// If a Go map is encoded, then its keys are sorted alphabetically for -// deterministic output. More control over this behavior may be provided if -// there is demand for it. +// Encode writes a TOML representation of the Go value to the Encoder's writer. // -// Encoding Go values without a corresponding TOML representation---like map -// types with non-string keys---will cause an error to be returned. Similarly -// for mixed arrays/slices, arrays/slices with nil elements, embedded -// non-struct types and nested slices containing maps or structs. -// (e.g., [][]map[string]string is not allowed but []map[string]string is OK -// and so is []map[string][]string.) +// An error is returned if the value given cannot be encoded to a valid TOML +// document. func (enc *Encoder) Encode(v interface{}) error { rv := eindirect(reflect.ValueOf(v)) if err := enc.safeEncode(Key([]string{}), rv); err != nil { @@ -106,13 +136,18 @@ func (enc *Encoder) safeEncode(key Key, rv reflect.Value) (err error) { } func (enc *Encoder) encode(key Key, rv reflect.Value) { - // Special case. Time needs to be in ISO8601 format. - // Special case. If we can marshal the type to text, then we used that. - // Basically, this prevents the encoder for handling these types as - // generic structs (or whatever the underlying type of a TextMarshaler is). - switch rv.Interface().(type) { - case time.Time, TextMarshaler: - enc.keyEqElement(key, rv) + // Special case: time needs to be in ISO8601 format. + // + // Special case: if we can marshal the type to text, then we used that. This + // prevents the encoder for handling these types as generic structs (or + // whatever the underlying type of a TextMarshaler is). + switch t := rv.Interface().(type) { + case time.Time, encoding.TextMarshaler, Marshaler: + enc.writeKeyValue(key, rv, false) + return + // TODO: #76 would make this superfluous after implemented. + case Primitive: + enc.encode(key, reflect.ValueOf(t.undecoded)) return } @@ -123,12 +158,12 @@ func (enc *Encoder) encode(key Key, rv reflect.Value) { reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String, reflect.Bool: - enc.keyEqElement(key, rv) + enc.writeKeyValue(key, rv, false) case reflect.Array, reflect.Slice: if typeEqual(tomlArrayHash, tomlTypeOfGo(rv)) { enc.eArrayOfTables(key, rv) } else { - enc.keyEqElement(key, rv) + enc.writeKeyValue(key, rv, false) } case reflect.Interface: if rv.IsNil() { @@ -148,55 +183,88 @@ func (enc *Encoder) encode(key Key, rv reflect.Value) { case reflect.Struct: enc.eTable(key, rv) default: - panic(e("unsupported type for key '%s': %s", key, k)) + encPanic(fmt.Errorf("unsupported type for key '%s': %s", key, k)) } } -// eElement encodes any value that can be an array element (primitives and -// arrays). +// eElement encodes any value that can be an array element. func (enc *Encoder) eElement(rv reflect.Value) { switch v := rv.Interface().(type) { - case time.Time: - // Special case time.Time as a primitive. Has to come before - // TextMarshaler below because time.Time implements - // encoding.TextMarshaler, but we need to always use UTC. - enc.wf(v.UTC().Format("2006-01-02T15:04:05Z")) + case time.Time: // Using TextMarshaler adds extra quotes, which we don't want. + format := time.RFC3339Nano + switch v.Location() { + case internal.LocalDatetime: + format = "2006-01-02T15:04:05.999999999" + case internal.LocalDate: + format = "2006-01-02" + case internal.LocalTime: + format = "15:04:05.999999999" + } + switch v.Location() { + default: + enc.wf(v.Format(format)) + case internal.LocalDatetime, internal.LocalDate, internal.LocalTime: + enc.wf(v.In(time.UTC).Format(format)) + } return - case TextMarshaler: - // Special case. Use text marshaler if it's available for this value. - if s, err := v.MarshalText(); err != nil { + case Marshaler: + s, err := v.MarshalTOML() + if err != nil { encPanic(err) - } else { - enc.writeQuoted(string(s)) } + enc.writeQuoted(string(s)) + return + case encoding.TextMarshaler: + s, err := v.MarshalText() + if err != nil { + encPanic(err) + } + enc.writeQuoted(string(s)) return } + switch rv.Kind() { + case reflect.String: + enc.writeQuoted(rv.String()) case reflect.Bool: enc.wf(strconv.FormatBool(rv.Bool())) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, - reflect.Int64: + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: enc.wf(strconv.FormatInt(rv.Int(), 10)) - case reflect.Uint, reflect.Uint8, reflect.Uint16, - reflect.Uint32, reflect.Uint64: + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: enc.wf(strconv.FormatUint(rv.Uint(), 10)) case reflect.Float32: - enc.wf(floatAddDecimal(strconv.FormatFloat(rv.Float(), 'f', -1, 32))) + f := rv.Float() + if math.IsNaN(f) { + enc.wf("nan") + } else if math.IsInf(f, 0) { + enc.wf("%cinf", map[bool]byte{true: '-', false: '+'}[math.Signbit(f)]) + } else { + enc.wf(floatAddDecimal(strconv.FormatFloat(f, 'f', -1, 32))) + } case reflect.Float64: - enc.wf(floatAddDecimal(strconv.FormatFloat(rv.Float(), 'f', -1, 64))) + f := rv.Float() + if math.IsNaN(f) { + enc.wf("nan") + } else if math.IsInf(f, 0) { + enc.wf("%cinf", map[bool]byte{true: '-', false: '+'}[math.Signbit(f)]) + } else { + enc.wf(floatAddDecimal(strconv.FormatFloat(f, 'f', -1, 64))) + } case reflect.Array, reflect.Slice: enc.eArrayOrSliceElement(rv) + case reflect.Struct: + enc.eStruct(nil, rv, true) + case reflect.Map: + enc.eMap(nil, rv, true) case reflect.Interface: enc.eElement(rv.Elem()) - case reflect.String: - enc.writeQuoted(rv.String()) default: - panic(e("unexpected primitive type: %s", rv.Kind())) + encPanic(fmt.Errorf("unexpected primitive type: %T", rv.Interface())) } } -// By the TOML spec, all floats must have a decimal with at least one -// number on either side. +// By the TOML spec, all floats must have a decimal with at least one number on +// either side. func floatAddDecimal(fstr string) string { if !strings.Contains(fstr, ".") { return fstr + ".0" @@ -205,7 +273,7 @@ func floatAddDecimal(fstr string) string { } func (enc *Encoder) writeQuoted(s string) { - enc.wf("\"%s\"", quotedReplacer.Replace(s)) + enc.wf("\"%s\"", dblQuotedReplacer.Replace(s)) } func (enc *Encoder) eArrayOrSliceElement(rv reflect.Value) { @@ -230,40 +298,39 @@ func (enc *Encoder) eArrayOfTables(key Key, rv reflect.Value) { if isNil(trv) { continue } - panicIfInvalidKey(key) enc.newline() - enc.wf("%s[[%s]]", enc.indentStr(key), key.maybeQuotedAll()) + enc.wf("%s[[%s]]", enc.indentStr(key), key) enc.newline() - enc.eMapOrStruct(key, trv) + enc.eMapOrStruct(key, trv, false) } } func (enc *Encoder) eTable(key Key, rv reflect.Value) { - panicIfInvalidKey(key) if len(key) == 1 { // Output an extra newline between top-level tables. // (The newline isn't written if nothing else has been written though.) enc.newline() } if len(key) > 0 { - enc.wf("%s[%s]", enc.indentStr(key), key.maybeQuotedAll()) + enc.wf("%s[%s]", enc.indentStr(key), key) enc.newline() } - enc.eMapOrStruct(key, rv) + enc.eMapOrStruct(key, rv, false) } -func (enc *Encoder) eMapOrStruct(key Key, rv reflect.Value) { +func (enc *Encoder) eMapOrStruct(key Key, rv reflect.Value, inline bool) { switch rv := eindirect(rv); rv.Kind() { case reflect.Map: - enc.eMap(key, rv) + enc.eMap(key, rv, inline) case reflect.Struct: - enc.eStruct(key, rv) + enc.eStruct(key, rv, inline) default: + // Should never happen? panic("eTable: unhandled reflect.Value Kind: " + rv.Kind().String()) } } -func (enc *Encoder) eMap(key Key, rv reflect.Value) { +func (enc *Encoder) eMap(key Key, rv reflect.Value, inline bool) { rt := rv.Type() if rt.Key().Kind() != reflect.String { encPanic(errNonString) @@ -274,114 +341,159 @@ func (enc *Encoder) eMap(key Key, rv reflect.Value) { var mapKeysDirect, mapKeysSub []string for _, mapKey := range rv.MapKeys() { k := mapKey.String() - if typeIsHash(tomlTypeOfGo(rv.MapIndex(mapKey))) { + if typeIsTable(tomlTypeOfGo(rv.MapIndex(mapKey))) { mapKeysSub = append(mapKeysSub, k) } else { mapKeysDirect = append(mapKeysDirect, k) } } - var writeMapKeys = func(mapKeys []string) { + var writeMapKeys = func(mapKeys []string, trailC bool) { sort.Strings(mapKeys) - for _, mapKey := range mapKeys { - mrv := rv.MapIndex(reflect.ValueOf(mapKey)) - if isNil(mrv) { - // Don't write anything for nil fields. + for i, mapKey := range mapKeys { + val := rv.MapIndex(reflect.ValueOf(mapKey)) + if isNil(val) { continue } - enc.encode(key.add(mapKey), mrv) + + if inline { + enc.writeKeyValue(Key{mapKey}, val, true) + if trailC || i != len(mapKeys)-1 { + enc.wf(", ") + } + } else { + enc.encode(key.add(mapKey), val) + } } } - writeMapKeys(mapKeysDirect) - writeMapKeys(mapKeysSub) + + if inline { + enc.wf("{") + } + writeMapKeys(mapKeysDirect, len(mapKeysSub) > 0) + writeMapKeys(mapKeysSub, false) + if inline { + enc.wf("}") + } } -func (enc *Encoder) eStruct(key Key, rv reflect.Value) { +const is32Bit = (32 << (^uint(0) >> 63)) == 32 + +func (enc *Encoder) eStruct(key Key, rv reflect.Value, inline bool) { // Write keys for fields directly under this key first, because if we write - // a field that creates a new table, then all keys under it will be in that + // a field that creates a new table then all keys under it will be in that // table (not the one we're writing here). - rt := rv.Type() - var fieldsDirect, fieldsSub [][]int - var addFields func(rt reflect.Type, rv reflect.Value, start []int) + // + // Fields is a [][]int: for fieldsDirect this always has one entry (the + // struct index). For fieldsSub it contains two entries: the parent field + // index from tv, and the field indexes for the fields of the sub. + var ( + rt = rv.Type() + fieldsDirect, fieldsSub [][]int + addFields func(rt reflect.Type, rv reflect.Value, start []int) + ) addFields = func(rt reflect.Type, rv reflect.Value, start []int) { for i := 0; i < rt.NumField(); i++ { f := rt.Field(i) - // skip unexported fields - if f.PkgPath != "" && !f.Anonymous { + if f.PkgPath != "" && !f.Anonymous { /// Skip unexported fields. continue } + frv := rv.Field(i) + + // Treat anonymous struct fields with tag names as though they are + // not anonymous, like encoding/json does. + // + // Non-struct anonymous fields use the normal encoding logic. if f.Anonymous { t := f.Type switch t.Kind() { case reflect.Struct: - // Treat anonymous struct fields with - // tag names as though they are not - // anonymous, like encoding/json does. if getOptions(f.Tag).name == "" { - addFields(t, frv, f.Index) + addFields(t, frv, append(start, f.Index...)) continue } case reflect.Ptr: - if t.Elem().Kind() == reflect.Struct && - getOptions(f.Tag).name == "" { + if t.Elem().Kind() == reflect.Struct && getOptions(f.Tag).name == "" { if !frv.IsNil() { - addFields(t.Elem(), frv.Elem(), f.Index) + addFields(t.Elem(), frv.Elem(), append(start, f.Index...)) } continue } - // Fall through to the normal field encoding logic below - // for non-struct anonymous fields. } } - if typeIsHash(tomlTypeOfGo(frv)) { + if typeIsTable(tomlTypeOfGo(frv)) { fieldsSub = append(fieldsSub, append(start, f.Index...)) } else { - fieldsDirect = append(fieldsDirect, append(start, f.Index...)) + // Copy so it works correct on 32bit archs; not clear why this + // is needed. See #314, and https://www.reddit.com/r/golang/comments/pnx8v4 + // This also works fine on 64bit, but 32bit archs are somewhat + // rare and this is a wee bit faster. + if is32Bit { + copyStart := make([]int, len(start)) + copy(copyStart, start) + fieldsDirect = append(fieldsDirect, append(copyStart, f.Index...)) + } else { + fieldsDirect = append(fieldsDirect, append(start, f.Index...)) + } } } } addFields(rt, rv, nil) - var writeFields = func(fields [][]int) { + writeFields := func(fields [][]int) { for _, fieldIndex := range fields { - sft := rt.FieldByIndex(fieldIndex) - sf := rv.FieldByIndex(fieldIndex) - if isNil(sf) { - // Don't write anything for nil fields. + fieldType := rt.FieldByIndex(fieldIndex) + fieldVal := rv.FieldByIndex(fieldIndex) + + if isNil(fieldVal) { /// Don't write anything for nil fields. continue } - opts := getOptions(sft.Tag) + opts := getOptions(fieldType.Tag) if opts.skip { continue } - keyName := sft.Name + keyName := fieldType.Name if opts.name != "" { keyName = opts.name } - if opts.omitempty && isEmpty(sf) { + if opts.omitempty && isEmpty(fieldVal) { continue } - if opts.omitzero && isZero(sf) { + if opts.omitzero && isZero(fieldVal) { continue } - enc.encode(key.add(keyName), sf) + if inline { + enc.writeKeyValue(Key{keyName}, fieldVal, true) + if fieldIndex[0] != len(fields)-1 { + enc.wf(", ") + } + } else { + enc.encode(key.add(keyName), fieldVal) + } } } + + if inline { + enc.wf("{") + } writeFields(fieldsDirect) writeFields(fieldsSub) + if inline { + enc.wf("}") + } } -// tomlTypeName returns the TOML type name of the Go value's type. It is -// used to determine whether the types of array elements are mixed (which is -// forbidden). If the Go value is nil, then it is illegal for it to be an array -// element, and valueIsNil is returned as true. - -// Returns the TOML type of a Go value. The type may be `nil`, which means -// no concrete TOML type could be found. +// tomlTypeOfGo returns the TOML type name of the Go value's type. +// +// It is used to determine whether the types of array elements are mixed (which +// is forbidden). If the Go value is nil, then it is illegal for it to be an +// array element, and valueIsNil is returned as true. +// +// The type may be `nil`, which means no concrete TOML type could be found. func tomlTypeOfGo(rv reflect.Value) tomlType { if isNil(rv) || !rv.IsValid() { return nil @@ -408,19 +520,43 @@ func tomlTypeOfGo(rv reflect.Value) tomlType { case reflect.Map: return tomlHash case reflect.Struct: - switch rv.Interface().(type) { - case time.Time: + if _, ok := rv.Interface().(time.Time); ok { return tomlDatetime - case TextMarshaler: + } + if isMarshaler(rv) { return tomlString - default: - return tomlHash } + return tomlHash default: - panic("unexpected reflect.Kind: " + rv.Kind().String()) + if isMarshaler(rv) { + return tomlString + } + + encPanic(errors.New("unsupported type: " + rv.Kind().String())) + panic("unreachable") } } +func isMarshaler(rv reflect.Value) bool { + switch rv.Interface().(type) { + case encoding.TextMarshaler: + return true + case Marshaler: + return true + } + + // Someone used a pointer receiver: we can make it work for pointer values. + if rv.CanAddr() { + if _, ok := rv.Addr().Interface().(encoding.TextMarshaler); ok { + return true + } + if _, ok := rv.Addr().Interface().(Marshaler); ok { + return true + } + } + return false +} + // tomlArrayType returns the element type of a TOML array. The type returned // may be nil if it cannot be determined (e.g., a nil slice or a zero length // slize). This function may also panic if it finds a type that cannot be @@ -430,29 +566,18 @@ func tomlArrayType(rv reflect.Value) tomlType { if isNil(rv) || !rv.IsValid() || rv.Len() == 0 { return nil } - firstType := tomlTypeOfGo(rv.Index(0)) - if firstType == nil { - encPanic(errArrayNilElement) - } + /// Don't allow nil. rvlen := rv.Len() for i := 1; i < rvlen; i++ { - elem := rv.Index(i) - switch elemType := tomlTypeOfGo(elem); { - case elemType == nil: + if tomlTypeOfGo(rv.Index(i)) == nil { encPanic(errArrayNilElement) - case !typeEqual(firstType, elemType): - encPanic(errArrayMixedElementTypes) } } - // If we have a nested array, then we must make sure that the nested - // array contains ONLY primitives. - // This checks arbitrarily nested arrays. - if typeEqual(firstType, tomlArray) || typeEqual(firstType, tomlArrayHash) { - nest := tomlArrayType(eindirect(rv.Index(0))) - if typeEqual(nest, tomlHash) || typeEqual(nest, tomlArrayHash) { - encPanic(errArrayNoTable) - } + + firstType := tomlTypeOfGo(rv.Index(0)) + if firstType == nil { + encPanic(errArrayNilElement) } return firstType } @@ -511,18 +636,32 @@ func (enc *Encoder) newline() { } } -func (enc *Encoder) keyEqElement(key Key, val reflect.Value) { +// Write a key/value pair: +// +// key = +// +// This is also used for "k = v" in inline tables; so something like this will +// be written in three calls: +// +// ┌────────────────────┐ +// │ ┌───┐ ┌─────┐│ +// v v v v vv +// key = {k = v, k2 = v2} +// +func (enc *Encoder) writeKeyValue(key Key, val reflect.Value, inline bool) { if len(key) == 0 { encPanic(errNoKey) } - panicIfInvalidKey(key) enc.wf("%s%s = ", enc.indentStr(key), key.maybeQuoted(len(key)-1)) enc.eElement(val) - enc.newline() + if !inline { + enc.newline() + } } func (enc *Encoder) wf(format string, v ...interface{}) { - if _, err := fmt.Fprintf(enc.w, format, v...); err != nil { + _, err := fmt.Fprintf(enc.w, format, v...) + if err != nil { encPanic(err) } enc.hasWritten = true @@ -553,16 +692,3 @@ func isNil(rv reflect.Value) bool { return false } } - -func panicIfInvalidKey(key Key) { - for _, k := range key { - if len(k) == 0 { - encPanic(e("Key '%s' is not a valid table name. Key names "+ - "cannot be empty.", key.maybeQuotedAll())) - } - } -} - -func isValidKeyName(s string) bool { - return len(s) != 0 -} diff --git a/vendor/github.com/BurntSushi/toml/encoding_types.go b/vendor/github.com/BurntSushi/toml/encoding_types.go deleted file mode 100644 index d36e1dd6..00000000 --- a/vendor/github.com/BurntSushi/toml/encoding_types.go +++ /dev/null @@ -1,19 +0,0 @@ -// +build go1.2 - -package toml - -// In order to support Go 1.1, we define our own TextMarshaler and -// TextUnmarshaler types. For Go 1.2+, we just alias them with the -// standard library interfaces. - -import ( - "encoding" -) - -// TextMarshaler is a synonym for encoding.TextMarshaler. It is defined here -// so that Go 1.1 can be supported. -type TextMarshaler encoding.TextMarshaler - -// TextUnmarshaler is a synonym for encoding.TextUnmarshaler. It is defined -// here so that Go 1.1 can be supported. -type TextUnmarshaler encoding.TextUnmarshaler diff --git a/vendor/github.com/BurntSushi/toml/encoding_types_1.1.go b/vendor/github.com/BurntSushi/toml/encoding_types_1.1.go deleted file mode 100644 index e8d503d0..00000000 --- a/vendor/github.com/BurntSushi/toml/encoding_types_1.1.go +++ /dev/null @@ -1,18 +0,0 @@ -// +build !go1.2 - -package toml - -// These interfaces were introduced in Go 1.2, so we add them manually when -// compiling for Go 1.1. - -// TextMarshaler is a synonym for encoding.TextMarshaler. It is defined here -// so that Go 1.1 can be supported. -type TextMarshaler interface { - MarshalText() (text []byte, err error) -} - -// TextUnmarshaler is a synonym for encoding.TextUnmarshaler. It is defined -// here so that Go 1.1 can be supported. -type TextUnmarshaler interface { - UnmarshalText(text []byte) error -} diff --git a/vendor/github.com/BurntSushi/toml/error.go b/vendor/github.com/BurntSushi/toml/error.go new file mode 100644 index 00000000..36edc465 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/error.go @@ -0,0 +1,229 @@ +package toml + +import ( + "fmt" + "strings" +) + +// ParseError is returned when there is an error parsing the TOML syntax. +// +// For example invalid syntax, duplicate keys, etc. +// +// In addition to the error message itself, you can also print detailed location +// information with context by using ErrorWithLocation(): +// +// toml: error: Key 'fruit' was already created and cannot be used as an array. +// +// At line 4, column 2-7: +// +// 2 | fruit = [] +// 3 | +// 4 | [[fruit]] # Not allowed +// ^^^^^ +// +// Furthermore, the ErrorWithUsage() can be used to print the above with some +// more detailed usage guidance: +// +// toml: error: newlines not allowed within inline tables +// +// At line 1, column 18: +// +// 1 | x = [{ key = 42 # +// ^ +// +// Error help: +// +// Inline tables must always be on a single line: +// +// table = {key = 42, second = 43} +// +// It is invalid to split them over multiple lines like so: +// +// # INVALID +// table = { +// key = 42, +// second = 43 +// } +// +// Use regular for this: +// +// [table] +// key = 42 +// second = 43 +type ParseError struct { + Message string // Short technical message. + Usage string // Longer message with usage guidance; may be blank. + Position Position // Position of the error + LastKey string // Last parsed key, may be blank. + Line int // Line the error occurred. Deprecated: use Position. + + err error + input string +} + +// Position of an error. +type Position struct { + Line int // Line number, starting at 1. + Start int // Start of error, as byte offset starting at 0. + Len int // Lenght in bytes. +} + +func (pe ParseError) Error() string { + msg := pe.Message + if msg == "" { // Error from errorf() + msg = pe.err.Error() + } + + if pe.LastKey == "" { + return fmt.Sprintf("toml: line %d: %s", pe.Position.Line, msg) + } + return fmt.Sprintf("toml: line %d (last key %q): %s", + pe.Position.Line, pe.LastKey, msg) +} + +// ErrorWithUsage() returns the error with detailed location context. +// +// See the documentation on ParseError. +func (pe ParseError) ErrorWithPosition() string { + if pe.input == "" { // Should never happen, but just in case. + return pe.Error() + } + + var ( + lines = strings.Split(pe.input, "\n") + col = pe.column(lines) + b = new(strings.Builder) + ) + + msg := pe.Message + if msg == "" { + msg = pe.err.Error() + } + + // TODO: don't show control characters as literals? This may not show up + // well everywhere. + + if pe.Position.Len == 1 { + fmt.Fprintf(b, "toml: error: %s\n\nAt line %d, column %d:\n\n", + msg, pe.Position.Line, col+1) + } else { + fmt.Fprintf(b, "toml: error: %s\n\nAt line %d, column %d-%d:\n\n", + msg, pe.Position.Line, col, col+pe.Position.Len) + } + if pe.Position.Line > 2 { + fmt.Fprintf(b, "% 7d | %s\n", pe.Position.Line-2, lines[pe.Position.Line-3]) + } + if pe.Position.Line > 1 { + fmt.Fprintf(b, "% 7d | %s\n", pe.Position.Line-1, lines[pe.Position.Line-2]) + } + fmt.Fprintf(b, "% 7d | %s\n", pe.Position.Line, lines[pe.Position.Line-1]) + fmt.Fprintf(b, "% 10s%s%s\n", "", strings.Repeat(" ", col), strings.Repeat("^", pe.Position.Len)) + return b.String() +} + +// ErrorWithUsage() returns the error with detailed location context and usage +// guidance. +// +// See the documentation on ParseError. +func (pe ParseError) ErrorWithUsage() string { + m := pe.ErrorWithPosition() + if u, ok := pe.err.(interface{ Usage() string }); ok && u.Usage() != "" { + return m + "Error help:\n\n " + + strings.ReplaceAll(strings.TrimSpace(u.Usage()), "\n", "\n ") + + "\n" + } + return m +} + +func (pe ParseError) column(lines []string) int { + var pos, col int + for i := range lines { + ll := len(lines[i]) + 1 // +1 for the removed newline + if pos+ll >= pe.Position.Start { + col = pe.Position.Start - pos + if col < 0 { // Should never happen, but just in case. + col = 0 + } + break + } + pos += ll + } + + return col +} + +type ( + errLexControl struct{ r rune } + errLexEscape struct{ r rune } + errLexUTF8 struct{ b byte } + errLexInvalidNum struct{ v string } + errLexInvalidDate struct{ v string } + errLexInlineTableNL struct{} + errLexStringNL struct{} +) + +func (e errLexControl) Error() string { + return fmt.Sprintf("TOML files cannot contain control characters: '0x%02x'", e.r) +} +func (e errLexControl) Usage() string { return "" } + +func (e errLexEscape) Error() string { return fmt.Sprintf(`invalid escape in string '\%c'`, e.r) } +func (e errLexEscape) Usage() string { return usageEscape } +func (e errLexUTF8) Error() string { return fmt.Sprintf("invalid UTF-8 byte: 0x%02x", e.b) } +func (e errLexUTF8) Usage() string { return "" } +func (e errLexInvalidNum) Error() string { return fmt.Sprintf("invalid number: %q", e.v) } +func (e errLexInvalidNum) Usage() string { return "" } +func (e errLexInvalidDate) Error() string { return fmt.Sprintf("invalid date: %q", e.v) } +func (e errLexInvalidDate) Usage() string { return "" } +func (e errLexInlineTableNL) Error() string { return "newlines not allowed within inline tables" } +func (e errLexInlineTableNL) Usage() string { return usageInlineNewline } +func (e errLexStringNL) Error() string { return "strings cannot contain newlines" } +func (e errLexStringNL) Usage() string { return usageStringNewline } + +const usageEscape = ` +A '\' inside a "-delimited string is interpreted as an escape character. + +The following escape sequences are supported: +\b, \t, \n, \f, \r, \", \\, \uXXXX, and \UXXXXXXXX + +To prevent a '\' from being recognized as an escape character, use either: + +- a ' or '''-delimited string; escape characters aren't processed in them; or +- write two backslashes to get a single backslash: '\\'. + +If you're trying to add a Windows path (e.g. "C:\Users\martin") then using '/' +instead of '\' will usually also work: "C:/Users/martin". +` + +const usageInlineNewline = ` +Inline tables must always be on a single line: + + table = {key = 42, second = 43} + +It is invalid to split them over multiple lines like so: + + # INVALID + table = { + key = 42, + second = 43 + } + +Use regular for this: + + [table] + key = 42 + second = 43 +` + +const usageStringNewline = ` +Strings must always be on a single line, and cannot span more than one line: + + # INVALID + string = "Hello, + world!" + +Instead use """ or ''' to split strings over multiple lines: + + string = """Hello, + world!""" +` diff --git a/vendor/github.com/BurntSushi/toml/internal/tz.go b/vendor/github.com/BurntSushi/toml/internal/tz.go new file mode 100644 index 00000000..022f15bc --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/internal/tz.go @@ -0,0 +1,36 @@ +package internal + +import "time" + +// Timezones used for local datetime, date, and time TOML types. +// +// The exact way times and dates without a timezone should be interpreted is not +// well-defined in the TOML specification and left to the implementation. These +// defaults to current local timezone offset of the computer, but this can be +// changed by changing these variables before decoding. +// +// TODO: +// Ideally we'd like to offer people the ability to configure the used timezone +// by setting Decoder.Timezone and Encoder.Timezone; however, this is a bit +// tricky: the reason we use three different variables for this is to support +// round-tripping – without these specific TZ names we wouldn't know which +// format to use. +// +// There isn't a good way to encode this right now though, and passing this sort +// of information also ties in to various related issues such as string format +// encoding, encoding of comments, etc. +// +// So, for the time being, just put this in internal until we can write a good +// comprehensive API for doing all of this. +// +// The reason they're exported is because they're referred from in e.g. +// internal/tag. +// +// Note that this behaviour is valid according to the TOML spec as the exact +// behaviour is left up to implementations. +var ( + localOffset = func() int { _, o := time.Now().Zone(); return o }() + LocalDatetime = time.FixedZone("datetime-local", localOffset) + LocalDate = time.FixedZone("date-local", localOffset) + LocalTime = time.FixedZone("time-local", localOffset) +) diff --git a/vendor/github.com/BurntSushi/toml/lex.go b/vendor/github.com/BurntSushi/toml/lex.go index e0a742a8..63ef20f4 100644 --- a/vendor/github.com/BurntSushi/toml/lex.go +++ b/vendor/github.com/BurntSushi/toml/lex.go @@ -2,6 +2,8 @@ package toml import ( "fmt" + "reflect" + "runtime" "strings" "unicode" "unicode/utf8" @@ -29,33 +31,20 @@ const ( itemArrayTableStart itemArrayTableEnd itemKeyStart + itemKeyEnd itemCommentStart itemInlineTableStart itemInlineTableEnd ) -const ( - eof = 0 - comma = ',' - tableStart = '[' - tableEnd = ']' - arrayTableStart = '[' - arrayTableEnd = ']' - tableSep = '.' - keySep = '=' - arrayStart = '[' - arrayEnd = ']' - commentStart = '#' - stringStart = '"' - stringEnd = '"' - rawStringStart = '\'' - rawStringEnd = '\'' - inlineTableStart = '{' - inlineTableEnd = '}' -) +const eof = 0 type stateFn func(lx *lexer) stateFn +func (p Position) String() string { + return fmt.Sprintf("at line %d; start %d; length %d", p.Line, p.Start, p.Len) +} + type lexer struct { input string start int @@ -64,26 +53,26 @@ type lexer struct { state stateFn items chan item - // Allow for backing up up to three runes. - // This is necessary because TOML contains 3-rune tokens (""" and '''). - prevWidths [3]int - nprev int // how many of prevWidths are in use - // If we emit an eof, we can still back up, but it is not OK to call - // next again. - atEOF bool + // Allow for backing up up to 4 runes. This is necessary because TOML + // contains 3-rune tokens (""" and '''). + prevWidths [4]int + nprev int // how many of prevWidths are in use + atEOF bool // If we emit an eof, we can still back up, but it is not OK to call next again. // A stack of state functions used to maintain context. - // The idea is to reuse parts of the state machine in various places. - // For example, values can appear at the top level or within arbitrarily - // nested arrays. The last state on the stack is used after a value has - // been lexed. Similarly for comments. + // + // The idea is to reuse parts of the state machine in various places. For + // example, values can appear at the top level or within arbitrarily nested + // arrays. The last state on the stack is used after a value has been lexed. + // Similarly for comments. stack []stateFn } type item struct { - typ itemType - val string - line int + typ itemType + val string + err error + pos Position } func (lx *lexer) nextItem() item { @@ -93,6 +82,7 @@ func (lx *lexer) nextItem() item { return item default: lx.state = lx.state(lx) + //fmt.Printf(" STATE %-24s current: %-10q stack: %s\n", lx.state, lx.current(), lx.stack) } } } @@ -101,9 +91,9 @@ func lex(input string) *lexer { lx := &lexer{ input: input, state: lexTop, - line: 1, items: make(chan item, 10), stack: make([]stateFn, 0, 10), + line: 1, } return lx } @@ -125,19 +115,31 @@ func (lx *lexer) current() string { return lx.input[lx.start:lx.pos] } +func (lx lexer) getPos() Position { + p := Position{ + Line: lx.line, + Start: lx.start, + Len: lx.pos - lx.start, + } + if p.Len <= 0 { + p.Len = 1 + } + return p +} + func (lx *lexer) emit(typ itemType) { - lx.items <- item{typ, lx.current(), lx.line} + lx.items <- item{typ: typ, pos: lx.getPos(), val: lx.current()} lx.start = lx.pos } func (lx *lexer) emitTrim(typ itemType) { - lx.items <- item{typ, strings.TrimSpace(lx.current()), lx.line} + lx.items <- item{typ: typ, pos: lx.getPos(), val: strings.TrimSpace(lx.current())} lx.start = lx.pos } func (lx *lexer) next() (r rune) { if lx.atEOF { - panic("next called after EOF") + panic("BUG in lexer: next called after EOF") } if lx.pos >= len(lx.input) { lx.atEOF = true @@ -147,12 +149,25 @@ func (lx *lexer) next() (r rune) { if lx.input[lx.pos] == '\n' { lx.line++ } + lx.prevWidths[3] = lx.prevWidths[2] lx.prevWidths[2] = lx.prevWidths[1] lx.prevWidths[1] = lx.prevWidths[0] - if lx.nprev < 3 { + if lx.nprev < 4 { lx.nprev++ } + r, w := utf8.DecodeRuneInString(lx.input[lx.pos:]) + if r == utf8.RuneError { + lx.error(errLexUTF8{lx.input[lx.pos]}) + return utf8.RuneError + } + + // Note: don't use peek() here, as this calls next(). + if isControl(r) || (r == '\r' && (len(lx.input)-1 == lx.pos || lx.input[lx.pos+1] != '\n')) { + lx.errorControlChar(r) + return utf8.RuneError + } + lx.prevWidths[0] = w lx.pos += w return r @@ -163,19 +178,21 @@ func (lx *lexer) ignore() { lx.start = lx.pos } -// backup steps back one rune. Can be called only twice between calls to next. +// backup steps back one rune. Can be called 4 times between calls to next. func (lx *lexer) backup() { if lx.atEOF { lx.atEOF = false return } if lx.nprev < 1 { - panic("backed up too far") + panic("BUG in lexer: backed up too far") } w := lx.prevWidths[0] lx.prevWidths[0] = lx.prevWidths[1] lx.prevWidths[1] = lx.prevWidths[2] + lx.prevWidths[2] = lx.prevWidths[3] lx.nprev-- + lx.pos -= w if lx.pos < len(lx.input) && lx.input[lx.pos] == '\n' { lx.line-- @@ -211,18 +228,58 @@ func (lx *lexer) skip(pred func(rune) bool) { } } -// errorf stops all lexing by emitting an error and returning `nil`. +// error stops all lexing by emitting an error and returning `nil`. +// // Note that any value that is a character is escaped if it's a special // character (newlines, tabs, etc.). +func (lx *lexer) error(err error) stateFn { + if lx.atEOF { + return lx.errorPrevLine(err) + } + lx.items <- item{typ: itemError, pos: lx.getPos(), err: err} + return nil +} + +// errorfPrevline is like error(), but sets the position to the last column of +// the previous line. +// +// This is so that unexpected EOF or NL errors don't show on a new blank line. +func (lx *lexer) errorPrevLine(err error) stateFn { + pos := lx.getPos() + pos.Line-- + pos.Len = 1 + pos.Start = lx.pos - 1 + lx.items <- item{typ: itemError, pos: pos, err: err} + return nil +} + +// errorPos is like error(), but allows explicitly setting the position. +func (lx *lexer) errorPos(start, length int, err error) stateFn { + pos := lx.getPos() + pos.Start = start + pos.Len = length + lx.items <- item{typ: itemError, pos: pos, err: err} + return nil +} + +// errorf is like error, and creates a new error. func (lx *lexer) errorf(format string, values ...interface{}) stateFn { - lx.items <- item{ - itemError, - fmt.Sprintf(format, values...), - lx.line, + if lx.atEOF { + pos := lx.getPos() + pos.Line-- + pos.Len = 1 + pos.Start = lx.pos - 1 + lx.items <- item{typ: itemError, pos: pos, err: fmt.Errorf(format, values...)} + return nil } + lx.items <- item{typ: itemError, pos: lx.getPos(), err: fmt.Errorf(format, values...)} return nil } +func (lx *lexer) errorControlChar(cc rune) stateFn { + return lx.errorPos(lx.pos-1, 1, errLexControl{cc}) +} + // lexTop consumes elements at the top level of TOML data. func lexTop(lx *lexer) stateFn { r := lx.next() @@ -230,10 +287,10 @@ func lexTop(lx *lexer) stateFn { return lexSkip(lx, lexTop) } switch r { - case commentStart: + case '#': lx.push(lexTop) return lexCommentStart - case tableStart: + case '[': return lexTableStart case eof: if lx.pos > lx.start { @@ -256,7 +313,7 @@ func lexTop(lx *lexer) stateFn { func lexTopEnd(lx *lexer) stateFn { r := lx.next() switch { - case r == commentStart: + case r == '#': // a comment will read to a newline for us. lx.push(lexTop) return lexCommentStart @@ -269,8 +326,9 @@ func lexTopEnd(lx *lexer) stateFn { lx.emit(itemEOF) return nil } - return lx.errorf("expected a top-level item to end with a newline, "+ - "comment, or EOF, but got %q instead", r) + return lx.errorf( + "expected a top-level item to end with a newline, comment, or EOF, but got %q instead", + r) } // lexTable lexes the beginning of a table. Namely, it makes sure that @@ -279,7 +337,7 @@ func lexTopEnd(lx *lexer) stateFn { // It also handles the case that this is an item in an array of tables. // e.g., '[[name]]'. func lexTableStart(lx *lexer) stateFn { - if lx.peek() == arrayTableStart { + if lx.peek() == '[' { lx.next() lx.emit(itemArrayTableStart) lx.push(lexArrayTableEnd) @@ -296,9 +354,8 @@ func lexTableEnd(lx *lexer) stateFn { } func lexArrayTableEnd(lx *lexer) stateFn { - if r := lx.next(); r != arrayTableEnd { - return lx.errorf("expected end of table array name delimiter %q, "+ - "but got %q instead", arrayTableEnd, r) + if r := lx.next(); r != ']' { + return lx.errorf("expected end of table array name delimiter ']', but got %q instead", r) } lx.emit(itemArrayTableEnd) return lexTopEnd @@ -307,33 +364,20 @@ func lexArrayTableEnd(lx *lexer) stateFn { func lexTableNameStart(lx *lexer) stateFn { lx.skip(isWhitespace) switch r := lx.peek(); { - case r == tableEnd || r == eof: - return lx.errorf("unexpected end of table name " + - "(table names cannot be empty)") - case r == tableSep: - return lx.errorf("unexpected table separator " + - "(table names cannot be empty)") - case r == stringStart || r == rawStringStart: + case r == ']' || r == eof: + return lx.errorf("unexpected end of table name (table names cannot be empty)") + case r == '.': + return lx.errorf("unexpected table separator (table names cannot be empty)") + case r == '"' || r == '\'': lx.ignore() lx.push(lexTableNameEnd) - return lexValue // reuse string lexing + return lexQuotedName default: - return lexBareTableName + lx.push(lexTableNameEnd) + return lexBareName } } -// lexBareTableName lexes the name of a table. It assumes that at least one -// valid character for the table has already been read. -func lexBareTableName(lx *lexer) stateFn { - r := lx.next() - if isBareKeyChar(r) { - return lexBareTableName - } - lx.backup() - lx.emit(itemText) - return lexTableNameEnd -} - // lexTableNameEnd reads the end of a piece of a table name, optionally // consuming whitespace. func lexTableNameEnd(lx *lexer) stateFn { @@ -341,69 +385,107 @@ func lexTableNameEnd(lx *lexer) stateFn { switch r := lx.next(); { case isWhitespace(r): return lexTableNameEnd - case r == tableSep: + case r == '.': lx.ignore() return lexTableNameStart - case r == tableEnd: + case r == ']': return lx.pop() default: - return lx.errorf("expected '.' or ']' to end table name, "+ - "but got %q instead", r) + return lx.errorf("expected '.' or ']' to end table name, but got %q instead", r) } } -// lexKeyStart consumes a key name up until the first non-whitespace character. -// lexKeyStart will ignore whitespace. -func lexKeyStart(lx *lexer) stateFn { - r := lx.peek() +// lexBareName lexes one part of a key or table. +// +// It assumes that at least one valid character for the table has already been +// read. +// +// Lexes only one part, e.g. only 'a' inside 'a.b'. +func lexBareName(lx *lexer) stateFn { + r := lx.next() + if isBareKeyChar(r) { + return lexBareName + } + lx.backup() + lx.emit(itemText) + return lx.pop() +} + +// lexBareName lexes one part of a key or table. +// +// It assumes that at least one valid character for the table has already been +// read. +// +// Lexes only one part, e.g. only '"a"' inside '"a".b'. +func lexQuotedName(lx *lexer) stateFn { + r := lx.next() switch { - case r == keySep: - return lx.errorf("unexpected key separator %q", keySep) - case isWhitespace(r) || isNL(r): - lx.next() - return lexSkip(lx, lexKeyStart) - case r == stringStart || r == rawStringStart: - lx.ignore() - lx.emit(itemKeyStart) - lx.push(lexKeyEnd) - return lexValue // reuse string lexing + case isWhitespace(r): + return lexSkip(lx, lexValue) + case r == '"': + lx.ignore() // ignore the '"' + return lexString + case r == '\'': + lx.ignore() // ignore the "'" + return lexRawString + case r == eof: + return lx.errorf("unexpected EOF; expected value") default: + return lx.errorf("expected value but found %q instead", r) + } +} + +// lexKeyStart consumes all key parts until a '='. +func lexKeyStart(lx *lexer) stateFn { + lx.skip(isWhitespace) + switch r := lx.peek(); { + case r == '=' || r == eof: + return lx.errorf("unexpected '=': key name appears blank") + case r == '.': + return lx.errorf("unexpected '.': keys cannot start with a '.'") + case r == '"' || r == '\'': lx.ignore() + fallthrough + default: // Bare key lx.emit(itemKeyStart) - return lexBareKey + return lexKeyNameStart } } -// lexBareKey consumes the text of a bare key. Assumes that the first character -// (which is not whitespace) has not yet been consumed. -func lexBareKey(lx *lexer) stateFn { - switch r := lx.next(); { - case isBareKeyChar(r): - return lexBareKey - case isWhitespace(r): - lx.backup() - lx.emit(itemText) - return lexKeyEnd - case r == keySep: - lx.backup() - lx.emit(itemText) - return lexKeyEnd +func lexKeyNameStart(lx *lexer) stateFn { + lx.skip(isWhitespace) + switch r := lx.peek(); { + case r == '=' || r == eof: + return lx.errorf("unexpected '='") + case r == '.': + return lx.errorf("unexpected '.'") + case r == '"' || r == '\'': + lx.ignore() + lx.push(lexKeyEnd) + return lexQuotedName default: - return lx.errorf("bare keys cannot contain %q", r) + lx.push(lexKeyEnd) + return lexBareName } } // lexKeyEnd consumes the end of a key and trims whitespace (up to the key // separator). func lexKeyEnd(lx *lexer) stateFn { + lx.skip(isWhitespace) switch r := lx.next(); { - case r == keySep: - return lexSkip(lx, lexValue) case isWhitespace(r): return lexSkip(lx, lexKeyEnd) + case r == eof: + return lx.errorf("unexpected EOF; expected key separator '='") + case r == '.': + lx.ignore() + return lexKeyNameStart + case r == '=': + lx.emit(itemKeyEnd) + return lexSkip(lx, lexValue) default: - return lx.errorf("expected key separator %q, but got %q instead", - keySep, r) + return lx.errorf("expected '.' or '=', but got %q instead", r) } } @@ -422,17 +504,17 @@ func lexValue(lx *lexer) stateFn { return lexNumberOrDateStart } switch r { - case arrayStart: + case '[': lx.ignore() lx.emit(itemArray) return lexArrayValue - case inlineTableStart: + case '{': lx.ignore() lx.emit(itemInlineTableStart) return lexInlineTableValue - case stringStart: - if lx.accept(stringStart) { - if lx.accept(stringStart) { + case '"': + if lx.accept('"') { + if lx.accept('"') { lx.ignore() // Ignore """ return lexMultilineString } @@ -440,9 +522,9 @@ func lexValue(lx *lexer) stateFn { } lx.ignore() // ignore the '"' return lexString - case rawStringStart: - if lx.accept(rawStringStart) { - if lx.accept(rawStringStart) { + case '\'': + if lx.accept('\'') { + if lx.accept('\'') { lx.ignore() // Ignore """ return lexMultilineRawString } @@ -450,10 +532,15 @@ func lexValue(lx *lexer) stateFn { } lx.ignore() // ignore the "'" return lexRawString - case '+', '-': - return lexNumberStart case '.': // special error case, be kind to users return lx.errorf("floats must start with a digit, not '.'") + case 'i', 'n': + if (lx.accept('n') && lx.accept('f')) || (lx.accept('a') && lx.accept('n')) { + lx.emit(itemFloat) + return lx.pop() + } + case '-', '+': + return lexDecimalNumberStart } if unicode.IsLetter(r) { // Be permissive here; lexBool will give a nice error if the @@ -463,6 +550,9 @@ func lexValue(lx *lexer) stateFn { lx.backup() return lexBool } + if r == eof { + return lx.errorf("unexpected EOF; expected value") + } return lx.errorf("expected value but found %q instead", r) } @@ -473,14 +563,12 @@ func lexArrayValue(lx *lexer) stateFn { switch { case isWhitespace(r) || isNL(r): return lexSkip(lx, lexArrayValue) - case r == commentStart: + case r == '#': lx.push(lexArrayValue) return lexCommentStart - case r == comma: + case r == ',': return lx.errorf("unexpected comma") - case r == arrayEnd: - // NOTE(caleb): The spec isn't clear about whether you can have - // a trailing comma or not, so we'll allow it. + case r == ']': return lexArrayEnd } @@ -493,23 +581,20 @@ func lexArrayValue(lx *lexer) stateFn { // the next value (or the end of the array): it ignores whitespace and newlines // and expects either a ',' or a ']'. func lexArrayValueEnd(lx *lexer) stateFn { - r := lx.next() - switch { + switch r := lx.next(); { case isWhitespace(r) || isNL(r): return lexSkip(lx, lexArrayValueEnd) - case r == commentStart: + case r == '#': lx.push(lexArrayValueEnd) return lexCommentStart - case r == comma: + case r == ',': lx.ignore() return lexArrayValue // move on to the next value - case r == arrayEnd: + case r == ']': return lexArrayEnd + default: + return lx.errorf("expected a comma (',') or array terminator (']'), but got %s", runeOrEOF(r)) } - return lx.errorf( - "expected a comma or array terminator %q, but got %q instead", - arrayEnd, r, - ) } // lexArrayEnd finishes the lexing of an array. @@ -528,13 +613,13 @@ func lexInlineTableValue(lx *lexer) stateFn { case isWhitespace(r): return lexSkip(lx, lexInlineTableValue) case isNL(r): - return lx.errorf("newlines not allowed within inline tables") - case r == commentStart: + return lx.errorPrevLine(errLexInlineTableNL{}) + case r == '#': lx.push(lexInlineTableValue) return lexCommentStart - case r == comma: + case r == ',': return lx.errorf("unexpected comma") - case r == inlineTableEnd: + case r == '}': return lexInlineTableEnd } lx.backup() @@ -546,23 +631,33 @@ func lexInlineTableValue(lx *lexer) stateFn { // key/value pair and the next pair (or the end of the table): // it ignores whitespace and expects either a ',' or a '}'. func lexInlineTableValueEnd(lx *lexer) stateFn { - r := lx.next() - switch { + switch r := lx.next(); { case isWhitespace(r): return lexSkip(lx, lexInlineTableValueEnd) case isNL(r): - return lx.errorf("newlines not allowed within inline tables") - case r == commentStart: + return lx.errorPrevLine(errLexInlineTableNL{}) + case r == '#': lx.push(lexInlineTableValueEnd) return lexCommentStart - case r == comma: + case r == ',': lx.ignore() + lx.skip(isWhitespace) + if lx.peek() == '}' { + return lx.errorf("trailing comma not allowed in inline tables") + } return lexInlineTableValue - case r == inlineTableEnd: + case r == '}': return lexInlineTableEnd + default: + return lx.errorf("expected a comma or an inline table terminator '}', but got %s instead", runeOrEOF(r)) } - return lx.errorf("expected a comma or an inline table terminator %q, "+ - "but got %q instead", inlineTableEnd, r) +} + +func runeOrEOF(r rune) string { + if r == eof { + return "end of file" + } + return "'" + string(r) + "'" } // lexInlineTableEnd finishes the lexing of an inline table. @@ -579,13 +674,13 @@ func lexString(lx *lexer) stateFn { r := lx.next() switch { case r == eof: - return lx.errorf("unexpected EOF") + return lx.errorf(`unexpected EOF; expected '"'`) case isNL(r): - return lx.errorf("strings cannot contain newlines") + return lx.errorPrevLine(errLexStringNL{}) case r == '\\': lx.push(lexString) return lexStringEscape - case r == stringEnd: + case r == '"': lx.backup() lx.emit(itemString) lx.next() @@ -598,19 +693,37 @@ func lexString(lx *lexer) stateFn { // lexMultilineString consumes the inner contents of a string. It assumes that // the beginning '"""' has already been consumed and ignored. func lexMultilineString(lx *lexer) stateFn { - switch lx.next() { + r := lx.next() + switch r { + default: + return lexMultilineString case eof: - return lx.errorf("unexpected EOF") + return lx.errorf(`unexpected EOF; expected '"""'`) case '\\': return lexMultilineStringEscape - case stringEnd: - if lx.accept(stringEnd) { - if lx.accept(stringEnd) { - lx.backup() + case '"': + /// Found " → try to read two more "". + if lx.accept('"') { + if lx.accept('"') { + /// Peek ahead: the string can contain " and "", including at the + /// end: """str""""" + /// 6 or more at the end, however, is an error. + if lx.peek() == '"' { + /// Check if we already lexed 5 's; if so we have 6 now, and + /// that's just too many man! + if strings.HasSuffix(lx.current(), `"""""`) { + return lx.errorf(`unexpected '""""""'`) + } + lx.backup() + lx.backup() + return lexMultilineString + } + + lx.backup() /// backup: don't include the """ in the item. lx.backup() lx.backup() lx.emit(itemMultilineString) - lx.next() + lx.next() /// Read over ''' again and discard it. lx.next() lx.next() lx.ignore() @@ -618,8 +731,8 @@ func lexMultilineString(lx *lexer) stateFn { } lx.backup() } + return lexMultilineString } - return lexMultilineString } // lexRawString consumes a raw string. Nothing can be escaped in such a string. @@ -627,35 +740,54 @@ func lexMultilineString(lx *lexer) stateFn { func lexRawString(lx *lexer) stateFn { r := lx.next() switch { + default: + return lexRawString case r == eof: - return lx.errorf("unexpected EOF") + return lx.errorf(`unexpected EOF; expected "'"`) case isNL(r): - return lx.errorf("strings cannot contain newlines") - case r == rawStringEnd: + return lx.errorPrevLine(errLexStringNL{}) + case r == '\'': lx.backup() lx.emit(itemRawString) lx.next() lx.ignore() return lx.pop() } - return lexRawString } // lexMultilineRawString consumes a raw string. Nothing can be escaped in such // a string. It assumes that the beginning "'''" has already been consumed and // ignored. func lexMultilineRawString(lx *lexer) stateFn { - switch lx.next() { + r := lx.next() + switch r { + default: + return lexMultilineRawString case eof: - return lx.errorf("unexpected EOF") - case rawStringEnd: - if lx.accept(rawStringEnd) { - if lx.accept(rawStringEnd) { - lx.backup() + return lx.errorf(`unexpected EOF; expected "'''"`) + case '\'': + /// Found ' → try to read two more ''. + if lx.accept('\'') { + if lx.accept('\'') { + /// Peek ahead: the string can contain ' and '', including at the + /// end: '''str''''' + /// 6 or more at the end, however, is an error. + if lx.peek() == '\'' { + /// Check if we already lexed 5 's; if so we have 6 now, and + /// that's just too many man! + if strings.HasSuffix(lx.current(), "'''''") { + return lx.errorf(`unexpected "''''''"`) + } + lx.backup() + lx.backup() + return lexMultilineRawString + } + + lx.backup() /// backup: don't include the ''' in the item. lx.backup() lx.backup() lx.emit(itemRawMultilineString) - lx.next() + lx.next() /// Read over ''' again and discard it. lx.next() lx.next() lx.ignore() @@ -663,8 +795,8 @@ func lexMultilineRawString(lx *lexer) stateFn { } lx.backup() } + return lexMultilineRawString } - return lexMultilineRawString } // lexMultilineStringEscape consumes an escaped character. It assumes that the @@ -694,6 +826,10 @@ func lexStringEscape(lx *lexer) stateFn { fallthrough case '"': fallthrough + case ' ', '\t': + // Inside """ .. """ strings you can use \ to escape newlines, and any + // amount of whitespace can be between the \ and \n. + fallthrough case '\\': return lx.pop() case 'u': @@ -701,9 +837,7 @@ func lexStringEscape(lx *lexer) stateFn { case 'U': return lexLongUnicodeEscape } - return lx.errorf("invalid escape character %q; only the following "+ - "escape characters are allowed: "+ - `\b, \t, \n, \f, \r, \", \\, \uXXXX, and \UXXXXXXXX`, r) + return lx.error(errLexEscape{r}) } func lexShortUnicodeEscape(lx *lexer) stateFn { @@ -711,8 +845,9 @@ func lexShortUnicodeEscape(lx *lexer) stateFn { for i := 0; i < 4; i++ { r = lx.next() if !isHexadecimal(r) { - return lx.errorf(`expected four hexadecimal digits after '\u', `+ - "but got %q instead", lx.current()) + return lx.errorf( + `expected four hexadecimal digits after '\u', but got %q instead`, + lx.current()) } } return lx.pop() @@ -723,28 +858,33 @@ func lexLongUnicodeEscape(lx *lexer) stateFn { for i := 0; i < 8; i++ { r = lx.next() if !isHexadecimal(r) { - return lx.errorf(`expected eight hexadecimal digits after '\U', `+ - "but got %q instead", lx.current()) + return lx.errorf( + `expected eight hexadecimal digits after '\U', but got %q instead`, + lx.current()) } } return lx.pop() } -// lexNumberOrDateStart consumes either an integer, a float, or datetime. +// lexNumberOrDateStart processes the first character of a value which begins +// with a digit. It exists to catch values starting with '0', so that +// lexBaseNumberOrDate can differentiate base prefixed integers from other +// types. func lexNumberOrDateStart(lx *lexer) stateFn { r := lx.next() - if isDigit(r) { - return lexNumberOrDate - } switch r { - case '_': - return lexNumber - case 'e', 'E': - return lexFloat - case '.': - return lx.errorf("floats must start with a digit, not '.'") + case '0': + return lexBaseNumberOrDate } - return lx.errorf("expected a digit but got %q", r) + + if !isDigit(r) { + // The only way to reach this state is if the value starts + // with a digit, so specifically treat anything else as an + // error. + return lx.errorf("expected a digit but got %q", r) + } + + return lexNumberOrDate } // lexNumberOrDate consumes either an integer, float or datetime. @@ -754,10 +894,10 @@ func lexNumberOrDate(lx *lexer) stateFn { return lexNumberOrDate } switch r { - case '-': + case '-', ':': return lexDatetime case '_': - return lexNumber + return lexDecimalNumber case '.', 'e', 'E': return lexFloat } @@ -775,41 +915,156 @@ func lexDatetime(lx *lexer) stateFn { return lexDatetime } switch r { - case '-', 'T', ':', '.', 'Z', '+': + case '-', ':', 'T', 't', ' ', '.', 'Z', 'z', '+': return lexDatetime } lx.backup() - lx.emit(itemDatetime) + lx.emitTrim(itemDatetime) return lx.pop() } -// lexNumberStart consumes either an integer or a float. It assumes that a sign -// has already been read, but that *no* digits have been consumed. -// lexNumberStart will move to the appropriate integer or float states. -func lexNumberStart(lx *lexer) stateFn { - // We MUST see a digit. Even floats have to start with a digit. +// lexHexInteger consumes a hexadecimal integer after seeing the '0x' prefix. +func lexHexInteger(lx *lexer) stateFn { r := lx.next() - if !isDigit(r) { - if r == '.' { - return lx.errorf("floats must start with a digit, not '.'") + if isHexadecimal(r) { + return lexHexInteger + } + switch r { + case '_': + return lexHexInteger + } + + lx.backup() + lx.emit(itemInteger) + return lx.pop() +} + +// lexOctalInteger consumes an octal integer after seeing the '0o' prefix. +func lexOctalInteger(lx *lexer) stateFn { + r := lx.next() + if isOctal(r) { + return lexOctalInteger + } + switch r { + case '_': + return lexOctalInteger + } + + lx.backup() + lx.emit(itemInteger) + return lx.pop() +} + +// lexBinaryInteger consumes a binary integer after seeing the '0b' prefix. +func lexBinaryInteger(lx *lexer) stateFn { + r := lx.next() + if isBinary(r) { + return lexBinaryInteger + } + switch r { + case '_': + return lexBinaryInteger + } + + lx.backup() + lx.emit(itemInteger) + return lx.pop() +} + +// lexDecimalNumber consumes a decimal float or integer. +func lexDecimalNumber(lx *lexer) stateFn { + r := lx.next() + if isDigit(r) { + return lexDecimalNumber + } + switch r { + case '.', 'e', 'E': + return lexFloat + case '_': + return lexDecimalNumber + } + + lx.backup() + lx.emit(itemInteger) + return lx.pop() +} + +// lexDecimalNumber consumes the first digit of a number beginning with a sign. +// It assumes the sign has already been consumed. Values which start with a sign +// are only allowed to be decimal integers or floats. +// +// The special "nan" and "inf" values are also recognized. +func lexDecimalNumberStart(lx *lexer) stateFn { + r := lx.next() + + // Special error cases to give users better error messages + switch r { + case 'i': + if !lx.accept('n') || !lx.accept('f') { + return lx.errorf("invalid float: '%s'", lx.current()) } - return lx.errorf("expected a digit but got %q", r) + lx.emit(itemFloat) + return lx.pop() + case 'n': + if !lx.accept('a') || !lx.accept('n') { + return lx.errorf("invalid float: '%s'", lx.current()) + } + lx.emit(itemFloat) + return lx.pop() + case '0': + p := lx.peek() + switch p { + case 'b', 'o', 'x': + return lx.errorf("cannot use sign with non-decimal numbers: '%s%c'", lx.current(), p) + } + case '.': + return lx.errorf("floats must start with a digit, not '.'") } - return lexNumber + + if isDigit(r) { + return lexDecimalNumber + } + + return lx.errorf("expected a digit but got %q", r) } -// lexNumber consumes an integer or a float after seeing the first digit. -func lexNumber(lx *lexer) stateFn { +// lexBaseNumberOrDate differentiates between the possible values which +// start with '0'. It assumes that before reaching this state, the initial '0' +// has been consumed. +func lexBaseNumberOrDate(lx *lexer) stateFn { r := lx.next() + // Note: All datetimes start with at least two digits, so we don't + // handle date characters (':', '-', etc.) here. if isDigit(r) { - return lexNumber + return lexNumberOrDate } switch r { case '_': - return lexNumber + // Can only be decimal, because there can't be an underscore + // between the '0' and the base designator, and dates can't + // contain underscores. + return lexDecimalNumber case '.', 'e', 'E': return lexFloat + case 'b': + r = lx.peek() + if !isBinary(r) { + lx.errorf("not a binary number: '%s%c'", lx.current(), r) + } + return lexBinaryInteger + case 'o': + r = lx.peek() + if !isOctal(r) { + lx.errorf("not an octal number: '%s%c'", lx.current(), r) + } + return lexOctalInteger + case 'x': + r = lx.peek() + if !isHexadecimal(r) { + lx.errorf("not a hexidecimal number: '%s%c'", lx.current(), r) + } + return lexHexInteger } lx.backup() @@ -867,49 +1122,31 @@ func lexCommentStart(lx *lexer) stateFn { // It will consume *up to* the first newline character, and pass control // back to the last state on the stack. func lexComment(lx *lexer) stateFn { - r := lx.peek() - if isNL(r) || r == eof { + switch r := lx.next(); { + case isNL(r) || r == eof: + lx.backup() lx.emit(itemText) return lx.pop() + default: + return lexComment } - lx.next() - return lexComment } // lexSkip ignores all slurped input and moves on to the next state. func lexSkip(lx *lexer, nextState stateFn) stateFn { - return func(lx *lexer) stateFn { - lx.ignore() - return nextState - } -} - -// isWhitespace returns true if `r` is a whitespace character according -// to the spec. -func isWhitespace(r rune) bool { - return r == '\t' || r == ' ' -} - -func isNL(r rune) bool { - return r == '\n' || r == '\r' -} - -func isDigit(r rune) bool { - return r >= '0' && r <= '9' -} - -func isHexadecimal(r rune) bool { - return (r >= '0' && r <= '9') || - (r >= 'a' && r <= 'f') || - (r >= 'A' && r <= 'F') + lx.ignore() + return nextState } -func isBareKeyChar(r rune) bool { - return (r >= 'A' && r <= 'Z') || - (r >= 'a' && r <= 'z') || - (r >= '0' && r <= '9') || - r == '_' || - r == '-' +func (s stateFn) String() string { + name := runtime.FuncForPC(reflect.ValueOf(s).Pointer()).Name() + if i := strings.LastIndexByte(name, '.'); i > -1 { + name = name[i+1:] + } + if s == nil { + name = "" + } + return name + "()" } func (itype itemType) String() string { @@ -938,12 +1175,18 @@ func (itype itemType) String() string { return "TableEnd" case itemKeyStart: return "KeyStart" + case itemKeyEnd: + return "KeyEnd" case itemArray: return "Array" case itemArrayEnd: return "ArrayEnd" case itemCommentStart: return "CommentStart" + case itemInlineTableStart: + return "InlineTableStart" + case itemInlineTableEnd: + return "InlineTableEnd" } panic(fmt.Sprintf("BUG: Unknown type '%d'.", int(itype))) } @@ -951,3 +1194,26 @@ func (itype itemType) String() string { func (item item) String() string { return fmt.Sprintf("(%s, %s)", item.typ.String(), item.val) } + +func isWhitespace(r rune) bool { return r == '\t' || r == ' ' } +func isNL(r rune) bool { return r == '\n' || r == '\r' } +func isControl(r rune) bool { // Control characters except \t, \r, \n + switch r { + case '\t', '\r', '\n': + return false + default: + return (r >= 0x00 && r <= 0x1f) || r == 0x7f + } +} +func isDigit(r rune) bool { return r >= '0' && r <= '9' } +func isBinary(r rune) bool { return r == '0' || r == '1' } +func isOctal(r rune) bool { return r >= '0' && r <= '7' } +func isHexadecimal(r rune) bool { + return (r >= '0' && r <= '9') || (r >= 'a' && r <= 'f') || (r >= 'A' && r <= 'F') +} +func isBareKeyChar(r rune) bool { + return (r >= 'A' && r <= 'Z') || + (r >= 'a' && r <= 'z') || + (r >= '0' && r <= '9') || + r == '_' || r == '-' +} diff --git a/vendor/github.com/BurntSushi/toml/decode_meta.go b/vendor/github.com/BurntSushi/toml/meta.go similarity index 64% rename from vendor/github.com/BurntSushi/toml/decode_meta.go rename to vendor/github.com/BurntSushi/toml/meta.go index b9914a67..868619fb 100644 --- a/vendor/github.com/BurntSushi/toml/decode_meta.go +++ b/vendor/github.com/BurntSushi/toml/meta.go @@ -1,33 +1,39 @@ package toml -import "strings" +import ( + "strings" +) -// MetaData allows access to meta information about TOML data that may not -// be inferrable via reflection. In particular, whether a key has been defined -// and the TOML type of a key. +// MetaData allows access to meta information about TOML data that's not +// accessible otherwise. +// +// It allows checking if a key is defined in the TOML data, whether any keys +// were undecoded, and the TOML type of a key. type MetaData struct { + context Key // Used only during decoding. + mapping map[string]interface{} types map[string]tomlType keys []Key - decoded map[string]bool - context Key // Used only during decoding. + decoded map[string]struct{} } -// IsDefined returns true if the key given exists in the TOML data. The key -// should be specified hierarchially. e.g., +// IsDefined reports if the key exists in the TOML data. // -// // access the TOML key 'a.b.c' -// IsDefined("a", "b", "c") +// The key should be specified hierarchically, for example to access the TOML +// key "a.b.c" you would use IsDefined("a", "b", "c"). Keys are case sensitive. // -// IsDefined will return false if an empty key given. Keys are case sensitive. +// Returns false for an empty key. func (md *MetaData) IsDefined(key ...string) bool { if len(key) == 0 { return false } - var hash map[string]interface{} - var ok bool - var hashOrVal interface{} = md.mapping + var ( + hash map[string]interface{} + ok bool + hashOrVal interface{} = md.mapping + ) for _, k := range key { if hash, ok = hashOrVal.(map[string]interface{}); !ok { return false @@ -41,58 +47,20 @@ func (md *MetaData) IsDefined(key ...string) bool { // Type returns a string representation of the type of the key specified. // -// Type will return the empty string if given an empty key or a key that -// does not exist. Keys are case sensitive. +// Type will return the empty string if given an empty key or a key that does +// not exist. Keys are case sensitive. func (md *MetaData) Type(key ...string) string { - fullkey := strings.Join(key, ".") - if typ, ok := md.types[fullkey]; ok { + if typ, ok := md.types[Key(key).String()]; ok { return typ.typeString() } return "" } -// Key is the type of any TOML key, including key groups. Use (MetaData).Keys -// to get values of this type. -type Key []string - -func (k Key) String() string { - return strings.Join(k, ".") -} - -func (k Key) maybeQuotedAll() string { - var ss []string - for i := range k { - ss = append(ss, k.maybeQuoted(i)) - } - return strings.Join(ss, ".") -} - -func (k Key) maybeQuoted(i int) string { - quote := false - for _, c := range k[i] { - if !isBareKeyChar(c) { - quote = true - break - } - } - if quote { - return "\"" + strings.Replace(k[i], "\"", "\\\"", -1) + "\"" - } - return k[i] -} - -func (k Key) add(piece string) Key { - newKey := make(Key, len(k)+1) - copy(newKey, k) - newKey[len(k)] = piece - return newKey -} - // Keys returns a slice of every key in the TOML data, including key groups. -// Each key is itself a slice, where the first element is the top of the -// hierarchy and the last is the most specific. // -// The list will have the same order as the keys appeared in the TOML data. +// Each key is itself a slice, where the first element is the top of the +// hierarchy and the last is the most specific. The list will have the same +// order as the keys appeared in the TOML data. // // All keys returned are non-empty. func (md *MetaData) Keys() []Key { @@ -113,9 +81,40 @@ func (md *MetaData) Keys() []Key { func (md *MetaData) Undecoded() []Key { undecoded := make([]Key, 0, len(md.keys)) for _, key := range md.keys { - if !md.decoded[key.String()] { + if _, ok := md.decoded[key.String()]; !ok { undecoded = append(undecoded, key) } } return undecoded } + +// Key represents any TOML key, including key groups. Use (MetaData).Keys to get +// values of this type. +type Key []string + +func (k Key) String() string { + ss := make([]string, len(k)) + for i := range k { + ss[i] = k.maybeQuoted(i) + } + return strings.Join(ss, ".") +} + +func (k Key) maybeQuoted(i int) string { + if k[i] == "" { + return `""` + } + for _, c := range k[i] { + if !isBareKeyChar(c) { + return `"` + dblQuotedReplacer.Replace(k[i]) + `"` + } + } + return k[i] +} + +func (k Key) add(piece string) Key { + newKey := make(Key, len(k)+1) + copy(newKey, k) + newKey[len(k)] = piece + return newKey +} diff --git a/vendor/github.com/BurntSushi/toml/parse.go b/vendor/github.com/BurntSushi/toml/parse.go index 50869ef9..8269cca1 100644 --- a/vendor/github.com/BurntSushi/toml/parse.go +++ b/vendor/github.com/BurntSushi/toml/parse.go @@ -5,54 +5,63 @@ import ( "strconv" "strings" "time" - "unicode" "unicode/utf8" + + "github.com/BurntSushi/toml/internal" ) type parser struct { - mapping map[string]interface{} - types map[string]tomlType - lx *lexer - - // A list of keys in the order that they appear in the TOML data. - ordered []Key - - // the full key for the current hash in scope - context Key - - // the base key name for everything except hashes - currentKey string - - // rough approximation of line number - approxLine int - - // A map of 'key.group.names' to whether they were created implicitly. - implicits map[string]bool -} - -type parseError string - -func (pe parseError) Error() string { - return string(pe) + lx *lexer + context Key // Full key for the current hash in scope. + currentKey string // Base key name for everything except hashes. + pos Position // Current position in the TOML file. + + ordered []Key // List of keys in the order that they appear in the TOML data. + mapping map[string]interface{} // Map keyname → key value. + types map[string]tomlType // Map keyname → TOML type. + implicits map[string]struct{} // Record implicit keys (e.g. "key.group.names"). } func parse(data string) (p *parser, err error) { defer func() { if r := recover(); r != nil { - var ok bool - if err, ok = r.(parseError); ok { + if pErr, ok := r.(ParseError); ok { + pErr.input = data + err = pErr return } panic(r) } }() + // Read over BOM; do this here as the lexer calls utf8.DecodeRuneInString() + // which mangles stuff. + if strings.HasPrefix(data, "\xff\xfe") || strings.HasPrefix(data, "\xfe\xff") { + data = data[2:] + } + + // Examine first few bytes for NULL bytes; this probably means it's a UTF-16 + // file (second byte in surrogate pair being NULL). Again, do this here to + // avoid having to deal with UTF-8/16 stuff in the lexer. + ex := 6 + if len(data) < 6 { + ex = len(data) + } + if i := strings.IndexRune(data[:ex], 0); i > -1 { + return nil, ParseError{ + Message: "files cannot contain NULL bytes; probably using UTF-16; TOML files must be UTF-8", + Position: Position{Line: 1, Start: i, Len: 1}, + Line: 1, + input: data, + } + } + p = &parser{ mapping: make(map[string]interface{}), types: make(map[string]tomlType), lx: lex(data), ordered: make([]Key, 0), - implicits: make(map[string]bool), + implicits: make(map[string]struct{}), } for { item := p.next() @@ -65,20 +74,48 @@ func parse(data string) (p *parser, err error) { return p, nil } +func (p *parser) panicItemf(it item, format string, v ...interface{}) { + panic(ParseError{ + Message: fmt.Sprintf(format, v...), + Position: it.pos, + Line: it.pos.Len, + LastKey: p.current(), + }) +} + func (p *parser) panicf(format string, v ...interface{}) { - msg := fmt.Sprintf("Near line %d (last key parsed '%s'): %s", - p.approxLine, p.current(), fmt.Sprintf(format, v...)) - panic(parseError(msg)) + panic(ParseError{ + Message: fmt.Sprintf(format, v...), + Position: p.pos, + Line: p.pos.Line, + LastKey: p.current(), + }) } func (p *parser) next() item { it := p.lx.nextItem() + //fmt.Printf("ITEM %-18s line %-3d │ %q\n", it.typ, it.line, it.val) if it.typ == itemError { - p.panicf("%s", it.val) + if it.err != nil { + panic(ParseError{ + Position: it.pos, + Line: it.pos.Line, + LastKey: p.current(), + err: it.err, + }) + } + + p.panicItemf(it, "%s", it.val) } return it } +func (p *parser) nextPos() item { + it := p.next() + p.pos = it.pos + return it +} + func (p *parser) bug(format string, v ...interface{}) { panic(fmt.Sprintf("BUG: "+format+"\n\n", v...)) } @@ -97,44 +134,59 @@ func (p *parser) assertEqual(expected, got itemType) { func (p *parser) topLevel(item item) { switch item.typ { - case itemCommentStart: - p.approxLine = item.line + case itemCommentStart: // # .. p.expect(itemText) - case itemTableStart: - kg := p.next() - p.approxLine = kg.line + case itemTableStart: // [ .. ] + name := p.nextPos() var key Key - for ; kg.typ != itemTableEnd && kg.typ != itemEOF; kg = p.next() { - key = append(key, p.keyString(kg)) + for ; name.typ != itemTableEnd && name.typ != itemEOF; name = p.next() { + key = append(key, p.keyString(name)) } - p.assertEqual(itemTableEnd, kg.typ) + p.assertEqual(itemTableEnd, name.typ) - p.establishContext(key, false) + p.addContext(key, false) p.setType("", tomlHash) p.ordered = append(p.ordered, key) - case itemArrayTableStart: - kg := p.next() - p.approxLine = kg.line + case itemArrayTableStart: // [[ .. ]] + name := p.nextPos() var key Key - for ; kg.typ != itemArrayTableEnd && kg.typ != itemEOF; kg = p.next() { - key = append(key, p.keyString(kg)) + for ; name.typ != itemArrayTableEnd && name.typ != itemEOF; name = p.next() { + key = append(key, p.keyString(name)) } - p.assertEqual(itemArrayTableEnd, kg.typ) + p.assertEqual(itemArrayTableEnd, name.typ) - p.establishContext(key, true) + p.addContext(key, true) p.setType("", tomlArrayHash) p.ordered = append(p.ordered, key) - case itemKeyStart: - kname := p.next() - p.approxLine = kname.line - p.currentKey = p.keyString(kname) - - val, typ := p.value(p.next()) - p.setValue(p.currentKey, val) - p.setType(p.currentKey, typ) + case itemKeyStart: // key = .. + outerContext := p.context + /// Read all the key parts (e.g. 'a' and 'b' in 'a.b') + k := p.nextPos() + var key Key + for ; k.typ != itemKeyEnd && k.typ != itemEOF; k = p.next() { + key = append(key, p.keyString(k)) + } + p.assertEqual(itemKeyEnd, k.typ) + + /// The current key is the last part. + p.currentKey = key[len(key)-1] + + /// All the other parts (if any) are the context; need to set each part + /// as implicit. + context := key[:len(key)-1] + for i := range context { + p.addImplicitContext(append(p.context, context[i:i+1]...)) + } + + /// Set value. + val, typ := p.value(p.next(), false) + p.set(p.currentKey, val, typ) p.ordered = append(p.ordered, p.context.add(p.currentKey)) + + /// Remove the context we added (preserving any context from [tbl] lines). + p.context = outerContext p.currentKey = "" default: p.bug("Unexpected type at top level: %s", item.typ) @@ -148,180 +200,262 @@ func (p *parser) keyString(it item) string { return it.val case itemString, itemMultilineString, itemRawString, itemRawMultilineString: - s, _ := p.value(it) + s, _ := p.value(it, false) return s.(string) default: p.bug("Unexpected key type: %s", it.typ) - panic("unreachable") } + panic("unreachable") } +var datetimeRepl = strings.NewReplacer( + "z", "Z", + "t", "T", + " ", "T") + // value translates an expected value from the lexer into a Go value wrapped // as an empty interface. -func (p *parser) value(it item) (interface{}, tomlType) { +func (p *parser) value(it item, parentIsArray bool) (interface{}, tomlType) { switch it.typ { case itemString: - return p.replaceEscapes(it.val), p.typeOfPrimitive(it) + return p.replaceEscapes(it, it.val), p.typeOfPrimitive(it) case itemMultilineString: - trimmed := stripFirstNewline(stripEscapedWhitespace(it.val)) - return p.replaceEscapes(trimmed), p.typeOfPrimitive(it) + return p.replaceEscapes(it, stripFirstNewline(stripEscapedNewlines(it.val))), p.typeOfPrimitive(it) case itemRawString: return it.val, p.typeOfPrimitive(it) case itemRawMultilineString: return stripFirstNewline(it.val), p.typeOfPrimitive(it) + case itemInteger: + return p.valueInteger(it) + case itemFloat: + return p.valueFloat(it) case itemBool: switch it.val { case "true": return true, p.typeOfPrimitive(it) case "false": return false, p.typeOfPrimitive(it) + default: + p.bug("Expected boolean value, but got '%s'.", it.val) } - p.bug("Expected boolean value, but got '%s'.", it.val) - case itemInteger: - if !numUnderscoresOK(it.val) { - p.panicf("Invalid integer %q: underscores must be surrounded by digits", - it.val) - } - val := strings.Replace(it.val, "_", "", -1) - num, err := strconv.ParseInt(val, 10, 64) - if err != nil { - // Distinguish integer values. Normally, it'd be a bug if the lexer - // provides an invalid integer, but it's possible that the number is - // out of range of valid values (which the lexer cannot determine). - // So mark the former as a bug but the latter as a legitimate user - // error. - if e, ok := err.(*strconv.NumError); ok && - e.Err == strconv.ErrRange { - - p.panicf("Integer '%s' is out of the range of 64-bit "+ - "signed integers.", it.val) - } else { - p.bug("Expected integer value, but got '%s'.", it.val) - } + case itemDatetime: + return p.valueDatetime(it) + case itemArray: + return p.valueArray(it) + case itemInlineTableStart: + return p.valueInlineTable(it, parentIsArray) + default: + p.bug("Unexpected value type: %s", it.typ) + } + panic("unreachable") +} + +func (p *parser) valueInteger(it item) (interface{}, tomlType) { + if !numUnderscoresOK(it.val) { + p.panicItemf(it, "Invalid integer %q: underscores must be surrounded by digits", it.val) + } + if numHasLeadingZero(it.val) { + p.panicItemf(it, "Invalid integer %q: cannot have leading zeroes", it.val) + } + + num, err := strconv.ParseInt(it.val, 0, 64) + if err != nil { + // Distinguish integer values. Normally, it'd be a bug if the lexer + // provides an invalid integer, but it's possible that the number is + // out of range of valid values (which the lexer cannot determine). + // So mark the former as a bug but the latter as a legitimate user + // error. + if e, ok := err.(*strconv.NumError); ok && e.Err == strconv.ErrRange { + p.panicItemf(it, "Integer '%s' is out of the range of 64-bit signed integers.", it.val) + } else { + p.bug("Expected integer value, but got '%s'.", it.val) } - return num, p.typeOfPrimitive(it) - case itemFloat: - parts := strings.FieldsFunc(it.val, func(r rune) bool { - switch r { - case '.', 'e', 'E': - return true - } - return false - }) - for _, part := range parts { - if !numUnderscoresOK(part) { - p.panicf("Invalid float %q: underscores must be "+ - "surrounded by digits", it.val) - } + } + return num, p.typeOfPrimitive(it) +} + +func (p *parser) valueFloat(it item) (interface{}, tomlType) { + parts := strings.FieldsFunc(it.val, func(r rune) bool { + switch r { + case '.', 'e', 'E': + return true } - if !numPeriodsOK(it.val) { - // As a special case, numbers like '123.' or '1.e2', - // which are valid as far as Go/strconv are concerned, - // must be rejected because TOML says that a fractional - // part consists of '.' followed by 1+ digits. - p.panicf("Invalid float %q: '.' must be followed "+ - "by one or more digits", it.val) - } - val := strings.Replace(it.val, "_", "", -1) - num, err := strconv.ParseFloat(val, 64) - if err != nil { - if e, ok := err.(*strconv.NumError); ok && - e.Err == strconv.ErrRange { - - p.panicf("Float '%s' is out of the range of 64-bit "+ - "IEEE-754 floating-point numbers.", it.val) - } else { - p.panicf("Invalid float value: %q", it.val) - } + return false + }) + for _, part := range parts { + if !numUnderscoresOK(part) { + p.panicItemf(it, "Invalid float %q: underscores must be surrounded by digits", it.val) } - return num, p.typeOfPrimitive(it) - case itemDatetime: - var t time.Time - var ok bool - var err error - for _, format := range []string{ - "2006-01-02T15:04:05Z07:00", - "2006-01-02T15:04:05", - "2006-01-02", - } { - t, err = time.ParseInLocation(format, it.val, time.Local) - if err == nil { - ok = true - break - } + } + if len(parts) > 0 && numHasLeadingZero(parts[0]) { + p.panicItemf(it, "Invalid float %q: cannot have leading zeroes", it.val) + } + if !numPeriodsOK(it.val) { + // As a special case, numbers like '123.' or '1.e2', + // which are valid as far as Go/strconv are concerned, + // must be rejected because TOML says that a fractional + // part consists of '.' followed by 1+ digits. + p.panicItemf(it, "Invalid float %q: '.' must be followed by one or more digits", it.val) + } + val := strings.Replace(it.val, "_", "", -1) + if val == "+nan" || val == "-nan" { // Go doesn't support this, but TOML spec does. + val = "nan" + } + num, err := strconv.ParseFloat(val, 64) + if err != nil { + if e, ok := err.(*strconv.NumError); ok && e.Err == strconv.ErrRange { + p.panicItemf(it, "Float '%s' is out of the range of 64-bit IEEE-754 floating-point numbers.", it.val) + } else { + p.panicItemf(it, "Invalid float value: %q", it.val) } - if !ok { - p.panicf("Invalid TOML Datetime: %q.", it.val) + } + return num, p.typeOfPrimitive(it) +} + +var dtTypes = []struct { + fmt string + zone *time.Location +}{ + {time.RFC3339Nano, time.Local}, + {"2006-01-02T15:04:05.999999999", internal.LocalDatetime}, + {"2006-01-02", internal.LocalDate}, + {"15:04:05.999999999", internal.LocalTime}, +} + +func (p *parser) valueDatetime(it item) (interface{}, tomlType) { + it.val = datetimeRepl.Replace(it.val) + var ( + t time.Time + ok bool + err error + ) + for _, dt := range dtTypes { + t, err = time.ParseInLocation(dt.fmt, it.val, dt.zone) + if err == nil { + ok = true + break } - return t, p.typeOfPrimitive(it) - case itemArray: - array := make([]interface{}, 0) - types := make([]tomlType, 0) + } + if !ok { + p.panicItemf(it, "Invalid TOML Datetime: %q.", it.val) + } + return t, p.typeOfPrimitive(it) +} - for it = p.next(); it.typ != itemArrayEnd; it = p.next() { - if it.typ == itemCommentStart { - p.expect(itemText) - continue - } +func (p *parser) valueArray(it item) (interface{}, tomlType) { + p.setType(p.currentKey, tomlArray) + + // p.setType(p.currentKey, typ) + var ( + types []tomlType + + // Initialize to a non-nil empty slice. This makes it consistent with + // how S = [] decodes into a non-nil slice inside something like struct + // { S []string }. See #338 + array = []interface{}{} + ) + for it = p.next(); it.typ != itemArrayEnd; it = p.next() { + if it.typ == itemCommentStart { + p.expect(itemText) + continue + } - val, typ := p.value(it) - array = append(array, val) - types = append(types, typ) + val, typ := p.value(it, true) + array = append(array, val) + types = append(types, typ) + + // XXX: types isn't used here, we need it to record the accurate type + // information. + // + // Not entirely sure how to best store this; could use "key[0]", + // "key[1]" notation, or maybe store it on the Array type? + } + return array, tomlArray +} + +func (p *parser) valueInlineTable(it item, parentIsArray bool) (interface{}, tomlType) { + var ( + hash = make(map[string]interface{}) + outerContext = p.context + outerKey = p.currentKey + ) + + p.context = append(p.context, p.currentKey) + prevContext := p.context + p.currentKey = "" + + p.addImplicit(p.context) + p.addContext(p.context, parentIsArray) + + /// Loop over all table key/value pairs. + for it := p.next(); it.typ != itemInlineTableEnd; it = p.next() { + if it.typ == itemCommentStart { + p.expect(itemText) + continue } - return array, p.typeOfArray(types) - case itemInlineTableStart: - var ( - hash = make(map[string]interface{}) - outerContext = p.context - outerKey = p.currentKey - ) - p.context = append(p.context, p.currentKey) - p.currentKey = "" - for it := p.next(); it.typ != itemInlineTableEnd; it = p.next() { - if it.typ != itemKeyStart { - p.bug("Expected key start but instead found %q, around line %d", - it.val, p.approxLine) - } - if it.typ == itemCommentStart { - p.expect(itemText) - continue - } + /// Read all key parts. + k := p.nextPos() + var key Key + for ; k.typ != itemKeyEnd && k.typ != itemEOF; k = p.next() { + key = append(key, p.keyString(k)) + } + p.assertEqual(itemKeyEnd, k.typ) - // retrieve key - k := p.next() - p.approxLine = k.line - kname := p.keyString(k) + /// The current key is the last part. + p.currentKey = key[len(key)-1] - // retrieve value - p.currentKey = kname - val, typ := p.value(p.next()) - // make sure we keep metadata up to date - p.setType(kname, typ) - p.ordered = append(p.ordered, p.context.add(p.currentKey)) - hash[kname] = val + /// All the other parts (if any) are the context; need to set each part + /// as implicit. + context := key[:len(key)-1] + for i := range context { + p.addImplicitContext(append(p.context, context[i:i+1]...)) } - p.context = outerContext - p.currentKey = outerKey - return hash, tomlHash + + /// Set the value. + val, typ := p.value(p.next(), false) + p.set(p.currentKey, val, typ) + p.ordered = append(p.ordered, p.context.add(p.currentKey)) + hash[p.currentKey] = val + + /// Restore context. + p.context = prevContext } - p.bug("Unexpected value type: %s", it.typ) - panic("unreachable") + p.context = outerContext + p.currentKey = outerKey + return hash, tomlHash +} + +// numHasLeadingZero checks if this number has leading zeroes, allowing for '0', +// +/- signs, and base prefixes. +func numHasLeadingZero(s string) bool { + if len(s) > 1 && s[0] == '0' && !(s[1] == 'b' || s[1] == 'o' || s[1] == 'x') { // Allow 0b, 0o, 0x + return true + } + if len(s) > 2 && (s[0] == '-' || s[0] == '+') && s[1] == '0' { + return true + } + return false } // numUnderscoresOK checks whether each underscore in s is surrounded by // characters that are not underscores. func numUnderscoresOK(s string) bool { + switch s { + case "nan", "+nan", "-nan", "inf", "-inf", "+inf": + return true + } accept := false for _, r := range s { if r == '_' { if !accept { return false } - accept = false - continue } - accept = true + + // isHexadecimal is a superset of all the permissable characters + // surrounding an underscore. + accept = isHexadecimal(r) } return accept } @@ -338,13 +472,12 @@ func numPeriodsOK(s string) bool { return !period } -// establishContext sets the current context of the parser, -// where the context is either a hash or an array of hashes. Which one is -// set depends on the value of the `array` parameter. +// Set the current context of the parser, where the context is either a hash or +// an array of hashes, depending on the value of the `array` parameter. // // Establishing the context also makes sure that the key isn't a duplicate, and // will create implicit hashes automatically. -func (p *parser) establishContext(key Key, array bool) { +func (p *parser) addContext(key Key, array bool) { var ok bool // Always start at the top level and drill down for our context. @@ -383,7 +516,7 @@ func (p *parser) establishContext(key Key, array bool) { // list of tables for it. k := key[len(key)-1] if _, ok := hashContext[k]; !ok { - hashContext[k] = make([]map[string]interface{}, 0, 5) + hashContext[k] = make([]map[string]interface{}, 0, 4) } // Add a new table. But make sure the key hasn't already been used @@ -391,8 +524,7 @@ func (p *parser) establishContext(key Key, array bool) { if hash, ok := hashContext[k].([]map[string]interface{}); ok { hashContext[k] = append(hash, make(map[string]interface{})) } else { - p.panicf("Key '%s' was already created and cannot be used as "+ - "an array.", keyContext) + p.panicf("Key '%s' was already created and cannot be used as an array.", key) } } else { p.setValue(key[len(key)-1], make(map[string]interface{})) @@ -400,15 +532,22 @@ func (p *parser) establishContext(key Key, array bool) { p.context = append(p.context, key[len(key)-1]) } +// set calls setValue and setType. +func (p *parser) set(key string, val interface{}, typ tomlType) { + p.setValue(key, val) + p.setType(key, typ) +} + // setValue sets the given key to the given value in the current context. // It will make sure that the key hasn't already been defined, account for // implicit key groups. func (p *parser) setValue(key string, value interface{}) { - var tmpHash interface{} - var ok bool - - hash := p.mapping - keyContext := make(Key, 0) + var ( + tmpHash interface{} + ok bool + hash = p.mapping + keyContext Key + ) for _, k := range p.context { keyContext = append(keyContext, k) if tmpHash, ok = hash[k]; !ok { @@ -422,24 +561,26 @@ func (p *parser) setValue(key string, value interface{}) { case map[string]interface{}: hash = t default: - p.bug("Expected hash to have type 'map[string]interface{}', but "+ - "it has '%T' instead.", tmpHash) + p.panicf("Key '%s' has already been defined.", keyContext) } } keyContext = append(keyContext, key) if _, ok := hash[key]; ok { - // Typically, if the given key has already been set, then we have - // to raise an error since duplicate keys are disallowed. However, - // it's possible that a key was previously defined implicitly. In this - // case, it is allowed to be redefined concretely. (See the - // `tests/valid/implicit-and-explicit-after.toml` test in `toml-test`.) + // Normally redefining keys isn't allowed, but the key could have been + // defined implicitly and it's allowed to be redefined concretely. (See + // the `valid/implicit-and-explicit-after.toml` in toml-test) // // But we have to make sure to stop marking it as an implicit. (So that // another redefinition provokes an error.) // // Note that since it has already been defined (as a hash), we don't // want to overwrite it. So our business is done. + if p.isArray(keyContext) { + p.removeImplicit(keyContext) + hash[key] = value + return + } if p.isImplicit(keyContext) { p.removeImplicit(keyContext) return @@ -449,40 +590,39 @@ func (p *parser) setValue(key string, value interface{}) { // key, which is *always* wrong. p.panicf("Key '%s' has already been defined.", keyContext) } + hash[key] = value } -// setType sets the type of a particular value at a given key. -// It should be called immediately AFTER setValue. +// setType sets the type of a particular value at a given key. It should be +// called immediately AFTER setValue. // // Note that if `key` is empty, then the type given will be applied to the // current context (which is either a table or an array of tables). func (p *parser) setType(key string, typ tomlType) { keyContext := make(Key, 0, len(p.context)+1) - for _, k := range p.context { - keyContext = append(keyContext, k) - } + keyContext = append(keyContext, p.context...) if len(key) > 0 { // allow type setting for hashes keyContext = append(keyContext, key) } + // Special case to make empty keys ("" = 1) work. + // Without it it will set "" rather than `""`. + // TODO: why is this needed? And why is this only needed here? + if len(keyContext) == 0 { + keyContext = Key{""} + } p.types[keyContext.String()] = typ } -// addImplicit sets the given Key as having been created implicitly. -func (p *parser) addImplicit(key Key) { - p.implicits[key.String()] = true -} - -// removeImplicit stops tagging the given key as having been implicitly -// created. -func (p *parser) removeImplicit(key Key) { - p.implicits[key.String()] = false -} - -// isImplicit returns true if the key group pointed to by the key was created -// implicitly. -func (p *parser) isImplicit(key Key) bool { - return p.implicits[key.String()] +// Implicit keys need to be created when tables are implied in "a.b.c.d = 1" and +// "[a.b.c]" (the "a", "b", and "c" hashes are never created explicitly). +func (p *parser) addImplicit(key Key) { p.implicits[key.String()] = struct{}{} } +func (p *parser) removeImplicit(key Key) { delete(p.implicits, key.String()) } +func (p *parser) isImplicit(key Key) bool { _, ok := p.implicits[key.String()]; return ok } +func (p *parser) isArray(key Key) bool { return p.types[key.String()] == tomlArray } +func (p *parser) addImplicitContext(key Key) { + p.addImplicit(key) + p.addContext(key, false) } // current returns the full key name of the current context. @@ -497,24 +637,58 @@ func (p *parser) current() string { } func stripFirstNewline(s string) string { - if len(s) == 0 || s[0] != '\n' { - return s + if len(s) > 0 && s[0] == '\n' { + return s[1:] } - return s[1:] + if len(s) > 1 && s[0] == '\r' && s[1] == '\n' { + return s[2:] + } + return s } -func stripEscapedWhitespace(s string) string { - esc := strings.Split(s, "\\\n") - if len(esc) > 1 { - for i := 1; i < len(esc); i++ { - esc[i] = strings.TrimLeftFunc(esc[i], unicode.IsSpace) +// Remove newlines inside triple-quoted strings if a line ends with "\". +func stripEscapedNewlines(s string) string { + split := strings.Split(s, "\n") + if len(split) < 1 { + return s + } + + escNL := false // Keep track of the last non-blank line was escaped. + for i, line := range split { + line = strings.TrimRight(line, " \t\r") + + if len(line) == 0 || line[len(line)-1] != '\\' { + split[i] = strings.TrimRight(split[i], "\r") + if !escNL && i != len(split)-1 { + split[i] += "\n" + } + continue + } + + escBS := true + for j := len(line) - 1; j >= 0 && line[j] == '\\'; j-- { + escBS = !escBS + } + if escNL { + line = strings.TrimLeft(line, " \t\r") + } + escNL = !escBS + + if escBS { + split[i] += "\n" + continue + } + + split[i] = line[:len(line)-1] // Remove \ + if len(split)-1 > i { + split[i+1] = strings.TrimLeft(split[i+1], " \t\r") } } - return strings.Join(esc, "") + return strings.Join(split, "") } -func (p *parser) replaceEscapes(str string) string { - var replaced []rune +func (p *parser) replaceEscapes(it item, str string) string { + replaced := make([]rune, 0, len(str)) s := []byte(str) r := 0 for r < len(s) { @@ -533,6 +707,9 @@ func (p *parser) replaceEscapes(str string) string { default: p.bug("Expected valid escape code after \\, but got %q.", s[r]) return "" + case ' ', '\t': + p.panicItemf(it, "invalid escape: '\\%c'", s[r]) + return "" case 'b': replaced = append(replaced, rune(0x0008)) r += 1 @@ -558,14 +735,14 @@ func (p *parser) replaceEscapes(str string) string { // At this point, we know we have a Unicode escape of the form // `uXXXX` at [r, r+5). (Because the lexer guarantees this // for us.) - escaped := p.asciiEscapeToUnicode(s[r+1 : r+5]) + escaped := p.asciiEscapeToUnicode(it, s[r+1:r+5]) replaced = append(replaced, escaped) r += 5 case 'U': // At this point, we know we have a Unicode escape of the form // `uXXXX` at [r, r+9). (Because the lexer guarantees this // for us.) - escaped := p.asciiEscapeToUnicode(s[r+1 : r+9]) + escaped := p.asciiEscapeToUnicode(it, s[r+1:r+9]) replaced = append(replaced, escaped) r += 9 } @@ -573,20 +750,14 @@ func (p *parser) replaceEscapes(str string) string { return string(replaced) } -func (p *parser) asciiEscapeToUnicode(bs []byte) rune { +func (p *parser) asciiEscapeToUnicode(it item, bs []byte) rune { s := string(bs) hex, err := strconv.ParseUint(strings.ToLower(s), 16, 32) if err != nil { - p.bug("Could not parse '%s' as a hexadecimal number, but the "+ - "lexer claims it's OK: %s", s, err) + p.bug("Could not parse '%s' as a hexadecimal number, but the lexer claims it's OK: %s", s, err) } if !utf8.ValidRune(rune(hex)) { - p.panicf("Escaped character '\\u%s' is not valid UTF-8.", s) + p.panicItemf(it, "Escaped character '\\u%s' is not valid UTF-8.", s) } return rune(hex) } - -func isStringType(ty itemType) bool { - return ty == itemString || ty == itemMultilineString || - ty == itemRawString || ty == itemRawMultilineString -} diff --git a/vendor/github.com/BurntSushi/toml/session.vim b/vendor/github.com/BurntSushi/toml/session.vim deleted file mode 100644 index 562164be..00000000 --- a/vendor/github.com/BurntSushi/toml/session.vim +++ /dev/null @@ -1 +0,0 @@ -au BufWritePost *.go silent!make tags > /dev/null 2>&1 diff --git a/vendor/github.com/BurntSushi/toml/type_fields.go b/vendor/github.com/BurntSushi/toml/type_fields.go index 608997c2..254ca82e 100644 --- a/vendor/github.com/BurntSushi/toml/type_fields.go +++ b/vendor/github.com/BurntSushi/toml/type_fields.go @@ -70,8 +70,8 @@ func typeFields(t reflect.Type) []field { next := []field{{typ: t}} // Count of queued names for current level and the next. - count := map[reflect.Type]int{} - nextCount := map[reflect.Type]int{} + var count map[reflect.Type]int + var nextCount map[reflect.Type]int // Types already visited at an earlier level. visited := map[reflect.Type]bool{} diff --git a/vendor/github.com/BurntSushi/toml/type_check.go b/vendor/github.com/BurntSushi/toml/type_toml.go similarity index 75% rename from vendor/github.com/BurntSushi/toml/type_check.go rename to vendor/github.com/BurntSushi/toml/type_toml.go index c73f8afc..4e90d773 100644 --- a/vendor/github.com/BurntSushi/toml/type_check.go +++ b/vendor/github.com/BurntSushi/toml/type_toml.go @@ -16,7 +16,7 @@ func typeEqual(t1, t2 tomlType) bool { return t1.typeString() == t2.typeString() } -func typeIsHash(t tomlType) bool { +func typeIsTable(t tomlType) bool { return typeEqual(t, tomlHash) || typeEqual(t, tomlArrayHash) } @@ -68,24 +68,3 @@ func (p *parser) typeOfPrimitive(lexItem item) tomlType { p.bug("Cannot infer primitive type of lex item '%s'.", lexItem) panic("unreachable") } - -// typeOfArray returns a tomlType for an array given a list of types of its -// values. -// -// In the current spec, if an array is homogeneous, then its type is always -// "Array". If the array is not homogeneous, an error is generated. -func (p *parser) typeOfArray(types []tomlType) tomlType { - // Empty arrays are cool. - if len(types) == 0 { - return tomlArray - } - - theType := types[0] - for _, t := range types[1:] { - if !typeEqual(theType, t) { - p.panicf("Array contains values of type '%s' and '%s', but "+ - "arrays must be homogeneous.", theType, t) - } - } - return tomlArray -} diff --git a/vendor/github.com/gardener/gardener/.github/ISSUE_TEMPLATE/doc.go b/vendor/github.com/gardener/gardener/.github/ISSUE_TEMPLATE/doc.go index 7d27222a..c10cc470 100644 --- a/vendor/github.com/gardener/gardener/.github/ISSUE_TEMPLATE/doc.go +++ b/vendor/github.com/gardener/gardener/.github/ISSUE_TEMPLATE/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/.github/doc.go b/vendor/github.com/gardener/gardener/.github/doc.go index 8b243834..dfdd3c2e 100644 --- a/vendor/github.com/gardener/gardener/.github/doc.go +++ b/vendor/github.com/gardener/gardener/.github/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/apis/config/doc.go b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/doc.go index e19531c5..5864ea9c 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/doc.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/apis/config/types.go b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/types.go index fc08347e..49477e8f 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/types.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/apis/config/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/zz_generated.deepcopy.go index 8a6490b9..b78308cd 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/apis/config/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/extensions/pkg/controller/cluster.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cluster.go index e4f1573d..221dfa05 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/cluster.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cluster.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/cmd/options.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/options.go index 5ecaf273..7e0f0612 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/options.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -230,11 +230,11 @@ func (m *ManagerOptions) AddFlags(fs *pflag.FlagSet) { // Complete implements Completer.Complete. func (m *ManagerOptions) Complete() error { - if !sets.New[string](logger.AllLogLevels...).Has(m.LogLevel) { + if !sets.New(logger.AllLogLevels...).Has(m.LogLevel) { return fmt.Errorf("invalid --%s: %s", LogLevelFlag, m.LogLevel) } - if !sets.New[string](logger.AllLogFormats...).Has(m.LogFormat) { + if !sets.New(logger.AllLogFormats...).Has(m.LogFormat) { return fmt.Errorf("invalid --%s: %s", LogFormatFlag, m.LogFormat) } diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/reconciler_options.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/reconciler_options.go index d210c66c..fa2dc9e9 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/reconciler_options.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/cmd/reconciler_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/cmd/options.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/cmd/options.go index d468a0c8..894e177e 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/cmd/options.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/cmd/options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/controller.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/controller.go index 9f8f5d08..1e7cc378 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/controller.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/controller.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/reconciler.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/reconciler.go index 38b98819..7437d32f 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/reconciler.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/heartbeat/reconciler.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/actuator.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/actuator.go index 4c542668..1b28a957 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/actuator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/actuator.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/controller.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/controller.go index b5d1aed8..bcb762ea 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/controller.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/controller.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator.go index 74d8a87c..d387af46 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_delete.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_delete.go index 21735a7f..a9bf897d 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_delete.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_delete.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_migrate.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_migrate.go index 3ed6a6ff..3583526d 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_migrate.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_migrate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_reconcile.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_reconcile.go index ccb13c58..63a81de2 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_reconcile.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_reconcile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_restore.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_restore.go index 1b1e53aa..c1ef5c2f 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_restore.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_restore.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_util.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_util.go index d83a5327..30d9b1ed 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_util.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator/actuator_util.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/add.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/add.go index 65247bb8..22d82e15 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/add.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/add.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/cmd/options.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/cmd/options.go index 8e2c9781..f3cd6a74 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/cmd/options.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/cmd/options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator/generator.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator/generator.go index 9bafc5eb..9b985023 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator/generator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator/generator.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator/test/template_generator.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator/test/template_generator.go index 07c8d2a7..9f6b6922 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator/test/template_generator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator/test/template_generator.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/template/template_generator.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/template/template_generator.go index 0bed93e2..ee1e2557 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/template/template_generator.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/template/template_generator.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/reconciler.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/reconciler.go index b426e7a8..e7740bc8 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/reconciler.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/reconciler.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/utils.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/utils.go index 8be2a585..1940f077 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/utils.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/shoot.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/shoot.go index 10ed769f..5d7f4ea1 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/shoot.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -35,7 +35,7 @@ func (f ChartRendererFactoryFunc) NewChartRendererForShoot(version string) (char // GetPodNetwork returns the pod network CIDR of the given Shoot. func GetPodNetwork(cluster *Cluster) string { - if cluster.Shoot.Spec.Networking.Pods != nil { + if cluster.Shoot.Spec.Networking != nil && cluster.Shoot.Spec.Networking.Pods != nil { return *cluster.Shoot.Spec.Networking.Pods } return "" @@ -43,7 +43,7 @@ func GetPodNetwork(cluster *Cluster) string { // GetServiceNetwork returns the service network CIDR of the given Shoot. func GetServiceNetwork(cluster *Cluster) string { - if cluster.Shoot.Spec.Networking.Services != nil { + if cluster.Shoot.Spec.Networking != nil && cluster.Shoot.Spec.Networking.Services != nil { return *cluster.Shoot.Spec.Networking.Services } return "" diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/controller/status.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/status.go index 1f4a3036..b0471499 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/status.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/status.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/controller/utils.go b/vendor/github.com/gardener/gardener/extensions/pkg/controller/utils.go index f3577598..dbd8996b 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/controller/utils.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/controller/utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/predicate/default.go b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/default.go index 0d1c786d..3c3a7ed9 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/predicate/default.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/default.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/predicate/preconditions.go b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/preconditions.go index 82dba461..40c2ddc4 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/predicate/preconditions.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/preconditions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/predicate/predicate.go b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/predicate.go index 0339bb98..8352190e 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/predicate/predicate.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/predicate/predicate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/util/clientset.go b/vendor/github.com/gardener/gardener/extensions/pkg/util/clientset.go index a3612e54..c353b37c 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/util/clientset.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/util/clientset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/util/errors.go b/vendor/github.com/gardener/gardener/extensions/pkg/util/errors.go index 85c08b03..e609bde9 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/util/errors.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/util/errors.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/util/serialization.go b/vendor/github.com/gardener/gardener/extensions/pkg/util/serialization.go index 12600a7b..04df8810 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/util/serialization.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/util/serialization.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/util/shoot.go b/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot.go index 5dda7b62..25b78748 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/extensions/pkg/util/shoot_clients.go b/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot_clients.go index 745cb821..202f032f 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot_clients.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/util/shoot_clients.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/hack/.ci/doc.go b/vendor/github.com/gardener/gardener/hack/.ci/doc.go index 64493305..fd4efa87 100755 --- a/vendor/github.com/gardener/gardener/hack/.ci/doc.go +++ b/vendor/github.com/gardener/gardener/hack/.ci/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/hack/.ci/prepare_release b/vendor/github.com/gardener/gardener/hack/.ci/prepare_release index de07eeb4..42eeb6f1 100755 --- a/vendor/github.com/gardener/gardener/hack/.ci/prepare_release +++ b/vendor/github.com/gardener/gardener/hack/.ci/prepare_release @@ -1,6 +1,6 @@ #!/usr/bin/env sh # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/.ci/set_dependency_version b/vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version index bcb15089..4a0bd1de 100755 --- a/vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version +++ b/vendor/github.com/gardener/gardener/hack/.ci/set_dependency_version @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt b/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt index 30aba94b..c9d7360e 100755 --- a/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt +++ b/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/hack/add-license-header.sh b/vendor/github.com/gardener/gardener/hack/add-license-header.sh new file mode 100755 index 00000000..5038b500 --- /dev/null +++ b/vendor/github.com/gardener/gardener/hack/add-license-header.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# 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. + +set -e + +echo "> Adding Apache License header to all go files where it is not present" + +addlicense \ + -c "SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file." \ + -y "$(date +"%Y")" \ + -l apache \ + -ignore ".idea/**" \ + -ignore ".vscode/**" \ + -ignore "dev/**" \ + -ignore "vendor/**" \ + -ignore "**/*.md" \ + -ignore "**/*.html" \ + -ignore "**/*.yaml" \ + -ignore "**/Dockerfile" \ + -ignore "hack/tools/gomegacheck/**" \ + -ignore "pkg/operation/botanist/**/*.sh" \ + . diff --git a/vendor/github.com/gardener/gardener/hack/check-apidiff.sh b/vendor/github.com/gardener/gardener/hack/check-apidiff.sh index 6bb00847..0c36988c 100755 --- a/vendor/github.com/gardener/gardener/hack/check-apidiff.sh +++ b/vendor/github.com/gardener/gardener/hack/check-apidiff.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,62 +20,71 @@ set -o pipefail tmpDir=$(mktemp -d) function cleanup_output { - rm -rf "$tmpDir" + rm -rf "$tmpDir" } trap cleanup_output EXIT retval=0 temp=0 -BASE_SHA=${PULL_BASE_SHA:-} # PULL_BASE_SHA env variable is set by default in prow presubmit jobs - -if [ ! -z ${BASE_SHA} ]; then - echo "invoking: go-apidiff ${PULL_BASE_SHA} --print-compatible --repo-path=." - echo "$(go-apidiff ${PULL_BASE_SHA} --print-compatible --repo-path=.)" > ${tmpDir}/output.txt -else - echo "invoking: go-apidiff master --print-compatible --repo-path=." - echo "$(go-apidiff master --print-compatible --repo-path=.)" > ${tmpDir}/output.txt -fi +# PULL_BASE_SHA env variable is set by default in prow presubmit jobs +echo "invoking: go-apidiff ${PULL_BASE_SHA:-master} --print-compatible --repo-path=." +go-apidiff ${PULL_BASE_SHA:-master} --print-compatible --repo-path=. >${tmpDir}/output.txt || true exported_pkg=( -"gardener/gardener/extensions/" -"gardener/gardener/pkg/api/" -"gardener/gardener/pkg/apis/" -"gardener/gardener/pkg/chartrenderer/" -"gardener/gardener/pkg/client/" -"gardener/gardener/pkg/controllerutils/" -"gardener/gardener/pkg/extensions/" -"gardener/gardener/pkg/gardenlet/apis/config/" -"gardener/gardener/pkg/logger/" -"gardener/gardener/pkg/mock/controller-runtime/client/" -"gardener/gardener/pkg/operation/botanist/component/extensions/operatingsystemconfig/" -"gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/" -"gardener/gardener/pkg/scheduler/" -"gardener/gardener/pkg/utils/" -"gardener/gardener/test/framework/" + "gardener/gardener/extensions/" + "gardener/gardener/pkg/api/" + "gardener/gardener/pkg/apis/" + "gardener/gardener/pkg/chartrenderer/" + "gardener/gardener/pkg/client/" + "gardener/gardener/pkg/controllerutils/" + "gardener/gardener/pkg/extensions/" + "gardener/gardener/pkg/gardenlet/apis/config/" + "gardener/gardener/pkg/logger/" + "gardener/gardener/pkg/mock/controller-runtime/client/" + "gardener/gardener/pkg/operation/botanist/component/extensions/operatingsystemconfig/" + "gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/" + "gardener/gardener/pkg/scheduler/" + "gardener/gardener/pkg/utils/" + "gardener/gardener/test/framework/" ) # check the changes only for the package that is in the exported_pkg list while IFS= read -r line; do - if [[ $line =~ ^"github.com/gardener/gardener" ]]; then - temp=0 - for x in ${exported_pkg[*]}; do - if [[ $line =~ $x ]]; then - retval=1 - temp=1 - echo "$line" >> ${tmpDir}/result.txt - fi - done - else - if [[ $temp -eq 1 ]]; then - echo "$line" >> ${tmpDir}/result.txt - fi + if [[ $line =~ ^"github.com/gardener/gardener" ]]; then + temp=0 + for x in ${exported_pkg[*]}; do + if [[ $line =~ $x ]]; then + retval=1 + temp=1 + echo "$line" >>${tmpDir}/result.txt + fi + done + else + if [[ $temp -eq 1 ]]; then + echo "$line" >>${tmpDir}/result.txt fi -done < "${tmpDir}/output.txt" + fi +done <"${tmpDir}/output.txt" if [[ $retval -eq 1 ]]; then - echo >&2 "FAIL: contains compatible/incompatible changes:" - cat ${tmpDir}/result.txt + echo >&2 "FAIL: contains compatible/incompatible changes:" + cat ${tmpDir}/result.txt + + cat < Checking if license header is present in all required files" + +missing_license_header_files="$(addlicense \ + -check \ + -ignore ".idea/**" \ + -ignore ".vscode/**" \ + -ignore "dev/**" \ + -ignore "vendor/**" \ + -ignore "**/*.md" \ + -ignore "**/*.html" \ + -ignore "**/*.yaml" \ + -ignore "**/Dockerfile" \ + -ignore "hack/tools/gomegacheck/**" \ + -ignore "pkg/operation/botanist/**/*.sh" \ + .)" || true + +if [[ "$missing_license_header_files" ]]; then + echo "Files with no license header detected:" + echo "$missing_license_header_files" + echo "Consider running \`make add-license-headers\` to automatically add all missing headers." + exit 1 +fi + +echo "All files have license headers, nothing to be done." diff --git a/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh b/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh index 00311ac6..5187183d 100755 --- a/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh +++ b/vendor/github.com/gardener/gardener/hack/check-skaffold-deps.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/check.sh b/vendor/github.com/gardener/gardener/hack/check.sh index a72d8cfe..2753e371 100755 --- a/vendor/github.com/gardener/gardener/hack/check.sh +++ b/vendor/github.com/gardener/gardener/hack/check.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/ci-common.sh b/vendor/github.com/gardener/gardener/hack/ci-common.sh index eb95747d..779b5396 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-common.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-common.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,7 @@ export_artifacts() { kubectl -n "$namespace" get pod "$node" --show-managed-fields -oyaml >"$node_dir/pod.yaml" || true # systemd units - for unit in cloud-config-downloader kubelet containerd; do + for unit in cloud-config-downloader kubelet containerd containerd-configuration-local-setup; do kubectl -n "$namespace" exec "$node" -- journalctl --no-pager -u $unit.service >"$node_dir/$unit.log" || true done kubectl -n "$namespace" exec "$node" -- journalctl --no-pager >"$node_dir/journal.log" || true diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-multi-zone.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-multi-zone.sh index 3d5d220b..46c19f30 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-multi-zone.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-multi-zone.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/ci-e2e-kind-ha-single-zone.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-single-zone.sh index 29fd4ed1..7b1a1509 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-single-zone.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-ha-single-zone.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/ci-e2e-kind-migration-ha-single-zone.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration-ha-single-zone.sh new file mode 100755 index 00000000..a8de9e4b --- /dev/null +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration-ha-single-zone.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# +# 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. + +set -o nounset +set -o pipefail +set -o errexit + +source $(dirname "${0}")/ci-common.sh + +clamp_mss_to_pmtu + +# test setup +make kind-ha-single-zone-up +make kind2-ha-single-zone-up + +# export all container logs and events after test execution +trap '{ + KUBECONFIG=$GARDENER_LOCAL_KUBECONFIG export_artifacts "gardener-local-ha-single-zone" + KUBECONFIG=$GARDENER_LOCAL2_KUBECONFIG; export_artifacts "gardener-local2-ha-single-zone" + make kind-ha-single-zone-down + make kind2-ha-single-zone-down +}' EXIT + +make gardener-ha-single-zone-up +make gardenlet-kind2-ha-single-zone-up +make test-e2e-local-migration-ha-single-zone +make gardener-ha-single-zone-down +make gardenlet-kind2-ha-single-zone-down diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh index 20518be1..930847c7 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/ci-e2e-kind-operator.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-operator.sh index 9f4e1222..04d9e302 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-operator.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-operator.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -28,7 +28,7 @@ make kind-operator-up # export all container logs and events after test execution trap " ( export KUBECONFIG=$PWD/example/gardener-local/kind/operator/kubeconfig; export_artifacts 'gardener-operator-local' ) - ( make kind-down ) + ( make kind-operator-down ) " EXIT make operator-up diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-upgrade.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-upgrade.sh index 844d3ebb..fbc74bea 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-upgrade.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-upgrade.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -170,6 +170,30 @@ function set_seed_name() { esac } +function run_pre_upgrade_test() { + local test_command + + if [[ "$SHOOT_FAILURE_TOLERANCE_TYPE" == "node" || "$SHOOT_FAILURE_TOLERANCE_TYPE" == "zone" ]]; then + test_command="test-pre-upgrade" + else + test_command="test-non-ha-pre-upgrade" + fi + + make "$test_command" GARDENER_PREVIOUS_RELEASE="$GARDENER_PREVIOUS_RELEASE" GARDENER_NEXT_RELEASE="$GARDENER_NEXT_RELEASE" +} + +function run_post_upgrade_test() { + local test_command + + if [[ "$SHOOT_FAILURE_TOLERANCE_TYPE" == "node" || "$SHOOT_FAILURE_TOLERANCE_TYPE" == "zone" ]]; then + test_command="test-post-upgrade" + else + test_command="test-non-ha-post-upgrade" + fi + + make "$test_command" GARDENER_PREVIOUS_RELEASE="$GARDENER_PREVIOUS_RELEASE" GARDENER_NEXT_RELEASE="$GARDENER_NEXT_RELEASE" +} + clamp_mss_to_pmtu set_gardener_upgrade_version_env_variables set_cluster_name @@ -193,7 +217,7 @@ echo "Installing gardener version '$GARDENER_PREVIOUS_RELEASE'" install_previous_release echo "Running gardener pre-upgrade tests" -make test-pre-upgrade GARDENER_PREVIOUS_RELEASE=$GARDENER_PREVIOUS_RELEASE GARDENER_NEXT_RELEASE=$GARDENER_NEXT_RELEASE +run_pre_upgrade_test echo "Upgrading gardener version '$GARDENER_PREVIOUS_RELEASE' to '$GARDENER_NEXT_RELEASE'" upgrade_to_next_release @@ -205,7 +229,13 @@ kubectl wait seed $SEED_NAME --timeout=5m --for=jsonpath="{.status.gardener.vers # In a multi-zone setup, 6 istio-ingressgateway pods will be running, and it will take 18 minutes to complete the rollout. TIMEOUT=1200 ./hack/usage/wait-for.sh seed "$SEED_NAME" GardenletReady Bootstrapped SeedSystemComponentsHealthy ExtensionsReady BackupBucketsReady +# The downtime validator considers downtime after 3 consecutive failures, taking a total of 30 seconds. +# Therefore, we're waiting for double that amount of time (60s) to detect if there is any downtime after the upgrade process. +# By waiting for double the amount of time (60 seconds) post-upgrade, the script accounts for the possibility of missing the last 30-second window, +# thus ensuring that any potential downtime after the post-upgrade is detected. +sleep 60 + echo "Running gardener post-upgrade tests" -make test-post-upgrade GARDENER_PREVIOUS_RELEASE=$GARDENER_PREVIOUS_RELEASE GARDENER_NEXT_RELEASE=$GARDENER_NEXT_RELEASE +run_post_upgrade_test gardener_down diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh index 468fa3a9..4a1b0d80 100755 --- a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/clean.sh b/vendor/github.com/gardener/gardener/hack/clean.sh index 1bc22978..f06555fd 100755 --- a/vendor/github.com/gardener/gardener/hack/clean.sh +++ b/vendor/github.com/gardener/gardener/hack/clean.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/compare-k8s-admission-plugins.sh b/vendor/github.com/gardener/gardener/hack/compare-k8s-admission-plugins.sh index 906faf75..204cdd56 100755 --- a/vendor/github.com/gardener/gardener/hack/compare-k8s-admission-plugins.sh +++ b/vendor/github.com/gardener/gardener/hack/compare-k8s-admission-plugins.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/compare-k8s-controllers.sh b/vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh index c29a9abd..3378aade 100755 --- a/vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh +++ b/vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/compare-k8s-feature-gates.sh b/vendor/github.com/gardener/gardener/hack/compare-k8s-feature-gates.sh index 6bd1c741..033266f5 100755 --- a/vendor/github.com/gardener/gardener/hack/compare-k8s-feature-gates.sh +++ b/vendor/github.com/gardener/gardener/hack/compare-k8s-feature-gates.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/download_gardener_source_code.sh b/vendor/github.com/gardener/gardener/hack/download_gardener_source_code.sh index 3ff77022..1cb0513b 100755 --- a/vendor/github.com/gardener/gardener/hack/download_gardener_source_code.sh +++ b/vendor/github.com/gardener/gardener/hack/download_gardener_source_code.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/format.sh b/vendor/github.com/gardener/gardener/hack/format.sh index 23587d2c..a8434fa2 100755 --- a/vendor/github.com/gardener/gardener/hack/format.sh +++ b/vendor/github.com/gardener/gardener/hack/format.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/gardener-down.sh b/vendor/github.com/gardener/gardener/hack/gardener-down.sh index f1438d32..4597ac1c 100755 --- a/vendor/github.com/gardener/gardener/hack/gardener-down.sh +++ b/vendor/github.com/gardener/gardener/hack/gardener-down.sh @@ -1,48 +1,46 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# 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. + set -o errexit set -o nounset set -o pipefail -SKAFFOLD_PROFILE="" - -parse_flags() { - while test $# -gt 0; do - case "$1" in - --skaffold-profile) - shift; SKAFFOLD_PROFILE="-p $1" - ;; - esac - - shift - done -} - -parse_flags "$@" - # delete stuff gradually in the right order, otherwise several dependencies will prevent the cleanup from succeeding kubectl delete seed \ local \ local2 \ local-ha-single-zone \ + local2-ha-single-zone \ local-ha-multi-zone \ --ignore-not-found \ --wait \ --timeout 5m -skaffold delete -m provider-local,gardenlet $SKAFFOLD_PROFILE - -kubectl delete validatingwebhookconfiguration/gardener-admission-controller --ignore-not-found kubectl annotate project local garden confirmation.gardener.cloud/deletion=true +skaffold delete -m provider-local,gardenlet -skaffold delete -m local-env $SKAFFOLD_PROFILE -skaffold delete -m etcd,controlplane $SKAFFOLD_PROFILE +kubectl delete validatingwebhookconfiguration/gardener-admission-controller --ignore-not-found +skaffold delete -m etcd,controlplane # workaround for https://github.com/gardener/gardener/issues/5164 kubectl delete ns \ seed-local \ seed-local2 \ seed-local-ha-single-zone \ + seed-local2-ha-single-zone \ seed-local-ha-multi-zone \ --ignore-not-found diff --git a/vendor/github.com/gardener/gardener/hack/gardener-extensions-down.sh b/vendor/github.com/gardener/gardener/hack/gardener-extensions-down.sh index 7e77e59d..22c0acc8 100755 --- a/vendor/github.com/gardener/gardener/hack/gardener-extensions-down.sh +++ b/vendor/github.com/gardener/gardener/hack/gardener-extensions-down.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# 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. + set -o errexit set -o nounset @@ -33,17 +47,22 @@ parse_flags "$@" # Delete stuff gradually in the right order, otherwise several dependencies will prevent the cleanup from succeeding. # Deleting seed will fail as long as there are shoots scheduled on it. This is desired to ensure that there are no orphan infrastructure elements left. echo "Deleting $SEED_NAME seed" -kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete seeds "$SEED_NAME" --wait --ignore-not-found +kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete seed "$SEED_NAME" --wait --ignore-not-found skaffold --kubeconfig="$PATH_SEED_KUBECONFIG" delete -m gardenlet -p extensions -kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete ns relay --ignore-not-found +kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete ns "relay-$SEED_NAME" --ignore-not-found kubectl --kubeconfig "$PATH_SEED_KUBECONFIG" delete ns garden registry relay --ignore-not-found kubectl --kubeconfig "$PATH_SEED_KUBECONFIG" delete -k "$SCRIPT_DIR"/../example/provider-extensions/kyverno --ignore-not-found kubectl --kubeconfig "$PATH_SEED_KUBECONFIG" delete mutatingwebhookconfigurations kyverno-policy-mutating-webhook-cfg kyverno-resource-mutating-webhook-cfg kyverno-verify-mutating-webhook-cfg --ignore-not-found kubectl --kubeconfig "$PATH_SEED_KUBECONFIG" delete validatingwebhookconfigurations kyverno-policy-validating-webhook-cfg kyverno-resource-validating-webhook-cfg --ignore-not-found -echo "Cleaning up kind cluster" -kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete validatingwebhookconfiguration/gardener-admission-controller --ignore-not-found -kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" annotate project local garden confirmation.gardener.cloud/deletion=true -skaffold --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete -m extensions-env -p extensions -skaffold --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete -m etcd,controlplane -p extensions -kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete ns garden gardener-system-seed-lease --ignore-not-found +remaining_seeds=$(kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" get seed --no-headers -o custom-columns=":metadata.name") +if [[ "$remaining_seeds" != "" ]]; then + echo "No clean up of kind cluster because of remaining seeds: ${remaining_seeds//$'\n'/,}" +else + echo "Cleaning up kind cluster" + kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete validatingwebhookconfiguration/gardener-admission-controller --ignore-not-found + kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" annotate project local garden confirmation.gardener.cloud/deletion=true + skaffold --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete -m extensions-env -p extensions + skaffold --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete -m etcd,controlplane -p extensions + kubectl --kubeconfig="$PATH_GARDEN_KUBECONFIG" delete ns garden gardener-system-seed-lease --ignore-not-found +fi diff --git a/vendor/github.com/gardener/gardener/hack/gardener-extensions-up.sh b/vendor/github.com/gardener/gardener/hack/gardener-extensions-up.sh index c9670e1d..aef0b352 100755 --- a/vendor/github.com/gardener/gardener/hack/gardener-extensions-up.sh +++ b/vendor/github.com/gardener/gardener/hack/gardener-extensions-up.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# 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. + set -o errexit set -o nounset @@ -35,7 +49,7 @@ echo "Configure seed cluster" echo "Start bootstrapping Gardener" SKAFFOLD_DEFAULT_REPO=localhost:5001 SKAFFOLD_PUSH=true skaffold run -m etcd,controlplane,extensions-env -p extensions echo "Registering controllers" -kubectl --kubeconfig "$PATH_GARDEN_KUBECONFIG" --server-side=true apply -f "$SCRIPT_DIR"/../example/provider-extensions/garden/controllerregistrations +kubectl --kubeconfig "$PATH_GARDEN_KUBECONFIG" --server-side=true --force-conflicts=true apply -f "$SCRIPT_DIR"/../example/provider-extensions/garden/controllerregistrations echo "Creating CloudProfiles" kubectl --kubeconfig "$PATH_GARDEN_KUBECONFIG" --server-side=true apply -f "$SCRIPT_DIR"/../example/provider-extensions/garden/cloudprofiles -"$SCRIPT_DIR"/../example/provider-extensions/seed/create-seed.sh "$PATH_GARDEN_KUBECONFIG" "$PATH_SEED_KUBECONFIG" +"$SCRIPT_DIR"/../example/provider-extensions/seed/create-seed.sh "$PATH_GARDEN_KUBECONFIG" "$PATH_SEED_KUBECONFIG" "$SEED_NAME" diff --git a/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh b/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh index 408ae792..82007583 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ set -o pipefail function usage { cat < [kinds-and-types ...] +generate-controller-registration [kinds-and-types ...] Name of the controller registration to generate. Location of the chart directory. @@ -65,7 +65,7 @@ trap cleanup EXIT ERR INT TERM export HELM_HOME="$temp_helm_home" [ "$(helm version --client --template "{{.Version}}" | head -c2 | tail -c1)" = "3" ] || helm init --client-only > /dev/null 2>&1 -helm package "$CHART_DIR" --version "$VERSION" --app-version "$VERSION" --destination "$temp_dir" > /dev/null +helm package "$CHART_DIR" --destination "$temp_dir" > /dev/null tar -xzm -C "$temp_extract_dir" -f "$temp_dir"/* chart="$(tar --sort=name -c --owner=root:0 --group=root:0 --mtime='UTC 2019-01-01' -C "$temp_extract_dir" "$(basename "$temp_extract_dir"/*)" | gzip -n | base64 | tr -d '\n')" @@ -81,8 +81,28 @@ type: helm providerConfig: chart: $chart values: +EOM + +if [ -n "$(yq '.image.repository' "$CHART_DIR"/values.yaml)" ] ; then + # image value specifies repository and tag separately, output the image stanza with the given version as tag value + cat <> "$DEST" image: tag: $VERSION +EOM +else + # image value specifies a fully-qualified image reference, output the default image plus the given version as tag + default_image="$(yq '.image' "$CHART_DIR"/values.yaml)" + if [ -n "$VERSION" ] ; then + # if a version is given, replace the default tag + default_image="${default_image%%:*}:$VERSION" + fi + + cat <> "$DEST" + image: $default_image +EOM +fi + +cat <> "$DEST" --- apiVersion: core.gardener.cloud/v1beta1 kind: ControllerRegistration diff --git a/vendor/github.com/gardener/gardener/hack/generate-crds.sh b/vendor/github.com/gardener/gardener/hack/generate-crds.sh index 25302712..acaf4568 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-crds.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-crds.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/generate-imagename-constants.sh b/vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh index bf68fcf7..dc705343 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/generate-monitoring-docs.sh b/vendor/github.com/gardener/gardener/hack/generate-monitoring-docs.sh index ae15f03d..4883f786 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-monitoring-docs.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-monitoring-docs.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/generate-parallel.sh b/vendor/github.com/gardener/gardener/hack/generate-parallel.sh index ceffb695..743530c8 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-parallel.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-parallel.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/generate.sh b/vendor/github.com/gardener/gardener/hack/generate.sh index 0db95507..de00baa4 100755 --- a/vendor/github.com/gardener/gardener/hack/generate.sh +++ b/vendor/github.com/gardener/gardener/hack/generate.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/get-build-ld-flags.sh b/vendor/github.com/gardener/gardener/hack/get-build-ld-flags.sh index f3349ae4..58138693 100755 --- a/vendor/github.com/gardener/gardener/hack/get-build-ld-flags.sh +++ b/vendor/github.com/gardener/gardener/hack/get-build-ld-flags.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/hook-me.sh b/vendor/github.com/gardener/gardener/hack/hook-me.sh index 326d4e1d..0bc38f0a 100755 --- a/vendor/github.com/gardener/gardener/hack/hook-me.sh +++ b/vendor/github.com/gardener/gardener/hack/hook-me.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/install.sh b/vendor/github.com/gardener/gardener/hack/install.sh index 1ca8b501..718d1bfd 100755 --- a/vendor/github.com/gardener/gardener/hack/install.sh +++ b/vendor/github.com/gardener/gardener/hack/install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/kind-down.sh b/vendor/github.com/gardener/gardener/hack/kind-down.sh index 464d3948..ba937a9f 100755 --- a/vendor/github.com/gardener/gardener/hack/kind-down.sh +++ b/vendor/github.com/gardener/gardener/hack/kind-down.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# 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. + set -o errexit set -o nounset diff --git a/vendor/github.com/gardener/gardener/hack/kind-extensions-up.sh b/vendor/github.com/gardener/gardener/hack/kind-extensions-up.sh index eb2dba90..094be499 100755 --- a/vendor/github.com/gardener/gardener/hack/kind-extensions-up.sh +++ b/vendor/github.com/gardener/gardener/hack/kind-extensions-up.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# 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. + set -o errexit set -o nounset diff --git a/vendor/github.com/gardener/gardener/hack/kind-up.sh b/vendor/github.com/gardener/gardener/hack/kind-up.sh index 1eaaef9f..140949f4 100755 --- a/vendor/github.com/gardener/gardener/hack/kind-up.sh +++ b/vendor/github.com/gardener/gardener/hack/kind-up.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# 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. + set -o errexit set -o nounset @@ -12,6 +26,10 @@ DEPLOY_REGISTRY=true MULTI_ZONAL=false CHART=$(dirname "$0")/../example/gardener-local/kind/cluster ADDITIONAL_ARGS="" +SUDO="" +if [[ "$(id -u)" != "0" ]]; then + SUDO="sudo " +fi parse_flags() { while test $# -gt 0; do @@ -43,6 +61,37 @@ parse_flags() { done } +# setup_kind_network is similar to kind's network creation logic, ref https://github.com/kubernetes-sigs/kind/blob/23d2ac0e9c41028fa252dd1340411d70d46e2fd4/pkg/cluster/internal/providers/docker/network.go#L50 +# In addition to kind's logic, we ensure stable CIDRs that we can rely on in our local setup manifests and code. +setup_kind_network() { + # check if network already exists + local existing_network_id + existing_network_id="$(docker network list --filter=name=^kind$ --format='{{.ID}}')" + + if [ -n "$existing_network_id" ] ; then + # ensure the network is configured correctly + local network network_options network_ipam expected_network_ipam + network="$(docker network inspect $existing_network_id | yq '.[]')" + network_options="$(echo "$network" | yq '.EnableIPv6 + "," + .Options["com.docker.network.bridge.enable_ip_masquerade"]')" + network_ipam="$(echo "$network" | yq '.IPAM.Config' -o=json -I=0)" + expected_network_ipam='[{"Subnet":"172.18.0.0/16","Gateway":"172.18.0.1"},{"Subnet":"fd00:10::/64","Gateway":"fd00:10::1"}]' + + if [ "$network_options" = 'true,true' ] && [ "$network_ipam" = "$expected_network_ipam" ] ; then + # kind network is already configured correctly, nothing to do + return 0 + else + echo "kind network is not configured correctly for local gardener setup, recreating network with correct configuration..." + docker network rm $existing_network_id + fi + fi + + # (re-)create kind network with expected settings + docker network create kind --driver=bridge \ + --subnet 172.18.0.0/16 --gateway 172.18.0.1 \ + --ipv6 --subnet fd00:10::/64 --gateway fd00:10::1 \ + --opt com.docker.network.bridge.enable_ip_masquerade=true +} + setup_loopback_device() { if ! command -v ip &>/dev/null; then if [[ "$OSTYPE" == "darwin"* ]]; then @@ -58,12 +107,12 @@ setup_loopback_device() { LOOPBACK_IP_ADDRESSES+=(::10 ::11 ::12) fi echo "Checking loopback device ${LOOPBACK_DEVICE}..." - for address in ${LOOPBACK_IP_ADDRESSES[@]}; do + for address in "${LOOPBACK_IP_ADDRESSES[@]}"; do if ip address show dev ${LOOPBACK_DEVICE} | grep -q $address; then echo "IP address $address already assigned to ${LOOPBACK_DEVICE}." else echo "Adding IP address $address to ${LOOPBACK_DEVICE}..." - sudo ip address add $address dev ${LOOPBACK_DEVICE} + ${SUDO}ip address add "$address" dev "${LOOPBACK_DEVICE}" fi done echo "Setting up loopback device ${LOOPBACK_DEVICE} completed." @@ -79,6 +128,8 @@ if [[ "$MULTI_ZONAL" == "true" ]]; then setup_loopback_device fi +setup_kind_network + if [[ "$IPFAMILY" == "ipv6" ]]; then ADDITIONAL_ARGS="$ADDITIONAL_ARGS --values $CHART/values-ipv6.yaml" fi @@ -89,8 +140,41 @@ fi kind create cluster \ --name "$CLUSTER_NAME" \ + --image "kindest/node:v1.26.3" \ --config <(helm template $CHART --values "$PATH_CLUSTER_VALUES" $ADDITIONAL_ARGS --set "environment=$ENVIRONMENT" --set "gardener.repositoryRoot"=$(dirname "$0")/..) +# adjust Kind's CRI default OCI runtime spec for new containers to include the cgroup namespace +# this is required for nesting kubelets on cgroupsv2, as the kindest-node entrypoint script assumes an existing cgroupns when the host kernel uses cgroupsv2 +# See containerd CRI: https://github.com/containerd/containerd/commit/687469d3cee18bf0e12defa5c6d0c7b9139a2dbd +if [ -f "/sys/fs/cgroup/cgroup.controllers" ]; then + echo "Host uses cgroupsv2" + cat << 'EOF' > adjust_cri_base.sh +#!/bin/bash +if [ -f /etc/containerd/cri-base.json ]; then + key=$(cat /etc/containerd/cri-base.json | jq '.linux.namespaces | map(select(.type == "cgroup"))[0]') + if [ "$key" = "null" ]; then + echo "Adjusting kind node /etc/containerd/cri-base.json to create containers with a cgroup namespace"; + cat /etc/containerd/cri-base.json | jq '.linux.namespaces += [{ + "type": "cgroup" + }]' > /etc/containerd/cri-base.tmp.json && cp /etc/containerd/cri-base.tmp.json /etc/containerd/cri-base.json + else + echo "cgroup namespace already configured for kind node"; + fi +else + echo "cannot configure cgroup namespace for kind containers: /etc/containerd/cri-base.json not found in kind container" +fi +EOF + + for node_name in $(kubectl get nodes -o name | cut -d/ -f2) + do + echo "Adjusting containerd config for kind node $node_name" + + # copy script to the kind's docker container and execute it + docker cp adjust_cri_base.sh "$node_name":/etc/containerd/adjust_cri_base.sh + docker exec "$node_name" bash -c "chmod +x /etc/containerd/adjust_cri_base.sh && /etc/containerd/adjust_cri_base.sh && systemctl restart containerd" + done +fi + # workaround https://kind.sigs.k8s.io/docs/user/known-issues/#pod-errors-due-to-too-many-open-files kubectl get nodes -o name |\ cut -d/ -f2 |\ @@ -100,6 +184,52 @@ if [[ "$KUBECONFIG" != "$PATH_KUBECONFIG" ]]; then cp "$KUBECONFIG" "$PATH_KUBECONFIG" fi +# Prepare garden.local.gardener.cloud hostname that can be used everywhere to talk to the garden cluster. +# Historically, we used the docker container name for this, but this differs between clusters with different names +# and doesn't work in IPv6 kind clusters: https://github.com/kubernetes-sigs/kind/issues/3114 +# Hence, we "manually" inject a host configuration into the cluster that always resolves to the kind container's IP, +# that serves our garden cluster API. +# This works in +# - the first and the second kind cluster +# - in IPv4 and IPv6 kind clusters +# - in ManagedSeeds + +garden_cluster="$CLUSTER_NAME" +if [[ "$CLUSTER_NAME" == "gardener-local2" ]] ; then + # garden-local2 is used as a second seed cluster, the first kind cluster runs the gardener control plane + garden_cluster="gardener-local" +fi + +if [[ "$CLUSTER_NAME" == "gardener-local2-ha-single-zone" ]]; then + garden_cluster="gardener-local-ha-single-zone" +fi + +ip_address_field="IPAddress" +if [[ "$IPFAMILY" == "ipv6" ]]; then + ip_address_field="GlobalIPv6Address" +fi + +garden_cluster_ip="$(docker inspect "$garden_cluster"-control-plane | yq ".[].NetworkSettings.Networks.kind.$ip_address_field")" + +# Inject garden.local.gardener.cloud into all nodes +kubectl get nodes -o name |\ + cut -d/ -f2 |\ + xargs -I {} docker exec {} sh -c "echo $garden_cluster_ip garden.local.gardener.cloud >> /etc/hosts" + +# Inject garden.local.gardener.cloud into coredns config (after ready plugin, before kubernetes plugin) +kubectl -n kube-system get configmap coredns -ojson | \ + yq '.data.Corefile' | \ + sed '0,/ready.*$/s//&'"\n\ + hosts {\n\ + $garden_cluster_ip garden.local.gardener.cloud\n\ + fallthrough\n\ + }\ +"'/' | \ + kubectl -n kube-system create configmap coredns --from-file Corefile=/dev/stdin --dry-run=client -oyaml | \ + kubectl -n kube-system patch configmap coredns --patch-file /dev/stdin + +kubectl -n kube-system rollout restart deployment coredns + if [[ "$DEPLOY_REGISTRY" == "true" ]]; then kubectl apply -k "$(dirname "$0")/../example/gardener-local/registry" --server-side kubectl wait --for=condition=available deployment -l app=registry -n registry --timeout 5m @@ -109,4 +239,25 @@ kubectl apply -k "$(dirname "$0")/../example/gardener-local/metrics-server" -- kubectl get nodes -l node-role.kubernetes.io/control-plane -o name |\ cut -d/ -f2 |\ - xargs -I {} kubectl taint node {} node-role.kubernetes.io/master:NoSchedule- node-role.kubernetes.io/control-plane:NoSchedule- || true + xargs -I {} kubectl taint node {} node-role.kubernetes.io/control-plane:NoSchedule- || true + +# Allow multiple shoot worker nodes with calico as shoot CNI: As we run overlay in overlay ip-in-ip needs to be allowed in the workload. +# Unfortunately, the felix configuration is created on the fly by calico. Hence, we need to poll until kubectl wait for new resources +# (https://github.com/kubernetes/kubernetes/issues/83242) is fixed. (10 minutes should be enough for the felix configuration to be created.) +echo "Waiting for FelixConfiguration to be created..." +felix_config_found=0 +max_retries=600 +for ((i = 0; i < max_retries; i++)); do + if kubectl get felixconfiguration default > /dev/null 2>&1; then + if kubectl patch felixconfiguration default --type merge --patch '{"spec":{"allowIPIPPacketsFromWorkloads":true}}' > /dev/null 2>&1; then + echo "FelixConfiguration 'default' successfully updated." + felix_config_found=1 + break + fi + fi + sleep 1 +done +if [ $felix_config_found -eq 0 ]; then + echo "Error: FelixConfiguration 'default' not found or patch failed after $max_retries attempts." + exit 1 +fi diff --git a/vendor/github.com/gardener/gardener/hack/prepare-envtest.sh b/vendor/github.com/gardener/gardener/hack/prepare-envtest.sh index 715046d6..f5caafd2 100755 --- a/vendor/github.com/gardener/gardener/hack/prepare-envtest.sh +++ b/vendor/github.com/gardener/gardener/hack/prepare-envtest.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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,8 @@ if ! command -v setup-envtest &> /dev/null ; then exit 1 fi -export KUBEBUILDER_ASSETS="$(setup-envtest use -p path ${ENVTEST_K8S_VERSION})" +# --use-env allows overwriting the envtest tools path via the KUBEBUILDER_ASSETS env var +export KUBEBUILDER_ASSETS="$(setup-envtest use --use-env -p path ${ENVTEST_K8S_VERSION})" echo "using envtest tools installed at '$KUBEBUILDER_ASSETS'" source "$(dirname "$0")/test-integration.env" diff --git a/vendor/github.com/gardener/gardener/hack/start-envtest.sh b/vendor/github.com/gardener/gardener/hack/start-envtest.sh index 9e357b7f..708270be 100755 --- a/vendor/github.com/gardener/gardener/hack/start-envtest.sh +++ b/vendor/github.com/gardener/gardener/hack/start-envtest.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/test-cover-clean.sh b/vendor/github.com/gardener/gardener/hack/test-cover-clean.sh index 4f53ddae..b521ab43 100755 --- a/vendor/github.com/gardener/gardener/hack/test-cover-clean.sh +++ b/vendor/github.com/gardener/gardener/hack/test-cover-clean.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/test-cover.sh b/vendor/github.com/gardener/gardener/hack/test-cover.sh index ff9e4512..bbe19d0e 100755 --- a/vendor/github.com/gardener/gardener/hack/test-cover.sh +++ b/vendor/github.com/gardener/gardener/hack/test-cover.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/test-e2e-local.sh b/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh index 7f999c80..7de94e6b 100755 --- a/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh +++ b/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file. +# +# 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. + set -o errexit set -o nounset @@ -39,11 +53,13 @@ if [[ "$1" != "operator" ]]; then e2e-update-node.local e2e-update-zone.local e2e-upgrade.local + e2e-upgrade-ha.local + e2e-upgrade-hib.local ) if [ -n "${CI:-}" -a -n "${ARTIFACTS:-}" ]; then for shoot in "${shoot_names[@]}" ; do - if [ "${SHOOT_FAILURE_TOLERANCE_TYPE:-}" = "zone" -a "$shoot" = "e2e-update-zone.local" ]; then + if [[ "${SHOOT_FAILURE_TOLERANCE_TYPE:-}" == "zone" && ("$shoot" == "e2e-upgrade-ha.local" || "$shoot" == "e2e-update-zone.local") ]]; then # Do not add the entry for the e2e-update-zone test as the target ip is dynamic. # The shoot cluster in e2e-update-zone is created as single-zone control plane and afterwards updated to a multi-zone control plane. # This means that the external loadbalancer IP will change from a zone-specific istio ingress gateway to the default istio ingress gateway. @@ -65,6 +81,16 @@ if [[ "$1" != "operator" ]]; then done done fi +# If we are running the gardener-operator tests then we have to make the virtual garden domains accessible. +else + if [ -n "${CI:-}" -a -n "${ARTIFACTS:-}" ]; then + printf "\n127.0.0.1 api.virtual-garden.local.gardener.cloud\n" >>/etc/hosts + else + if ! grep -q -x "127.0.0.1 api.virtual-garden.local.gardener.cloud" /etc/hosts; then + printf "Hostname for virtual garden cluster is missing in /etc/hosts. To access the virtual garden cluster and run e2e tests, you have to extend your /etc/hosts file.\nPlease refer to https://github.com/gardener/gardener/blob/master/docs/deployment/getting_started_locally.md#accessing-the-shoot-cluster\n\n" + exit 1 + fi + fi fi GO111MODULE=on ginkgo run --timeout=1h $ginkgo_flags --v --show-node-events "$@" diff --git a/vendor/github.com/gardener/gardener/hack/test-integration.sh b/vendor/github.com/gardener/gardener/hack/test-integration.sh index e164399d..5e3b7075 100755 --- a/vendor/github.com/gardener/gardener/hack/test-integration.sh +++ b/vendor/github.com/gardener/gardener/hack/test-integration.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/test-prometheus.sh b/vendor/github.com/gardener/gardener/hack/test-prometheus.sh index 2270fd84..9cdada92 100755 --- a/vendor/github.com/gardener/gardener/hack/test-prometheus.sh +++ b/vendor/github.com/gardener/gardener/hack/test-prometheus.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/test.sh b/vendor/github.com/gardener/gardener/hack/test.sh index 0e08481a..fd194f28 100755 --- a/vendor/github.com/gardener/gardener/hack/test.sh +++ b/vendor/github.com/gardener/gardener/hack/test.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/tools.go b/vendor/github.com/gardener/gardener/hack/tools.go index 79cf6e75..3da5b25a 100755 --- a/vendor/github.com/gardener/gardener/hack/tools.go +++ b/vendor/github.com/gardener/gardener/hack/tools.go @@ -1,7 +1,7 @@ //go:build tools // +build tools -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/hack/tools.mk b/vendor/github.com/gardener/gardener/hack/tools.mk index a5d4fee5..43cd339d 100755 --- a/vendor/github.com/gardener/gardener/hack/tools.mk +++ b/vendor/github.com/gardener/gardener/hack/tools.mk @@ -1,4 +1,4 @@ -# Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -37,6 +37,7 @@ GOIMPORTS := $(TOOLS_BIN_DIR)/goimports GOIMPORTSREVISER := $(TOOLS_BIN_DIR)/goimports-reviser GOLANGCI_LINT := $(TOOLS_BIN_DIR)/golangci-lint GOMEGACHECK := $(TOOLS_BIN_DIR)/gomegacheck.so # plugin binary +GO_ADD_LICENSE := $(TOOLS_BIN_DIR)/addlicense GO_APIDIFF := $(TOOLS_BIN_DIR)/go-apidiff GO_VULN_CHECK := $(TOOLS_BIN_DIR)/govulncheck GO_TO_PROTOBUF := $(TOOLS_BIN_DIR)/go-to-protobuf @@ -59,13 +60,14 @@ YQ := $(TOOLS_BIN_DIR)/yq DOCFORGE_VERSION ?= v0.33.0 GOLANGCI_LINT_VERSION ?= v1.51.2 GO_APIDIFF_VERSION ?= v0.5.0 +GO_ADD_LICENSE_VERSION ?= v1.1.1 GOIMPORTSREVISER_VERSION ?= v3.3.1 GO_VULN_CHECK_VERSION ?= latest -HELM_VERSION ?= v3.6.3 -KIND_VERSION ?= v0.14.0 -KUBECTL_VERSION ?= v1.24.3 -SKAFFOLD_VERSION ?= v1.39.1 -YQ_VERSION ?= v4.30.4 +HELM_VERSION ?= v3.11.2 +KIND_VERSION ?= v0.18.0 +KUBECTL_VERSION ?= v1.24.11 +SKAFFOLD_VERSION ?= v2.2.0 +YQ_VERSION ?= v4.31.2 export TOOLS_BIN_DIR := $(TOOLS_BIN_DIR) export PATH := $(abspath $(TOOLS_BIN_DIR)):$(PATH) @@ -130,6 +132,9 @@ $(GOMEGACHECK): go.mod CGO_ENABLED=1 go build -o $(GOMEGACHECK) -buildmode=plugin github.com/gardener/gardener/hack/tools/gomegacheck/plugin endif +$(GO_ADD_LICENSE): + GOBIN=$(abspath $(TOOLS_BIN_DIR)) go install github.com/google/addlicense@$(GO_ADD_LICENSE_VERSION) + $(GO_APIDIFF): $(call tool_version_file,$(GO_APIDIFF),$(GO_APIDIFF_VERSION)) GOBIN=$(abspath $(TOOLS_BIN_DIR)) go install github.com/joelanford/go-apidiff@$(GO_APIDIFF_VERSION) diff --git a/vendor/github.com/gardener/gardener/hack/update-codegen.sh b/vendor/github.com/gardener/gardener/hack/update-codegen.sh index 7aa7ddca..28a1dd8e 100755 --- a/vendor/github.com/gardener/gardener/hack/update-codegen.sh +++ b/vendor/github.com/gardener/gardener/hack/update-codegen.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/hack/update-protobuf.sh b/vendor/github.com/gardener/gardener/hack/update-protobuf.sh index 13244e40..356ac74e 100755 --- a/vendor/github.com/gardener/gardener/hack/update-protobuf.sh +++ b/vendor/github.com/gardener/gardener/hack/update-protobuf.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file # # 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/github.com/gardener/gardener/pkg/api/core/accessor.go b/vendor/github.com/gardener/gardener/pkg/api/core/accessor.go index ec4b6a25..0f677d07 100644 --- a/vendor/github.com/gardener/gardener/pkg/api/core/accessor.go +++ b/vendor/github.com/gardener/gardener/pkg/api/core/accessor.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/api/extensions/accessor.go b/vendor/github.com/gardener/gardener/pkg/api/extensions/accessor.go index 1b31a7b6..27d82e8c 100644 --- a/vendor/github.com/gardener/gardener/pkg/api/extensions/accessor.go +++ b/vendor/github.com/gardener/gardener/pkg/api/extensions/accessor.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/core/doc.go index effda8b5..e0c9ef0d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/field_constants.go b/vendor/github.com/gardener/gardener/pkg/apis/core/field_constants.go index 922e3d0b..748c42e7 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/field_constants.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/field_constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/install/install.go b/vendor/github.com/gardener/gardener/pkg/apis/core/install/install.go index 4fcd9a9a..90946dd6 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/install/install.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/install/install.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/register.go b/vendor/github.com/gardener/gardener/pkg/apis/core/register.go index 6204f4be..401de8b2 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types.go index fb8673dc..ac7692b8 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_backupbucket.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupbucket.go index f9e90354..8790f5ad 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupbucket.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupbucket.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_backupentry.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupentry.go index 715c68d6..2edf4766 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupentry.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_backupentry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_cloudprofile.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_cloudprofile.go index 98278d76..b77e77eb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_cloudprofile.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_cloudprofile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_common.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_common.go index 028ec48e..7b4e94a7 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_common.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_common.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_controllerdeployment.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerdeployment.go index cb1cade7..f2790757 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerdeployment.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerdeployment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_controllerinstallation.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerinstallation.go index f8b4ea09..cdb20302 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerinstallation.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerinstallation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_controllerregistration.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerregistration.go index 195c53fd..fb1e6185 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerregistration.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_controllerregistration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_exposureclass.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_exposureclass.go index 59549721..ddaf9c17 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_exposureclass.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_exposureclass.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_project.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_project.go index 25ec07dc..d5d23e38 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_project.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_quota.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_quota.go index c1767e80..493e3034 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_quota.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_quota.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_secretbinding.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_secretbinding.go index 1f711918..a0fca7e0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_secretbinding.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_secretbinding.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_seed.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_seed.go index d27a1c97..4018bdee 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_seed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_seed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -124,10 +124,6 @@ type SeedBackup struct { // SeedDNS contains the external domain and configuration for the DNS provider type SeedDNS struct { - // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used - // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use spec.ingress.domain instead. - IngressDomain *string // Provider configures a DNSProvider Provider *SeedDNSProvider } @@ -138,12 +134,6 @@ type SeedDNSProvider struct { Type string // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. SecretRef corev1.SecretReference - // Domains contains information about which domains shall be included/excluded for this provider. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. - Domains *DNSIncludeExclude - // Zones contains information about which hosted zones shall be included/excluded for this provider. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. - Zones *DNSIncludeExclude } // Ingress configures the Ingress specific settings of the Seed cluster @@ -213,6 +203,10 @@ type SeedSettings struct { // VerticalPodAutoscaler controls certain settings for the vertical pod autoscaler components deployed in the seed. VerticalPodAutoscaler *SeedSettingVerticalPodAutoscaler // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. + // + // Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). + // The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. + // Set this field to false to be prepared for the above-mentioned locking. OwnerChecks *SeedSettingOwnerChecks // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. DependencyWatchdog *SeedSettingDependencyWatchdog @@ -272,6 +266,10 @@ type SeedSettingVerticalPodAutoscaler struct { } // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. +// +// Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). +// The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. +// Set this field to false to be prepared for the above-mentioned locking. type SeedSettingOwnerChecks struct { // Enabled controls whether owner checks are enabled for shoots scheduled on this seed. It // is enabled by default because it is a prerequisite for control plane migration. @@ -281,12 +279,19 @@ type SeedSettingOwnerChecks struct { // SeedSettingDependencyWatchdog controls the dependency-watchdog settings for the seed. type SeedSettingDependencyWatchdog struct { // Endpoint controls the endpoint settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Weeder` instead. Endpoint *SeedSettingDependencyWatchdogEndpoint // Probe controls the probe settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Prober` instead. Probe *SeedSettingDependencyWatchdogProbe + // Weeder controls the weeder settings for the dependency-watchdog for the seed. + Weeder *SeedSettingDependencyWatchdogWeeder + // Prober controls the prober settings for the dependency-watchdog for the seed. + Prober *SeedSettingDependencyWatchdogProber } // SeedSettingDependencyWatchdogEndpoint controls the endpoint settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogWeeder` instead. type SeedSettingDependencyWatchdogEndpoint struct { // Enabled controls whether the endpoint controller of the dependency-watchdog should be enabled. This controller // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in @@ -295,9 +300,25 @@ type SeedSettingDependencyWatchdogEndpoint struct { } // SeedSettingDependencyWatchdogProbe controls the probe settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogProber` instead. type SeedSettingDependencyWatchdogProbe struct { // Enabled controls whether the probe controller of the dependency-watchdog should be enabled. This controller - // scales down the kube-controller-manager of shoot clusters in case their respective kube-apiserver is not + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not + // reachable via its external ingress in order to avoid melt-down situations. + Enabled bool +} + +// SeedSettingDependencyWatchdogWeeder controls the weeder settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogWeeder struct { + // Enabled controls whether the weeder of the dependency-watchdog should be enabled. This controller + // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in + // CrashLoopBackoff status and restarting them once their dependants become ready and available again. + Enabled bool +} + +// SeedSettingDependencyWatchdogProber controls the prober settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogProber struct { + // Enabled controls whether the prober of the dependency-watchdog should be enabled. // reachable via its external ingress in order to avoid melt-down situations. Enabled bool } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go index 9bf0ed81..4cb2dde0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -75,7 +75,7 @@ type ShootSpec struct { // Kubernetes contains the version and configuration settings of the control plane components. Kubernetes Kubernetes // Networking contains information about cluster networking such as CNI Plugin type, CIDRs, ...etc. - Networking Networking + Networking *Networking // Maintenance contains information about the time window for maintenance operations and which // operations should be performed. Maintenance *Maintenance @@ -90,7 +90,7 @@ type ShootSpec struct { // SecretBindingName is the name of the a SecretBinding that has a reference to the provider secret. // The credentials inside the provider secret will be used to create the shoot in the respective account. // This field is immutable. - SecretBindingName string + SecretBindingName *string // SeedName is the name of the seed cluster that runs the control plane of the Shoot. // This field is immutable when the SeedChange feature gate is disabled. SeedName *string @@ -410,7 +410,7 @@ type HibernationSchedule struct { Start *string // End is a Cron spec at which time a Shoot will be woken up. End *string - // Location is the time location in which both start and and shall be evaluated. + // Location is the time location in which both start and shall be evaluated. Location *string } @@ -664,6 +664,8 @@ type AdmissionPlugin struct { Disabled *bool // Config is the configuration of the plugin. Config *runtime.RawExtension + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this admission plugin. + KubeconfigSecretName *string } // WatchCacheSizes contains configuration of the API server's watch cache sizes. @@ -924,7 +926,7 @@ type KubeletConfigReserved struct { // Networking defines networking parameters for the shoot cluster. type Networking struct { // Type identifies the type of the networking plugin. This field is immutable. - Type string + Type *string // ProviderConfig is the configuration passed to network resource. ProviderConfig *runtime.RawExtension // Pods is the CIDR of the pod network. This field is immutable. @@ -972,7 +974,7 @@ type MaintenanceAutoUpdate struct { // KubernetesVersion indicates whether the patch Kubernetes version may be automatically updated (default: true). KubernetesVersion bool // MachineImageVersion indicates whether the machine image version may be automatically updated (default: true). - MachineImageVersion bool + MachineImageVersion *bool } // MaintenanceTimeWindow contains information about the time window for maintenance operations. @@ -1056,6 +1058,8 @@ type Worker struct { Zones []string // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. MachineControllerManagerSettings *MachineControllerManagerSettings + // Sysctls is a map of kernel settings to apply on all VMs in this worker pool. + Sysctls map[string]string } // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/types_shootstate.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_shootstate.go index 76093028..c1db8a0c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_shootstate.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_shootstate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/types_utils.go b/vendor/github.com/gardener/gardener/pkg/apis/core/types_utils.go index 04597335..78607d7d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/types_utils.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/types_utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/conversions.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/conversions.go index 976f4da6..68274c6f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/conversions.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/conversions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go index 40aeee85..6cd9466b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -86,21 +86,10 @@ func SetDefaults_SeedNetworks(obj *SeedNetworks) { // SetDefaults_SeedSettingDependencyWatchdog sets defaults for SeedSettingDependencyWatchdog objects. func SetDefaults_SeedSettingDependencyWatchdog(obj *SeedSettingDependencyWatchdog) { - if obj.Endpoint == nil { - obj.Endpoint = &SeedSettingDependencyWatchdogEndpoint{Enabled: true} - } - if obj.Probe == nil { - obj.Probe = &SeedSettingDependencyWatchdogProbe{Enabled: true} - } } // SetDefaults_Shoot sets default values for Shoot objects. func SetDefaults_Shoot(obj *Shoot) { - // Errors are ignored here because we cannot do anything meaningful with them - variables will default to `false`. - k8sLess125, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.25") - if obj.Spec.Kubernetes.AllowPrivilegedContainers == nil && k8sLess125 && !isPSPDisabled(obj) { - obj.Spec.Kubernetes.AllowPrivilegedContainers = pointer.Bool(true) - } if obj.Spec.Kubernetes.KubeAPIServer == nil { obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{} } @@ -135,31 +124,6 @@ func SetDefaults_Shoot(obj *Shoot) { if obj.Spec.Kubernetes.KubeControllerManager == nil { obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{} } - if obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize == nil { - obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize = calculateDefaultNodeCIDRMaskSize(&obj.Spec) - } - if obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod == nil { - obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 2 * time.Minute} - } - - if obj.Spec.Kubernetes.KubeScheduler == nil { - obj.Spec.Kubernetes.KubeScheduler = &KubeSchedulerConfig{} - } - if obj.Spec.Kubernetes.KubeScheduler.Profile == nil { - defaultProfile := SchedulingProfileBalanced - obj.Spec.Kubernetes.KubeScheduler.Profile = &defaultProfile - } - - if obj.Spec.Kubernetes.KubeProxy == nil { - obj.Spec.Kubernetes.KubeProxy = &KubeProxyConfig{} - } - if obj.Spec.Kubernetes.KubeProxy.Mode == nil { - defaultProxyMode := ProxyModeIPTables - obj.Spec.Kubernetes.KubeProxy.Mode = &defaultProxyMode - } - if obj.Spec.Kubernetes.KubeProxy.Enabled == nil { - obj.Spec.Kubernetes.KubeProxy.Enabled = pointer.Bool(true) - } if obj.Spec.Kubernetes.EnableStaticTokenKubeconfig == nil { // Error is ignored here because we cannot do anything meaningful with it - variable will default to "false". @@ -170,17 +134,6 @@ func SetDefaults_Shoot(obj *Shoot) { } } - if obj.Spec.Addons == nil { - obj.Spec.Addons = &Addons{} - } - if obj.Spec.Addons.KubernetesDashboard == nil { - obj.Spec.Addons.KubernetesDashboard = &KubernetesDashboard{} - } - if obj.Spec.Addons.KubernetesDashboard.AuthenticationMode == nil { - defaultAuthMode := KubernetesDashboardAuthModeToken - obj.Spec.Addons.KubernetesDashboard.AuthenticationMode = &defaultAuthMode - } - if obj.Spec.Purpose == nil { p := ShootPurposeEvaluation obj.Spec.Purpose = &p @@ -193,45 +146,17 @@ func SetDefaults_Shoot(obj *Shoot) { addTolerations(&obj.Spec.Tolerations, Toleration{Key: SeedTaintProtected}) } - if obj.Spec.Kubernetes.Kubelet == nil { - obj.Spec.Kubernetes.Kubelet = &KubeletConfig{} - } - if obj.Spec.Kubernetes.Kubelet.FailSwapOn == nil { - obj.Spec.Kubernetes.Kubelet.FailSwapOn = pointer.Bool(true) - } - if obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent == nil { - obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent = pointer.Int32(50) - } - if obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent == nil { - obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent = pointer.Int32(40) - } - if obj.Spec.Kubernetes.Kubelet.SerializeImagePulls == nil { - obj.Spec.Kubernetes.Kubelet.SerializeImagePulls = pointer.Bool(true) + if obj.Spec.Maintenance == nil { + obj.Spec.Maintenance = &Maintenance{} } - - var ( - kubeReservedMemory = resource.MustParse("1Gi") - kubeReservedCPU = resource.MustParse("80m") - kubeReservedPID = resource.MustParse("20k") - ) - - if obj.Spec.Kubernetes.Kubelet.KubeReserved == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved = &KubeletConfigReserved{Memory: &kubeReservedMemory, CPU: &kubeReservedCPU} - obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID - } else { - if obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory = &kubeReservedMemory - } - if obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU = &kubeReservedCPU - } - if obj.Spec.Kubernetes.Kubelet.KubeReserved.PID == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + if obj.Spec.Maintenance.AutoUpdate == nil { + obj.Spec.Maintenance.AutoUpdate = &MaintenanceAutoUpdate{ + KubernetesVersion: true, } } - if obj.Spec.Maintenance == nil { - obj.Spec.Maintenance = &Maintenance{} + if obj.Spec.Networking == nil { + obj.Spec.Networking = &Networking{} } for i, worker := range obj.Spec.Provider.Workers { @@ -255,24 +180,111 @@ func SetDefaults_Shoot(obj *Shoot) { } } - if obj.Spec.Provider.WorkersSettings == nil { - obj.Spec.Provider.WorkersSettings = &WorkersSettings{} - } - if obj.Spec.Provider.WorkersSettings.SSHAccess == nil { - obj.Spec.Provider.WorkersSettings.SSHAccess = &SSHAccess{Enabled: true} - } + // these fields are relevant only for shoot with workers + if len(obj.Spec.Provider.Workers) > 0 { + // Errors are ignored here because we cannot do anything meaningful with them - variables will default to `false`. + k8sLess125, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.25") + if obj.Spec.Kubernetes.AllowPrivilegedContainers == nil && k8sLess125 && !isPSPDisabled(obj) { + obj.Spec.Kubernetes.AllowPrivilegedContainers = pointer.Bool(true) + } - if obj.Spec.SystemComponents == nil { - obj.Spec.SystemComponents = &SystemComponents{} - } - if obj.Spec.SystemComponents.CoreDNS == nil { - obj.Spec.SystemComponents.CoreDNS = &CoreDNS{} - } - if obj.Spec.SystemComponents.CoreDNS.Autoscaling == nil { - obj.Spec.SystemComponents.CoreDNS.Autoscaling = &CoreDNSAutoscaling{} - } - if obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeHorizontal && obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeClusterProportional { - obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode = CoreDNSAutoscalingModeHorizontal + if obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize == nil { + obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize = calculateDefaultNodeCIDRMaskSize(&obj.Spec) + } + if obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod == nil { + obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 2 * time.Minute} + } + + if obj.Spec.Kubernetes.KubeScheduler == nil { + obj.Spec.Kubernetes.KubeScheduler = &KubeSchedulerConfig{} + } + if obj.Spec.Kubernetes.KubeScheduler.Profile == nil { + defaultProfile := SchedulingProfileBalanced + obj.Spec.Kubernetes.KubeScheduler.Profile = &defaultProfile + } + + if obj.Spec.Kubernetes.KubeProxy == nil { + obj.Spec.Kubernetes.KubeProxy = &KubeProxyConfig{} + } + if obj.Spec.Kubernetes.KubeProxy.Mode == nil { + defaultProxyMode := ProxyModeIPTables + obj.Spec.Kubernetes.KubeProxy.Mode = &defaultProxyMode + } + if obj.Spec.Kubernetes.KubeProxy.Enabled == nil { + obj.Spec.Kubernetes.KubeProxy.Enabled = pointer.Bool(true) + } + + if obj.Spec.Addons == nil { + obj.Spec.Addons = &Addons{} + } + if obj.Spec.Addons.KubernetesDashboard == nil { + obj.Spec.Addons.KubernetesDashboard = &KubernetesDashboard{} + } + if obj.Spec.Addons.KubernetesDashboard.AuthenticationMode == nil { + defaultAuthMode := KubernetesDashboardAuthModeToken + obj.Spec.Addons.KubernetesDashboard.AuthenticationMode = &defaultAuthMode + } + + if obj.Spec.Kubernetes.Kubelet == nil { + obj.Spec.Kubernetes.Kubelet = &KubeletConfig{} + } + if obj.Spec.Kubernetes.Kubelet.FailSwapOn == nil { + obj.Spec.Kubernetes.Kubelet.FailSwapOn = pointer.Bool(true) + } + if obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent == nil { + obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent = pointer.Int32(50) + } + if obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent == nil { + obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent = pointer.Int32(40) + } + if obj.Spec.Kubernetes.Kubelet.SerializeImagePulls == nil { + obj.Spec.Kubernetes.Kubelet.SerializeImagePulls = pointer.Bool(true) + } + + var ( + kubeReservedMemory = resource.MustParse("1Gi") + kubeReservedCPU = resource.MustParse("80m") + kubeReservedPID = resource.MustParse("20k") + ) + + if obj.Spec.Kubernetes.Kubelet.KubeReserved == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved = &KubeletConfigReserved{Memory: &kubeReservedMemory, CPU: &kubeReservedCPU} + obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + } else { + if obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory = &kubeReservedMemory + } + if obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU = &kubeReservedCPU + } + if obj.Spec.Kubernetes.Kubelet.KubeReserved.PID == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + } + } + + if obj.Spec.Maintenance.AutoUpdate.MachineImageVersion == nil { + obj.Spec.Maintenance.AutoUpdate.MachineImageVersion = pointer.Bool(true) + } + + if obj.Spec.Provider.WorkersSettings == nil { + obj.Spec.Provider.WorkersSettings = &WorkersSettings{} + } + if obj.Spec.Provider.WorkersSettings.SSHAccess == nil { + obj.Spec.Provider.WorkersSettings.SSHAccess = &SSHAccess{Enabled: true} + } + + if obj.Spec.SystemComponents == nil { + obj.Spec.SystemComponents = &SystemComponents{} + } + if obj.Spec.SystemComponents.CoreDNS == nil { + obj.Spec.SystemComponents.CoreDNS = &CoreDNS{} + } + if obj.Spec.SystemComponents.CoreDNS.Autoscaling == nil { + obj.Spec.SystemComponents.CoreDNS.Autoscaling = &CoreDNSAutoscaling{} + } + if obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeHorizontal && obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeClusterProportional { + obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode = CoreDNSAutoscalingModeHorizontal + } } } @@ -285,13 +297,6 @@ func SetDefaults_Networking(obj *Networking) { // SetDefaults_Maintenance sets default values for Maintenance objects. func SetDefaults_Maintenance(obj *Maintenance) { - if obj.AutoUpdate == nil { - obj.AutoUpdate = &MaintenanceAutoUpdate{ - KubernetesVersion: true, - MachineImageVersion: true, - } - } - if obj.TimeWindow == nil { mt := timewindow.RandomMaintenanceTimeWindow() obj.TimeWindow = &MaintenanceTimeWindow{ diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_cloudprofile.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_cloudprofile.go index f926ae47..d7f8ae95 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_cloudprofile.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_cloudprofile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_controllerregistration.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_controllerregistration.go index 7b9384ed..ad1cee99 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_controllerregistration.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_controllerregistration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_project.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_project.go index 3777f75d..6f59020a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_project.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/defaults_project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/doc.go index ac2cfd19..a67cd6d8 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go index 9093e9ea..32069a89 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -3499,10 +3499,66 @@ func (m *SeedSettingDependencyWatchdogProbe) XXX_DiscardUnknown() { var xxx_messageInfo_SeedSettingDependencyWatchdogProbe proto.InternalMessageInfo +func (m *SeedSettingDependencyWatchdogProber) Reset() { *m = SeedSettingDependencyWatchdogProber{} } +func (*SeedSettingDependencyWatchdogProber) ProtoMessage() {} +func (*SeedSettingDependencyWatchdogProber) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{123} +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingDependencyWatchdogProber.Merge(m, src) +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingDependencyWatchdogProber) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingDependencyWatchdogProber.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingDependencyWatchdogProber proto.InternalMessageInfo + +func (m *SeedSettingDependencyWatchdogWeeder) Reset() { *m = SeedSettingDependencyWatchdogWeeder{} } +func (*SeedSettingDependencyWatchdogWeeder) ProtoMessage() {} +func (*SeedSettingDependencyWatchdogWeeder) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{124} +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingDependencyWatchdogWeeder.Merge(m, src) +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingDependencyWatchdogWeeder.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingDependencyWatchdogWeeder proto.InternalMessageInfo + func (m *SeedSettingExcessCapacityReservation) Reset() { *m = SeedSettingExcessCapacityReservation{} } func (*SeedSettingExcessCapacityReservation) ProtoMessage() {} func (*SeedSettingExcessCapacityReservation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{123} + return fileDescriptor_f1caaec5647a9dbf, []int{125} } func (m *SeedSettingExcessCapacityReservation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3530,7 +3586,7 @@ var xxx_messageInfo_SeedSettingExcessCapacityReservation proto.InternalMessageIn func (m *SeedSettingLoadBalancerServices) Reset() { *m = SeedSettingLoadBalancerServices{} } func (*SeedSettingLoadBalancerServices) ProtoMessage() {} func (*SeedSettingLoadBalancerServices) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{124} + return fileDescriptor_f1caaec5647a9dbf, []int{126} } func (m *SeedSettingLoadBalancerServices) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3558,7 +3614,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServices proto.InternalMessageInfo func (m *SeedSettingLoadBalancerServicesZones) Reset() { *m = SeedSettingLoadBalancerServicesZones{} } func (*SeedSettingLoadBalancerServicesZones) ProtoMessage() {} func (*SeedSettingLoadBalancerServicesZones) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{125} + return fileDescriptor_f1caaec5647a9dbf, []int{127} } func (m *SeedSettingLoadBalancerServicesZones) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3586,7 +3642,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServicesZones proto.InternalMessageIn func (m *SeedSettingOwnerChecks) Reset() { *m = SeedSettingOwnerChecks{} } func (*SeedSettingOwnerChecks) ProtoMessage() {} func (*SeedSettingOwnerChecks) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{126} + return fileDescriptor_f1caaec5647a9dbf, []int{128} } func (m *SeedSettingOwnerChecks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3614,7 +3670,7 @@ var xxx_messageInfo_SeedSettingOwnerChecks proto.InternalMessageInfo func (m *SeedSettingScheduling) Reset() { *m = SeedSettingScheduling{} } func (*SeedSettingScheduling) ProtoMessage() {} func (*SeedSettingScheduling) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{127} + return fileDescriptor_f1caaec5647a9dbf, []int{129} } func (m *SeedSettingScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3642,7 +3698,7 @@ var xxx_messageInfo_SeedSettingScheduling proto.InternalMessageInfo func (m *SeedSettingTopologyAwareRouting) Reset() { *m = SeedSettingTopologyAwareRouting{} } func (*SeedSettingTopologyAwareRouting) ProtoMessage() {} func (*SeedSettingTopologyAwareRouting) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{128} + return fileDescriptor_f1caaec5647a9dbf, []int{130} } func (m *SeedSettingTopologyAwareRouting) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3670,7 +3726,7 @@ var xxx_messageInfo_SeedSettingTopologyAwareRouting proto.InternalMessageInfo func (m *SeedSettingVerticalPodAutoscaler) Reset() { *m = SeedSettingVerticalPodAutoscaler{} } func (*SeedSettingVerticalPodAutoscaler) ProtoMessage() {} func (*SeedSettingVerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{129} + return fileDescriptor_f1caaec5647a9dbf, []int{131} } func (m *SeedSettingVerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3698,7 +3754,7 @@ var xxx_messageInfo_SeedSettingVerticalPodAutoscaler proto.InternalMessageInfo func (m *SeedSettings) Reset() { *m = SeedSettings{} } func (*SeedSettings) ProtoMessage() {} func (*SeedSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{130} + return fileDescriptor_f1caaec5647a9dbf, []int{132} } func (m *SeedSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3726,7 +3782,7 @@ var xxx_messageInfo_SeedSettings proto.InternalMessageInfo func (m *SeedSpec) Reset() { *m = SeedSpec{} } func (*SeedSpec) ProtoMessage() {} func (*SeedSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{131} + return fileDescriptor_f1caaec5647a9dbf, []int{133} } func (m *SeedSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3754,7 +3810,7 @@ var xxx_messageInfo_SeedSpec proto.InternalMessageInfo func (m *SeedStatus) Reset() { *m = SeedStatus{} } func (*SeedStatus) ProtoMessage() {} func (*SeedStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{132} + return fileDescriptor_f1caaec5647a9dbf, []int{134} } func (m *SeedStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3782,7 +3838,7 @@ var xxx_messageInfo_SeedStatus proto.InternalMessageInfo func (m *SeedTaint) Reset() { *m = SeedTaint{} } func (*SeedTaint) ProtoMessage() {} func (*SeedTaint) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{133} + return fileDescriptor_f1caaec5647a9dbf, []int{135} } func (m *SeedTaint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3810,7 +3866,7 @@ var xxx_messageInfo_SeedTaint proto.InternalMessageInfo func (m *SeedVolume) Reset() { *m = SeedVolume{} } func (*SeedVolume) ProtoMessage() {} func (*SeedVolume) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{134} + return fileDescriptor_f1caaec5647a9dbf, []int{136} } func (m *SeedVolume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3838,7 +3894,7 @@ var xxx_messageInfo_SeedVolume proto.InternalMessageInfo func (m *SeedVolumeProvider) Reset() { *m = SeedVolumeProvider{} } func (*SeedVolumeProvider) ProtoMessage() {} func (*SeedVolumeProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{135} + return fileDescriptor_f1caaec5647a9dbf, []int{137} } func (m *SeedVolumeProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3866,7 +3922,7 @@ var xxx_messageInfo_SeedVolumeProvider proto.InternalMessageInfo func (m *ServiceAccountConfig) Reset() { *m = ServiceAccountConfig{} } func (*ServiceAccountConfig) ProtoMessage() {} func (*ServiceAccountConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{136} + return fileDescriptor_f1caaec5647a9dbf, []int{138} } func (m *ServiceAccountConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3894,7 +3950,7 @@ var xxx_messageInfo_ServiceAccountConfig proto.InternalMessageInfo func (m *ServiceAccountKeyRotation) Reset() { *m = ServiceAccountKeyRotation{} } func (*ServiceAccountKeyRotation) ProtoMessage() {} func (*ServiceAccountKeyRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{137} + return fileDescriptor_f1caaec5647a9dbf, []int{139} } func (m *ServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3922,7 +3978,7 @@ var xxx_messageInfo_ServiceAccountKeyRotation proto.InternalMessageInfo func (m *Shoot) Reset() { *m = Shoot{} } func (*Shoot) ProtoMessage() {} func (*Shoot) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{138} + return fileDescriptor_f1caaec5647a9dbf, []int{140} } func (m *Shoot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3950,7 +4006,7 @@ var xxx_messageInfo_Shoot proto.InternalMessageInfo func (m *ShootAdvertisedAddress) Reset() { *m = ShootAdvertisedAddress{} } func (*ShootAdvertisedAddress) ProtoMessage() {} func (*ShootAdvertisedAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{139} + return fileDescriptor_f1caaec5647a9dbf, []int{141} } func (m *ShootAdvertisedAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3978,7 +4034,7 @@ var xxx_messageInfo_ShootAdvertisedAddress proto.InternalMessageInfo func (m *ShootCredentials) Reset() { *m = ShootCredentials{} } func (*ShootCredentials) ProtoMessage() {} func (*ShootCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{140} + return fileDescriptor_f1caaec5647a9dbf, []int{142} } func (m *ShootCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4006,7 +4062,7 @@ var xxx_messageInfo_ShootCredentials proto.InternalMessageInfo func (m *ShootCredentialsRotation) Reset() { *m = ShootCredentialsRotation{} } func (*ShootCredentialsRotation) ProtoMessage() {} func (*ShootCredentialsRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{141} + return fileDescriptor_f1caaec5647a9dbf, []int{143} } func (m *ShootCredentialsRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4034,7 +4090,7 @@ var xxx_messageInfo_ShootCredentialsRotation proto.InternalMessageInfo func (m *ShootKubeconfigRotation) Reset() { *m = ShootKubeconfigRotation{} } func (*ShootKubeconfigRotation) ProtoMessage() {} func (*ShootKubeconfigRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{142} + return fileDescriptor_f1caaec5647a9dbf, []int{144} } func (m *ShootKubeconfigRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4062,7 +4118,7 @@ var xxx_messageInfo_ShootKubeconfigRotation proto.InternalMessageInfo func (m *ShootList) Reset() { *m = ShootList{} } func (*ShootList) ProtoMessage() {} func (*ShootList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{143} + return fileDescriptor_f1caaec5647a9dbf, []int{145} } func (m *ShootList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4090,7 +4146,7 @@ var xxx_messageInfo_ShootList proto.InternalMessageInfo func (m *ShootMachineImage) Reset() { *m = ShootMachineImage{} } func (*ShootMachineImage) ProtoMessage() {} func (*ShootMachineImage) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{144} + return fileDescriptor_f1caaec5647a9dbf, []int{146} } func (m *ShootMachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4118,7 +4174,7 @@ var xxx_messageInfo_ShootMachineImage proto.InternalMessageInfo func (m *ShootNetworks) Reset() { *m = ShootNetworks{} } func (*ShootNetworks) ProtoMessage() {} func (*ShootNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{145} + return fileDescriptor_f1caaec5647a9dbf, []int{147} } func (m *ShootNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4146,7 +4202,7 @@ var xxx_messageInfo_ShootNetworks proto.InternalMessageInfo func (m *ShootObservabilityRotation) Reset() { *m = ShootObservabilityRotation{} } func (*ShootObservabilityRotation) ProtoMessage() {} func (*ShootObservabilityRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{146} + return fileDescriptor_f1caaec5647a9dbf, []int{148} } func (m *ShootObservabilityRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4174,7 +4230,7 @@ var xxx_messageInfo_ShootObservabilityRotation proto.InternalMessageInfo func (m *ShootSSHKeypairRotation) Reset() { *m = ShootSSHKeypairRotation{} } func (*ShootSSHKeypairRotation) ProtoMessage() {} func (*ShootSSHKeypairRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{147} + return fileDescriptor_f1caaec5647a9dbf, []int{149} } func (m *ShootSSHKeypairRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4202,7 +4258,7 @@ var xxx_messageInfo_ShootSSHKeypairRotation proto.InternalMessageInfo func (m *ShootSpec) Reset() { *m = ShootSpec{} } func (*ShootSpec) ProtoMessage() {} func (*ShootSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{148} + return fileDescriptor_f1caaec5647a9dbf, []int{150} } func (m *ShootSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4230,7 +4286,7 @@ var xxx_messageInfo_ShootSpec proto.InternalMessageInfo func (m *ShootState) Reset() { *m = ShootState{} } func (*ShootState) ProtoMessage() {} func (*ShootState) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{149} + return fileDescriptor_f1caaec5647a9dbf, []int{151} } func (m *ShootState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4258,7 +4314,7 @@ var xxx_messageInfo_ShootState proto.InternalMessageInfo func (m *ShootStateList) Reset() { *m = ShootStateList{} } func (*ShootStateList) ProtoMessage() {} func (*ShootStateList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{150} + return fileDescriptor_f1caaec5647a9dbf, []int{152} } func (m *ShootStateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4286,7 +4342,7 @@ var xxx_messageInfo_ShootStateList proto.InternalMessageInfo func (m *ShootStateSpec) Reset() { *m = ShootStateSpec{} } func (*ShootStateSpec) ProtoMessage() {} func (*ShootStateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{151} + return fileDescriptor_f1caaec5647a9dbf, []int{153} } func (m *ShootStateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4314,7 +4370,7 @@ var xxx_messageInfo_ShootStateSpec proto.InternalMessageInfo func (m *ShootStatus) Reset() { *m = ShootStatus{} } func (*ShootStatus) ProtoMessage() {} func (*ShootStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{152} + return fileDescriptor_f1caaec5647a9dbf, []int{154} } func (m *ShootStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4342,7 +4398,7 @@ var xxx_messageInfo_ShootStatus proto.InternalMessageInfo func (m *SystemComponents) Reset() { *m = SystemComponents{} } func (*SystemComponents) ProtoMessage() {} func (*SystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{153} + return fileDescriptor_f1caaec5647a9dbf, []int{155} } func (m *SystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4370,7 +4426,7 @@ var xxx_messageInfo_SystemComponents proto.InternalMessageInfo func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} func (*Toleration) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{154} + return fileDescriptor_f1caaec5647a9dbf, []int{156} } func (m *Toleration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4398,7 +4454,7 @@ var xxx_messageInfo_Toleration proto.InternalMessageInfo func (m *VerticalPodAutoscaler) Reset() { *m = VerticalPodAutoscaler{} } func (*VerticalPodAutoscaler) ProtoMessage() {} func (*VerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{155} + return fileDescriptor_f1caaec5647a9dbf, []int{157} } func (m *VerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4426,7 +4482,7 @@ var xxx_messageInfo_VerticalPodAutoscaler proto.InternalMessageInfo func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} func (*Volume) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{156} + return fileDescriptor_f1caaec5647a9dbf, []int{158} } func (m *Volume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4454,7 +4510,7 @@ var xxx_messageInfo_Volume proto.InternalMessageInfo func (m *VolumeType) Reset() { *m = VolumeType{} } func (*VolumeType) ProtoMessage() {} func (*VolumeType) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{157} + return fileDescriptor_f1caaec5647a9dbf, []int{159} } func (m *VolumeType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4482,7 +4538,7 @@ var xxx_messageInfo_VolumeType proto.InternalMessageInfo func (m *WatchCacheSizes) Reset() { *m = WatchCacheSizes{} } func (*WatchCacheSizes) ProtoMessage() {} func (*WatchCacheSizes) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{158} + return fileDescriptor_f1caaec5647a9dbf, []int{160} } func (m *WatchCacheSizes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4510,7 +4566,7 @@ var xxx_messageInfo_WatchCacheSizes proto.InternalMessageInfo func (m *Worker) Reset() { *m = Worker{} } func (*Worker) ProtoMessage() {} func (*Worker) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{159} + return fileDescriptor_f1caaec5647a9dbf, []int{161} } func (m *Worker) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4538,7 +4594,7 @@ var xxx_messageInfo_Worker proto.InternalMessageInfo func (m *WorkerKubernetes) Reset() { *m = WorkerKubernetes{} } func (*WorkerKubernetes) ProtoMessage() {} func (*WorkerKubernetes) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{160} + return fileDescriptor_f1caaec5647a9dbf, []int{162} } func (m *WorkerKubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4566,7 +4622,7 @@ var xxx_messageInfo_WorkerKubernetes proto.InternalMessageInfo func (m *WorkerSystemComponents) Reset() { *m = WorkerSystemComponents{} } func (*WorkerSystemComponents) ProtoMessage() {} func (*WorkerSystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{161} + return fileDescriptor_f1caaec5647a9dbf, []int{163} } func (m *WorkerSystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4594,7 +4650,7 @@ var xxx_messageInfo_WorkerSystemComponents proto.InternalMessageInfo func (m *WorkersSettings) Reset() { *m = WorkersSettings{} } func (*WorkersSettings) ProtoMessage() {} func (*WorkersSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{162} + return fileDescriptor_f1caaec5647a9dbf, []int{164} } func (m *WorkersSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4751,6 +4807,8 @@ func init() { proto.RegisterType((*SeedSettingDependencyWatchdog)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingDependencyWatchdog") proto.RegisterType((*SeedSettingDependencyWatchdogEndpoint)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingDependencyWatchdogEndpoint") proto.RegisterType((*SeedSettingDependencyWatchdogProbe)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingDependencyWatchdogProbe") + proto.RegisterType((*SeedSettingDependencyWatchdogProber)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingDependencyWatchdogProber") + proto.RegisterType((*SeedSettingDependencyWatchdogWeeder)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingDependencyWatchdogWeeder") proto.RegisterType((*SeedSettingExcessCapacityReservation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingExcessCapacityReservation") proto.RegisterType((*SeedSettingLoadBalancerServices)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingLoadBalancerServices") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.SeedSettingLoadBalancerServices.AnnotationsEntry") @@ -4792,6 +4850,7 @@ func init() { proto.RegisterType((*Worker)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Worker") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Worker.AnnotationsEntry") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Worker.LabelsEntry") + proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Worker.SysctlsEntry") proto.RegisterType((*WorkerKubernetes)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.WorkerKubernetes") proto.RegisterType((*WorkerSystemComponents)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.WorkerSystemComponents") proto.RegisterType((*WorkersSettings)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.WorkersSettings") @@ -4802,721 +4861,726 @@ func init() { } var fileDescriptor_f1caaec5647a9dbf = []byte{ - // 11417 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x8c, 0x25, 0xc7, - 0x75, 0x18, 0xac, 0xbe, 0xf3, 0x3e, 0xf3, 0xd8, 0xdd, 0xda, 0x07, 0x87, 0xcb, 0xe5, 0xde, 0x55, - 0x93, 0x92, 0xc9, 0x4f, 0xf2, 0xac, 0xf9, 0x90, 0x4d, 0xd2, 0x24, 0xc5, 0xb9, 0xf7, 0xce, 0xee, - 0x5e, 0xef, 0xcc, 0xec, 0xb0, 0xee, 0x0e, 0x29, 0x51, 0x86, 0xe5, 0x9e, 0xee, 0x9a, 0x3b, 0xcd, - 0xe9, 0xdb, 0x7d, 0xd9, 0xdd, 0x77, 0x76, 0x66, 0x29, 0x4b, 0xb6, 0x3e, 0xd9, 0x8a, 0x24, 0x58, - 0x49, 0x20, 0x04, 0x12, 0x28, 0x41, 0x96, 0x0c, 0x27, 0x50, 0x80, 0x18, 0x32, 0x04, 0x58, 0x79, - 0x42, 0x3f, 0x94, 0x1f, 0x16, 0xe4, 0x40, 0x31, 0x1c, 0x27, 0x50, 0x8c, 0x64, 0x14, 0x8d, 0x9d, - 0xd8, 0x09, 0x12, 0x24, 0x41, 0x90, 0x1f, 0x59, 0x24, 0x41, 0x50, 0x8f, 0xae, 0xae, 0x7e, 0xcd, - 0xa3, 0x7b, 0x76, 0x24, 0xc2, 0xfa, 0x35, 0x73, 0xeb, 0x54, 0x9d, 0x53, 0x5d, 0x8f, 0x53, 0xe7, - 0x9c, 0x3a, 0x75, 0x0e, 0x34, 0xbb, 0x76, 0xb8, 0x31, 0x58, 0x9b, 0x33, 0xbd, 0xde, 0xd5, 0xae, - 0xe1, 0x5b, 0xc4, 0x25, 0x7e, 0xfc, 0x4f, 0x7f, 0xb3, 0x7b, 0xd5, 0xe8, 0xdb, 0xc1, 0x55, 0xd3, - 0xf3, 0xc9, 0xd5, 0xad, 0x27, 0x0c, 0xa7, 0xbf, 0x61, 0x3c, 0x71, 0xb5, 0x4b, 0x81, 0x46, 0x48, - 0xac, 0xb9, 0xbe, 0xef, 0x85, 0x1e, 0x7a, 0x2a, 0x46, 0x32, 0x17, 0xb5, 0x8d, 0xff, 0xe9, 0x6f, - 0x76, 0xe7, 0x28, 0x92, 0x39, 0x8a, 0x64, 0x2e, 0x42, 0x72, 0xb1, 0x71, 0x24, 0xca, 0x6b, 0x24, - 0xcc, 0x12, 0xbe, 0xf8, 0xd3, 0x2a, 0x0e, 0xaf, 0xeb, 0x5d, 0x65, 0xc5, 0x6b, 0x83, 0x75, 0xf6, - 0x8b, 0xfd, 0x60, 0xff, 0x89, 0xea, 0x8f, 0x6f, 0x3e, 0x13, 0xcc, 0xd9, 0x1e, 0x45, 0x7c, 0xd5, - 0x18, 0x84, 0x5e, 0x60, 0x1a, 0x8e, 0xed, 0x76, 0xaf, 0x6e, 0x65, 0x31, 0xeb, 0x4a, 0x55, 0xd1, - 0x85, 0x7d, 0xeb, 0xf8, 0x6b, 0x86, 0x99, 0x57, 0xe7, 0xe9, 0xb8, 0x4e, 0xcf, 0x30, 0x37, 0x6c, - 0x97, 0xf8, 0x3b, 0xd1, 0xc7, 0x5d, 0xf5, 0x49, 0xe0, 0x0d, 0x7c, 0x93, 0x1c, 0xa9, 0x55, 0x70, - 0xb5, 0x47, 0x42, 0x23, 0x8f, 0xd6, 0xd5, 0xa2, 0x56, 0xfe, 0xc0, 0x0d, 0xed, 0x5e, 0x96, 0xcc, - 0xcf, 0x1e, 0xd4, 0x20, 0x30, 0x37, 0x48, 0xcf, 0xc8, 0xb4, 0x7b, 0xaa, 0xa8, 0xdd, 0x20, 0xb4, - 0x9d, 0xab, 0xb6, 0x1b, 0x06, 0xa1, 0x9f, 0x6e, 0xa4, 0x3f, 0x09, 0x23, 0xf3, 0x96, 0xe5, 0xb9, - 0xe8, 0x71, 0x18, 0x23, 0xae, 0xb1, 0xe6, 0x10, 0x6b, 0x56, 0xbb, 0xa2, 0x3d, 0x36, 0xde, 0x38, - 0xf5, 0x9d, 0xdd, 0xfa, 0x3b, 0xf6, 0x76, 0xeb, 0x63, 0x0b, 0xbc, 0x18, 0x47, 0x70, 0xfd, 0xf3, - 0x35, 0x18, 0x65, 0x8d, 0x02, 0xf4, 0x39, 0x0d, 0xce, 0x6e, 0x0e, 0xd6, 0x88, 0xef, 0x92, 0x90, - 0x04, 0x2d, 0x23, 0xd8, 0x58, 0xf3, 0x0c, 0x9f, 0xa3, 0x98, 0x7c, 0xf2, 0xc6, 0x5c, 0x89, 0x25, - 0x38, 0x77, 0x33, 0x8b, 0xaf, 0xf1, 0xc0, 0xde, 0x6e, 0xfd, 0x6c, 0x0e, 0x00, 0xe7, 0x51, 0x47, - 0x77, 0x60, 0xca, 0xed, 0xda, 0xee, 0x76, 0xdb, 0xed, 0xfa, 0x24, 0x08, 0x66, 0x6b, 0xac, 0x37, - 0xf3, 0xa5, 0x7a, 0xb3, 0xac, 0x20, 0x6a, 0x9c, 0xde, 0xdb, 0xad, 0x4f, 0xa9, 0x25, 0x38, 0x41, - 0x48, 0xff, 0x3d, 0x0d, 0x4e, 0xcd, 0x5b, 0x3d, 0x3b, 0x08, 0x6c, 0xcf, 0x5d, 0x71, 0x06, 0x5d, - 0xdb, 0x45, 0x57, 0x60, 0xd8, 0x35, 0x7a, 0x84, 0x0d, 0xc9, 0x44, 0x63, 0x4a, 0x8c, 0xea, 0xf0, - 0xb2, 0xd1, 0x23, 0x98, 0x41, 0xd0, 0xcb, 0x30, 0x6a, 0x7a, 0xee, 0xba, 0xdd, 0x15, 0x1d, 0xfd, - 0xe9, 0x39, 0x3e, 0x93, 0x73, 0xea, 0x4c, 0xb2, 0xfe, 0x89, 0x15, 0x30, 0x87, 0x8d, 0x3b, 0x0b, - 0xdb, 0x21, 0x71, 0x29, 0x99, 0x06, 0xec, 0xed, 0xd6, 0x47, 0x9b, 0x0c, 0x01, 0x16, 0x88, 0xd0, - 0x63, 0x30, 0x6e, 0xd9, 0x01, 0x9f, 0xce, 0x21, 0x36, 0x9d, 0x53, 0x7b, 0xbb, 0xf5, 0xf1, 0x96, - 0x28, 0xc3, 0x12, 0xaa, 0x5f, 0x83, 0xf1, 0x79, 0x87, 0xf8, 0xa1, 0xed, 0x76, 0xd1, 0x73, 0x30, - 0x43, 0x7a, 0x86, 0xed, 0x60, 0x62, 0x12, 0x7b, 0x8b, 0xf8, 0xc1, 0xac, 0x76, 0x65, 0xe8, 0xb1, - 0x89, 0x06, 0xda, 0xdb, 0xad, 0xcf, 0x2c, 0x24, 0x20, 0x38, 0x55, 0x53, 0xff, 0xb8, 0x06, 0x93, - 0xf3, 0x03, 0xcb, 0x0e, 0x79, 0x4f, 0x50, 0x00, 0x93, 0x06, 0xfd, 0xb9, 0xe2, 0x39, 0xb6, 0xb9, - 0x23, 0x16, 0xc4, 0x4b, 0xa5, 0xa6, 0x60, 0x3e, 0xc6, 0xd3, 0x38, 0xb5, 0xb7, 0x5b, 0x9f, 0x54, - 0x0a, 0xb0, 0x4a, 0x45, 0xdf, 0x00, 0x15, 0x86, 0x3e, 0x08, 0x53, 0x7c, 0x3c, 0x96, 0x8c, 0x3e, - 0x26, 0xeb, 0xa2, 0x13, 0x8f, 0x28, 0xc3, 0x1b, 0x51, 0x9a, 0xbb, 0xb5, 0xf6, 0x3a, 0x31, 0x43, - 0x4c, 0xd6, 0x89, 0x4f, 0x5c, 0x93, 0xf0, 0x99, 0x6e, 0x2a, 0x8d, 0x71, 0x02, 0x95, 0xfe, 0x03, - 0x0d, 0x4e, 0xcf, 0x6f, 0x19, 0xb6, 0x63, 0xac, 0xd9, 0x8e, 0x1d, 0xee, 0xbc, 0xe6, 0xb9, 0xe4, - 0x10, 0x53, 0xbd, 0x0a, 0x0f, 0x0c, 0x5c, 0x83, 0xb7, 0x73, 0xc8, 0x12, 0x9f, 0xdc, 0xdb, 0x3b, - 0x7d, 0x42, 0x17, 0x29, 0x1d, 0xea, 0x87, 0xf6, 0x76, 0xeb, 0x0f, 0xac, 0xe6, 0x57, 0xc1, 0x45, - 0x6d, 0x11, 0x86, 0x0b, 0x0a, 0xe8, 0x15, 0xcf, 0x19, 0xf4, 0x04, 0xd6, 0x21, 0x86, 0xf5, 0xe2, - 0xde, 0x6e, 0xfd, 0xc2, 0x6a, 0x6e, 0x0d, 0x5c, 0xd0, 0x52, 0xff, 0x6e, 0x0d, 0xa6, 0x1a, 0x86, - 0xb9, 0x39, 0xe8, 0x37, 0x06, 0xe6, 0x26, 0x09, 0xd1, 0x2f, 0xc3, 0x38, 0xe5, 0x71, 0x96, 0x11, - 0x1a, 0x62, 0x24, 0x7f, 0xa6, 0x70, 0xa1, 0xb2, 0x59, 0xa4, 0xb5, 0xe3, 0xb1, 0x5d, 0x22, 0xa1, - 0xd1, 0x40, 0x62, 0x4c, 0x20, 0x2e, 0xc3, 0x12, 0x2b, 0xea, 0xc2, 0x70, 0xd0, 0x27, 0xa6, 0xd8, - 0x06, 0x0b, 0xa5, 0x16, 0x8b, 0xda, 0xe5, 0x4e, 0x9f, 0x98, 0xf1, 0x34, 0xd0, 0x5f, 0x98, 0x11, - 0x40, 0x1e, 0x8c, 0x06, 0xa1, 0x11, 0x0e, 0x02, 0xb6, 0x39, 0x26, 0x9f, 0xbc, 0x5e, 0x9d, 0x14, - 0x43, 0xd7, 0x98, 0x11, 0xc4, 0x46, 0xf9, 0x6f, 0x2c, 0xc8, 0xe8, 0xdf, 0xd7, 0xe0, 0xb4, 0x5a, - 0x7d, 0xd1, 0x0e, 0x42, 0xf4, 0x8b, 0x99, 0x01, 0x9d, 0x3b, 0xdc, 0x80, 0xd2, 0xd6, 0x6c, 0x38, - 0x4f, 0x0b, 0x72, 0xe3, 0x51, 0x89, 0x32, 0x98, 0xeb, 0x30, 0x62, 0x87, 0xa4, 0xc7, 0x17, 0x56, - 0x59, 0xee, 0xa7, 0xf6, 0xb9, 0x31, 0x2d, 0xa8, 0x8d, 0xb4, 0x29, 0x5e, 0xcc, 0xd1, 0xeb, 0xbf, - 0x0c, 0xe7, 0xd4, 0x5a, 0x2b, 0xbe, 0xb7, 0x65, 0x5b, 0xc4, 0xa7, 0x9b, 0x21, 0xdc, 0xe9, 0x67, - 0x36, 0x03, 0x5d, 0x5c, 0x98, 0x41, 0xd0, 0xbb, 0x61, 0xd4, 0x27, 0x5d, 0xdb, 0x73, 0xd9, 0x84, - 0x4f, 0xc4, 0x83, 0x87, 0x59, 0x29, 0x16, 0x50, 0xfd, 0x3f, 0xd5, 0x92, 0x83, 0x47, 0x27, 0x12, - 0xdd, 0x81, 0xf1, 0xbe, 0x20, 0x25, 0x06, 0xaf, 0x5d, 0xf9, 0x0b, 0xa3, 0xbe, 0xc7, 0xe3, 0x1a, - 0x95, 0x60, 0x49, 0x0c, 0xd9, 0x30, 0x13, 0xfd, 0xdf, 0xac, 0xc0, 0xb5, 0x19, 0x4f, 0x5d, 0x49, - 0x20, 0xc2, 0x29, 0xc4, 0xe8, 0x36, 0x4c, 0x04, 0xc4, 0xf4, 0x09, 0xe5, 0x4b, 0x62, 0xa5, 0xe6, - 0x32, 0xaf, 0x4e, 0x54, 0x49, 0x30, 0xaf, 0x33, 0xa2, 0xfb, 0x13, 0x12, 0x80, 0x63, 0x44, 0xe8, - 0x12, 0x0c, 0x07, 0x84, 0x58, 0xb3, 0xc3, 0x6c, 0xd0, 0xc7, 0xd9, 0xd6, 0x20, 0xc4, 0xc2, 0xac, - 0x54, 0xff, 0xed, 0x61, 0x40, 0xd9, 0x85, 0xad, 0x7e, 0x35, 0x2f, 0x11, 0x83, 0x5e, 0xe5, 0xab, - 0xc5, 0x1e, 0x49, 0x21, 0x46, 0x6f, 0xc2, 0xb4, 0x63, 0x04, 0xe1, 0xad, 0x3e, 0x15, 0x54, 0xa2, - 0xd5, 0x31, 0xf9, 0x64, 0xa3, 0xd4, 0xf4, 0x2e, 0xaa, 0x98, 0x1a, 0x67, 0xf6, 0x76, 0xeb, 0xd3, - 0x89, 0x22, 0x9c, 0xa4, 0x85, 0x36, 0x61, 0x82, 0x16, 0x2c, 0xf8, 0xbe, 0xe7, 0x8b, 0x21, 0x7f, - 0xb1, 0x34, 0x61, 0x86, 0xa5, 0x31, 0x4d, 0x67, 0x42, 0xfe, 0xc4, 0x31, 0x7e, 0xf4, 0x0b, 0x80, - 0xbc, 0xb5, 0x80, 0xf8, 0x5b, 0xc4, 0xba, 0xce, 0xe5, 0x32, 0xfa, 0xb9, 0x74, 0x5e, 0x86, 0x1a, - 0x17, 0xc5, 0x1c, 0xa2, 0x5b, 0x99, 0x1a, 0x38, 0xa7, 0x15, 0xda, 0x04, 0x24, 0x65, 0x3b, 0x39, - 0xed, 0xb3, 0x23, 0x87, 0x5f, 0x34, 0x17, 0x28, 0xb1, 0xeb, 0x19, 0x14, 0x38, 0x07, 0xad, 0xfe, - 0x07, 0x35, 0x98, 0xe4, 0x8b, 0x64, 0xc1, 0x0d, 0xfd, 0x9d, 0x13, 0x38, 0x1a, 0xd6, 0x13, 0x47, - 0x43, 0xab, 0xc2, 0x56, 0x67, 0x3d, 0x2e, 0x3c, 0x19, 0xdc, 0xd4, 0xc9, 0x70, 0xad, 0x32, 0xa5, - 0xfd, 0x0f, 0x86, 0x7f, 0xa5, 0xc1, 0x29, 0xa5, 0xf6, 0x09, 0x9c, 0x0b, 0x24, 0x79, 0x2e, 0xbc, - 0x54, 0xf5, 0x03, 0x0b, 0x8e, 0x05, 0x33, 0xf1, 0x5d, 0x8c, 0x65, 0x3f, 0x09, 0xb0, 0xc6, 0x78, - 0xca, 0x72, 0x2c, 0x24, 0xc9, 0x59, 0x6f, 0x48, 0x08, 0x56, 0x6a, 0x49, 0x66, 0x55, 0xcb, 0x65, - 0x56, 0x7f, 0x31, 0x04, 0x67, 0x32, 0x63, 0x9d, 0x65, 0x20, 0xda, 0x8f, 0x8a, 0x81, 0xd4, 0x7e, - 0x24, 0x0c, 0x64, 0xa8, 0x14, 0x03, 0x79, 0x0c, 0xc6, 0xe9, 0x98, 0xb2, 0xb9, 0xe1, 0x47, 0x03, - 0x53, 0x19, 0x3a, 0xa2, 0x0c, 0x4b, 0x28, 0xf2, 0x01, 0xf5, 0xec, 0x2e, 0x6f, 0xd6, 0x09, 0x0d, - 0x3f, 0xbc, 0x6d, 0xf7, 0x88, 0x60, 0x35, 0xff, 0xdf, 0xe1, 0x56, 0x2a, 0x6d, 0xc1, 0x39, 0xce, - 0x52, 0x06, 0x13, 0xce, 0xc1, 0xae, 0xff, 0xf1, 0x30, 0x40, 0x73, 0x1e, 0x7b, 0x21, 0xef, 0xec, - 0xfb, 0x61, 0xa4, 0xbf, 0x61, 0x04, 0xd1, 0x2a, 0x7a, 0x3c, 0x5a, 0x82, 0x2b, 0xb4, 0xf0, 0xde, - 0x6e, 0x7d, 0xb6, 0xe9, 0x13, 0x8b, 0xb8, 0xa1, 0x6d, 0x38, 0x41, 0xd4, 0x88, 0xc1, 0x30, 0x6f, - 0x47, 0xbf, 0x81, 0x0e, 0x63, 0xd3, 0xeb, 0xf5, 0x1d, 0x42, 0xa1, 0xec, 0x1b, 0x6a, 0xe5, 0xbe, - 0x61, 0x31, 0x83, 0x09, 0xe7, 0x60, 0x8f, 0x68, 0xb6, 0x5d, 0x3b, 0xb4, 0x0d, 0x49, 0x73, 0xa8, - 0x3c, 0xcd, 0x24, 0x26, 0x9c, 0x83, 0x1d, 0x7d, 0x5a, 0x83, 0x8b, 0xc9, 0xe2, 0x6b, 0xb6, 0x6b, - 0x07, 0x1b, 0xc4, 0x62, 0xc4, 0x87, 0x8f, 0x4c, 0xfc, 0xf2, 0xde, 0x6e, 0xfd, 0xe2, 0x62, 0x21, - 0x46, 0xbc, 0x0f, 0x35, 0xf4, 0x9b, 0x1a, 0x3c, 0x94, 0x1a, 0x17, 0xdf, 0xee, 0x76, 0x89, 0x2f, - 0x7a, 0x73, 0xf4, 0x25, 0x54, 0xdf, 0xdb, 0xad, 0x3f, 0xb4, 0x58, 0x8c, 0x12, 0xef, 0x47, 0x4f, - 0xff, 0xa7, 0x1a, 0x0c, 0x35, 0x71, 0x1b, 0xbd, 0x27, 0xa1, 0xb7, 0x3d, 0xa0, 0xea, 0x6d, 0xf7, - 0x76, 0xeb, 0x63, 0x4d, 0xdc, 0x56, 0x54, 0xb8, 0xcf, 0x6a, 0x70, 0xc6, 0xf4, 0xdc, 0xd0, 0xa0, - 0xfd, 0xc2, 0x5c, 0xc8, 0x89, 0x98, 0x69, 0x39, 0x95, 0xa5, 0x99, 0xc2, 0xd6, 0x78, 0x50, 0xf4, - 0xe0, 0x4c, 0x1a, 0x12, 0xe0, 0x2c, 0x69, 0xfd, 0x5f, 0x6b, 0x30, 0xd5, 0x74, 0xbc, 0x81, 0xb5, - 0xe2, 0x7b, 0xeb, 0xb6, 0x43, 0xde, 0x26, 0x8a, 0x9a, 0xda, 0xe5, 0xa2, 0xe3, 0x98, 0xe9, 0x4d, - 0x6a, 0xc5, 0xb7, 0x8b, 0xde, 0xa4, 0xf6, 0xb9, 0xe0, 0x80, 0xfc, 0xe2, 0x58, 0xf2, 0xd3, 0xd8, - 0x11, 0xf9, 0x18, 0x8c, 0x9b, 0x46, 0x63, 0xe0, 0x5a, 0x8e, 0x54, 0x9c, 0x68, 0x37, 0x9b, 0xf3, - 0xbc, 0x0c, 0x4b, 0x28, 0x7a, 0x13, 0x20, 0x36, 0x7d, 0x89, 0x89, 0xb8, 0x5e, 0xd1, 0xde, 0xd6, - 0x21, 0x61, 0x68, 0xbb, 0xdd, 0x20, 0x9e, 0xfd, 0x18, 0x86, 0x15, 0x72, 0xe8, 0xa3, 0x30, 0x2d, - 0x86, 0xb9, 0xdd, 0x33, 0xba, 0xc2, 0xcc, 0x50, 0x76, 0xac, 0x96, 0x14, 0x4c, 0x8d, 0xf3, 0x82, - 0xf2, 0xb4, 0x5a, 0x1a, 0xe0, 0x24, 0x39, 0x74, 0x17, 0xa6, 0x7a, 0xaa, 0xed, 0x64, 0xb8, 0x82, - 0x28, 0xa3, 0x18, 0x52, 0x1a, 0xe7, 0x04, 0xf5, 0xa9, 0x84, 0xd9, 0x25, 0x41, 0x2b, 0x47, 0xff, - 0x1b, 0xb9, 0x5f, 0xfa, 0xdf, 0x3a, 0x8c, 0x71, 0x15, 0x38, 0x98, 0x1d, 0x65, 0x5f, 0xf8, 0xf3, - 0xa5, 0xbe, 0x90, 0xab, 0xd3, 0xb1, 0x41, 0x97, 0xff, 0x0e, 0x70, 0x84, 0x1c, 0xdd, 0x81, 0x29, - 0x7a, 0xb8, 0x77, 0x88, 0x43, 0xcc, 0xd0, 0xf3, 0x67, 0xc7, 0x2a, 0xd8, 0x4b, 0x3b, 0x0a, 0x22, - 0x6e, 0x45, 0x53, 0x4b, 0x70, 0x82, 0x90, 0xb4, 0x11, 0x8c, 0x17, 0xda, 0x08, 0xb6, 0x60, 0x72, - 0x4b, 0x31, 0x67, 0x4d, 0xb0, 0x61, 0x78, 0x7f, 0xa9, 0x9e, 0xc5, 0xc6, 0xad, 0xc6, 0x59, 0x41, - 0x69, 0x52, 0x35, 0x84, 0xa9, 0x84, 0xf4, 0xdd, 0x71, 0x38, 0xd3, 0x74, 0x06, 0x41, 0x48, 0xfc, - 0x79, 0x71, 0x27, 0x41, 0x7c, 0xf4, 0x71, 0x0d, 0x2e, 0xb0, 0x7f, 0x5b, 0xde, 0x1d, 0xb7, 0x45, - 0x1c, 0x63, 0x67, 0x7e, 0x9d, 0xd6, 0xb0, 0xac, 0xa3, 0x31, 0xa2, 0xd6, 0x40, 0xc8, 0x93, 0xcc, - 0x30, 0xd7, 0xc9, 0xc5, 0x88, 0x0b, 0x28, 0xa1, 0xcf, 0x68, 0xf0, 0x60, 0x0e, 0xa8, 0x45, 0x1c, - 0x12, 0x46, 0x22, 0xcc, 0x51, 0xfb, 0xf1, 0xf0, 0xde, 0x6e, 0xfd, 0xc1, 0x4e, 0x11, 0x52, 0x5c, - 0x4c, 0x8f, 0x1e, 0x87, 0x17, 0x73, 0xa0, 0xd7, 0x0c, 0xdb, 0x19, 0xf8, 0x91, 0x74, 0x73, 0xd4, - 0xee, 0x30, 0x21, 0xa3, 0x53, 0x88, 0x15, 0xef, 0x43, 0x11, 0x7d, 0x0c, 0xce, 0x4b, 0xe8, 0xaa, - 0xeb, 0x12, 0x62, 0x25, 0x64, 0x9d, 0xa3, 0x76, 0xe5, 0xc1, 0xbd, 0xdd, 0xfa, 0xf9, 0x4e, 0x1e, - 0x42, 0x9c, 0x4f, 0x07, 0x75, 0xe1, 0xe1, 0x18, 0x10, 0xda, 0x8e, 0x7d, 0x97, 0x8b, 0x63, 0x1b, - 0x3e, 0x09, 0x36, 0x3c, 0xc7, 0x62, 0xfc, 0x42, 0x6b, 0xbc, 0x73, 0x6f, 0xb7, 0xfe, 0x70, 0x67, - 0xbf, 0x8a, 0x78, 0x7f, 0x3c, 0xc8, 0x82, 0xa9, 0xc0, 0x34, 0xdc, 0xb6, 0x1b, 0x12, 0x7f, 0xcb, - 0x70, 0x66, 0x47, 0x4b, 0x7d, 0x20, 0xdf, 0xa3, 0x0a, 0x1e, 0x9c, 0xc0, 0x8a, 0x9e, 0x81, 0x71, - 0xb2, 0xdd, 0x37, 0x5c, 0x8b, 0x70, 0xc6, 0x30, 0xd1, 0xb8, 0x44, 0x8f, 0xa4, 0x05, 0x51, 0x76, - 0x6f, 0xb7, 0x3e, 0x15, 0xfd, 0xbf, 0xe4, 0x59, 0x04, 0xcb, 0xda, 0xe8, 0x23, 0x70, 0xae, 0x67, - 0x6c, 0x2f, 0x7b, 0x16, 0x61, 0x7c, 0x2e, 0x88, 0x24, 0xde, 0xf1, 0x52, 0xfd, 0x9c, 0xdd, 0xdb, - 0xad, 0x9f, 0x5b, 0xca, 0xc1, 0x87, 0x73, 0xa9, 0xd0, 0x69, 0xe8, 0x19, 0xdb, 0xd7, 0x7d, 0xc3, - 0x24, 0xeb, 0x03, 0xe7, 0x36, 0xf1, 0x7b, 0xb6, 0xcb, 0x95, 0x0a, 0x62, 0x7a, 0xae, 0x45, 0x79, - 0x89, 0xf6, 0xd8, 0x08, 0x9f, 0x86, 0xa5, 0xfd, 0x2a, 0xe2, 0xfd, 0xf1, 0xa0, 0xa7, 0x61, 0xca, - 0xee, 0xba, 0x9e, 0x4f, 0x6e, 0x1b, 0xb6, 0x1b, 0x06, 0xb3, 0xc0, 0x4c, 0xee, 0x6c, 0x58, 0xdb, - 0x4a, 0x39, 0x4e, 0xd4, 0xd2, 0x77, 0x87, 0x60, 0xa2, 0xe9, 0xb9, 0x96, 0xcd, 0xf4, 0x99, 0x27, - 0x12, 0xc6, 0xd2, 0x87, 0x55, 0x46, 0x78, 0x6f, 0xb7, 0x3e, 0x2d, 0x2b, 0x2a, 0x9c, 0xf1, 0x59, - 0x69, 0xa9, 0xe0, 0xba, 0xf1, 0x3b, 0x93, 0x16, 0x86, 0x7b, 0xbb, 0xf5, 0x53, 0xb2, 0x59, 0xd2, - 0xe8, 0x80, 0xb6, 0xb8, 0x22, 0x72, 0xdb, 0x37, 0xdc, 0xc0, 0xae, 0xa0, 0x88, 0x48, 0x15, 0x73, - 0x31, 0x83, 0x0d, 0xe7, 0x50, 0x40, 0xaf, 0xc3, 0x0c, 0x2d, 0x5d, 0xed, 0x5b, 0x46, 0x48, 0x4a, - 0xea, 0x1f, 0x17, 0x04, 0xcd, 0x99, 0xc5, 0x04, 0x26, 0x9c, 0xc2, 0xcc, 0x8d, 0xcb, 0x46, 0xe0, - 0xb9, 0x6c, 0xbb, 0x25, 0x8c, 0xcb, 0xb4, 0x14, 0x0b, 0x28, 0x7a, 0x1c, 0xc6, 0x7a, 0x24, 0x08, - 0x8c, 0x2e, 0x61, 0xfb, 0x67, 0x22, 0x3e, 0x26, 0x97, 0x78, 0x31, 0x8e, 0xe0, 0xe8, 0xbd, 0x30, - 0x62, 0x7a, 0x16, 0x09, 0x66, 0xc7, 0xd8, 0x0c, 0x53, 0x35, 0x6c, 0xa4, 0x49, 0x0b, 0xee, 0xed, - 0xd6, 0x27, 0x98, 0x42, 0x4e, 0x7f, 0x61, 0x5e, 0x49, 0xff, 0x2d, 0x2a, 0xba, 0xa6, 0x84, 0xf5, - 0xa2, 0x1b, 0x22, 0x3e, 0xad, 0x4c, 0xbd, 0x38, 0x39, 0xf3, 0xb2, 0xfe, 0x05, 0xaa, 0x38, 0x78, - 0x6e, 0xe8, 0x7b, 0xce, 0x8a, 0x63, 0xb8, 0x04, 0x7d, 0x52, 0x83, 0xd3, 0x1b, 0x76, 0x77, 0x43, - 0xbd, 0xd8, 0x12, 0x07, 0x5b, 0x39, 0x19, 0xff, 0x46, 0x0a, 0x59, 0xe3, 0xdc, 0xde, 0x6e, 0xfd, - 0x74, 0xba, 0x14, 0x67, 0x88, 0xea, 0x9f, 0xaa, 0xc1, 0x39, 0xd1, 0x35, 0x87, 0x1e, 0x35, 0x7d, - 0xc7, 0xdb, 0xe9, 0x11, 0xf7, 0x24, 0x2e, 0xa1, 0x22, 0x99, 0xa4, 0x56, 0x28, 0x93, 0xf4, 0x32, - 0x53, 0x34, 0x54, 0x66, 0x8a, 0xe4, 0x4a, 0x3e, 0x60, 0x9a, 0xfe, 0x52, 0x83, 0xd9, 0xbc, 0xb1, - 0x38, 0x01, 0x5d, 0xc8, 0x4d, 0xea, 0x42, 0xed, 0xd2, 0xea, 0x6d, 0xba, 0xef, 0x05, 0x3a, 0xd1, - 0x5f, 0xd6, 0xe0, 0x42, 0x5c, 0xbd, 0xed, 0x06, 0xa1, 0xe1, 0x38, 0xdc, 0xe2, 0x73, 0xff, 0x27, - 0xfe, 0x8d, 0x84, 0x52, 0x7b, 0xab, 0xe2, 0xb7, 0xaa, 0x9d, 0x2f, 0xb4, 0x36, 0xef, 0xa4, 0xac, - 0xcd, 0x2f, 0x1f, 0x27, 0xd1, 0xfd, 0x0d, 0xcf, 0xff, 0x59, 0x83, 0x8b, 0xf9, 0x0d, 0x4f, 0x60, - 0x5d, 0xf5, 0x93, 0xeb, 0xea, 0xe6, 0x31, 0x7e, 0x76, 0xc1, 0xca, 0xfa, 0x46, 0xad, 0xe8, 0x73, - 0x99, 0xde, 0xbd, 0x0e, 0xa7, 0xa8, 0x32, 0x14, 0x84, 0xc2, 0x40, 0x7a, 0x34, 0x67, 0x81, 0xc8, - 0x62, 0x74, 0x0a, 0x27, 0x71, 0xe0, 0x34, 0x52, 0xb4, 0x0c, 0x63, 0x54, 0x01, 0xa2, 0xf8, 0x6b, - 0x87, 0xc7, 0x2f, 0x8f, 0xa4, 0x0e, 0x6f, 0x8b, 0x23, 0x24, 0xe8, 0x17, 0x61, 0xda, 0x92, 0x9b, - 0xea, 0x80, 0x5b, 0xc2, 0x34, 0x56, 0x66, 0xcb, 0x6e, 0xa9, 0xad, 0x71, 0x12, 0x99, 0xfe, 0x7f, - 0x34, 0xb8, 0xb4, 0xdf, 0xe2, 0x42, 0x3e, 0x80, 0x19, 0xc9, 0x18, 0xdc, 0x59, 0xa4, 0xac, 0xb5, - 0x5b, 0x8a, 0x2a, 0xf1, 0x26, 0x95, 0x45, 0x01, 0x56, 0xa8, 0xe4, 0xdc, 0x44, 0xd6, 0xee, 0xd3, - 0x4d, 0xa4, 0xfe, 0x5f, 0x34, 0x95, 0x1d, 0xa9, 0x93, 0xfb, 0xb6, 0x63, 0x47, 0x6a, 0xe7, 0x0b, - 0xad, 0x6d, 0x7f, 0x52, 0x83, 0x2b, 0xf9, 0x4d, 0x94, 0x13, 0xf8, 0x25, 0x18, 0xed, 0x73, 0x9f, - 0x9e, 0x21, 0x76, 0x42, 0x3e, 0x46, 0x99, 0x0b, 0x77, 0xb8, 0xb9, 0xb7, 0x5b, 0xbf, 0x98, 0xc7, - 0xed, 0x85, 0xab, 0x8e, 0x68, 0x87, 0xec, 0x94, 0xb9, 0x81, 0x0b, 0x81, 0x4f, 0x1d, 0x92, 0xbf, - 0x18, 0x6b, 0xc4, 0x39, 0xb4, 0x81, 0xe1, 0xe3, 0x1a, 0xcc, 0x24, 0xd6, 0x74, 0x30, 0x3b, 0xc2, - 0x56, 0x69, 0xb9, 0xcb, 0xa0, 0xc4, 0x6e, 0x89, 0x0f, 0xf0, 0x44, 0x71, 0x80, 0x53, 0x14, 0x53, - 0xac, 0x56, 0x1d, 0xd6, 0xb7, 0x1f, 0xab, 0x55, 0x7b, 0x5f, 0xc0, 0x6a, 0xbf, 0x5c, 0x2b, 0xfa, - 0x5c, 0xc6, 0x6a, 0xb7, 0x61, 0x22, 0xf2, 0xb0, 0x8c, 0x58, 0xc6, 0xf5, 0xca, 0x9d, 0xe2, 0xf8, - 0x62, 0xc7, 0x87, 0xa8, 0x24, 0xc0, 0x31, 0x31, 0xf4, 0xeb, 0x1a, 0x40, 0x3c, 0x35, 0x62, 0x63, - 0xad, 0x1e, 0xe3, 0x80, 0x28, 0xf2, 0xcd, 0x0c, 0xdd, 0xd7, 0xca, 0xba, 0x50, 0x08, 0xeb, 0x5f, - 0x1f, 0x02, 0x94, 0xed, 0x3c, 0x15, 0x3c, 0x37, 0x6d, 0xd7, 0x4a, 0xeb, 0x06, 0x37, 0x6d, 0xd7, - 0xc2, 0x0c, 0x72, 0x08, 0xd1, 0xf4, 0x05, 0x38, 0xd5, 0x75, 0xbc, 0x35, 0xc3, 0x71, 0x76, 0x84, - 0xdb, 0xa6, 0x70, 0xff, 0x3b, 0x4b, 0x8f, 0xa7, 0xeb, 0x49, 0x10, 0x4e, 0xd7, 0x45, 0x7d, 0x38, - 0xed, 0x53, 0xad, 0xd6, 0xb4, 0x1d, 0xa6, 0x45, 0x79, 0x83, 0xb0, 0xa4, 0xd9, 0x84, 0x09, 0xfa, - 0x38, 0x85, 0x0b, 0x67, 0xb0, 0xa3, 0x77, 0xc1, 0x58, 0xdf, 0xb7, 0x7b, 0x86, 0xbf, 0xc3, 0xf4, - 0xb4, 0xf1, 0xc6, 0x24, 0x3d, 0xe7, 0x56, 0x78, 0x11, 0x8e, 0x60, 0xe8, 0x57, 0x60, 0xc2, 0xb1, - 0xd7, 0x89, 0xb9, 0x63, 0x3a, 0x44, 0xd8, 0x39, 0x56, 0x8e, 0x69, 0xd1, 0x2c, 0x46, 0x78, 0xc5, - 0x3d, 0x6b, 0xf4, 0x13, 0xc7, 0x14, 0xf5, 0x4f, 0xd7, 0xe0, 0xa1, 0x7d, 0x5a, 0x22, 0x4c, 0xd7, - 0xb4, 0xf8, 0x32, 0x31, 0x7f, 0x4f, 0xf3, 0x65, 0x28, 0x0a, 0xef, 0xed, 0xd6, 0x1f, 0xd9, 0x07, - 0x41, 0x87, 0x2e, 0x20, 0xd2, 0xdd, 0xc1, 0x31, 0x1a, 0xd4, 0x86, 0x51, 0x2b, 0x36, 0xe9, 0x4d, - 0x34, 0x9e, 0xa0, 0x7c, 0x96, 0x1b, 0xdd, 0x0e, 0x8b, 0x4d, 0x20, 0x40, 0x8b, 0x30, 0xc6, 0xaf, - 0x54, 0x89, 0xe0, 0xd9, 0x4f, 0x32, 0xfd, 0x96, 0x17, 0x1d, 0x16, 0x59, 0x84, 0x42, 0xff, 0x5f, - 0x1a, 0x8c, 0x35, 0x3d, 0x9f, 0xb4, 0x96, 0x3b, 0xe8, 0x2e, 0x4c, 0x2a, 0x2e, 0xdb, 0x82, 0x7d, - 0x95, 0xdd, 0xce, 0x0c, 0xe5, 0x7c, 0x8c, 0x2e, 0x72, 0xf6, 0x94, 0x05, 0x58, 0x25, 0x86, 0x7c, - 0x3a, 0xe8, 0x77, 0x7c, 0x3b, 0xa4, 0x94, 0x2b, 0xdd, 0x44, 0x71, 0xca, 0x38, 0x42, 0xc6, 0x17, - 0x82, 0xfc, 0x89, 0x63, 0x32, 0xfa, 0x0a, 0xdd, 0xb9, 0xe9, 0x7e, 0xa2, 0xe7, 0x60, 0xb8, 0xe7, - 0x59, 0xd1, 0xcc, 0xbf, 0x3b, 0xda, 0x97, 0x4b, 0x9e, 0x45, 0x47, 0xf7, 0x42, 0xb6, 0x05, 0x33, - 0x94, 0xb1, 0x36, 0xfa, 0x32, 0x9c, 0x4e, 0xd3, 0x47, 0xcf, 0xc1, 0x8c, 0xe9, 0xf5, 0x7a, 0x9e, - 0xdb, 0x19, 0xac, 0xaf, 0xdb, 0xdb, 0x24, 0xe1, 0x87, 0xdb, 0x4c, 0x40, 0x70, 0xaa, 0xa6, 0xfe, - 0x25, 0x0d, 0x86, 0xe8, 0xcc, 0xe8, 0x30, 0x6a, 0x79, 0x3d, 0xc3, 0x76, 0x45, 0xaf, 0x98, 0x97, - 0x70, 0x8b, 0x95, 0x60, 0x01, 0x41, 0x6f, 0xc0, 0x44, 0x24, 0xf1, 0x54, 0x73, 0x07, 0x69, 0x2d, - 0x77, 0xa4, 0xef, 0x9c, 0xe4, 0xc1, 0x51, 0x49, 0x80, 0x63, 0x2a, 0xba, 0x01, 0x67, 0x5a, 0xcb, - 0x9d, 0xb6, 0x6b, 0x3a, 0x03, 0x8b, 0x2c, 0x6c, 0xb3, 0x3f, 0x94, 0x09, 0xd8, 0xbc, 0x44, 0x7c, - 0x28, 0x63, 0x02, 0xa2, 0x12, 0x8e, 0x60, 0xb4, 0x1a, 0xe1, 0x2d, 0x84, 0xb3, 0x2c, 0xab, 0x26, - 0x90, 0xe0, 0x08, 0xa6, 0xff, 0x69, 0x0d, 0x26, 0x95, 0x0e, 0xa1, 0x1e, 0x8c, 0xf1, 0xef, 0x8d, - 0x7c, 0xd6, 0xae, 0x95, 0xfd, 0xc6, 0x64, 0xb7, 0x39, 0x79, 0x3e, 0xa4, 0x01, 0x8e, 0x68, 0xa8, - 0x1c, 0xad, 0xb6, 0x0f, 0x47, 0x9b, 0x03, 0xe0, 0x2e, 0x79, 0xcc, 0xe1, 0x82, 0x6f, 0x4b, 0x76, - 0x68, 0x74, 0x64, 0x29, 0x56, 0x6a, 0xa0, 0x4b, 0x82, 0xf7, 0x2b, 0x5e, 0x7b, 0x0a, 0xdf, 0xef, - 0xc2, 0xc8, 0x5d, 0xcf, 0x25, 0x81, 0xb8, 0x8b, 0x3a, 0xae, 0x2f, 0x9c, 0xa0, 0x87, 0xfb, 0x6b, - 0x14, 0x31, 0xe6, 0xf8, 0xf5, 0xaf, 0x6a, 0x00, 0x2d, 0x23, 0x34, 0xf8, 0xc5, 0xc9, 0x21, 0x3c, - 0x9e, 0x2f, 0x25, 0xce, 0xac, 0xf1, 0x8c, 0x0b, 0xe8, 0x70, 0x60, 0xdf, 0x8d, 0xbe, 0x5f, 0x0a, - 0xc4, 0x1c, 0x7b, 0xc7, 0xbe, 0x4b, 0x30, 0x83, 0xa3, 0xf7, 0xc0, 0x04, 0x71, 0x4d, 0x7f, 0xa7, - 0x1f, 0x0a, 0xc7, 0xc5, 0x71, 0xbe, 0x49, 0x17, 0xa2, 0x42, 0x1c, 0xc3, 0xf5, 0x27, 0x20, 0xa9, - 0xd6, 0x1c, 0xdc, 0x4b, 0xfd, 0x87, 0xc3, 0xf0, 0xe0, 0xc2, 0xed, 0x66, 0x4b, 0xe0, 0xb3, 0x3d, - 0xf7, 0x26, 0xd9, 0xf9, 0x89, 0xb7, 0xc9, 0x4f, 0xbc, 0x4d, 0x8e, 0xd1, 0xdb, 0xe4, 0x9e, 0x06, - 0xa7, 0x17, 0xb6, 0xfb, 0xb6, 0xcf, 0x3c, 0xed, 0x89, 0x4f, 0xd5, 0x50, 0xf4, 0x38, 0x8c, 0x6d, - 0xf1, 0x7f, 0xc5, 0xe2, 0x92, 0xba, 0xbe, 0xa8, 0x81, 0x23, 0x38, 0x5a, 0x87, 0x19, 0xc2, 0x9a, - 0x33, 0x51, 0xd3, 0x08, 0xcb, 0x2c, 0x20, 0xfe, 0x92, 0x23, 0x81, 0x05, 0xa7, 0xb0, 0xa2, 0x0e, - 0xcc, 0x98, 0x8e, 0x11, 0x04, 0xf6, 0xba, 0x6d, 0xc6, 0x0e, 0x65, 0x13, 0x8d, 0xf7, 0xb0, 0xd3, - 0x27, 0x01, 0xb9, 0xb7, 0x5b, 0x3f, 0x2f, 0xfa, 0x99, 0x04, 0xe0, 0x14, 0x0a, 0xfd, 0xad, 0x1a, - 0x4c, 0x2f, 0x6c, 0xf7, 0xbd, 0x60, 0xe0, 0x13, 0x56, 0xf5, 0x04, 0x34, 0xe8, 0xc7, 0x61, 0x6c, - 0xc3, 0x70, 0x2d, 0x87, 0xf8, 0x82, 0xfb, 0xc8, 0xb1, 0xbd, 0xc1, 0x8b, 0x71, 0x04, 0x47, 0x1f, - 0x01, 0x08, 0xcc, 0x0d, 0x62, 0x0d, 0x98, 0x18, 0xc3, 0x37, 0xc9, 0x62, 0x29, 0x26, 0x9a, 0xf8, - 0xc8, 0x8e, 0xc4, 0x29, 0x78, 0xbb, 0xfc, 0x8d, 0x15, 0x7a, 0xfa, 0x9f, 0x6a, 0x70, 0x26, 0xd1, - 0xee, 0x04, 0xf4, 0xc2, 0x6e, 0x52, 0x2f, 0x6c, 0x54, 0xff, 0xd8, 0x02, 0x75, 0xf0, 0xd3, 0x35, - 0x78, 0xa0, 0x60, 0x50, 0x32, 0x8e, 0x07, 0xda, 0x49, 0x39, 0x1e, 0x6c, 0xc1, 0x64, 0xe8, 0x39, - 0xc2, 0xf5, 0x31, 0x1a, 0x83, 0x72, 0x6e, 0x05, 0xb7, 0x25, 0x9e, 0xd8, 0xad, 0x20, 0x2e, 0x0b, - 0xb0, 0x4a, 0x48, 0xff, 0xb6, 0x06, 0x13, 0xd2, 0x06, 0x75, 0x88, 0x27, 0x12, 0x27, 0xf8, 0xd8, - 0xe0, 0xf0, 0x4f, 0xc6, 0xfe, 0x59, 0x0d, 0x2e, 0x48, 0xdc, 0x91, 0xc2, 0xd0, 0x09, 0x29, 0xef, - 0x38, 0x58, 0x87, 0xbd, 0x24, 0xce, 0x62, 0x45, 0x1e, 0x50, 0xa4, 0x05, 0x2a, 0x3c, 0x0d, 0xfc, - 0xbe, 0x17, 0x44, 0x22, 0x01, 0x17, 0x9e, 0x78, 0x11, 0x8e, 0x60, 0x68, 0x19, 0x46, 0x02, 0x4a, - 0x4f, 0x9c, 0x28, 0x47, 0x1c, 0x0d, 0x26, 0xd5, 0xb0, 0xfe, 0x62, 0x8e, 0x06, 0xbd, 0xa9, 0xda, - 0x24, 0xb8, 0x81, 0xe8, 0x17, 0x8e, 0xb6, 0x18, 0xd8, 0x4b, 0xd8, 0x39, 0xfa, 0x25, 0x56, 0x34, - 0x22, 0x39, 0xef, 0x31, 0xf2, 0xcc, 0x12, 0xfa, 0x22, 0x9c, 0x16, 0xbe, 0x0b, 0x7c, 0xd9, 0xb8, - 0x26, 0x41, 0xcf, 0x24, 0x56, 0xc6, 0xa3, 0xa9, 0xfb, 0xe0, 0x73, 0xe9, 0xfa, 0xf1, 0x8a, 0xd1, - 0x03, 0x18, 0xbf, 0x2e, 0x3a, 0x89, 0x2e, 0x42, 0xcd, 0x8e, 0xe6, 0x02, 0x04, 0x8e, 0x5a, 0xbb, - 0x85, 0x6b, 0xb6, 0x25, 0x65, 0xa2, 0x5a, 0xa1, 0xe4, 0xa6, 0x1c, 0x4d, 0x43, 0xfb, 0x1f, 0x4d, - 0xfa, 0xbf, 0xaf, 0xc1, 0xb9, 0x88, 0x6a, 0xf4, 0x8d, 0x2d, 0x71, 0x99, 0x76, 0x80, 0x7c, 0x78, - 0xb0, 0x4d, 0xe3, 0x16, 0x0c, 0x33, 0x1e, 0x58, 0xea, 0x92, 0x4d, 0x22, 0xa4, 0xdd, 0xc1, 0x0c, - 0x11, 0xfa, 0x15, 0x18, 0x75, 0x8c, 0x35, 0xe2, 0x44, 0x7e, 0x63, 0xe5, 0x4c, 0x40, 0x79, 0xdf, - 0xcb, 0xad, 0x93, 0x01, 0xf7, 0x8b, 0x97, 0x37, 0x2f, 0xbc, 0x10, 0x0b, 0xa2, 0x17, 0x9f, 0x85, - 0x49, 0xa5, 0x1a, 0x3a, 0x0d, 0x43, 0x9b, 0x84, 0x5f, 0xb3, 0x4e, 0x60, 0xfa, 0x2f, 0x3a, 0x07, - 0x23, 0x5b, 0x86, 0x33, 0x10, 0x63, 0x82, 0xf9, 0x8f, 0xe7, 0x6a, 0xcf, 0x68, 0xfa, 0xd7, 0x35, - 0x98, 0xbc, 0x61, 0xaf, 0x11, 0x9f, 0x7b, 0x20, 0x30, 0x8d, 0x28, 0xf1, 0x68, 0x77, 0x32, 0xef, - 0xc1, 0x2e, 0xda, 0x81, 0x09, 0x71, 0xda, 0x48, 0x4f, 0xd5, 0x1b, 0x25, 0xef, 0x73, 0x25, 0x6d, - 0xc1, 0xc5, 0xd5, 0xc7, 0x46, 0x11, 0x09, 0x1c, 0x53, 0xd3, 0xdf, 0x84, 0xb3, 0x39, 0x8d, 0x50, - 0x9d, 0x6d, 0x60, 0x3f, 0x14, 0x0b, 0x23, 0xda, 0x91, 0x7e, 0x88, 0x79, 0x39, 0x7a, 0x10, 0x86, - 0x88, 0x1b, 0xb9, 0xfd, 0x8f, 0xed, 0xed, 0xd6, 0x87, 0x16, 0x5c, 0x0b, 0xd3, 0x32, 0xca, 0xa8, - 0x1c, 0x2f, 0x21, 0x99, 0x30, 0x46, 0xb5, 0x28, 0xca, 0xb0, 0x84, 0xea, 0x5f, 0xd1, 0x20, 0x73, - 0xd9, 0x8c, 0x3e, 0xa3, 0xc1, 0xe9, 0xf5, 0xd4, 0xfe, 0xa9, 0x74, 0xc9, 0x9d, 0xde, 0x8c, 0x8d, - 0x59, 0x31, 0x22, 0x99, 0x6d, 0x8d, 0x33, 0x84, 0xf5, 0x7f, 0x34, 0x0c, 0x0f, 0xdf, 0xf0, 0x7c, - 0xfb, 0xae, 0xe7, 0x86, 0x86, 0xb3, 0xe2, 0x59, 0xb1, 0xb7, 0x99, 0xe0, 0xcb, 0xbf, 0xae, 0xc1, - 0x03, 0x66, 0x7f, 0xc0, 0x85, 0xdc, 0xc8, 0x09, 0x68, 0x85, 0xf8, 0xb6, 0x57, 0xd6, 0xe9, 0x8c, - 0xbd, 0x31, 0x6d, 0xae, 0xac, 0xe6, 0xa1, 0xc4, 0x45, 0xb4, 0x98, 0xef, 0x9b, 0xe5, 0xdd, 0x71, - 0x59, 0xe7, 0x3a, 0x21, 0x1b, 0xce, 0xbb, 0xf1, 0x2c, 0x94, 0xf4, 0x7d, 0x6b, 0xe5, 0x62, 0xc4, - 0x05, 0x94, 0xd0, 0xc7, 0xe0, 0xbc, 0xcd, 0x3b, 0x87, 0x89, 0x61, 0xd9, 0x2e, 0x09, 0x02, 0xe6, - 0x01, 0x56, 0xc5, 0xb9, 0xab, 0x9d, 0x87, 0x10, 0xe7, 0xd3, 0x41, 0xbf, 0x04, 0x10, 0xec, 0xb8, - 0xa6, 0x18, 0xff, 0x91, 0x52, 0x54, 0xb9, 0x28, 0x28, 0xb1, 0x60, 0x05, 0x23, 0x55, 0x74, 0x43, - 0xb9, 0x2a, 0x47, 0x99, 0xa3, 0x18, 0x53, 0x74, 0xe3, 0x35, 0x14, 0xc3, 0xf5, 0xdf, 0xd5, 0x60, - 0x4c, 0x3c, 0x3d, 0x47, 0xef, 0x4e, 0xd9, 0x7b, 0x24, 0xf7, 0x49, 0xd9, 0x7c, 0xee, 0xb2, 0x2b, - 0x3b, 0x61, 0xed, 0x13, 0xd2, 0x44, 0x39, 0x73, 0x81, 0xa0, 0x1c, 0xdb, 0x0e, 0x13, 0x57, 0x77, - 0x91, 0x3d, 0x51, 0xa1, 0x46, 0xf7, 0xe3, 0x99, 0x4c, 0xab, 0x43, 0xc8, 0x0c, 0x27, 0xe8, 0x13, - 0xf3, 0xad, 0x19, 0x60, 0x71, 0x06, 0xe6, 0x57, 0xda, 0x1d, 0xe2, 0x6f, 0xc9, 0x5d, 0x48, 0xb9, - 0x46, 0xec, 0x00, 0x2d, 0x7a, 0x51, 0x85, 0x6b, 0xdc, 0x4c, 0x21, 0x8b, 0xb9, 0x46, 0x1a, 0x82, - 0x33, 0x84, 0xa9, 0x9e, 0x7d, 0xda, 0x48, 0xc6, 0x19, 0x88, 0x18, 0x7b, 0xb9, 0xa7, 0x71, 0xa9, - 0xa0, 0x05, 0x71, 0x67, 0x52, 0x80, 0x00, 0x67, 0xe8, 0xa2, 0xa7, 0x61, 0xca, 0xe8, 0xdb, 0xf3, - 0x03, 0xcb, 0xa6, 0xc2, 0x4e, 0xf4, 0xe4, 0x9c, 0x49, 0xe0, 0xf3, 0x2b, 0x6d, 0x59, 0x8e, 0x13, - 0xb5, 0x64, 0x7c, 0x00, 0x31, 0x94, 0xc3, 0x55, 0xe3, 0x03, 0x88, 0x51, 0x8c, 0xe3, 0x03, 0x88, - 0xc1, 0x53, 0xa9, 0xa0, 0x0f, 0xc1, 0x83, 0xfc, 0x4c, 0x6c, 0x18, 0x81, 0x6d, 0xce, 0x0f, 0xc2, - 0x0d, 0xe2, 0x86, 0x91, 0x96, 0xcb, 0xef, 0x1f, 0x98, 0x27, 0xec, 0x42, 0x51, 0x25, 0x5c, 0xdc, - 0x1e, 0x79, 0x00, 0x9e, 0x6d, 0x99, 0xe2, 0x83, 0xf8, 0x25, 0x45, 0x39, 0x95, 0xe2, 0x56, 0xbb, - 0xd5, 0x14, 0xdf, 0xc3, 0x78, 0x45, 0xfc, 0x1b, 0x2b, 0x24, 0xd0, 0x17, 0x34, 0x98, 0x16, 0x0b, - 0x5d, 0x10, 0x1d, 0x63, 0x4b, 0xe0, 0x43, 0xa5, 0x17, 0x64, 0x6a, 0xd5, 0xcf, 0x61, 0x15, 0x3b, - 0x97, 0x6a, 0xa4, 0x83, 0x7e, 0x02, 0x86, 0x93, 0x1d, 0x41, 0x9f, 0xd7, 0xe0, 0x5c, 0x40, 0xfc, - 0x2d, 0xdb, 0x24, 0xf3, 0xa6, 0xe9, 0x0d, 0xdc, 0x68, 0x9e, 0xc7, 0x2b, 0x3c, 0xd5, 0xee, 0xe4, - 0x20, 0xe4, 0x6e, 0xa1, 0x79, 0x10, 0x9c, 0xdb, 0x01, 0xf4, 0xff, 0x6b, 0x70, 0xea, 0x8e, 0x11, - 0x9a, 0x1b, 0x4d, 0xc3, 0xdc, 0x60, 0x26, 0x46, 0xee, 0x09, 0x5a, 0x76, 0xe7, 0xbc, 0x9a, 0xc4, - 0xc5, 0x2f, 0xda, 0x52, 0x85, 0x38, 0x4d, 0x11, 0x85, 0x30, 0xee, 0x93, 0x37, 0x06, 0x24, 0x60, - 0xfe, 0xa2, 0xda, 0xd1, 0xf5, 0x8d, 0xbc, 0x49, 0xc3, 0x02, 0x23, 0x97, 0x87, 0xa2, 0x5f, 0x58, - 0x52, 0x42, 0x5d, 0x78, 0x98, 0x2f, 0xdf, 0x79, 0xd7, 0x73, 0x77, 0x7a, 0xde, 0x20, 0x48, 0x6d, - 0x81, 0x49, 0xb6, 0x05, 0x98, 0x4b, 0xec, 0xc2, 0x7e, 0x15, 0xf1, 0xfe, 0x78, 0xd0, 0x07, 0x60, - 0x9c, 0x6c, 0x11, 0x37, 0xbc, 0x7d, 0x7b, 0x71, 0x76, 0xaa, 0xd4, 0x19, 0xc9, 0x3e, 0x61, 0x41, - 0xe0, 0xc0, 0x12, 0x1b, 0xea, 0xc3, 0x98, 0xe3, 0x75, 0xbb, 0xb6, 0xdb, 0x9d, 0x9d, 0xae, 0xb0, - 0x94, 0x12, 0xe3, 0xb6, 0xc8, 0x11, 0x72, 0xe1, 0x59, 0xfc, 0xc0, 0x11, 0x19, 0xd4, 0x87, 0x2b, - 0x16, 0x59, 0x37, 0x06, 0x4e, 0xb8, 0xec, 0x85, 0x54, 0x1a, 0xd8, 0x89, 0xb5, 0xfb, 0xc8, 0x95, - 0x78, 0x86, 0xbd, 0xb8, 0x7c, 0x74, 0x6f, 0xb7, 0x7e, 0xa5, 0x75, 0x40, 0x5d, 0x7c, 0x20, 0x36, - 0xb4, 0x03, 0x8f, 0x88, 0x3a, 0xab, 0xae, 0x4f, 0x0c, 0x73, 0x83, 0x0e, 0x75, 0x96, 0xe8, 0x29, - 0x46, 0xf4, 0xa7, 0xf6, 0x76, 0xeb, 0x8f, 0xb4, 0x0e, 0xae, 0x8e, 0x0f, 0x83, 0xf3, 0xe2, 0x4b, - 0x80, 0xb2, 0x7b, 0xfe, 0x20, 0x15, 0x65, 0x5c, 0x55, 0x51, 0x3e, 0xab, 0xc1, 0xb9, 0xbc, 0xd1, - 0xa5, 0x92, 0xcd, 0x16, 0xf1, 0xd7, 0xbc, 0x20, 0x72, 0x2a, 0x1d, 0xe1, 0x92, 0xcd, 0x2b, 0x51, - 0x21, 0x8e, 0xe1, 0xa8, 0x0d, 0x67, 0x37, 0xc2, 0xb0, 0x3f, 0x6f, 0x9a, 0x24, 0x08, 0x64, 0x0d, - 0x46, 0x6d, 0x84, 0x07, 0x03, 0xba, 0x71, 0xfb, 0xf6, 0x4a, 0x0a, 0x8c, 0xf3, 0xda, 0xe8, 0xdf, - 0xd4, 0xe0, 0x7c, 0xee, 0x36, 0x41, 0x18, 0x2e, 0x30, 0xcf, 0x71, 0x77, 0x69, 0x10, 0x1a, 0xa1, - 0xed, 0x76, 0xdb, 0xee, 0xba, 0x63, 0x77, 0x37, 0x42, 0xd1, 0x3d, 0x26, 0xa0, 0x2e, 0xe5, 0xd6, - 0xc0, 0x05, 0x2d, 0x69, 0xc7, 0x7b, 0xc6, 0x76, 0x06, 0xa1, 0xd2, 0xf1, 0xa5, 0x2c, 0x18, 0xe7, - 0xb5, 0xd1, 0xbf, 0x34, 0x02, 0x0f, 0xd1, 0x8e, 0xc7, 0xa2, 0xd2, 0x92, 0xe1, 0x1a, 0xdd, 0x1f, - 0x53, 0x91, 0xe4, 0xeb, 0x1a, 0x3c, 0xb0, 0x91, 0xaf, 0xc8, 0x08, 0x69, 0x0d, 0x97, 0x53, 0x39, - 0xf7, 0x53, 0x8e, 0x38, 0xab, 0xda, 0xb7, 0x0a, 0x2e, 0xea, 0x15, 0x7a, 0x09, 0x4e, 0xbb, 0x9e, - 0x45, 0x9a, 0xed, 0x16, 0x5e, 0x32, 0x82, 0xcd, 0x4e, 0x74, 0x0f, 0x35, 0xc2, 0x9d, 0x17, 0x96, - 0x53, 0x30, 0x9c, 0xa9, 0x8d, 0xb6, 0x00, 0xf5, 0x3d, 0x6b, 0x61, 0xcb, 0x36, 0xa3, 0x1b, 0x90, - 0xf2, 0x0e, 0x13, 0xec, 0x9a, 0x65, 0x25, 0x83, 0x0d, 0xe7, 0x50, 0x60, 0xaa, 0x18, 0xed, 0xcc, - 0x92, 0xe7, 0xda, 0xa1, 0xe7, 0xb3, 0xb7, 0x09, 0x95, 0x34, 0x12, 0xb6, 0xd2, 0x97, 0x73, 0x31, - 0xe2, 0x02, 0x4a, 0xfa, 0x7f, 0xd7, 0xe0, 0x14, 0x5d, 0x17, 0x2b, 0xbe, 0xb7, 0xbd, 0xf3, 0x63, - 0xb9, 0x24, 0x1f, 0x17, 0xd7, 0xf2, 0xdc, 0x88, 0x70, 0x5e, 0xb9, 0x92, 0x9f, 0x60, 0x9d, 0x8e, - 0x6f, 0xe1, 0x55, 0x43, 0xca, 0x50, 0xb1, 0x21, 0x45, 0xff, 0x42, 0x8d, 0x6b, 0x07, 0x91, 0x1d, - 0xe3, 0xc7, 0x73, 0x2b, 0xfe, 0x1c, 0x4c, 0xd3, 0xb2, 0x25, 0x63, 0x7b, 0xa5, 0xf5, 0x8a, 0xe7, - 0x44, 0x0f, 0x44, 0x98, 0xbf, 0xe7, 0x4d, 0x15, 0x80, 0x93, 0xf5, 0xd0, 0x73, 0x30, 0xd6, 0xe7, - 0x8f, 0x51, 0x85, 0x61, 0xe5, 0x0a, 0xbf, 0xba, 0x66, 0x45, 0xf7, 0x76, 0xeb, 0x67, 0x62, 0xd3, - 0xbd, 0x28, 0xc4, 0x51, 0x03, 0xfd, 0xad, 0x73, 0xc0, 0x90, 0x3b, 0x24, 0xfc, 0xb1, 0x1c, 0x94, - 0x27, 0x60, 0xd2, 0xec, 0x0f, 0x9a, 0xd7, 0x3a, 0x2f, 0x0f, 0xbc, 0xd0, 0x10, 0x57, 0xf3, 0x4c, - 0x5b, 0x68, 0xae, 0xac, 0x46, 0xc5, 0x58, 0xad, 0x43, 0x19, 0x84, 0xd9, 0x1f, 0x08, 0xa6, 0xbb, - 0xa2, 0xfa, 0x3c, 0x32, 0x06, 0xd1, 0x5c, 0x59, 0x4d, 0xc0, 0x70, 0xa6, 0x36, 0xfa, 0x55, 0x0d, - 0xa6, 0x88, 0xd8, 0xbc, 0x37, 0x0c, 0xdf, 0x12, 0xbc, 0xa1, 0xbc, 0xac, 0x27, 0x47, 0x37, 0x62, - 0x09, 0x5c, 0xcf, 0x5a, 0x50, 0x68, 0xe0, 0x04, 0x45, 0xa6, 0xf2, 0x88, 0xdf, 0x74, 0xa2, 0x3d, - 0x2b, 0xcd, 0x2d, 0x46, 0x84, 0xca, 0x53, 0x54, 0x09, 0x17, 0xb7, 0x47, 0x7f, 0x4f, 0x83, 0x0b, - 0x12, 0x6a, 0xbb, 0x76, 0x6f, 0xd0, 0xc3, 0xc4, 0x74, 0x0c, 0xbb, 0x27, 0xf4, 0x9f, 0x0f, 0x1c, - 0xdf, 0x97, 0x26, 0xf1, 0x73, 0x96, 0x95, 0x0f, 0xc3, 0x05, 0x7d, 0x42, 0x5f, 0xd1, 0xe0, 0x4a, - 0x04, 0x5a, 0xf1, 0x49, 0x10, 0x0c, 0x7c, 0x12, 0x3f, 0x51, 0x12, 0x63, 0x32, 0x56, 0x8a, 0x83, - 0x32, 0xd9, 0x6f, 0xe1, 0x00, 0xdc, 0xf8, 0x40, 0xea, 0x89, 0x15, 0xd3, 0xf1, 0xd6, 0x43, 0xa1, - 0x30, 0xdd, 0xb7, 0x15, 0x43, 0x69, 0xe0, 0x04, 0x45, 0xf4, 0x7b, 0x1a, 0x3c, 0xa0, 0x16, 0xa8, - 0x0b, 0x86, 0x6b, 0x4a, 0x1f, 0x3c, 0xbe, 0xde, 0xa4, 0x08, 0x70, 0xdb, 0x64, 0x01, 0x10, 0x17, - 0x75, 0x8b, 0xb2, 0xef, 0x1e, 0x5b, 0x9c, 0x5c, 0x9b, 0x1a, 0xe1, 0xec, 0x9b, 0xaf, 0xd7, 0x00, - 0x47, 0x30, 0xf4, 0x34, 0x4c, 0xf5, 0x3d, 0x6b, 0xc5, 0xb6, 0x82, 0x45, 0xbb, 0x67, 0x87, 0x4c, - 0xdd, 0x19, 0xe2, 0xe3, 0xb1, 0xe2, 0x59, 0x2b, 0xed, 0x16, 0x2f, 0xc7, 0x89, 0x5a, 0xec, 0xbd, - 0xad, 0xdd, 0x33, 0xba, 0x64, 0x65, 0xe0, 0x38, 0x2b, 0xbe, 0xc7, 0xec, 0x57, 0x2d, 0x62, 0x58, - 0x8e, 0xed, 0x92, 0x92, 0xea, 0x0d, 0xdb, 0x72, 0xed, 0x22, 0xa4, 0xb8, 0x98, 0x1e, 0x9a, 0x03, - 0x58, 0x37, 0x6c, 0xa7, 0x73, 0xc7, 0xe8, 0xdf, 0x72, 0x99, 0x0e, 0x34, 0xce, 0x8d, 0x04, 0xd7, - 0x64, 0x29, 0x56, 0x6a, 0xb0, 0x05, 0x45, 0x99, 0x21, 0x26, 0x3c, 0xe2, 0x0b, 0xd3, 0x55, 0x8e, - 0x65, 0x41, 0x45, 0x18, 0xf9, 0x00, 0xde, 0x54, 0x68, 0xe0, 0x04, 0x45, 0xf4, 0x1b, 0x1a, 0xcc, - 0x04, 0x3b, 0x41, 0x48, 0x7a, 0xb2, 0x13, 0xa7, 0x8e, 0xbd, 0x13, 0xcc, 0xb8, 0xd7, 0x49, 0x50, - 0xc1, 0x29, 0xaa, 0xc8, 0x80, 0x87, 0xd8, 0xc0, 0x5e, 0x6f, 0xde, 0xb0, 0xbb, 0x1b, 0xf2, 0x21, - 0xed, 0x0a, 0xf1, 0x4d, 0xe2, 0x86, 0xb3, 0xa7, 0xd9, 0xd2, 0x61, 0x4e, 0x1e, 0xed, 0xe2, 0x6a, - 0x78, 0x3f, 0x1c, 0xe8, 0x97, 0xe0, 0xa2, 0x00, 0x2f, 0x7a, 0x77, 0x32, 0x14, 0xce, 0x30, 0x0a, - 0xcc, 0xa9, 0xa5, 0x5d, 0x58, 0x0b, 0xef, 0x83, 0x81, 0xea, 0x17, 0x01, 0xf1, 0x99, 0x71, 0x9e, - 0xc8, 0xf5, 0x13, 0xcc, 0x22, 0xb6, 0x0e, 0x98, 0x7e, 0xd1, 0xc9, 0x82, 0x71, 0x5e, 0x1b, 0xf4, - 0x82, 0x7c, 0xf3, 0xb2, 0x43, 0x0b, 0x5e, 0x5e, 0xe9, 0xcc, 0x9e, 0x65, 0xfd, 0x3b, 0xab, 0x3c, - 0x65, 0x89, 0x40, 0x38, 0x5d, 0x97, 0x4a, 0x19, 0x51, 0x51, 0x63, 0xe0, 0x07, 0xe1, 0xec, 0x39, - 0xd6, 0x98, 0x49, 0x19, 0x58, 0x05, 0xe0, 0x64, 0x3d, 0xf4, 0x1c, 0xcc, 0x04, 0xc4, 0x34, 0xbd, - 0x5e, 0x5f, 0xa8, 0xad, 0xb3, 0xe7, 0x59, 0xef, 0xf9, 0x0c, 0x26, 0x20, 0x38, 0x55, 0x13, 0xed, - 0xc0, 0x59, 0x19, 0x00, 0x65, 0xd1, 0xeb, 0x2e, 0x19, 0xdb, 0x4c, 0x6c, 0xbf, 0x70, 0xf0, 0x26, - 0x9c, 0x8b, 0x2e, 0x5c, 0xe7, 0x5e, 0x1e, 0x18, 0x6e, 0x68, 0x87, 0x3b, 0x7c, 0xb8, 0x9a, 0x59, - 0x74, 0x38, 0x8f, 0x06, 0x5a, 0x84, 0x73, 0xa9, 0xe2, 0x6b, 0xb6, 0x43, 0x82, 0xd9, 0x07, 0xd8, - 0x67, 0x33, 0x33, 0x54, 0x33, 0x07, 0x8e, 0x73, 0x5b, 0xa1, 0x5b, 0x70, 0xbe, 0xef, 0x7b, 0x21, - 0x31, 0xc3, 0x9b, 0x54, 0x4e, 0x71, 0xc4, 0x07, 0x06, 0xb3, 0xb3, 0x6c, 0x2c, 0xd8, 0xc5, 0xc4, - 0x4a, 0x5e, 0x05, 0x9c, 0xdf, 0x0e, 0xbd, 0xa5, 0xc1, 0xe5, 0x20, 0xf4, 0x89, 0xd1, 0xb3, 0xdd, - 0x6e, 0xd3, 0x73, 0x5d, 0xc2, 0x38, 0x65, 0xdb, 0x8a, 0x3d, 0xb9, 0x1f, 0x2c, 0xc5, 0xaa, 0xf4, - 0xbd, 0xdd, 0xfa, 0xe5, 0xce, 0xbe, 0x98, 0xf1, 0x01, 0x94, 0xf5, 0xdd, 0x1a, 0xd7, 0xc1, 0x33, - 0xec, 0x9f, 0x2e, 0xc2, 0x1e, 0xe9, 0x79, 0xfe, 0xce, 0x7c, 0x14, 0x83, 0x54, 0xdc, 0x03, 0xb0, - 0x45, 0xb8, 0x94, 0x04, 0xe1, 0x74, 0x5d, 0x2a, 0xa2, 0xb1, 0xcd, 0x72, 0xad, 0x13, 0xb7, 0xaf, - 0xc5, 0x22, 0x5a, 0x3b, 0x05, 0xc3, 0x99, 0xda, 0xa8, 0x09, 0x67, 0x44, 0x59, 0x9b, 0x2a, 0x3a, - 0xc1, 0x35, 0x9f, 0x44, 0xd2, 0x2f, 0xd5, 0x18, 0xce, 0xb4, 0xd3, 0x40, 0x9c, 0xad, 0x4f, 0xbf, - 0x82, 0xfe, 0x50, 0x7b, 0x31, 0x1c, 0x7f, 0xc5, 0x72, 0x12, 0x84, 0xd3, 0x75, 0x23, 0x4d, 0x34, - 0xd1, 0x85, 0x91, 0xf8, 0x2b, 0x96, 0x53, 0x30, 0x9c, 0xa9, 0xad, 0xff, 0x9b, 0x61, 0x78, 0xe4, - 0x10, 0x52, 0x13, 0xea, 0xe5, 0x0f, 0xf7, 0xd1, 0xf7, 0xce, 0xe1, 0xa6, 0xa7, 0x5f, 0x30, 0x3d, - 0x47, 0xa7, 0x77, 0xd8, 0xe9, 0x0c, 0x8a, 0xa6, 0xf3, 0xe8, 0x24, 0x0f, 0x3f, 0xfd, 0xbd, 0xfc, - 0xe9, 0x2f, 0x39, 0xaa, 0x07, 0x2e, 0x97, 0x7e, 0xc1, 0x72, 0x29, 0x39, 0xaa, 0x87, 0x58, 0x5e, - 0xff, 0x76, 0x18, 0x1e, 0x3d, 0x8c, 0xf8, 0x56, 0x72, 0x7d, 0xe5, 0x70, 0x9d, 0xfb, 0xba, 0xbe, - 0x8a, 0xde, 0xab, 0xdc, 0xc7, 0xf5, 0x95, 0x43, 0xf2, 0x7e, 0xaf, 0xaf, 0xa2, 0x51, 0xbd, 0x5f, - 0xeb, 0xab, 0x68, 0x54, 0x0f, 0xb1, 0xbe, 0xfe, 0x47, 0xfa, 0x7c, 0x90, 0x22, 0x5b, 0x1b, 0x86, - 0xcc, 0xfe, 0xa0, 0x24, 0x93, 0x62, 0x7e, 0x23, 0xcd, 0x95, 0x55, 0x4c, 0x71, 0x20, 0x0c, 0xa3, - 0x7c, 0xfd, 0x94, 0x64, 0x41, 0xec, 0x05, 0x05, 0x5f, 0x92, 0x58, 0x60, 0xa2, 0x43, 0x45, 0xfa, - 0x1b, 0xa4, 0x47, 0x7c, 0xc3, 0xe9, 0x84, 0x9e, 0x6f, 0x74, 0xcb, 0x72, 0x1b, 0x36, 0x54, 0x0b, - 0x29, 0x5c, 0x38, 0x83, 0x9d, 0x0e, 0x48, 0xdf, 0xb6, 0x4a, 0xf2, 0x17, 0x36, 0x20, 0x2b, 0xed, - 0x16, 0xa6, 0x38, 0xf4, 0xdf, 0x9d, 0x00, 0x25, 0xc0, 0x17, 0xfa, 0x10, 0x3c, 0x68, 0x38, 0x8e, - 0x77, 0x67, 0xc5, 0xb7, 0xb7, 0x6c, 0x87, 0x74, 0x89, 0x25, 0xe5, 0x99, 0x40, 0xb8, 0x17, 0x31, - 0xb5, 0x65, 0xbe, 0xa8, 0x12, 0x2e, 0x6e, 0x4f, 0x95, 0xa8, 0x33, 0x66, 0x3a, 0x9e, 0x52, 0x25, - 0xf7, 0x83, 0x4c, 0x74, 0x26, 0xbe, 0xa1, 0x32, 0xc5, 0x38, 0x4b, 0x17, 0xfd, 0x9a, 0xc6, 0x4d, - 0x64, 0xf2, 0x4e, 0x40, 0x4c, 0xda, 0x8d, 0xe3, 0xba, 0x39, 0x8d, 0x8d, 0x6d, 0xf1, 0xb5, 0x43, - 0x92, 0x22, 0xfa, 0xaa, 0x06, 0xe7, 0x37, 0xf3, 0xcc, 0xfb, 0x62, 0x6e, 0x57, 0x4a, 0xf7, 0xa5, - 0xe0, 0xc2, 0x80, 0x0b, 0x95, 0xb9, 0x15, 0x70, 0x7e, 0x4f, 0xe4, 0x38, 0x49, 0x7b, 0xa7, 0xe0, - 0x03, 0xe5, 0xc7, 0x29, 0x65, 0x39, 0x8d, 0xc7, 0x49, 0x02, 0x70, 0x92, 0x22, 0x7a, 0x03, 0x26, - 0x36, 0x23, 0x33, 0xb3, 0xb0, 0x2a, 0xb5, 0x4a, 0x93, 0x57, 0x8c, 0xd5, 0xfc, 0xf6, 0x49, 0x16, - 0xe2, 0x98, 0x0a, 0xb2, 0x61, 0x6c, 0x93, 0x73, 0x23, 0x61, 0x0d, 0x6a, 0x54, 0x57, 0x54, 0xb9, - 0x49, 0x42, 0x14, 0xe1, 0x08, 0xbf, 0xea, 0x64, 0x39, 0x7e, 0x80, 0xff, 0xff, 0x17, 0x35, 0x38, - 0xbf, 0x45, 0xfc, 0xd0, 0x36, 0xd3, 0xf7, 0x2b, 0x13, 0x15, 0xb4, 0xe9, 0x57, 0xf2, 0x30, 0xf2, - 0xa5, 0x92, 0x0b, 0xc2, 0xf9, 0x7d, 0xa0, 0xba, 0x35, 0xb7, 0x92, 0x77, 0x42, 0x23, 0xb4, 0xcd, - 0xdb, 0xde, 0x26, 0x71, 0xe9, 0xd7, 0x8a, 0xcc, 0x16, 0xc0, 0xf8, 0x07, 0xd3, 0xad, 0x17, 0x8a, - 0xab, 0xe1, 0xfd, 0x70, 0xe8, 0x7f, 0xa1, 0x41, 0xc6, 0xd2, 0x8b, 0xfe, 0xa6, 0x06, 0x53, 0xeb, - 0xc4, 0x08, 0x07, 0x3e, 0xb9, 0x6e, 0x84, 0xf2, 0x49, 0xf1, 0xab, 0xc7, 0x62, 0x61, 0x9e, 0xbb, - 0xa6, 0x60, 0xe6, 0xfe, 0x0f, 0x32, 0x44, 0xa0, 0x0a, 0xc2, 0x89, 0x2e, 0x5c, 0x7c, 0x3f, 0x9c, - 0xc9, 0x34, 0x3c, 0xd2, 0x25, 0xea, 0xb7, 0x34, 0xc8, 0xcb, 0x76, 0x82, 0x3e, 0x0c, 0x23, 0x86, - 0x65, 0xc9, 0x90, 0xe8, 0xcf, 0x95, 0xf4, 0xf5, 0xb1, 0xd4, 0xb7, 0xdb, 0xec, 0x27, 0xe6, 0x78, - 0xd1, 0x35, 0x40, 0x46, 0xe2, 0x2a, 0x7f, 0x29, 0x7e, 0xd7, 0xc8, 0x6e, 0xa8, 0xe6, 0x33, 0x50, - 0x9c, 0xd3, 0x42, 0xff, 0x94, 0x06, 0x28, 0x1b, 0x57, 0x12, 0x05, 0x30, 0x2e, 0x56, 0x73, 0x34, - 0x4f, 0x0b, 0x65, 0xdf, 0x1d, 0x24, 0x9e, 0xd1, 0xc4, 0x2f, 0x1d, 0x44, 0x41, 0x80, 0x25, 0x21, - 0xfd, 0x7f, 0x6b, 0x10, 0x47, 0x4f, 0x46, 0xef, 0x83, 0x49, 0x8b, 0x04, 0xa6, 0x6f, 0xf7, 0xc3, - 0xf8, 0xd1, 0x8d, 0x74, 0xdc, 0x6f, 0xc5, 0x20, 0xac, 0xd6, 0x43, 0x3a, 0x8c, 0x86, 0x46, 0xb0, - 0xd9, 0x6e, 0x09, 0xf5, 0x92, 0x09, 0x03, 0xb7, 0x59, 0x09, 0x16, 0x90, 0x38, 0x3e, 0xd4, 0xd0, - 0x21, 0xe2, 0x43, 0xa1, 0xf5, 0x63, 0x08, 0x86, 0x85, 0x0e, 0x0e, 0x84, 0xa5, 0xff, 0xed, 0x1a, - 0x9c, 0xa2, 0x55, 0x96, 0x0c, 0xdb, 0x0d, 0x89, 0xcb, 0xdc, 0xcb, 0x4b, 0x0e, 0x42, 0x17, 0xa6, - 0xc3, 0xc4, 0x13, 0xaa, 0xa3, 0x3f, 0x40, 0x92, 0xee, 0x43, 0xc9, 0x87, 0x53, 0x49, 0xbc, 0xe8, - 0xd9, 0xc8, 0xbf, 0x9f, 0x2b, 0xe2, 0x8f, 0x44, 0x6b, 0x95, 0x39, 0xed, 0xdf, 0x13, 0xef, 0xd1, - 0x64, 0xcc, 0xed, 0x84, 0x2b, 0xff, 0xcf, 0xc1, 0xb4, 0x70, 0xb2, 0xe5, 0x81, 0xbe, 0x84, 0x22, - 0xce, 0xce, 0x99, 0x6b, 0x2a, 0x00, 0x27, 0xeb, 0xe9, 0x7f, 0x5c, 0x83, 0x64, 0x64, 0xef, 0xb2, - 0xa3, 0x94, 0x8d, 0x72, 0x56, 0xbb, 0x6f, 0x51, 0xce, 0xde, 0xcb, 0xb2, 0x60, 0xf0, 0x2c, 0x47, - 0xfc, 0xee, 0x5a, 0x4d, 0x5d, 0xc1, 0x53, 0x14, 0xc9, 0x1a, 0xf1, 0xb0, 0x0e, 0x1f, 0x79, 0x58, - 0xdf, 0x27, 0xdc, 0xf4, 0x47, 0x12, 0xb1, 0xe6, 0xa2, 0x07, 0x09, 0x67, 0x12, 0x0d, 0x95, 0xd7, - 0x08, 0xdf, 0xd5, 0x60, 0x4c, 0xc4, 0x52, 0x3d, 0xc4, 0x6b, 0x97, 0x2e, 0x8c, 0x30, 0xe5, 0xa7, - 0x92, 0x5c, 0xd8, 0xd9, 0xf0, 0xbc, 0x30, 0x11, 0x53, 0x96, 0x79, 0x97, 0xb3, 0x7f, 0x31, 0xc7, - 0xcf, 0x5c, 0x16, 0x7d, 0x73, 0xc3, 0x0e, 0x89, 0x19, 0x46, 0x51, 0x2a, 0x23, 0x97, 0x45, 0xa5, - 0x1c, 0x27, 0x6a, 0xe9, 0x5f, 0x1c, 0x86, 0x2b, 0x02, 0x71, 0x46, 0x54, 0x92, 0x2c, 0x6e, 0x07, - 0xce, 0x8a, 0xc9, 0x6d, 0xf9, 0x86, 0x2d, 0x9d, 0x02, 0xca, 0x69, 0xc1, 0xc2, 0x61, 0x24, 0x83, - 0x0e, 0xe7, 0xd1, 0xe0, 0xf1, 0x16, 0x59, 0xf1, 0x0d, 0x62, 0x38, 0xe1, 0x46, 0x44, 0xbb, 0x56, - 0x25, 0xde, 0x62, 0x16, 0x1f, 0xce, 0xa5, 0xc2, 0x9c, 0x12, 0x04, 0xa0, 0xe9, 0x13, 0x43, 0xf5, - 0x88, 0xa8, 0xe0, 0x1f, 0xbe, 0x94, 0x8b, 0x11, 0x17, 0x50, 0x62, 0xe6, 0x44, 0x63, 0x9b, 0x59, - 0x27, 0x30, 0x09, 0x7d, 0x9b, 0xc5, 0x06, 0x96, 0x36, 0xed, 0xa5, 0x24, 0x08, 0xa7, 0xeb, 0xa2, - 0xe7, 0x60, 0x86, 0x39, 0x79, 0xc4, 0x31, 0x8d, 0x46, 0xe2, 0x87, 0xf7, 0xcb, 0x09, 0x08, 0x4e, - 0xd5, 0xd4, 0xbf, 0xa6, 0xc1, 0x94, 0xba, 0xec, 0x0e, 0xf1, 0xf6, 0x65, 0x4b, 0x39, 0x0e, 0xab, - 0x3c, 0xcb, 0x50, 0xc9, 0x1e, 0xe6, 0x44, 0xfc, 0xeb, 0x43, 0x70, 0x36, 0xa7, 0x0d, 0xbb, 0xb1, - 0x27, 0xa9, 0xa3, 0xb5, 0xd2, 0x8d, 0x7d, 0xe6, 0x9c, 0x96, 0x37, 0xf6, 0x69, 0x08, 0xce, 0x10, - 0x46, 0xaf, 0xc2, 0x90, 0xe9, 0xdb, 0x62, 0x60, 0x9e, 0x29, 0xa7, 0x23, 0xe2, 0x76, 0x63, 0x52, - 0x90, 0x1c, 0x6a, 0xe2, 0x36, 0xa6, 0x18, 0xe9, 0x11, 0xa1, 0xee, 0xeb, 0xe8, 0xbc, 0x66, 0x47, - 0x84, 0xba, 0xfd, 0x03, 0x9c, 0xac, 0x87, 0x3e, 0x00, 0xb3, 0x42, 0x6e, 0x8f, 0x1e, 0xbd, 0x7a, - 0x6e, 0x10, 0xd2, 0x2d, 0x18, 0x0a, 0x96, 0x7a, 0x69, 0x6f, 0xb7, 0x3e, 0x7b, 0xb3, 0xa0, 0x0e, - 0x2e, 0x6c, 0xad, 0xff, 0xd7, 0x21, 0x98, 0x54, 0x62, 0x4e, 0xa3, 0xa5, 0x2a, 0x66, 0x8f, 0xf8, - 0x8b, 0x23, 0xd3, 0xc7, 0x12, 0x0c, 0x75, 0xfb, 0x83, 0x92, 0x76, 0x0f, 0x89, 0xee, 0x3a, 0x45, - 0xd7, 0xed, 0x0f, 0xd0, 0x2b, 0xd2, 0x92, 0x52, 0xce, 0xd6, 0x21, 0xdf, 0x26, 0xa4, 0xac, 0x29, - 0xd1, 0x8e, 0x19, 0x2e, 0xdc, 0x31, 0x2e, 0x8c, 0x05, 0xc2, 0xcc, 0x32, 0x52, 0x21, 0xd6, 0x88, - 0x32, 0xd4, 0xc2, 0xae, 0xc2, 0xd5, 0xb3, 0xc8, 0xec, 0x12, 0x11, 0xa1, 0x62, 0xdf, 0x80, 0xbd, - 0x7a, 0x64, 0x9a, 0xe7, 0x38, 0x17, 0xfb, 0x56, 0x59, 0x09, 0x16, 0x90, 0xcc, 0x61, 0x32, 0x76, - 0xa8, 0xc3, 0xe4, 0x93, 0x35, 0x40, 0xd9, 0x6e, 0xa0, 0x47, 0x60, 0x84, 0xbd, 0x9c, 0x16, 0x5c, - 0x43, 0x4a, 0xe9, 0xec, 0xe5, 0x2c, 0xe6, 0x30, 0xd4, 0x11, 0x51, 0x13, 0xca, 0xcd, 0x27, 0x73, - 0x7a, 0x11, 0xf4, 0x94, 0x10, 0x0b, 0xd1, 0xf1, 0x3c, 0x54, 0x78, 0x3c, 0xaf, 0xc2, 0x58, 0xcf, - 0x76, 0xd9, 0x85, 0x5b, 0x39, 0xf3, 0x13, 0xbf, 0x95, 0xe7, 0x28, 0x70, 0x84, 0x4b, 0xff, 0x41, - 0x8d, 0xae, 0xfd, 0x58, 0x38, 0xbd, 0x0b, 0x60, 0x0c, 0x42, 0x8f, 0x4b, 0x39, 0x62, 0x0b, 0xfc, - 0x42, 0xc9, 0x69, 0x96, 0x58, 0xe7, 0x25, 0x46, 0x7e, 0x5b, 0x1e, 0xff, 0xc6, 0x0a, 0x35, 0x4a, - 0x3b, 0xb4, 0x7b, 0xe4, 0x55, 0xdb, 0xb5, 0xbc, 0x3b, 0x62, 0x7c, 0x2b, 0xd3, 0xbe, 0x2d, 0x31, - 0x72, 0xda, 0xf1, 0x6f, 0xac, 0x50, 0xa3, 0xdc, 0x85, 0x29, 0xba, 0x2e, 0x4b, 0x05, 0x20, 0x3a, - 0xe7, 0x39, 0x4e, 0x74, 0x82, 0x8e, 0x73, 0xee, 0xd2, 0x2c, 0xa8, 0x83, 0x0b, 0x5b, 0xeb, 0x5f, - 0xd7, 0xe0, 0x7c, 0xee, 0x58, 0xa0, 0xeb, 0x70, 0x26, 0xf6, 0x94, 0x52, 0x39, 0xfe, 0x78, 0x9c, - 0x84, 0xe2, 0x66, 0xba, 0x02, 0xce, 0xb6, 0x41, 0x4b, 0x52, 0xec, 0x51, 0x4f, 0x14, 0xe1, 0x66, - 0xf5, 0x90, 0x40, 0x95, 0x77, 0xe8, 0xe0, 0xbc, 0x76, 0xfa, 0x87, 0x12, 0x1d, 0x8e, 0x07, 0x8c, - 0xee, 0x8f, 0x35, 0xd2, 0x95, 0xaf, 0x9c, 0xe4, 0xfe, 0x68, 0xd0, 0x42, 0xcc, 0x61, 0xe8, 0x61, - 0xf5, 0xf1, 0xa0, 0x64, 0x5f, 0xd1, 0x03, 0x42, 0x7d, 0x00, 0x20, 0xfc, 0x19, 0x6d, 0xb7, 0x8b, - 0xba, 0x30, 0x6e, 0x88, 0x04, 0x98, 0x62, 0xb1, 0xbd, 0x50, 0x4e, 0xad, 0x16, 0x48, 0xb8, 0xeb, - 0x7a, 0xf4, 0x0b, 0x4b, 0xe4, 0xfa, 0xdf, 0xd5, 0xe0, 0x42, 0xfe, 0x03, 0xe1, 0x43, 0x88, 0x0a, - 0x3d, 0x98, 0xf4, 0xe3, 0x66, 0x62, 0x65, 0xfe, 0xac, 0x1a, 0xe6, 0x51, 0x09, 0x8d, 0x44, 0xc5, - 0xa8, 0xa6, 0xef, 0x05, 0xd1, 0xec, 0xa4, 0x23, 0x3f, 0x4a, 0x1d, 0x46, 0xe9, 0x09, 0x56, 0xf1, - 0xeb, 0xdf, 0xaa, 0x01, 0x2c, 0x93, 0xf0, 0x8e, 0xe7, 0x6f, 0xd2, 0x31, 0xfa, 0xb1, 0x7a, 0xa8, - 0x7e, 0x09, 0x86, 0xfb, 0x9e, 0x15, 0x08, 0x46, 0xc5, 0x5e, 0x90, 0x33, 0x37, 0x1f, 0x56, 0x8a, - 0xea, 0x30, 0xc2, 0xee, 0x15, 0xc4, 0x21, 0xc2, 0x64, 0x7f, 0x2a, 0xb9, 0x05, 0x98, 0x97, 0xf3, - 0x3c, 0x47, 0xec, 0x61, 0x48, 0x20, 0xb4, 0x19, 0x91, 0xe7, 0x88, 0x97, 0x61, 0x09, 0x45, 0xcf, - 0x01, 0xd8, 0xfd, 0x6b, 0x46, 0xcf, 0x76, 0xa8, 0x1c, 0x39, 0x2a, 0x33, 0x69, 0x42, 0x7b, 0x25, - 0x2a, 0xbd, 0xb7, 0x5b, 0x1f, 0x17, 0xbf, 0x76, 0xb0, 0x52, 0x5b, 0xff, 0xc4, 0x30, 0x24, 0x12, - 0xc5, 0xc6, 0xa6, 0x9b, 0xe1, 0xfb, 0x64, 0xba, 0xf9, 0x00, 0xcc, 0x3a, 0x9e, 0x61, 0x35, 0x0c, - 0x87, 0x6e, 0x19, 0xbf, 0xc3, 0xe7, 0xd2, 0x70, 0xbb, 0x32, 0x7c, 0x14, 0x63, 0x1f, 0x8b, 0x05, - 0x75, 0x70, 0x61, 0x6b, 0x34, 0x50, 0xf2, 0xd3, 0x52, 0x59, 0x6c, 0xa9, 0x72, 0x22, 0xdd, 0x39, - 0xf5, 0x45, 0x91, 0x94, 0x06, 0x52, 0x39, 0x6c, 0x7f, 0x43, 0x83, 0xf3, 0x64, 0x3b, 0x24, 0xbe, - 0x6b, 0x38, 0xb7, 0x7d, 0x63, 0x7d, 0xdd, 0x36, 0x13, 0x4e, 0x98, 0x2b, 0x7b, 0xbb, 0xf5, 0xf3, - 0x0b, 0x79, 0x15, 0xee, 0xed, 0xd6, 0x9f, 0xca, 0x66, 0x8a, 0x8e, 0xde, 0x0f, 0xe5, 0x36, 0x61, - 0x4b, 0x39, 0x9f, 0xdc, 0xc5, 0x67, 0x61, 0xf2, 0x08, 0xaf, 0x21, 0x12, 0x0f, 0xb6, 0xff, 0x71, - 0x0d, 0xa6, 0xe8, 0xea, 0x5b, 0xf4, 0x4c, 0xc3, 0x69, 0x2d, 0x77, 0x8e, 0x90, 0x66, 0x19, 0x2d, - 0xc2, 0xb9, 0x75, 0xcf, 0x37, 0xc9, 0xed, 0xe6, 0xca, 0x6d, 0x4f, 0x5c, 0x6b, 0xb4, 0x96, 0x3b, - 0x82, 0xa7, 0x32, 0xf5, 0xec, 0x5a, 0x0e, 0x1c, 0xe7, 0xb6, 0x42, 0xb7, 0xe0, 0x7c, 0x5c, 0xbe, - 0xda, 0xe7, 0x0e, 0x1b, 0x14, 0xdd, 0x50, 0xec, 0x70, 0x72, 0x2d, 0xaf, 0x02, 0xce, 0x6f, 0x87, - 0x0c, 0x78, 0x48, 0x44, 0x84, 0xb8, 0xe6, 0xf9, 0x77, 0x0c, 0xdf, 0x4a, 0xa2, 0x1d, 0x8e, 0x0d, - 0xbe, 0xad, 0xe2, 0x6a, 0x78, 0x3f, 0x1c, 0xfa, 0x97, 0x47, 0x41, 0x79, 0xfb, 0x76, 0x84, 0xe4, - 0x38, 0xbf, 0xa3, 0xc1, 0x39, 0xd3, 0xb1, 0x89, 0x1b, 0xa6, 0x1e, 0x38, 0x71, 0xa6, 0xf4, 0x4a, - 0xb9, 0x57, 0x79, 0x7d, 0xe2, 0xb6, 0x5b, 0xc2, 0xc1, 0xa5, 0x99, 0x83, 0x5d, 0x38, 0x01, 0xe5, - 0x40, 0x70, 0x6e, 0x6f, 0xd8, 0x07, 0xb1, 0xf2, 0x76, 0x4b, 0x7d, 0xc9, 0xde, 0x14, 0x65, 0x58, - 0x42, 0xd1, 0x13, 0x30, 0xd9, 0xf5, 0xbd, 0x41, 0x3f, 0x68, 0x32, 0xe7, 0x5a, 0xce, 0xdb, 0x98, - 0x20, 0x77, 0x3d, 0x2e, 0xc6, 0x6a, 0x1d, 0x2a, 0x96, 0xf2, 0x9f, 0x2b, 0x3e, 0x59, 0xb7, 0xb7, - 0x05, 0xaf, 0x63, 0x62, 0xe9, 0x75, 0xa5, 0x1c, 0x27, 0x6a, 0xa1, 0xf7, 0xc0, 0x84, 0x1d, 0x04, - 0x03, 0xe2, 0xaf, 0xe2, 0x45, 0x11, 0x10, 0x9f, 0xdd, 0x93, 0xb4, 0xa3, 0x42, 0x1c, 0xc3, 0xd1, - 0xe7, 0x34, 0x98, 0xf1, 0xc9, 0x1b, 0x03, 0xdb, 0x27, 0x16, 0x23, 0x1a, 0x88, 0x17, 0x88, 0x9d, - 0x8a, 0xcf, 0x1e, 0xe7, 0x70, 0x02, 0x2b, 0xe7, 0x13, 0xd2, 0x26, 0x96, 0x04, 0xe2, 0x54, 0x17, - 0xe8, 0x58, 0x05, 0x76, 0xd7, 0xb5, 0xdd, 0xee, 0xbc, 0xd3, 0x0d, 0x66, 0xc7, 0x19, 0xef, 0xe3, - 0x42, 0x6f, 0x5c, 0x8c, 0xd5, 0x3a, 0x54, 0x23, 0x1c, 0x04, 0x74, 0xe7, 0xf7, 0x08, 0x1f, 0xe0, - 0x89, 0xd8, 0x68, 0xb8, 0xaa, 0x02, 0x70, 0xb2, 0x1e, 0x7a, 0x0e, 0x66, 0xa2, 0x02, 0x31, 0xcc, - 0xc0, 0x23, 0x99, 0xd1, 0x7e, 0xae, 0x26, 0x20, 0x38, 0x55, 0xf3, 0xe2, 0x3c, 0x9c, 0xcd, 0xf9, - 0xcc, 0x23, 0xb1, 0x97, 0xaf, 0xd5, 0xe0, 0x9d, 0x07, 0x2e, 0x4b, 0xf4, 0x65, 0x0d, 0x26, 0xc9, - 0x76, 0xe8, 0x1b, 0xd2, 0x07, 0x9f, 0xce, 0x51, 0xf7, 0xfe, 0x6c, 0x82, 0xb9, 0x85, 0x98, 0x12, - 0x9f, 0x37, 0x29, 0x6d, 0x28, 0x10, 0xac, 0x76, 0x88, 0x6a, 0x59, 0x3c, 0xd2, 0x9d, 0x6a, 0x5c, - 0x17, 0xd9, 0x46, 0x05, 0xe4, 0xe2, 0x8b, 0x70, 0x3a, 0x8d, 0xf9, 0xa8, 0x9c, 0x78, 0x6c, 0xc5, - 0xf7, 0xa8, 0x20, 0x74, 0x02, 0xa1, 0xa7, 0xd6, 0x12, 0xc1, 0x9b, 0xcb, 0x3d, 0x6b, 0x16, 0xbd, - 0x2d, 0x0c, 0x1e, 0xff, 0x7a, 0x2a, 0x78, 0x7c, 0xa3, 0x12, 0x95, 0xfd, 0xa3, 0xc5, 0x7f, 0x4f, - 0x83, 0x49, 0x51, 0xf3, 0x04, 0x62, 0x53, 0x19, 0xc9, 0xd8, 0x54, 0xcf, 0x57, 0xf9, 0xb0, 0x82, - 0xa8, 0x54, 0x6f, 0x69, 0x30, 0x2d, 0x6a, 0x2c, 0x91, 0xde, 0x1a, 0xf1, 0xd1, 0x35, 0x18, 0x0b, - 0x06, 0x6c, 0x2e, 0xc5, 0x17, 0x3d, 0xa4, 0x4a, 0xd7, 0xfe, 0x9a, 0x61, 0xb2, 0xac, 0xb9, 0xbc, - 0x8a, 0x12, 0x92, 0x9d, 0x17, 0xe0, 0xa8, 0x31, 0x95, 0x95, 0x7d, 0xcf, 0xc9, 0x04, 0xb4, 0xc1, - 0x9e, 0x43, 0x30, 0x83, 0x50, 0x11, 0x95, 0xfe, 0x8d, 0xec, 0x4e, 0x4c, 0x44, 0xa5, 0xe0, 0x00, - 0xf3, 0x72, 0xfd, 0x93, 0xc3, 0x72, 0xb4, 0x59, 0xc8, 0xe4, 0x1b, 0x30, 0x61, 0xfa, 0xc4, 0x08, - 0x89, 0xd5, 0xd8, 0x39, 0x4c, 0xe7, 0x18, 0xc7, 0x6e, 0x46, 0x2d, 0x70, 0xdc, 0x98, 0xf2, 0x46, - 0xf5, 0x4a, 0xa3, 0x16, 0x9f, 0x23, 0x85, 0xd7, 0x19, 0xcf, 0xc3, 0x88, 0x77, 0xc7, 0x95, 0x2e, - 0x12, 0xfb, 0x12, 0x66, 0x9f, 0x72, 0x8b, 0xd6, 0xc6, 0xbc, 0x91, 0x1a, 0xd0, 0x69, 0x78, 0x9f, - 0x80, 0x4e, 0x3d, 0x18, 0xeb, 0xb1, 0x69, 0xa8, 0x16, 0x9f, 0x3b, 0x31, 0xa3, 0x6a, 0x26, 0x17, - 0x86, 0x1a, 0x47, 0x34, 0xe8, 0x29, 0x47, 0x19, 0x71, 0xd0, 0x37, 0x4c, 0xa2, 0x9e, 0x72, 0xcb, - 0x51, 0x21, 0x8e, 0xe1, 0xe8, 0x6e, 0x32, 0x56, 0xd8, 0x58, 0x05, 0xbb, 0x93, 0xe8, 0x9f, 0x12, - 0x1e, 0x8c, 0x0f, 0x7e, 0x61, 0xbc, 0xb0, 0xcf, 0x0c, 0xcb, 0x65, 0x2a, 0x42, 0xee, 0xe7, 0xa7, - 0x7c, 0xd5, 0x4a, 0xa5, 0x7c, 0x7d, 0x2a, 0x8a, 0x6b, 0x59, 0x4b, 0xa4, 0x1d, 0x92, 0x71, 0x2d, - 0xa7, 0x04, 0xe9, 0x44, 0x2c, 0xcb, 0x01, 0x9c, 0x0d, 0x42, 0xc3, 0x21, 0x1d, 0x5b, 0x68, 0xe6, - 0x41, 0x68, 0xf4, 0xfa, 0x25, 0x02, 0x4b, 0x72, 0x6f, 0xf5, 0x2c, 0x2a, 0x9c, 0x87, 0x1f, 0x7d, - 0x42, 0x83, 0x59, 0x56, 0x3e, 0x3f, 0x08, 0x3d, 0x1e, 0x06, 0x39, 0x26, 0x7e, 0xf4, 0x9b, 0x53, - 0xa6, 0x0b, 0x75, 0x0a, 0xf0, 0xe1, 0x42, 0x4a, 0xe8, 0x4d, 0x38, 0xef, 0x18, 0x41, 0x38, 0x6f, - 0x86, 0xf6, 0x96, 0x1d, 0xee, 0xc4, 0x5d, 0x38, 0x7a, 0x34, 0x49, 0x26, 0x72, 0x2f, 0xe6, 0x21, - 0xc3, 0xf9, 0x34, 0xf4, 0xff, 0xa9, 0x01, 0xca, 0x2e, 0x21, 0xd4, 0x83, 0x71, 0x2b, 0x72, 0x1f, - 0xd7, 0x8e, 0x27, 0x92, 0x9d, 0xe4, 0xce, 0xd2, 0xed, 0x5c, 0x92, 0x40, 0x7d, 0x98, 0xb8, 0xb3, - 0x61, 0x87, 0xc4, 0xb1, 0x83, 0xf0, 0xb8, 0x22, 0xe7, 0xc9, 0x20, 0x52, 0xaf, 0x46, 0x98, 0x71, - 0x4c, 0x44, 0xff, 0xec, 0x30, 0xc8, 0x4c, 0xfc, 0x87, 0xb0, 0x45, 0x0c, 0x00, 0x99, 0x4a, 0x5a, - 0xa3, 0x2a, 0xf6, 0x08, 0xe6, 0xf3, 0xd0, 0xcc, 0x20, 0xc3, 0x39, 0x04, 0xd0, 0x9b, 0x70, 0xce, - 0x76, 0xd7, 0x7d, 0x23, 0x08, 0xfd, 0x01, 0xb3, 0xf1, 0x56, 0x49, 0x0e, 0xc4, 0x54, 0x89, 0x76, - 0x0e, 0x3a, 0x9c, 0x4b, 0x04, 0xad, 0xc3, 0xd8, 0x1d, 0xcf, 0xdf, 0xa4, 0x0c, 0x74, 0xb8, 0x42, - 0xaa, 0xc8, 0x57, 0x19, 0x8e, 0x98, 0x73, 0xf2, 0xdf, 0x01, 0x8e, 0x90, 0xf3, 0xf0, 0x19, 0xfc, - 0xff, 0xe8, 0xca, 0x53, 0x2c, 0xfd, 0x56, 0x05, 0x82, 0x71, 0xe6, 0x51, 0x1e, 0x3e, 0x23, 0x59, - 0x88, 0xd3, 0x14, 0xf5, 0x3f, 0xd4, 0x60, 0x84, 0xbf, 0xd1, 0xbc, 0xff, 0xa2, 0xdc, 0x2f, 0x27, - 0x44, 0xb9, 0x72, 0xd9, 0x4d, 0x58, 0x5f, 0x0b, 0xd3, 0x6e, 0x7c, 0x57, 0x83, 0x09, 0x56, 0xe3, - 0x04, 0x44, 0xab, 0x0f, 0x27, 0x45, 0xab, 0xe7, 0xca, 0x7f, 0x4e, 0x81, 0x60, 0xf5, 0x87, 0x43, - 0xe2, 0x63, 0x98, 0xe4, 0xd2, 0x86, 0xb3, 0xc2, 0xfb, 0x72, 0xd1, 0x5e, 0x27, 0x74, 0x99, 0xb7, - 0x8c, 0x9d, 0x40, 0xc4, 0x57, 0xe0, 0xef, 0x6f, 0xb2, 0x60, 0x9c, 0xd7, 0x06, 0xfd, 0x13, 0x8d, - 0xca, 0x08, 0xa1, 0x6f, 0x9b, 0xd5, 0x72, 0x59, 0xc8, 0xce, 0xcd, 0x2d, 0x71, 0x6c, 0x5c, 0x4b, - 0x59, 0x8d, 0x85, 0x05, 0x56, 0x7a, 0x6f, 0xb7, 0x5e, 0xcf, 0xb1, 0x21, 0xc5, 0xf1, 0xf1, 0x83, - 0xf0, 0xe3, 0x3f, 0xd8, 0xb7, 0x0a, 0xb3, 0xde, 0x46, 0x5d, 0x46, 0x37, 0x60, 0x24, 0x30, 0xbd, - 0x3e, 0x39, 0x4a, 0x86, 0x1e, 0x39, 0xc2, 0x1d, 0xda, 0x12, 0x73, 0x04, 0x17, 0x5f, 0x87, 0x29, - 0xb5, 0xe7, 0x39, 0x5a, 0x50, 0x4b, 0xd5, 0x82, 0x8e, 0x7c, 0x4d, 0xa3, 0x6a, 0x4d, 0xdf, 0xae, - 0xc1, 0x28, 0x4f, 0x17, 0x7b, 0x08, 0x1b, 0xf5, 0xeb, 0x51, 0x10, 0xf2, 0x2a, 0xc9, 0xb0, 0xd5, - 0x58, 0x7d, 0xaf, 0x79, 0xae, 0x32, 0x08, 0x6a, 0x1c, 0x72, 0xe4, 0xc9, 0x18, 0x8e, 0x43, 0x15, - 0x52, 0x88, 0xf0, 0x4f, 0xbb, 0xdf, 0x51, 0x1b, 0xbf, 0xa7, 0xc1, 0x54, 0x22, 0x2a, 0x66, 0x0f, - 0x86, 0x7c, 0x99, 0x61, 0xaa, 0xac, 0x11, 0x3f, 0xf2, 0xde, 0x79, 0x68, 0x9f, 0x4a, 0x98, 0xd2, - 0x91, 0x01, 0x34, 0x6b, 0xc7, 0x14, 0x40, 0x53, 0xff, 0xbc, 0x06, 0x17, 0xa2, 0x0f, 0x4a, 0x86, - 0x3a, 0x42, 0x8f, 0xc1, 0xb8, 0xd1, 0xb7, 0x99, 0x81, 0x49, 0xb5, 0xd1, 0xcd, 0xaf, 0xb4, 0x59, - 0x19, 0x96, 0x50, 0xf4, 0x5e, 0x18, 0x8f, 0x96, 0x9e, 0x90, 0x3f, 0x25, 0xdf, 0x92, 0xd7, 0x12, - 0xb2, 0x06, 0x7a, 0x97, 0x12, 0x28, 0x7e, 0x24, 0x16, 0x17, 0x24, 0x61, 0x7e, 0x89, 0xa9, 0xff, - 0x2c, 0x4c, 0x74, 0x3a, 0x37, 0x78, 0x08, 0x98, 0x23, 0xd8, 0x5a, 0xf5, 0x4f, 0x0f, 0xc1, 0x34, - 0x37, 0x38, 0x34, 0x6c, 0xd7, 0xb2, 0xdd, 0xee, 0x09, 0x1c, 0x2c, 0xb7, 0x61, 0x82, 0xdb, 0x36, - 0x0e, 0xc8, 0x06, 0xd6, 0x89, 0x2a, 0xa5, 0xa3, 0xc9, 0x4a, 0x00, 0x8e, 0x11, 0xa1, 0x9b, 0x30, - 0xfa, 0x06, 0xe5, 0x70, 0xd1, 0xc6, 0x38, 0x14, 0xa3, 0x91, 0x8b, 0x9e, 0x31, 0xc7, 0x00, 0x0b, - 0x14, 0x28, 0x64, 0xee, 0x65, 0x4c, 0xee, 0xaa, 0x14, 0xba, 0x20, 0x31, 0xb4, 0x32, 0x53, 0xc4, - 0x94, 0x70, 0x53, 0x63, 0xbf, 0xb0, 0xa4, 0xc4, 0xc2, 0x61, 0x27, 0x5a, 0xbc, 0x5d, 0xc2, 0x61, - 0x27, 0x3a, 0x5d, 0x70, 0x3e, 0x3e, 0x0b, 0xe7, 0x73, 0x47, 0xe3, 0x60, 0xb9, 0x56, 0xff, 0x46, - 0x0d, 0x86, 0x3b, 0x84, 0x58, 0x27, 0xb0, 0x36, 0x3f, 0x9c, 0x10, 0x7a, 0x5e, 0x28, 0x1f, 0x90, - 0xbb, 0xc8, 0x78, 0xd5, 0x4d, 0x19, 0xaf, 0xde, 0x5f, 0x9e, 0xc4, 0xfe, 0x96, 0xab, 0xdf, 0xaa, - 0x01, 0xd0, 0x6a, 0x0d, 0xc3, 0xdc, 0xe4, 0x5c, 0x47, 0xae, 0x68, 0x2d, 0xc9, 0x75, 0xb2, 0x2b, - 0xf1, 0x24, 0x6f, 0x35, 0x75, 0x18, 0xe5, 0xe9, 0xd8, 0xc5, 0x4d, 0x00, 0xf0, 0x5c, 0xb5, 0xb4, - 0x04, 0x0b, 0x48, 0x92, 0x63, 0x0c, 0x1f, 0x13, 0xc7, 0xd0, 0xbf, 0xa1, 0x01, 0x4b, 0x2c, 0xd8, - 0x5a, 0x66, 0x8f, 0xba, 0x6d, 0x7e, 0x45, 0xd7, 0x52, 0x83, 0x89, 0x32, 0x43, 0x78, 0x5b, 0x05, - 0xe0, 0x64, 0x3d, 0xe4, 0x2a, 0xe3, 0x5a, 0xab, 0xa0, 0x0f, 0x88, 0x8e, 0x1c, 0xc8, 0x23, 0x7e, - 0x58, 0x83, 0x53, 0xa9, 0xba, 0x87, 0xd0, 0x0c, 0xef, 0x0f, 0xcb, 0x55, 0x12, 0xcc, 0x0c, 0x9d, - 0x40, 0x82, 0x19, 0x99, 0xeb, 0x65, 0xf8, 0x3e, 0xe7, 0x7a, 0xf9, 0x8e, 0x06, 0xe3, 0x74, 0x8c, - 0x4f, 0x80, 0xfd, 0xfe, 0x52, 0x92, 0xfd, 0x3e, 0x5b, 0x7a, 0xed, 0x14, 0x70, 0xdd, 0x7f, 0x50, - 0x03, 0x96, 0x0e, 0x40, 0xf8, 0x34, 0x28, 0x6e, 0x02, 0x5a, 0x81, 0x9b, 0xc0, 0x15, 0xe1, 0x65, - 0x90, 0x32, 0xe3, 0x2a, 0x9e, 0x06, 0xef, 0x55, 0x1c, 0x09, 0x86, 0x92, 0xac, 0x24, 0xc7, 0x99, - 0xe0, 0x4d, 0x98, 0x0e, 0x36, 0x3c, 0x2f, 0x94, 0x0f, 0xfd, 0x87, 0x2b, 0x18, 0xed, 0x99, 0x8f, - 0x73, 0xf4, 0x2d, 0x7c, 0x77, 0x76, 0x54, 0xe4, 0x38, 0x49, 0x2b, 0xe5, 0xc9, 0x30, 0x72, 0x24, - 0x4f, 0x86, 0x3f, 0xd7, 0xf8, 0xd0, 0x1d, 0x61, 0x9b, 0x9d, 0x20, 0xdb, 0x7c, 0x77, 0x8a, 0x6d, - 0x2a, 0x69, 0xbe, 0x13, 0xac, 0xb3, 0x1e, 0x6f, 0x1a, 0x69, 0x73, 0x4f, 0x2c, 0xf6, 0x7f, 0x28, - 0x3e, 0x53, 0xa6, 0x88, 0xe8, 0xc3, 0xb4, 0xa3, 0xe6, 0x9a, 0x14, 0xab, 0xbe, 0x54, 0x9a, 0x4a, - 0xf9, 0xea, 0x21, 0x51, 0x8c, 0x93, 0x04, 0x28, 0xf3, 0x8d, 0xbe, 0x8e, 0x0e, 0x66, 0x20, 0xb2, - 0x5c, 0xb1, 0xe9, 0x5d, 0x51, 0x01, 0x38, 0x59, 0x4f, 0xff, 0x4a, 0x0d, 0x1e, 0xe6, 0x7d, 0x67, - 0xf6, 0x91, 0x16, 0xe9, 0x13, 0xd7, 0x22, 0xae, 0xb9, 0xc3, 0x84, 0x73, 0xcb, 0xeb, 0xa2, 0x4f, - 0x68, 0x30, 0x4e, 0x5c, 0xab, 0xef, 0xd9, 0x6e, 0x74, 0xbd, 0xf1, 0x5a, 0x85, 0x2c, 0x1b, 0x05, - 0x64, 0x16, 0x04, 0x05, 0x11, 0xbd, 0x53, 0xfc, 0xc2, 0x92, 0x32, 0xda, 0x86, 0x91, 0xbe, 0xef, - 0xad, 0x45, 0x8a, 0xe9, 0xab, 0xc7, 0xdf, 0x85, 0x15, 0x8a, 0x9e, 0x4f, 0x2f, 0xfb, 0x17, 0x73, - 0x82, 0x3a, 0x86, 0x77, 0x1d, 0xaa, 0xeb, 0x47, 0x51, 0x1a, 0x6e, 0x81, 0x7e, 0x70, 0x5f, 0x8e, - 0x82, 0xf0, 0x65, 0x78, 0x54, 0x41, 0xb8, 0xb0, 0x4d, 0xb5, 0x98, 0xa6, 0xd1, 0x37, 0x4c, 0xaa, - 0x95, 0xb3, 0x17, 0xd1, 0xdc, 0x6e, 0x7f, 0x04, 0x94, 0x9f, 0x1a, 0x86, 0xba, 0x82, 0x33, 0xe1, - 0xfd, 0x13, 0xb1, 0xa6, 0x2f, 0x69, 0x30, 0x69, 0xb8, 0xae, 0x48, 0x5c, 0x15, 0xd9, 0x90, 0x49, - 0xd5, 0xc9, 0xc9, 0xa3, 0x35, 0x37, 0x1f, 0xd3, 0x49, 0xdd, 0x0e, 0x2b, 0x10, 0xac, 0x76, 0x67, - 0x1f, 0x3f, 0xa0, 0xda, 0x89, 0xfa, 0x01, 0xa1, 0x8f, 0x46, 0x3c, 0x84, 0x6b, 0x56, 0x1f, 0xbc, - 0x1f, 0x03, 0xc4, 0x78, 0x52, 0xbe, 0xcd, 0xe3, 0xe2, 0x8b, 0x70, 0x3a, 0x3d, 0x7c, 0x47, 0xb2, - 0x43, 0xfc, 0xfe, 0x50, 0x62, 0x7d, 0x15, 0x92, 0x3f, 0x84, 0xa9, 0xe7, 0xab, 0xa9, 0x25, 0xc3, - 0x8f, 0xed, 0xd7, 0xef, 0xdb, 0x88, 0x1c, 0xef, 0xba, 0x39, 0x61, 0xff, 0xb1, 0xaa, 0xf3, 0xd6, - 0x84, 0x0b, 0xca, 0x18, 0xb1, 0xeb, 0xd5, 0xe6, 0x06, 0x31, 0x37, 0x8f, 0x64, 0xe1, 0x68, 0x50, - 0xbd, 0x53, 0x22, 0x51, 0x72, 0x30, 0x3d, 0x0e, 0x63, 0x5b, 0x76, 0x60, 0x47, 0xa1, 0x3a, 0x14, - 0x1c, 0xaf, 0xf0, 0x62, 0x1c, 0xc1, 0xf5, 0xc5, 0x04, 0x2f, 0xb9, 0xed, 0xf5, 0x3d, 0xc7, 0xeb, - 0xee, 0xcc, 0xdf, 0x31, 0x7c, 0x82, 0xbd, 0x41, 0x28, 0xb0, 0x1d, 0xb6, 0x47, 0x4b, 0x70, 0x45, - 0xc1, 0x96, 0xfb, 0xd8, 0xf8, 0x28, 0xe8, 0xfe, 0xc5, 0x78, 0x74, 0x80, 0x8b, 0x97, 0x58, 0xdf, - 0xd4, 0xe0, 0x41, 0x52, 0xc4, 0x43, 0xc5, 0x21, 0x58, 0x79, 0x0f, 0x17, 0x32, 0x69, 0x11, 0x55, - 0xb1, 0x08, 0x8c, 0x8b, 0xbb, 0x86, 0xee, 0x26, 0x92, 0x91, 0xd5, 0x2a, 0xd9, 0x5d, 0x72, 0x66, - 0x7c, 0xbf, 0x54, 0x64, 0xe8, 0xb7, 0x35, 0x38, 0xe7, 0xe4, 0xec, 0x42, 0x21, 0xae, 0xde, 0xbe, - 0x1f, 0x3b, 0x9c, 0x5f, 0x76, 0xe5, 0x41, 0x70, 0x6e, 0x5f, 0xd0, 0xdf, 0x29, 0x7c, 0x09, 0x3f, - 0x52, 0x21, 0xa7, 0xf3, 0x41, 0x8b, 0xb1, 0xc4, 0xa3, 0xf8, 0x8f, 0xc2, 0xa4, 0x17, 0x6f, 0x57, - 0x11, 0xbd, 0xe0, 0x66, 0xd5, 0xde, 0x29, 0x1c, 0x80, 0xbb, 0x0f, 0x28, 0x05, 0x58, 0x25, 0x88, - 0xde, 0xd2, 0x00, 0x59, 0x19, 0xb9, 0x44, 0xb8, 0x30, 0xe0, 0xe3, 0x97, 0xbe, 0xf8, 0x7d, 0x69, - 0xb6, 0x1c, 0xe7, 0xf4, 0x82, 0x2d, 0xb5, 0x30, 0x87, 0x87, 0x88, 0x90, 0x97, 0x95, 0x97, 0x5a, - 0x1e, 0x7f, 0xe2, 0x4b, 0x2d, 0x0f, 0x82, 0x73, 0xfb, 0xa2, 0xff, 0xf3, 0x31, 0xae, 0x03, 0xb3, - 0xdb, 0x2c, 0x13, 0x46, 0xd7, 0x98, 0x19, 0x49, 0x70, 0x8f, 0xf2, 0x46, 0x2b, 0x6e, 0x8d, 0xe2, - 0x46, 0x1e, 0xfe, 0x3f, 0x16, 0xa8, 0xd1, 0x1c, 0xc0, 0x9a, 0xe3, 0x99, 0x9b, 0xcd, 0x76, 0x0b, - 0x47, 0x2a, 0x00, 0xdb, 0xb1, 0x0d, 0x59, 0x8a, 0x95, 0x1a, 0xe8, 0x43, 0x30, 0x64, 0x49, 0xcb, - 0xc3, 0xf3, 0x55, 0x8c, 0x2e, 0xf1, 0x53, 0x89, 0xd6, 0x72, 0x07, 0x53, 0xac, 0xc8, 0x83, 0x71, - 0x57, 0xa8, 0x99, 0x82, 0x03, 0x94, 0x4f, 0xce, 0x27, 0xf5, 0x55, 0xa9, 0x26, 0x47, 0x25, 0x58, - 0x12, 0xa1, 0x04, 0xa5, 0x1d, 0x69, 0xa4, 0x22, 0x41, 0x69, 0x44, 0xda, 0xcf, 0xc4, 0xb7, 0xa2, - 0x9a, 0x84, 0x46, 0x0f, 0x6f, 0x12, 0x9a, 0x2e, 0x34, 0x07, 0xad, 0xc3, 0x68, 0x68, 0xd8, 0x6e, - 0x18, 0x39, 0xc3, 0xbe, 0x58, 0xfa, 0x03, 0x6e, 0x53, 0x34, 0xb1, 0x4a, 0xcb, 0x7e, 0x06, 0x58, - 0x60, 0xa7, 0xab, 0x71, 0x8b, 0xe5, 0xc9, 0x15, 0x1b, 0xa6, 0xfc, 0x6a, 0xe4, 0xe9, 0x76, 0xf9, - 0x6a, 0xe4, 0xff, 0x63, 0x81, 0x1a, 0x6d, 0xc2, 0x78, 0x10, 0xdd, 0xf3, 0x4f, 0x54, 0xce, 0xce, - 0x28, 0x2e, 0xf9, 0xc5, 0x83, 0x0b, 0x71, 0xbb, 0x2f, 0x09, 0x20, 0x13, 0xc6, 0x84, 0x55, 0x51, - 0x24, 0xc5, 0x78, 0xbe, 0x4a, 0x62, 0xa2, 0x28, 0x8b, 0x34, 0x7f, 0x05, 0x1f, 0x61, 0xd6, 0xff, - 0x7c, 0x98, 0x1b, 0x84, 0x85, 0x3f, 0x95, 0xcf, 0xf2, 0x21, 0x45, 0xcf, 0x7d, 0xb5, 0x0a, 0x33, - 0x26, 0xdf, 0x02, 0x27, 0xf2, 0x20, 0x45, 0xcf, 0x85, 0x15, 0x2a, 0xa8, 0x0b, 0xe3, 0x11, 0xb2, - 0x4a, 0x16, 0xf6, 0x28, 0x05, 0x1d, 0x1f, 0x50, 0x99, 0x90, 0x4e, 0x22, 0x47, 0xcd, 0xbc, 0xe7, - 0x5d, 0x4a, 0x70, 0xc3, 0x43, 0x3d, 0xed, 0xca, 0xf7, 0x38, 0x1b, 0x2e, 0xe5, 0x71, 0xf6, 0x02, - 0x9c, 0x12, 0x77, 0xfb, 0x6d, 0x96, 0x30, 0x39, 0xdc, 0x11, 0x7e, 0xe9, 0xcc, 0xef, 0xa3, 0x99, - 0x04, 0xe1, 0x74, 0x5d, 0xf4, 0x35, 0x0d, 0x1e, 0xe5, 0x3e, 0xf1, 0x4d, 0x7a, 0xde, 0xb2, 0xec, - 0xb2, 0x24, 0x4e, 0x67, 0x1b, 0x7b, 0x63, 0x8d, 0x1e, 0xd9, 0x1b, 0xeb, 0xb1, 0xbd, 0xdd, 0xfa, - 0xa3, 0xcd, 0x43, 0xe0, 0xc6, 0x87, 0xea, 0x81, 0x7e, 0x13, 0x26, 0xe4, 0x16, 0x46, 0x0f, 0x2b, - 0xd2, 0x7e, 0xcc, 0x65, 0x6f, 0x92, 0x1d, 0x2e, 0xfa, 0xd7, 0x13, 0xa2, 0x3f, 0xb7, 0x5e, 0xbc, - 0x42, 0x0b, 0x84, 0x16, 0xa0, 0xff, 0x47, 0x8d, 0xaf, 0x59, 0x91, 0x75, 0xdb, 0x80, 0xc9, 0x1e, - 0x8f, 0xeb, 0xc8, 0x1e, 0x63, 0x6a, 0xe5, 0x9f, 0x81, 0x2e, 0xc5, 0x68, 0xb0, 0x8a, 0x13, 0x6d, - 0x67, 0x53, 0xc3, 0x5f, 0xaf, 0xc8, 0x5f, 0x0e, 0x9d, 0x21, 0x1e, 0x65, 0xdb, 0x50, 0x45, 0x20, - 0xf2, 0x23, 0x4d, 0xe5, 0x49, 0xce, 0xf8, 0x92, 0x1e, 0x98, 0xd9, 0x52, 0xff, 0x76, 0x0d, 0x72, - 0x53, 0x06, 0x21, 0x1d, 0x46, 0xf9, 0xeb, 0x06, 0x35, 0x69, 0x3e, 0x7f, 0xfa, 0x80, 0x05, 0x04, - 0xdd, 0xe2, 0x5a, 0xa5, 0x6b, 0xb1, 0xf0, 0x44, 0xf1, 0xd4, 0xab, 0x0f, 0x69, 0x16, 0xf2, 0x2a, - 0xe0, 0xfc, 0x76, 0x68, 0x0b, 0x50, 0xcf, 0xd8, 0x4e, 0x63, 0xab, 0x90, 0x45, 0x62, 0x29, 0x83, - 0x0d, 0xe7, 0x50, 0xa0, 0x7b, 0xd1, 0x30, 0x4d, 0xd2, 0x0f, 0x89, 0xc5, 0x3f, 0x31, 0xb2, 0x0c, - 0xb3, 0xbd, 0x38, 0x9f, 0x04, 0xe1, 0x74, 0x5d, 0x96, 0x32, 0x3d, 0x39, 0x88, 0x3f, 0x49, 0x99, - 0xfe, 0x93, 0x94, 0xe9, 0xc7, 0x9b, 0x32, 0xfd, 0xf7, 0x6b, 0x30, 0xc2, 0x2e, 0x36, 0xde, 0x26, - 0x7e, 0x7e, 0xac, 0xaf, 0x85, 0x77, 0xde, 0x1b, 0xa9, 0x3b, 0xef, 0x97, 0x2a, 0xd0, 0xd8, 0xff, - 0xd2, 0xfb, 0x83, 0x70, 0x81, 0x55, 0x9b, 0xb7, 0x98, 0x5e, 0x1a, 0x10, 0x6b, 0xde, 0xb2, 0xd8, - 0x33, 0xd4, 0x83, 0x4d, 0x7b, 0x0f, 0xc3, 0xd0, 0xc0, 0x77, 0xd2, 0x8f, 0xa7, 0x57, 0xf1, 0x22, - 0xa6, 0xe5, 0xfa, 0x67, 0x34, 0x38, 0xcd, 0x70, 0x2b, 0x1b, 0x18, 0xdd, 0x81, 0x71, 0x5f, 0x6c, - 0x62, 0x31, 0x3b, 0x4b, 0xe5, 0xbf, 0x2d, 0x87, 0x33, 0x88, 0x8c, 0x66, 0xe2, 0x17, 0x96, 0xc4, - 0xf4, 0x3f, 0x1b, 0x85, 0xd9, 0xa2, 0x46, 0xe8, 0x73, 0x1a, 0x5c, 0x30, 0xe3, 0x53, 0x7a, 0x7e, - 0x10, 0x6e, 0x78, 0xbe, 0x1d, 0xda, 0xe2, 0xd6, 0xaf, 0xac, 0xc4, 0xdc, 0x9c, 0x97, 0xdd, 0x62, - 0x21, 0x6a, 0x9a, 0xb9, 0x24, 0x70, 0x01, 0x69, 0xf4, 0x11, 0x80, 0xcd, 0x38, 0x2e, 0x5e, 0xad, - 0x42, 0xaa, 0x79, 0xf6, 0xe1, 0x4a, 0xf0, 0xbc, 0xa8, 0x57, 0x4c, 0x5b, 0x54, 0xca, 0x15, 0x7a, - 0x2c, 0xd1, 0x7d, 0xb0, 0x71, 0x93, 0xec, 0xf4, 0x0d, 0xdb, 0xaf, 0x94, 0xe8, 0x9e, 0xaf, 0xc3, - 0xce, 0x0d, 0x81, 0x2b, 0x49, 0x5d, 0x29, 0x57, 0xe8, 0xa1, 0xbf, 0xa6, 0xc1, 0x34, 0x97, 0x0a, - 0x85, 0x87, 0x9f, 0xe0, 0x6f, 0xb7, 0xca, 0xf7, 0xe0, 0x96, 0x8a, 0x4e, 0x76, 0x82, 0xdd, 0x99, - 0x25, 0x41, 0x49, 0xc2, 0x74, 0x71, 0x9c, 0x09, 0xd2, 0xc7, 0x97, 0x60, 0x70, 0xcb, 0xc7, 0x90, - 0x9e, 0x50, 0x39, 0x0c, 0xb9, 0xac, 0x9d, 0x05, 0x67, 0xe9, 0xb3, 0x5e, 0x91, 0xd0, 0xb4, 0x16, - 0x5c, 0xd3, 0xdf, 0x61, 0xef, 0x6f, 0x68, 0xaf, 0x46, 0x2b, 0xf4, 0x6a, 0xe1, 0x76, 0xb3, 0x95, - 0xc0, 0x96, 0xec, 0x55, 0x16, 0x9c, 0xa5, 0xaf, 0xff, 0x5a, 0x0d, 0x1e, 0x28, 0x58, 0x6c, 0x05, - 0x67, 0xa6, 0x76, 0x5f, 0xcf, 0xcc, 0x1f, 0x81, 0x6c, 0xc0, 0x9c, 0xb4, 0xd9, 0x18, 0xbc, 0x5d, - 0x9c, 0xb4, 0x59, 0x67, 0x0b, 0xdc, 0x21, 0xfe, 0x40, 0x83, 0x33, 0x99, 0x38, 0x69, 0x87, 0x38, - 0x1b, 0x4e, 0xf0, 0x62, 0xff, 0x5d, 0xe9, 0xec, 0xf3, 0x93, 0xb9, 0x99, 0xe7, 0x5f, 0x85, 0xe9, - 0x84, 0x33, 0x84, 0x8c, 0x0e, 0xa1, 0xe5, 0x46, 0x87, 0x50, 0x83, 0x3f, 0xd4, 0xf6, 0x0b, 0xfe, - 0xa0, 0x7f, 0xa2, 0x06, 0x17, 0x8b, 0x19, 0xcc, 0x5f, 0x99, 0x65, 0x2f, 0xb7, 0x7e, 0x96, 0xd3, - 0xff, 0x95, 0x19, 0x83, 0x6f, 0x9e, 0x12, 0x5b, 0x9f, 0x19, 0x81, 0x3f, 0x0c, 0xa3, 0x2c, 0xe0, - 0x46, 0x24, 0x44, 0xfc, 0x7c, 0xf9, 0x48, 0x1e, 0x01, 0x57, 0x30, 0xf9, 0xff, 0x58, 0xa0, 0x45, - 0x2d, 0x38, 0x6d, 0x3a, 0xde, 0xc0, 0x12, 0x29, 0xd6, 0x96, 0x63, 0x5d, 0x56, 0x46, 0x4f, 0x6b, - 0xa6, 0xe0, 0x38, 0xd3, 0x02, 0x75, 0x54, 0xb3, 0xf0, 0x33, 0x65, 0x7d, 0xc4, 0x78, 0xc4, 0x70, - 0x69, 0x0e, 0xf6, 0x01, 0x48, 0xb4, 0x8b, 0xa3, 0x87, 0x46, 0x2f, 0x96, 0x8c, 0x0c, 0x27, 0x99, - 0x41, 0x24, 0x95, 0xcb, 0xa2, 0x00, 0x2b, 0x54, 0x50, 0x00, 0x93, 0x1b, 0xf6, 0x1a, 0xf1, 0xdd, - 0x38, 0x4b, 0x73, 0x59, 0xd1, 0xf9, 0x46, 0x8c, 0x87, 0x9b, 0x3f, 0x94, 0x02, 0xac, 0x52, 0x41, - 0x01, 0x17, 0xd2, 0xb8, 0x21, 0xac, 0x52, 0x2e, 0xe7, 0xd8, 0xc4, 0x16, 0x7f, 0x69, 0x5c, 0x86, - 0x15, 0x32, 0x94, 0xa8, 0x2b, 0x63, 0xee, 0x88, 0x4b, 0x9a, 0x72, 0x44, 0xe3, 0xd0, 0x3d, 0x31, - 0xd1, 0xb8, 0x0c, 0x2b, 0x64, 0xe8, 0xf0, 0xf6, 0xe2, 0x48, 0x4b, 0xc2, 0x94, 0xfc, 0x52, 0xd5, - 0x90, 0x57, 0xc2, 0xba, 0x14, 0x17, 0x60, 0x95, 0x0a, 0xf2, 0x00, 0x7a, 0x32, 0x02, 0x93, 0xb0, - 0x2b, 0x97, 0xfb, 0xd2, 0x38, 0x90, 0x13, 0x17, 0x3c, 0xe3, 0xdf, 0x58, 0x21, 0x81, 0x36, 0x95, - 0x6b, 0x05, 0xa8, 0x60, 0x71, 0x3d, 0xd4, 0x95, 0xc2, 0xfb, 0x62, 0x5b, 0xd5, 0x24, 0xdb, 0xb7, - 0x0f, 0x29, 0x76, 0xaa, 0x7b, 0xbb, 0xf5, 0x29, 0xc6, 0x4c, 0x32, 0x76, 0xab, 0xd8, 0x95, 0x6d, - 0x6a, 0x5f, 0x57, 0xb6, 0xeb, 0x54, 0x70, 0x55, 0x3c, 0xc8, 0x19, 0x83, 0x98, 0x66, 0x4d, 0x64, - 0xcc, 0xae, 0x4e, 0xba, 0x02, 0xce, 0xb6, 0xe1, 0x87, 0x21, 0xb1, 0x58, 0xfb, 0x19, 0xf5, 0x30, - 0xe4, 0x65, 0x58, 0x42, 0xd1, 0x1d, 0x98, 0x0a, 0x14, 0xdf, 0x38, 0x91, 0xbe, 0xab, 0xca, 0x4d, - 0x80, 0x70, 0x8c, 0x63, 0xe1, 0x48, 0xd4, 0x12, 0x9c, 0x20, 0x84, 0x3e, 0x02, 0x13, 0x91, 0xe5, - 0x32, 0x98, 0x3d, 0x5d, 0xe1, 0xd5, 0x57, 0x7e, 0xe0, 0xad, 0xd8, 0x14, 0x19, 0x81, 0x02, 0x1c, - 0x13, 0x44, 0x5b, 0xc9, 0x97, 0xdf, 0x67, 0x8e, 0xe7, 0xad, 0xab, 0xf4, 0x5c, 0x29, 0x7a, 0xf5, - 0x8d, 0x9a, 0x70, 0x86, 0x6c, 0xf7, 0xbd, 0x60, 0xe0, 0x13, 0x16, 0xf7, 0x8f, 0xcd, 0x10, 0x8a, - 0xcd, 0xf6, 0x0b, 0x69, 0x20, 0xce, 0xd6, 0x47, 0x9f, 0xd4, 0xe0, 0x34, 0xcf, 0x7f, 0x46, 0x8f, - 0x33, 0xcf, 0x25, 0x6e, 0x18, 0xb0, 0x04, 0x5f, 0x65, 0x5f, 0x66, 0x75, 0x52, 0xc8, 0x78, 0xca, - 0x8a, 0x74, 0x29, 0xce, 0x10, 0xa5, 0xab, 0x47, 0x7d, 0x2e, 0xcb, 0x12, 0x85, 0x95, 0x5d, 0x3d, - 0xea, 0x5b, 0x5c, 0xbe, 0x7a, 0xd4, 0x12, 0x9c, 0x20, 0xa4, 0xff, 0x4b, 0x0d, 0x40, 0x9a, 0x4b, - 0xc8, 0x09, 0xd8, 0x90, 0x48, 0xc2, 0x86, 0xd4, 0xac, 0x66, 0xdf, 0x21, 0x85, 0x0f, 0x46, 0xff, - 0x44, 0x83, 0x99, 0xb8, 0xda, 0x09, 0x28, 0x24, 0x56, 0x52, 0x21, 0x79, 0x7f, 0xc5, 0x0f, 0x2b, - 0xd0, 0x4a, 0xfe, 0x6f, 0x4d, 0xfd, 0x2c, 0x26, 0x6c, 0xdd, 0x51, 0x6e, 0xca, 0xf8, 0xdd, 0x5c, - 0xbb, 0xd2, 0x4d, 0x99, 0xfa, 0x0c, 0x2f, 0xfe, 0xe2, 0x9c, 0x9b, 0xb3, 0x8f, 0x25, 0x24, 0x9d, - 0x2a, 0xef, 0x4d, 0xa5, 0x58, 0x13, 0xd1, 0xe6, 0x43, 0x70, 0x90, 0xd8, 0xe3, 0xab, 0x9c, 0x8f, - 0x3b, 0x1c, 0xce, 0x97, 0x7c, 0xe3, 0xa8, 0x7c, 0xf2, 0xbe, 0xfc, 0x4e, 0xff, 0xc6, 0x0c, 0x4c, - 0x2a, 0xe6, 0xc5, 0x1f, 0xc9, 0xdd, 0xe8, 0x00, 0x26, 0x4d, 0x19, 0x17, 0x37, 0x1a, 0xf9, 0xaa, - 0x44, 0x25, 0xcb, 0x8d, 0x43, 0xee, 0x06, 0x58, 0xa5, 0x43, 0x05, 0x04, 0xb9, 0xd0, 0x86, 0x8e, - 0xe3, 0x4a, 0x76, 0xbf, 0xc5, 0xf5, 0x34, 0x40, 0x24, 0x6c, 0x12, 0x4b, 0x44, 0x4a, 0x93, 0x79, - 0x25, 0xda, 0xc1, 0x0d, 0x09, 0xc3, 0x4a, 0x3d, 0xf4, 0x26, 0x4c, 0x3b, 0x6a, 0x98, 0x75, 0x21, - 0x0a, 0x97, 0x7b, 0x41, 0x90, 0x08, 0xd8, 0xce, 0xcd, 0x65, 0x89, 0x22, 0x9c, 0xa4, 0x85, 0x36, - 0x61, 0xc2, 0x89, 0x72, 0x28, 0x08, 0x79, 0xf8, 0xc5, 0xd2, 0x84, 0x19, 0x16, 0xee, 0x41, 0x21, - 0x7f, 0xe2, 0x18, 0x3f, 0x5d, 0x77, 0xf2, 0x47, 0x35, 0x2f, 0x8a, 0x98, 0x9a, 0x5c, 0x77, 0xb2, - 0x28, 0xc0, 0x0a, 0x95, 0x82, 0x5b, 0xee, 0xf1, 0x52, 0xb7, 0xdc, 0x03, 0x38, 0xeb, 0x93, 0xd0, - 0xdf, 0x69, 0xee, 0x98, 0x2c, 0x97, 0x89, 0x1f, 0x32, 0x2d, 0x75, 0xa2, 0x5c, 0x88, 0x14, 0x9c, - 0x45, 0x85, 0xf3, 0xf0, 0xa3, 0x4b, 0x30, 0x4c, 0x85, 0x27, 0x11, 0x82, 0x8c, 0x99, 0x3e, 0xa8, - 0x68, 0x85, 0x59, 0x29, 0x7a, 0x1f, 0x4c, 0x86, 0xc4, 0xdc, 0x70, 0x6d, 0xd3, 0x70, 0xda, 0x2d, - 0x21, 0x99, 0xc6, 0xb2, 0x48, 0x0c, 0xc2, 0x6a, 0x3d, 0xd4, 0x80, 0xa1, 0x81, 0x6d, 0x09, 0x91, - 0xf4, 0x67, 0xe4, 0x75, 0x40, 0xbb, 0x75, 0x6f, 0xb7, 0xfe, 0xce, 0xd8, 0x49, 0x56, 0x7e, 0xc9, - 0xd5, 0xfe, 0x66, 0xf7, 0x6a, 0xb8, 0xd3, 0x27, 0xc1, 0xdc, 0x6a, 0xbb, 0x85, 0x69, 0xe3, 0xbc, - 0x5b, 0xff, 0xe9, 0x23, 0xdc, 0xfa, 0xbf, 0xa5, 0xc1, 0x59, 0x23, 0x7d, 0x93, 0x41, 0x82, 0xd9, - 0x99, 0x0a, 0x5c, 0x39, 0xff, 0x7a, 0x24, 0x8e, 0x54, 0x3b, 0x9f, 0xa5, 0x87, 0xf3, 0x3a, 0x81, - 0x7c, 0x40, 0x3d, 0xbb, 0x2b, 0x33, 0x26, 0x88, 0xa9, 0x3e, 0x55, 0xce, 0x20, 0xb1, 0x94, 0xc1, - 0x84, 0x73, 0xb0, 0xa3, 0x6d, 0x98, 0x34, 0xe3, 0xfb, 0x0e, 0x96, 0xb7, 0xb6, 0xb4, 0x50, 0x97, - 0xba, 0x3c, 0x11, 0x29, 0xd1, 0x95, 0xdb, 0x14, 0x95, 0x94, 0xbc, 0xad, 0x54, 0x14, 0x67, 0x71, - 0x63, 0xc7, 0x3e, 0xfb, 0x4c, 0xf9, 0xdb, 0xca, 0x7c, 0x8c, 0x78, 0x1f, 0x6a, 0x2c, 0x16, 0x89, - 0x93, 0xcc, 0x6c, 0xc2, 0xa4, 0xe4, 0xb2, 0x6f, 0x0f, 0x53, 0x59, 0x52, 0xf8, 0xea, 0x4c, 0x15, - 0xe2, 0x34, 0x45, 0xfd, 0xbf, 0x69, 0x90, 0x11, 0x82, 0x91, 0x09, 0x63, 0x14, 0x77, 0x6b, 0xb9, - 0x23, 0xa4, 0xb1, 0xe7, 0x4b, 0x9e, 0x60, 0x0c, 0x07, 0xb7, 0x7d, 0x8a, 0x1f, 0x38, 0xc2, 0x4c, - 0xe5, 0x6a, 0x57, 0x89, 0x2d, 0x2a, 0xa4, 0xce, 0x72, 0x52, 0x82, 0x1a, 0xa4, 0x94, 0xcb, 0xd5, - 0x6a, 0x09, 0x4e, 0x10, 0xd2, 0x17, 0x01, 0x62, 0xdd, 0xa5, 0xb2, 0x73, 0xcb, 0x7f, 0x18, 0x81, - 0xf3, 0x55, 0xbd, 0xbf, 0x59, 0xf6, 0x09, 0x96, 0x1d, 0x7c, 0x7e, 0x3d, 0x24, 0xfe, 0xad, 0x5b, - 0x4b, 0x32, 0x73, 0x72, 0xc9, 0xf4, 0x17, 0x71, 0x7e, 0xf9, 0x0c, 0x46, 0x5c, 0x40, 0x89, 0xe9, - 0x6d, 0x22, 0x31, 0x26, 0xa6, 0x32, 0x1e, 0x4b, 0x8b, 0xcc, 0x23, 0x16, 0x70, 0xbd, 0x2d, 0x0d, - 0xc4, 0xd9, 0xfa, 0x69, 0x24, 0x3c, 0x53, 0x39, 0x95, 0x11, 0xb4, 0x2c, 0x12, 0x9e, 0xae, 0x3c, - 0x5b, 0x5f, 0x45, 0xc2, 0x67, 0x8a, 0xee, 0x8d, 0x91, 0x2c, 0x12, 0x09, 0xc4, 0xd9, 0xfa, 0xc8, - 0x82, 0x4b, 0x3e, 0x31, 0xbd, 0x5e, 0x8f, 0xb8, 0x16, 0x4f, 0xed, 0x64, 0xf8, 0x5d, 0xdb, 0xbd, - 0xe6, 0x1b, 0xac, 0x22, 0x13, 0x03, 0xb4, 0xc6, 0x95, 0xbd, 0xdd, 0xfa, 0x25, 0xbc, 0x4f, 0x3d, - 0xbc, 0x2f, 0x16, 0xd4, 0x83, 0x53, 0x03, 0x16, 0x8c, 0xdc, 0x6f, 0xbb, 0x21, 0xf1, 0xb7, 0x0c, - 0xa7, 0x64, 0x0a, 0x7e, 0xb6, 0x5d, 0x57, 0x93, 0xa8, 0x70, 0x1a, 0x37, 0xda, 0xa1, 0x67, 0xb3, - 0xe8, 0x8e, 0x42, 0x72, 0xbc, 0x7c, 0x7e, 0x16, 0x9c, 0x45, 0x87, 0xf3, 0x68, 0xe8, 0x7f, 0x4b, - 0x03, 0xe1, 0x5e, 0x49, 0x8f, 0x6a, 0xe5, 0xaa, 0x65, 0x3c, 0x75, 0xcd, 0x72, 0x49, 0xbc, 0xb0, - 0xac, 0xc5, 0x50, 0xe5, 0x75, 0xe5, 0xbb, 0x95, 0x50, 0x18, 0x13, 0xb1, 0x5c, 0xc3, 0x31, 0x2b, - 0x01, 0xfd, 0x7f, 0x0a, 0xc6, 0xfa, 0xbe, 0xdd, 0x33, 0xfc, 0x1d, 0x21, 0x62, 0x32, 0x81, 0x4b, - 0xdc, 0xec, 0xd1, 0xbd, 0x23, 0xa0, 0xfa, 0xf7, 0x34, 0x10, 0xad, 0x59, 0xee, 0x89, 0x43, 0xa5, - 0x20, 0x38, 0xd0, 0xc9, 0x4a, 0x49, 0x9d, 0x30, 0x54, 0x98, 0x3a, 0xe1, 0x3e, 0x65, 0x14, 0xf8, - 0xa6, 0x06, 0xa7, 0x92, 0x71, 0x49, 0x02, 0xf4, 0x2e, 0x18, 0x13, 0x11, 0xcc, 0x44, 0xf4, 0x21, - 0xfe, 0xb8, 0x5a, 0xe4, 0x19, 0x8f, 0x60, 0x49, 0x83, 0x53, 0x15, 0xb5, 0x2f, 0x3f, 0x3e, 0xca, - 0x01, 0x0a, 0xd8, 0xee, 0x0c, 0x8c, 0xf2, 0xe0, 0x57, 0xf4, 0x70, 0xcb, 0x79, 0x94, 0xb7, 0x58, - 0x21, 0xc8, 0x56, 0x99, 0x37, 0x54, 0x6a, 0xc8, 0xe5, 0xda, 0xbe, 0x21, 0x97, 0x3b, 0x3c, 0x5b, - 0x4b, 0x95, 0xfb, 0x86, 0x26, 0x6e, 0x8b, 0x94, 0xad, 0x51, 0xa6, 0x96, 0x41, 0xc2, 0x0c, 0x3f, - 0x5c, 0x41, 0xce, 0xe1, 0x43, 0xa0, 0x18, 0xe3, 0x67, 0xf6, 0x31, 0xc4, 0xc7, 0xc1, 0x85, 0x46, - 0x2a, 0x78, 0x3e, 0x8a, 0x51, 0x3f, 0x44, 0x70, 0x21, 0xb9, 0x9b, 0x46, 0x0b, 0x77, 0x53, 0x17, - 0xc6, 0xc4, 0x7e, 0x10, 0xdc, 0xf1, 0xf9, 0x2a, 0x89, 0x4f, 0x94, 0xd0, 0x98, 0xbc, 0x00, 0x47, - 0xd8, 0xe9, 0x99, 0xdb, 0x33, 0xb6, 0xed, 0xde, 0xa0, 0xc7, 0x78, 0xe2, 0x88, 0x5a, 0x95, 0x15, - 0xe3, 0x08, 0xce, 0xaa, 0x72, 0x97, 0x51, 0xa6, 0xda, 0xa8, 0x55, 0x45, 0xd6, 0xf1, 0x08, 0x8e, - 0x5e, 0x83, 0xf1, 0x9e, 0xb1, 0xdd, 0x19, 0xf8, 0x5d, 0x22, 0xec, 0xef, 0xc5, 0xa6, 0xb7, 0x41, - 0x68, 0x3b, 0x73, 0x54, 0x29, 0x0f, 0xfd, 0xb9, 0xb6, 0x1b, 0xde, 0xf2, 0x3b, 0xa1, 0x2f, 0xf3, - 0x2a, 0x2c, 0x09, 0x2c, 0x58, 0xe2, 0x43, 0x0e, 0xcc, 0xf4, 0x8c, 0xed, 0x55, 0xd7, 0x90, 0xc9, - 0x91, 0x27, 0x4b, 0x52, 0x60, 0xf7, 0xd2, 0x4b, 0x09, 0x5c, 0x38, 0x85, 0x3b, 0xe7, 0x0a, 0x7c, - 0xea, 0x7e, 0x5d, 0x81, 0xcf, 0xcb, 0x87, 0x04, 0xd3, 0x6c, 0x19, 0x3e, 0x98, 0xf7, 0x2e, 0x61, - 0xff, 0x37, 0x02, 0x1f, 0x96, 0x6f, 0x04, 0x66, 0x2a, 0x5c, 0x56, 0xee, 0xf3, 0x3e, 0x60, 0x0b, - 0x26, 0x2d, 0x23, 0x34, 0x78, 0x69, 0x30, 0x7b, 0xaa, 0x82, 0x7d, 0xb0, 0x25, 0xf1, 0x28, 0x49, - 0xf6, 0x62, 0xdc, 0x58, 0x25, 0x84, 0x6e, 0xf1, 0xe4, 0xb9, 0x0e, 0x09, 0xe3, 0x2a, 0xcc, 0x4c, - 0x7e, 0x9a, 0x5f, 0x84, 0x44, 0xa9, 0x6e, 0x33, 0x15, 0x70, 0x7e, 0xbb, 0x38, 0x40, 0xc0, 0x99, - 0xfc, 0x00, 0x01, 0xe8, 0x37, 0xf3, 0xec, 0xe9, 0xa8, 0xc2, 0x8b, 0x2e, 0xce, 0x1f, 0x4a, 0x5b, - 0xd5, 0xff, 0xbe, 0x06, 0xb3, 0xbd, 0x82, 0x6c, 0x74, 0xc2, 0xce, 0xbf, 0x5a, 0x85, 0x47, 0x14, - 0xa6, 0xb8, 0x6b, 0x3c, 0xba, 0xb7, 0x5b, 0x3f, 0x30, 0x11, 0x1e, 0x2e, 0xec, 0x5c, 0xd5, 0xf7, - 0xb0, 0x55, 0x42, 0xb1, 0xfd, 0x8e, 0x06, 0xa7, 0xd3, 0x47, 0x81, 0x9a, 0xee, 0x57, 0xbb, 0xcf, - 0xe9, 0x7e, 0x15, 0xaf, 0x96, 0xda, 0x3e, 0x5e, 0x2d, 0x2f, 0xc0, 0x85, 0xfc, 0xd5, 0x41, 0x85, - 0x33, 0x96, 0x64, 0x5b, 0x28, 0x44, 0x71, 0x2a, 0x10, 0x5a, 0x88, 0x39, 0x4c, 0xff, 0x28, 0xa4, - 0x43, 0x68, 0xa2, 0x4d, 0x98, 0x08, 0x82, 0x0d, 0x1e, 0x18, 0x4d, 0x7c, 0x65, 0x49, 0x17, 0xd7, - 0x28, 0xbc, 0x9a, 0x78, 0x01, 0x15, 0xfd, 0xc4, 0x31, 0xfe, 0xc6, 0x07, 0xbf, 0xf3, 0xc3, 0xcb, - 0xef, 0xf8, 0xa3, 0x1f, 0x5e, 0x7e, 0xc7, 0xf7, 0x7f, 0x78, 0xf9, 0x1d, 0xbf, 0xba, 0x77, 0x59, - 0xfb, 0xce, 0xde, 0x65, 0xed, 0x8f, 0xf6, 0x2e, 0x6b, 0xdf, 0xdf, 0xbb, 0xac, 0xfd, 0xbb, 0xbd, - 0xcb, 0xda, 0xdf, 0xf8, 0xb3, 0xcb, 0xef, 0x78, 0xed, 0xa9, 0x98, 0xfc, 0xd5, 0x88, 0x6a, 0xfc, - 0x4f, 0x7f, 0xb3, 0x7b, 0x95, 0x92, 0x8f, 0x5e, 0x5f, 0x73, 0xf2, 0xff, 0x2f, 0x00, 0x00, 0xff, - 0xff, 0xe9, 0x39, 0x2d, 0x17, 0x1a, 0xdf, 0x00, 0x00, + // 11502 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x6c, 0x24, 0xc9, + 0x75, 0x18, 0xae, 0x1e, 0x7e, 0x0d, 0x1f, 0x3f, 0x96, 0x5b, 0xfb, 0x71, 0xbc, 0xbd, 0xbd, 0x9d, + 0x55, 0xdf, 0x49, 0xbe, 0xfb, 0x49, 0xe6, 0xfa, 0x3e, 0x64, 0xe9, 0xd6, 0x77, 0xa7, 0xe3, 0xcc, + 0x70, 0x77, 0x47, 0x4b, 0x72, 0x79, 0x35, 0xcb, 0xbb, 0xd3, 0xc9, 0x90, 0xd4, 0xec, 0x2e, 0x0e, + 0xfb, 0xd8, 0xd3, 0x3d, 0xd7, 0xdd, 0xc3, 0x25, 0xf7, 0x64, 0xc9, 0xd6, 0x4f, 0xb6, 0x22, 0x09, + 0x96, 0x13, 0x08, 0x81, 0x84, 0x93, 0x20, 0x5b, 0x86, 0x13, 0x28, 0x48, 0x1c, 0x05, 0x02, 0xac, + 0x24, 0x4e, 0xe0, 0x3f, 0x94, 0x3f, 0x2c, 0xc8, 0x81, 0x62, 0x38, 0x4e, 0xa0, 0x18, 0x09, 0x15, + 0xd1, 0x4e, 0xec, 0x04, 0x09, 0x92, 0x20, 0xc8, 0x1f, 0x59, 0x24, 0x46, 0x50, 0x1f, 0xdd, 0x5d, + 0xfd, 0x35, 0x1c, 0x76, 0x73, 0x29, 0x1d, 0xac, 0xbf, 0xc8, 0xa9, 0x57, 0xf5, 0x5e, 0x55, 0x75, + 0xd5, 0xab, 0xf7, 0x5e, 0xbd, 0x7a, 0x0f, 0x1a, 0x1d, 0xd3, 0xdf, 0xea, 0x6f, 0x2c, 0xe8, 0x4e, + 0xf7, 0x4a, 0x47, 0x73, 0x0d, 0x62, 0x13, 0x37, 0xfa, 0xa7, 0xb7, 0xdd, 0xb9, 0xa2, 0xf5, 0x4c, + 0xef, 0x8a, 0xee, 0xb8, 0xe4, 0xca, 0xce, 0x13, 0x9a, 0xd5, 0xdb, 0xd2, 0x9e, 0xb8, 0xd2, 0xa1, + 0x40, 0xcd, 0x27, 0xc6, 0x42, 0xcf, 0x75, 0x7c, 0x07, 0x3d, 0x15, 0x21, 0x59, 0x08, 0xda, 0x46, + 0xff, 0xf4, 0xb6, 0x3b, 0x0b, 0x14, 0xc9, 0x02, 0x45, 0xb2, 0x10, 0x20, 0xb9, 0x50, 0x3f, 0x12, + 0xe5, 0x0d, 0xe2, 0xa7, 0x09, 0x5f, 0xf8, 0x69, 0x19, 0x87, 0xd3, 0x71, 0xae, 0xb0, 0xe2, 0x8d, + 0xfe, 0x26, 0xfb, 0xc5, 0x7e, 0xb0, 0xff, 0x44, 0xf5, 0xc7, 0xb7, 0xdf, 0xe7, 0x2d, 0x98, 0x0e, + 0x45, 0x7c, 0x45, 0xeb, 0xfb, 0x8e, 0xa7, 0x6b, 0x96, 0x69, 0x77, 0xae, 0xec, 0xa4, 0x31, 0xab, + 0x52, 0x55, 0xd1, 0x85, 0x81, 0x75, 0xdc, 0x0d, 0x4d, 0xcf, 0xaa, 0xf3, 0x74, 0x54, 0xa7, 0xab, + 0xe9, 0x5b, 0xa6, 0x4d, 0xdc, 0xbd, 0x60, 0x70, 0x57, 0x5c, 0xe2, 0x39, 0x7d, 0x57, 0x27, 0x47, + 0x6a, 0xe5, 0x5d, 0xe9, 0x12, 0x5f, 0xcb, 0xa2, 0x75, 0x25, 0xaf, 0x95, 0xdb, 0xb7, 0x7d, 0xb3, + 0x9b, 0x26, 0xf3, 0xb3, 0x87, 0x35, 0xf0, 0xf4, 0x2d, 0xd2, 0xd5, 0x52, 0xed, 0x9e, 0xca, 0x6b, + 0xd7, 0xf7, 0x4d, 0xeb, 0x8a, 0x69, 0xfb, 0x9e, 0xef, 0x26, 0x1b, 0xa9, 0x4f, 0xc2, 0xd8, 0xa2, + 0x61, 0x38, 0x36, 0x7a, 0x1c, 0x26, 0x88, 0xad, 0x6d, 0x58, 0xc4, 0x98, 0x57, 0x2e, 0x2b, 0x8f, + 0x55, 0xeb, 0xa7, 0xbe, 0xb3, 0x5f, 0x7b, 0xdb, 0xc1, 0x7e, 0x6d, 0x62, 0x89, 0x17, 0xe3, 0x00, + 0xae, 0x7e, 0xb1, 0x02, 0xe3, 0xac, 0x91, 0x87, 0xbe, 0xa0, 0xc0, 0x99, 0xed, 0xfe, 0x06, 0x71, + 0x6d, 0xe2, 0x13, 0xaf, 0xa9, 0x79, 0x5b, 0x1b, 0x8e, 0xe6, 0x72, 0x14, 0x53, 0x4f, 0xde, 0x58, + 0x28, 0xb0, 0x04, 0x17, 0x6e, 0xa6, 0xf1, 0xd5, 0x1f, 0x38, 0xd8, 0xaf, 0x9d, 0xc9, 0x00, 0xe0, + 0x2c, 0xea, 0xe8, 0x0e, 0x4c, 0xdb, 0x1d, 0xd3, 0xde, 0x6d, 0xd9, 0x1d, 0x97, 0x78, 0xde, 0x7c, + 0x85, 0xf5, 0x66, 0xb1, 0x50, 0x6f, 0x56, 0x25, 0x44, 0xf5, 0xb9, 0x83, 0xfd, 0xda, 0xb4, 0x5c, + 0x82, 0x63, 0x84, 0xd4, 0xbf, 0x54, 0xe0, 0xd4, 0xa2, 0xd1, 0x35, 0x3d, 0xcf, 0x74, 0xec, 0x35, + 0xab, 0xdf, 0x31, 0x6d, 0x74, 0x19, 0x46, 0x6d, 0xad, 0x4b, 0xd8, 0x94, 0x4c, 0xd6, 0xa7, 0xc5, + 0xac, 0x8e, 0xae, 0x6a, 0x5d, 0x82, 0x19, 0x04, 0xbd, 0x08, 0xe3, 0xba, 0x63, 0x6f, 0x9a, 0x1d, + 0xd1, 0xd1, 0x9f, 0x5e, 0xe0, 0x5f, 0x72, 0x41, 0xfe, 0x92, 0xac, 0x7f, 0x62, 0x05, 0x2c, 0x60, + 0xed, 0xce, 0xd2, 0xae, 0x4f, 0x6c, 0x4a, 0xa6, 0x0e, 0x07, 0xfb, 0xb5, 0xf1, 0x06, 0x43, 0x80, + 0x05, 0x22, 0xf4, 0x18, 0x54, 0x0d, 0xd3, 0xe3, 0x9f, 0x73, 0x84, 0x7d, 0xce, 0xe9, 0x83, 0xfd, + 0x5a, 0xb5, 0x29, 0xca, 0x70, 0x08, 0x45, 0xcb, 0x70, 0x96, 0x4e, 0x21, 0x6f, 0xd7, 0x26, 0xba, + 0x4b, 0x7c, 0xda, 0xb5, 0xf9, 0x51, 0xd6, 0xdd, 0xf9, 0x83, 0xfd, 0xda, 0xd9, 0x9b, 0x19, 0x70, + 0x9c, 0xd9, 0x4a, 0xbd, 0x06, 0xd5, 0x45, 0x8b, 0xb8, 0xbe, 0x69, 0x77, 0xd0, 0x55, 0x98, 0x25, + 0x5d, 0xcd, 0xb4, 0x30, 0xd1, 0x89, 0xb9, 0x43, 0x5c, 0x6f, 0x5e, 0xb9, 0x3c, 0xf2, 0xd8, 0x64, + 0x1d, 0x1d, 0xec, 0xd7, 0x66, 0x97, 0x62, 0x10, 0x9c, 0xa8, 0xa9, 0x7e, 0x52, 0x81, 0xa9, 0xc5, + 0xbe, 0x61, 0xfa, 0x7c, 0x5c, 0xc8, 0x83, 0x29, 0x8d, 0xfe, 0x5c, 0x73, 0x2c, 0x53, 0xdf, 0x13, + 0xcb, 0xeb, 0x85, 0x42, 0x1f, 0x74, 0x31, 0xc2, 0x53, 0x3f, 0x75, 0xb0, 0x5f, 0x9b, 0x92, 0x0a, + 0xb0, 0x4c, 0x45, 0xdd, 0x02, 0x19, 0x86, 0x3e, 0x08, 0xd3, 0x7c, 0xbc, 0x2b, 0x5a, 0x0f, 0x93, + 0x4d, 0xd1, 0x89, 0x47, 0xa4, 0x8f, 0x15, 0x50, 0x5a, 0xb8, 0xb5, 0xf1, 0x1a, 0xd1, 0x7d, 0x4c, + 0x36, 0x89, 0x4b, 0x6c, 0x9d, 0xf0, 0x75, 0xd3, 0x90, 0x1a, 0xe3, 0x18, 0x2a, 0xf5, 0x07, 0x0a, + 0xcc, 0x2d, 0xee, 0x68, 0xa6, 0xa5, 0x6d, 0x98, 0x96, 0xe9, 0xef, 0xbd, 0xea, 0xd8, 0x64, 0x88, + 0x85, 0xb3, 0x0e, 0x0f, 0xf4, 0x6d, 0x8d, 0xb7, 0xb3, 0xc8, 0x0a, 0x5f, 0x2a, 0xb7, 0xf7, 0x7a, + 0x84, 0x2e, 0x79, 0x3a, 0xd5, 0x0f, 0x1d, 0xec, 0xd7, 0x1e, 0x58, 0xcf, 0xae, 0x82, 0xf3, 0xda, + 0x22, 0x0c, 0xe7, 0x25, 0xd0, 0x4b, 0x8e, 0xd5, 0xef, 0x0a, 0xac, 0x23, 0x0c, 0xeb, 0x85, 0x83, + 0xfd, 0xda, 0xf9, 0xf5, 0xcc, 0x1a, 0x38, 0xa7, 0xa5, 0xfa, 0xdd, 0x0a, 0x4c, 0xd7, 0x35, 0x7d, + 0xbb, 0xdf, 0xab, 0xf7, 0xf5, 0x6d, 0xe2, 0xa3, 0x8f, 0x42, 0x95, 0x72, 0x4c, 0x43, 0xf3, 0x35, + 0x31, 0x93, 0x3f, 0x93, 0xbb, 0xec, 0xd9, 0x57, 0xa4, 0xb5, 0xa3, 0xb9, 0x5d, 0x21, 0xbe, 0x56, + 0x47, 0x62, 0x4e, 0x20, 0x2a, 0xc3, 0x21, 0x56, 0xd4, 0x81, 0x51, 0xaf, 0x47, 0x74, 0xb1, 0xa9, + 0x96, 0x0a, 0x2d, 0x16, 0xb9, 0xcb, 0xed, 0x1e, 0xd1, 0xa3, 0xcf, 0x40, 0x7f, 0x61, 0x46, 0x00, + 0x39, 0x30, 0xee, 0xf9, 0x9a, 0xdf, 0xf7, 0xd8, 0x56, 0x9b, 0x7a, 0xf2, 0x7a, 0x79, 0x52, 0x0c, + 0x5d, 0x7d, 0x56, 0x10, 0x1b, 0xe7, 0xbf, 0xb1, 0x20, 0xa3, 0x7e, 0x5f, 0x81, 0x39, 0xb9, 0xfa, + 0xb2, 0xe9, 0xf9, 0xe8, 0xe7, 0x53, 0x13, 0xba, 0x30, 0xdc, 0x84, 0xd2, 0xd6, 0x6c, 0x3a, 0xe7, + 0x04, 0xb9, 0x6a, 0x50, 0x22, 0x4d, 0xe6, 0x26, 0x8c, 0x99, 0x3e, 0xe9, 0xf2, 0x85, 0x55, 0x94, + 0x97, 0xca, 0x7d, 0xae, 0xcf, 0x08, 0x6a, 0x63, 0x2d, 0x8a, 0x17, 0x73, 0xf4, 0xea, 0x47, 0xe1, + 0xac, 0x5c, 0x6b, 0xcd, 0x75, 0x76, 0x4c, 0x83, 0xb8, 0x74, 0x33, 0xf8, 0x7b, 0xbd, 0xd4, 0x66, + 0xa0, 0x8b, 0x0b, 0x33, 0x08, 0x7a, 0x27, 0x8c, 0xbb, 0xa4, 0x63, 0x3a, 0x36, 0xfb, 0xe0, 0x93, + 0xd1, 0xe4, 0x61, 0x56, 0x8a, 0x05, 0x54, 0xfd, 0xcf, 0x95, 0xf8, 0xe4, 0xd1, 0x0f, 0x89, 0xee, + 0x40, 0xb5, 0x27, 0x48, 0x89, 0xc9, 0x6b, 0x95, 0x1e, 0x61, 0xd0, 0xf7, 0x68, 0x5e, 0x83, 0x12, + 0x1c, 0x12, 0x43, 0x26, 0xcc, 0x06, 0xff, 0x37, 0x4a, 0x9c, 0x01, 0x8c, 0xa7, 0xae, 0xc5, 0x10, + 0xe1, 0x04, 0x62, 0x74, 0x1b, 0x26, 0x3d, 0xc6, 0xa9, 0x29, 0xf3, 0x1a, 0xc9, 0x67, 0x5e, 0xed, + 0xa0, 0x92, 0x60, 0x5e, 0xa7, 0x45, 0xf7, 0x27, 0x43, 0x00, 0x8e, 0x10, 0xa1, 0x8b, 0x30, 0xea, + 0x11, 0x62, 0x88, 0xf3, 0xa2, 0xca, 0xb6, 0x06, 0x21, 0x06, 0x66, 0xa5, 0xea, 0x6f, 0x8e, 0x02, + 0x4a, 0x2f, 0x6c, 0x79, 0xd4, 0xbc, 0x44, 0x4c, 0x7a, 0x99, 0x51, 0x8b, 0x3d, 0x92, 0x40, 0x8c, + 0xde, 0x80, 0x19, 0x4b, 0xf3, 0xfc, 0x5b, 0x3d, 0x2a, 0xf6, 0x04, 0xab, 0x63, 0xea, 0xc9, 0x7a, + 0xa1, 0xcf, 0xbb, 0x2c, 0x63, 0xaa, 0x9f, 0x3e, 0xd8, 0xaf, 0xcd, 0xc4, 0x8a, 0x70, 0x9c, 0x16, + 0xda, 0x86, 0x49, 0x5a, 0xb0, 0xe4, 0xba, 0x8e, 0x2b, 0xa6, 0xfc, 0xf9, 0xc2, 0x84, 0x19, 0x96, + 0xfa, 0x0c, 0xfd, 0x12, 0xe1, 0x4f, 0x1c, 0xe1, 0x47, 0x1f, 0x00, 0xe4, 0x6c, 0x78, 0xc4, 0xdd, + 0x21, 0xc6, 0x75, 0x2e, 0xe5, 0xd1, 0xe1, 0xd2, 0xef, 0x32, 0x52, 0xbf, 0x20, 0xbe, 0x21, 0xba, + 0x95, 0xaa, 0x81, 0x33, 0x5a, 0xa1, 0x6d, 0x40, 0xa1, 0xa4, 0x18, 0x7e, 0xf6, 0xf9, 0xb1, 0xe1, + 0x17, 0xcd, 0x79, 0x4a, 0xec, 0x7a, 0x0a, 0x05, 0xce, 0x40, 0xab, 0xfe, 0x7e, 0x05, 0xa6, 0xf8, + 0x22, 0x59, 0xb2, 0x7d, 0x77, 0xef, 0x04, 0x8e, 0x86, 0xcd, 0xd8, 0xd1, 0xd0, 0x2c, 0xb1, 0xd5, + 0x59, 0x8f, 0x73, 0x4f, 0x06, 0x3b, 0x71, 0x32, 0x5c, 0x2b, 0x4d, 0x69, 0xf0, 0xc1, 0xf0, 0xaf, + 0x15, 0x38, 0x25, 0xd5, 0x3e, 0x81, 0x73, 0x81, 0xc4, 0xcf, 0x85, 0x17, 0xca, 0x0e, 0x30, 0xe7, + 0x58, 0xd0, 0x63, 0xe3, 0x62, 0x2c, 0xfb, 0x49, 0x80, 0x0d, 0xc6, 0x53, 0x56, 0x23, 0x21, 0x29, + 0xfc, 0xea, 0xf5, 0x10, 0x82, 0xa5, 0x5a, 0x21, 0xb3, 0xaa, 0x64, 0x32, 0xab, 0x3f, 0x1f, 0x81, + 0xd3, 0xa9, 0xb9, 0x4e, 0x33, 0x10, 0xe5, 0x47, 0xc5, 0x40, 0x2a, 0x3f, 0x12, 0x06, 0x32, 0x52, + 0x88, 0x81, 0x3c, 0x06, 0x55, 0x3a, 0xa7, 0x92, 0x2a, 0xc1, 0x14, 0x90, 0xb6, 0x28, 0xc3, 0x21, + 0x14, 0xb9, 0x80, 0xba, 0x66, 0x87, 0x37, 0x6b, 0xfb, 0x9a, 0xeb, 0xdf, 0x36, 0xbb, 0x44, 0xb0, + 0x9a, 0xff, 0x6f, 0xb8, 0x95, 0x4a, 0x5b, 0x70, 0x8e, 0xb3, 0x92, 0xc2, 0x84, 0x33, 0xb0, 0xab, + 0x7f, 0x34, 0x0a, 0xd0, 0x58, 0xc4, 0x8e, 0xcf, 0x3b, 0xfb, 0x7e, 0x18, 0xeb, 0x6d, 0x69, 0x5e, + 0xb0, 0x8a, 0x1e, 0x0f, 0x96, 0xe0, 0x1a, 0x2d, 0xbc, 0xb7, 0x5f, 0x9b, 0x6f, 0xb8, 0xc4, 0x20, + 0xb6, 0x6f, 0x6a, 0x96, 0x17, 0x34, 0x62, 0x30, 0xcc, 0xdb, 0xd1, 0x31, 0xd0, 0x69, 0x6c, 0x38, + 0xdd, 0x9e, 0x45, 0x28, 0x94, 0x8d, 0xa1, 0x52, 0x6c, 0x0c, 0xcb, 0x29, 0x4c, 0x38, 0x03, 0x7b, + 0x40, 0xb3, 0x65, 0x9b, 0xbe, 0xa9, 0x85, 0x34, 0x47, 0x8a, 0xd3, 0x8c, 0x63, 0xc2, 0x19, 0xd8, + 0xd1, 0x67, 0x15, 0xb8, 0x10, 0x2f, 0xbe, 0x66, 0xda, 0xa6, 0xb7, 0x45, 0x0c, 0x46, 0x7c, 0xf4, + 0xc8, 0xc4, 0x2f, 0x1d, 0xec, 0xd7, 0x2e, 0x2c, 0xe7, 0x62, 0xc4, 0x03, 0xa8, 0xa1, 0x5f, 0x55, + 0xe0, 0xa1, 0xc4, 0xbc, 0xb8, 0x66, 0xa7, 0x43, 0x5c, 0xd1, 0x9b, 0xa3, 0x2f, 0xa1, 0xda, 0xc1, + 0x7e, 0xed, 0xa1, 0xe5, 0x7c, 0x94, 0x78, 0x10, 0x3d, 0xf5, 0x9f, 0x29, 0x30, 0xd2, 0xc0, 0x2d, + 0xf4, 0xae, 0x98, 0xde, 0xf6, 0x80, 0xac, 0xb7, 0xdd, 0xdb, 0xaf, 0x4d, 0x34, 0x70, 0x4b, 0x52, + 0xe1, 0x3e, 0xaf, 0xc0, 0x69, 0xdd, 0xb1, 0x7d, 0x8d, 0xf6, 0x0b, 0x73, 0x21, 0x27, 0x60, 0xa6, + 0xc5, 0x54, 0x96, 0x46, 0x02, 0x5b, 0xfd, 0x41, 0xd1, 0x83, 0xd3, 0x49, 0x88, 0x87, 0xd3, 0xa4, + 0xd5, 0x7f, 0xa3, 0xc0, 0x74, 0xc3, 0x72, 0xfa, 0xc6, 0x9a, 0xeb, 0x6c, 0x9a, 0x16, 0x79, 0x8b, + 0x28, 0x6a, 0x72, 0x97, 0xf3, 0x8e, 0x63, 0xa6, 0x37, 0xc9, 0x15, 0xdf, 0x2a, 0x7a, 0x93, 0xdc, + 0xe7, 0x9c, 0x03, 0xf2, 0xcb, 0x13, 0xf1, 0xa1, 0xb1, 0x23, 0xf2, 0x31, 0xa8, 0xea, 0x5a, 0xbd, + 0x6f, 0x1b, 0x56, 0xa8, 0x38, 0xd1, 0x6e, 0x36, 0x16, 0x79, 0x19, 0x0e, 0xa1, 0xe8, 0x0d, 0x80, + 0xc8, 0x90, 0x26, 0x3e, 0xc4, 0xf5, 0x92, 0xd6, 0xbb, 0x36, 0xf1, 0x7d, 0xd3, 0xee, 0x78, 0xd1, + 0xd7, 0x8f, 0x60, 0x58, 0x22, 0x87, 0x3e, 0x0e, 0x33, 0x62, 0x9a, 0x5b, 0x5d, 0xad, 0x23, 0xcc, + 0x0c, 0x45, 0xe7, 0x6a, 0x45, 0xc2, 0x54, 0x3f, 0x27, 0x28, 0xcf, 0xc8, 0xa5, 0x1e, 0x8e, 0x93, + 0x43, 0x77, 0x61, 0xba, 0x2b, 0xdb, 0x4e, 0x46, 0x4b, 0x88, 0x32, 0x92, 0x21, 0xa5, 0x7e, 0x56, + 0x50, 0x9f, 0x8e, 0x99, 0x5d, 0x62, 0xb4, 0x32, 0xf4, 0xbf, 0xb1, 0xfb, 0xa5, 0xff, 0x6d, 0xc2, + 0x04, 0x57, 0x81, 0xbd, 0xf9, 0x71, 0x36, 0xc2, 0x9f, 0x2b, 0x34, 0x42, 0xae, 0x4e, 0x47, 0xe6, + 0x61, 0xfe, 0xdb, 0xc3, 0x01, 0x72, 0x74, 0x07, 0xa6, 0xe9, 0xe1, 0xde, 0x26, 0x16, 0xd1, 0x7d, + 0xc7, 0x9d, 0x9f, 0x28, 0x61, 0x7d, 0x6d, 0x4b, 0x88, 0xb8, 0x15, 0x4d, 0x2e, 0xc1, 0x31, 0x42, + 0xa1, 0x8d, 0xa0, 0x9a, 0x6b, 0x23, 0xd8, 0x81, 0xa9, 0x1d, 0xc9, 0x9c, 0x35, 0xc9, 0xa6, 0xe1, + 0xfd, 0x85, 0x7a, 0x16, 0x19, 0xb7, 0xea, 0x67, 0x04, 0xa5, 0x29, 0xd9, 0x10, 0x26, 0x13, 0x52, + 0xf7, 0xab, 0x70, 0xba, 0x61, 0xf5, 0x3d, 0x9f, 0xb8, 0x8b, 0xe2, 0x86, 0x83, 0xb8, 0xe8, 0x93, + 0x0a, 0x9c, 0x67, 0xff, 0x36, 0x9d, 0x3b, 0x76, 0x93, 0x58, 0xda, 0xde, 0xe2, 0x26, 0xad, 0x61, + 0x18, 0x47, 0x63, 0x44, 0xcd, 0xbe, 0x90, 0x27, 0x99, 0x61, 0xae, 0x9d, 0x89, 0x11, 0xe7, 0x50, + 0x42, 0x9f, 0x53, 0xe0, 0xc1, 0x0c, 0x50, 0x93, 0x58, 0xc4, 0x0f, 0x44, 0x98, 0xa3, 0xf6, 0xe3, + 0xe1, 0x83, 0xfd, 0xda, 0x83, 0xed, 0x3c, 0xa4, 0x38, 0x9f, 0x1e, 0x3d, 0x0e, 0x2f, 0x64, 0x40, + 0xaf, 0x69, 0xa6, 0xd5, 0x77, 0x03, 0xe9, 0xe6, 0xa8, 0xdd, 0x61, 0x42, 0x46, 0x3b, 0x17, 0x2b, + 0x1e, 0x40, 0x11, 0x7d, 0x02, 0xce, 0x85, 0xd0, 0x75, 0xdb, 0x26, 0xc4, 0x88, 0xc9, 0x3a, 0x47, + 0xed, 0xca, 0x83, 0x07, 0xfb, 0xb5, 0x73, 0xed, 0x2c, 0x84, 0x38, 0x9b, 0x0e, 0xea, 0xc0, 0xc3, + 0x11, 0xc0, 0x37, 0x2d, 0xf3, 0x2e, 0x17, 0xc7, 0xb6, 0x5c, 0xe2, 0x6d, 0x39, 0x96, 0xc1, 0xf8, + 0x85, 0x52, 0x7f, 0xfb, 0xc1, 0x7e, 0xed, 0xe1, 0xf6, 0xa0, 0x8a, 0x78, 0x30, 0x1e, 0x64, 0xc0, + 0xb4, 0xa7, 0x6b, 0x76, 0xcb, 0xf6, 0x89, 0xbb, 0xa3, 0x59, 0xf3, 0xe3, 0x85, 0x06, 0xc8, 0xf7, + 0xa8, 0x84, 0x07, 0xc7, 0xb0, 0xa2, 0xf7, 0x41, 0x95, 0xec, 0xf6, 0x34, 0xdb, 0x20, 0x9c, 0x31, + 0x4c, 0xd6, 0x2f, 0xd2, 0x23, 0x69, 0x49, 0x94, 0xdd, 0xdb, 0xaf, 0x4d, 0x07, 0xff, 0xaf, 0x38, + 0x06, 0xc1, 0x61, 0x6d, 0xf4, 0x31, 0x38, 0xdb, 0xd5, 0x76, 0x57, 0x1d, 0x83, 0x30, 0x3e, 0xe7, + 0x05, 0x12, 0x6f, 0xb5, 0x50, 0x3f, 0xd9, 0xc5, 0xc6, 0x4a, 0x06, 0x3e, 0x9c, 0x49, 0x85, 0x7e, + 0x86, 0xae, 0xb6, 0x7b, 0xdd, 0xd5, 0x74, 0xb2, 0xd9, 0xb7, 0x6e, 0x13, 0xb7, 0x6b, 0xda, 0x5c, + 0xa9, 0x20, 0xba, 0x63, 0x1b, 0x94, 0x97, 0x28, 0x8f, 0x8d, 0xf1, 0xcf, 0xb0, 0x32, 0xa8, 0x22, + 0x1e, 0x8c, 0x07, 0x3d, 0x0d, 0xd3, 0x66, 0xc7, 0x76, 0x5c, 0x72, 0x5b, 0x33, 0x6d, 0xdf, 0x9b, + 0x07, 0x66, 0x72, 0x67, 0xd3, 0xda, 0x92, 0xca, 0x71, 0xac, 0x96, 0xba, 0x3f, 0x02, 0x93, 0x0d, + 0xc7, 0x36, 0x4c, 0xa6, 0xcf, 0x3c, 0x11, 0x33, 0x96, 0x3e, 0x2c, 0x33, 0xc2, 0x7b, 0xfb, 0xb5, + 0x99, 0xb0, 0xa2, 0xc4, 0x19, 0x9f, 0x09, 0x2d, 0x15, 0x5c, 0x37, 0x7e, 0x7b, 0xdc, 0xc2, 0x70, + 0x6f, 0xbf, 0x76, 0x2a, 0x6c, 0x16, 0x37, 0x3a, 0xa0, 0x1d, 0xae, 0x88, 0xdc, 0x76, 0x35, 0xdb, + 0x33, 0x4b, 0x28, 0x22, 0xa1, 0x8a, 0xb9, 0x9c, 0xc2, 0x86, 0x33, 0x28, 0xa0, 0xd7, 0x60, 0x96, + 0x96, 0xae, 0xf7, 0x0c, 0xcd, 0x27, 0x05, 0xf5, 0x8f, 0xf3, 0x82, 0xe6, 0xec, 0x72, 0x0c, 0x13, + 0x4e, 0x60, 0xe6, 0xc6, 0x65, 0xcd, 0x73, 0x6c, 0xb6, 0xdd, 0x62, 0xc6, 0x65, 0x5a, 0x8a, 0x05, + 0x14, 0x3d, 0x0e, 0x13, 0x5d, 0xe2, 0x79, 0x5a, 0x87, 0xb0, 0xfd, 0x33, 0x19, 0x1d, 0x93, 0x2b, + 0xbc, 0x18, 0x07, 0x70, 0xf4, 0x6e, 0x18, 0xd3, 0x1d, 0x83, 0x78, 0xf3, 0x13, 0xec, 0x0b, 0x53, + 0x35, 0x6c, 0xac, 0x41, 0x0b, 0xee, 0xed, 0xd7, 0x26, 0x99, 0x42, 0x4e, 0x7f, 0x61, 0x5e, 0x49, + 0xfd, 0x75, 0x2a, 0xba, 0x26, 0x84, 0xf5, 0xbc, 0x1b, 0x22, 0xfe, 0x59, 0x99, 0x7a, 0x71, 0x72, + 0xe6, 0x65, 0xf5, 0x4b, 0x54, 0x71, 0x70, 0x6c, 0xdf, 0x75, 0xac, 0x35, 0x4b, 0xb3, 0x09, 0xfa, + 0xb4, 0x02, 0x73, 0x5b, 0x66, 0x67, 0x4b, 0xbe, 0xd8, 0x12, 0x07, 0x5b, 0x31, 0x19, 0xff, 0x46, + 0x02, 0x59, 0xfd, 0xec, 0xc1, 0x7e, 0x6d, 0x2e, 0x59, 0x8a, 0x53, 0x44, 0xd5, 0xcf, 0x54, 0xe0, + 0xac, 0xe8, 0x9a, 0x45, 0x8f, 0x9a, 0x9e, 0xe5, 0xec, 0x75, 0x89, 0x7d, 0x12, 0x97, 0x50, 0x81, + 0x4c, 0x52, 0xc9, 0x95, 0x49, 0xba, 0xa9, 0x4f, 0x34, 0x52, 0xe4, 0x13, 0x85, 0x2b, 0xf9, 0x90, + 0xcf, 0xf4, 0x17, 0x0a, 0xcc, 0x67, 0xcd, 0xc5, 0x09, 0xe8, 0x42, 0x76, 0x5c, 0x17, 0x6a, 0x15, + 0x56, 0x6f, 0x93, 0x7d, 0xcf, 0xd1, 0x89, 0xfe, 0xa2, 0x02, 0xe7, 0xa3, 0xea, 0x2d, 0xdb, 0xf3, + 0x35, 0xcb, 0xe2, 0x16, 0x9f, 0xfb, 0xff, 0xe1, 0x5f, 0x8f, 0x29, 0xb5, 0xb7, 0x4a, 0x8e, 0x55, + 0xee, 0x7c, 0xae, 0xb5, 0x79, 0x2f, 0x61, 0x6d, 0x7e, 0xf1, 0x38, 0x89, 0x0e, 0x36, 0x3c, 0xff, + 0x17, 0x05, 0x2e, 0x64, 0x37, 0x3c, 0x81, 0x75, 0xd5, 0x8b, 0xaf, 0xab, 0x9b, 0xc7, 0x38, 0xec, + 0x9c, 0x95, 0xf5, 0xcd, 0x4a, 0xde, 0x70, 0x99, 0xde, 0xbd, 0x09, 0xa7, 0xa8, 0x32, 0xe4, 0xf9, + 0xc2, 0x40, 0x7a, 0x34, 0x67, 0x81, 0xc0, 0x62, 0x74, 0x0a, 0xc7, 0x71, 0xe0, 0x24, 0x52, 0xb4, + 0x0a, 0x13, 0x54, 0x01, 0xa2, 0xf8, 0x2b, 0xc3, 0xe3, 0x0f, 0x8f, 0xa4, 0x36, 0x6f, 0x8b, 0x03, + 0x24, 0xe8, 0xe7, 0x61, 0xc6, 0x08, 0x37, 0xd5, 0x21, 0xb7, 0x84, 0x49, 0xac, 0xcc, 0x96, 0xdd, + 0x94, 0x5b, 0xe3, 0x38, 0x32, 0xf5, 0xff, 0x2a, 0x70, 0x71, 0xd0, 0xe2, 0x42, 0x2e, 0x80, 0x1e, + 0xc8, 0x18, 0xdc, 0x59, 0xa4, 0xa8, 0xb5, 0x3b, 0x14, 0x55, 0xa2, 0x4d, 0x1a, 0x16, 0x79, 0x58, + 0xa2, 0x92, 0x71, 0x13, 0x59, 0xb9, 0x4f, 0x37, 0x91, 0xea, 0x7f, 0x55, 0x64, 0x76, 0x24, 0x7f, + 0xdc, 0xb7, 0x1c, 0x3b, 0x92, 0x3b, 0x9f, 0x6b, 0x6d, 0xfb, 0xe3, 0x0a, 0x5c, 0xce, 0x6e, 0x22, + 0x9d, 0xc0, 0x2f, 0xc0, 0x78, 0x8f, 0xfb, 0xf4, 0x8c, 0xb0, 0x13, 0xf2, 0x31, 0xca, 0x5c, 0xb8, + 0xc3, 0xcd, 0xbd, 0xfd, 0xda, 0x85, 0x2c, 0x6e, 0x2f, 0x5c, 0x75, 0x44, 0x3b, 0x64, 0x26, 0xcc, + 0x0d, 0x5c, 0x08, 0x7c, 0x6a, 0x48, 0xfe, 0xa2, 0x6d, 0x10, 0x6b, 0x68, 0x03, 0xc3, 0x27, 0x15, + 0x98, 0x8d, 0xad, 0x69, 0x6f, 0x7e, 0x8c, 0xad, 0xd2, 0x62, 0x97, 0x41, 0xb1, 0xdd, 0x12, 0x1d, + 0xe0, 0xb1, 0x62, 0x0f, 0x27, 0x28, 0x26, 0x58, 0xad, 0x3c, 0xad, 0x6f, 0x3d, 0x56, 0x2b, 0xf7, + 0x3e, 0x87, 0xd5, 0x7e, 0xb5, 0x92, 0x37, 0x5c, 0xc6, 0x6a, 0x77, 0x61, 0x32, 0xf0, 0xd7, 0x0c, + 0x58, 0xc6, 0xf5, 0xd2, 0x9d, 0xe2, 0xf8, 0x22, 0xc7, 0x87, 0xa0, 0xc4, 0xc3, 0x11, 0x31, 0xf4, + 0xcb, 0x0a, 0x40, 0xf4, 0x69, 0xc4, 0xc6, 0x5a, 0x3f, 0xc6, 0x09, 0x91, 0xe4, 0x9b, 0x59, 0xba, + 0xaf, 0xa5, 0x75, 0x21, 0x11, 0x56, 0xbf, 0x31, 0x02, 0x28, 0xdd, 0x79, 0x2a, 0x78, 0x6e, 0x9b, + 0xb6, 0x91, 0xd4, 0x0d, 0x6e, 0x9a, 0xb6, 0x81, 0x19, 0x64, 0x08, 0xd1, 0xf4, 0x39, 0x38, 0xd5, + 0xb1, 0x9c, 0x0d, 0xcd, 0xb2, 0xf6, 0x84, 0x13, 0xa8, 0x70, 0x26, 0x3c, 0x43, 0x8f, 0xa7, 0xeb, + 0x71, 0x10, 0x4e, 0xd6, 0x45, 0x3d, 0x98, 0x73, 0xa9, 0x56, 0xab, 0x9b, 0x16, 0xd3, 0xa2, 0x9c, + 0xbe, 0x5f, 0xd0, 0x6c, 0xc2, 0x04, 0x7d, 0x9c, 0xc0, 0x85, 0x53, 0xd8, 0xd1, 0x3b, 0x60, 0xa2, + 0xe7, 0x9a, 0x5d, 0xcd, 0xdd, 0x63, 0x7a, 0x5a, 0xb5, 0x3e, 0x45, 0xcf, 0xb9, 0x35, 0x5e, 0x84, + 0x03, 0x18, 0xfa, 0x05, 0x98, 0xb4, 0xcc, 0x4d, 0xa2, 0xef, 0xe9, 0x16, 0x11, 0x76, 0x8e, 0xb5, + 0x63, 0x5a, 0x34, 0xcb, 0x01, 0x5e, 0x71, 0xcf, 0x1a, 0xfc, 0xc4, 0x11, 0x45, 0xf5, 0xb3, 0x15, + 0x78, 0x68, 0x40, 0x4b, 0x84, 0xe9, 0x9a, 0x16, 0x23, 0x13, 0xdf, 0xef, 0x69, 0xbe, 0x0c, 0x45, + 0xe1, 0xbd, 0xfd, 0xda, 0x23, 0x03, 0x10, 0xb4, 0xe9, 0x02, 0x22, 0x9d, 0x3d, 0x1c, 0xa1, 0x41, + 0x2d, 0x18, 0x37, 0x22, 0x93, 0xde, 0x64, 0xfd, 0x09, 0xca, 0x67, 0xb9, 0xd1, 0x6d, 0x58, 0x6c, + 0x02, 0x01, 0x5a, 0x86, 0x09, 0x7e, 0xa5, 0x4a, 0x04, 0xcf, 0x7e, 0x92, 0xe9, 0xb7, 0xbc, 0x68, + 0x58, 0x64, 0x01, 0x0a, 0xf5, 0x7f, 0x2b, 0x30, 0xd1, 0x70, 0x5c, 0xd2, 0x5c, 0x6d, 0xa3, 0xbb, + 0x30, 0x25, 0x39, 0x80, 0x0b, 0xf6, 0x55, 0x74, 0x3b, 0x33, 0x94, 0x8b, 0x11, 0xba, 0xc0, 0xd9, + 0x33, 0x2c, 0xc0, 0x32, 0x31, 0xe4, 0xd2, 0x49, 0xbf, 0xe3, 0x9a, 0x3e, 0xa5, 0x5c, 0xea, 0x26, + 0x8a, 0x53, 0xc6, 0x01, 0x32, 0xbe, 0x10, 0xc2, 0x9f, 0x38, 0x22, 0xa3, 0xae, 0xd1, 0x9d, 0x9b, + 0xec, 0x27, 0xba, 0x0a, 0xa3, 0x5d, 0xc7, 0x08, 0xbe, 0xfc, 0x3b, 0x83, 0x7d, 0xb9, 0xe2, 0x18, + 0x74, 0x76, 0xcf, 0xa7, 0x5b, 0x30, 0x43, 0x19, 0x6b, 0xa3, 0xae, 0xc2, 0x5c, 0x92, 0x3e, 0xba, + 0x0a, 0xb3, 0xba, 0xd3, 0xed, 0x3a, 0x76, 0xbb, 0xbf, 0xb9, 0x69, 0xee, 0x92, 0x98, 0x1f, 0x6e, + 0x23, 0x06, 0xc1, 0x89, 0x9a, 0xea, 0x57, 0x14, 0x18, 0xa1, 0x5f, 0x46, 0x85, 0x71, 0xc3, 0xe9, + 0x6a, 0xa6, 0x2d, 0x7a, 0xc5, 0x7c, 0x8e, 0x9b, 0xac, 0x04, 0x0b, 0x08, 0x7a, 0x1d, 0x26, 0x03, + 0x89, 0xa7, 0x9c, 0x3b, 0x48, 0x73, 0xb5, 0x1d, 0xfa, 0xce, 0x85, 0x3c, 0x38, 0x28, 0xf1, 0x70, + 0x44, 0x45, 0xd5, 0xe0, 0x74, 0x73, 0xb5, 0xdd, 0xb2, 0x75, 0xab, 0x6f, 0x90, 0xa5, 0x5d, 0xf6, + 0x87, 0x32, 0x01, 0x93, 0x97, 0x88, 0x81, 0x32, 0x26, 0x20, 0x2a, 0xe1, 0x00, 0x46, 0xab, 0x11, + 0xde, 0x42, 0x38, 0xcb, 0xb2, 0x6a, 0x02, 0x09, 0x0e, 0x60, 0xea, 0x9f, 0x54, 0x60, 0x4a, 0xea, + 0x10, 0xea, 0xc2, 0x04, 0x1f, 0x6f, 0xe0, 0xb3, 0x76, 0xad, 0xe8, 0x18, 0xe3, 0xdd, 0xe6, 0xe4, + 0xf9, 0x94, 0x7a, 0x38, 0xa0, 0x21, 0x73, 0xb4, 0xca, 0x00, 0x8e, 0xb6, 0x00, 0xe0, 0x45, 0xbe, + 0xdb, 0x7c, 0x5b, 0xb2, 0x43, 0x43, 0xf2, 0xd8, 0x96, 0x6a, 0xa0, 0x8b, 0x82, 0xf7, 0x4b, 0x5e, + 0x7b, 0x12, 0xdf, 0xef, 0xc0, 0xd8, 0x5d, 0xc7, 0x26, 0x9e, 0xb8, 0x8b, 0x3a, 0xae, 0x11, 0x4e, + 0xd2, 0xc3, 0xfd, 0x55, 0x8a, 0x18, 0x73, 0xfc, 0xea, 0xd7, 0x14, 0x80, 0xa6, 0xe6, 0x6b, 0xfc, + 0xe2, 0x64, 0x08, 0x8f, 0xe7, 0x8b, 0xb1, 0x33, 0xab, 0x9a, 0x72, 0x01, 0x1d, 0xf5, 0xcc, 0xbb, + 0xc1, 0xf8, 0x43, 0x81, 0x98, 0x63, 0x6f, 0x9b, 0x77, 0x09, 0x66, 0x70, 0xf4, 0x2e, 0x98, 0x24, + 0xb6, 0xee, 0xee, 0xf5, 0x7c, 0xe1, 0xb8, 0x58, 0xe5, 0x9b, 0x74, 0x29, 0x28, 0xc4, 0x11, 0x5c, + 0x7d, 0x02, 0xe2, 0x6a, 0xcd, 0xe1, 0xbd, 0x54, 0x7f, 0x38, 0x0a, 0x0f, 0x2e, 0xdd, 0x6e, 0x34, + 0x05, 0x3e, 0xd3, 0xb1, 0x6f, 0x92, 0xbd, 0x9f, 0x78, 0x9b, 0xfc, 0xc4, 0xdb, 0xe4, 0x18, 0xbd, + 0x4d, 0xee, 0x29, 0x30, 0xb7, 0xb4, 0xdb, 0x33, 0x5d, 0xe6, 0x69, 0x4f, 0x5c, 0xaa, 0x86, 0xa2, + 0xc7, 0x61, 0x62, 0x87, 0xff, 0x2b, 0x16, 0x57, 0xa8, 0xeb, 0x8b, 0x1a, 0x38, 0x80, 0xa3, 0x4d, + 0x98, 0x25, 0xac, 0x39, 0x13, 0x35, 0x35, 0xbf, 0xc8, 0x02, 0xe2, 0x2f, 0x39, 0x62, 0x58, 0x70, + 0x02, 0x2b, 0x6a, 0xc3, 0xac, 0x6e, 0x69, 0x9e, 0x67, 0x6e, 0x9a, 0x7a, 0xe4, 0x50, 0x36, 0x59, + 0x7f, 0x17, 0x3b, 0x7d, 0x62, 0x90, 0x7b, 0xfb, 0xb5, 0x73, 0xa2, 0x9f, 0x71, 0x00, 0x4e, 0xa0, + 0x50, 0xdf, 0xac, 0xc0, 0xcc, 0xd2, 0x6e, 0xcf, 0xf1, 0xfa, 0x2e, 0x61, 0x55, 0x4f, 0x40, 0x83, + 0x7e, 0x1c, 0x26, 0xb6, 0x34, 0xdb, 0xb0, 0x88, 0x2b, 0xb8, 0x4f, 0x38, 0xb7, 0x37, 0x78, 0x31, + 0x0e, 0xe0, 0xe8, 0x63, 0x00, 0x9e, 0xbe, 0x45, 0x8c, 0x3e, 0x13, 0x63, 0xf8, 0x26, 0x59, 0x2e, + 0xc4, 0x44, 0x63, 0x83, 0x6c, 0x87, 0x38, 0x05, 0x6f, 0x0f, 0x7f, 0x63, 0x89, 0x9e, 0xfa, 0x27, + 0x0a, 0x9c, 0x8e, 0xb5, 0x3b, 0x01, 0xbd, 0xb0, 0x13, 0xd7, 0x0b, 0xeb, 0xe5, 0x07, 0x9b, 0xa3, + 0x0e, 0x7e, 0xb6, 0x02, 0x0f, 0xe4, 0x4c, 0x4a, 0xca, 0xf1, 0x40, 0x39, 0x29, 0xc7, 0x83, 0x1d, + 0x98, 0xf2, 0x1d, 0x4b, 0xb8, 0x3e, 0x06, 0x73, 0x50, 0xcc, 0xad, 0xe0, 0x76, 0x88, 0x27, 0x72, + 0x2b, 0x88, 0xca, 0x3c, 0x2c, 0x13, 0x52, 0xbf, 0xad, 0xc0, 0x64, 0x68, 0x83, 0x1a, 0xe2, 0x89, + 0xc4, 0x09, 0x3e, 0x36, 0x18, 0xfa, 0x01, 0x9a, 0xfa, 0xcf, 0x2b, 0x70, 0x3e, 0xc4, 0x1d, 0x28, + 0x0c, 0x6d, 0x9f, 0xf2, 0x8e, 0xc3, 0x75, 0xd8, 0x8b, 0xe2, 0x2c, 0x96, 0xe4, 0x01, 0x49, 0x5a, + 0xa0, 0xc2, 0x53, 0xdf, 0xed, 0x39, 0x5e, 0x20, 0x12, 0x70, 0xe1, 0x89, 0x17, 0xe1, 0x00, 0x86, + 0x56, 0x61, 0xcc, 0xa3, 0xf4, 0xc4, 0x89, 0x72, 0xc4, 0xd9, 0x60, 0x52, 0x0d, 0xeb, 0x2f, 0xe6, + 0x68, 0xd0, 0x1b, 0xb2, 0x4d, 0x82, 0x1b, 0x88, 0x3e, 0x70, 0xb4, 0xc5, 0xc0, 0xde, 0xd5, 0x2e, + 0xd0, 0x91, 0x18, 0xc1, 0x8c, 0x64, 0xbc, 0xc7, 0xc8, 0x32, 0x4b, 0xa8, 0xcb, 0x30, 0x27, 0x7c, + 0x17, 0xf8, 0xb2, 0xb1, 0x75, 0x82, 0xde, 0x17, 0x5b, 0x19, 0x8f, 0x26, 0xee, 0x83, 0xcf, 0x26, + 0xeb, 0x47, 0x2b, 0x46, 0xf5, 0xa0, 0x7a, 0x5d, 0x74, 0x12, 0x5d, 0x80, 0x8a, 0x19, 0x7c, 0x0b, + 0x10, 0x38, 0x2a, 0xad, 0x26, 0xae, 0x98, 0x46, 0x28, 0x13, 0x55, 0x72, 0x25, 0x37, 0xe9, 0x68, + 0x1a, 0x19, 0x7c, 0x34, 0xa9, 0xff, 0xa1, 0x02, 0x67, 0x03, 0xaa, 0xc1, 0x18, 0x9b, 0xe2, 0x32, + 0xed, 0x10, 0xf9, 0xf0, 0x70, 0x9b, 0xc6, 0x2d, 0x18, 0x65, 0x3c, 0xb0, 0xd0, 0x25, 0x5b, 0x88, + 0x90, 0x76, 0x07, 0x33, 0x44, 0xe8, 0x17, 0x60, 0xdc, 0xd2, 0x36, 0x88, 0x15, 0xf8, 0x8d, 0x15, + 0x33, 0x01, 0x65, 0x8d, 0x97, 0x5b, 0x27, 0x3d, 0xee, 0x17, 0x1f, 0xde, 0xbc, 0xf0, 0x42, 0x2c, + 0x88, 0x5e, 0x78, 0x06, 0xa6, 0xa4, 0x6a, 0x68, 0x0e, 0x46, 0xb6, 0x09, 0xbf, 0x66, 0x9d, 0xc4, + 0xf4, 0x5f, 0x74, 0x16, 0xc6, 0x76, 0x34, 0xab, 0x2f, 0xe6, 0x04, 0xf3, 0x1f, 0x57, 0x2b, 0xef, + 0x53, 0xd4, 0x6f, 0x28, 0x30, 0x75, 0xc3, 0xdc, 0x20, 0x2e, 0xf7, 0x40, 0x60, 0x1a, 0x51, 0xec, + 0x09, 0xf0, 0x54, 0xd6, 0xf3, 0x5f, 0xb4, 0x07, 0x93, 0xe2, 0xb4, 0x09, 0x3d, 0x55, 0x6f, 0x14, + 0xbc, 0xcf, 0x0d, 0x69, 0x0b, 0x2e, 0x2e, 0x3f, 0x36, 0x0a, 0x48, 0xe0, 0x88, 0x9a, 0xfa, 0x06, + 0x9c, 0xc9, 0x68, 0x84, 0x6a, 0x6c, 0x03, 0xbb, 0xbe, 0x58, 0x18, 0xc1, 0x8e, 0x74, 0x7d, 0xcc, + 0xcb, 0xd1, 0x83, 0x30, 0x42, 0xec, 0xc0, 0xed, 0x7f, 0xe2, 0x60, 0xbf, 0x36, 0xb2, 0x64, 0x1b, + 0x98, 0x96, 0x51, 0x46, 0x65, 0x39, 0x31, 0xc9, 0x84, 0x31, 0xaa, 0x65, 0x51, 0x86, 0x43, 0xa8, + 0xfa, 0x1b, 0x0a, 0xa4, 0x2e, 0x9b, 0xd1, 0xe7, 0x14, 0x98, 0xdb, 0x4c, 0xec, 0x9f, 0x52, 0x97, + 0xdc, 0xc9, 0xcd, 0x58, 0x9f, 0x17, 0x33, 0x92, 0xda, 0xd6, 0x38, 0x45, 0x58, 0xfd, 0xdd, 0x51, + 0x78, 0xf8, 0x86, 0xe3, 0x9a, 0x77, 0x1d, 0xdb, 0xd7, 0xac, 0x35, 0xc7, 0x88, 0xbc, 0xcd, 0x04, + 0x5f, 0xfe, 0x65, 0x05, 0x1e, 0xd0, 0x7b, 0x7d, 0x2e, 0xe4, 0x06, 0x4e, 0x40, 0x6b, 0xc4, 0x35, + 0x9d, 0xa2, 0x4e, 0x67, 0xec, 0x8d, 0x69, 0x63, 0x6d, 0x3d, 0x0b, 0x25, 0xce, 0xa3, 0xc5, 0x7c, + 0xdf, 0x0c, 0xe7, 0x8e, 0xcd, 0x3a, 0xd7, 0xf6, 0xd9, 0x74, 0xde, 0x8d, 0xbe, 0x42, 0x41, 0xdf, + 0xb7, 0x66, 0x26, 0x46, 0x9c, 0x43, 0x09, 0x7d, 0x02, 0xce, 0x99, 0xbc, 0x73, 0x98, 0x68, 0x86, + 0x69, 0x13, 0xcf, 0x63, 0x1e, 0x60, 0x65, 0x9c, 0xbb, 0x5a, 0x59, 0x08, 0x71, 0x36, 0x1d, 0xf4, + 0x61, 0x00, 0x6f, 0xcf, 0xd6, 0xc5, 0xfc, 0x8f, 0x15, 0xa2, 0xca, 0x45, 0xc1, 0x10, 0x0b, 0x96, + 0x30, 0x52, 0x45, 0xd7, 0x0f, 0x57, 0xe5, 0x38, 0x73, 0x14, 0x63, 0x8a, 0x6e, 0xb4, 0x86, 0x22, + 0xb8, 0xfa, 0xdb, 0x0a, 0x4c, 0x88, 0x87, 0xec, 0xe8, 0x9d, 0x09, 0x7b, 0x4f, 0xc8, 0x7d, 0x12, + 0x36, 0x9f, 0xbb, 0xec, 0xca, 0x4e, 0x58, 0xfb, 0x84, 0x34, 0x51, 0xcc, 0x5c, 0x20, 0x28, 0x47, + 0xb6, 0xc3, 0xd8, 0xd5, 0x5d, 0x60, 0x4f, 0x94, 0xa8, 0xd1, 0xfd, 0x78, 0x3a, 0xd5, 0x6a, 0x08, + 0x99, 0xe1, 0x04, 0x7d, 0x62, 0x7e, 0x6f, 0x16, 0x58, 0xd4, 0x82, 0xc5, 0xb5, 0x56, 0x9b, 0xb8, + 0x3b, 0xe1, 0x2e, 0xa4, 0x5c, 0x23, 0x72, 0x80, 0x16, 0xbd, 0x28, 0xc3, 0x35, 0x6e, 0x26, 0x90, + 0x45, 0x5c, 0x23, 0x09, 0xc1, 0x29, 0xc2, 0x54, 0xcf, 0x9e, 0xd3, 0xe2, 0x51, 0x0b, 0x02, 0xc6, + 0x5e, 0xec, 0x69, 0x5c, 0x22, 0x04, 0x42, 0xd4, 0x99, 0x04, 0xc0, 0xc3, 0x29, 0xba, 0xe8, 0x69, + 0x98, 0xd6, 0x7a, 0xe6, 0x62, 0xdf, 0x30, 0xa9, 0xb0, 0x13, 0x3c, 0x39, 0x67, 0x12, 0xf8, 0xe2, + 0x5a, 0x2b, 0x2c, 0xc7, 0xb1, 0x5a, 0x61, 0x7c, 0x00, 0x31, 0x95, 0xa3, 0x65, 0xe3, 0x03, 0x88, + 0x59, 0x8c, 0xe2, 0x03, 0x88, 0xc9, 0x93, 0xa9, 0xa0, 0x0f, 0xc1, 0x83, 0xfc, 0x4c, 0xac, 0x6b, + 0x9e, 0xa9, 0x2f, 0xf6, 0xfd, 0x2d, 0x62, 0xfb, 0x81, 0x96, 0xcb, 0xef, 0x1f, 0x98, 0x27, 0xec, + 0x52, 0x5e, 0x25, 0x9c, 0xdf, 0x1e, 0x39, 0x00, 0x8e, 0x69, 0xe8, 0x62, 0x40, 0xfc, 0x92, 0xa2, + 0x98, 0x4a, 0x71, 0xab, 0xd5, 0x6c, 0x88, 0xf1, 0x30, 0x5e, 0x11, 0xfd, 0xc6, 0x12, 0x09, 0xf4, + 0x25, 0x05, 0x66, 0xc4, 0x42, 0x17, 0x44, 0x27, 0xd8, 0x12, 0xf8, 0x50, 0xe1, 0x05, 0x99, 0x58, + 0xf5, 0x0b, 0x58, 0xc6, 0xce, 0xa5, 0x9a, 0xd0, 0x41, 0x3f, 0x06, 0xc3, 0xf1, 0x8e, 0xa0, 0x2f, + 0x2a, 0x70, 0xd6, 0x23, 0xee, 0x8e, 0xa9, 0x93, 0x45, 0x5d, 0x77, 0xfa, 0x76, 0xf0, 0x9d, 0xab, + 0x25, 0x9e, 0x6a, 0xb7, 0x33, 0x10, 0x72, 0xb7, 0xd0, 0x2c, 0x08, 0xce, 0xec, 0x00, 0xfa, 0xff, + 0x15, 0x38, 0x75, 0x47, 0xf3, 0xf5, 0xad, 0x86, 0xa6, 0x6f, 0x31, 0x13, 0x23, 0xf7, 0x04, 0x2d, + 0xba, 0x73, 0x5e, 0x8e, 0xe3, 0xe2, 0x17, 0x6d, 0x89, 0x42, 0x9c, 0xa4, 0x88, 0x7c, 0xa8, 0xba, + 0xe4, 0xf5, 0x3e, 0xf1, 0x98, 0xbf, 0xa8, 0x72, 0x74, 0x7d, 0x23, 0xeb, 0xa3, 0x61, 0x81, 0x91, + 0xcb, 0x43, 0xc1, 0x2f, 0x1c, 0x52, 0x42, 0x1d, 0x78, 0x98, 0x2f, 0xdf, 0x45, 0xdb, 0xb1, 0xf7, + 0xba, 0x4e, 0xdf, 0x4b, 0x6c, 0x81, 0x29, 0xb6, 0x05, 0x98, 0x4b, 0xec, 0xd2, 0xa0, 0x8a, 0x78, + 0x30, 0x1e, 0xf4, 0x0a, 0x54, 0xc9, 0x0e, 0xb1, 0xfd, 0xdb, 0xb7, 0x97, 0xe7, 0xa7, 0x0b, 0x9d, + 0x91, 0x6c, 0x08, 0x4b, 0x02, 0x07, 0x0e, 0xb1, 0xa1, 0x1e, 0x4c, 0x58, 0x4e, 0xa7, 0x63, 0xda, + 0x9d, 0xf9, 0x99, 0x12, 0x4b, 0x29, 0x36, 0x6f, 0xcb, 0x1c, 0x21, 0x17, 0x9e, 0xc5, 0x0f, 0x1c, + 0x90, 0x41, 0x3d, 0xb8, 0x6c, 0x90, 0x4d, 0xad, 0x6f, 0xf9, 0xab, 0x8e, 0x4f, 0xa5, 0x81, 0xbd, + 0x48, 0xbb, 0x0f, 0x5c, 0x89, 0x67, 0xd9, 0x8b, 0xcb, 0x47, 0x0f, 0xf6, 0x6b, 0x97, 0x9b, 0x87, + 0xd4, 0xc5, 0x87, 0x62, 0x43, 0x7b, 0xf0, 0x88, 0xa8, 0xb3, 0x6e, 0xbb, 0x44, 0xd3, 0xb7, 0xe8, + 0x54, 0xa7, 0x89, 0x9e, 0x62, 0x44, 0x7f, 0xea, 0x60, 0xbf, 0xf6, 0x48, 0xf3, 0xf0, 0xea, 0x78, + 0x18, 0x9c, 0x17, 0x5e, 0x00, 0x94, 0xde, 0xf3, 0x87, 0xa9, 0x28, 0x55, 0x59, 0x45, 0xf9, 0xbc, + 0x02, 0x67, 0xb3, 0x66, 0x97, 0x4a, 0x36, 0x3b, 0xc4, 0xdd, 0x70, 0xbc, 0xc0, 0xa9, 0x74, 0x8c, + 0x4b, 0x36, 0x2f, 0x05, 0x85, 0x38, 0x82, 0xa3, 0x16, 0x9c, 0xd9, 0xf2, 0xfd, 0xde, 0xa2, 0xae, + 0x13, 0xcf, 0x0b, 0x6b, 0x30, 0x6a, 0x63, 0x3c, 0xb4, 0xd0, 0x8d, 0xdb, 0xb7, 0xd7, 0x12, 0x60, + 0x9c, 0xd5, 0x46, 0xfd, 0x96, 0x02, 0xe7, 0x32, 0xb7, 0x09, 0xc2, 0x70, 0x9e, 0x79, 0x8e, 0xdb, + 0x2b, 0x7d, 0x5f, 0xf3, 0x4d, 0xbb, 0xd3, 0xb2, 0x37, 0x2d, 0xb3, 0xb3, 0xe5, 0x8b, 0xee, 0x31, + 0x01, 0x75, 0x25, 0xb3, 0x06, 0xce, 0x69, 0x49, 0x3b, 0xde, 0xd5, 0x76, 0x53, 0x08, 0xa5, 0x8e, + 0xaf, 0xa4, 0xc1, 0x38, 0xab, 0x8d, 0xfa, 0x95, 0x31, 0x78, 0x88, 0x76, 0x3c, 0x12, 0x95, 0x56, + 0x34, 0x5b, 0xeb, 0xfc, 0x98, 0x8a, 0x24, 0xdf, 0x50, 0xe0, 0x81, 0xad, 0x6c, 0x45, 0x46, 0x48, + 0x6b, 0xb8, 0x98, 0xca, 0x39, 0x48, 0x39, 0xe2, 0xac, 0x6a, 0x60, 0x15, 0x9c, 0xd7, 0x2b, 0xf4, + 0x02, 0xcc, 0xd9, 0x8e, 0x41, 0x1a, 0xad, 0x26, 0x5e, 0xd1, 0xbc, 0xed, 0x76, 0x70, 0x0f, 0x35, + 0xc6, 0x9d, 0x17, 0x56, 0x13, 0x30, 0x9c, 0xaa, 0x8d, 0x76, 0x00, 0xf5, 0x1c, 0x63, 0x69, 0xc7, + 0xd4, 0x83, 0x1b, 0x90, 0xe2, 0x0e, 0x13, 0xec, 0x9a, 0x65, 0x2d, 0x85, 0x0d, 0x67, 0x50, 0x60, + 0xaa, 0x18, 0xed, 0xcc, 0x8a, 0x63, 0x9b, 0xbe, 0xe3, 0xb2, 0xb7, 0x09, 0xa5, 0x34, 0x12, 0xb6, + 0xd2, 0x57, 0x33, 0x31, 0xe2, 0x1c, 0x4a, 0xea, 0xff, 0x50, 0xe0, 0x14, 0x5d, 0x17, 0x6b, 0xae, + 0xb3, 0xbb, 0xf7, 0x63, 0xb9, 0x24, 0x1f, 0x17, 0xd7, 0xf2, 0xdc, 0x88, 0x70, 0x4e, 0xba, 0x92, + 0x9f, 0x64, 0x9d, 0x8e, 0x6e, 0xe1, 0x65, 0x43, 0xca, 0x48, 0xbe, 0x21, 0x45, 0xfd, 0x52, 0x85, + 0x6b, 0x07, 0x81, 0x1d, 0xe3, 0xc7, 0x73, 0x2b, 0xbe, 0x17, 0x66, 0x68, 0xd9, 0x8a, 0xb6, 0xbb, + 0xd6, 0x7c, 0xc9, 0xb1, 0x82, 0x07, 0x22, 0xcc, 0xdf, 0xf3, 0xa6, 0x0c, 0xc0, 0xf1, 0x7a, 0xe8, + 0x2a, 0x4c, 0xf4, 0xf8, 0x63, 0x54, 0x61, 0x58, 0xb9, 0xcc, 0xaf, 0xae, 0x59, 0xd1, 0xbd, 0xfd, + 0xda, 0xe9, 0xc8, 0x74, 0x2f, 0x0a, 0x71, 0xd0, 0x40, 0x7d, 0xf3, 0x2c, 0x30, 0xe4, 0x16, 0xf1, + 0x7f, 0x2c, 0x27, 0xe5, 0x09, 0x98, 0xd2, 0x7b, 0xfd, 0xc6, 0xb5, 0xf6, 0x8b, 0x7d, 0xc7, 0xd7, + 0xc4, 0xd5, 0x3c, 0xd3, 0x16, 0x1a, 0x6b, 0xeb, 0x41, 0x31, 0x96, 0xeb, 0x50, 0x06, 0xa1, 0xf7, + 0xfa, 0x82, 0xe9, 0xae, 0xc9, 0x3e, 0x8f, 0x8c, 0x41, 0x34, 0xd6, 0xd6, 0x63, 0x30, 0x9c, 0xaa, + 0x8d, 0x7e, 0x51, 0x81, 0x69, 0x22, 0x36, 0xef, 0x0d, 0xcd, 0x35, 0x04, 0x6f, 0x28, 0x2e, 0xeb, + 0x85, 0xb3, 0x1b, 0xb0, 0x04, 0xae, 0x67, 0x2d, 0x49, 0x34, 0x70, 0x8c, 0x22, 0x53, 0x79, 0xc4, + 0x6f, 0xfa, 0xa1, 0x1d, 0x23, 0xc9, 0x2d, 0xc6, 0x84, 0xca, 0x93, 0x57, 0x09, 0xe7, 0xb7, 0x47, + 0x7f, 0x4f, 0x81, 0xf3, 0x21, 0xd4, 0xb4, 0xcd, 0x6e, 0xbf, 0x8b, 0x89, 0x6e, 0x69, 0x66, 0x57, + 0xe8, 0x3f, 0xaf, 0x1c, 0xdf, 0x48, 0xe3, 0xf8, 0x39, 0xcb, 0xca, 0x86, 0xe1, 0x9c, 0x3e, 0xa1, + 0xdf, 0x50, 0xe0, 0x72, 0x00, 0x5a, 0x73, 0x89, 0xe7, 0xf5, 0x5d, 0x12, 0x3d, 0x51, 0x12, 0x73, + 0x32, 0x51, 0x88, 0x83, 0x32, 0xd9, 0x6f, 0xe9, 0x10, 0xdc, 0xf8, 0x50, 0xea, 0xb1, 0x15, 0xd3, + 0x76, 0x36, 0x7d, 0xa1, 0x30, 0xdd, 0xb7, 0x15, 0x43, 0x69, 0xe0, 0x18, 0x45, 0xf4, 0x0f, 0x14, + 0x78, 0x40, 0x2e, 0x90, 0x17, 0x0c, 0xd7, 0x94, 0x3e, 0x78, 0x7c, 0xbd, 0x49, 0x10, 0xe0, 0xb6, + 0xc9, 0x1c, 0x20, 0xce, 0xeb, 0x16, 0x65, 0xdf, 0x5d, 0xb6, 0x38, 0xb9, 0x36, 0x35, 0xc6, 0xd9, + 0x37, 0x5f, 0xaf, 0x1e, 0x0e, 0x60, 0xe8, 0x69, 0x98, 0xee, 0x39, 0xc6, 0x9a, 0x69, 0x78, 0xcb, + 0x66, 0xd7, 0xf4, 0x99, 0xba, 0x33, 0xc2, 0xe7, 0x63, 0xcd, 0x31, 0xd6, 0x5a, 0x4d, 0x5e, 0x8e, + 0x63, 0xb5, 0xd8, 0x7b, 0x5b, 0xb3, 0xab, 0x75, 0xc8, 0x5a, 0xdf, 0xb2, 0xd6, 0x5c, 0x87, 0xd9, + 0xaf, 0x9a, 0x44, 0x33, 0x2c, 0xd3, 0x26, 0x05, 0xd5, 0x1b, 0xb6, 0xe5, 0x5a, 0x79, 0x48, 0x71, + 0x3e, 0x3d, 0xb4, 0x00, 0xb0, 0xa9, 0x99, 0x56, 0xfb, 0x8e, 0xd6, 0xbb, 0x65, 0x33, 0x1d, 0xa8, + 0xca, 0x8d, 0x04, 0xd7, 0xc2, 0x52, 0x2c, 0xd5, 0x60, 0x0b, 0x8a, 0x32, 0x43, 0x4c, 0x78, 0xc4, + 0x17, 0xa6, 0xab, 0x1c, 0xcb, 0x82, 0x0a, 0x30, 0xf2, 0x09, 0xbc, 0x29, 0xd1, 0xc0, 0x31, 0x8a, + 0xe8, 0x57, 0x14, 0x98, 0xf5, 0xf6, 0x3c, 0x9f, 0x74, 0xc3, 0x4e, 0x9c, 0x3a, 0xf6, 0x4e, 0x30, + 0xe3, 0x5e, 0x3b, 0x46, 0x05, 0x27, 0xa8, 0x22, 0x0d, 0x1e, 0x62, 0x13, 0x7b, 0xbd, 0x71, 0xc3, + 0xec, 0x6c, 0x85, 0x0f, 0x69, 0xd7, 0x88, 0xab, 0x13, 0xdb, 0x9f, 0x9f, 0x63, 0x4b, 0x87, 0x39, + 0x79, 0xb4, 0xf2, 0xab, 0xe1, 0x41, 0x38, 0xd0, 0x87, 0xe1, 0x82, 0x00, 0x2f, 0x3b, 0x77, 0x52, + 0x14, 0x4e, 0x33, 0x0a, 0xcc, 0xa9, 0xa5, 0x95, 0x5b, 0x0b, 0x0f, 0xc0, 0x40, 0xf5, 0x0b, 0x8f, + 0xb8, 0xcc, 0x38, 0x4f, 0xc2, 0xf5, 0xe3, 0xcd, 0x23, 0xb6, 0x0e, 0x98, 0x7e, 0xd1, 0x4e, 0x83, + 0x71, 0x56, 0x1b, 0xf4, 0x5c, 0xf8, 0xe6, 0x65, 0x8f, 0x16, 0xbc, 0xb8, 0xd6, 0x9e, 0x3f, 0xc3, + 0xfa, 0x77, 0x46, 0x7a, 0xca, 0x12, 0x80, 0x70, 0xb2, 0x2e, 0x95, 0x32, 0x82, 0xa2, 0x7a, 0xdf, + 0xf5, 0xfc, 0xf9, 0xb3, 0xac, 0x31, 0x93, 0x32, 0xb0, 0x0c, 0xc0, 0xf1, 0x7a, 0xe8, 0x2a, 0xcc, + 0x7a, 0x44, 0xd7, 0x9d, 0x6e, 0x4f, 0xa8, 0xad, 0xf3, 0xe7, 0x58, 0xef, 0xf9, 0x17, 0x8c, 0x41, + 0x70, 0xa2, 0x26, 0xda, 0x83, 0x33, 0x61, 0x00, 0x94, 0x65, 0xa7, 0xb3, 0xa2, 0xed, 0x32, 0xb1, + 0xfd, 0xfc, 0xe1, 0x9b, 0x70, 0x21, 0xb8, 0x70, 0x5d, 0x78, 0xb1, 0xaf, 0xd9, 0xbe, 0xe9, 0xef, + 0xf1, 0xe9, 0x6a, 0xa4, 0xd1, 0xe1, 0x2c, 0x1a, 0x68, 0x19, 0xce, 0x26, 0x8a, 0xaf, 0x99, 0x16, + 0xf1, 0xe6, 0x1f, 0x60, 0xc3, 0x66, 0x66, 0xa8, 0x46, 0x06, 0x1c, 0x67, 0xb6, 0x42, 0xb7, 0xe0, + 0x5c, 0xcf, 0x75, 0x7c, 0xa2, 0xfb, 0x37, 0xa9, 0x9c, 0x62, 0x89, 0x01, 0x7a, 0xf3, 0xf3, 0x6c, + 0x2e, 0xd8, 0xc5, 0xc4, 0x5a, 0x56, 0x05, 0x9c, 0xdd, 0x0e, 0xbd, 0xa9, 0xc0, 0x25, 0xcf, 0x77, + 0x89, 0xd6, 0x35, 0xed, 0x4e, 0xc3, 0xb1, 0x6d, 0xc2, 0x38, 0x65, 0xcb, 0x88, 0x3c, 0xb9, 0x1f, + 0x2c, 0xc4, 0xaa, 0xd4, 0x83, 0xfd, 0xda, 0xa5, 0xf6, 0x40, 0xcc, 0xf8, 0x10, 0xca, 0xea, 0x7e, + 0x85, 0xeb, 0xe0, 0x29, 0xf6, 0x4f, 0x17, 0x61, 0x97, 0x74, 0x1d, 0x77, 0x6f, 0x31, 0x88, 0x41, + 0x2a, 0xee, 0x01, 0xd8, 0x22, 0x5c, 0x89, 0x83, 0x70, 0xb2, 0x2e, 0x15, 0xd1, 0xd8, 0x66, 0xb9, + 0xd6, 0x8e, 0xda, 0x57, 0x22, 0x11, 0xad, 0x95, 0x80, 0xe1, 0x54, 0x6d, 0xd4, 0x80, 0xd3, 0xa2, + 0xac, 0x45, 0x15, 0x1d, 0xef, 0x9a, 0x4b, 0x02, 0xe9, 0x97, 0x6a, 0x0c, 0xa7, 0x5b, 0x49, 0x20, + 0x4e, 0xd7, 0xa7, 0xa3, 0xa0, 0x3f, 0xe4, 0x5e, 0x8c, 0x46, 0xa3, 0x58, 0x8d, 0x83, 0x70, 0xb2, + 0x6e, 0xa0, 0x89, 0xc6, 0xba, 0x30, 0x16, 0x8d, 0x62, 0x35, 0x01, 0xc3, 0xa9, 0xda, 0xea, 0xbf, + 0x1d, 0x85, 0x47, 0x86, 0x90, 0x9a, 0x50, 0x37, 0x7b, 0xba, 0x8f, 0xbe, 0x77, 0x86, 0xfb, 0x3c, + 0xbd, 0x9c, 0xcf, 0x73, 0x74, 0x7a, 0xc3, 0x7e, 0x4e, 0x2f, 0xef, 0x73, 0x1e, 0x9d, 0xe4, 0xf0, + 0x9f, 0xbf, 0x9b, 0xfd, 0xf9, 0x0b, 0xce, 0xea, 0xa1, 0xcb, 0xa5, 0x97, 0xb3, 0x5c, 0x0a, 0xce, + 0xea, 0x10, 0xcb, 0xeb, 0xdf, 0x8d, 0xc2, 0xa3, 0xc3, 0x88, 0x6f, 0x05, 0xd7, 0x57, 0x06, 0xd7, + 0xb9, 0xaf, 0xeb, 0x2b, 0xef, 0xbd, 0xca, 0x7d, 0x5c, 0x5f, 0x19, 0x24, 0xef, 0xf7, 0xfa, 0xca, + 0x9b, 0xd5, 0xfb, 0xb5, 0xbe, 0xf2, 0x66, 0x75, 0x88, 0xf5, 0xf5, 0x3f, 0x93, 0xe7, 0x43, 0x28, + 0xb2, 0xb5, 0x60, 0x44, 0xef, 0xf5, 0x0b, 0x32, 0x29, 0xe6, 0x37, 0xd2, 0x58, 0x5b, 0xc7, 0x14, + 0x07, 0xc2, 0x30, 0xce, 0xd7, 0x4f, 0x41, 0x16, 0xc4, 0x5e, 0x50, 0xf0, 0x25, 0x89, 0x05, 0x26, + 0x3a, 0x55, 0xa4, 0xb7, 0x45, 0xba, 0xc4, 0xd5, 0xac, 0xb6, 0xef, 0xb8, 0x5a, 0xa7, 0x28, 0xb7, + 0x61, 0x53, 0xb5, 0x94, 0xc0, 0x85, 0x53, 0xd8, 0xe9, 0x84, 0xf4, 0x4c, 0xa3, 0x20, 0x7f, 0x61, + 0x13, 0xb2, 0xd6, 0x6a, 0x62, 0x8a, 0x43, 0xfd, 0xed, 0x49, 0x90, 0x02, 0x7c, 0xa1, 0x0f, 0xc1, + 0x83, 0x9a, 0x65, 0x39, 0x77, 0xd6, 0x5c, 0x73, 0xc7, 0xb4, 0x48, 0x87, 0x18, 0xa1, 0x3c, 0xe3, + 0x09, 0xf7, 0x22, 0xa6, 0xb6, 0x2c, 0xe6, 0x55, 0xc2, 0xf9, 0xed, 0xa9, 0x12, 0x75, 0x5a, 0x4f, + 0xc6, 0x53, 0x2a, 0xe5, 0x7e, 0x90, 0x8a, 0xce, 0xc4, 0x37, 0x54, 0xaa, 0x18, 0xa7, 0xe9, 0xa2, + 0x5f, 0x52, 0xb8, 0x89, 0x2c, 0xbc, 0x13, 0x10, 0x1f, 0xed, 0xc6, 0x71, 0xdd, 0x9c, 0x46, 0xc6, + 0xb6, 0xe8, 0xda, 0x21, 0x4e, 0x11, 0x7d, 0x4d, 0x81, 0x73, 0xdb, 0x59, 0xe6, 0x7d, 0xf1, 0x6d, + 0xd7, 0x0a, 0xf7, 0x25, 0xe7, 0xc2, 0x80, 0x0b, 0x95, 0x99, 0x15, 0x70, 0x76, 0x4f, 0xc2, 0x79, + 0x0a, 0xed, 0x9d, 0x82, 0x0f, 0x14, 0x9f, 0xa7, 0x84, 0xe5, 0x34, 0x9a, 0xa7, 0x10, 0x80, 0xe3, + 0x14, 0xd1, 0xeb, 0x30, 0xb9, 0x1d, 0x98, 0x99, 0x85, 0x55, 0xa9, 0x59, 0x98, 0xbc, 0x64, 0xac, + 0xe6, 0xb7, 0x4f, 0x61, 0x21, 0x8e, 0xa8, 0x20, 0x13, 0x26, 0xb6, 0x39, 0x37, 0x12, 0xd6, 0xa0, + 0x7a, 0x79, 0x45, 0x95, 0x9b, 0x24, 0x44, 0x11, 0x0e, 0xf0, 0xcb, 0x4e, 0x96, 0xd5, 0x43, 0xfc, + 0xff, 0xbf, 0xac, 0xc0, 0xb9, 0x1d, 0xe2, 0xfa, 0xa6, 0x9e, 0xbc, 0x5f, 0x99, 0x2c, 0xa1, 0x4d, + 0xbf, 0x94, 0x85, 0x91, 0x2f, 0x95, 0x4c, 0x10, 0xce, 0xee, 0x03, 0xd5, 0xad, 0xb9, 0x95, 0xbc, + 0xed, 0x6b, 0xbe, 0xa9, 0xdf, 0x76, 0xb6, 0x89, 0x1d, 0xa5, 0xa1, 0x60, 0x66, 0x99, 0x2a, 0xd7, + 0xad, 0x97, 0xf2, 0xab, 0xe1, 0x41, 0x38, 0xd4, 0x3f, 0x57, 0x20, 0x65, 0xe9, 0x45, 0x7f, 0x43, + 0x81, 0xe9, 0x4d, 0xa2, 0xf9, 0x7d, 0x97, 0x5c, 0xd7, 0xfc, 0xf0, 0x49, 0xf1, 0xcb, 0xc7, 0x62, + 0x61, 0x5e, 0xb8, 0x26, 0x61, 0xe6, 0xfe, 0x0f, 0x61, 0x88, 0x40, 0x19, 0x84, 0x63, 0x5d, 0xb8, + 0xf0, 0x7e, 0x38, 0x9d, 0x6a, 0x78, 0xa4, 0x4b, 0xd4, 0xdf, 0x53, 0x20, 0x2b, 0x77, 0x0a, 0xfa, + 0x08, 0x8c, 0x69, 0x86, 0x11, 0x86, 0x44, 0xbf, 0x5a, 0xd0, 0xd7, 0xc7, 0x90, 0xdf, 0x6e, 0xb3, + 0x9f, 0x98, 0xe3, 0x45, 0xd7, 0x00, 0x69, 0xb1, 0xab, 0xfc, 0x95, 0xe8, 0x5d, 0x23, 0xbb, 0xa1, + 0x5a, 0x4c, 0x41, 0x71, 0x46, 0x0b, 0xf5, 0x33, 0x0a, 0xa0, 0x74, 0x5c, 0x49, 0xe4, 0x41, 0x55, + 0xac, 0xe6, 0xe0, 0x3b, 0x2d, 0x15, 0x7d, 0x77, 0x10, 0x7b, 0x46, 0x13, 0xbd, 0x74, 0x10, 0x05, + 0x1e, 0x0e, 0x09, 0xa9, 0xff, 0x47, 0x81, 0x28, 0x7a, 0x32, 0x7a, 0x0f, 0x4c, 0x19, 0xc4, 0xd3, + 0x5d, 0xb3, 0xe7, 0x47, 0x8f, 0x6e, 0x42, 0xc7, 0xfd, 0x66, 0x04, 0xc2, 0x72, 0x3d, 0xa4, 0xc2, + 0xb8, 0xaf, 0x79, 0xdb, 0xad, 0xa6, 0x50, 0x2f, 0x99, 0x30, 0x70, 0x9b, 0x95, 0x60, 0x01, 0x89, + 0xe2, 0x43, 0x8d, 0x0c, 0x11, 0x1f, 0x0a, 0x6d, 0x1e, 0x43, 0x30, 0x2c, 0x74, 0x78, 0x20, 0x2c, + 0xf5, 0x6f, 0x55, 0xe0, 0x14, 0xad, 0xb2, 0xa2, 0x99, 0xb6, 0x4f, 0x6c, 0xe6, 0x5e, 0x5e, 0x70, + 0x12, 0x3a, 0x30, 0xe3, 0xc7, 0x9e, 0x50, 0x1d, 0xfd, 0x01, 0x52, 0xe8, 0x3e, 0x14, 0x7f, 0x38, + 0x15, 0xc7, 0x8b, 0x9e, 0x09, 0xfc, 0xfb, 0xb9, 0x22, 0xfe, 0x48, 0xb0, 0x56, 0x99, 0xd3, 0xfe, + 0x3d, 0xf1, 0x1e, 0x2d, 0x8c, 0xb9, 0x1d, 0x73, 0xe5, 0x7f, 0x2f, 0xcc, 0x08, 0x27, 0x5b, 0x1e, + 0xe8, 0x4b, 0x28, 0xe2, 0xec, 0x9c, 0xb9, 0x26, 0x03, 0x70, 0xbc, 0x9e, 0xfa, 0x47, 0x15, 0x88, + 0x47, 0xf6, 0x2e, 0x3a, 0x4b, 0xe9, 0x28, 0x67, 0x95, 0xfb, 0x16, 0xe5, 0xec, 0xdd, 0x2c, 0x0b, + 0x06, 0xcf, 0x99, 0xc4, 0xef, 0xae, 0xe5, 0xd4, 0x15, 0x3c, 0xe1, 0x51, 0x58, 0x23, 0x9a, 0xd6, + 0xd1, 0x23, 0x4f, 0xeb, 0x7b, 0x84, 0x9b, 0xfe, 0x58, 0x2c, 0xd6, 0x5c, 0xf0, 0x20, 0xe1, 0x74, + 0xac, 0xa1, 0xf4, 0x1a, 0xe1, 0xbb, 0x0a, 0x4c, 0x88, 0x58, 0xaa, 0x43, 0xbc, 0x76, 0xe9, 0xc0, + 0x18, 0x53, 0x7e, 0x4a, 0xc9, 0x85, 0xed, 0x2d, 0xc7, 0xf1, 0x63, 0x31, 0x65, 0x99, 0x77, 0x39, + 0xfb, 0x17, 0x73, 0xfc, 0xcc, 0x65, 0xd1, 0xd5, 0xb7, 0x4c, 0x9f, 0xe8, 0x7e, 0x10, 0xa5, 0x32, + 0x70, 0x59, 0x94, 0xca, 0x71, 0xac, 0x96, 0xfa, 0xe5, 0x51, 0xb8, 0x2c, 0x10, 0xa7, 0x44, 0xa5, + 0x90, 0xc5, 0xed, 0xc1, 0x19, 0xf1, 0x71, 0x9b, 0xae, 0x66, 0x86, 0x4e, 0x01, 0xc5, 0xb4, 0x60, + 0xe1, 0x30, 0x92, 0x42, 0x87, 0xb3, 0x68, 0xf0, 0x78, 0x8b, 0xac, 0xf8, 0x06, 0xd1, 0x2c, 0x7f, + 0x2b, 0xa0, 0x5d, 0x29, 0x13, 0x6f, 0x31, 0x8d, 0x0f, 0x67, 0x52, 0x61, 0x4e, 0x09, 0x02, 0xd0, + 0x70, 0x89, 0x26, 0x7b, 0x44, 0x94, 0xf0, 0x0f, 0x5f, 0xc9, 0xc4, 0x88, 0x73, 0x28, 0x31, 0x73, + 0xa2, 0xb6, 0xcb, 0xac, 0x13, 0x98, 0xf8, 0xae, 0xc9, 0x62, 0x03, 0x87, 0x36, 0xed, 0x95, 0x38, + 0x08, 0x27, 0xeb, 0xa2, 0xab, 0x30, 0xcb, 0x9c, 0x3c, 0xa2, 0x98, 0x46, 0x63, 0xd1, 0xc3, 0xfb, + 0xd5, 0x18, 0x04, 0x27, 0x6a, 0xaa, 0x5f, 0x57, 0x60, 0x5a, 0x5e, 0x76, 0x43, 0xbc, 0x7d, 0xd9, + 0x91, 0x8e, 0xc3, 0x32, 0xcf, 0x32, 0x64, 0xb2, 0xc3, 0x9c, 0x88, 0xbf, 0x36, 0x02, 0x67, 0x32, + 0xda, 0xb0, 0x1b, 0x7b, 0x92, 0x38, 0x5a, 0x4b, 0xdd, 0xd8, 0xa7, 0xce, 0xe9, 0xf0, 0xc6, 0x3e, + 0x09, 0xc1, 0x29, 0xc2, 0xe8, 0x65, 0x18, 0xd1, 0x5d, 0x53, 0x4c, 0xcc, 0xfb, 0x8a, 0xe9, 0x88, + 0xb8, 0x55, 0x9f, 0x12, 0x24, 0x47, 0x1a, 0xb8, 0x85, 0x29, 0x46, 0x7a, 0x44, 0xc8, 0xfb, 0x3a, + 0x38, 0xaf, 0xd9, 0x11, 0x21, 0x6f, 0x7f, 0x0f, 0xc7, 0xeb, 0xa1, 0x57, 0x60, 0x5e, 0xc8, 0xed, + 0xc1, 0xa3, 0x57, 0xc7, 0xf6, 0x7c, 0xba, 0x05, 0x7d, 0xc1, 0x52, 0x2f, 0x1e, 0xec, 0xd7, 0xe6, + 0x6f, 0xe6, 0xd4, 0xc1, 0xb9, 0xad, 0xd5, 0xff, 0x36, 0x02, 0x53, 0x52, 0xcc, 0x69, 0xb4, 0x52, + 0xc6, 0xec, 0x11, 0x8d, 0x38, 0x30, 0x7d, 0xac, 0xc0, 0x48, 0xa7, 0xd7, 0x2f, 0x68, 0xf7, 0x08, + 0xd1, 0x5d, 0xa7, 0xe8, 0x3a, 0xbd, 0x3e, 0x7a, 0x29, 0xb4, 0xa4, 0x14, 0xb3, 0x75, 0x84, 0x6f, + 0x13, 0x12, 0xd6, 0x94, 0x60, 0xc7, 0x8c, 0xe6, 0xee, 0x18, 0x1b, 0x26, 0x3c, 0x61, 0x66, 0x19, + 0x2b, 0x11, 0x6b, 0x44, 0x9a, 0x6a, 0x61, 0x57, 0xe1, 0xea, 0x59, 0x60, 0x76, 0x09, 0x88, 0x50, + 0xb1, 0xaf, 0xcf, 0x5e, 0x3d, 0x32, 0xcd, 0xb3, 0xca, 0xc5, 0xbe, 0x75, 0x56, 0x82, 0x05, 0x24, + 0x75, 0x98, 0x4c, 0x0c, 0x75, 0x98, 0x7c, 0xba, 0x02, 0x28, 0xdd, 0x0d, 0xf4, 0x08, 0x8c, 0xb1, + 0x97, 0xd3, 0x82, 0x6b, 0x84, 0x52, 0x3a, 0x7b, 0x39, 0x8b, 0x39, 0x0c, 0xb5, 0x45, 0xd4, 0x84, + 0x62, 0xdf, 0x93, 0x39, 0xbd, 0x08, 0x7a, 0x52, 0x88, 0x85, 0xe0, 0x78, 0x1e, 0xc9, 0x3d, 0x9e, + 0xd7, 0x61, 0xa2, 0x6b, 0xda, 0xec, 0xc2, 0xad, 0x98, 0xf9, 0x89, 0xdf, 0xca, 0x73, 0x14, 0x38, + 0xc0, 0xa5, 0xfe, 0xa0, 0x42, 0xd7, 0x7e, 0x24, 0x9c, 0xde, 0x05, 0xd0, 0xfa, 0xbe, 0xc3, 0xa5, + 0x1c, 0xb1, 0x05, 0x3e, 0x50, 0xf0, 0x33, 0x87, 0x58, 0x17, 0x43, 0x8c, 0xfc, 0xb6, 0x3c, 0xfa, + 0x8d, 0x25, 0x6a, 0x94, 0xb6, 0x6f, 0x76, 0xc9, 0xcb, 0xa6, 0x6d, 0x38, 0x77, 0xc4, 0xfc, 0x96, + 0xa6, 0x7d, 0x3b, 0xc4, 0xc8, 0x69, 0x47, 0xbf, 0xb1, 0x44, 0x8d, 0x72, 0x17, 0xa6, 0xe8, 0xda, + 0x2c, 0x15, 0x80, 0xe8, 0x9c, 0x63, 0x59, 0xc1, 0x09, 0x5a, 0xe5, 0xdc, 0xa5, 0x91, 0x53, 0x07, + 0xe7, 0xb6, 0x56, 0xff, 0xae, 0x02, 0xe7, 0x32, 0xe7, 0x02, 0x5d, 0x87, 0xd3, 0x91, 0xa7, 0x94, + 0xcc, 0xf1, 0xab, 0x51, 0x12, 0x8a, 0x9b, 0xc9, 0x0a, 0x38, 0xdd, 0x86, 0xfb, 0xbd, 0xa6, 0x4e, + 0x14, 0xe1, 0x66, 0x25, 0x8b, 0x31, 0x32, 0x18, 0x67, 0xb5, 0x51, 0x3f, 0x14, 0xeb, 0x6c, 0x34, + 0x59, 0x74, 0x6f, 0x6c, 0x90, 0x4e, 0xf8, 0xc2, 0x29, 0xdc, 0x1b, 0x75, 0x5a, 0x88, 0x39, 0x0c, + 0x3d, 0x2c, 0x3f, 0x1c, 0x0c, 0x59, 0x57, 0xf0, 0x78, 0x50, 0xed, 0x03, 0x08, 0x5f, 0x46, 0xd3, + 0xee, 0xa0, 0x0e, 0x54, 0x35, 0x91, 0xfc, 0x52, 0x2c, 0xb4, 0xe7, 0x8a, 0xa9, 0xd4, 0x02, 0x09, + 0x77, 0x5b, 0x0f, 0x7e, 0xe1, 0x10, 0xb9, 0xfa, 0x77, 0x14, 0x38, 0x9f, 0xfd, 0x38, 0x78, 0x08, + 0x31, 0xa1, 0x0b, 0x53, 0x6e, 0xd4, 0x4c, 0xac, 0xca, 0x9f, 0x95, 0x43, 0x3c, 0x4a, 0x61, 0x91, + 0xa8, 0x08, 0xd5, 0x70, 0x1d, 0x2f, 0xf8, 0x32, 0xc9, 0xa8, 0x8f, 0xa1, 0xfe, 0x22, 0xf5, 0x04, + 0xcb, 0xf8, 0xd5, 0xdf, 0xad, 0x00, 0xac, 0x12, 0xff, 0x8e, 0xe3, 0x6e, 0xd3, 0x39, 0xba, 0x18, + 0x13, 0xdb, 0xab, 0x3f, 0xba, 0x07, 0xea, 0x17, 0x61, 0xb4, 0xe7, 0x18, 0x9e, 0x60, 0x50, 0xac, + 0x23, 0xcc, 0xbd, 0x87, 0x95, 0xa2, 0x1a, 0x8c, 0xb1, 0xfb, 0x04, 0x71, 0x78, 0x30, 0x99, 0x9f, + 0x4a, 0x6c, 0x1e, 0xe6, 0xe5, 0x3c, 0xbf, 0x11, 0x7b, 0x10, 0xe2, 0x09, 0x2d, 0x46, 0xe4, 0x37, + 0xe2, 0x65, 0x38, 0x84, 0xa2, 0xab, 0x00, 0x66, 0xef, 0x9a, 0xd6, 0x35, 0x2d, 0x2a, 0x3f, 0x8e, + 0x87, 0x19, 0x34, 0xa1, 0xb5, 0x16, 0x94, 0xde, 0xdb, 0xaf, 0x55, 0xc5, 0xaf, 0x3d, 0x2c, 0xd5, + 0x56, 0x3f, 0x35, 0x0a, 0xb1, 0x74, 0xb3, 0x91, 0xc9, 0x66, 0xf4, 0x3e, 0x99, 0x6c, 0x5e, 0x81, + 0x79, 0xcb, 0xd1, 0x8c, 0xba, 0x66, 0xd1, 0xed, 0xe2, 0xb6, 0xf9, 0x77, 0xd4, 0xec, 0x4e, 0x18, + 0x36, 0x8a, 0xb1, 0x8d, 0xe5, 0x9c, 0x3a, 0x38, 0xb7, 0x35, 0xea, 0x4b, 0x59, 0x6e, 0xa9, 0x0c, + 0xb6, 0x52, 0x3a, 0x1d, 0xef, 0x82, 0xfc, 0x92, 0x28, 0x94, 0x02, 0x12, 0x99, 0x70, 0x7f, 0x45, + 0x81, 0x73, 0x64, 0xd7, 0x27, 0xae, 0xad, 0x59, 0xb7, 0x5d, 0x6d, 0x73, 0xd3, 0xd4, 0x63, 0xce, + 0x97, 0x6b, 0x07, 0xfb, 0xb5, 0x73, 0x4b, 0x59, 0x15, 0xee, 0xed, 0xd7, 0x9e, 0x4a, 0xe7, 0x9b, + 0x0e, 0xde, 0x0d, 0x65, 0x36, 0x61, 0x4b, 0x39, 0x9b, 0xdc, 0x85, 0x67, 0x60, 0xea, 0x08, 0xaf, + 0x20, 0x62, 0x0f, 0xb5, 0xff, 0x49, 0x05, 0xa6, 0xe9, 0xea, 0x5b, 0x76, 0x74, 0xcd, 0x6a, 0xae, + 0xb6, 0x8f, 0x90, 0xac, 0x19, 0x2d, 0xc3, 0xd9, 0x4d, 0xc7, 0xd5, 0xc9, 0xed, 0xc6, 0xda, 0x6d, + 0x47, 0x5c, 0x67, 0x34, 0x57, 0xdb, 0x82, 0x97, 0x32, 0xb5, 0xec, 0x5a, 0x06, 0x1c, 0x67, 0xb6, + 0x42, 0xb7, 0xe0, 0x5c, 0x54, 0xbe, 0xde, 0xe3, 0x8e, 0x1a, 0x14, 0xdd, 0x48, 0xe4, 0x68, 0x72, + 0x2d, 0xab, 0x02, 0xce, 0x6e, 0x87, 0x34, 0x78, 0x48, 0x44, 0x82, 0xb8, 0xe6, 0xb8, 0x77, 0x34, + 0xd7, 0x88, 0xa3, 0x1d, 0x8d, 0x0c, 0xbd, 0xcd, 0xfc, 0x6a, 0x78, 0x10, 0x0e, 0xf5, 0xab, 0xe3, + 0x20, 0xbd, 0x79, 0x3b, 0x42, 0x52, 0x9c, 0xdf, 0x52, 0xe0, 0xac, 0x6e, 0x99, 0xc4, 0xf6, 0x13, + 0x0f, 0x9b, 0x38, 0x53, 0x7a, 0xa9, 0xd8, 0x6b, 0xbc, 0x1e, 0xb1, 0x5b, 0x4d, 0xe1, 0xd8, 0xd2, + 0xc8, 0xc0, 0x2e, 0x9c, 0x7f, 0x32, 0x20, 0x38, 0xb3, 0x37, 0x6c, 0x40, 0xac, 0xbc, 0xd5, 0x94, + 0x5f, 0xb0, 0x37, 0x44, 0x19, 0x0e, 0xa1, 0xe8, 0x09, 0x98, 0xea, 0xb8, 0x4e, 0xbf, 0xe7, 0x35, + 0x98, 0x53, 0x2d, 0xe7, 0x6d, 0x4c, 0x80, 0xbb, 0x1e, 0x15, 0x63, 0xb9, 0x0e, 0x15, 0x47, 0xf9, + 0xcf, 0x35, 0x97, 0x6c, 0x9a, 0xbb, 0x82, 0xd7, 0x31, 0x71, 0xf4, 0xba, 0x54, 0x8e, 0x63, 0xb5, + 0xd0, 0xbb, 0x60, 0xd2, 0xf4, 0xbc, 0x3e, 0x71, 0xd7, 0xf1, 0xb2, 0x08, 0x84, 0xcf, 0xee, 0x47, + 0x5a, 0x41, 0x21, 0x8e, 0xe0, 0xe8, 0x0b, 0x0a, 0xcc, 0xba, 0xe4, 0xf5, 0xbe, 0xe9, 0x12, 0x83, + 0x11, 0xf5, 0xc4, 0xcb, 0xc3, 0x76, 0xc9, 0xe7, 0x8e, 0x0b, 0x38, 0x86, 0x95, 0xf3, 0x89, 0xd0, + 0x16, 0x16, 0x07, 0xe2, 0x44, 0x17, 0xe8, 0x5c, 0x79, 0x66, 0xc7, 0x36, 0xed, 0xce, 0xa2, 0xd5, + 0xf1, 0xe6, 0xab, 0x8c, 0xf7, 0x71, 0x61, 0x37, 0x2a, 0xc6, 0x72, 0x1d, 0xaa, 0x09, 0xf6, 0x3d, + 0xba, 0xf3, 0xbb, 0x84, 0x4f, 0xf0, 0x64, 0x64, 0x2c, 0x5c, 0x97, 0x01, 0x38, 0x5e, 0x0f, 0x5d, + 0x85, 0xd9, 0xa0, 0x40, 0x4c, 0x33, 0xf0, 0x08, 0x66, 0xb4, 0x9f, 0xeb, 0x31, 0x08, 0x4e, 0xd4, + 0xbc, 0xb0, 0x08, 0x67, 0x32, 0x86, 0x79, 0x24, 0xf6, 0xf2, 0xf5, 0x0a, 0xbc, 0xfd, 0xd0, 0x65, + 0x89, 0xbe, 0xaa, 0xc0, 0x14, 0xd9, 0xf5, 0x5d, 0x2d, 0xf4, 0xbd, 0xa7, 0xdf, 0xa8, 0x73, 0x7f, + 0x36, 0xc1, 0xc2, 0x52, 0x44, 0x89, 0x7f, 0xb7, 0x50, 0xd2, 0x90, 0x20, 0x58, 0xee, 0x10, 0xd5, + 0xae, 0x78, 0x84, 0x3b, 0xd9, 0xa8, 0x2e, 0xb2, 0x8c, 0x0a, 0xc8, 0x85, 0xe7, 0x61, 0x2e, 0x89, + 0xf9, 0xa8, 0x9c, 0x78, 0x62, 0xcd, 0x75, 0xa8, 0x10, 0x74, 0x02, 0x21, 0xa7, 0x36, 0x62, 0x41, + 0x9b, 0x8b, 0x3d, 0x67, 0x16, 0xbd, 0xcd, 0x0d, 0x1a, 0xff, 0x5a, 0x22, 0x68, 0x7c, 0xbd, 0x14, + 0x95, 0xc1, 0x51, 0xe2, 0xbf, 0xa7, 0xc0, 0x94, 0xa8, 0x79, 0x02, 0x31, 0xa9, 0xb4, 0x78, 0x4c, + 0xaa, 0x67, 0xcb, 0x0c, 0x2c, 0x27, 0x1a, 0xd5, 0x9b, 0x0a, 0xcc, 0x88, 0x1a, 0x2b, 0xa4, 0xbb, + 0x41, 0x5c, 0x74, 0x0d, 0x26, 0xbc, 0x3e, 0xfb, 0x96, 0x62, 0x44, 0x0f, 0xc9, 0x92, 0xb5, 0xbb, + 0xa1, 0xe9, 0x2c, 0x5b, 0x2e, 0xaf, 0x22, 0x85, 0x62, 0xe7, 0x05, 0x38, 0x68, 0x4c, 0xe5, 0x78, + 0xd7, 0xb1, 0x52, 0x81, 0x6c, 0xb0, 0x63, 0x11, 0xcc, 0x20, 0x54, 0x44, 0xa5, 0x7f, 0x03, 0x7b, + 0x13, 0x13, 0x51, 0x29, 0xd8, 0xc3, 0xbc, 0x5c, 0xfd, 0xf4, 0x68, 0x38, 0xdb, 0x2c, 0x54, 0xf2, + 0x0d, 0x98, 0xd4, 0x5d, 0xa2, 0xf9, 0xc4, 0xa8, 0xef, 0x0d, 0xd3, 0x39, 0xc6, 0xb1, 0x1b, 0x41, + 0x0b, 0x1c, 0x35, 0xa6, 0xbc, 0x51, 0xbe, 0xca, 0xa8, 0x44, 0xe7, 0x48, 0xee, 0x35, 0xc6, 0xb3, + 0x30, 0xe6, 0xdc, 0xb1, 0x43, 0xd7, 0x88, 0x81, 0x84, 0xd9, 0x50, 0x6e, 0xd1, 0xda, 0x98, 0x37, + 0x92, 0x03, 0x39, 0x8d, 0x0e, 0x08, 0xe4, 0xd4, 0x85, 0x89, 0x2e, 0xfb, 0x0c, 0xe5, 0xe2, 0x72, + 0xc7, 0xbe, 0xa8, 0x9c, 0xc1, 0x85, 0xa1, 0xc6, 0x01, 0x0d, 0x7a, 0xca, 0x51, 0x46, 0xec, 0xf5, + 0x34, 0x9d, 0xc8, 0xa7, 0xdc, 0x6a, 0x50, 0x88, 0x23, 0x38, 0xba, 0x1b, 0x8f, 0x11, 0x36, 0x51, + 0xc2, 0xde, 0x24, 0xfa, 0x27, 0x85, 0x05, 0xe3, 0x93, 0x9f, 0x1b, 0x27, 0xec, 0x73, 0xa3, 0xe1, + 0x32, 0x15, 0xa1, 0xf6, 0xb3, 0x53, 0xbd, 0x2a, 0x85, 0x52, 0xbd, 0x3e, 0x15, 0xc4, 0xb3, 0xac, + 0xc4, 0xd2, 0x0d, 0x85, 0xf1, 0x2c, 0xa7, 0x05, 0xe9, 0x58, 0x0c, 0xcb, 0x3e, 0x9c, 0xf1, 0x7c, + 0xcd, 0x22, 0x6d, 0x53, 0x68, 0xe5, 0x9e, 0xaf, 0x75, 0x7b, 0x05, 0x02, 0x4a, 0x72, 0x2f, 0xf5, + 0x34, 0x2a, 0x9c, 0x85, 0x1f, 0x7d, 0x4a, 0x81, 0x79, 0x56, 0xbe, 0xd8, 0xf7, 0x1d, 0x1e, 0xfe, + 0x38, 0x22, 0x7e, 0xf4, 0x1b, 0x53, 0xa6, 0x0b, 0xb5, 0x73, 0xf0, 0xe1, 0x5c, 0x4a, 0xe8, 0x0d, + 0x38, 0x67, 0x69, 0x9e, 0xbf, 0xa8, 0xfb, 0xe6, 0x8e, 0xe9, 0xef, 0x45, 0x5d, 0x38, 0x7a, 0x14, + 0x49, 0x26, 0x72, 0x2f, 0x67, 0x21, 0xc3, 0xd9, 0x34, 0xd4, 0xff, 0xa5, 0x00, 0x4a, 0x2f, 0x21, + 0xd4, 0x85, 0xaa, 0x11, 0xb8, 0x8d, 0x2b, 0xc7, 0x13, 0xc1, 0x2e, 0xe4, 0xce, 0xa1, 0xbb, 0x79, + 0x48, 0x02, 0xf5, 0x60, 0xf2, 0xce, 0x96, 0xe9, 0x13, 0xcb, 0xf4, 0xfc, 0xe3, 0x8a, 0x98, 0x17, + 0x06, 0x8f, 0x7a, 0x39, 0xc0, 0x8c, 0x23, 0x22, 0xea, 0xe7, 0x47, 0x21, 0xcc, 0xc0, 0x3f, 0xc4, + 0xf5, 0x61, 0x1f, 0x90, 0x2e, 0xa5, 0x33, 0x2a, 0x63, 0x8f, 0x60, 0xbe, 0x0e, 0x8d, 0x14, 0x32, + 0x9c, 0x41, 0x00, 0xbd, 0x01, 0x67, 0x4d, 0x7b, 0xd3, 0xd5, 0x3c, 0xdf, 0xed, 0x33, 0xdb, 0x6e, + 0x99, 0xa4, 0x40, 0x4c, 0x95, 0x68, 0x65, 0xa0, 0xc3, 0x99, 0x44, 0xd0, 0x26, 0x4c, 0xdc, 0x71, + 0xdc, 0x6d, 0xca, 0x40, 0x47, 0x4b, 0xa4, 0x88, 0x7c, 0x99, 0xe1, 0x88, 0x38, 0x27, 0xff, 0xed, + 0xe1, 0x00, 0x39, 0x0f, 0x9b, 0xc1, 0xff, 0x0f, 0xae, 0x3a, 0xc5, 0xd2, 0x6f, 0x96, 0x20, 0x18, + 0x65, 0x1c, 0xe5, 0x61, 0x33, 0xe2, 0x85, 0x38, 0x49, 0x51, 0xfd, 0x03, 0x05, 0xc6, 0xf8, 0xdb, + 0xcc, 0xfb, 0x2f, 0xca, 0x7d, 0x34, 0x26, 0xca, 0x15, 0xcb, 0x6a, 0xc2, 0xfa, 0x9a, 0x9b, 0x6e, + 0xe3, 0xbb, 0x0a, 0x4c, 0xb2, 0x1a, 0x27, 0x20, 0x5a, 0x7d, 0x24, 0x2e, 0x5a, 0x5d, 0x2d, 0x3e, + 0x9c, 0x1c, 0xc1, 0xea, 0x0f, 0x46, 0xc4, 0x60, 0x98, 0xe4, 0xd2, 0x82, 0x33, 0xc2, 0xeb, 0x72, + 0xd9, 0xdc, 0x24, 0x74, 0x99, 0x37, 0xb5, 0x3d, 0x4f, 0xc4, 0x55, 0xe0, 0xef, 0x6e, 0xd2, 0x60, + 0x9c, 0xd5, 0x06, 0xfd, 0x53, 0x85, 0xca, 0x08, 0xbe, 0x6b, 0xea, 0xe5, 0x72, 0x58, 0x84, 0x9d, + 0x5b, 0x58, 0xe1, 0xd8, 0xb8, 0x96, 0xb2, 0x1e, 0x09, 0x0b, 0xac, 0xf4, 0xde, 0x7e, 0xad, 0x96, + 0x61, 0x43, 0x8a, 0xe2, 0xe2, 0x7b, 0xfe, 0x27, 0x7f, 0x30, 0xb0, 0x0a, 0xb3, 0xdc, 0x06, 0x5d, + 0x46, 0x37, 0x60, 0xcc, 0xd3, 0x9d, 0x1e, 0x39, 0x4a, 0x66, 0x9e, 0x70, 0x86, 0xdb, 0xb4, 0x25, + 0xe6, 0x08, 0x2e, 0xbc, 0x06, 0xd3, 0x72, 0xcf, 0x33, 0xb4, 0xa0, 0xa6, 0xac, 0x05, 0x1d, 0xf9, + 0x7a, 0x46, 0xd6, 0x9a, 0xbe, 0x5d, 0x81, 0x71, 0x9e, 0x26, 0x76, 0x08, 0xfb, 0xf4, 0x6b, 0x41, + 0xf0, 0xf1, 0x32, 0x49, 0xb0, 0xe5, 0x18, 0x7d, 0xaf, 0x3a, 0xb6, 0x34, 0x09, 0x72, 0xfc, 0x71, + 0xe4, 0x84, 0xb1, 0x1b, 0x47, 0x4a, 0xa4, 0x0e, 0xe1, 0x43, 0xbb, 0xdf, 0xd1, 0x1a, 0xbf, 0xa7, + 0xc0, 0x74, 0x2c, 0x1a, 0x66, 0x17, 0x46, 0xdc, 0x30, 0xb3, 0x54, 0x51, 0x03, 0x7e, 0xe0, 0xb5, + 0xf3, 0xd0, 0x80, 0x4a, 0x98, 0xd2, 0x09, 0x03, 0x67, 0x56, 0x8e, 0x29, 0x70, 0xa6, 0xfa, 0x45, + 0x05, 0xce, 0x07, 0x03, 0x8a, 0x87, 0x38, 0x42, 0x8f, 0x41, 0x55, 0xeb, 0x99, 0xcc, 0xc0, 0x24, + 0xdb, 0xe8, 0x16, 0xd7, 0x5a, 0xac, 0x0c, 0x87, 0x50, 0xf4, 0x6e, 0xa8, 0x06, 0x4b, 0x4f, 0xc8, + 0x9f, 0x21, 0xdf, 0x0a, 0xaf, 0x24, 0xc2, 0x1a, 0xe8, 0x1d, 0x52, 0x80, 0xf8, 0xb1, 0x48, 0x5c, + 0x08, 0x09, 0xf3, 0xcb, 0x4b, 0xf5, 0x67, 0x61, 0xb2, 0xdd, 0xbe, 0xc1, 0x43, 0xbf, 0x1c, 0xc1, + 0xd6, 0xaa, 0x7e, 0x76, 0x04, 0x66, 0xb8, 0xc1, 0xa1, 0x6e, 0xda, 0x86, 0x69, 0x77, 0x4e, 0xe0, + 0x60, 0xb9, 0x0d, 0x93, 0xdc, 0xb6, 0x71, 0x48, 0x16, 0xb0, 0x76, 0x50, 0x29, 0x19, 0x45, 0x36, + 0x04, 0xe0, 0x08, 0x11, 0xba, 0x09, 0xe3, 0xaf, 0x53, 0x0e, 0x17, 0x6c, 0x8c, 0xa1, 0x18, 0x4d, + 0xb8, 0xe8, 0x19, 0x73, 0xf4, 0xb0, 0x40, 0x81, 0x7c, 0xe6, 0x56, 0xc6, 0xe4, 0xae, 0x52, 0x21, + 0x0b, 0x62, 0x53, 0x1b, 0x66, 0x88, 0x98, 0x16, 0xee, 0x69, 0xec, 0x17, 0x0e, 0x29, 0xb1, 0x30, + 0xd8, 0xb1, 0x16, 0x6f, 0x95, 0x30, 0xd8, 0xb1, 0x4e, 0xe7, 0x9c, 0x8f, 0xcf, 0xc0, 0xb9, 0xcc, + 0xd9, 0x38, 0x5c, 0xae, 0x55, 0xbf, 0x59, 0x81, 0xd1, 0x36, 0x21, 0xc6, 0x09, 0xac, 0xcd, 0x8f, + 0xc4, 0x84, 0x9e, 0xe7, 0x8a, 0x07, 0xe2, 0xce, 0x33, 0x5e, 0x75, 0x12, 0xc6, 0xab, 0xf7, 0x17, + 0x27, 0x31, 0xd8, 0x72, 0xf5, 0xeb, 0x15, 0x00, 0x5a, 0xad, 0xae, 0xe9, 0xdb, 0x9c, 0xeb, 0x84, + 0x2b, 0x5a, 0x89, 0x73, 0x9d, 0xf4, 0x4a, 0x3c, 0xc9, 0x5b, 0x4d, 0x15, 0xc6, 0x79, 0x1a, 0x76, + 0x71, 0x13, 0x00, 0x3c, 0x47, 0x2d, 0x2d, 0xc1, 0x02, 0x12, 0xe7, 0x18, 0xa3, 0xc7, 0xc4, 0x31, + 0xd4, 0x3d, 0x60, 0xf9, 0x04, 0x9b, 0xab, 0x6d, 0x64, 0x4b, 0xb3, 0x53, 0x29, 0x21, 0xd5, 0x0b, + 0x7c, 0x87, 0xee, 0xf4, 0xcf, 0x28, 0x70, 0x2a, 0x51, 0x77, 0x08, 0xfd, 0xee, 0xbe, 0x30, 0x4e, + 0xf5, 0x3b, 0x0a, 0x54, 0x69, 0x5f, 0x4e, 0x80, 0xd9, 0x7c, 0x38, 0xce, 0x6c, 0x9e, 0x29, 0x3c, + 0xc7, 0x39, 0x3c, 0xe6, 0x1f, 0x55, 0x80, 0x05, 0xbd, 0x17, 0xb7, 0xf7, 0xd2, 0xa5, 0xb8, 0x92, + 0x73, 0x29, 0x7e, 0x59, 0xdc, 0xa9, 0x27, 0x8c, 0x96, 0xd2, 0xbd, 0xfa, 0xbb, 0xa5, 0x6b, 0xf3, + 0x91, 0xf8, 0xc6, 0xc9, 0xb8, 0x3a, 0x7f, 0x03, 0x66, 0xbc, 0x2d, 0xc7, 0xf1, 0xc3, 0xe7, 0xec, + 0xa3, 0x25, 0x4c, 0xd4, 0xcc, 0x93, 0x37, 0x18, 0x0b, 0xbf, 0x94, 0x69, 0xcb, 0xc8, 0x71, 0x9c, + 0x56, 0xe2, 0xde, 0x7e, 0xec, 0x48, 0xf7, 0xf6, 0x7f, 0xa6, 0xf0, 0xa9, 0x3b, 0xc2, 0x72, 0x3c, + 0x41, 0x26, 0xf1, 0xce, 0x04, 0x93, 0x90, 0x92, 0x59, 0xc7, 0x18, 0x45, 0x2d, 0x90, 0xc4, 0x47, + 0x23, 0x0b, 0x73, 0x2c, 0x7d, 0xcf, 0x3f, 0x16, 0xc3, 0x0c, 0x13, 0x21, 0xf4, 0x60, 0xc6, 0x92, + 0x33, 0x2a, 0x8a, 0x55, 0x5f, 0x28, 0x19, 0x63, 0xe8, 0xdb, 0x1f, 0x2b, 0xc6, 0x71, 0x02, 0xe8, + 0xbd, 0x30, 0x13, 0x8c, 0x8e, 0x4e, 0xa6, 0x27, 0x72, 0x39, 0xb1, 0xcf, 0xbb, 0x26, 0x03, 0x70, + 0xbc, 0x9e, 0xfa, 0x95, 0x51, 0x78, 0x98, 0xf7, 0x9d, 0x59, 0x03, 0x9a, 0xa4, 0x47, 0x6c, 0x83, + 0xd8, 0xfa, 0x1e, 0x13, 0x45, 0x0d, 0xa7, 0x83, 0x3e, 0xa5, 0x40, 0x95, 0xd8, 0x46, 0xcf, 0x31, + 0xed, 0xc0, 0x98, 0xff, 0x6a, 0x89, 0x5c, 0x12, 0x39, 0x64, 0x96, 0x04, 0x05, 0x11, 0xa3, 0x52, + 0xfc, 0xc2, 0x21, 0x65, 0xb4, 0x0b, 0x63, 0x3d, 0xd7, 0xd9, 0x08, 0xd4, 0xb0, 0x97, 0x8f, 0xbf, + 0x0b, 0x6b, 0x14, 0x3d, 0xff, 0xbc, 0xec, 0x5f, 0xcc, 0x09, 0xa2, 0x8f, 0xc1, 0xf8, 0x1d, 0x42, + 0x8c, 0xd0, 0x68, 0xff, 0xca, 0xf1, 0x93, 0x7e, 0x99, 0xe1, 0xe7, 0xc7, 0x14, 0xff, 0x1f, 0x0b, + 0x9a, 0x94, 0x3a, 0xeb, 0x46, 0x20, 0x33, 0xbe, 0x72, 0x9f, 0x06, 0x2e, 0xa8, 0xf3, 0xff, 0xb1, + 0xa0, 0xa9, 0x62, 0x78, 0xc7, 0x50, 0x9f, 0xed, 0x28, 0xea, 0xc1, 0x2d, 0x50, 0x0f, 0xef, 0xce, + 0x51, 0x10, 0xae, 0xc1, 0x23, 0x43, 0x8c, 0xef, 0x38, 0x31, 0xf2, 0x6f, 0x74, 0x14, 0x8c, 0x2f, + 0xc2, 0xa3, 0x12, 0xc6, 0xa5, 0x5d, 0xaa, 0x53, 0x35, 0xb4, 0x9e, 0xa6, 0x9b, 0xfe, 0x1e, 0x7f, + 0x97, 0xcd, 0x6f, 0x11, 0x8e, 0x80, 0xf2, 0x33, 0xa3, 0x50, 0x93, 0x70, 0xc6, 0x7c, 0x91, 0x82, + 0xa3, 0xe3, 0x2b, 0x0a, 0x4c, 0x69, 0xb6, 0x2d, 0xd2, 0x67, 0x05, 0x16, 0x6d, 0x52, 0x76, 0x0d, + 0x65, 0xd1, 0x5a, 0x58, 0x8c, 0xe8, 0x24, 0xee, 0xaa, 0x25, 0x08, 0x96, 0xbb, 0x33, 0xc0, 0x2b, + 0xa9, 0x72, 0xa2, 0x5e, 0x49, 0xe8, 0xe3, 0x01, 0x8f, 0xe7, 0x7a, 0xde, 0x07, 0xef, 0xc7, 0x04, + 0xb1, 0x33, 0x23, 0xdb, 0x02, 0x73, 0xe1, 0x79, 0x98, 0x4b, 0x4e, 0xdf, 0x91, 0xac, 0x22, 0xbf, + 0x33, 0x12, 0x5b, 0x5f, 0xb9, 0xe4, 0x87, 0x30, 0x3c, 0x7d, 0x2d, 0xb1, 0x64, 0xb8, 0x58, 0xf5, + 0xda, 0x7d, 0x9b, 0x91, 0xe3, 0x5d, 0x37, 0x27, 0xec, 0xcd, 0x56, 0xf6, 0xbb, 0x35, 0xe0, 0xbc, + 0x34, 0x47, 0xec, 0xb2, 0xb7, 0xb1, 0x45, 0xf4, 0xed, 0x23, 0xd9, 0x5b, 0xea, 0x54, 0x0b, 0x0e, + 0x91, 0x48, 0x99, 0xa0, 0x1e, 0x87, 0x89, 0x1d, 0xd3, 0x33, 0x83, 0x80, 0x21, 0x12, 0x8e, 0x97, + 0x78, 0x31, 0x0e, 0xe0, 0xea, 0x72, 0x8c, 0x97, 0xdc, 0x76, 0x7a, 0x8e, 0xe5, 0x74, 0xf6, 0x16, + 0xef, 0x68, 0x2e, 0xc1, 0x4e, 0xdf, 0x17, 0xd8, 0x86, 0xed, 0xd1, 0x0a, 0x5c, 0x96, 0xb0, 0x65, + 0x3e, 0x79, 0x3e, 0x0a, 0xba, 0x7f, 0x59, 0x0d, 0x04, 0x2c, 0xf1, 0x1e, 0xec, 0x5b, 0x0a, 0x3c, + 0x48, 0xf2, 0x78, 0xa8, 0x10, 0x52, 0x4a, 0xef, 0xe1, 0x5c, 0x26, 0x2d, 0x62, 0x3b, 0xe6, 0x81, + 0x71, 0x7e, 0xd7, 0xd0, 0xdd, 0x58, 0x4a, 0xb4, 0x4a, 0x29, 0x2b, 0x50, 0xc6, 0x17, 0x1f, 0x94, + 0x10, 0x0d, 0xfd, 0xa6, 0x02, 0x67, 0xad, 0x8c, 0x5d, 0x28, 0x04, 0x8b, 0xdb, 0xf7, 0x63, 0x87, + 0xf3, 0xab, 0xb7, 0x2c, 0x08, 0xce, 0xec, 0x0b, 0xfa, 0xdb, 0xb9, 0xef, 0xf1, 0xc7, 0x4a, 0x64, + 0x96, 0x3e, 0x6c, 0x31, 0x16, 0x78, 0x9a, 0xff, 0x71, 0x98, 0x72, 0xa2, 0xed, 0x2a, 0x62, 0x28, + 0xdc, 0x2c, 0xdb, 0x3b, 0x89, 0x03, 0x70, 0x67, 0x06, 0xa9, 0x00, 0xcb, 0x04, 0xd1, 0x9b, 0x0a, + 0x20, 0x23, 0x25, 0x98, 0x08, 0x87, 0x0a, 0x7c, 0xfc, 0x42, 0x22, 0xbf, 0xbd, 0x4d, 0x97, 0xe3, + 0x8c, 0x5e, 0xb0, 0xa5, 0xe6, 0x67, 0xf0, 0x10, 0x11, 0x78, 0xb3, 0xf4, 0x52, 0xcb, 0xe2, 0x4f, + 0x7c, 0xa9, 0x65, 0x41, 0x70, 0x66, 0x5f, 0xd4, 0x7f, 0x31, 0xc1, 0x6d, 0x14, 0xec, 0x6e, 0x4d, + 0x87, 0xf1, 0x0d, 0x66, 0xd4, 0x12, 0xdc, 0xa3, 0xb8, 0x09, 0x8d, 0xdb, 0xc6, 0xb8, 0x34, 0xcd, + 0xff, 0xc7, 0x02, 0x35, 0x5a, 0x00, 0xd8, 0xb0, 0x1c, 0x7d, 0xbb, 0xd1, 0x6a, 0xe2, 0x40, 0x45, + 0x63, 0x3b, 0xb6, 0x1e, 0x96, 0x62, 0xa9, 0x06, 0xfa, 0x10, 0x8c, 0x18, 0x76, 0x60, 0xd4, 0x7b, + 0xb6, 0x8c, 0xf1, 0x28, 0x7a, 0xb4, 0xd1, 0x5c, 0x6d, 0x63, 0x8a, 0x15, 0x39, 0x50, 0xb5, 0x85, + 0x19, 0x40, 0x70, 0x80, 0xe2, 0x29, 0x02, 0x43, 0x7b, 0x42, 0x68, 0xc6, 0x08, 0x4a, 0x70, 0x48, + 0x84, 0x12, 0x0c, 0xed, 0x61, 0x63, 0x25, 0x09, 0x86, 0xc6, 0xb0, 0x41, 0x06, 0xc7, 0x35, 0xd9, + 0xb4, 0x35, 0x3e, 0xbc, 0x69, 0x6b, 0x26, 0xf7, 0x3e, 0x60, 0x13, 0xc6, 0x7d, 0xcd, 0xb4, 0xfd, + 0xc0, 0x35, 0xf7, 0xf9, 0xc2, 0x03, 0xb8, 0x4d, 0xd1, 0x44, 0x26, 0x07, 0xf6, 0xd3, 0xc3, 0x02, + 0x3b, 0x5d, 0x8d, 0x3b, 0x2c, 0x5b, 0xaf, 0xd8, 0x30, 0xc5, 0x57, 0x23, 0x4f, 0xfa, 0xcb, 0x57, + 0x23, 0xff, 0x1f, 0x0b, 0xd4, 0x68, 0x1b, 0xaa, 0x5e, 0xe0, 0x75, 0x30, 0x59, 0x3a, 0x47, 0xa4, + 0x70, 0x39, 0x10, 0xcf, 0x3f, 0x84, 0xaf, 0x41, 0x48, 0x00, 0xe9, 0x30, 0x61, 0xf2, 0xe7, 0x0a, + 0x22, 0x35, 0xc7, 0xb3, 0x65, 0xd2, 0x23, 0x05, 0xb9, 0xac, 0xf9, 0x5b, 0xfc, 0x00, 0xb3, 0xfa, + 0x67, 0xa3, 0xdc, 0x3c, 0x2d, 0xbc, 0xbb, 0x5c, 0x96, 0x95, 0x29, 0x78, 0x74, 0xac, 0x94, 0xf8, + 0x62, 0xe1, 0x8b, 0xe4, 0x58, 0x36, 0xa6, 0xe0, 0xd1, 0xb2, 0x44, 0x05, 0x75, 0xa0, 0x1a, 0x20, + 0x2b, 0x65, 0xef, 0x0f, 0x12, 0xe1, 0xf1, 0x09, 0x0d, 0xd3, 0xe2, 0x85, 0xc8, 0x51, 0x23, 0xeb, + 0x91, 0x99, 0x14, 0x62, 0x71, 0xa8, 0x07, 0x66, 0xd9, 0xfe, 0x6f, 0xa3, 0x85, 0xfc, 0xdf, 0x9e, + 0x83, 0x53, 0xc2, 0xd3, 0xa0, 0xc5, 0xd2, 0x36, 0xfb, 0x7b, 0xc2, 0x4b, 0x9e, 0x79, 0xa1, 0x34, + 0xe2, 0x20, 0x9c, 0xac, 0x8b, 0xbe, 0xae, 0xc0, 0xa3, 0xdc, 0x43, 0xbf, 0x41, 0xcf, 0x5b, 0x96, + 0xe3, 0x96, 0x44, 0x49, 0x75, 0x23, 0xdf, 0xb0, 0xf1, 0x23, 0xfb, 0x86, 0x3d, 0x76, 0xb0, 0x5f, + 0x7b, 0xb4, 0x31, 0x04, 0x6e, 0x3c, 0x54, 0x0f, 0xd4, 0x9b, 0x30, 0x19, 0x6e, 0x61, 0xf4, 0xb0, + 0x24, 0xed, 0x47, 0x5c, 0xf6, 0x26, 0xd9, 0xe3, 0xa2, 0x7f, 0x2d, 0x26, 0xfa, 0x73, 0xeb, 0xd2, + 0x4b, 0xb4, 0x40, 0x68, 0x01, 0xea, 0x7f, 0x52, 0xf8, 0x9a, 0x15, 0xb9, 0xbf, 0x35, 0x98, 0xea, + 0xf2, 0xe8, 0x92, 0xec, 0x49, 0xa8, 0x52, 0xfc, 0x31, 0xea, 0x4a, 0x84, 0x06, 0xcb, 0x38, 0xd1, + 0x6e, 0x3a, 0x41, 0xfd, 0xf5, 0x92, 0xfc, 0x65, 0xe8, 0x3c, 0xf5, 0x28, 0xdd, 0x86, 0x2a, 0x02, + 0x81, 0x57, 0x6b, 0x22, 0x5b, 0x73, 0xca, 0xb3, 0xf5, 0xd0, 0xfc, 0x9a, 0xea, 0xb7, 0x2b, 0x90, + 0x99, 0xb8, 0x08, 0xa9, 0x30, 0xce, 0xdf, 0x5a, 0xc8, 0xa9, 0xfb, 0xf9, 0x43, 0x0c, 0x2c, 0x20, + 0xe8, 0x16, 0xd7, 0x2a, 0x6d, 0x83, 0x05, 0x49, 0x8a, 0x3e, 0xbd, 0xfc, 0xac, 0x67, 0x29, 0xab, + 0x02, 0xce, 0x6e, 0x87, 0x76, 0x00, 0x75, 0xb5, 0xdd, 0x24, 0xb6, 0x12, 0xb9, 0x2c, 0x56, 0x52, + 0xd8, 0x70, 0x06, 0x05, 0xba, 0x17, 0x35, 0x5d, 0x27, 0x3d, 0x9f, 0x18, 0x7c, 0x88, 0x81, 0xe5, + 0x9e, 0xed, 0xc5, 0xc5, 0x38, 0x08, 0x27, 0xeb, 0xb2, 0xc4, 0xed, 0xf1, 0x49, 0xfc, 0x49, 0xe2, + 0xf6, 0x9f, 0x24, 0x6e, 0x3f, 0xde, 0xc4, 0xed, 0xbf, 0x53, 0x81, 0x31, 0x76, 0xf1, 0xf4, 0x16, + 0xf1, 0x3a, 0x64, 0x7d, 0xcd, 0xbd, 0x81, 0xdf, 0x4a, 0xdc, 0xc0, 0xbf, 0x50, 0x82, 0xc6, 0xe0, + 0x2b, 0xf8, 0x0f, 0xc2, 0x79, 0x56, 0x6d, 0xd1, 0x60, 0x7a, 0xa9, 0x47, 0x8c, 0x45, 0xc3, 0x60, + 0x8f, 0x62, 0x0f, 0x37, 0xed, 0x3d, 0x0c, 0x23, 0x7d, 0xd7, 0x4a, 0x3e, 0xe3, 0x5e, 0xc7, 0xcb, + 0x98, 0x96, 0xab, 0x9f, 0x53, 0x60, 0x8e, 0xe1, 0x96, 0x36, 0x30, 0xba, 0x03, 0x55, 0x57, 0x6c, + 0x62, 0xf1, 0x75, 0x56, 0x8a, 0x8f, 0x2d, 0x83, 0x33, 0x88, 0xbc, 0x6a, 0xe2, 0x17, 0x0e, 0x89, + 0xa9, 0x7f, 0x3a, 0x0e, 0xf3, 0x79, 0x8d, 0xd0, 0x17, 0x14, 0x38, 0xaf, 0x47, 0xa7, 0xf4, 0x62, + 0xdf, 0xdf, 0x72, 0x5c, 0xd3, 0x37, 0xc5, 0xad, 0x6c, 0x51, 0x89, 0xb9, 0xb1, 0x18, 0x76, 0x8b, + 0x05, 0xca, 0x69, 0x64, 0x92, 0xc0, 0x39, 0xa4, 0xd1, 0xc7, 0x00, 0xb6, 0xa3, 0xe8, 0x7c, 0x95, + 0x12, 0x09, 0xef, 0xd9, 0xc0, 0xa5, 0x10, 0x7e, 0x41, 0xaf, 0x98, 0xb6, 0x28, 0x95, 0x4b, 0xf4, + 0x58, 0xba, 0x7d, 0x6f, 0xeb, 0x26, 0xd9, 0xeb, 0x69, 0xa6, 0x5b, 0x2a, 0xdd, 0x3e, 0x5f, 0x87, + 0xed, 0x1b, 0x02, 0x57, 0x9c, 0xba, 0x54, 0x2e, 0xd1, 0x43, 0x7f, 0x4d, 0x81, 0x19, 0x2e, 0x15, + 0x0a, 0x7f, 0x43, 0xc1, 0xdf, 0x6e, 0x15, 0xef, 0xc1, 0x2d, 0x19, 0x5d, 0xd8, 0x09, 0x76, 0xa7, + 0x19, 0x07, 0xc5, 0x09, 0xd3, 0xc5, 0x71, 0xda, 0x4b, 0x1e, 0x5f, 0x82, 0xc1, 0xad, 0x1e, 0x43, + 0x92, 0x44, 0xe9, 0x30, 0xe4, 0xb2, 0x76, 0x1a, 0x9c, 0xa6, 0xcf, 0x7a, 0x45, 0x7c, 0xdd, 0x58, + 0xb2, 0x75, 0x77, 0x8f, 0xbd, 0x06, 0xa2, 0xbd, 0x1a, 0x2f, 0xd1, 0xab, 0xa5, 0xdb, 0x8d, 0x66, + 0x0c, 0x5b, 0xbc, 0x57, 0x69, 0x70, 0x9a, 0xbe, 0xfa, 0x4b, 0x15, 0x78, 0x20, 0x67, 0xb1, 0xe5, + 0x9c, 0x99, 0xca, 0x7d, 0x3d, 0x33, 0x7f, 0x04, 0xb2, 0x01, 0x73, 0x19, 0x67, 0x73, 0xf0, 0x56, + 0x71, 0x19, 0x67, 0x9d, 0xcd, 0x71, 0x57, 0xf9, 0x7d, 0x05, 0x4e, 0xa7, 0xa2, 0xb5, 0x0d, 0x71, + 0x36, 0x9c, 0xa0, 0xe3, 0xc5, 0x3b, 0x92, 0x39, 0xf0, 0xa7, 0x32, 0xf3, 0xdf, 0xbf, 0x0c, 0x33, + 0x31, 0x67, 0x95, 0x30, 0x56, 0x85, 0x92, 0x19, 0xab, 0x42, 0x0e, 0x45, 0x51, 0x19, 0x14, 0x8a, + 0x42, 0xfd, 0x54, 0x05, 0x2e, 0xe4, 0x33, 0x98, 0xbf, 0x32, 0xcb, 0x3e, 0xdc, 0xfa, 0x69, 0x4e, + 0xff, 0x57, 0x66, 0x0e, 0xfe, 0xfe, 0x29, 0xb1, 0xf5, 0x99, 0x11, 0xf8, 0x23, 0x30, 0xce, 0xc2, + 0x7f, 0x04, 0x42, 0xc4, 0xcf, 0x15, 0x8f, 0x2b, 0xe2, 0x71, 0x05, 0x93, 0xff, 0x8f, 0x05, 0x5a, + 0xd4, 0x84, 0x39, 0xdd, 0x72, 0xfa, 0x86, 0x48, 0xf4, 0xb6, 0x1a, 0xe9, 0xb2, 0x61, 0x0c, 0xb7, + 0x46, 0x02, 0x8e, 0x53, 0x2d, 0x50, 0x5b, 0x36, 0x0b, 0x17, 0x8b, 0xe1, 0xd6, 0x5c, 0x6d, 0xf3, + 0xb8, 0xe5, 0xa1, 0x39, 0xd8, 0x05, 0x20, 0xc1, 0x2e, 0x0e, 0x9e, 0x3d, 0x3d, 0x5f, 0x30, 0x3e, + 0x5d, 0xc8, 0x0c, 0x02, 0xa9, 0x3c, 0x2c, 0xf2, 0xb0, 0x44, 0x05, 0x79, 0x30, 0xb5, 0x65, 0x6e, + 0x10, 0xd7, 0x8e, 0x72, 0x45, 0x17, 0x15, 0x9d, 0x6f, 0x44, 0x78, 0xb8, 0xf9, 0x43, 0x2a, 0xc0, + 0x32, 0x15, 0xe4, 0x71, 0x21, 0x8d, 0x1b, 0xc2, 0x4a, 0x65, 0x94, 0x8e, 0x4c, 0x6c, 0xd1, 0x48, + 0xa3, 0x32, 0x2c, 0x91, 0x41, 0x0e, 0x80, 0x1d, 0x46, 0xff, 0x11, 0x97, 0x34, 0xc5, 0x88, 0x46, + 0x41, 0x84, 0xb8, 0x38, 0x16, 0xfd, 0xc6, 0x12, 0x09, 0x3a, 0xb5, 0xdd, 0x28, 0xde, 0x93, 0x30, + 0x23, 0xbf, 0x50, 0x36, 0xe8, 0x96, 0xb0, 0x2c, 0x45, 0x05, 0x58, 0xa6, 0x42, 0x47, 0xd9, 0x0d, + 0xe3, 0x40, 0x09, 0x9b, 0x72, 0xb1, 0x51, 0x46, 0xe1, 0xa4, 0xf8, 0x28, 0xa3, 0xdf, 0x58, 0x22, + 0x81, 0xb6, 0xa5, 0x2b, 0x05, 0x28, 0x61, 0x6d, 0x1d, 0xea, 0x3a, 0xe1, 0x3d, 0x91, 0x9d, 0x6a, + 0x8a, 0xed, 0xd9, 0x87, 0x24, 0x1b, 0xd5, 0xbd, 0xfd, 0xda, 0x34, 0x63, 0x24, 0x29, 0x9b, 0x55, + 0xe4, 0x66, 0x38, 0x3d, 0xd0, 0xcd, 0xb0, 0x41, 0x85, 0x56, 0xc9, 0x97, 0x9d, 0x31, 0x87, 0x99, + 0xc8, 0xa0, 0xdb, 0x4e, 0x02, 0x71, 0xba, 0x3e, 0x3f, 0x04, 0x89, 0xc1, 0xda, 0xce, 0xca, 0x87, + 0x20, 0x2f, 0xc3, 0x21, 0x14, 0xdd, 0x81, 0x69, 0x4f, 0xf2, 0x59, 0x14, 0xc9, 0xc3, 0xca, 0xdc, + 0x00, 0x08, 0x87, 0x45, 0x16, 0x14, 0x45, 0x2e, 0xc1, 0x31, 0x42, 0xe8, 0x63, 0x30, 0x19, 0x58, + 0x2c, 0xbd, 0xf9, 0xb9, 0x12, 0x6f, 0xcf, 0xb2, 0x43, 0x7f, 0x45, 0x26, 0xc8, 0x00, 0xe4, 0xe1, + 0x88, 0x20, 0xda, 0x89, 0xbf, 0x3f, 0x3f, 0x7d, 0x3c, 0x2f, 0x6e, 0x43, 0x8f, 0x95, 0xbc, 0xb7, + 0xe7, 0xf4, 0xeb, 0x92, 0xdd, 0x9e, 0xe3, 0xf5, 0x5d, 0xc2, 0xa2, 0x0e, 0xb2, 0x2f, 0x84, 0xa2, + 0xaf, 0xbb, 0x94, 0x04, 0xe2, 0x74, 0x7d, 0xf4, 0x69, 0x05, 0xe6, 0x78, 0xf6, 0x35, 0x7a, 0x8c, + 0x39, 0x36, 0xb1, 0x7d, 0x8f, 0xa5, 0x17, 0x2b, 0xfa, 0x3e, 0xac, 0x9d, 0x40, 0xc6, 0x13, 0x66, + 0x24, 0x4b, 0x71, 0x8a, 0x28, 0x5d, 0x3d, 0xf2, 0xa3, 0x5d, 0x96, 0xa6, 0xac, 0xe8, 0xea, 0x91, + 0x5f, 0x04, 0xf3, 0xd5, 0x23, 0x97, 0xe0, 0x18, 0x21, 0xf5, 0x5f, 0x29, 0x00, 0xa1, 0x99, 0x84, + 0x9c, 0x80, 0xed, 0x88, 0xc4, 0x6c, 0x47, 0x8d, 0x72, 0x76, 0x1d, 0x92, 0xfb, 0x6c, 0xf5, 0x8f, + 0x15, 0x98, 0x8d, 0xaa, 0x9d, 0x80, 0x22, 0x62, 0xc4, 0x15, 0x91, 0xf7, 0x97, 0x1c, 0x58, 0x8e, + 0x36, 0xf2, 0x97, 0x15, 0x79, 0x58, 0x4c, 0xc8, 0xba, 0x23, 0xdd, 0x90, 0xf1, 0x3b, 0xb9, 0x56, + 0xa9, 0x1b, 0x32, 0xf9, 0x31, 0x60, 0x34, 0xe2, 0x8c, 0x1b, 0xb3, 0x4f, 0xc4, 0x24, 0x9c, 0x32, + 0xaf, 0x5e, 0x43, 0x71, 0x26, 0xa0, 0xcd, 0xa7, 0xe0, 0x30, 0x71, 0xc7, 0x95, 0x39, 0x1f, 0x77, + 0x34, 0x5c, 0x2c, 0xf8, 0xd2, 0x52, 0x1a, 0xf2, 0x40, 0x7e, 0xa7, 0x7e, 0x73, 0x16, 0xa6, 0x24, + 0xb3, 0xe2, 0x8f, 0xe4, 0x4e, 0xb4, 0x0f, 0x53, 0x7a, 0x18, 0x95, 0x37, 0x98, 0xf9, 0xb2, 0x44, + 0x43, 0x96, 0x1b, 0x05, 0xfc, 0xf5, 0xb0, 0x4c, 0x87, 0x0a, 0x07, 0xe1, 0x42, 0x1b, 0x39, 0x8e, + 0xab, 0xd8, 0x41, 0x8b, 0xeb, 0x69, 0x80, 0x40, 0xc8, 0x24, 0x86, 0x88, 0xd7, 0x16, 0x66, 0xb5, + 0x68, 0x79, 0x37, 0x42, 0x18, 0x96, 0xea, 0xa1, 0x37, 0x60, 0xc6, 0x92, 0x83, 0xbc, 0x0b, 0x11, + 0xb8, 0xd8, 0xcb, 0x8e, 0x58, 0xb8, 0x78, 0x6e, 0x26, 0x8b, 0x15, 0xe1, 0x38, 0x2d, 0xb4, 0x0d, + 0x93, 0x56, 0x90, 0xc1, 0x41, 0xc8, 0xc1, 0xcf, 0x17, 0x26, 0xcc, 0xb0, 0x70, 0xcf, 0x89, 0xf0, + 0x27, 0x8e, 0xf0, 0xd3, 0x75, 0x17, 0xfe, 0x28, 0xe7, 0x3d, 0x11, 0x51, 0x0b, 0xd7, 0x5d, 0x58, + 0xe4, 0x61, 0x89, 0x4a, 0xce, 0xed, 0x76, 0xb5, 0xd0, 0xed, 0x76, 0x1f, 0xce, 0xb8, 0xc4, 0x77, + 0xf7, 0x1a, 0x7b, 0x3a, 0xcb, 0xa4, 0xe2, 0xfa, 0x4c, 0x3b, 0x9d, 0x2c, 0x16, 0xa8, 0x05, 0xa7, + 0x51, 0xe1, 0x2c, 0xfc, 0xe8, 0x22, 0x8c, 0x52, 0xe1, 0x49, 0x04, 0x42, 0x63, 0x26, 0x0f, 0x2a, + 0x5a, 0x61, 0x56, 0x8a, 0xde, 0x03, 0x53, 0x3e, 0xd1, 0xb7, 0x6c, 0x53, 0xd7, 0xac, 0x56, 0x53, + 0x48, 0xa5, 0x91, 0x2c, 0x12, 0x81, 0xb0, 0x5c, 0x0f, 0xd5, 0x61, 0xa4, 0x6f, 0x1a, 0x42, 0x1c, + 0xfd, 0x99, 0xf0, 0x1a, 0xa0, 0xd5, 0xbc, 0xb7, 0x5f, 0x7b, 0x7b, 0xe4, 0x1c, 0x1b, 0x8e, 0xe4, + 0x4a, 0x6f, 0xbb, 0x73, 0xc5, 0xdf, 0xeb, 0x11, 0x6f, 0x61, 0xbd, 0xd5, 0xc4, 0xb4, 0x71, 0xd6, + 0x6d, 0xff, 0xcc, 0x11, 0x6e, 0xfb, 0xdf, 0x54, 0xe0, 0x8c, 0x96, 0xbc, 0xc1, 0x20, 0xde, 0xfc, + 0x6c, 0x09, 0xae, 0x9c, 0x7d, 0x2d, 0x52, 0x7f, 0x48, 0x0c, 0xf0, 0xcc, 0x62, 0x9a, 0x1e, 0xce, + 0xea, 0x04, 0x72, 0x01, 0x75, 0xcd, 0x4e, 0x98, 0xaf, 0x41, 0x7c, 0xea, 0x53, 0xc5, 0x0c, 0x11, + 0x2b, 0x29, 0x4c, 0x38, 0x03, 0x3b, 0xda, 0x85, 0x29, 0x3d, 0xba, 0xe7, 0x60, 0x59, 0x73, 0x0b, + 0x0b, 0x75, 0x89, 0x4b, 0x13, 0x91, 0x90, 0x5d, 0xba, 0x45, 0x91, 0x49, 0x85, 0xb7, 0x94, 0x92, + 0xc2, 0x2c, 0x6e, 0xea, 0xd8, 0xb0, 0x4f, 0x17, 0xbf, 0xa5, 0xcc, 0xc6, 0x88, 0x07, 0x50, 0x63, + 0x11, 0x51, 0xac, 0x78, 0x5e, 0x15, 0x26, 0x25, 0x17, 0x7d, 0x3b, 0x99, 0xc8, 0xd1, 0xc2, 0x57, + 0x67, 0xa2, 0x10, 0x27, 0x29, 0xaa, 0xff, 0x5d, 0x81, 0x94, 0x10, 0x8c, 0x74, 0x98, 0xa0, 0xb8, + 0x9b, 0xab, 0x6d, 0x21, 0x8d, 0x3d, 0x5b, 0xf0, 0x04, 0x63, 0x38, 0xb8, 0xcd, 0x53, 0xfc, 0xc0, + 0x01, 0x66, 0x2a, 0x57, 0xdb, 0x52, 0x84, 0x53, 0x21, 0x75, 0x16, 0x93, 0x12, 0xe4, 0x50, 0xa9, + 0x5c, 0xae, 0x96, 0x4b, 0x70, 0x8c, 0x90, 0xba, 0x0c, 0x10, 0xe9, 0x2e, 0xa5, 0x9d, 0x5a, 0xfe, + 0xe3, 0x18, 0x9c, 0x2b, 0xeb, 0xf5, 0xcd, 0x72, 0x5f, 0xb0, 0xdc, 0xe4, 0x8b, 0x9b, 0x3e, 0x71, + 0x6f, 0xdd, 0x5a, 0x09, 0xf3, 0x36, 0x17, 0x4c, 0xbe, 0x11, 0x65, 0xb7, 0x4f, 0x61, 0xc4, 0x39, + 0x94, 0x98, 0xde, 0x26, 0xd2, 0x72, 0x62, 0x2a, 0xe3, 0xb1, 0xa4, 0xcc, 0x3c, 0x6e, 0x02, 0xd7, + 0xdb, 0x92, 0x40, 0x9c, 0xae, 0x9f, 0x44, 0xc2, 0xf3, 0xa4, 0x53, 0x19, 0x41, 0x49, 0x23, 0xe1, + 0xc9, 0xd2, 0xd3, 0xf5, 0x65, 0x24, 0xfc, 0x4b, 0xd1, 0xbd, 0x31, 0x96, 0x46, 0x12, 0x02, 0x71, + 0xba, 0x3e, 0x32, 0xe0, 0xa2, 0x4b, 0x74, 0xa7, 0xdb, 0x25, 0xb6, 0xc1, 0x13, 0x4b, 0x69, 0x6e, + 0xc7, 0xb4, 0xaf, 0xb9, 0x1a, 0xab, 0xc8, 0xc4, 0x00, 0xa5, 0x7e, 0xf9, 0x60, 0xbf, 0x76, 0x11, + 0x0f, 0xa8, 0x87, 0x07, 0x62, 0x41, 0x5d, 0x38, 0xd5, 0x67, 0xa1, 0xd0, 0xdd, 0x96, 0xed, 0x13, + 0x77, 0x47, 0xb3, 0x84, 0xc9, 0xab, 0x50, 0x6a, 0xcd, 0xf5, 0x38, 0x2a, 0x9c, 0xc4, 0x8d, 0xf6, + 0xe8, 0xd9, 0x2c, 0xba, 0x23, 0x91, 0xac, 0x16, 0xcf, 0x0e, 0x83, 0xd3, 0xe8, 0x70, 0x16, 0x0d, + 0xf5, 0x6f, 0x2a, 0x20, 0xdc, 0x2a, 0xe9, 0x51, 0x2d, 0x5d, 0xb1, 0x54, 0x13, 0xd7, 0x2b, 0x41, + 0xc0, 0xef, 0x4a, 0x66, 0xc0, 0xef, 0x77, 0x4a, 0x01, 0x39, 0x26, 0x23, 0xb9, 0x86, 0x63, 0x96, + 0xd2, 0x09, 0xfc, 0x14, 0x4c, 0xf4, 0x5c, 0xb3, 0xab, 0xb9, 0x7b, 0x42, 0xc4, 0x64, 0x02, 0x97, + 0xb8, 0xd1, 0xa3, 0x7b, 0x47, 0x40, 0xd5, 0xef, 0x29, 0x20, 0x5a, 0xb3, 0xcc, 0x17, 0x43, 0x25, + 0x40, 0x38, 0xd4, 0xb9, 0x4a, 0x4a, 0xdc, 0x30, 0x92, 0x9b, 0xb8, 0xe1, 0x3e, 0xe5, 0x33, 0xf8, + 0x96, 0x02, 0xa7, 0xe2, 0xd1, 0x51, 0x3c, 0xf4, 0x0e, 0x98, 0x10, 0x71, 0xd4, 0x44, 0x0c, 0x24, + 0xd6, 0x34, 0xc8, 0x72, 0x1e, 0xc0, 0xe2, 0x06, 0xa7, 0x32, 0x6a, 0x5f, 0x76, 0x94, 0x96, 0x43, + 0x14, 0xb0, 0x5f, 0x9b, 0x83, 0x71, 0x1e, 0x82, 0x8b, 0x1e, 0x6e, 0x19, 0x8f, 0xf1, 0x96, 0x4b, + 0x84, 0xfa, 0x2a, 0xf2, 0x76, 0x4a, 0x0e, 0xfc, 0x5c, 0x19, 0x18, 0xf8, 0xb9, 0xcd, 0x73, 0xc5, + 0x94, 0xb9, 0x67, 0x68, 0xe0, 0x96, 0x48, 0x18, 0x1b, 0xe4, 0x89, 0xe9, 0xc7, 0xcc, 0xef, 0xa3, + 0x25, 0xe4, 0x1c, 0x3e, 0x05, 0x92, 0x11, 0x7e, 0x76, 0xa0, 0x01, 0x3e, 0x08, 0x71, 0x34, 0x56, + 0xc2, 0xe3, 0x51, 0xcc, 0xfa, 0x10, 0x21, 0x8e, 0xc2, 0xdd, 0x34, 0x9e, 0xbb, 0x9b, 0x3a, 0x30, + 0x21, 0xf6, 0x83, 0xe0, 0x8e, 0xcf, 0x96, 0x49, 0xbb, 0x22, 0x05, 0xe8, 0xe4, 0x05, 0x38, 0xc0, + 0x4e, 0xcf, 0xdc, 0xae, 0xb6, 0x6b, 0x76, 0xfb, 0x5d, 0xc6, 0x13, 0xc7, 0xe4, 0xaa, 0xac, 0x18, + 0x07, 0x70, 0x56, 0x95, 0xbb, 0x8a, 0x32, 0xd5, 0x46, 0xae, 0x2a, 0x72, 0x9e, 0x07, 0x70, 0xf4, + 0x2a, 0x54, 0xbb, 0xda, 0x6e, 0xbb, 0xef, 0x76, 0x88, 0xb0, 0xbd, 0xe7, 0x9b, 0xde, 0xfa, 0xbe, + 0x69, 0x2d, 0x50, 0xa5, 0xdc, 0x77, 0x17, 0x5a, 0xb6, 0x7f, 0xcb, 0x6d, 0xfb, 0x6e, 0x98, 0xd9, + 0x61, 0x45, 0x60, 0xc1, 0x21, 0x3e, 0x64, 0xc1, 0x6c, 0x57, 0xdb, 0x5d, 0xb7, 0xb5, 0x30, 0x35, + 0xf3, 0x54, 0x41, 0x0a, 0xec, 0x3e, 0x7a, 0x25, 0x86, 0x0b, 0x27, 0x70, 0x67, 0x5c, 0x7d, 0x4f, + 0xdf, 0xaf, 0xab, 0xef, 0xc5, 0xf0, 0x01, 0xc1, 0x0c, 0x5b, 0x86, 0x0f, 0x66, 0xbd, 0x47, 0x18, + 0xfc, 0x36, 0xe0, 0x23, 0xe1, 0xdb, 0x80, 0xd9, 0x12, 0x97, 0x94, 0x03, 0xde, 0x05, 0xec, 0xc0, + 0x94, 0xa1, 0xf9, 0x1a, 0x2f, 0xf5, 0xe6, 0x4f, 0x95, 0xb0, 0x0f, 0x36, 0x43, 0x3c, 0x52, 0x8a, + 0xbf, 0x08, 0x37, 0x96, 0x09, 0xa1, 0x5b, 0x3c, 0x75, 0xaf, 0x45, 0xfc, 0xa8, 0x0a, 0x33, 0x93, + 0xcf, 0xb1, 0x2d, 0x14, 0x26, 0xda, 0x4d, 0x55, 0xc0, 0xd9, 0xed, 0xa2, 0xc0, 0x0d, 0xa7, 0xb3, + 0x03, 0x37, 0xa0, 0x5f, 0xcd, 0xb2, 0xa7, 0xa3, 0x12, 0x2f, 0xb9, 0x38, 0x7f, 0x28, 0x6c, 0x55, + 0xff, 0x87, 0x0a, 0xcc, 0x77, 0x73, 0x72, 0xe1, 0x09, 0x3b, 0xff, 0x7a, 0x19, 0x1e, 0x91, 0x9b, + 0x60, 0xaf, 0xfe, 0xe8, 0xc1, 0x7e, 0xed, 0xd0, 0x34, 0x7c, 0x38, 0xb7, 0x73, 0xc8, 0x83, 0x09, + 0x6f, 0xcf, 0xd3, 0x7d, 0xcb, 0x9b, 0x3f, 0x5b, 0x22, 0xe7, 0x9a, 0xe0, 0xaf, 0x6d, 0x8e, 0x8a, + 0x33, 0xd8, 0x28, 0x38, 0x34, 0x2f, 0xc5, 0x01, 0xa5, 0xb2, 0x8f, 0x6f, 0x4b, 0x44, 0xa1, 0xbb, + 0x70, 0x15, 0xa6, 0xe5, 0x4e, 0x1e, 0xe9, 0xcd, 0xef, 0x6f, 0x29, 0x30, 0x97, 0x3c, 0xbb, 0xe4, + 0xec, 0xc8, 0xca, 0x7d, 0xce, 0x8e, 0x2c, 0xb9, 0xdf, 0x54, 0x06, 0xb8, 0xdf, 0x3c, 0x07, 0xe7, + 0xb3, 0x97, 0x33, 0x95, 0x26, 0x59, 0x4e, 0x72, 0xa1, 0xc1, 0x45, 0x19, 0x54, 0x68, 0x21, 0xe6, + 0x30, 0xf5, 0xe3, 0x90, 0x8c, 0x3c, 0x8a, 0xb6, 0x61, 0xd2, 0xf3, 0xb6, 0x78, 0x3c, 0x39, 0x31, + 0xca, 0x82, 0xbe, 0xb8, 0x41, 0x54, 0x3a, 0xf1, 0x54, 0x2b, 0xf8, 0x89, 0x23, 0xfc, 0xf5, 0x0f, + 0x7e, 0xe7, 0x87, 0x97, 0xde, 0xf6, 0x87, 0x3f, 0xbc, 0xf4, 0xb6, 0xef, 0xff, 0xf0, 0xd2, 0xdb, + 0x7e, 0xf1, 0xe0, 0x92, 0xf2, 0x9d, 0x83, 0x4b, 0xca, 0x1f, 0x1e, 0x5c, 0x52, 0xbe, 0x7f, 0x70, + 0x49, 0xf9, 0xf7, 0x07, 0x97, 0x94, 0xbf, 0xfe, 0xa7, 0x97, 0xde, 0xf6, 0xea, 0x53, 0x11, 0xf9, + 0x2b, 0x01, 0xd5, 0xe8, 0x9f, 0xde, 0x76, 0xe7, 0x0a, 0x25, 0x1f, 0x3c, 0x13, 0xe7, 0xe4, 0xff, + 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xed, 0xaa, 0x77, 0x0c, 0x97, 0xe0, 0x00, 0x00, } func (m *Addon) Marshal() (dAtA []byte, err error) { @@ -5617,6 +5681,13 @@ func (m *AdmissionPlugin) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.KubeconfigSecretName != nil { + i -= len(*m.KubeconfigSecretName) + copy(dAtA[i:], *m.KubeconfigSecretName) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.KubeconfigSecretName))) + i-- + dAtA[i] = 0x22 + } if m.Disabled != nil { i-- if *m.Disabled { @@ -10486,15 +10557,17 @@ func (m *MaintenanceAutoUpdate) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - i-- - if m.MachineImageVersion { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if m.MachineImageVersion != nil { + i-- + if *m.MachineImageVersion { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 } i-- - dAtA[i] = 0x10 - i-- if m.KubernetesVersion { dAtA[i] = 1 } else { @@ -10673,11 +10746,13 @@ func (m *Networking) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0xa + if m.Type != nil { + i -= len(*m.Type) + copy(dAtA[i:], *m.Type) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Type))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } @@ -12044,13 +12119,6 @@ func (m *SeedDNS) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if m.IngressDomain != nil { - i -= len(*m.IngressDomain) - copy(dAtA[i:], *m.IngressDomain) - i = encodeVarintGenerated(dAtA, i, uint64(len(*m.IngressDomain))) - i-- - dAtA[i] = 0xa - } return len(dAtA) - i, nil } @@ -12074,30 +12142,6 @@ func (m *SeedDNSProvider) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.Zones != nil { - { - size, err := m.Zones.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.Domains != nil { - { - size, err := m.Domains.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } { size, err := m.SecretRef.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -12340,6 +12384,30 @@ func (m *SeedSettingDependencyWatchdog) MarshalToSizedBuffer(dAtA []byte) (int, _ = i var l int _ = l + if m.Prober != nil { + { + size, err := m.Prober.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.Weeder != nil { + { + size, err := m.Weeder.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } if m.Probe != nil { { size, err := m.Probe.MarshalToSizedBuffer(dAtA[:i]) @@ -12429,6 +12497,68 @@ func (m *SeedSettingDependencyWatchdogProbe) MarshalToSizedBuffer(dAtA []byte) ( return len(dAtA) - i, nil } +func (m *SeedSettingDependencyWatchdogProber) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SeedSettingDependencyWatchdogProber) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingDependencyWatchdogProber) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + +func (m *SeedSettingDependencyWatchdogWeeder) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SeedSettingDependencyWatchdogWeeder) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingDependencyWatchdogWeeder) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *SeedSettingExcessCapacityReservation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13882,11 +14012,13 @@ func (m *ShootSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x72 } - i -= len(m.SecretBindingName) - copy(dAtA[i:], m.SecretBindingName) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.SecretBindingName))) - i-- - dAtA[i] = 0x6a + if m.SecretBindingName != nil { + i -= len(*m.SecretBindingName) + copy(dAtA[i:], *m.SecretBindingName) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SecretBindingName))) + i-- + dAtA[i] = 0x6a + } i -= len(m.Region) copy(dAtA[i:], m.Region) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Region))) @@ -13933,16 +14065,18 @@ func (m *ShootSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x42 } - { - size, err := m.Networking.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if m.Networking != nil { + { + size, err := m.Networking.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x3a } - i-- - dAtA[i] = 0x3a { size, err := m.Kubernetes.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -14721,6 +14855,32 @@ func (m *Worker) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Sysctls) > 0 { + keysForSysctls := make([]string, 0, len(m.Sysctls)) + for k := range m.Sysctls { + keysForSysctls = append(keysForSysctls, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSysctls) + for iNdEx := len(keysForSysctls) - 1; iNdEx >= 0; iNdEx-- { + v := m.Sysctls[string(keysForSysctls[iNdEx])] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(keysForSysctls[iNdEx]) + copy(dAtA[i:], keysForSysctls[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(keysForSysctls[iNdEx]))) + i-- + dAtA[i] = 0xa + i = encodeVarintGenerated(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + } + } if m.MachineControllerManagerSettings != nil { { size, err := m.MachineControllerManagerSettings.MarshalToSizedBuffer(dAtA[:i]) @@ -15109,6 +15269,10 @@ func (m *AdmissionPlugin) Size() (n int) { if m.Disabled != nil { n += 2 } + if m.KubeconfigSecretName != nil { + l = len(*m.KubeconfigSecretName) + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -16924,7 +17088,9 @@ func (m *MaintenanceAutoUpdate) Size() (n int) { var l int _ = l n += 2 - n += 2 + if m.MachineImageVersion != nil { + n += 2 + } return n } @@ -16973,8 +17139,10 @@ func (m *Networking) Size() (n int) { } var l int _ = l - l = len(m.Type) - n += 1 + l + sovGenerated(uint64(l)) + if m.Type != nil { + l = len(*m.Type) + n += 1 + l + sovGenerated(uint64(l)) + } if m.ProviderConfig != nil { l = m.ProviderConfig.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -17498,10 +17666,6 @@ func (m *SeedDNS) Size() (n int) { } var l int _ = l - if m.IngressDomain != nil { - l = len(*m.IngressDomain) - n += 1 + l + sovGenerated(uint64(l)) - } if m.Provider != nil { l = m.Provider.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -17519,14 +17683,6 @@ func (m *SeedDNSProvider) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = m.SecretRef.Size() n += 1 + l + sovGenerated(uint64(l)) - if m.Domains != nil { - l = m.Domains.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Zones != nil { - l = m.Zones.Size() - n += 1 + l + sovGenerated(uint64(l)) - } return n } @@ -17628,6 +17784,14 @@ func (m *SeedSettingDependencyWatchdog) Size() (n int) { l = m.Probe.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.Weeder != nil { + l = m.Weeder.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Prober != nil { + l = m.Prober.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -17651,6 +17815,26 @@ func (m *SeedSettingDependencyWatchdogProbe) Size() (n int) { return n } +func (m *SeedSettingDependencyWatchdogProber) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + +func (m *SeedSettingDependencyWatchdogWeeder) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + func (m *SeedSettingExcessCapacityReservation) Size() (n int) { if m == nil { return 0 @@ -18173,8 +18357,10 @@ func (m *ShootSpec) Size() (n int) { } l = m.Kubernetes.Size() n += 1 + l + sovGenerated(uint64(l)) - l = m.Networking.Size() - n += 1 + l + sovGenerated(uint64(l)) + if m.Networking != nil { + l = m.Networking.Size() + n += 1 + l + sovGenerated(uint64(l)) + } if m.Maintenance != nil { l = m.Maintenance.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -18191,8 +18377,10 @@ func (m *ShootSpec) Size() (n int) { } l = len(m.Region) n += 1 + l + sovGenerated(uint64(l)) - l = len(m.SecretBindingName) - n += 1 + l + sovGenerated(uint64(l)) + if m.SecretBindingName != nil { + l = len(*m.SecretBindingName) + n += 1 + l + sovGenerated(uint64(l)) + } if m.SeedName != nil { l = len(*m.SeedName) n += 1 + l + sovGenerated(uint64(l)) @@ -18574,6 +18762,14 @@ func (m *Worker) Size() (n int) { l = m.MachineControllerManagerSettings.Size() n += 2 + l + sovGenerated(uint64(l)) } + if len(m.Sysctls) > 0 { + for k, v := range m.Sysctls { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) + } + } return n } @@ -18652,6 +18848,7 @@ func (this *AdmissionPlugin) String() string { `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `Config:` + strings.Replace(fmt.Sprintf("%v", this.Config), "RawExtension", "runtime.RawExtension", 1) + `,`, `Disabled:` + valueToStringGenerated(this.Disabled) + `,`, + `KubeconfigSecretName:` + valueToStringGenerated(this.KubeconfigSecretName) + `,`, `}`, }, "") return s @@ -19854,7 +20051,7 @@ func (this *MaintenanceAutoUpdate) String() string { } s := strings.Join([]string{`&MaintenanceAutoUpdate{`, `KubernetesVersion:` + fmt.Sprintf("%v", this.KubernetesVersion) + `,`, - `MachineImageVersion:` + fmt.Sprintf("%v", this.MachineImageVersion) + `,`, + `MachineImageVersion:` + valueToStringGenerated(this.MachineImageVersion) + `,`, `}`, }, "") return s @@ -19896,7 +20093,7 @@ func (this *Networking) String() string { return "nil" } s := strings.Join([]string{`&Networking{`, - `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Type:` + valueToStringGenerated(this.Type) + `,`, `ProviderConfig:` + strings.Replace(fmt.Sprintf("%v", this.ProviderConfig), "RawExtension", "runtime.RawExtension", 1) + `,`, `Pods:` + valueToStringGenerated(this.Pods) + `,`, `Nodes:` + valueToStringGenerated(this.Nodes) + `,`, @@ -20290,7 +20487,6 @@ func (this *SeedDNS) String() string { return "nil" } s := strings.Join([]string{`&SeedDNS{`, - `IngressDomain:` + valueToStringGenerated(this.IngressDomain) + `,`, `Provider:` + strings.Replace(this.Provider.String(), "SeedDNSProvider", "SeedDNSProvider", 1) + `,`, `}`, }, "") @@ -20303,8 +20499,6 @@ func (this *SeedDNSProvider) String() string { s := strings.Join([]string{`&SeedDNSProvider{`, `Type:` + fmt.Sprintf("%v", this.Type) + `,`, `SecretRef:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.SecretRef), "SecretReference", "v1.SecretReference", 1), `&`, ``, 1) + `,`, - `Domains:` + strings.Replace(this.Domains.String(), "DNSIncludeExclude", "DNSIncludeExclude", 1) + `,`, - `Zones:` + strings.Replace(this.Zones.String(), "DNSIncludeExclude", "DNSIncludeExclude", 1) + `,`, `}`, }, "") return s @@ -20370,6 +20564,8 @@ func (this *SeedSettingDependencyWatchdog) String() string { s := strings.Join([]string{`&SeedSettingDependencyWatchdog{`, `Endpoint:` + strings.Replace(this.Endpoint.String(), "SeedSettingDependencyWatchdogEndpoint", "SeedSettingDependencyWatchdogEndpoint", 1) + `,`, `Probe:` + strings.Replace(this.Probe.String(), "SeedSettingDependencyWatchdogProbe", "SeedSettingDependencyWatchdogProbe", 1) + `,`, + `Weeder:` + strings.Replace(this.Weeder.String(), "SeedSettingDependencyWatchdogWeeder", "SeedSettingDependencyWatchdogWeeder", 1) + `,`, + `Prober:` + strings.Replace(this.Prober.String(), "SeedSettingDependencyWatchdogProber", "SeedSettingDependencyWatchdogProber", 1) + `,`, `}`, }, "") return s @@ -20394,6 +20590,26 @@ func (this *SeedSettingDependencyWatchdogProbe) String() string { }, "") return s } +func (this *SeedSettingDependencyWatchdogProber) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingDependencyWatchdogProber{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} +func (this *SeedSettingDependencyWatchdogWeeder) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingDependencyWatchdogWeeder{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} func (this *SeedSettingExcessCapacityReservation) String() string { if this == nil { return "nil" @@ -20764,13 +20980,13 @@ func (this *ShootSpec) String() string { `Extensions:` + repeatedStringForExtensions + `,`, `Hibernation:` + strings.Replace(this.Hibernation.String(), "Hibernation", "Hibernation", 1) + `,`, `Kubernetes:` + strings.Replace(strings.Replace(this.Kubernetes.String(), "Kubernetes", "Kubernetes", 1), `&`, ``, 1) + `,`, - `Networking:` + strings.Replace(strings.Replace(this.Networking.String(), "Networking", "Networking", 1), `&`, ``, 1) + `,`, + `Networking:` + strings.Replace(this.Networking.String(), "Networking", "Networking", 1) + `,`, `Maintenance:` + strings.Replace(this.Maintenance.String(), "Maintenance", "Maintenance", 1) + `,`, `Monitoring:` + strings.Replace(this.Monitoring.String(), "Monitoring", "Monitoring", 1) + `,`, `Provider:` + strings.Replace(strings.Replace(this.Provider.String(), "Provider", "Provider", 1), `&`, ``, 1) + `,`, `Purpose:` + valueToStringGenerated(this.Purpose) + `,`, `Region:` + fmt.Sprintf("%v", this.Region) + `,`, - `SecretBindingName:` + fmt.Sprintf("%v", this.SecretBindingName) + `,`, + `SecretBindingName:` + valueToStringGenerated(this.SecretBindingName) + `,`, `SeedName:` + valueToStringGenerated(this.SeedName) + `,`, `SeedSelector:` + strings.Replace(this.SeedSelector.String(), "SeedSelector", "SeedSelector", 1) + `,`, `Resources:` + repeatedStringForResources + `,`, @@ -20998,6 +21214,16 @@ func (this *Worker) String() string { mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) } mapStringForLabels += "}" + keysForSysctls := make([]string, 0, len(this.Sysctls)) + for k := range this.Sysctls { + keysForSysctls = append(keysForSysctls, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSysctls) + mapStringForSysctls := "map[string]string{" + for _, k := range keysForSysctls { + mapStringForSysctls += fmt.Sprintf("%v: %v,", k, this.Sysctls[k]) + } + mapStringForSysctls += "}" s := strings.Join([]string{`&Worker{`, `Annotations:` + mapStringForAnnotations + `,`, `CABundle:` + valueToStringGenerated(this.CABundle) + `,`, @@ -21018,6 +21244,7 @@ func (this *Worker) String() string { `Zones:` + fmt.Sprintf("%v", this.Zones) + `,`, `SystemComponents:` + strings.Replace(this.SystemComponents.String(), "WorkerSystemComponents", "WorkerSystemComponents", 1) + `,`, `MachineControllerManagerSettings:` + strings.Replace(this.MachineControllerManagerSettings.String(), "MachineControllerManagerSettings", "MachineControllerManagerSettings", 1) + `,`, + `Sysctls:` + mapStringForSysctls + `,`, `}`, }, "") return s @@ -21371,6 +21598,39 @@ func (m *AdmissionPlugin) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.Disabled = &b + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KubeconfigSecretName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.KubeconfigSecretName = &s + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -35511,7 +35771,8 @@ func (m *MaintenanceAutoUpdate) Unmarshal(dAtA []byte) error { break } } - m.MachineImageVersion = bool(v != 0) + b := bool(v != 0) + m.MachineImageVersion = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -35907,7 +36168,8 @@ func (m *Networking) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Type = string(dAtA[iNdEx:postIndex]) + s := string(dAtA[iNdEx:postIndex]) + m.Type = &s iNdEx = postIndex case 2: if wireType != 2 { @@ -40221,39 +40483,6 @@ func (m *SeedDNS) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: SeedDNS: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IngressDomain", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := string(dAtA[iNdEx:postIndex]) - m.IngressDomain = &s - iNdEx = postIndex case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Provider", wireType) @@ -40405,78 +40634,6 @@ func (m *SeedDNSProvider) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Domains", 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 < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Domains == nil { - m.Domains = &DNSIncludeExclude{} - } - if err := m.Domains.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Zones", 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 < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Zones == nil { - m.Zones = &DNSIncludeExclude{} - } - if err := m.Zones.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -41035,50 +41192,326 @@ func (m *SeedSelector) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSelector: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LabelSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProviderTypes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ProviderTypes = append(m.ProviderTypes, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedSettingDependencyWatchdog) 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: SeedSettingDependencyWatchdog: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSettingDependencyWatchdog: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Endpoint", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Endpoint == nil { + m.Endpoint = &SeedSettingDependencyWatchdogEndpoint{} + } + if err := m.Endpoint.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Probe", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Probe == nil { + m.Probe = &SeedSettingDependencyWatchdogProbe{} + } + if err := m.Probe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Weeder", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Weeder == nil { + m.Weeder = &SeedSettingDependencyWatchdogWeeder{} + } + if err := m.Weeder.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Prober", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Prober == nil { + m.Prober = &SeedSettingDependencyWatchdogProber{} + } + if err := m.Prober.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) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedSettingDependencyWatchdogEndpoint) 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: SeedSettingDependencyWatchdogEndpoint: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSelector: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingDependencyWatchdogEndpoint: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", 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 < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.LabelSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProviderTypes", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) } - var stringLen uint64 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -41088,24 +41521,12 @@ func (m *SeedSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ProviderTypes = append(m.ProviderTypes, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex + m.Enabled = bool(v != 0) default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -41127,7 +41548,7 @@ func (m *SeedSelector) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingDependencyWatchdog) Unmarshal(dAtA []byte) error { +func (m *SeedSettingDependencyWatchdogProbe) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41150,53 +41571,17 @@ func (m *SeedSettingDependencyWatchdog) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdog: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProbe: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdog: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProbe: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Endpoint", 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 < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Endpoint == nil { - m.Endpoint = &SeedSettingDependencyWatchdogEndpoint{} - } - if err := m.Endpoint.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Probe", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) } - var msglen int + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -41206,28 +41591,12 @@ func (m *SeedSettingDependencyWatchdog) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Probe == nil { - m.Probe = &SeedSettingDependencyWatchdogProbe{} - } - if err := m.Probe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex + m.Enabled = bool(v != 0) default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -41249,7 +41618,7 @@ func (m *SeedSettingDependencyWatchdog) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingDependencyWatchdogEndpoint) Unmarshal(dAtA []byte) error { +func (m *SeedSettingDependencyWatchdogProber) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41272,10 +41641,10 @@ func (m *SeedSettingDependencyWatchdogEndpoint) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdogEndpoint: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProber: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdogEndpoint: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProber: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -41319,7 +41688,7 @@ func (m *SeedSettingDependencyWatchdogEndpoint) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingDependencyWatchdogProbe) Unmarshal(dAtA []byte) error { +func (m *SeedSettingDependencyWatchdogWeeder) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41342,10 +41711,10 @@ func (m *SeedSettingDependencyWatchdogProbe) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdogProbe: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingDependencyWatchdogWeeder: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdogProbe: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingDependencyWatchdogWeeder: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -45540,6 +45909,9 @@ func (m *ShootSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } + if m.Networking == nil { + m.Networking = &Networking{} + } if err := m.Networking.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -45744,7 +46116,8 @@ func (m *ShootSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SecretBindingName = string(dAtA[iNdEx:postIndex]) + s := string(dAtA[iNdEx:postIndex]) + m.SecretBindingName = &s iNdEx = postIndex case 14: if wireType != 2 { @@ -48789,6 +49162,133 @@ func (m *Worker) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sysctls", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Sysctls == nil { + m.Sysctls = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := 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) + if fieldNum == 1 { + 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 < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + 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 < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Sysctls[mapkey] = mapvalue + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto index ecf70c04..7388aae6 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -62,6 +62,10 @@ message AdmissionPlugin { // Disabled specifies whether this plugin should be disabled. // +optional optional bool disabled = 3; + + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this admission plugin. + // +optional + optional string kubeconfigSecretName = 4; } // Alerting contains information about how alerting will be done (i.e. who will receive alerts and how). @@ -866,7 +870,7 @@ message HibernationSchedule { // +optional optional string end = 2; - // Location is the time location in which both start and and shall be evaluated. + // Location is the time location in which both start and shall be evaluated. // +optional optional string location = 3; } @@ -1585,6 +1589,7 @@ message MaintenanceAutoUpdate { optional bool kubernetesVersion = 1; // MachineImageVersion indicates whether the machine image version may be automatically updated (default: true). + // +optional optional bool machineImageVersion = 2; } @@ -1618,6 +1623,7 @@ message NamedResourceReference { // Networking defines networking parameters for the shoot cluster. message Networking { // Type identifies the type of the networking plugin. This field is immutable. + // +optional optional string type = 1; // ProviderConfig is the configuration passed to network resource. @@ -1880,6 +1886,7 @@ message Provider { // Workers is a list of worker groups. // +patchMergeKey=name // +patchStrategy=merge + // +optional repeated Worker workers = 4; // WorkersSettings contains settings for all workers. @@ -2042,12 +2049,6 @@ message SeedBackup { // SeedDNS contains DNS-relevant information about this seed cluster. message SeedDNS { - // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used - // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use spec.ingress.domain instead. - // +optional - optional string ingressDomain = 1; - // Provider configures a DNSProvider // +optional optional SeedDNSProvider provider = 2; @@ -2060,16 +2061,6 @@ message SeedDNSProvider { // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. optional k8s.io.api.core.v1.SecretReference secretRef = 2; - - // Domains contains information about which domains shall be included/excluded for this provider. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. - // +optional - optional DNSIncludeExclude domains = 3; - - // Zones contains information about which hosted zones shall be included/excluded for this provider. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. - // +optional - optional DNSIncludeExclude zones = 4; } // SeedList is a collection of Seeds. @@ -2136,15 +2127,26 @@ message SeedSelector { // SeedSettingDependencyWatchdog controls the dependency-watchdog settings for the seed. message SeedSettingDependencyWatchdog { // Endpoint controls the endpoint settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Weeder` instead. // +optional optional SeedSettingDependencyWatchdogEndpoint endpoint = 1; // Probe controls the probe settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Prober` instead. // +optional optional SeedSettingDependencyWatchdogProbe probe = 2; + + // Weeder controls the weeder settings for the dependency-watchdog for the seed. + // +optional + optional SeedSettingDependencyWatchdogWeeder weeder = 3; + + // Prober controls the prober settings for the dependency-watchdog for the seed. + // +optional + optional SeedSettingDependencyWatchdogProber prober = 4; } // SeedSettingDependencyWatchdogEndpoint controls the endpoint settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogWeeder` instead. message SeedSettingDependencyWatchdogEndpoint { // Enabled controls whether the endpoint controller of the dependency-watchdog should be enabled. This controller // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in @@ -2153,13 +2155,30 @@ message SeedSettingDependencyWatchdogEndpoint { } // SeedSettingDependencyWatchdogProbe controls the probe settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogProber` instead. message SeedSettingDependencyWatchdogProbe { // Enabled controls whether the probe controller of the dependency-watchdog should be enabled. This controller - // scales down the kube-controller-manager of shoot clusters in case their respective kube-apiserver is not + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not + // reachable via its external ingress in order to avoid melt-down situations. + optional bool enabled = 1; +} + +// SeedSettingDependencyWatchdogProber controls the prober settings for the dependency-watchdog for the seed. +message SeedSettingDependencyWatchdogProber { + // Enabled controls whether the probe controller(prober) of the dependency-watchdog should be enabled. This controller + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not // reachable via its external ingress in order to avoid melt-down situations. optional bool enabled = 1; } +// SeedSettingDependencyWatchdogWeeder controls the weeder settings for the dependency-watchdog for the seed. +message SeedSettingDependencyWatchdogWeeder { + // Enabled controls whether the endpoint controller(weeder) of the dependency-watchdog should be enabled. This controller + // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in + // CrashLoopBackoff status and restarting them once their dependants become ready and available again. + optional bool enabled = 1; +} + // SeedSettingExcessCapacityReservation controls the excess capacity reservation for shoot control planes in the seed. message SeedSettingExcessCapacityReservation { // Enabled controls whether the excess capacity reservation should be enabled. @@ -2203,6 +2222,10 @@ message SeedSettingLoadBalancerServicesZones { } // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. +// +// Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). +// The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. +// Set this field to false to be prepared for the above-mentioned locking. message SeedSettingOwnerChecks { // Enabled controls whether owner checks are enabled for shoots scheduled on this seed. It // is enabled by default because it is a prerequisite for control plane migration. @@ -2252,6 +2275,10 @@ message SeedSettings { optional SeedSettingVerticalPodAutoscaler verticalPodAutoscaler = 5; // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. + // + // Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). + // The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. + // Set this field to false to be prepared for the above-mentioned locking. // +optional optional SeedSettingOwnerChecks ownerChecks = 6; @@ -2581,6 +2608,7 @@ message ShootSpec { optional Kubernetes kubernetes = 6; // Networking contains information about cluster networking such as CNI Plugin type, CIDRs, ...etc. + // +optional optional Networking networking = 7; // Maintenance contains information about the time window for maintenance operations and which @@ -2605,6 +2633,7 @@ message ShootSpec { // SecretBindingName is the name of the a SecretBinding that has a reference to the provider secret. // The credentials inside the provider secret will be used to create the shoot in the respective account. // This field is immutable. + // +optional optional string secretBindingName = 13; // SeedName is the name of the seed cluster that runs the control plane of the Shoot. @@ -2945,6 +2974,10 @@ message Worker { // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. // +optional optional MachineControllerManagerSettings machineControllerManager = 19; + + // Sysctls is a map of kernel settings to apply on all VMs in this worker pool. + // +optional + map sysctls = 20; } // WorkerKubernetes contains configuration for Kubernetes components related to this worker pool. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/register.go index 9f2a6ee6..d784a245 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types.go index ca51ee16..ac9a1a21 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupbucket.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupbucket.go index 50414274..80773021 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupbucket.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupbucket.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupentry.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupentry.go index 425f97c6..cadd034f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupentry.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_backupentry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_cloudprofile.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_cloudprofile.go index 272ba6f0..3bea89d9 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_cloudprofile.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_cloudprofile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_common.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_common.go index e216dd47..22f12d83 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_common.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_common.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerdeployment.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerdeployment.go index 6a2890d2..3b15bc83 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerdeployment.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerdeployment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerinstallation.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerinstallation.go index 7c2478f7..76993154 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerinstallation.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerinstallation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerregistration.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerregistration.go index d8939308..96ea88c8 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerregistration.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_controllerregistration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_exposureclass.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_exposureclass.go index 6b53ac84..cfad5521 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_exposureclass.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_exposureclass.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_project.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_project.go index df2526ab..aef29af8 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_project.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_quota.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_quota.go index 55a1fbec..38e2ce03 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_quota.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_quota.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_secretbinding.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_secretbinding.go index 4be72838..790b40b2 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_secretbinding.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_secretbinding.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go index 745c60f3..122244f1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_seed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -127,11 +127,9 @@ type SeedBackup struct { // SeedDNS contains DNS-relevant information about this seed cluster. type SeedDNS struct { - // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used - // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use spec.ingress.domain instead. - // +optional - IngressDomain *string `json:"ingressDomain,omitempty" protobuf:"bytes,1,opt,name=ingressDomain"` + // IngressDomain is tombstoned to show why 1 is reserved protobuf tag. + // IngressDomain *string `json:"ingressDomain,omitempty" protobuf:"bytes,1,opt,name=ingressDomain"` + // Provider configures a DNSProvider // +optional Provider *SeedDNSProvider `json:"provider,omitempty" protobuf:"bytes,2,opt,name=provider"` @@ -143,14 +141,12 @@ type SeedDNSProvider struct { Type string `json:"type" protobuf:"bytes,1,opt,name=type"` // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. SecretRef corev1.SecretReference `json:"secretRef" protobuf:"bytes,2,opt,name=secretRef"` - // Domains contains information about which domains shall be included/excluded for this provider. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. - // +optional - Domains *DNSIncludeExclude `json:"domains,omitempty" protobuf:"bytes,3,opt,name=domains"` - // Zones contains information about which hosted zones shall be included/excluded for this provider. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. - // +optional - Zones *DNSIncludeExclude `json:"zones,omitempty" protobuf:"bytes,4,opt,name=zones"` + + // Domains is tombstoned to show why 3 is reserved protobuf tag. + // Domains *DNSIncludeExclude `json:"domains,omitempty" protobuf:"bytes,3,opt,name=domains"` + + // Zones is tombstoned to show why 4 is reserved protobuf tag. + // Zones *DNSIncludeExclude `json:"zones,omitempty" protobuf:"bytes,4,opt,name=zones"` } // Ingress configures the Ingress specific settings of the Seed cluster. @@ -233,6 +229,10 @@ type SeedSettings struct { // +optional VerticalPodAutoscaler *SeedSettingVerticalPodAutoscaler `json:"verticalPodAutoscaler,omitempty" protobuf:"bytes,5,opt,name=verticalPodAutoscaler"` // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. + // + // Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). + // The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. + // Set this field to false to be prepared for the above-mentioned locking. // +optional OwnerChecks *SeedSettingOwnerChecks `json:"ownerChecks,omitempty" protobuf:"bytes,6,opt,name=ownerChecks"` // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. @@ -299,6 +299,10 @@ type SeedSettingVerticalPodAutoscaler struct { } // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. +// +// Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). +// The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. +// Set this field to false to be prepared for the above-mentioned locking. type SeedSettingOwnerChecks struct { // Enabled controls whether owner checks are enabled for shoots scheduled on this seed. It // is enabled by default because it is a prerequisite for control plane migration. @@ -308,14 +312,23 @@ type SeedSettingOwnerChecks struct { // SeedSettingDependencyWatchdog controls the dependency-watchdog settings for the seed. type SeedSettingDependencyWatchdog struct { // Endpoint controls the endpoint settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Weeder` instead. // +optional Endpoint *SeedSettingDependencyWatchdogEndpoint `json:"endpoint,omitempty" protobuf:"bytes,1,opt,name=endpoint"` // Probe controls the probe settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Prober` instead. // +optional Probe *SeedSettingDependencyWatchdogProbe `json:"probe,omitempty" protobuf:"bytes,2,opt,name=probe"` + // Weeder controls the weeder settings for the dependency-watchdog for the seed. + // +optional + Weeder *SeedSettingDependencyWatchdogWeeder `json:"weeder,omitempty" protobuf:"bytes,3,opt,name=weeder"` + // Prober controls the prober settings for the dependency-watchdog for the seed. + // +optional + Prober *SeedSettingDependencyWatchdogProber `json:"prober,omitempty" protobuf:"bytes,4,opt,name=prober"` } // SeedSettingDependencyWatchdogEndpoint controls the endpoint settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogWeeder` instead. type SeedSettingDependencyWatchdogEndpoint struct { // Enabled controls whether the endpoint controller of the dependency-watchdog should be enabled. This controller // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in @@ -324,9 +337,26 @@ type SeedSettingDependencyWatchdogEndpoint struct { } // SeedSettingDependencyWatchdogProbe controls the probe settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogProber` instead. type SeedSettingDependencyWatchdogProbe struct { // Enabled controls whether the probe controller of the dependency-watchdog should be enabled. This controller - // scales down the kube-controller-manager of shoot clusters in case their respective kube-apiserver is not + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not + // reachable via its external ingress in order to avoid melt-down situations. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + +// SeedSettingDependencyWatchdogWeeder controls the weeder settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogWeeder struct { + // Enabled controls whether the endpoint controller(weeder) of the dependency-watchdog should be enabled. This controller + // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in + // CrashLoopBackoff status and restarting them once their dependants become ready and available again. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + +// SeedSettingDependencyWatchdogProber controls the prober settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogProber struct { + // Enabled controls whether the probe controller(prober) of the dependency-watchdog should be enabled. This controller + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not // reachable via its external ingress in order to avoid melt-down situations. Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go index e3fbe943..816209b1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -75,7 +75,8 @@ type ShootSpec struct { // Kubernetes contains the version and configuration settings of the control plane components. Kubernetes Kubernetes `json:"kubernetes" protobuf:"bytes,6,opt,name=kubernetes"` // Networking contains information about cluster networking such as CNI Plugin type, CIDRs, ...etc. - Networking Networking `json:"networking" protobuf:"bytes,7,opt,name=networking"` + // +optional + Networking *Networking `json:"networking,omitempty" protobuf:"bytes,7,opt,name=networking"` // Maintenance contains information about the time window for maintenance operations and which // operations should be performed. // +optional @@ -93,7 +94,8 @@ type ShootSpec struct { // SecretBindingName is the name of the a SecretBinding that has a reference to the provider secret. // The credentials inside the provider secret will be used to create the shoot in the respective account. // This field is immutable. - SecretBindingName string `json:"secretBindingName" protobuf:"bytes,13,opt,name=secretBindingName"` + // +optional + SecretBindingName *string `json:"secretBindingName,omitempty" protobuf:"bytes,13,opt,name=secretBindingName"` // SeedName is the name of the seed cluster that runs the control plane of the Shoot. // This field is immutable when the SeedChange feature gate is disabled. // +optional @@ -488,7 +490,7 @@ type HibernationSchedule struct { // End is a Cron spec at which time a Shoot will be woken up. // +optional End *string `json:"end,omitempty" protobuf:"bytes,2,opt,name=end"` - // Location is the time location in which both start and and shall be evaluated. + // Location is the time location in which both start and shall be evaluated. // +optional Location *string `json:"location,omitempty" protobuf:"bytes,3,opt,name=location"` } @@ -838,6 +840,9 @@ type AdmissionPlugin struct { // Disabled specifies whether this plugin should be disabled. // +optional Disabled *bool `json:"disabled,omitempty" protobuf:"varint,3,opt,name=disabled"` + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this admission plugin. + // +optional + KubeconfigSecretName *string `json:"kubeconfigSecretName,omitempty" protobuf:"bytes,4,opt,name=kubeconfigSecretName"` } // WatchCacheSizes contains configuration of the API server's watch cache sizes. @@ -1176,7 +1181,8 @@ type KubeletConfigReserved struct { // Networking defines networking parameters for the shoot cluster. type Networking struct { // Type identifies the type of the networking plugin. This field is immutable. - Type string `json:"type" protobuf:"bytes,1,opt,name=type"` + // +optional + Type *string `json:"type,omitempty" protobuf:"bytes,1,opt,name=type"` // ProviderConfig is the configuration passed to network resource. // +optional ProviderConfig *runtime.RawExtension `json:"providerConfig,omitempty" protobuf:"bytes,2,opt,name=providerConfig"` @@ -1232,7 +1238,8 @@ type MaintenanceAutoUpdate struct { // KubernetesVersion indicates whether the patch Kubernetes version may be automatically updated (default: true). KubernetesVersion bool `json:"kubernetesVersion" protobuf:"varint,1,opt,name=kubernetesVersion"` // MachineImageVersion indicates whether the machine image version may be automatically updated (default: true). - MachineImageVersion bool `json:"machineImageVersion" protobuf:"varint,2,opt,name=machineImageVersion"` + // +optional + MachineImageVersion *bool `json:"machineImageVersion,omitempty" protobuf:"varint,2,opt,name=machineImageVersion"` } // MaintenanceTimeWindow contains information about the time window for maintenance operations. @@ -1275,7 +1282,8 @@ type Provider struct { // Workers is a list of worker groups. // +patchMergeKey=name // +patchStrategy=merge - Workers []Worker `json:"workers" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,4,rep,name=workers"` + // +optional + Workers []Worker `json:"workers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,4,rep,name=workers"` // WorkersSettings contains settings for all workers. // +optional WorkersSettings *WorkersSettings `json:"workersSettings,omitempty" protobuf:"bytes,5,opt,name=workersSettings"` @@ -1338,6 +1346,9 @@ type Worker struct { // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. // +optional MachineControllerManagerSettings *MachineControllerManagerSettings `json:"machineControllerManager,omitempty" protobuf:"bytes,19,opt,name=machineControllerManager"` + // Sysctls is a map of kernel settings to apply on all VMs in this worker pool. + // +optional + Sysctls map[string]string `json:"sysctls,omitempty" protobuf:"bytes,20,rep,name=sysctls"` } // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shootstate.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shootstate.go index 7ec61066..9855f788 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shootstate.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_shootstate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_utils.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_utils.go index 924cd4aa..8ee4eda0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_utils.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/types_utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go index 5897d90a..bc76c7e7 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -1193,6 +1193,26 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*SeedSettingDependencyWatchdogProber)(nil), (*core.SeedSettingDependencyWatchdogProber)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(a.(*SeedSettingDependencyWatchdogProber), b.(*core.SeedSettingDependencyWatchdogProber), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingDependencyWatchdogProber)(nil), (*SeedSettingDependencyWatchdogProber)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingDependencyWatchdogProber_To_v1alpha1_SeedSettingDependencyWatchdogProber(a.(*core.SeedSettingDependencyWatchdogProber), b.(*SeedSettingDependencyWatchdogProber), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*SeedSettingDependencyWatchdogWeeder)(nil), (*core.SeedSettingDependencyWatchdogWeeder)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(a.(*SeedSettingDependencyWatchdogWeeder), b.(*core.SeedSettingDependencyWatchdogWeeder), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingDependencyWatchdogWeeder)(nil), (*SeedSettingDependencyWatchdogWeeder)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1alpha1_SeedSettingDependencyWatchdogWeeder(a.(*core.SeedSettingDependencyWatchdogWeeder), b.(*SeedSettingDependencyWatchdogWeeder), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*SeedSettingExcessCapacityReservation)(nil), (*core.SeedSettingExcessCapacityReservation)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_SeedSettingExcessCapacityReservation_To_core_SeedSettingExcessCapacityReservation(a.(*SeedSettingExcessCapacityReservation), b.(*core.SeedSettingExcessCapacityReservation), scope) }); err != nil { @@ -1722,6 +1742,7 @@ func autoConvert_v1alpha1_AdmissionPlugin_To_core_AdmissionPlugin(in *AdmissionP out.Name = in.Name out.Config = (*runtime.RawExtension)(unsafe.Pointer(in.Config)) out.Disabled = (*bool)(unsafe.Pointer(in.Disabled)) + out.KubeconfigSecretName = (*string)(unsafe.Pointer(in.KubeconfigSecretName)) return nil } @@ -1734,6 +1755,7 @@ func autoConvert_core_AdmissionPlugin_To_v1alpha1_AdmissionPlugin(in *core.Admis out.Name = in.Name out.Disabled = (*bool)(unsafe.Pointer(in.Disabled)) out.Config = (*runtime.RawExtension)(unsafe.Pointer(in.Config)) + out.KubeconfigSecretName = (*string)(unsafe.Pointer(in.KubeconfigSecretName)) return nil } @@ -4006,7 +4028,7 @@ func Convert_core_Maintenance_To_v1alpha1_Maintenance(in *core.Maintenance, out func autoConvert_v1alpha1_MaintenanceAutoUpdate_To_core_MaintenanceAutoUpdate(in *MaintenanceAutoUpdate, out *core.MaintenanceAutoUpdate, s conversion.Scope) error { out.KubernetesVersion = in.KubernetesVersion - out.MachineImageVersion = in.MachineImageVersion + out.MachineImageVersion = (*bool)(unsafe.Pointer(in.MachineImageVersion)) return nil } @@ -4017,7 +4039,7 @@ func Convert_v1alpha1_MaintenanceAutoUpdate_To_core_MaintenanceAutoUpdate(in *Ma func autoConvert_core_MaintenanceAutoUpdate_To_v1alpha1_MaintenanceAutoUpdate(in *core.MaintenanceAutoUpdate, out *MaintenanceAutoUpdate, s conversion.Scope) error { out.KubernetesVersion = in.KubernetesVersion - out.MachineImageVersion = in.MachineImageVersion + out.MachineImageVersion = (*bool)(unsafe.Pointer(in.MachineImageVersion)) return nil } @@ -4091,7 +4113,7 @@ func Convert_core_NamedResourceReference_To_v1alpha1_NamedResourceReference(in * } func autoConvert_v1alpha1_Networking_To_core_Networking(in *Networking, out *core.Networking, s conversion.Scope) error { - out.Type = in.Type + out.Type = (*string)(unsafe.Pointer(in.Type)) out.ProviderConfig = (*runtime.RawExtension)(unsafe.Pointer(in.ProviderConfig)) out.Pods = (*string)(unsafe.Pointer(in.Pods)) out.Nodes = (*string)(unsafe.Pointer(in.Nodes)) @@ -4106,7 +4128,7 @@ func Convert_v1alpha1_Networking_To_core_Networking(in *Networking, out *core.Ne } func autoConvert_core_Networking_To_v1alpha1_Networking(in *core.Networking, out *Networking, s conversion.Scope) error { - out.Type = in.Type + out.Type = (*string)(unsafe.Pointer(in.Type)) out.ProviderConfig = (*runtime.RawExtension)(unsafe.Pointer(in.ProviderConfig)) out.Pods = (*string)(unsafe.Pointer(in.Pods)) out.Nodes = (*string)(unsafe.Pointer(in.Nodes)) @@ -4742,7 +4764,6 @@ func Convert_core_SeedBackup_To_v1alpha1_SeedBackup(in *core.SeedBackup, out *Se } func autoConvert_v1alpha1_SeedDNS_To_core_SeedDNS(in *SeedDNS, out *core.SeedDNS, s conversion.Scope) error { - out.IngressDomain = (*string)(unsafe.Pointer(in.IngressDomain)) out.Provider = (*core.SeedDNSProvider)(unsafe.Pointer(in.Provider)) return nil } @@ -4753,7 +4774,6 @@ func Convert_v1alpha1_SeedDNS_To_core_SeedDNS(in *SeedDNS, out *core.SeedDNS, s } func autoConvert_core_SeedDNS_To_v1alpha1_SeedDNS(in *core.SeedDNS, out *SeedDNS, s conversion.Scope) error { - out.IngressDomain = (*string)(unsafe.Pointer(in.IngressDomain)) out.Provider = (*SeedDNSProvider)(unsafe.Pointer(in.Provider)) return nil } @@ -4766,8 +4786,6 @@ func Convert_core_SeedDNS_To_v1alpha1_SeedDNS(in *core.SeedDNS, out *SeedDNS, s func autoConvert_v1alpha1_SeedDNSProvider_To_core_SeedDNSProvider(in *SeedDNSProvider, out *core.SeedDNSProvider, s conversion.Scope) error { out.Type = in.Type out.SecretRef = in.SecretRef - out.Domains = (*core.DNSIncludeExclude)(unsafe.Pointer(in.Domains)) - out.Zones = (*core.DNSIncludeExclude)(unsafe.Pointer(in.Zones)) return nil } @@ -4779,8 +4797,6 @@ func Convert_v1alpha1_SeedDNSProvider_To_core_SeedDNSProvider(in *SeedDNSProvide func autoConvert_core_SeedDNSProvider_To_v1alpha1_SeedDNSProvider(in *core.SeedDNSProvider, out *SeedDNSProvider, s conversion.Scope) error { out.Type = in.Type out.SecretRef = in.SecretRef - out.Domains = (*DNSIncludeExclude)(unsafe.Pointer(in.Domains)) - out.Zones = (*DNSIncludeExclude)(unsafe.Pointer(in.Zones)) return nil } @@ -4901,6 +4917,8 @@ func Convert_core_SeedSelector_To_v1alpha1_SeedSelector(in *core.SeedSelector, o func autoConvert_v1alpha1_SeedSettingDependencyWatchdog_To_core_SeedSettingDependencyWatchdog(in *SeedSettingDependencyWatchdog, out *core.SeedSettingDependencyWatchdog, s conversion.Scope) error { out.Endpoint = (*core.SeedSettingDependencyWatchdogEndpoint)(unsafe.Pointer(in.Endpoint)) out.Probe = (*core.SeedSettingDependencyWatchdogProbe)(unsafe.Pointer(in.Probe)) + out.Weeder = (*core.SeedSettingDependencyWatchdogWeeder)(unsafe.Pointer(in.Weeder)) + out.Prober = (*core.SeedSettingDependencyWatchdogProber)(unsafe.Pointer(in.Prober)) return nil } @@ -4912,6 +4930,8 @@ func Convert_v1alpha1_SeedSettingDependencyWatchdog_To_core_SeedSettingDependenc func autoConvert_core_SeedSettingDependencyWatchdog_To_v1alpha1_SeedSettingDependencyWatchdog(in *core.SeedSettingDependencyWatchdog, out *SeedSettingDependencyWatchdog, s conversion.Scope) error { out.Endpoint = (*SeedSettingDependencyWatchdogEndpoint)(unsafe.Pointer(in.Endpoint)) out.Probe = (*SeedSettingDependencyWatchdogProbe)(unsafe.Pointer(in.Probe)) + out.Weeder = (*SeedSettingDependencyWatchdogWeeder)(unsafe.Pointer(in.Weeder)) + out.Prober = (*SeedSettingDependencyWatchdogProber)(unsafe.Pointer(in.Prober)) return nil } @@ -4960,6 +4980,46 @@ func Convert_core_SeedSettingDependencyWatchdogProbe_To_v1alpha1_SeedSettingDepe return autoConvert_core_SeedSettingDependencyWatchdogProbe_To_v1alpha1_SeedSettingDependencyWatchdogProbe(in, out, s) } +func autoConvert_v1alpha1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in *SeedSettingDependencyWatchdogProber, out *core.SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1alpha1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber is an autogenerated conversion function. +func Convert_v1alpha1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in *SeedSettingDependencyWatchdogProber, out *core.SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + return autoConvert_v1alpha1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in, out, s) +} + +func autoConvert_core_SeedSettingDependencyWatchdogProber_To_v1alpha1_SeedSettingDependencyWatchdogProber(in *core.SeedSettingDependencyWatchdogProber, out *SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingDependencyWatchdogProber_To_v1alpha1_SeedSettingDependencyWatchdogProber is an autogenerated conversion function. +func Convert_core_SeedSettingDependencyWatchdogProber_To_v1alpha1_SeedSettingDependencyWatchdogProber(in *core.SeedSettingDependencyWatchdogProber, out *SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + return autoConvert_core_SeedSettingDependencyWatchdogProber_To_v1alpha1_SeedSettingDependencyWatchdogProber(in, out, s) +} + +func autoConvert_v1alpha1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in *SeedSettingDependencyWatchdogWeeder, out *core.SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1alpha1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder is an autogenerated conversion function. +func Convert_v1alpha1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in *SeedSettingDependencyWatchdogWeeder, out *core.SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + return autoConvert_v1alpha1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in, out, s) +} + +func autoConvert_core_SeedSettingDependencyWatchdogWeeder_To_v1alpha1_SeedSettingDependencyWatchdogWeeder(in *core.SeedSettingDependencyWatchdogWeeder, out *SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1alpha1_SeedSettingDependencyWatchdogWeeder is an autogenerated conversion function. +func Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1alpha1_SeedSettingDependencyWatchdogWeeder(in *core.SeedSettingDependencyWatchdogWeeder, out *SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + return autoConvert_core_SeedSettingDependencyWatchdogWeeder_To_v1alpha1_SeedSettingDependencyWatchdogWeeder(in, out, s) +} + func autoConvert_v1alpha1_SeedSettingExcessCapacityReservation_To_core_SeedSettingExcessCapacityReservation(in *SeedSettingExcessCapacityReservation, out *core.SeedSettingExcessCapacityReservation, s conversion.Scope) error { out.Enabled = in.Enabled return nil @@ -5597,9 +5657,7 @@ func autoConvert_v1alpha1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.S if err := Convert_v1alpha1_Kubernetes_To_core_Kubernetes(&in.Kubernetes, &out.Kubernetes, s); err != nil { return err } - if err := Convert_v1alpha1_Networking_To_core_Networking(&in.Networking, &out.Networking, s); err != nil { - return err - } + out.Networking = (*core.Networking)(unsafe.Pointer(in.Networking)) out.Maintenance = (*core.Maintenance)(unsafe.Pointer(in.Maintenance)) out.Monitoring = (*core.Monitoring)(unsafe.Pointer(in.Monitoring)) if err := Convert_v1alpha1_Provider_To_core_Provider(&in.Provider, &out.Provider, s); err != nil { @@ -5607,7 +5665,7 @@ func autoConvert_v1alpha1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.S } out.Purpose = (*core.ShootPurpose)(unsafe.Pointer(in.Purpose)) out.Region = in.Region - out.SecretBindingName = in.SecretBindingName + out.SecretBindingName = (*string)(unsafe.Pointer(in.SecretBindingName)) out.SeedName = (*string)(unsafe.Pointer(in.SeedName)) out.SeedSelector = (*core.SeedSelector)(unsafe.Pointer(in.SeedSelector)) out.Resources = *(*[]core.NamedResourceReference)(unsafe.Pointer(&in.Resources)) @@ -5632,9 +5690,7 @@ func autoConvert_core_ShootSpec_To_v1alpha1_ShootSpec(in *core.ShootSpec, out *S if err := Convert_core_Kubernetes_To_v1alpha1_Kubernetes(&in.Kubernetes, &out.Kubernetes, s); err != nil { return err } - if err := Convert_core_Networking_To_v1alpha1_Networking(&in.Networking, &out.Networking, s); err != nil { - return err - } + out.Networking = (*Networking)(unsafe.Pointer(in.Networking)) out.Maintenance = (*Maintenance)(unsafe.Pointer(in.Maintenance)) out.Monitoring = (*Monitoring)(unsafe.Pointer(in.Monitoring)) if err := Convert_core_Provider_To_v1alpha1_Provider(&in.Provider, &out.Provider, s); err != nil { @@ -5642,7 +5698,7 @@ func autoConvert_core_ShootSpec_To_v1alpha1_ShootSpec(in *core.ShootSpec, out *S } out.Purpose = (*ShootPurpose)(unsafe.Pointer(in.Purpose)) out.Region = in.Region - out.SecretBindingName = in.SecretBindingName + out.SecretBindingName = (*string)(unsafe.Pointer(in.SecretBindingName)) out.SeedName = (*string)(unsafe.Pointer(in.SeedName)) out.SeedSelector = (*SeedSelector)(unsafe.Pointer(in.SeedSelector)) out.Resources = *(*[]NamedResourceReference)(unsafe.Pointer(&in.Resources)) @@ -5959,6 +6015,7 @@ func autoConvert_v1alpha1_Worker_To_core_Worker(in *Worker, out *core.Worker, s out.Zones = *(*[]string)(unsafe.Pointer(&in.Zones)) out.SystemComponents = (*core.WorkerSystemComponents)(unsafe.Pointer(in.SystemComponents)) out.MachineControllerManagerSettings = (*core.MachineControllerManagerSettings)(unsafe.Pointer(in.MachineControllerManagerSettings)) + out.Sysctls = *(*map[string]string)(unsafe.Pointer(&in.Sysctls)) return nil } @@ -5997,6 +6054,7 @@ func autoConvert_core_Worker_To_v1alpha1_Worker(in *core.Worker, out *Worker, s out.KubeletDataVolumeName = (*string)(unsafe.Pointer(in.KubeletDataVolumeName)) out.Zones = *(*[]string)(unsafe.Pointer(&in.Zones)) out.MachineControllerManagerSettings = (*MachineControllerManagerSettings)(unsafe.Pointer(in.MachineControllerManagerSettings)) + out.Sysctls = *(*map[string]string)(unsafe.Pointer(&in.Sysctls)) return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go index 1b94eee9..fb503b8b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -85,6 +85,11 @@ func (in *AdmissionPlugin) DeepCopyInto(out *AdmissionPlugin) { *out = new(bool) **out = **in } + if in.KubeconfigSecretName != nil { + in, out := &in.KubeconfigSecretName, &out.KubeconfigSecretName + *out = new(string) + **out = **in + } return } @@ -2649,7 +2654,7 @@ func (in *Maintenance) DeepCopyInto(out *Maintenance) { if in.AutoUpdate != nil { in, out := &in.AutoUpdate, &out.AutoUpdate *out = new(MaintenanceAutoUpdate) - **out = **in + (*in).DeepCopyInto(*out) } if in.TimeWindow != nil { in, out := &in.TimeWindow, &out.TimeWindow @@ -2677,6 +2682,11 @@ func (in *Maintenance) DeepCopy() *Maintenance { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MaintenanceAutoUpdate) DeepCopyInto(out *MaintenanceAutoUpdate) { *out = *in + if in.MachineImageVersion != nil { + in, out := &in.MachineImageVersion, &out.MachineImageVersion + *out = new(bool) + **out = **in + } return } @@ -2747,6 +2757,11 @@ func (in *NamedResourceReference) DeepCopy() *NamedResourceReference { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Networking) DeepCopyInto(out *Networking) { *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } if in.ProviderConfig != nil { in, out := &in.ProviderConfig, &out.ProviderConfig *out = new(runtime.RawExtension) @@ -3496,15 +3511,10 @@ func (in *SeedBackup) DeepCopy() *SeedBackup { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedDNS) DeepCopyInto(out *SeedDNS) { *out = *in - if in.IngressDomain != nil { - in, out := &in.IngressDomain, &out.IngressDomain - *out = new(string) - **out = **in - } if in.Provider != nil { in, out := &in.Provider, &out.Provider *out = new(SeedDNSProvider) - (*in).DeepCopyInto(*out) + **out = **in } return } @@ -3523,16 +3533,6 @@ func (in *SeedDNS) DeepCopy() *SeedDNS { func (in *SeedDNSProvider) DeepCopyInto(out *SeedDNSProvider) { *out = *in out.SecretRef = in.SecretRef - if in.Domains != nil { - in, out := &in.Domains, &out.Domains - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } - if in.Zones != nil { - in, out := &in.Zones, &out.Zones - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } return } @@ -3671,6 +3671,16 @@ func (in *SeedSettingDependencyWatchdog) DeepCopyInto(out *SeedSettingDependency *out = new(SeedSettingDependencyWatchdogProbe) **out = **in } + if in.Weeder != nil { + in, out := &in.Weeder, &out.Weeder + *out = new(SeedSettingDependencyWatchdogWeeder) + **out = **in + } + if in.Prober != nil { + in, out := &in.Prober, &out.Prober + *out = new(SeedSettingDependencyWatchdogProber) + **out = **in + } return } @@ -3716,6 +3726,38 @@ func (in *SeedSettingDependencyWatchdogProbe) DeepCopy() *SeedSettingDependencyW return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogProber) DeepCopyInto(out *SeedSettingDependencyWatchdogProber) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogProber. +func (in *SeedSettingDependencyWatchdogProber) DeepCopy() *SeedSettingDependencyWatchdogProber { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogProber) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopyInto(out *SeedSettingDependencyWatchdogWeeder) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogWeeder. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopy() *SeedSettingDependencyWatchdogWeeder { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogWeeder) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingExcessCapacityReservation) DeepCopyInto(out *SeedSettingExcessCapacityReservation) { *out = *in @@ -4433,7 +4475,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { (*in).DeepCopyInto(*out) } in.Kubernetes.DeepCopyInto(&out.Kubernetes) - in.Networking.DeepCopyInto(&out.Networking) + if in.Networking != nil { + in, out := &in.Networking, &out.Networking + *out = new(Networking) + (*in).DeepCopyInto(*out) + } if in.Maintenance != nil { in, out := &in.Maintenance, &out.Maintenance *out = new(Maintenance) @@ -4450,6 +4496,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = new(ShootPurpose) **out = **in } + if in.SecretBindingName != nil { + in, out := &in.SecretBindingName, &out.SecretBindingName + *out = new(string) + **out = **in + } if in.SeedName != nil { in, out := &in.SeedName, &out.SeedName *out = new(string) @@ -4952,6 +5003,13 @@ func (in *Worker) DeepCopyInto(out *Worker) { *out = new(MachineControllerManagerSettings) (*in).DeepCopyInto(*out) } + if in.Sysctls != nil { + in, out := &in.Sysctls, &out.Sysctls + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.defaults.go index bcfdd787..68704a85 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -145,7 +145,9 @@ func SetObjectDefaults_Shoot(in *Shoot) { if in.Spec.Kubernetes.VerticalPodAutoscaler != nil { SetDefaults_VerticalPodAutoscaler(in.Spec.Kubernetes.VerticalPodAutoscaler) } - SetDefaults_Networking(&in.Spec.Networking) + if in.Spec.Networking != nil { + SetDefaults_Networking(in.Spec.Networking) + } if in.Spec.Maintenance != nil { SetDefaults_Maintenance(in.Spec.Maintenance) } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go index 83a30fd9..5be9496d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/types_constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -104,6 +104,12 @@ const ( // DeploymentNameKubeControllerManager is a constant for the name of a Kubernetes deployment object that contains // the kube-controller-manager pod. DeploymentNameKubeControllerManager = "kube-controller-manager" + // DeploymentNameDependencyWatchdogProber is a constant for the name of a Kubernetes deployment object that contains + // the dependency-watchdog-prober pod. + DeploymentNameDependencyWatchdogProber = "dependency-watchdog-prober" + // DeploymentNameDependencyWatchdogWeeder is a constant for the name of a Kubernetes deployment object that contains + // the dependency-watchdog-weeder pod. + DeploymentNameDependencyWatchdogWeeder = "dependency-watchdog-weeder" // DeploymentNameGardenlet is a constant for the name of a Kubernetes deployment object that contains // the Gardenlet pod. DeploymentNameGardenlet = "gardenlet" @@ -118,12 +124,6 @@ const ( // DeploymentNameGardenerResourceManager is a constant for the name of a Kubernetes deployment object that contains // the gardener-resource-manager pod. DeploymentNameGardenerResourceManager = "gardener-resource-manager" - // DeploymentNameGrafanaOperators is a constant for the name of a Kubernetes deployment object that contains - // the grafana-operators pod. - DeploymentNameGrafanaOperators = "grafana-operators" - // DeploymentNameGrafanaUsers is a constant for the name of a Kubernetes deployment object that contains - // the grafana-users pod. - DeploymentNameGrafanaUsers = "grafana-users" // DeploymentNameGrafana is a constant for the name of a Kubernetes deployment object that contains the grafana pod. DeploymentNameGrafana = "grafana" // DeploymentNameEventLogger is a constant for the name of a Kubernetes deployment object that contains @@ -441,9 +441,6 @@ const ( LabelNetworkPolicyToShootAPIServer = "networking.gardener.cloud/to-shoot-apiserver" // LabelNetworkPolicyToShootNetworks allows Egress from pods labeled with 'networking.gardener.cloud/to-shoot-networks=allowed' to IPv4 blocks belonging to the Shoot network. LabelNetworkPolicyToShootNetworks = "networking.gardener.cloud/to-shoot-networks" - // LabelNetworkPolicyToAllShootAPIServers allows Egress from pods labeled with 'networking.gardener.cloud/to-all-shoot-apiservers=allowed' to talk to all - // Shoots' Kubernetes API Servers. - LabelNetworkPolicyToAllShootAPIServers = "networking.gardener.cloud/to-all-shoot-apiservers" // LabelNetworkPolicyFromShootAPIServer allows Egress from Shoot's Kubernetes API Server to talk to pods labeled with // 'networking.gardener.cloud/from-shoot-apiserver=allowed'. // Deprecated. Label `kube-apiserver` pods with `networking.resources.gardener.cloud/to--tcp-=allowed` instead. @@ -455,10 +452,6 @@ const ( // `networking.resources.gardener.cloud/from-policy-pod-label-selector=all-scrape-targets` and // `networking.resources.gardener.cloud/from-policy-allowed-ports=[{"protocol":,"port":}]`. LabelNetworkPolicyFromPrometheus = "networking.gardener.cloud/from-prometheus" - // LabelNetworkPolicyToAggregatePrometheus allows Egress traffic to the aggregate Prometheus. - LabelNetworkPolicyToAggregatePrometheus = "networking.gardener.cloud/to-aggregate-prometheus" - // LabelNetworkPolicyToSeedPrometheus allows Egress traffic to the seed Prometheus. - LabelNetworkPolicyToSeedPrometheus = "networking.gardener.cloud/to-seed-prometheus" // LabelNetworkPolicyShootFromSeed allows Ingress traffic from the seed cluster (where the shoot's kube-apiserver // runs). LabelNetworkPolicyShootFromSeed = "networking.gardener.cloud/from-seed" @@ -807,4 +800,7 @@ const ( TaintNodeCriticalComponentsNotReady = "node.gardener.cloud/critical-components-not-ready" // LabelNodeCriticalComponent is the label key for marking node-critical component pods. LabelNodeCriticalComponent = "node.gardener.cloud/critical-component" + // AnnotationWaitForCSINode is the annotation key for csi-driver-node pods, + // indicating they use the driver specified in the value. + AnnotationPrefixWaitForCSINode = "node.gardener.cloud/wait-for-csi-node-" ) diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/utils.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/utils.go index dadb1ce2..d98aef2a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/utils.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/constants/utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/conversions.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/conversions.go index fa9e8a63..3514c923 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/conversions.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/conversions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go index a69e9f53..a49d684a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -86,80 +86,16 @@ func SetDefaults_SeedNetworks(obj *SeedNetworks) { // SetDefaults_SeedSettingDependencyWatchdog sets defaults for SeedSettingDependencyWatchdog objects. func SetDefaults_SeedSettingDependencyWatchdog(obj *SeedSettingDependencyWatchdog) { - if obj.Endpoint == nil { - obj.Endpoint = &SeedSettingDependencyWatchdogEndpoint{Enabled: true} - } - if obj.Probe == nil { - obj.Probe = &SeedSettingDependencyWatchdogProbe{Enabled: true} - } } // SetDefaults_Shoot sets default values for Shoot objects. func SetDefaults_Shoot(obj *Shoot) { - // Errors are ignored here because we cannot do anything meaningful with them - variables will default to `false`. - k8sLess125, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.25") - if obj.Spec.Kubernetes.AllowPrivilegedContainers == nil && k8sLess125 && !isPSPDisabled(obj) { - obj.Spec.Kubernetes.AllowPrivilegedContainers = pointer.Bool(true) - } if obj.Spec.Kubernetes.KubeAPIServer == nil { obj.Spec.Kubernetes.KubeAPIServer = &KubeAPIServerConfig{} } - if obj.Spec.Kubernetes.KubeAPIServer.Requests == nil { - obj.Spec.Kubernetes.KubeAPIServer.Requests = &KubeAPIServerRequests{} - } - if obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxNonMutatingInflight == nil { - obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxNonMutatingInflight = pointer.Int32(400) - } - if obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxMutatingInflight == nil { - obj.Spec.Kubernetes.KubeAPIServer.Requests.MaxMutatingInflight = pointer.Int32(200) - } - if obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication == nil { - obj.Spec.Kubernetes.KubeAPIServer.EnableAnonymousAuthentication = pointer.Bool(false) - } - if obj.Spec.Kubernetes.KubeAPIServer.EventTTL == nil { - obj.Spec.Kubernetes.KubeAPIServer.EventTTL = &metav1.Duration{Duration: time.Hour} - } - if obj.Spec.Kubernetes.KubeAPIServer.Logging == nil { - obj.Spec.Kubernetes.KubeAPIServer.Logging = &KubeAPIServerLogging{} - } - if obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity == nil { - obj.Spec.Kubernetes.KubeAPIServer.Logging.Verbosity = pointer.Int32(2) - } - if obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds == nil { - obj.Spec.Kubernetes.KubeAPIServer.DefaultNotReadyTolerationSeconds = pointer.Int64(300) - } - if obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds == nil { - obj.Spec.Kubernetes.KubeAPIServer.DefaultUnreachableTolerationSeconds = pointer.Int64(300) - } - if obj.Spec.Kubernetes.KubeControllerManager == nil { obj.Spec.Kubernetes.KubeControllerManager = &KubeControllerManagerConfig{} } - if obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize == nil { - obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize = calculateDefaultNodeCIDRMaskSize(&obj.Spec) - } - if obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod == nil { - obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 2 * time.Minute} - } - - if obj.Spec.Kubernetes.KubeScheduler == nil { - obj.Spec.Kubernetes.KubeScheduler = &KubeSchedulerConfig{} - } - if obj.Spec.Kubernetes.KubeScheduler.Profile == nil { - defaultProfile := SchedulingProfileBalanced - obj.Spec.Kubernetes.KubeScheduler.Profile = &defaultProfile - } - - if obj.Spec.Kubernetes.KubeProxy == nil { - obj.Spec.Kubernetes.KubeProxy = &KubeProxyConfig{} - } - if obj.Spec.Kubernetes.KubeProxy.Mode == nil { - defaultProxyMode := ProxyModeIPTables - obj.Spec.Kubernetes.KubeProxy.Mode = &defaultProxyMode - } - if obj.Spec.Kubernetes.KubeProxy.Enabled == nil { - obj.Spec.Kubernetes.KubeProxy.Enabled = pointer.Bool(true) - } if obj.Spec.Kubernetes.EnableStaticTokenKubeconfig == nil { // Error is ignored here because we cannot do anything meaningful with it - variable will default to "false". @@ -170,17 +106,6 @@ func SetDefaults_Shoot(obj *Shoot) { } } - if obj.Spec.Addons == nil { - obj.Spec.Addons = &Addons{} - } - if obj.Spec.Addons.KubernetesDashboard == nil { - obj.Spec.Addons.KubernetesDashboard = &KubernetesDashboard{} - } - if obj.Spec.Addons.KubernetesDashboard.AuthenticationMode == nil { - defaultAuthMode := KubernetesDashboardAuthModeToken - obj.Spec.Addons.KubernetesDashboard.AuthenticationMode = &defaultAuthMode - } - if obj.Spec.Purpose == nil { p := ShootPurposeEvaluation obj.Spec.Purpose = &p @@ -193,45 +118,17 @@ func SetDefaults_Shoot(obj *Shoot) { addTolerations(&obj.Spec.Tolerations, Toleration{Key: SeedTaintProtected}) } - if obj.Spec.Kubernetes.Kubelet == nil { - obj.Spec.Kubernetes.Kubelet = &KubeletConfig{} - } - if obj.Spec.Kubernetes.Kubelet.FailSwapOn == nil { - obj.Spec.Kubernetes.Kubelet.FailSwapOn = pointer.Bool(true) - } - if obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent == nil { - obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent = pointer.Int32(50) - } - if obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent == nil { - obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent = pointer.Int32(40) - } - if obj.Spec.Kubernetes.Kubelet.SerializeImagePulls == nil { - obj.Spec.Kubernetes.Kubelet.SerializeImagePulls = pointer.Bool(true) + if obj.Spec.Maintenance == nil { + obj.Spec.Maintenance = &Maintenance{} } - - var ( - kubeReservedMemory = resource.MustParse("1Gi") - kubeReservedCPU = resource.MustParse("80m") - kubeReservedPID = resource.MustParse("20k") - ) - - if obj.Spec.Kubernetes.Kubelet.KubeReserved == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved = &KubeletConfigReserved{Memory: &kubeReservedMemory, CPU: &kubeReservedCPU} - obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID - } else { - if obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory = &kubeReservedMemory - } - if obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU = &kubeReservedCPU - } - if obj.Spec.Kubernetes.Kubelet.KubeReserved.PID == nil { - obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + if obj.Spec.Maintenance.AutoUpdate == nil { + obj.Spec.Maintenance.AutoUpdate = &MaintenanceAutoUpdate{ + KubernetesVersion: true, } } - if obj.Spec.Maintenance == nil { - obj.Spec.Maintenance = &Maintenance{} + if obj.Spec.Networking == nil { + obj.Spec.Networking = &Networking{} } for i, worker := range obj.Spec.Provider.Workers { @@ -255,24 +152,142 @@ func SetDefaults_Shoot(obj *Shoot) { } } - if obj.Spec.Provider.WorkersSettings == nil { - obj.Spec.Provider.WorkersSettings = &WorkersSettings{} - } - if obj.Spec.Provider.WorkersSettings.SSHAccess == nil { - obj.Spec.Provider.WorkersSettings.SSHAccess = &SSHAccess{Enabled: true} + // these fields are relevant only for shoot with workers + if len(obj.Spec.Provider.Workers) > 0 { + // Errors are ignored here because we cannot do anything meaningful with them - variables will default to `false`. + k8sLess125, _ := versionutils.CheckVersionMeetsConstraint(obj.Spec.Kubernetes.Version, "< 1.25") + if obj.Spec.Kubernetes.AllowPrivilegedContainers == nil && k8sLess125 && !isPSPDisabled(obj) { + obj.Spec.Kubernetes.AllowPrivilegedContainers = pointer.Bool(true) + } + + if obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize == nil { + obj.Spec.Kubernetes.KubeControllerManager.NodeCIDRMaskSize = calculateDefaultNodeCIDRMaskSize(&obj.Spec) + } + if obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod == nil { + obj.Spec.Kubernetes.KubeControllerManager.NodeMonitorGracePeriod = &metav1.Duration{Duration: 2 * time.Minute} + } + + if obj.Spec.Kubernetes.KubeScheduler == nil { + obj.Spec.Kubernetes.KubeScheduler = &KubeSchedulerConfig{} + } + if obj.Spec.Kubernetes.KubeScheduler.Profile == nil { + defaultProfile := SchedulingProfileBalanced + obj.Spec.Kubernetes.KubeScheduler.Profile = &defaultProfile + } + + if obj.Spec.Kubernetes.KubeProxy == nil { + obj.Spec.Kubernetes.KubeProxy = &KubeProxyConfig{} + } + if obj.Spec.Kubernetes.KubeProxy.Mode == nil { + defaultProxyMode := ProxyModeIPTables + obj.Spec.Kubernetes.KubeProxy.Mode = &defaultProxyMode + } + if obj.Spec.Kubernetes.KubeProxy.Enabled == nil { + obj.Spec.Kubernetes.KubeProxy.Enabled = pointer.Bool(true) + } + + if obj.Spec.Addons == nil { + obj.Spec.Addons = &Addons{} + } + if obj.Spec.Addons.KubernetesDashboard == nil { + obj.Spec.Addons.KubernetesDashboard = &KubernetesDashboard{} + } + if obj.Spec.Addons.KubernetesDashboard.AuthenticationMode == nil { + defaultAuthMode := KubernetesDashboardAuthModeToken + obj.Spec.Addons.KubernetesDashboard.AuthenticationMode = &defaultAuthMode + } + + if obj.Spec.Kubernetes.Kubelet == nil { + obj.Spec.Kubernetes.Kubelet = &KubeletConfig{} + } + if obj.Spec.Kubernetes.Kubelet.FailSwapOn == nil { + obj.Spec.Kubernetes.Kubelet.FailSwapOn = pointer.Bool(true) + } + if obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent == nil { + obj.Spec.Kubernetes.Kubelet.ImageGCHighThresholdPercent = pointer.Int32(50) + } + if obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent == nil { + obj.Spec.Kubernetes.Kubelet.ImageGCLowThresholdPercent = pointer.Int32(40) + } + if obj.Spec.Kubernetes.Kubelet.SerializeImagePulls == nil { + obj.Spec.Kubernetes.Kubelet.SerializeImagePulls = pointer.Bool(true) + } + + var ( + kubeReservedMemory = resource.MustParse("1Gi") + kubeReservedCPU = resource.MustParse("80m") + kubeReservedPID = resource.MustParse("20k") + ) + + if obj.Spec.Kubernetes.Kubelet.KubeReserved == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved = &KubeletConfigReserved{Memory: &kubeReservedMemory, CPU: &kubeReservedCPU} + obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + } else { + if obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.Memory = &kubeReservedMemory + } + if obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.CPU = &kubeReservedCPU + } + if obj.Spec.Kubernetes.Kubelet.KubeReserved.PID == nil { + obj.Spec.Kubernetes.Kubelet.KubeReserved.PID = &kubeReservedPID + } + } + + if obj.Spec.Maintenance.AutoUpdate.MachineImageVersion == nil { + obj.Spec.Maintenance.AutoUpdate.MachineImageVersion = pointer.Bool(true) + } + + if obj.Spec.Provider.WorkersSettings == nil { + obj.Spec.Provider.WorkersSettings = &WorkersSettings{} + } + if obj.Spec.Provider.WorkersSettings.SSHAccess == nil { + obj.Spec.Provider.WorkersSettings.SSHAccess = &SSHAccess{Enabled: true} + } + + if obj.Spec.SystemComponents == nil { + obj.Spec.SystemComponents = &SystemComponents{} + } + if obj.Spec.SystemComponents.CoreDNS == nil { + obj.Spec.SystemComponents.CoreDNS = &CoreDNS{} + } + if obj.Spec.SystemComponents.CoreDNS.Autoscaling == nil { + obj.Spec.SystemComponents.CoreDNS.Autoscaling = &CoreDNSAutoscaling{} + } + if obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeHorizontal && obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeClusterProportional { + obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode = CoreDNSAutoscalingModeHorizontal + } } +} - if obj.Spec.SystemComponents == nil { - obj.Spec.SystemComponents = &SystemComponents{} +// SetDefaults_KubeAPIServerConfig sets default values for KubeAPIServerConfig objects. +func SetDefaults_KubeAPIServerConfig(obj *KubeAPIServerConfig) { + if obj.Requests == nil { + obj.Requests = &KubeAPIServerRequests{} + } + if obj.Requests.MaxNonMutatingInflight == nil { + obj.Requests.MaxNonMutatingInflight = pointer.Int32(400) + } + if obj.Requests.MaxMutatingInflight == nil { + obj.Requests.MaxMutatingInflight = pointer.Int32(200) + } + if obj.EnableAnonymousAuthentication == nil { + obj.EnableAnonymousAuthentication = pointer.Bool(false) } - if obj.Spec.SystemComponents.CoreDNS == nil { - obj.Spec.SystemComponents.CoreDNS = &CoreDNS{} + if obj.EventTTL == nil { + obj.EventTTL = &metav1.Duration{Duration: time.Hour} } - if obj.Spec.SystemComponents.CoreDNS.Autoscaling == nil { - obj.Spec.SystemComponents.CoreDNS.Autoscaling = &CoreDNSAutoscaling{} + if obj.Logging == nil { + obj.Logging = &KubeAPIServerLogging{} } - if obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeHorizontal && obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode != CoreDNSAutoscalingModeClusterProportional { - obj.Spec.SystemComponents.CoreDNS.Autoscaling.Mode = CoreDNSAutoscalingModeHorizontal + if obj.Logging.Verbosity == nil { + obj.Logging.Verbosity = pointer.Int32(2) + } + if obj.DefaultNotReadyTolerationSeconds == nil { + obj.DefaultNotReadyTolerationSeconds = pointer.Int64(300) + } + if obj.DefaultUnreachableTolerationSeconds == nil { + obj.DefaultUnreachableTolerationSeconds = pointer.Int64(300) } } @@ -285,13 +300,6 @@ func SetDefaults_Networking(obj *Networking) { // SetDefaults_Maintenance sets default values for Maintenance objects. func SetDefaults_Maintenance(obj *Maintenance) { - if obj.AutoUpdate == nil { - obj.AutoUpdate = &MaintenanceAutoUpdate{ - KubernetesVersion: true, - MachineImageVersion: true, - } - } - if obj.TimeWindow == nil { mt := timewindow.RandomMaintenanceTimeWindow() obj.TimeWindow = &MaintenanceTimeWindow{ diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_cloudprofile.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_cloudprofile.go index 4de4421b..5b9bd84a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_cloudprofile.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_cloudprofile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_controllerregistration.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_controllerregistration.go index 2951c848..4dfc9277 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_controllerregistration.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_controllerregistration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_project.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_project.go index 2f08284e..5df107a3 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_project.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/defaults_project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/doc.go index 05dd4594..2bf3a697 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go index d637d977..32f964f0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -3497,10 +3497,66 @@ func (m *SeedSettingDependencyWatchdogProbe) XXX_DiscardUnknown() { var xxx_messageInfo_SeedSettingDependencyWatchdogProbe proto.InternalMessageInfo +func (m *SeedSettingDependencyWatchdogProber) Reset() { *m = SeedSettingDependencyWatchdogProber{} } +func (*SeedSettingDependencyWatchdogProber) ProtoMessage() {} +func (*SeedSettingDependencyWatchdogProber) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{123} +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingDependencyWatchdogProber.Merge(m, src) +} +func (m *SeedSettingDependencyWatchdogProber) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingDependencyWatchdogProber) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingDependencyWatchdogProber.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingDependencyWatchdogProber proto.InternalMessageInfo + +func (m *SeedSettingDependencyWatchdogWeeder) Reset() { *m = SeedSettingDependencyWatchdogWeeder{} } +func (*SeedSettingDependencyWatchdogWeeder) ProtoMessage() {} +func (*SeedSettingDependencyWatchdogWeeder) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{124} +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Merge(src proto.Message) { + xxx_messageInfo_SeedSettingDependencyWatchdogWeeder.Merge(m, src) +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_Size() int { + return m.Size() +} +func (m *SeedSettingDependencyWatchdogWeeder) XXX_DiscardUnknown() { + xxx_messageInfo_SeedSettingDependencyWatchdogWeeder.DiscardUnknown(m) +} + +var xxx_messageInfo_SeedSettingDependencyWatchdogWeeder proto.InternalMessageInfo + func (m *SeedSettingExcessCapacityReservation) Reset() { *m = SeedSettingExcessCapacityReservation{} } func (*SeedSettingExcessCapacityReservation) ProtoMessage() {} func (*SeedSettingExcessCapacityReservation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{123} + return fileDescriptor_ca37af0df9a5bbd2, []int{125} } func (m *SeedSettingExcessCapacityReservation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3528,7 +3584,7 @@ var xxx_messageInfo_SeedSettingExcessCapacityReservation proto.InternalMessageIn func (m *SeedSettingLoadBalancerServices) Reset() { *m = SeedSettingLoadBalancerServices{} } func (*SeedSettingLoadBalancerServices) ProtoMessage() {} func (*SeedSettingLoadBalancerServices) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{124} + return fileDescriptor_ca37af0df9a5bbd2, []int{126} } func (m *SeedSettingLoadBalancerServices) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3556,7 +3612,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServices proto.InternalMessageInfo func (m *SeedSettingLoadBalancerServicesZones) Reset() { *m = SeedSettingLoadBalancerServicesZones{} } func (*SeedSettingLoadBalancerServicesZones) ProtoMessage() {} func (*SeedSettingLoadBalancerServicesZones) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{125} + return fileDescriptor_ca37af0df9a5bbd2, []int{127} } func (m *SeedSettingLoadBalancerServicesZones) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3584,7 +3640,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServicesZones proto.InternalMessageIn func (m *SeedSettingOwnerChecks) Reset() { *m = SeedSettingOwnerChecks{} } func (*SeedSettingOwnerChecks) ProtoMessage() {} func (*SeedSettingOwnerChecks) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{126} + return fileDescriptor_ca37af0df9a5bbd2, []int{128} } func (m *SeedSettingOwnerChecks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3612,7 +3668,7 @@ var xxx_messageInfo_SeedSettingOwnerChecks proto.InternalMessageInfo func (m *SeedSettingScheduling) Reset() { *m = SeedSettingScheduling{} } func (*SeedSettingScheduling) ProtoMessage() {} func (*SeedSettingScheduling) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{127} + return fileDescriptor_ca37af0df9a5bbd2, []int{129} } func (m *SeedSettingScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3640,7 +3696,7 @@ var xxx_messageInfo_SeedSettingScheduling proto.InternalMessageInfo func (m *SeedSettingTopologyAwareRouting) Reset() { *m = SeedSettingTopologyAwareRouting{} } func (*SeedSettingTopologyAwareRouting) ProtoMessage() {} func (*SeedSettingTopologyAwareRouting) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{128} + return fileDescriptor_ca37af0df9a5bbd2, []int{130} } func (m *SeedSettingTopologyAwareRouting) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3668,7 +3724,7 @@ var xxx_messageInfo_SeedSettingTopologyAwareRouting proto.InternalMessageInfo func (m *SeedSettingVerticalPodAutoscaler) Reset() { *m = SeedSettingVerticalPodAutoscaler{} } func (*SeedSettingVerticalPodAutoscaler) ProtoMessage() {} func (*SeedSettingVerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{129} + return fileDescriptor_ca37af0df9a5bbd2, []int{131} } func (m *SeedSettingVerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3696,7 +3752,7 @@ var xxx_messageInfo_SeedSettingVerticalPodAutoscaler proto.InternalMessageInfo func (m *SeedSettings) Reset() { *m = SeedSettings{} } func (*SeedSettings) ProtoMessage() {} func (*SeedSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{130} + return fileDescriptor_ca37af0df9a5bbd2, []int{132} } func (m *SeedSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3724,7 +3780,7 @@ var xxx_messageInfo_SeedSettings proto.InternalMessageInfo func (m *SeedSpec) Reset() { *m = SeedSpec{} } func (*SeedSpec) ProtoMessage() {} func (*SeedSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{131} + return fileDescriptor_ca37af0df9a5bbd2, []int{133} } func (m *SeedSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3752,7 +3808,7 @@ var xxx_messageInfo_SeedSpec proto.InternalMessageInfo func (m *SeedStatus) Reset() { *m = SeedStatus{} } func (*SeedStatus) ProtoMessage() {} func (*SeedStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{132} + return fileDescriptor_ca37af0df9a5bbd2, []int{134} } func (m *SeedStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3780,7 +3836,7 @@ var xxx_messageInfo_SeedStatus proto.InternalMessageInfo func (m *SeedTaint) Reset() { *m = SeedTaint{} } func (*SeedTaint) ProtoMessage() {} func (*SeedTaint) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{133} + return fileDescriptor_ca37af0df9a5bbd2, []int{135} } func (m *SeedTaint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3808,7 +3864,7 @@ var xxx_messageInfo_SeedTaint proto.InternalMessageInfo func (m *SeedTemplate) Reset() { *m = SeedTemplate{} } func (*SeedTemplate) ProtoMessage() {} func (*SeedTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{134} + return fileDescriptor_ca37af0df9a5bbd2, []int{136} } func (m *SeedTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3836,7 +3892,7 @@ var xxx_messageInfo_SeedTemplate proto.InternalMessageInfo func (m *SeedVolume) Reset() { *m = SeedVolume{} } func (*SeedVolume) ProtoMessage() {} func (*SeedVolume) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{135} + return fileDescriptor_ca37af0df9a5bbd2, []int{137} } func (m *SeedVolume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3864,7 +3920,7 @@ var xxx_messageInfo_SeedVolume proto.InternalMessageInfo func (m *SeedVolumeProvider) Reset() { *m = SeedVolumeProvider{} } func (*SeedVolumeProvider) ProtoMessage() {} func (*SeedVolumeProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{136} + return fileDescriptor_ca37af0df9a5bbd2, []int{138} } func (m *SeedVolumeProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3892,7 +3948,7 @@ var xxx_messageInfo_SeedVolumeProvider proto.InternalMessageInfo func (m *ServiceAccountConfig) Reset() { *m = ServiceAccountConfig{} } func (*ServiceAccountConfig) ProtoMessage() {} func (*ServiceAccountConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{137} + return fileDescriptor_ca37af0df9a5bbd2, []int{139} } func (m *ServiceAccountConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3920,7 +3976,7 @@ var xxx_messageInfo_ServiceAccountConfig proto.InternalMessageInfo func (m *ServiceAccountKeyRotation) Reset() { *m = ServiceAccountKeyRotation{} } func (*ServiceAccountKeyRotation) ProtoMessage() {} func (*ServiceAccountKeyRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{138} + return fileDescriptor_ca37af0df9a5bbd2, []int{140} } func (m *ServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3948,7 +4004,7 @@ var xxx_messageInfo_ServiceAccountKeyRotation proto.InternalMessageInfo func (m *Shoot) Reset() { *m = Shoot{} } func (*Shoot) ProtoMessage() {} func (*Shoot) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{139} + return fileDescriptor_ca37af0df9a5bbd2, []int{141} } func (m *Shoot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3976,7 +4032,7 @@ var xxx_messageInfo_Shoot proto.InternalMessageInfo func (m *ShootAdvertisedAddress) Reset() { *m = ShootAdvertisedAddress{} } func (*ShootAdvertisedAddress) ProtoMessage() {} func (*ShootAdvertisedAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{140} + return fileDescriptor_ca37af0df9a5bbd2, []int{142} } func (m *ShootAdvertisedAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4004,7 +4060,7 @@ var xxx_messageInfo_ShootAdvertisedAddress proto.InternalMessageInfo func (m *ShootCredentials) Reset() { *m = ShootCredentials{} } func (*ShootCredentials) ProtoMessage() {} func (*ShootCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{141} + return fileDescriptor_ca37af0df9a5bbd2, []int{143} } func (m *ShootCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4032,7 +4088,7 @@ var xxx_messageInfo_ShootCredentials proto.InternalMessageInfo func (m *ShootCredentialsRotation) Reset() { *m = ShootCredentialsRotation{} } func (*ShootCredentialsRotation) ProtoMessage() {} func (*ShootCredentialsRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{142} + return fileDescriptor_ca37af0df9a5bbd2, []int{144} } func (m *ShootCredentialsRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4060,7 +4116,7 @@ var xxx_messageInfo_ShootCredentialsRotation proto.InternalMessageInfo func (m *ShootKubeconfigRotation) Reset() { *m = ShootKubeconfigRotation{} } func (*ShootKubeconfigRotation) ProtoMessage() {} func (*ShootKubeconfigRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{143} + return fileDescriptor_ca37af0df9a5bbd2, []int{145} } func (m *ShootKubeconfigRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4088,7 +4144,7 @@ var xxx_messageInfo_ShootKubeconfigRotation proto.InternalMessageInfo func (m *ShootList) Reset() { *m = ShootList{} } func (*ShootList) ProtoMessage() {} func (*ShootList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{144} + return fileDescriptor_ca37af0df9a5bbd2, []int{146} } func (m *ShootList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4116,7 +4172,7 @@ var xxx_messageInfo_ShootList proto.InternalMessageInfo func (m *ShootMachineImage) Reset() { *m = ShootMachineImage{} } func (*ShootMachineImage) ProtoMessage() {} func (*ShootMachineImage) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{145} + return fileDescriptor_ca37af0df9a5bbd2, []int{147} } func (m *ShootMachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4144,7 +4200,7 @@ var xxx_messageInfo_ShootMachineImage proto.InternalMessageInfo func (m *ShootNetworks) Reset() { *m = ShootNetworks{} } func (*ShootNetworks) ProtoMessage() {} func (*ShootNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{146} + return fileDescriptor_ca37af0df9a5bbd2, []int{148} } func (m *ShootNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4172,7 +4228,7 @@ var xxx_messageInfo_ShootNetworks proto.InternalMessageInfo func (m *ShootObservabilityRotation) Reset() { *m = ShootObservabilityRotation{} } func (*ShootObservabilityRotation) ProtoMessage() {} func (*ShootObservabilityRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{147} + return fileDescriptor_ca37af0df9a5bbd2, []int{149} } func (m *ShootObservabilityRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4200,7 +4256,7 @@ var xxx_messageInfo_ShootObservabilityRotation proto.InternalMessageInfo func (m *ShootSSHKeypairRotation) Reset() { *m = ShootSSHKeypairRotation{} } func (*ShootSSHKeypairRotation) ProtoMessage() {} func (*ShootSSHKeypairRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{148} + return fileDescriptor_ca37af0df9a5bbd2, []int{150} } func (m *ShootSSHKeypairRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4228,7 +4284,7 @@ var xxx_messageInfo_ShootSSHKeypairRotation proto.InternalMessageInfo func (m *ShootSpec) Reset() { *m = ShootSpec{} } func (*ShootSpec) ProtoMessage() {} func (*ShootSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{149} + return fileDescriptor_ca37af0df9a5bbd2, []int{151} } func (m *ShootSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4256,7 +4312,7 @@ var xxx_messageInfo_ShootSpec proto.InternalMessageInfo func (m *ShootState) Reset() { *m = ShootState{} } func (*ShootState) ProtoMessage() {} func (*ShootState) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{150} + return fileDescriptor_ca37af0df9a5bbd2, []int{152} } func (m *ShootState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4284,7 +4340,7 @@ var xxx_messageInfo_ShootState proto.InternalMessageInfo func (m *ShootStateList) Reset() { *m = ShootStateList{} } func (*ShootStateList) ProtoMessage() {} func (*ShootStateList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{151} + return fileDescriptor_ca37af0df9a5bbd2, []int{153} } func (m *ShootStateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4312,7 +4368,7 @@ var xxx_messageInfo_ShootStateList proto.InternalMessageInfo func (m *ShootStateSpec) Reset() { *m = ShootStateSpec{} } func (*ShootStateSpec) ProtoMessage() {} func (*ShootStateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{152} + return fileDescriptor_ca37af0df9a5bbd2, []int{154} } func (m *ShootStateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4340,7 +4396,7 @@ var xxx_messageInfo_ShootStateSpec proto.InternalMessageInfo func (m *ShootStatus) Reset() { *m = ShootStatus{} } func (*ShootStatus) ProtoMessage() {} func (*ShootStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{153} + return fileDescriptor_ca37af0df9a5bbd2, []int{155} } func (m *ShootStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4368,7 +4424,7 @@ var xxx_messageInfo_ShootStatus proto.InternalMessageInfo func (m *ShootTemplate) Reset() { *m = ShootTemplate{} } func (*ShootTemplate) ProtoMessage() {} func (*ShootTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{154} + return fileDescriptor_ca37af0df9a5bbd2, []int{156} } func (m *ShootTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4396,7 +4452,7 @@ var xxx_messageInfo_ShootTemplate proto.InternalMessageInfo func (m *SystemComponents) Reset() { *m = SystemComponents{} } func (*SystemComponents) ProtoMessage() {} func (*SystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{155} + return fileDescriptor_ca37af0df9a5bbd2, []int{157} } func (m *SystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4424,7 +4480,7 @@ var xxx_messageInfo_SystemComponents proto.InternalMessageInfo func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} func (*Toleration) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{156} + return fileDescriptor_ca37af0df9a5bbd2, []int{158} } func (m *Toleration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4452,7 +4508,7 @@ var xxx_messageInfo_Toleration proto.InternalMessageInfo func (m *VerticalPodAutoscaler) Reset() { *m = VerticalPodAutoscaler{} } func (*VerticalPodAutoscaler) ProtoMessage() {} func (*VerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{157} + return fileDescriptor_ca37af0df9a5bbd2, []int{159} } func (m *VerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4480,7 +4536,7 @@ var xxx_messageInfo_VerticalPodAutoscaler proto.InternalMessageInfo func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} func (*Volume) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{158} + return fileDescriptor_ca37af0df9a5bbd2, []int{160} } func (m *Volume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4508,7 +4564,7 @@ var xxx_messageInfo_Volume proto.InternalMessageInfo func (m *VolumeType) Reset() { *m = VolumeType{} } func (*VolumeType) ProtoMessage() {} func (*VolumeType) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{159} + return fileDescriptor_ca37af0df9a5bbd2, []int{161} } func (m *VolumeType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4536,7 +4592,7 @@ var xxx_messageInfo_VolumeType proto.InternalMessageInfo func (m *WatchCacheSizes) Reset() { *m = WatchCacheSizes{} } func (*WatchCacheSizes) ProtoMessage() {} func (*WatchCacheSizes) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{160} + return fileDescriptor_ca37af0df9a5bbd2, []int{162} } func (m *WatchCacheSizes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4564,7 +4620,7 @@ var xxx_messageInfo_WatchCacheSizes proto.InternalMessageInfo func (m *Worker) Reset() { *m = Worker{} } func (*Worker) ProtoMessage() {} func (*Worker) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{161} + return fileDescriptor_ca37af0df9a5bbd2, []int{163} } func (m *Worker) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4592,7 +4648,7 @@ var xxx_messageInfo_Worker proto.InternalMessageInfo func (m *WorkerKubernetes) Reset() { *m = WorkerKubernetes{} } func (*WorkerKubernetes) ProtoMessage() {} func (*WorkerKubernetes) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{162} + return fileDescriptor_ca37af0df9a5bbd2, []int{164} } func (m *WorkerKubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4620,7 +4676,7 @@ var xxx_messageInfo_WorkerKubernetes proto.InternalMessageInfo func (m *WorkerSystemComponents) Reset() { *m = WorkerSystemComponents{} } func (*WorkerSystemComponents) ProtoMessage() {} func (*WorkerSystemComponents) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{163} + return fileDescriptor_ca37af0df9a5bbd2, []int{165} } func (m *WorkerSystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4648,7 +4704,7 @@ var xxx_messageInfo_WorkerSystemComponents proto.InternalMessageInfo func (m *WorkersSettings) Reset() { *m = WorkersSettings{} } func (*WorkersSettings) ProtoMessage() {} func (*WorkersSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{164} + return fileDescriptor_ca37af0df9a5bbd2, []int{166} } func (m *WorkersSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4805,6 +4861,8 @@ func init() { proto.RegisterType((*SeedSettingDependencyWatchdog)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingDependencyWatchdog") proto.RegisterType((*SeedSettingDependencyWatchdogEndpoint)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingDependencyWatchdogEndpoint") proto.RegisterType((*SeedSettingDependencyWatchdogProbe)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingDependencyWatchdogProbe") + proto.RegisterType((*SeedSettingDependencyWatchdogProber)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingDependencyWatchdogProber") + proto.RegisterType((*SeedSettingDependencyWatchdogWeeder)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingDependencyWatchdogWeeder") proto.RegisterType((*SeedSettingExcessCapacityReservation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingExcessCapacityReservation") proto.RegisterType((*SeedSettingLoadBalancerServices)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingLoadBalancerServices") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.SeedSettingLoadBalancerServices.AnnotationsEntry") @@ -4850,6 +4908,7 @@ func init() { proto.RegisterType((*Worker)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Worker") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Worker.AnnotationsEntry") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Worker.LabelsEntry") + proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Worker.SysctlsEntry") proto.RegisterType((*WorkerKubernetes)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.WorkerKubernetes") proto.RegisterType((*WorkerSystemComponents)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.WorkerSystemComponents") proto.RegisterType((*WorkersSettings)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.WorkersSettings") @@ -4860,730 +4919,736 @@ func init() { } var fileDescriptor_ca37af0df9a5bbd2 = []byte{ - // 11566 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x24, 0xc9, - 0x75, 0x98, 0x7a, 0xf8, 0x35, 0x7c, 0xfc, 0x58, 0x6e, 0xed, 0xc7, 0x71, 0xf7, 0xee, 0x76, 0x56, - 0x7d, 0x27, 0xe5, 0x2e, 0x92, 0xb9, 0xbe, 0xd3, 0xc9, 0xd2, 0x9d, 0x74, 0x3a, 0x91, 0x33, 0xdc, - 0xdd, 0xd1, 0x92, 0x5c, 0x5e, 0x0d, 0xf7, 0xee, 0x74, 0x72, 0x2e, 0x6a, 0x76, 0x17, 0x87, 0x7d, - 0xec, 0xe9, 0x9e, 0xeb, 0xee, 0xe1, 0x92, 0x77, 0x52, 0x64, 0x29, 0xfa, 0xb0, 0x64, 0xcb, 0x10, - 0x04, 0x38, 0x82, 0x24, 0x27, 0x96, 0x61, 0x38, 0x76, 0x90, 0x40, 0x76, 0x3e, 0x64, 0xc0, 0x31, - 0x12, 0x18, 0x02, 0x02, 0x4b, 0x86, 0x62, 0x28, 0x72, 0x8c, 0x28, 0x40, 0x44, 0x45, 0x8c, 0x23, - 0x07, 0x48, 0x60, 0x04, 0x30, 0x82, 0x00, 0x1b, 0xff, 0x08, 0xea, 0xa3, 0xab, 0xab, 0xbf, 0x86, - 0x64, 0x0f, 0x49, 0xdd, 0xc1, 0xfe, 0x45, 0x4e, 0xbd, 0xaa, 0xf7, 0xaa, 0xeb, 0xe3, 0xd5, 0x7b, - 0xaf, 0x5e, 0xbd, 0x07, 0x0b, 0x6d, 0x3b, 0xdc, 0xec, 0xad, 0xcf, 0x99, 0x5e, 0xe7, 0x5a, 0xdb, - 0xf0, 0x2d, 0xe2, 0x12, 0x3f, 0xfe, 0xa7, 0xbb, 0xd5, 0xbe, 0x66, 0x74, 0xed, 0xe0, 0x9a, 0xe9, - 0xf9, 0xe4, 0xda, 0xf6, 0x63, 0xeb, 0x24, 0x34, 0x1e, 0xbb, 0xd6, 0xa6, 0x30, 0x23, 0x24, 0xd6, - 0x5c, 0xd7, 0xf7, 0x42, 0x0f, 0x3d, 0x1e, 0xe3, 0x98, 0x8b, 0x9a, 0xc6, 0xff, 0x74, 0xb7, 0xda, - 0x73, 0x14, 0xc7, 0x1c, 0xc5, 0x31, 0x27, 0x70, 0x5c, 0xfe, 0x29, 0x95, 0xae, 0xd7, 0xf6, 0xae, - 0x31, 0x54, 0xeb, 0xbd, 0x0d, 0xf6, 0x8b, 0xfd, 0x60, 0xff, 0x71, 0x12, 0x97, 0x1f, 0xdd, 0x7a, - 0x77, 0x30, 0x67, 0x7b, 0xb4, 0x33, 0xd7, 0x8c, 0x5e, 0xe8, 0x05, 0xa6, 0xe1, 0xd8, 0x6e, 0xfb, - 0xda, 0x76, 0xa6, 0x37, 0x97, 0x75, 0xa5, 0xaa, 0xe8, 0x76, 0xdf, 0x3a, 0xfe, 0xba, 0x61, 0xe6, - 0xd5, 0x79, 0x22, 0xae, 0xd3, 0x31, 0xcc, 0x4d, 0xdb, 0x25, 0xfe, 0x6e, 0x34, 0x20, 0xd7, 0x7c, - 0x12, 0x78, 0x3d, 0xdf, 0x24, 0x47, 0x6a, 0x15, 0x5c, 0xeb, 0x90, 0xd0, 0xc8, 0xa3, 0x75, 0xad, - 0xa8, 0x95, 0xdf, 0x73, 0x43, 0xbb, 0x93, 0x25, 0xf3, 0x33, 0x07, 0x35, 0x08, 0xcc, 0x4d, 0xd2, - 0x31, 0x32, 0xed, 0xde, 0x51, 0xd4, 0xae, 0x17, 0xda, 0xce, 0x35, 0xdb, 0x0d, 0x83, 0xd0, 0x4f, - 0x37, 0xd2, 0x1f, 0x87, 0x91, 0x79, 0xcb, 0xf2, 0x5c, 0xf4, 0x28, 0x8c, 0x11, 0xd7, 0x58, 0x77, - 0x88, 0x35, 0xab, 0x5d, 0xd5, 0x1e, 0xa9, 0x2e, 0x9c, 0xf9, 0xd6, 0x5e, 0xed, 0x4d, 0xfb, 0x7b, - 0xb5, 0xb1, 0x45, 0x5e, 0x8c, 0x23, 0xb8, 0xfe, 0xcb, 0x15, 0x18, 0x65, 0x8d, 0x02, 0xf4, 0x45, - 0x0d, 0xce, 0x6d, 0xf5, 0xd6, 0x89, 0xef, 0x92, 0x90, 0x04, 0x0d, 0x23, 0xd8, 0x5c, 0xf7, 0x0c, - 0x9f, 0xa3, 0x98, 0x78, 0xfc, 0xc6, 0xdc, 0xd1, 0x57, 0xcf, 0xdc, 0xad, 0x2c, 0xba, 0x85, 0xfb, - 0xf6, 0xf7, 0x6a, 0xe7, 0x72, 0x00, 0x38, 0x8f, 0x38, 0xda, 0x86, 0x49, 0xb7, 0x6d, 0xbb, 0x3b, - 0x4d, 0xb7, 0xed, 0x93, 0x20, 0x98, 0xad, 0xb0, 0xce, 0xbc, 0xbf, 0x4c, 0x67, 0x56, 0x14, 0x3c, - 0x0b, 0x33, 0xfb, 0x7b, 0xb5, 0x49, 0xb5, 0x04, 0x27, 0xe8, 0xe8, 0xbf, 0xa3, 0xc1, 0x99, 0x79, - 0xab, 0x63, 0x07, 0x81, 0xed, 0xb9, 0xab, 0x4e, 0xaf, 0x6d, 0xbb, 0xe8, 0x2a, 0x0c, 0xbb, 0x46, - 0x87, 0xb0, 0x01, 0x19, 0x5f, 0x98, 0x14, 0x63, 0x3a, 0xbc, 0x62, 0x74, 0x08, 0x66, 0x10, 0xf4, - 0x2c, 0x8c, 0x9a, 0x9e, 0xbb, 0x61, 0xb7, 0x45, 0x3f, 0x7f, 0x6a, 0x8e, 0xcf, 0xe3, 0x9c, 0x3a, - 0x8f, 0xac, 0x7b, 0x62, 0xfe, 0xe7, 0xb0, 0x71, 0x77, 0x71, 0x27, 0x24, 0x2e, 0x25, 0xb3, 0x00, - 0xfb, 0x7b, 0xb5, 0xd1, 0x3a, 0x43, 0x80, 0x05, 0x22, 0xf4, 0x08, 0x54, 0x2d, 0x3b, 0xe0, 0x93, - 0x39, 0xc4, 0x26, 0x73, 0x72, 0x7f, 0xaf, 0x56, 0x6d, 0x88, 0x32, 0x2c, 0xa1, 0xfa, 0x75, 0xa8, - 0xce, 0x3b, 0xc4, 0x0f, 0x6d, 0xb7, 0x8d, 0x9e, 0x82, 0x69, 0xd2, 0x31, 0x6c, 0x07, 0x13, 0x93, - 0xd8, 0xdb, 0xc4, 0x0f, 0x66, 0xb5, 0xab, 0x43, 0x8f, 0x8c, 0x2f, 0xa0, 0xfd, 0xbd, 0xda, 0xf4, - 0x62, 0x02, 0x82, 0x53, 0x35, 0xf5, 0x8f, 0x6b, 0x30, 0x31, 0xdf, 0xb3, 0xec, 0x90, 0xf7, 0x04, - 0xf9, 0x30, 0x61, 0xd0, 0x9f, 0xab, 0x9e, 0x63, 0x9b, 0xbb, 0x62, 0x39, 0x3c, 0x53, 0x66, 0x06, - 0xe6, 0x63, 0x34, 0x0b, 0x67, 0xf6, 0xf7, 0x6a, 0x13, 0x4a, 0x01, 0x56, 0x89, 0xe8, 0x9b, 0xa0, - 0xc2, 0xd0, 0x07, 0x61, 0x92, 0x0f, 0xc7, 0xb2, 0xd1, 0xc5, 0x64, 0x43, 0xf4, 0xe1, 0x21, 0x65, - 0x74, 0x23, 0x42, 0x73, 0xb7, 0xd7, 0x5f, 0x26, 0x66, 0x88, 0xc9, 0x06, 0xf1, 0x89, 0x6b, 0x12, - 0x3e, 0xd1, 0x75, 0xa5, 0x31, 0x4e, 0xa0, 0xd2, 0x7f, 0xa8, 0xc1, 0xcc, 0xfc, 0xb6, 0x61, 0x3b, - 0xc6, 0xba, 0xed, 0xd8, 0xe1, 0xee, 0x8b, 0x9e, 0x4b, 0x0e, 0x31, 0xd3, 0x77, 0xe0, 0xbe, 0x9e, - 0x6b, 0xf0, 0x76, 0x0e, 0x59, 0xe6, 0x73, 0xbb, 0xb6, 0xdb, 0x25, 0x74, 0x89, 0xd2, 0x91, 0xbe, - 0x7f, 0x7f, 0xaf, 0x76, 0xdf, 0x9d, 0xfc, 0x2a, 0xb8, 0xa8, 0x2d, 0xc2, 0x70, 0x51, 0x01, 0x3d, - 0xe7, 0x39, 0xbd, 0x8e, 0xc0, 0x3a, 0xc4, 0xb0, 0x5e, 0xde, 0xdf, 0xab, 0x5d, 0xbc, 0x93, 0x5b, - 0x03, 0x17, 0xb4, 0xd4, 0xbf, 0x55, 0x81, 0xc9, 0x05, 0xc3, 0xdc, 0xea, 0x75, 0x17, 0x7a, 0xe6, - 0x16, 0x09, 0xd1, 0x87, 0xa1, 0x4a, 0x19, 0x9c, 0x65, 0x84, 0x86, 0x18, 0xc9, 0x9f, 0x2e, 0x5c, - 0xa7, 0x6c, 0x12, 0x69, 0xed, 0x78, 0x6c, 0x97, 0x49, 0x68, 0x2c, 0x20, 0x31, 0x26, 0x10, 0x97, - 0x61, 0x89, 0x15, 0x6d, 0xc0, 0x70, 0xd0, 0x25, 0xa6, 0xd8, 0x05, 0x8d, 0x32, 0x6b, 0x45, 0xed, - 0x71, 0xab, 0x4b, 0xcc, 0x78, 0x16, 0xe8, 0x2f, 0xcc, 0xf0, 0x23, 0x17, 0x46, 0x83, 0xd0, 0x08, - 0x7b, 0x01, 0xdb, 0x1a, 0x13, 0x8f, 0x5f, 0x1f, 0x98, 0x12, 0xc3, 0xb6, 0x30, 0x2d, 0x68, 0x8d, - 0xf2, 0xdf, 0x58, 0x50, 0xd1, 0xff, 0x93, 0x06, 0x33, 0x6a, 0xf5, 0x25, 0x3b, 0x08, 0xd1, 0xcf, - 0x66, 0x86, 0x73, 0xee, 0x70, 0xc3, 0x49, 0x5b, 0xb3, 0xc1, 0x9c, 0x11, 0xe4, 0xaa, 0x51, 0x89, - 0x32, 0x94, 0x04, 0x46, 0xec, 0x90, 0x74, 0xf8, 0xb2, 0x2a, 0xc9, 0xf9, 0xd4, 0x2e, 0x2f, 0x4c, - 0x09, 0x62, 0x23, 0x4d, 0x8a, 0x16, 0x73, 0xec, 0xfa, 0x87, 0xe1, 0xbc, 0x5a, 0x6b, 0xd5, 0xf7, - 0xb6, 0x6d, 0x8b, 0xf8, 0x74, 0x27, 0x84, 0xbb, 0xdd, 0xcc, 0x4e, 0xa0, 0x2b, 0x0b, 0x33, 0x08, - 0x7a, 0x2b, 0x8c, 0xfa, 0xa4, 0x6d, 0x7b, 0x2e, 0x9b, 0xed, 0xf1, 0x78, 0xec, 0x30, 0x2b, 0xc5, - 0x02, 0xaa, 0xff, 0x9f, 0x4a, 0x72, 0xec, 0xe8, 0x34, 0xa2, 0x6d, 0xa8, 0x76, 0x05, 0x29, 0x31, - 0x76, 0x37, 0x07, 0xfd, 0xc0, 0xa8, 0xeb, 0xf1, 0xa8, 0x46, 0x25, 0x58, 0xd2, 0x42, 0x36, 0x4c, - 0x47, 0xff, 0xd7, 0x07, 0x60, 0xd8, 0x8c, 0x9d, 0xae, 0x26, 0x10, 0xe1, 0x14, 0x62, 0xb4, 0x06, - 0xe3, 0x01, 0x31, 0x7d, 0x42, 0x79, 0x92, 0x58, 0xa6, 0xb9, 0x8c, 0xab, 0x15, 0x55, 0x12, 0x8c, - 0xeb, 0xac, 0xe8, 0xfe, 0xb8, 0x04, 0xe0, 0x18, 0x11, 0x3d, 0x16, 0x02, 0x42, 0x2c, 0xca, 0x91, - 0x66, 0x87, 0xf9, 0xdc, 0xd0, 0x4f, 0x6d, 0x89, 0x32, 0x2c, 0xa1, 0xfa, 0xd7, 0x86, 0x01, 0x65, - 0x97, 0xb8, 0x3a, 0x02, 0xbc, 0x44, 0x8c, 0xff, 0x20, 0x23, 0x20, 0x76, 0x4b, 0x0a, 0x31, 0x7a, - 0x15, 0xa6, 0x1c, 0x23, 0x08, 0x6f, 0x77, 0xa9, 0xb4, 0x12, 0x2d, 0x94, 0x89, 0xc7, 0xe7, 0xcb, - 0xcc, 0xf4, 0x92, 0x8a, 0x68, 0xe1, 0xec, 0xfe, 0x5e, 0x6d, 0x2a, 0x51, 0x84, 0x93, 0xa4, 0xd0, - 0xcb, 0x30, 0x4e, 0x0b, 0x16, 0x7d, 0xdf, 0xf3, 0xc5, 0xe8, 0x3f, 0x5d, 0x96, 0x2e, 0x43, 0xb2, - 0x30, 0x45, 0xe7, 0x44, 0xfe, 0xc4, 0x31, 0x7a, 0xf4, 0x01, 0x40, 0xde, 0x7a, 0x40, 0xfc, 0x6d, - 0x62, 0xdd, 0xe0, 0xa2, 0x19, 0xfd, 0x58, 0x3a, 0x3b, 0x43, 0x0b, 0x97, 0xc5, 0x6c, 0xa2, 0xdb, - 0x99, 0x1a, 0x38, 0xa7, 0x15, 0xda, 0x02, 0x24, 0xc5, 0x3b, 0xb9, 0x00, 0x66, 0x47, 0x0e, 0xbf, - 0x7c, 0x2e, 0x52, 0x62, 0x37, 0x32, 0x28, 0x70, 0x0e, 0x5a, 0xfd, 0xdf, 0x55, 0x60, 0x82, 0x2f, - 0x91, 0x45, 0x37, 0xf4, 0x77, 0x4f, 0xe1, 0x80, 0x20, 0x89, 0x03, 0xa2, 0x5e, 0x7e, 0xcf, 0xb3, - 0x0e, 0x17, 0x9e, 0x0f, 0x9d, 0xd4, 0xf9, 0xb0, 0x38, 0x28, 0xa1, 0xfe, 0xc7, 0xc3, 0x9f, 0x6a, - 0x70, 0x46, 0xa9, 0x7d, 0x0a, 0xa7, 0x83, 0x95, 0x3c, 0x1d, 0x9e, 0x19, 0xf0, 0xfb, 0x0a, 0x0e, - 0x07, 0x2f, 0xf1, 0x59, 0x8c, 0x71, 0x3f, 0x0e, 0xb0, 0xce, 0xd8, 0xc9, 0x4a, 0x2c, 0x27, 0xc9, - 0x29, 0x5f, 0x90, 0x10, 0xac, 0xd4, 0x4a, 0xf0, 0xac, 0x4a, 0x5f, 0x9e, 0xf5, 0xdf, 0x87, 0xe0, - 0x6c, 0x66, 0xd8, 0xb3, 0x7c, 0x44, 0xfb, 0x09, 0xf1, 0x91, 0xca, 0x4f, 0x82, 0x8f, 0x0c, 0x95, - 0xe2, 0x23, 0x87, 0x3e, 0x27, 0x90, 0x0f, 0xa8, 0x63, 0xb7, 0x79, 0xb3, 0x56, 0x68, 0xf8, 0xe1, - 0x9a, 0xdd, 0x21, 0x82, 0xe3, 0xfc, 0xed, 0xc3, 0x2d, 0x59, 0xda, 0x82, 0x33, 0x9e, 0xe5, 0x0c, - 0x26, 0x9c, 0x83, 0x5d, 0xff, 0xde, 0x30, 0x40, 0x7d, 0x1e, 0x7b, 0x21, 0xef, 0xec, 0x33, 0x30, - 0xd2, 0xdd, 0x34, 0x82, 0x68, 0x3d, 0x3d, 0x1a, 0x2d, 0xc6, 0x55, 0x5a, 0x78, 0x6f, 0xaf, 0x36, - 0x5b, 0xf7, 0x89, 0x45, 0xdc, 0xd0, 0x36, 0x9c, 0x20, 0x6a, 0xc4, 0x60, 0x98, 0xb7, 0xa3, 0xdf, - 0x40, 0x87, 0xb1, 0xee, 0x75, 0xba, 0x0e, 0xa1, 0x50, 0xf6, 0x0d, 0x95, 0x72, 0xdf, 0xb0, 0x94, - 0xc1, 0x84, 0x73, 0xb0, 0x47, 0x34, 0x9b, 0xae, 0x1d, 0xda, 0x86, 0xa4, 0x39, 0x54, 0x9e, 0x66, - 0x12, 0x13, 0xce, 0xc1, 0x8e, 0x3e, 0xa7, 0xc1, 0xe5, 0x64, 0xf1, 0x75, 0xdb, 0xb5, 0x83, 0x4d, - 0x62, 0x31, 0xe2, 0xc3, 0x47, 0x26, 0x7e, 0x65, 0x7f, 0xaf, 0x76, 0x79, 0xa9, 0x10, 0x23, 0xee, - 0x43, 0x0d, 0x7d, 0x5e, 0x83, 0xfb, 0x53, 0xe3, 0xe2, 0xdb, 0xed, 0x36, 0xf1, 0x45, 0x6f, 0x8e, - 0xbe, 0x84, 0x6a, 0xfb, 0x7b, 0xb5, 0xfb, 0x97, 0x8a, 0x51, 0xe2, 0x7e, 0xf4, 0xf4, 0x6f, 0x6a, - 0x30, 0x54, 0xc7, 0x4d, 0xf4, 0xb6, 0x84, 0x12, 0x77, 0x9f, 0xaa, 0xc4, 0xdd, 0xdb, 0xab, 0x8d, - 0xd5, 0x71, 0x53, 0xd1, 0xe7, 0x3e, 0xaf, 0xc1, 0x59, 0xd3, 0x73, 0x43, 0x83, 0xf6, 0x0b, 0x73, - 0x49, 0x27, 0xe2, 0xaa, 0xa5, 0xf4, 0x97, 0x7a, 0x0a, 0xd9, 0xc2, 0x25, 0xd1, 0x81, 0xb3, 0x69, - 0x48, 0x80, 0xb3, 0x94, 0xf5, 0xef, 0x6b, 0x30, 0x59, 0x77, 0xbc, 0x9e, 0xb5, 0xea, 0x7b, 0x1b, - 0xb6, 0x43, 0xde, 0x18, 0x4a, 0x9b, 0xda, 0xe3, 0xa2, 0x43, 0x99, 0x29, 0x51, 0x6a, 0xc5, 0x37, - 0x88, 0x12, 0xa5, 0x76, 0xb9, 0xe0, 0x9c, 0xfc, 0xe5, 0xb1, 0xe4, 0x97, 0xb1, 0x93, 0xf2, 0x11, - 0xa8, 0x9a, 0xc6, 0x42, 0xcf, 0xb5, 0x1c, 0xa9, 0x45, 0xd1, 0x5e, 0xd6, 0xe7, 0x79, 0x19, 0x96, - 0x50, 0xf4, 0x2a, 0x40, 0x6c, 0x02, 0x13, 0xd3, 0x70, 0x7d, 0x30, 0xb3, 0x5b, 0x8b, 0x84, 0xa1, - 0xed, 0xb6, 0x83, 0x78, 0xea, 0x63, 0x18, 0x56, 0xa8, 0xa1, 0x8f, 0xc2, 0x94, 0x18, 0xe4, 0x66, - 0xc7, 0x68, 0x0b, 0x7b, 0x43, 0xc9, 0x91, 0x5a, 0x56, 0x10, 0x2d, 0x5c, 0x10, 0x84, 0xa7, 0xd4, - 0xd2, 0x00, 0x27, 0xa9, 0xa1, 0x5d, 0x98, 0xec, 0xa8, 0x36, 0x94, 0xe1, 0xf2, 0xe2, 0x8c, 0x62, - 0x4f, 0x59, 0x38, 0x2f, 0x88, 0x4f, 0x26, 0xac, 0x2f, 0x09, 0x52, 0x39, 0xaa, 0xe0, 0xc8, 0x49, - 0xa9, 0x82, 0x04, 0xc6, 0xb8, 0x32, 0x1c, 0xcc, 0x8e, 0xb2, 0x0f, 0x7c, 0xaa, 0xcc, 0x07, 0x72, - 0xbd, 0x3a, 0xb6, 0xe9, 0xf2, 0xdf, 0x01, 0x8e, 0x70, 0xa3, 0x6d, 0x98, 0xa4, 0xa7, 0x7a, 0x8b, - 0x38, 0xc4, 0x0c, 0x3d, 0x7f, 0x76, 0xac, 0xbc, 0xcd, 0xb4, 0xa5, 0xe0, 0xe1, 0xa6, 0x34, 0xb5, - 0x04, 0x27, 0xe8, 0x48, 0x5b, 0x41, 0xb5, 0xd0, 0x56, 0xd0, 0x83, 0x89, 0x6d, 0xc5, 0xa6, 0x35, - 0xce, 0x06, 0xe1, 0x7d, 0x65, 0x3a, 0x16, 0x1b, 0xb8, 0x16, 0xce, 0x09, 0x42, 0x13, 0xaa, 0x31, - 0x4c, 0xa5, 0xa3, 0xef, 0x55, 0xe1, 0x6c, 0xdd, 0xe9, 0x05, 0x21, 0xf1, 0xe7, 0xc5, 0xa5, 0x04, - 0xf1, 0xd1, 0x27, 0x34, 0xb8, 0xc8, 0xfe, 0x6d, 0x78, 0x77, 0xdd, 0x06, 0x71, 0x8c, 0xdd, 0xf9, - 0x0d, 0x5a, 0xc3, 0xb2, 0x8e, 0xc6, 0x81, 0x1a, 0x3d, 0x21, 0x45, 0x32, 0xe3, 0x5c, 0x2b, 0x17, - 0x23, 0x2e, 0xa0, 0x84, 0x7e, 0x41, 0x83, 0x4b, 0x39, 0xa0, 0x06, 0x71, 0x48, 0x18, 0x49, 0x2e, - 0x47, 0xed, 0xc7, 0x83, 0xfb, 0x7b, 0xb5, 0x4b, 0xad, 0x22, 0xa4, 0xb8, 0x98, 0x1e, 0xfa, 0x25, - 0x0d, 0x2e, 0xe7, 0x40, 0xaf, 0x1b, 0xb6, 0xd3, 0xf3, 0x23, 0xa1, 0xe6, 0xa8, 0xdd, 0x61, 0xb2, - 0x45, 0xab, 0x10, 0x2b, 0xee, 0x43, 0x11, 0x7d, 0x0c, 0x2e, 0x48, 0xe8, 0x1d, 0xd7, 0x25, 0xc4, - 0x4a, 0x88, 0x38, 0x47, 0xed, 0xca, 0xa5, 0xfd, 0xbd, 0xda, 0x85, 0x56, 0x1e, 0x42, 0x9c, 0x4f, - 0x07, 0xb5, 0xe1, 0xc1, 0x18, 0x10, 0xda, 0x8e, 0xfd, 0x2a, 0x97, 0xc2, 0x36, 0x7d, 0x12, 0x6c, - 0x7a, 0x8e, 0xc5, 0x98, 0x85, 0xb6, 0xf0, 0xe6, 0xfd, 0xbd, 0xda, 0x83, 0xad, 0x7e, 0x15, 0x71, - 0x7f, 0x3c, 0xc8, 0x82, 0xc9, 0xc0, 0x34, 0xdc, 0xa6, 0x1b, 0x12, 0x7f, 0xdb, 0x70, 0x66, 0x47, - 0x4b, 0x7d, 0x20, 0xdf, 0xa2, 0x0a, 0x1e, 0x9c, 0xc0, 0x8a, 0xde, 0x0d, 0x55, 0xb2, 0xd3, 0x35, - 0x5c, 0x8b, 0x70, 0xb6, 0x30, 0xbe, 0xf0, 0x00, 0x3d, 0x8c, 0x16, 0x45, 0xd9, 0xbd, 0xbd, 0xda, - 0x64, 0xf4, 0xff, 0xb2, 0x67, 0x11, 0x2c, 0x6b, 0xa3, 0x8f, 0xc0, 0xf9, 0x8e, 0xb1, 0xb3, 0xe2, - 0x59, 0x84, 0x31, 0xb9, 0x20, 0x12, 0x74, 0xab, 0xa5, 0xfa, 0x39, 0xbb, 0xbf, 0x57, 0x3b, 0xbf, - 0x9c, 0x83, 0x0f, 0xe7, 0x52, 0xa1, 0xd3, 0xd0, 0x31, 0x76, 0x6e, 0xf8, 0x86, 0x49, 0x36, 0x7a, - 0xce, 0x1a, 0xf1, 0x3b, 0xb6, 0xcb, 0x75, 0x09, 0x62, 0x7a, 0xae, 0x45, 0x59, 0x89, 0xf6, 0xc8, - 0x08, 0x9f, 0x86, 0xe5, 0x7e, 0x15, 0x71, 0x7f, 0x3c, 0xe8, 0x09, 0x98, 0xb4, 0xdb, 0xae, 0xe7, - 0x93, 0x35, 0xc3, 0x76, 0xc3, 0x60, 0x16, 0x98, 0xd9, 0x9d, 0x0d, 0x6b, 0x53, 0x29, 0xc7, 0x89, - 0x5a, 0xfa, 0xde, 0x10, 0x8c, 0xd7, 0x3d, 0xd7, 0xb2, 0x99, 0x1a, 0xf3, 0x58, 0xc2, 0x66, 0xfa, - 0xa0, 0xca, 0x07, 0xef, 0xed, 0xd5, 0xa6, 0x64, 0x45, 0x85, 0x31, 0x3e, 0x29, 0x0d, 0x15, 0x5c, - 0x31, 0x7e, 0x73, 0xd2, 0xc2, 0x70, 0x6f, 0xaf, 0x76, 0x46, 0x36, 0x4b, 0x1a, 0x1d, 0xd0, 0x36, - 0xd7, 0x3f, 0xd6, 0x7c, 0xc3, 0x0d, 0xec, 0x01, 0xf4, 0x0f, 0xa9, 0x59, 0x2e, 0x65, 0xb0, 0xe1, - 0x1c, 0x0a, 0xe8, 0x65, 0x98, 0xa6, 0xa5, 0x77, 0xba, 0x96, 0x11, 0x92, 0x92, 0x6a, 0xc7, 0x45, - 0x41, 0x73, 0x7a, 0x29, 0x81, 0x09, 0xa7, 0x30, 0x73, 0x1b, 0xb3, 0x11, 0x78, 0x2e, 0xdb, 0x6e, - 0x09, 0x1b, 0x33, 0x2d, 0xc5, 0x02, 0x8a, 0x1e, 0x85, 0xb1, 0x0e, 0x09, 0x02, 0xa3, 0x4d, 0xd8, - 0xfe, 0x19, 0x8f, 0x0f, 0xc9, 0x65, 0x5e, 0x8c, 0x23, 0x38, 0x7a, 0x3b, 0x8c, 0x98, 0x9e, 0x45, - 0x82, 0xd9, 0x31, 0x36, 0xc3, 0x54, 0xfb, 0x1a, 0xa9, 0xd3, 0x82, 0x7b, 0x7b, 0xb5, 0x71, 0xa6, - 0x87, 0xd3, 0x5f, 0x98, 0x57, 0xd2, 0x7f, 0x95, 0xca, 0xac, 0x29, 0x21, 0xfd, 0x10, 0xb6, 0xf1, - 0xd3, 0x33, 0x33, 0xeb, 0x5f, 0xa2, 0x0a, 0x83, 0xe7, 0x86, 0xbe, 0xe7, 0xac, 0x3a, 0x86, 0x4b, - 0xd0, 0xa7, 0x35, 0x98, 0xd9, 0xb4, 0xdb, 0x9b, 0xea, 0xe5, 0x96, 0x38, 0xd8, 0x4a, 0xc9, 0xf6, - 0x37, 0x53, 0xb8, 0x16, 0xce, 0xef, 0xef, 0xd5, 0x66, 0xd2, 0xa5, 0x38, 0x43, 0x53, 0xff, 0x6c, - 0x05, 0xce, 0x8b, 0x9e, 0x39, 0xf4, 0xa4, 0xe9, 0x3a, 0xde, 0x6e, 0x87, 0xb8, 0xa7, 0x71, 0x0f, - 0x15, 0xcd, 0x50, 0xa5, 0x70, 0x86, 0x3a, 0x99, 0x19, 0x1a, 0x2a, 0x33, 0x43, 0x72, 0x21, 0x1f, - 0x30, 0x4b, 0x7f, 0xae, 0xc1, 0x6c, 0xde, 0x58, 0x9c, 0x82, 0x0e, 0xd4, 0x49, 0xea, 0x40, 0x37, - 0xcb, 0x2a, 0xb5, 0xe9, 0xae, 0x17, 0xe8, 0x42, 0x3f, 0xae, 0xc0, 0xc5, 0xb8, 0x7a, 0xd3, 0x0d, - 0x42, 0xc3, 0x71, 0xb8, 0x99, 0xe7, 0xe4, 0xe7, 0xbd, 0x9b, 0x50, 0x65, 0x57, 0x06, 0xfb, 0x54, - 0xb5, 0xef, 0x85, 0x96, 0xe6, 0x9d, 0x94, 0xa5, 0x79, 0xf5, 0x18, 0x69, 0xf6, 0x37, 0x3a, 0xff, - 0x4f, 0x0d, 0x2e, 0xe7, 0x37, 0x3c, 0x85, 0x45, 0xe5, 0x25, 0x17, 0xd5, 0x07, 0x8e, 0xef, 0xab, - 0x0b, 0x96, 0xd5, 0xbf, 0xa8, 0x14, 0x7d, 0x2d, 0x53, 0xb6, 0x37, 0xe0, 0x0c, 0xd5, 0x82, 0x82, - 0x50, 0x98, 0x44, 0x8f, 0xe6, 0x2b, 0x10, 0xd9, 0x88, 0xce, 0xe0, 0x24, 0x0e, 0x9c, 0x46, 0x8a, - 0x56, 0x60, 0x8c, 0xaa, 0x3e, 0x14, 0x7f, 0xe5, 0xf0, 0xf8, 0xe5, 0x69, 0xd4, 0xe2, 0x6d, 0x71, - 0x84, 0x04, 0xfd, 0x2c, 0x4c, 0x59, 0x72, 0x47, 0x1d, 0x70, 0x51, 0x98, 0xc6, 0xca, 0x8c, 0xd7, - 0x0d, 0xb5, 0x35, 0x4e, 0x22, 0xd3, 0xff, 0x4a, 0x83, 0x07, 0xfa, 0xad, 0x2d, 0xf4, 0x0a, 0x80, - 0x19, 0x89, 0x17, 0xdc, 0x55, 0xa4, 0xa4, 0x79, 0x5b, 0x0a, 0x29, 0xf1, 0x06, 0x95, 0x45, 0x01, - 0x56, 0x88, 0xe4, 0xdc, 0x3f, 0x56, 0x4e, 0xe8, 0xfe, 0x51, 0xff, 0x5f, 0x9a, 0xca, 0x8a, 0xd4, - 0xb9, 0x7d, 0xa3, 0xb1, 0x22, 0xb5, 0xef, 0x85, 0xf6, 0xb5, 0x3f, 0xa9, 0xc0, 0xd5, 0xfc, 0x26, - 0xca, 0xd9, 0xfb, 0x7e, 0x18, 0xed, 0x72, 0x7f, 0x9e, 0x21, 0x76, 0x36, 0x3e, 0x42, 0x39, 0x0b, - 0xf7, 0xb6, 0xb9, 0xb7, 0x57, 0xbb, 0x9c, 0xc7, 0xe8, 0x85, 0x9f, 0x8e, 0x68, 0x87, 0xec, 0x94, - 0x95, 0x81, 0x4b, 0x7f, 0xef, 0x38, 0x24, 0x73, 0x31, 0xd6, 0x89, 0x73, 0x68, 0xc3, 0xc2, 0xc7, - 0x35, 0x98, 0x4e, 0xac, 0xe8, 0x60, 0x76, 0x84, 0xad, 0xd1, 0x52, 0x57, 0x3f, 0x89, 0xad, 0x12, - 0x9f, 0xdc, 0x89, 0xe2, 0x00, 0xa7, 0x08, 0xa6, 0xd8, 0xac, 0x3a, 0xaa, 0x6f, 0x38, 0x36, 0xab, - 0x76, 0xbe, 0x80, 0xcd, 0xfe, 0x4a, 0xa5, 0xe8, 0x6b, 0x19, 0x9b, 0xbd, 0x0b, 0xe3, 0x91, 0x67, - 0x65, 0xc4, 0x2e, 0xae, 0x0f, 0xda, 0x27, 0x8e, 0x2e, 0x76, 0x7b, 0x88, 0x4a, 0x02, 0x1c, 0xd3, - 0x42, 0x9f, 0xd4, 0x00, 0xe2, 0x89, 0x11, 0x9b, 0x6a, 0xed, 0xf8, 0x86, 0x43, 0x11, 0x6b, 0xa6, - 0xe9, 0x96, 0x56, 0x16, 0x85, 0x42, 0x57, 0xff, 0xfa, 0x10, 0xa0, 0x6c, 0xdf, 0xa9, 0xb8, 0xb9, - 0x65, 0xbb, 0x56, 0x5a, 0x21, 0xb8, 0x65, 0xbb, 0x16, 0x66, 0x90, 0x43, 0x08, 0xa4, 0x4f, 0xc3, - 0x99, 0xb6, 0xe3, 0xad, 0x1b, 0x8e, 0xb3, 0x2b, 0x9c, 0x35, 0x85, 0xdb, 0xdf, 0x39, 0x7a, 0x30, - 0xdd, 0x48, 0x82, 0x70, 0xba, 0x2e, 0xea, 0xc2, 0x8c, 0x4f, 0x55, 0x59, 0xd3, 0x76, 0x98, 0xea, - 0xe4, 0xf5, 0xc2, 0x92, 0xb6, 0x12, 0x26, 0xde, 0xe3, 0x14, 0x2e, 0x9c, 0xc1, 0x8e, 0xde, 0x02, - 0x63, 0x5d, 0xdf, 0xee, 0x18, 0xfe, 0x2e, 0x53, 0xce, 0xaa, 0x0b, 0x13, 0xf4, 0x84, 0x5b, 0xe5, - 0x45, 0x38, 0x82, 0xa1, 0x8f, 0xc0, 0xb8, 0x63, 0x6f, 0x10, 0x73, 0xd7, 0x74, 0x88, 0x30, 0x6e, - 0xdc, 0x3e, 0x9e, 0x25, 0xb3, 0x14, 0xa1, 0x15, 0x57, 0xaa, 0xd1, 0x4f, 0x1c, 0x13, 0xd4, 0x3f, - 0x57, 0x81, 0xfb, 0xfb, 0xb4, 0x44, 0x98, 0x2e, 0x68, 0xf1, 0x61, 0x62, 0xfa, 0x9e, 0xe0, 0x8b, - 0x50, 0x14, 0xde, 0xdb, 0xab, 0x3d, 0xd4, 0x07, 0x41, 0x8b, 0xae, 0x1f, 0xd2, 0xde, 0xc5, 0x31, - 0x1a, 0xd4, 0x84, 0x51, 0x2b, 0x36, 0xe3, 0x8d, 0x2f, 0x3c, 0x46, 0x59, 0x2c, 0x37, 0xb4, 0x1d, - 0x16, 0x9b, 0x40, 0x80, 0x96, 0x60, 0x8c, 0xdf, 0x9e, 0x12, 0xc1, 0xae, 0x1f, 0x67, 0x3a, 0x2d, - 0x2f, 0x3a, 0x2c, 0xb2, 0x08, 0x85, 0xfe, 0x7f, 0x35, 0x18, 0xab, 0x7b, 0x3e, 0x69, 0xac, 0xb4, - 0xd0, 0x2e, 0x4c, 0x28, 0x7e, 0xda, 0x82, 0x75, 0x95, 0xdc, 0xcb, 0x0c, 0xe3, 0x7c, 0x8c, 0x2d, - 0xf2, 0xf1, 0x94, 0x05, 0x58, 0xa5, 0x85, 0x5e, 0xa1, 0x63, 0x7e, 0xd7, 0xb7, 0x43, 0x4a, 0x78, - 0x90, 0x4b, 0x27, 0x4e, 0x18, 0x47, 0xb8, 0xf8, 0x32, 0x90, 0x3f, 0x71, 0x4c, 0x45, 0x5f, 0xa5, - 0xdb, 0x36, 0xdd, 0x4d, 0xf4, 0x14, 0x0c, 0x77, 0x3c, 0x2b, 0x9a, 0xf7, 0xb7, 0x46, 0x9b, 0x72, - 0xd9, 0xb3, 0xe8, 0xd8, 0x5e, 0xcc, 0xb6, 0x60, 0xa6, 0x31, 0xd6, 0x46, 0x5f, 0x81, 0x99, 0x34, - 0x7d, 0xf4, 0x14, 0x4c, 0x9b, 0x5e, 0xa7, 0xe3, 0xb9, 0xad, 0xde, 0xc6, 0x86, 0xbd, 0x43, 0x12, - 0xce, 0xb7, 0xf5, 0x04, 0x04, 0xa7, 0x6a, 0xea, 0x5f, 0xd5, 0x60, 0x88, 0xce, 0x8b, 0x0e, 0xa3, - 0x96, 0xd7, 0x31, 0x6c, 0x57, 0xf4, 0x8a, 0xb9, 0x06, 0x37, 0x58, 0x09, 0x16, 0x10, 0xd4, 0x85, - 0xf1, 0x48, 0xd2, 0x19, 0xc8, 0x01, 0xa4, 0xb1, 0xd2, 0x92, 0x4e, 0x73, 0x92, 0xfd, 0x46, 0x25, - 0x01, 0x8e, 0x89, 0xe8, 0x06, 0x9c, 0x6d, 0xac, 0xb4, 0x9a, 0xae, 0xe9, 0xf4, 0x2c, 0xb2, 0xb8, - 0xc3, 0xfe, 0x50, 0x06, 0x60, 0xf3, 0x12, 0xf1, 0x9d, 0x8c, 0x01, 0x88, 0x4a, 0x38, 0x82, 0xd1, - 0x6a, 0x84, 0xb7, 0x10, 0x1e, 0xb2, 0xac, 0x9a, 0x40, 0x82, 0x23, 0x98, 0xfe, 0xfd, 0x0a, 0x4c, - 0x28, 0x1d, 0x42, 0x0e, 0x8c, 0xf1, 0xcf, 0x8d, 0x1c, 0xd4, 0x16, 0x4b, 0x7e, 0x62, 0xb2, 0xd7, - 0x9c, 0x3a, 0x1f, 0xd0, 0x00, 0x47, 0x24, 0x54, 0x66, 0x56, 0xe9, 0xc3, 0xcc, 0xe6, 0x00, 0xb8, - 0x2b, 0x1e, 0xf3, 0xab, 0xe0, 0x5b, 0x92, 0x9d, 0x17, 0x2d, 0x59, 0x8a, 0x95, 0x1a, 0xe8, 0x01, - 0xc1, 0xf6, 0xb9, 0x07, 0x46, 0x35, 0xc5, 0xf2, 0x37, 0x60, 0xe4, 0x55, 0xcf, 0x25, 0x81, 0xb8, - 0x78, 0x3a, 0xa6, 0x0f, 0x1c, 0xa7, 0x87, 0xfa, 0x8b, 0x14, 0x2f, 0xe6, 0xe8, 0xf5, 0x5f, 0xd3, - 0x00, 0x1a, 0x46, 0x68, 0xf0, 0x7b, 0x92, 0x43, 0x38, 0x39, 0x3f, 0x90, 0x38, 0xad, 0xaa, 0x19, - 0xc7, 0xcf, 0xe1, 0xc0, 0x7e, 0x35, 0xfa, 0x7c, 0x29, 0x05, 0x73, 0xec, 0x2d, 0xfb, 0x55, 0x82, - 0x19, 0x1c, 0xbd, 0x0d, 0xc6, 0x89, 0x6b, 0xfa, 0xbb, 0xdd, 0x90, 0x58, 0x6c, 0x04, 0xaa, 0x7c, - 0x87, 0x2e, 0x46, 0x85, 0x38, 0x86, 0xeb, 0x8f, 0x41, 0x52, 0x95, 0x39, 0xb8, 0x97, 0xfa, 0x8f, - 0x86, 0xe1, 0xd2, 0xe2, 0x5a, 0xbd, 0x21, 0xf0, 0xd9, 0x9e, 0x7b, 0x8b, 0xec, 0xfe, 0x8d, 0x4f, - 0xc9, 0xdf, 0xf8, 0x94, 0x1c, 0xa3, 0x4f, 0xc9, 0x3d, 0x0d, 0x66, 0x16, 0x77, 0xba, 0xb6, 0xcf, - 0x9c, 0xeb, 0x89, 0x4f, 0x75, 0x4f, 0xf4, 0x28, 0x8c, 0x6d, 0xf3, 0x7f, 0xc5, 0xe2, 0x92, 0xfa, - 0xbd, 0xa8, 0x81, 0x23, 0x38, 0xda, 0x80, 0x69, 0xc2, 0x9a, 0x33, 0x21, 0xd3, 0x08, 0xcb, 0x2c, - 0x20, 0xfe, 0x76, 0x23, 0x81, 0x05, 0xa7, 0xb0, 0xa2, 0x16, 0x4c, 0x9b, 0x8e, 0x11, 0x04, 0xf6, - 0x86, 0x6d, 0xc6, 0x6e, 0x63, 0xe3, 0x0b, 0x6f, 0x63, 0x47, 0x4f, 0x02, 0x72, 0x6f, 0xaf, 0x76, - 0x41, 0xf4, 0x33, 0x09, 0xc0, 0x29, 0x14, 0xfa, 0x97, 0x2b, 0x30, 0xb5, 0xb8, 0xd3, 0xf5, 0x82, - 0x9e, 0x4f, 0x58, 0xd5, 0x53, 0x50, 0x9b, 0x1f, 0x85, 0xb1, 0x4d, 0xc3, 0xb5, 0x1c, 0xe2, 0x0b, - 0xee, 0x23, 0xc7, 0xf6, 0x26, 0x2f, 0xc6, 0x11, 0x1c, 0xbd, 0x06, 0x10, 0x98, 0x9b, 0xc4, 0xea, - 0x31, 0x09, 0x86, 0x6f, 0x92, 0x5b, 0x65, 0x78, 0x68, 0xe2, 0x1b, 0x5b, 0x12, 0xa5, 0xe0, 0xec, - 0xf2, 0x37, 0x56, 0xc8, 0xe9, 0xff, 0x59, 0x83, 0xb3, 0x89, 0x76, 0xa7, 0xa0, 0x0d, 0x6e, 0x24, - 0xb5, 0xc1, 0xf9, 0x81, 0xbf, 0xb5, 0x40, 0x09, 0xfc, 0xf9, 0x0a, 0xdc, 0x57, 0x30, 0x26, 0x19, - 0x1f, 0x03, 0xed, 0x94, 0x7c, 0x0c, 0x7a, 0x30, 0x11, 0x7a, 0x8e, 0xf0, 0x6e, 0x8c, 0x46, 0xa0, - 0x94, 0x07, 0xc1, 0x9a, 0x44, 0x13, 0x7b, 0x10, 0xc4, 0x65, 0x01, 0x56, 0xe9, 0xe8, 0xdf, 0xd4, - 0x60, 0x5c, 0x1a, 0x9d, 0x5e, 0x57, 0x17, 0x3f, 0x47, 0x78, 0x20, 0xf6, 0x9d, 0x0a, 0x5c, 0x94, - 0xb8, 0x23, 0x3d, 0xa1, 0x15, 0x52, 0xbe, 0x71, 0xb0, 0xe6, 0xfa, 0x80, 0x38, 0x87, 0x15, 0x59, - 0x40, 0x91, 0x14, 0xa8, 0xdc, 0xd4, 0xf3, 0xbb, 0x5e, 0x10, 0x89, 0x03, 0x5c, 0x6e, 0xe2, 0x45, - 0x38, 0x82, 0xa1, 0x15, 0x18, 0x09, 0x28, 0x3d, 0x71, 0x9a, 0x1c, 0x71, 0x34, 0x98, 0x44, 0xc3, - 0xfa, 0x8b, 0x39, 0x1a, 0xf4, 0x9a, 0x6a, 0x87, 0x18, 0x29, 0x6f, 0x1b, 0xa1, 0x5f, 0x62, 0x45, - 0x23, 0x92, 0xf3, 0x04, 0x23, 0xcf, 0x16, 0xa1, 0x2f, 0xc1, 0x8c, 0x70, 0x53, 0xe0, 0xcb, 0xc6, - 0x35, 0x09, 0x7a, 0x77, 0x62, 0x65, 0x3c, 0x9c, 0xba, 0xfa, 0x3d, 0x9f, 0xae, 0x1f, 0xaf, 0x18, - 0x3d, 0x80, 0xea, 0x0d, 0xd1, 0x49, 0x74, 0x19, 0x2a, 0x76, 0x34, 0x17, 0x20, 0x70, 0x54, 0x9a, - 0x0d, 0x5c, 0xb1, 0x2d, 0x29, 0x0f, 0x55, 0x0a, 0xa5, 0x36, 0xe5, 0x58, 0x1a, 0xea, 0x7f, 0x2c, - 0xe9, 0x7f, 0x56, 0x81, 0xf3, 0x11, 0xd5, 0xe8, 0x1b, 0x1b, 0xe2, 0xe2, 0xec, 0x00, 0xd9, 0xf0, - 0x60, 0x4b, 0xc6, 0x6d, 0x18, 0x66, 0x0c, 0xb0, 0xd4, 0x85, 0x9a, 0x44, 0x48, 0xbb, 0x83, 0x19, - 0x22, 0xf4, 0x11, 0x18, 0x75, 0x8c, 0x75, 0xe2, 0x44, 0xee, 0x61, 0xa5, 0xec, 0x3e, 0x79, 0x9f, - 0xcb, 0xcd, 0x91, 0x01, 0x77, 0x81, 0x97, 0xf7, 0x2c, 0xbc, 0x10, 0x0b, 0x9a, 0x97, 0x9f, 0x84, - 0x09, 0xa5, 0x1a, 0x9a, 0x81, 0xa1, 0x2d, 0xc2, 0x2f, 0x54, 0xc7, 0x31, 0xfd, 0x17, 0x9d, 0x87, - 0x91, 0x6d, 0xc3, 0xe9, 0x89, 0x21, 0xc1, 0xfc, 0xc7, 0x53, 0x95, 0x77, 0x6b, 0xfa, 0xd7, 0x35, - 0x98, 0xb8, 0x69, 0xaf, 0x13, 0x9f, 0xfb, 0x1a, 0x30, 0x55, 0x28, 0xf1, 0x3e, 0x77, 0x22, 0xef, - 0x6d, 0x2e, 0xda, 0x81, 0x71, 0x71, 0xd2, 0x48, 0x57, 0xd4, 0x1b, 0xe5, 0x6e, 0x6e, 0x25, 0x69, - 0xc1, 0xc1, 0xd5, 0xd7, 0x45, 0x11, 0x05, 0x1c, 0x13, 0xd3, 0x5f, 0x83, 0x73, 0x39, 0x8d, 0x50, - 0x8d, 0x6d, 0x5f, 0x3f, 0x14, 0xcb, 0x22, 0xda, 0x8f, 0x7e, 0x88, 0x79, 0x39, 0xba, 0x04, 0x43, - 0xc4, 0xb5, 0xc4, 0x9a, 0x18, 0xdb, 0xdf, 0xab, 0x0d, 0x2d, 0xba, 0x16, 0xa6, 0x65, 0x94, 0x4d, - 0x39, 0x5e, 0x42, 0x26, 0x61, 0x6c, 0x6a, 0x49, 0x94, 0x61, 0x09, 0x65, 0x77, 0xed, 0xe9, 0x6b, - 0x65, 0x2a, 0x9d, 0xce, 0x6c, 0xa4, 0x76, 0xcf, 0x20, 0xb7, 0xd9, 0xe9, 0x9d, 0xb8, 0x30, 0x2b, - 0x06, 0x24, 0xb3, 0xa7, 0x71, 0x86, 0xae, 0xfe, 0xaf, 0x87, 0xe1, 0xc1, 0x9b, 0x9e, 0x6f, 0xbf, - 0xea, 0xb9, 0xa1, 0xe1, 0xac, 0x7a, 0x56, 0xec, 0x55, 0x26, 0x98, 0xf2, 0xa7, 0x34, 0xb8, 0xcf, - 0xec, 0xf6, 0xb8, 0x74, 0x1b, 0x39, 0xfb, 0xac, 0x12, 0xdf, 0xf6, 0xca, 0x3a, 0x97, 0xb1, 0xf7, - 0xa4, 0xf5, 0xd5, 0x3b, 0x79, 0x28, 0x71, 0x11, 0x2d, 0xe6, 0xe3, 0x66, 0x79, 0x77, 0x5d, 0xd6, - 0xb9, 0x56, 0xc8, 0x46, 0xf3, 0xd5, 0x78, 0x12, 0x4a, 0xfa, 0xb8, 0x35, 0x72, 0x31, 0xe2, 0x02, - 0x4a, 0xe8, 0x63, 0x70, 0xc1, 0xe6, 0x9d, 0xc3, 0xc4, 0xb0, 0x6c, 0x97, 0x04, 0x01, 0xf3, 0xf4, - 0x1a, 0xc4, 0x89, 0xab, 0x99, 0x87, 0x10, 0xe7, 0xd3, 0x41, 0x2f, 0x01, 0x04, 0xbb, 0xae, 0x29, - 0xc6, 0x7f, 0xa4, 0x14, 0x55, 0x2e, 0x04, 0x4a, 0x2c, 0x58, 0xc1, 0x48, 0x35, 0xdc, 0x50, 0x2e, - 0xca, 0x51, 0xe6, 0x10, 0xc6, 0x34, 0xdc, 0x78, 0x0d, 0xc5, 0x70, 0xfd, 0x9f, 0x69, 0x30, 0x26, - 0x5e, 0x99, 0xa3, 0xb7, 0xa6, 0xac, 0x3c, 0x92, 0xf7, 0xa4, 0x2c, 0x3d, 0xbb, 0xec, 0x7e, 0x4e, - 0x58, 0xf8, 0x84, 0x28, 0x51, 0xca, 0x4c, 0x20, 0x08, 0xc7, 0xe6, 0xc2, 0xc4, 0x3d, 0x5d, 0x64, - 0x42, 0x54, 0x88, 0xe9, 0x5f, 0xd3, 0xe0, 0x6c, 0xa6, 0xd5, 0x21, 0xe4, 0x85, 0x53, 0x74, 0x7d, - 0xf9, 0xc6, 0x34, 0xb0, 0x80, 0x02, 0xf3, 0xab, 0xcd, 0x16, 0xf1, 0xb7, 0xe5, 0x26, 0xa4, 0x3c, - 0x23, 0x76, 0x71, 0x16, 0xbd, 0x18, 0x80, 0x67, 0xdc, 0x4a, 0xe1, 0x8a, 0x79, 0x46, 0x1a, 0x82, - 0x33, 0x74, 0xd1, 0x67, 0x35, 0x98, 0x31, 0x92, 0x01, 0x05, 0x22, 0xa6, 0x5e, 0xea, 0xf9, 0x5b, - 0x2a, 0x38, 0x41, 0xdc, 0x97, 0x14, 0x20, 0xc0, 0x19, 0xb2, 0xe8, 0x09, 0x98, 0x34, 0xba, 0xf6, - 0x7c, 0xcf, 0xb2, 0xa9, 0x98, 0x13, 0xbd, 0x2d, 0x67, 0xa2, 0xf7, 0xfc, 0x6a, 0x53, 0x96, 0xe3, - 0x44, 0x2d, 0x19, 0x07, 0x40, 0x0c, 0xe4, 0xf0, 0x80, 0x71, 0x00, 0xc4, 0x18, 0xc6, 0x71, 0x00, - 0xc4, 0xd0, 0xa9, 0x44, 0xd0, 0x87, 0xe0, 0x12, 0x3f, 0x0d, 0x17, 0x8c, 0xc0, 0x36, 0xe7, 0x7b, - 0xe1, 0x26, 0x71, 0xc3, 0x48, 0xb5, 0xe5, 0xd7, 0x0d, 0xcc, 0xdb, 0x75, 0xb1, 0xa8, 0x12, 0x2e, - 0x6e, 0x8f, 0x5c, 0x00, 0xcf, 0xb6, 0x4c, 0xf1, 0x3d, 0xfc, 0x4e, 0xa2, 0x94, 0x2a, 0x71, 0xbb, - 0xd9, 0xa8, 0x8b, 0xcf, 0x61, 0x6c, 0x22, 0xfe, 0x8d, 0x15, 0x0a, 0xe8, 0x4b, 0x1a, 0x4c, 0x89, - 0x45, 0x2e, 0x68, 0x8e, 0xb1, 0xf9, 0x7f, 0xb1, 0xec, 0x62, 0x4c, 0x2d, 0xf8, 0x39, 0xac, 0x22, - 0xe7, 0xd2, 0x8c, 0x74, 0xbf, 0x4f, 0xc0, 0x70, 0xb2, 0x1f, 0xe8, 0x1f, 0x68, 0x70, 0x3e, 0x20, - 0xfe, 0xb6, 0x6d, 0x92, 0x79, 0xd3, 0xf4, 0x7a, 0x6e, 0x34, 0xc9, 0xd5, 0xf2, 0x6f, 0xb2, 0x5b, - 0x39, 0xf8, 0xb8, 0xdf, 0x67, 0x1e, 0x04, 0xe7, 0xd2, 0xa7, 0xe7, 0xd7, 0x99, 0xbb, 0x46, 0x68, - 0x6e, 0xd6, 0x0d, 0x73, 0x93, 0x19, 0x15, 0xb9, 0xab, 0x67, 0xc9, 0x4d, 0xf3, 0x7c, 0x12, 0x15, - 0xbf, 0x53, 0x4b, 0x15, 0xe2, 0x34, 0x41, 0x14, 0x40, 0xd5, 0x27, 0xaf, 0xf4, 0x48, 0xc0, 0xfc, - 0x41, 0x29, 0xf1, 0xe6, 0xc0, 0x33, 0x86, 0x05, 0x42, 0x2e, 0x05, 0x45, 0xbf, 0xb0, 0x24, 0x84, - 0xda, 0xf0, 0x20, 0x5f, 0xb9, 0xf3, 0xae, 0xe7, 0xee, 0x76, 0xbc, 0x5e, 0x90, 0x5a, 0xfd, 0x13, - 0x6c, 0xf5, 0x33, 0x8f, 0xd7, 0xc5, 0x7e, 0x15, 0x71, 0x7f, 0x3c, 0xe8, 0x05, 0xa8, 0x92, 0x6d, - 0xe2, 0x86, 0x6b, 0x6b, 0x4b, 0xb3, 0x93, 0xa5, 0x8e, 0x46, 0xf6, 0x09, 0x8b, 0x02, 0x07, 0x96, - 0xd8, 0x90, 0x07, 0x63, 0x8e, 0xd7, 0x6e, 0xdb, 0x6e, 0x7b, 0x76, 0xaa, 0xfc, 0x3a, 0x4a, 0x0c, - 0xdb, 0x12, 0xc7, 0xc7, 0x05, 0x66, 0xf1, 0x03, 0x47, 0x54, 0x50, 0x17, 0xae, 0x5a, 0x64, 0xc3, - 0xe8, 0x39, 0xe1, 0x8a, 0x17, 0x52, 0x19, 0x60, 0x37, 0x56, 0xe8, 0x23, 0x47, 0xe1, 0x69, 0xf6, - 0x8c, 0xf2, 0xe1, 0xfd, 0xbd, 0xda, 0xd5, 0xc6, 0x01, 0x75, 0xf1, 0x81, 0xd8, 0xd0, 0x2e, 0x3c, - 0x24, 0xea, 0xdc, 0x71, 0x7d, 0x62, 0x98, 0x9b, 0x74, 0xa4, 0xb3, 0x44, 0xcf, 0x30, 0xa2, 0x7f, - 0x6b, 0x7f, 0xaf, 0xf6, 0x50, 0xe3, 0xe0, 0xea, 0xf8, 0x30, 0x38, 0x2f, 0xbf, 0x1f, 0x50, 0x76, - 0xbf, 0x1f, 0xa4, 0x96, 0x54, 0x55, 0xb5, 0xe4, 0x97, 0x34, 0x38, 0x9f, 0x37, 0xba, 0x54, 0x9e, - 0xd9, 0x26, 0xfe, 0xba, 0x17, 0x44, 0x2e, 0xa3, 0x23, 0x5c, 0x9e, 0x79, 0x2e, 0x2a, 0xc4, 0x31, - 0x1c, 0x35, 0xe1, 0xdc, 0x66, 0x18, 0x76, 0xe7, 0x4d, 0x93, 0x04, 0x81, 0xac, 0xc1, 0xa8, 0x8d, - 0xf0, 0x60, 0x3f, 0x37, 0xd7, 0xd6, 0x56, 0x53, 0x60, 0x9c, 0xd7, 0x46, 0xff, 0x5d, 0x0d, 0x2e, - 0xe4, 0xee, 0x12, 0x84, 0xe1, 0x22, 0xf3, 0x0b, 0x77, 0x97, 0x7b, 0xa1, 0x11, 0xda, 0x6e, 0xbb, - 0xe9, 0x6e, 0x38, 0x76, 0x7b, 0x33, 0x14, 0xdd, 0x63, 0x62, 0xe9, 0x72, 0x6e, 0x0d, 0x5c, 0xd0, - 0x92, 0x76, 0xbc, 0x63, 0xec, 0x64, 0x10, 0x2a, 0x1d, 0x5f, 0xce, 0x82, 0x71, 0x5e, 0x1b, 0xfd, - 0x2b, 0x23, 0x70, 0x3f, 0xed, 0x78, 0x2c, 0x21, 0x2d, 0x1b, 0xae, 0xd1, 0x7e, 0x7d, 0x4a, 0x22, - 0x5f, 0xd7, 0xe0, 0xbe, 0xcd, 0x7c, 0xed, 0x45, 0xc8, 0x68, 0xcf, 0x96, 0xd2, 0x32, 0xfb, 0x29, - 0x44, 0x9c, 0x4f, 0xf5, 0xad, 0x82, 0x8b, 0x3a, 0x85, 0xde, 0x0f, 0x33, 0xae, 0x67, 0x91, 0x7a, - 0xb3, 0x81, 0x97, 0x8d, 0x60, 0xab, 0x15, 0x5d, 0x3a, 0x8d, 0x70, 0x1f, 0x85, 0x95, 0x14, 0x0c, - 0x67, 0x6a, 0xa3, 0x6d, 0x40, 0x5d, 0xcf, 0x5a, 0xdc, 0xb6, 0xcd, 0xe8, 0xba, 0xa3, 0xbc, 0x5f, - 0x04, 0xbb, 0x53, 0x59, 0xcd, 0x60, 0xc3, 0x39, 0x14, 0x98, 0xfa, 0x45, 0x3b, 0xb3, 0xec, 0xb9, - 0x76, 0xe8, 0xf9, 0xec, 0xdd, 0xc1, 0x40, 0x5a, 0x08, 0x5b, 0xe7, 0x2b, 0xb9, 0x18, 0x71, 0x01, - 0x25, 0xfd, 0x7f, 0x6b, 0x70, 0x86, 0x2e, 0x8b, 0x55, 0xdf, 0xdb, 0xd9, 0x7d, 0x3d, 0x2e, 0xc8, - 0x47, 0xc5, 0xfd, 0x3b, 0x37, 0x1b, 0x5c, 0x50, 0xee, 0xde, 0xc7, 0x59, 0x9f, 0xe3, 0xeb, 0x76, - 0xd5, 0x72, 0x32, 0x54, 0x6c, 0x39, 0xd1, 0xbf, 0x54, 0xe1, 0x1a, 0x41, 0x64, 0xb9, 0x78, 0x5d, - 0xee, 0xc3, 0x77, 0xc1, 0x14, 0x2d, 0x5b, 0x36, 0x76, 0x56, 0x1b, 0xcf, 0x79, 0x4e, 0xf4, 0xf4, - 0x83, 0xb9, 0x73, 0xde, 0x52, 0x01, 0x38, 0x59, 0x0f, 0x3d, 0x05, 0x63, 0x5d, 0xfe, 0xc0, 0x54, - 0x58, 0x52, 0xae, 0xf2, 0x4b, 0x6a, 0x56, 0x74, 0x6f, 0xaf, 0x76, 0x36, 0xb6, 0xd3, 0x8b, 0x42, - 0x1c, 0x35, 0xd0, 0xbf, 0x70, 0x1e, 0x18, 0x72, 0x87, 0x84, 0xaf, 0xc7, 0x31, 0x79, 0x0c, 0x26, - 0xcc, 0x6e, 0xaf, 0x7e, 0xbd, 0xf5, 0x6c, 0xcf, 0x0b, 0x0d, 0x71, 0x07, 0xcf, 0x54, 0x84, 0xfa, - 0xea, 0x9d, 0xa8, 0x18, 0xab, 0x75, 0x28, 0x77, 0x30, 0xbb, 0x3d, 0xc1, 0x6f, 0x57, 0x55, 0x9f, - 0x46, 0xc6, 0x1d, 0xea, 0xab, 0x77, 0x12, 0x30, 0x9c, 0xa9, 0x8d, 0x3e, 0x06, 0x93, 0x44, 0x6c, - 0xdc, 0x9b, 0x86, 0x6f, 0x09, 0xbe, 0x50, 0x5a, 0xc6, 0x93, 0x43, 0x1b, 0x71, 0x03, 0xae, 0x59, - 0x2d, 0x2a, 0x24, 0x70, 0x82, 0x20, 0xd3, 0x72, 0xc4, 0x6f, 0x3a, 0xcb, 0x9e, 0x95, 0x66, 0x14, - 0x23, 0x42, 0xcb, 0x29, 0xaa, 0x84, 0x8b, 0xdb, 0xa3, 0x7f, 0xaa, 0xc1, 0x45, 0x09, 0xb5, 0x5d, - 0xbb, 0xd3, 0xeb, 0x60, 0x62, 0x3a, 0x86, 0xdd, 0x11, 0x2a, 0xcf, 0xf3, 0xc7, 0xf6, 0xa1, 0x49, - 0xf4, 0x9c, 0x59, 0xe5, 0xc3, 0x70, 0x41, 0x97, 0xd0, 0xd7, 0x34, 0xb8, 0x1a, 0x81, 0x56, 0x7d, - 0x12, 0x04, 0x3d, 0x9f, 0xc4, 0x0f, 0x8f, 0xc4, 0x90, 0x8c, 0x95, 0xe2, 0x9d, 0x4c, 0xe6, 0x5b, - 0x3c, 0x00, 0x37, 0x3e, 0x90, 0xba, 0xba, 0x5c, 0x5a, 0xde, 0x46, 0x28, 0x74, 0xa4, 0x93, 0x5a, - 0x2e, 0x94, 0x04, 0x4e, 0x10, 0x44, 0xbf, 0xad, 0xc1, 0x7d, 0x6a, 0x81, 0xba, 0x5a, 0xb8, 0x72, - 0xf4, 0xc2, 0xb1, 0x75, 0x26, 0x85, 0x9f, 0x9b, 0x21, 0x0b, 0x80, 0xb8, 0xa8, 0x57, 0x94, 0x6d, - 0x77, 0xd8, 0xc2, 0xe4, 0x0a, 0xd4, 0x08, 0x67, 0xdb, 0x7c, 0xad, 0x06, 0x38, 0x82, 0xa1, 0x27, - 0x60, 0xb2, 0xeb, 0x59, 0xab, 0xb6, 0x15, 0x2c, 0xd9, 0x1d, 0x3b, 0x64, 0x2a, 0xce, 0x10, 0x1f, - 0x8e, 0x55, 0xcf, 0x5a, 0x6d, 0x36, 0x78, 0x39, 0x4e, 0xd4, 0x62, 0x4f, 0x68, 0xed, 0x8e, 0xd1, - 0x26, 0xab, 0x3d, 0xc7, 0x59, 0xf5, 0x3d, 0x66, 0xab, 0x6a, 0x10, 0xc3, 0x72, 0x6c, 0x97, 0x94, - 0x54, 0x69, 0xd8, 0x76, 0x6b, 0x16, 0x21, 0xc5, 0xc5, 0xf4, 0xd0, 0x1c, 0xc0, 0x86, 0x61, 0x3b, - 0xad, 0xbb, 0x46, 0xf7, 0xb6, 0xcb, 0xf4, 0x9e, 0x2a, 0x37, 0x0a, 0x5c, 0x97, 0xa5, 0x58, 0xa9, - 0x41, 0x57, 0x13, 0xe5, 0x82, 0x98, 0xf0, 0xd0, 0x2d, 0x4c, 0x3f, 0x39, 0x8e, 0xd5, 0x14, 0x21, - 0xe4, 0xc3, 0x77, 0x4b, 0x21, 0x81, 0x13, 0x04, 0xd1, 0xa7, 0x34, 0x98, 0x0e, 0x76, 0x83, 0x90, - 0x74, 0x64, 0x1f, 0xce, 0x1c, 0x77, 0x1f, 0x98, 0x15, 0xaf, 0x95, 0x20, 0x82, 0x53, 0x44, 0x91, - 0x01, 0xf7, 0xb3, 0x51, 0xbd, 0x51, 0xbf, 0x69, 0xb7, 0x37, 0xe5, 0xc3, 0xd8, 0x55, 0xe2, 0x9b, - 0xc4, 0x0d, 0x67, 0x67, 0xd8, 0xba, 0x61, 0x5e, 0x1c, 0xcd, 0xe2, 0x6a, 0xb8, 0x1f, 0x0e, 0xf4, - 0x12, 0x5c, 0x16, 0xe0, 0x25, 0xef, 0x6e, 0x86, 0xc2, 0x59, 0x46, 0x81, 0x79, 0xad, 0x34, 0x0b, - 0x6b, 0xe1, 0x3e, 0x18, 0xa8, 0x46, 0x11, 0x10, 0x9f, 0x19, 0xe1, 0x89, 0x5c, 0x3c, 0xc1, 0x2c, - 0x62, 0x8b, 0x80, 0x69, 0x14, 0xad, 0x2c, 0x18, 0xe7, 0xb5, 0x41, 0x4f, 0xcb, 0x87, 0x2c, 0xbb, - 0xb4, 0xe0, 0xd9, 0xd5, 0xd6, 0xec, 0x39, 0xd6, 0xbf, 0x73, 0xca, 0xfb, 0x94, 0x08, 0x84, 0xd3, - 0x75, 0xa9, 0x6c, 0x11, 0x15, 0x2d, 0xf4, 0xfc, 0x20, 0x9c, 0x3d, 0xcf, 0x1a, 0x33, 0xd9, 0x02, - 0xab, 0x00, 0x9c, 0xac, 0x87, 0x9e, 0x82, 0xe9, 0x80, 0x98, 0xa6, 0xd7, 0xe9, 0x0a, 0x45, 0x75, - 0xf6, 0x02, 0xeb, 0x3d, 0x9f, 0xc1, 0x04, 0x04, 0xa7, 0x6a, 0xa2, 0x5d, 0x38, 0x27, 0x03, 0x99, - 0x2c, 0x79, 0xed, 0x65, 0x63, 0x87, 0x89, 0xea, 0x17, 0x0f, 0xde, 0x81, 0x73, 0xd1, 0xad, 0xea, - 0xdc, 0xb3, 0x3d, 0xc3, 0x0d, 0xed, 0x70, 0x97, 0x0f, 0x57, 0x3d, 0x8b, 0x0e, 0xe7, 0xd1, 0x40, - 0x4b, 0x70, 0x3e, 0x55, 0x7c, 0xdd, 0x76, 0x48, 0x30, 0x7b, 0x1f, 0xfb, 0x6c, 0x66, 0x75, 0xaa, - 0xe7, 0xc0, 0x71, 0x6e, 0x2b, 0x74, 0x1b, 0x2e, 0x74, 0x7d, 0x2f, 0x24, 0x66, 0x78, 0x8b, 0x8a, - 0x27, 0x8e, 0xf8, 0xc0, 0x60, 0x76, 0x96, 0x8d, 0x05, 0xbb, 0x80, 0x58, 0xcd, 0xab, 0x80, 0xf3, - 0xdb, 0xa1, 0xaf, 0x68, 0x70, 0x25, 0x08, 0x7d, 0x62, 0x74, 0x6c, 0xb7, 0x5d, 0xf7, 0x5c, 0x97, - 0x30, 0x36, 0xd9, 0xb4, 0x62, 0x27, 0xed, 0x4b, 0xa5, 0xf8, 0x94, 0xbe, 0xbf, 0x57, 0xbb, 0xd2, - 0xea, 0x8b, 0x19, 0x1f, 0x40, 0x59, 0xdf, 0xab, 0x70, 0xad, 0x3b, 0xc3, 0xfb, 0xe9, 0x22, 0xec, - 0x90, 0x8e, 0xe7, 0xef, 0xce, 0x47, 0x71, 0x45, 0x85, 0xc1, 0x9f, 0x2d, 0xc2, 0xe5, 0x24, 0x08, - 0xa7, 0xeb, 0x52, 0xc9, 0x8c, 0x6d, 0x96, 0xeb, 0xad, 0xb8, 0x7d, 0x25, 0x96, 0xcc, 0x9a, 0x29, - 0x18, 0xce, 0xd4, 0x46, 0x75, 0x38, 0x2b, 0xca, 0x9a, 0x54, 0xb9, 0x09, 0xae, 0xfb, 0x24, 0x92, - 0x79, 0xa9, 0x9a, 0x70, 0xb6, 0x99, 0x06, 0xe2, 0x6c, 0x7d, 0xfa, 0x15, 0xf4, 0x87, 0xda, 0x8b, - 0xe1, 0xf8, 0x2b, 0x56, 0x92, 0x20, 0x9c, 0xae, 0x1b, 0x69, 0x9f, 0x89, 0x2e, 0x8c, 0xc4, 0x5f, - 0xb1, 0x92, 0x82, 0xe1, 0x4c, 0x6d, 0xfd, 0xbf, 0x0c, 0xc3, 0x43, 0x87, 0x90, 0x97, 0x50, 0x27, - 0x7f, 0xb8, 0x8f, 0xbe, 0x77, 0x0e, 0x37, 0x3d, 0xdd, 0x82, 0xe9, 0x39, 0x3a, 0xbd, 0xc3, 0x4e, - 0x67, 0x50, 0x34, 0x9d, 0x47, 0x27, 0x79, 0xf8, 0xe9, 0xef, 0xe4, 0x4f, 0x7f, 0xc9, 0x51, 0x3d, - 0x70, 0xb9, 0x74, 0x0b, 0x96, 0x4b, 0xc9, 0x51, 0x3d, 0xc4, 0xf2, 0xfa, 0xc1, 0x30, 0x3c, 0x7c, - 0x18, 0xd9, 0xad, 0xe4, 0xfa, 0xca, 0xe1, 0x3a, 0x27, 0xba, 0xbe, 0x8a, 0x9e, 0xa2, 0x9c, 0xe0, - 0xfa, 0xca, 0x21, 0x79, 0xd2, 0xeb, 0xab, 0x68, 0x54, 0x4f, 0x6a, 0x7d, 0x15, 0x8d, 0xea, 0x21, - 0xd6, 0xd7, 0x5f, 0xa6, 0xcf, 0x07, 0x29, 0xb2, 0x35, 0x61, 0xc8, 0xec, 0xf6, 0x4a, 0x32, 0x29, - 0xe6, 0x1e, 0x52, 0x5f, 0xbd, 0x83, 0x29, 0x0e, 0x84, 0x61, 0x94, 0xaf, 0x9f, 0x92, 0x2c, 0x88, - 0xbd, 0x8f, 0xe0, 0x4b, 0x12, 0x0b, 0x4c, 0x74, 0xa8, 0x48, 0x77, 0x93, 0x74, 0x88, 0x6f, 0x38, - 0xad, 0xd0, 0xf3, 0x8d, 0x76, 0x59, 0x6e, 0xc3, 0x86, 0x6a, 0x31, 0x85, 0x0b, 0x67, 0xb0, 0xd3, - 0x01, 0xe9, 0xda, 0x56, 0x49, 0xfe, 0xc2, 0x06, 0x64, 0xb5, 0xd9, 0xc0, 0x14, 0x87, 0xfe, 0x8f, - 0xc7, 0x41, 0x89, 0xd5, 0x85, 0x3e, 0x04, 0x97, 0x0c, 0xc7, 0xf1, 0xee, 0xae, 0xfa, 0xf6, 0xb6, - 0xed, 0x90, 0x36, 0xb1, 0xa4, 0x3c, 0x13, 0x08, 0x27, 0x22, 0xa6, 0xb3, 0xcc, 0x17, 0x55, 0xc2, - 0xc5, 0xed, 0xd1, 0xe7, 0x34, 0x38, 0x6b, 0xa6, 0xe3, 0x23, 0x0d, 0xe2, 0x66, 0x90, 0x09, 0xb6, - 0xc4, 0xf7, 0x53, 0xa6, 0x18, 0x67, 0xc9, 0xa2, 0x9f, 0xd3, 0xb8, 0x5d, 0x4c, 0x5e, 0x02, 0x88, - 0x39, 0xbb, 0x71, 0x4c, 0xb7, 0xa4, 0xb1, 0x81, 0x2d, 0xbe, 0x66, 0x48, 0x12, 0x44, 0x5f, 0xd3, - 0xe0, 0xc2, 0x56, 0x9e, 0x39, 0x5f, 0xcc, 0xec, 0xed, 0xb2, 0x5d, 0x29, 0xb8, 0x1f, 0xe0, 0x12, - 0x65, 0x6e, 0x05, 0x9c, 0xdf, 0x11, 0x39, 0x4a, 0xd2, 0xc2, 0x29, 0x98, 0x40, 0xe9, 0x51, 0x4a, - 0x99, 0x4a, 0xe3, 0x51, 0x92, 0x00, 0x9c, 0x24, 0x88, 0xba, 0x30, 0xbe, 0x15, 0x99, 0x95, 0x85, - 0x29, 0xa9, 0x5e, 0x96, 0xba, 0x62, 0x9b, 0xe6, 0x57, 0x4d, 0xb2, 0x10, 0xc7, 0x44, 0xd0, 0x26, - 0x8c, 0x6d, 0x71, 0x46, 0x24, 0x4c, 0x40, 0xf3, 0x03, 0xab, 0xa8, 0xdc, 0x12, 0x21, 0x8a, 0x70, - 0x84, 0x5e, 0xf5, 0xa1, 0xac, 0x1e, 0xe0, 0xda, 0xff, 0x15, 0x0d, 0x2e, 0x6c, 0x13, 0x3f, 0xb4, - 0xcd, 0xf4, 0x65, 0xca, 0x78, 0x79, 0x35, 0xfa, 0xb9, 0x3c, 0x84, 0x7c, 0x99, 0xe4, 0x82, 0x70, - 0x7e, 0x17, 0xa8, 0x52, 0xcd, 0x6d, 0xe2, 0xad, 0xd0, 0x08, 0x6d, 0x73, 0xcd, 0xdb, 0x22, 0x2e, - 0xfd, 0x58, 0x91, 0xa5, 0x02, 0x18, 0xe3, 0x60, 0x4a, 0xf5, 0x62, 0x71, 0x35, 0xdc, 0x0f, 0x87, - 0xfe, 0x63, 0x0d, 0x32, 0x96, 0x5d, 0xf4, 0x05, 0x0d, 0x26, 0x37, 0x88, 0x11, 0xf6, 0x7c, 0x72, - 0xc3, 0x08, 0xe5, 0x23, 0xe1, 0xe7, 0x8e, 0xc3, 0xa0, 0x3c, 0x77, 0x5d, 0x41, 0xcc, 0xbd, 0x1c, - 0x64, 0x9c, 0x3f, 0x15, 0x84, 0x13, 0x3d, 0xb8, 0xfc, 0x0c, 0x9c, 0xcd, 0x34, 0x3c, 0xd2, 0x75, - 0xe9, 0xbf, 0xd1, 0x20, 0x2f, 0x6f, 0x09, 0x7a, 0x09, 0x46, 0x0c, 0xcb, 0x92, 0x61, 0xcd, 0x9f, - 0x2c, 0xe7, 0xcd, 0x63, 0xa9, 0x6f, 0xb1, 0xd9, 0x4f, 0xcc, 0xd1, 0xa2, 0xeb, 0x80, 0x8c, 0xc4, - 0x95, 0xfd, 0x72, 0xfc, 0x58, 0x91, 0x5d, 0x46, 0xcd, 0x67, 0xa0, 0x38, 0xa7, 0x85, 0xfe, 0xf3, - 0x1a, 0xa0, 0x6c, 0x64, 0x48, 0xe4, 0x43, 0x55, 0x2c, 0xe5, 0x68, 0x96, 0x1a, 0x25, 0x1f, 0x14, - 0x24, 0x5e, 0xc7, 0xc4, 0x2f, 0x18, 0x44, 0x41, 0x80, 0x25, 0x1d, 0xfd, 0xaf, 0x34, 0x88, 0x43, - 0x1f, 0xa3, 0x77, 0xc2, 0x84, 0x45, 0x02, 0xd3, 0xb7, 0xbb, 0x61, 0xfc, 0x96, 0x46, 0xfa, 0xe4, - 0x37, 0x62, 0x10, 0x56, 0xeb, 0x21, 0x1d, 0x46, 0x43, 0x23, 0xd8, 0x6a, 0x36, 0x84, 0x52, 0xc9, - 0x44, 0x80, 0x35, 0x56, 0x82, 0x05, 0x24, 0x8e, 0xf2, 0x34, 0x74, 0x88, 0x28, 0x4f, 0x68, 0xe3, - 0x18, 0x42, 0x5a, 0xa1, 0x83, 0xc3, 0x59, 0xe9, 0xbf, 0x51, 0x81, 0x33, 0xb4, 0xca, 0xb2, 0x61, - 0xbb, 0x21, 0x71, 0x99, 0xe7, 0x78, 0xc9, 0x41, 0x68, 0xc3, 0x54, 0x98, 0x78, 0x19, 0x75, 0xf4, - 0x77, 0x45, 0xd2, 0x45, 0x28, 0xf9, 0x1e, 0x2a, 0x89, 0x17, 0x3d, 0x19, 0xb9, 0xee, 0x73, 0xf5, - 0xfb, 0xa1, 0x68, 0xa9, 0x32, 0x7f, 0xfc, 0x7b, 0xe2, 0x99, 0x99, 0x8c, 0x97, 0x9d, 0xf0, 0xd2, - 0x7f, 0x17, 0x4c, 0x09, 0x17, 0x5a, 0x1e, 0xae, 0x4b, 0xa8, 0xdf, 0xec, 0x84, 0xb9, 0xae, 0x02, - 0x70, 0xb2, 0x9e, 0xfe, 0xbd, 0x0a, 0x24, 0xa3, 0x72, 0x97, 0x1d, 0xa5, 0x6c, 0xac, 0xb2, 0xca, - 0x89, 0xc5, 0x2a, 0x7b, 0x3b, 0x4b, 0x69, 0xc1, 0xb3, 0x15, 0xf1, 0x5b, 0x6a, 0x35, 0x11, 0x05, - 0xcf, 0x35, 0x24, 0x6b, 0xc4, 0xc3, 0x3a, 0x7c, 0xe4, 0x61, 0x7d, 0xa7, 0xf0, 0xc0, 0x1f, 0x49, - 0x44, 0x8c, 0x8b, 0xde, 0x1a, 0x9c, 0x4d, 0x34, 0x54, 0x1e, 0x1a, 0x7c, 0x5b, 0x83, 0x31, 0x11, - 0x0e, 0xf5, 0x10, 0x0f, 0x59, 0x36, 0x60, 0x84, 0xa9, 0x3c, 0x83, 0x48, 0x83, 0xad, 0x4d, 0xcf, - 0x0b, 0x13, 0x41, 0x61, 0x99, 0xe7, 0x38, 0xfb, 0x17, 0x73, 0xf4, 0xcc, 0x25, 0xd1, 0x37, 0x37, - 0xed, 0x90, 0x98, 0x61, 0x14, 0x6a, 0x32, 0x72, 0x49, 0x54, 0xca, 0x71, 0xa2, 0x96, 0xfe, 0xd5, - 0x61, 0xb8, 0x2a, 0x10, 0x67, 0x44, 0x24, 0xc9, 0xe0, 0x76, 0xe1, 0x9c, 0x98, 0xdb, 0x86, 0x6f, - 0xd8, 0xf2, 0xf6, 0xbf, 0x9c, 0xea, 0x2b, 0xfc, 0x42, 0x32, 0xe8, 0x70, 0x1e, 0x0d, 0x1e, 0x34, - 0x91, 0x15, 0xdf, 0x24, 0x86, 0x13, 0x6e, 0x46, 0xb4, 0x2b, 0x83, 0x04, 0x4d, 0xcc, 0xe2, 0xc3, - 0xb9, 0x54, 0x98, 0xf7, 0x81, 0x00, 0xd4, 0x7d, 0x62, 0xa8, 0xae, 0x0f, 0x03, 0x38, 0x7f, 0x2f, - 0xe7, 0x62, 0xc4, 0x05, 0x94, 0x98, 0x0d, 0xd1, 0xd8, 0x61, 0x26, 0x09, 0x4c, 0x42, 0xdf, 0x66, - 0xc1, 0x7d, 0xa5, 0x21, 0x7b, 0x39, 0x09, 0xc2, 0xe9, 0xba, 0xe8, 0x29, 0x98, 0x66, 0xde, 0x1c, - 0x71, 0x74, 0xa2, 0x91, 0xf8, 0x2d, 0xfd, 0x4a, 0x02, 0x82, 0x53, 0x35, 0xf5, 0xdf, 0xd4, 0x60, - 0x52, 0x5d, 0x76, 0x87, 0x78, 0xd5, 0xd2, 0x53, 0x0e, 0xc3, 0x01, 0x5e, 0x5c, 0xa8, 0x54, 0x0f, - 0x73, 0x1e, 0x7e, 0x7e, 0x08, 0xce, 0xe5, 0xb4, 0x61, 0x77, 0xf3, 0x24, 0x75, 0xb0, 0x0e, 0x72, - 0x37, 0x9f, 0x39, 0xa4, 0xe5, 0xdd, 0x7c, 0x1a, 0x82, 0x33, 0x74, 0xd1, 0x73, 0x30, 0x64, 0xfa, - 0xb6, 0x18, 0x96, 0x77, 0x95, 0x52, 0x0b, 0x71, 0x73, 0x61, 0x42, 0x50, 0x1c, 0xaa, 0xe3, 0x26, - 0xa6, 0x08, 0xe9, 0xf1, 0xa0, 0x6e, 0xea, 0xe8, 0xac, 0x66, 0xc7, 0x83, 0xba, 0xf7, 0x03, 0x9c, - 0xac, 0x87, 0x5e, 0x80, 0x59, 0x21, 0xaf, 0x47, 0xef, 0x58, 0x3d, 0x37, 0x08, 0xe9, 0xfe, 0x0b, - 0x05, 0x3b, 0x7d, 0x60, 0x7f, 0xaf, 0x36, 0x7b, 0xab, 0xa0, 0x0e, 0x2e, 0x6c, 0xad, 0xff, 0xc5, - 0x10, 0x4c, 0x28, 0x21, 0xa3, 0xd1, 0xf2, 0x20, 0x86, 0x8e, 0xf8, 0x8b, 0x23, 0x63, 0xc7, 0x32, - 0x0c, 0xb5, 0xbb, 0xbd, 0x92, 0x96, 0x0e, 0x89, 0xee, 0x06, 0x45, 0xd7, 0xee, 0xf6, 0xd0, 0x73, - 0xd2, 0x76, 0x52, 0xce, 0xba, 0x21, 0x5f, 0x1d, 0xa4, 0xec, 0x27, 0xd1, 0x76, 0x19, 0x2e, 0xdc, - 0x2e, 0x1d, 0x18, 0x0b, 0x84, 0x61, 0x65, 0xa4, 0x7c, 0xe4, 0x10, 0x65, 0xa4, 0x85, 0x21, 0x85, - 0x6b, 0x65, 0x91, 0x9d, 0x25, 0xa2, 0x41, 0x25, 0xbe, 0x1e, 0x7b, 0xcb, 0xc8, 0xd4, 0xcd, 0x2a, - 0x97, 0xf8, 0xee, 0xb0, 0x12, 0x2c, 0x20, 0x99, 0x83, 0x64, 0xec, 0x50, 0x07, 0xc9, 0x67, 0x2a, - 0x80, 0xb2, 0xdd, 0x40, 0x0f, 0xc1, 0x08, 0x7b, 0x0b, 0x2d, 0x38, 0x86, 0x94, 0xcf, 0xd9, 0x6b, - 0x58, 0xcc, 0x61, 0xa8, 0x25, 0xe2, 0x20, 0x94, 0x9b, 0x4e, 0xe6, 0xdc, 0x22, 0xe8, 0x29, 0x41, - 0x13, 0xa2, 0x93, 0x79, 0xa8, 0xf0, 0x64, 0xbe, 0x03, 0x63, 0x1d, 0xdb, 0x65, 0x37, 0x6c, 0xe5, - 0xec, 0x4d, 0xfc, 0x0e, 0x9e, 0xa3, 0xc0, 0x11, 0x2e, 0xfd, 0x07, 0x15, 0xba, 0xf4, 0x63, 0xb9, - 0x74, 0x17, 0xc0, 0xe8, 0x85, 0x1e, 0x17, 0x70, 0xc4, 0x0e, 0x68, 0x96, 0x9b, 0x65, 0x89, 0x74, - 0x5e, 0x22, 0xe4, 0x57, 0xe3, 0xf1, 0x6f, 0xac, 0x10, 0xa3, 0xa4, 0x43, 0xbb, 0x43, 0x9e, 0xb7, - 0x5d, 0xcb, 0xbb, 0x2b, 0x86, 0x77, 0x50, 0xd2, 0x6b, 0x12, 0x21, 0x27, 0x1d, 0xff, 0xc6, 0x0a, - 0x31, 0xca, 0x5a, 0x98, 0x7a, 0xeb, 0xb2, 0x18, 0xfe, 0xa2, 0x6f, 0x9e, 0xe3, 0x44, 0x67, 0x67, - 0x95, 0xb3, 0x96, 0x7a, 0x41, 0x1d, 0x5c, 0xd8, 0x5a, 0xff, 0x6d, 0x0d, 0x2e, 0xe4, 0x0e, 0x05, - 0xba, 0x01, 0x67, 0x63, 0x7f, 0x28, 0x95, 0xd9, 0x57, 0xe3, 0xdc, 0x11, 0xb7, 0xd2, 0x15, 0x70, - 0xb6, 0x0d, 0x5a, 0x96, 0x02, 0x8f, 0x7a, 0x98, 0x08, 0x67, 0xaa, 0xfb, 0x05, 0xaa, 0xbc, 0xf3, - 0x06, 0xe7, 0xb5, 0xd3, 0x3f, 0x94, 0xe8, 0x70, 0x3c, 0x60, 0x74, 0x77, 0xac, 0x93, 0xb6, 0x7c, - 0xbc, 0x24, 0x77, 0xc7, 0x02, 0x2d, 0xc4, 0x1c, 0x86, 0x1e, 0x54, 0x9f, 0x04, 0x4a, 0xde, 0x15, - 0x3d, 0x0b, 0xd4, 0x43, 0x00, 0xe1, 0xb2, 0x68, 0xbb, 0x6d, 0xb4, 0x01, 0x55, 0x43, 0xa4, 0xb0, - 0x14, 0x4b, 0xed, 0xbd, 0xa5, 0xb4, 0x69, 0x81, 0x83, 0x7b, 0xa6, 0x47, 0xbf, 0xb0, 0xc4, 0xad, - 0xff, 0x13, 0x0d, 0x2e, 0xe6, 0xbf, 0xf9, 0x3d, 0x84, 0x8c, 0xd0, 0x81, 0x09, 0x3f, 0x6e, 0x26, - 0xd6, 0xe5, 0xcf, 0xa8, 0x91, 0x1a, 0x95, 0x28, 0x47, 0x54, 0x7e, 0xaa, 0xfb, 0x5e, 0x10, 0x4d, - 0x4e, 0x3a, 0x78, 0xa3, 0xd4, 0x5d, 0x94, 0x9e, 0x60, 0x15, 0xbf, 0xfe, 0x6f, 0x2b, 0x00, 0x2b, - 0x24, 0xbc, 0xeb, 0xf9, 0x5b, 0x74, 0x88, 0x5e, 0x57, 0x6f, 0xcf, 0x1f, 0x80, 0xe1, 0xae, 0x67, - 0x05, 0x82, 0x4b, 0xb1, 0x47, 0xe1, 0xcc, 0xa3, 0x87, 0x95, 0xa2, 0x1a, 0x8c, 0xb0, 0x5b, 0x04, - 0x71, 0x80, 0x30, 0xa1, 0x9f, 0x8a, 0x6c, 0x01, 0xe6, 0xe5, 0x3c, 0x39, 0x11, 0x7b, 0xf5, 0x11, - 0x08, 0x2d, 0x46, 0x24, 0x27, 0xe2, 0x65, 0x58, 0x42, 0xd1, 0x53, 0x00, 0x76, 0xf7, 0xba, 0xd1, - 0xb1, 0x1d, 0x2a, 0x40, 0x8e, 0xca, 0x5c, 0x98, 0xd0, 0x5c, 0x8d, 0x4a, 0xef, 0xed, 0xd5, 0xaa, - 0xe2, 0xd7, 0x2e, 0x56, 0x6a, 0xeb, 0x9f, 0x18, 0x86, 0x44, 0xa6, 0xd7, 0xd8, 0x60, 0xa3, 0x9d, - 0x8c, 0xc1, 0xe6, 0x05, 0x98, 0x75, 0x3c, 0xc3, 0x5a, 0x30, 0x1c, 0xba, 0x61, 0xfc, 0x16, 0x9f, - 0x4a, 0xc3, 0x6d, 0xcb, 0xe4, 0xa0, 0x8c, 0x79, 0x2c, 0x15, 0xd4, 0xc1, 0x85, 0xad, 0x51, 0x28, - 0xf3, 0xcb, 0xf2, 0xf4, 0x1c, 0x4b, 0x83, 0xe6, 0xc1, 0x9d, 0x53, 0xdf, 0x0a, 0x49, 0x39, 0x20, - 0x95, 0x82, 0xf6, 0xd3, 0x1a, 0x5c, 0x20, 0x3b, 0x21, 0xf1, 0x5d, 0xc3, 0x59, 0xf3, 0x8d, 0x8d, - 0x0d, 0xdb, 0x14, 0x7e, 0x96, 0x7c, 0x62, 0x57, 0xf7, 0xf7, 0x6a, 0x17, 0x16, 0xf3, 0x2a, 0xdc, - 0xdb, 0xab, 0xbd, 0x23, 0x9b, 0xe6, 0x39, 0x7a, 0x1a, 0x94, 0xdb, 0x84, 0x2d, 0xe4, 0x7c, 0x72, - 0x97, 0x9f, 0x84, 0x89, 0x23, 0xbc, 0x75, 0x48, 0x3c, 0xc1, 0xfe, 0xfd, 0x0a, 0x4c, 0xd2, 0xb5, - 0xb7, 0xe4, 0x99, 0x86, 0xd3, 0x58, 0x69, 0x1d, 0x21, 0x47, 0x32, 0x5a, 0x82, 0xf3, 0x1b, 0x9e, - 0x6f, 0x92, 0xb5, 0xfa, 0xea, 0x9a, 0x27, 0xee, 0x30, 0x1a, 0x2b, 0x2d, 0xc1, 0x50, 0x99, 0x56, - 0x76, 0x3d, 0x07, 0x8e, 0x73, 0x5b, 0xa1, 0xdb, 0x70, 0x21, 0x2e, 0xbf, 0xd3, 0xe5, 0xce, 0x19, - 0x14, 0xdd, 0x50, 0xec, 0x5c, 0x72, 0x3d, 0xaf, 0x02, 0xce, 0x6f, 0x87, 0x0c, 0xb8, 0x5f, 0x84, - 0x78, 0xb8, 0xee, 0xf9, 0x77, 0x0d, 0xdf, 0x4a, 0xa2, 0x1d, 0x8e, 0x6d, 0xbc, 0x8d, 0xe2, 0x6a, - 0xb8, 0x1f, 0x0e, 0xfd, 0x57, 0x46, 0x41, 0x79, 0xd4, 0x76, 0x84, 0x94, 0x36, 0xbf, 0xae, 0xc1, - 0x79, 0xd3, 0xb1, 0x89, 0x1b, 0xa6, 0x5e, 0x2f, 0x71, 0x96, 0x74, 0xa7, 0xd4, 0x6b, 0xbb, 0x2e, - 0x71, 0x9b, 0x0d, 0xe1, 0xcb, 0x52, 0xcf, 0x41, 0x2e, 0xfc, 0x7d, 0x72, 0x20, 0x38, 0xb7, 0x33, - 0xec, 0x7b, 0x58, 0x79, 0xb3, 0xa1, 0xbe, 0x4d, 0xaf, 0x8b, 0x32, 0x2c, 0xa1, 0xe8, 0x31, 0x98, - 0x68, 0xfb, 0x5e, 0xaf, 0x1b, 0xd4, 0x99, 0x03, 0x2d, 0x5f, 0xff, 0x4c, 0x84, 0xbb, 0x11, 0x17, - 0x63, 0xb5, 0x0e, 0x15, 0x48, 0xf9, 0xcf, 0x55, 0x9f, 0x6c, 0xd8, 0x3b, 0x82, 0xd1, 0x31, 0x81, - 0xf4, 0x86, 0x52, 0x8e, 0x13, 0xb5, 0xd0, 0xdb, 0x60, 0xdc, 0x0e, 0x82, 0x1e, 0xf1, 0xef, 0xe0, - 0x25, 0x11, 0xcb, 0x9e, 0xdd, 0x8b, 0x34, 0xa3, 0x42, 0x1c, 0xc3, 0xd1, 0x17, 0x35, 0x98, 0xf6, - 0xc9, 0x2b, 0x3d, 0xdb, 0x27, 0x16, 0x23, 0x1a, 0x88, 0x97, 0x85, 0x78, 0xb0, 0xd7, 0x8c, 0x73, - 0x38, 0x81, 0x94, 0x73, 0x09, 0x69, 0x07, 0x4b, 0x02, 0x71, 0xaa, 0x07, 0x74, 0xa8, 0x02, 0xbb, - 0xed, 0xda, 0x6e, 0x7b, 0xde, 0x69, 0x07, 0xb3, 0x55, 0xc6, 0xf8, 0xb8, 0xb4, 0x1b, 0x17, 0x63, - 0xb5, 0x0e, 0xd5, 0x04, 0x7b, 0x01, 0xdd, 0xf7, 0x1d, 0xc2, 0xc7, 0x77, 0x3c, 0x36, 0x14, 0xde, - 0x51, 0x01, 0x38, 0x59, 0x0f, 0x3d, 0x05, 0xd3, 0x51, 0x81, 0x18, 0x65, 0xe0, 0x41, 0xc9, 0x68, - 0x3f, 0xef, 0x24, 0x20, 0x38, 0x55, 0xf3, 0xf2, 0x3c, 0x9c, 0xcb, 0xf9, 0xcc, 0x23, 0x31, 0x97, - 0xdf, 0xac, 0xc0, 0x9b, 0x0f, 0x5c, 0x95, 0xe8, 0x1f, 0x6a, 0x30, 0x41, 0x76, 0x42, 0xdf, 0x90, - 0x3e, 0xf6, 0x74, 0x8a, 0x36, 0x4e, 0x64, 0x0b, 0xcc, 0x2d, 0xc6, 0x84, 0xf8, 0xb4, 0x49, 0x41, - 0x43, 0x81, 0x60, 0xb5, 0x3f, 0x54, 0xbb, 0xe2, 0x21, 0xeb, 0x54, 0x7b, 0xba, 0x48, 0x12, 0x2a, - 0x20, 0x97, 0xdf, 0x07, 0x33, 0x69, 0xcc, 0x47, 0x1a, 0xa9, 0xdf, 0xab, 0xc0, 0xd8, 0xaa, 0xef, - 0x51, 0x19, 0xe8, 0x14, 0x82, 0x48, 0x19, 0x89, 0xd8, 0xcb, 0xa5, 0x9e, 0x2a, 0x8b, 0xce, 0x16, - 0xc6, 0x7d, 0xb7, 0x53, 0x71, 0xdf, 0xe7, 0x07, 0x21, 0xd2, 0x3f, 0xd0, 0xfb, 0xbf, 0xd7, 0x60, - 0x42, 0xd4, 0x3c, 0x85, 0x20, 0x53, 0x1f, 0x4e, 0x06, 0x99, 0x7a, 0xcf, 0x00, 0xdf, 0x55, 0x10, - 0x5e, 0xea, 0x2b, 0x1a, 0x4c, 0x89, 0x1a, 0xcb, 0xa4, 0xb3, 0x4e, 0x7c, 0x74, 0x1d, 0xc6, 0x82, - 0x1e, 0x9b, 0x48, 0xf1, 0x41, 0xf7, 0xab, 0x52, 0xb5, 0xbf, 0x6e, 0x98, 0x2c, 0xd3, 0x2d, 0xaf, - 0xa2, 0x44, 0x53, 0xe7, 0x05, 0x38, 0x6a, 0x4c, 0x65, 0x64, 0xdf, 0x73, 0x32, 0xb1, 0x69, 0xb0, - 0xe7, 0x10, 0xcc, 0x20, 0x54, 0x34, 0xa5, 0x7f, 0x23, 0x5b, 0x13, 0x13, 0x4d, 0x29, 0x38, 0xc0, - 0xbc, 0x5c, 0xff, 0xd4, 0xb0, 0x1c, 0x6c, 0x16, 0xf1, 0xf8, 0x26, 0x8c, 0x9b, 0x3e, 0x31, 0x42, - 0x62, 0x2d, 0xec, 0x1e, 0xa6, 0x73, 0x8c, 0x59, 0xd7, 0xa3, 0x16, 0x38, 0x6e, 0x4c, 0xf9, 0xa2, - 0x7a, 0x85, 0x51, 0x89, 0x8f, 0x90, 0xc2, 0xeb, 0x8b, 0xf7, 0xc2, 0x88, 0x77, 0xd7, 0x95, 0x9e, - 0x10, 0x7d, 0x09, 0xb3, 0x4f, 0xb9, 0x4d, 0x6b, 0x63, 0xde, 0x48, 0x8d, 0xcd, 0x34, 0xdc, 0x27, - 0x36, 0x93, 0x03, 0x63, 0x1d, 0x36, 0x0d, 0x03, 0x05, 0xd7, 0x4e, 0x4c, 0xa8, 0x9a, 0x7e, 0x85, - 0x61, 0xc6, 0x11, 0x09, 0x7a, 0xbe, 0x51, 0x1e, 0x1c, 0x74, 0x0d, 0x93, 0xa8, 0xe7, 0xdb, 0x4a, - 0x54, 0x88, 0x63, 0x38, 0xda, 0x4d, 0x06, 0xfd, 0x1a, 0x2b, 0x6f, 0x6a, 0x12, 0xdd, 0x53, 0xe2, - 0x7c, 0xf1, 0xa1, 0x2f, 0x0c, 0xfc, 0xf5, 0x0b, 0xc3, 0x72, 0x91, 0x8a, 0x58, 0xf9, 0xf9, 0xd9, - 0x59, 0xb5, 0x52, 0xd9, 0x59, 0xdf, 0x11, 0x05, 0xa7, 0xac, 0x24, 0x52, 0x05, 0xc9, 0xe0, 0x94, - 0x93, 0x82, 0x74, 0x22, 0x20, 0x65, 0x0f, 0xce, 0x05, 0xa1, 0xe1, 0x90, 0x96, 0x2d, 0xd4, 0xf1, - 0x20, 0x34, 0x3a, 0xdd, 0x12, 0xd1, 0x21, 0xb9, 0x47, 0x7a, 0x16, 0x15, 0xce, 0xc3, 0x8f, 0x3e, - 0xa9, 0xc1, 0x2c, 0x2b, 0x9f, 0xef, 0x85, 0x1e, 0x0f, 0x63, 0x1c, 0x13, 0x3f, 0xfa, 0x3d, 0x29, - 0x53, 0x81, 0x5a, 0x05, 0xf8, 0x70, 0x21, 0x25, 0xf4, 0x1a, 0x5c, 0x70, 0x8c, 0x20, 0x9c, 0x37, - 0x43, 0x7b, 0xdb, 0x0e, 0x77, 0xe3, 0x2e, 0x1c, 0x3d, 0x24, 0x24, 0x13, 0xb5, 0x97, 0xf2, 0x90, - 0xe1, 0x7c, 0x1a, 0xfa, 0x5f, 0x6a, 0x80, 0xb2, 0x4b, 0x08, 0x39, 0x50, 0xb5, 0x22, 0x17, 0x71, - 0xed, 0x58, 0x22, 0xd2, 0x49, 0xce, 0x2c, 0x3d, 0xcb, 0x25, 0x05, 0xe4, 0xc1, 0xf8, 0xdd, 0x4d, - 0x3b, 0x24, 0x8e, 0x1d, 0x84, 0xc7, 0x14, 0x00, 0x4f, 0x46, 0x83, 0x7a, 0x3e, 0x42, 0x8c, 0x63, - 0x1a, 0xfa, 0x2f, 0x0e, 0x83, 0xcc, 0xa1, 0x7f, 0x08, 0xfb, 0x43, 0x0f, 0x90, 0xa9, 0x24, 0x22, - 0x1a, 0xc4, 0x06, 0xc1, 0xdc, 0x1b, 0xea, 0x19, 0x64, 0x38, 0x87, 0x00, 0x7a, 0x0d, 0xce, 0xdb, - 0xee, 0x86, 0x6f, 0x04, 0xa1, 0xdf, 0x63, 0x46, 0xdd, 0x41, 0xf2, 0xf9, 0x30, 0x0d, 0xa2, 0x99, - 0x83, 0x0e, 0xe7, 0x12, 0x41, 0x04, 0xc6, 0xee, 0x7a, 0xfe, 0x16, 0x65, 0x9e, 0xc3, 0xe5, 0x33, - 0x3b, 0x3e, 0xcf, 0x50, 0xc4, 0x5c, 0x93, 0xff, 0x0e, 0x70, 0x84, 0x9b, 0x87, 0xc3, 0xe0, 0xff, - 0x47, 0xd7, 0x9b, 0x62, 0xdd, 0xd7, 0xcb, 0xd3, 0x8b, 0x93, 0x84, 0xf2, 0x70, 0x18, 0xc9, 0x42, - 0x9c, 0x26, 0xa8, 0xff, 0x91, 0x06, 0x23, 0xfc, 0xe9, 0xe5, 0xc9, 0x4b, 0x70, 0x7f, 0x37, 0x21, - 0xc1, 0x95, 0x4a, 0x49, 0xc2, 0xba, 0x5a, 0x98, 0x2c, 0xe3, 0xdb, 0x1a, 0x8c, 0xb3, 0x1a, 0xa7, - 0x20, 0x52, 0xbd, 0x94, 0x14, 0xa9, 0x9e, 0x2c, 0xfd, 0x35, 0x05, 0x02, 0xd5, 0x1f, 0x0d, 0x89, - 0x6f, 0x61, 0x12, 0x4b, 0x13, 0xce, 0x09, 0xe7, 0xca, 0x25, 0x7b, 0x83, 0xd0, 0x25, 0xde, 0x30, - 0x76, 0x03, 0x11, 0x2f, 0x81, 0xbf, 0xae, 0xc9, 0x82, 0x71, 0x5e, 0x1b, 0xf4, 0xfb, 0x1a, 0x95, - 0x0d, 0x42, 0xdf, 0x36, 0x07, 0xca, 0x40, 0x21, 0xfb, 0x36, 0xb7, 0xcc, 0x91, 0x71, 0xcd, 0xe4, - 0x4e, 0x2c, 0x24, 0xb0, 0xd2, 0x7b, 0x7b, 0xb5, 0x5a, 0x8e, 0xd1, 0x28, 0x0e, 0x6c, 0x1f, 0x84, - 0x9f, 0xf8, 0x61, 0xdf, 0x2a, 0xcc, 0x58, 0x1b, 0xf5, 0x18, 0xdd, 0x84, 0x91, 0xc0, 0xf4, 0xba, - 0xe4, 0x28, 0x39, 0x75, 0xe4, 0x00, 0xb7, 0x68, 0x4b, 0xcc, 0x11, 0x5c, 0x7e, 0x19, 0x26, 0xd5, - 0x9e, 0xe7, 0x68, 0x3e, 0x0d, 0x55, 0xf3, 0x39, 0xf2, 0x95, 0x8c, 0xaa, 0x29, 0xfd, 0x41, 0x05, - 0x46, 0x79, 0x66, 0xd7, 0x43, 0x98, 0xa4, 0xed, 0x28, 0x82, 0xf8, 0x00, 0x09, 0xab, 0xd5, 0x70, - 0x7b, 0x2f, 0x7a, 0xae, 0x32, 0x06, 0x6a, 0x10, 0x71, 0xe4, 0xca, 0x20, 0x8c, 0x43, 0xe5, 0xf3, - 0x7e, 0xf0, 0x0f, 0x3b, 0xe9, 0xb0, 0x8b, 0x7f, 0xac, 0xc1, 0x64, 0x22, 0xaa, 0x65, 0x07, 0x86, - 0x7c, 0x99, 0x11, 0xaa, 0xac, 0xc5, 0x3e, 0x72, 0xd1, 0xb9, 0xbf, 0x4f, 0x25, 0x4c, 0xe9, 0xc8, - 0x00, 0x98, 0x95, 0x63, 0x0a, 0x80, 0xa9, 0x7f, 0x49, 0x83, 0x8b, 0xd1, 0x07, 0x25, 0xa3, 0x16, - 0xa1, 0x47, 0xa0, 0x6a, 0x74, 0x6d, 0x66, 0x50, 0x52, 0x4d, 0x72, 0xf3, 0xab, 0x4d, 0x56, 0x86, - 0x25, 0x14, 0xbd, 0x1d, 0xaa, 0xd1, 0xc2, 0x13, 0x62, 0xa7, 0xe4, 0x59, 0xf2, 0x0e, 0x42, 0xd6, - 0x40, 0x6f, 0x51, 0x82, 0xbc, 0x8f, 0xc4, 0x72, 0x82, 0x24, 0xcc, 0xaf, 0x2b, 0xf5, 0x9f, 0x81, - 0xf1, 0x56, 0xeb, 0x26, 0x8f, 0xe7, 0x72, 0x04, 0xd3, 0xaa, 0xfe, 0xd9, 0x21, 0x98, 0xe2, 0x26, - 0x86, 0x05, 0xdb, 0xb5, 0x6c, 0xb7, 0x7d, 0x0a, 0x67, 0xca, 0x1a, 0x8c, 0x73, 0x6b, 0xc6, 0x01, - 0xd9, 0xbb, 0x5a, 0x51, 0xa5, 0x74, 0x34, 0x58, 0x09, 0xc0, 0x31, 0x22, 0x74, 0x0b, 0x46, 0x5f, - 0xa1, 0xfc, 0x2d, 0xda, 0x17, 0x87, 0x62, 0x33, 0x72, 0xd1, 0x33, 0xd6, 0x18, 0x60, 0x81, 0x02, - 0x05, 0xcc, 0x87, 0x8c, 0x09, 0x5c, 0x83, 0x44, 0x23, 0x48, 0x8c, 0xac, 0x4c, 0xf1, 0x30, 0x29, - 0x5c, 0xd1, 0xd8, 0x2f, 0x2c, 0x09, 0xb1, 0x50, 0xd6, 0x89, 0x16, 0x6f, 0x90, 0x50, 0xd6, 0x89, - 0x3e, 0x17, 0x1c, 0x8d, 0x4f, 0xc2, 0x85, 0xdc, 0xc1, 0x38, 0x58, 0x9c, 0xd5, 0x7f, 0xa7, 0x02, - 0xc3, 0x2d, 0x42, 0xac, 0x53, 0x58, 0x99, 0x2f, 0x25, 0xa4, 0x9d, 0xf7, 0x96, 0x0e, 0xa6, 0x5d, - 0x64, 0xac, 0xda, 0x48, 0x19, 0xab, 0xde, 0x57, 0x9a, 0x42, 0x7f, 0x4b, 0xd5, 0xaf, 0x56, 0x00, - 0x68, 0xb5, 0x05, 0xc3, 0xdc, 0xe2, 0x1c, 0x47, 0xae, 0x66, 0x2d, 0xc9, 0x71, 0xb2, 0xcb, 0xf0, - 0x34, 0xaf, 0x2f, 0x75, 0x18, 0xe5, 0x39, 0xd3, 0x85, 0xd5, 0x1f, 0x78, 0x4a, 0x59, 0x5a, 0x82, - 0x05, 0x24, 0xc9, 0x2d, 0x86, 0x8f, 0x89, 0x5b, 0xe8, 0xff, 0x5c, 0x03, 0x96, 0x04, 0xb0, 0xb1, - 0xc2, 0xde, 0x6a, 0xdb, 0xfc, 0x36, 0xae, 0xa1, 0xc6, 0x02, 0x65, 0x56, 0xef, 0xa6, 0x0a, 0xc0, - 0xc9, 0x7a, 0xa8, 0xa3, 0x8c, 0x6b, 0xa5, 0xbc, 0x16, 0x20, 0xfa, 0x71, 0x20, 0x7f, 0xf8, 0x61, - 0x05, 0xce, 0xa4, 0xea, 0x1e, 0x42, 0x1b, 0x3c, 0x19, 0x6e, 0xab, 0x64, 0x85, 0x19, 0x3a, 0xf9, - 0xac, 0x30, 0x32, 0x41, 0xcb, 0xf0, 0xc9, 0x26, 0x68, 0xf9, 0x43, 0x0d, 0xaa, 0x74, 0x84, 0x4f, - 0x81, 0xf1, 0xfe, 0x9d, 0x24, 0xe3, 0x7d, 0x77, 0xd9, 0x85, 0x53, 0xc0, 0x6f, 0xff, 0xbc, 0x02, - 0x2c, 0x8a, 0xbf, 0x70, 0x5c, 0x50, 0x7c, 0x01, 0xb4, 0x02, 0x5f, 0x80, 0xab, 0xc2, 0x95, 0x20, - 0x65, 0xb3, 0x55, 0xdc, 0x09, 0xde, 0xae, 0x78, 0x0b, 0x0c, 0x25, 0xd9, 0x48, 0x8e, 0xc7, 0xc0, - 0xab, 0x30, 0x15, 0x6c, 0x7a, 0x5e, 0x28, 0xdf, 0xee, 0x0f, 0x97, 0xb7, 0xcf, 0x33, 0x07, 0xe6, - 0xe8, 0x53, 0xf8, 0xc6, 0x6c, 0xa9, 0xb8, 0x71, 0x92, 0x14, 0x9a, 0x03, 0x58, 0x77, 0x3c, 0x73, - 0xab, 0xde, 0x6c, 0xe0, 0xc8, 0x61, 0x95, 0x79, 0x1b, 0x2d, 0xc8, 0x52, 0xac, 0xd4, 0x18, 0xc8, - 0xbb, 0xe1, 0xcf, 0x34, 0x3e, 0xd2, 0x47, 0xd8, 0x92, 0xa7, 0xc8, 0x61, 0xdf, 0x9a, 0xe2, 0xb0, - 0x4a, 0xe2, 0xee, 0x04, 0x97, 0xad, 0xc5, 0x3b, 0x4c, 0xda, 0xe3, 0x13, 0x5b, 0xe3, 0xf7, 0xc4, - 0x67, 0xca, 0x44, 0x10, 0x5d, 0x98, 0x72, 0xd4, 0x24, 0x92, 0x62, 0x8f, 0x94, 0xca, 0x3f, 0x29, - 0x5f, 0x40, 0x24, 0x8a, 0x71, 0x92, 0x00, 0xe5, 0xd3, 0xd1, 0xd7, 0xd1, 0xc1, 0x8c, 0x7c, 0x39, - 0xd8, 0x72, 0x58, 0x55, 0x01, 0x38, 0x59, 0x4f, 0xff, 0x47, 0x15, 0x78, 0x90, 0xf7, 0x9d, 0x59, - 0x50, 0x1a, 0xa4, 0x4b, 0x5c, 0x8b, 0xb8, 0xe6, 0x2e, 0x93, 0xe1, 0x2d, 0xaf, 0x8d, 0xfe, 0xbe, - 0x06, 0x55, 0xe2, 0x5a, 0x5d, 0xcf, 0x76, 0xa3, 0xab, 0x8f, 0x0f, 0x96, 0x4f, 0xa5, 0x51, 0x40, - 0x65, 0x51, 0x10, 0x10, 0xf1, 0x3a, 0xc5, 0x2f, 0x2c, 0x09, 0xa3, 0xbb, 0x30, 0xd2, 0xf5, 0xbd, - 0xf5, 0x48, 0x79, 0x7d, 0xee, 0xd8, 0x7b, 0xb0, 0x4a, 0xb1, 0xf3, 0xc9, 0x65, 0xff, 0x62, 0x4e, - 0x4f, 0xc7, 0xf0, 0x96, 0x43, 0xf5, 0xfc, 0x28, 0x9a, 0xc5, 0x6d, 0xd0, 0x0f, 0xee, 0xcb, 0x51, - 0x10, 0x3e, 0x0b, 0x0f, 0x2b, 0x08, 0x17, 0x77, 0xa8, 0xaa, 0x53, 0x37, 0xba, 0x86, 0x49, 0x15, - 0x77, 0xf6, 0x22, 0x9a, 0xdb, 0xf4, 0x8f, 0x80, 0xf2, 0x33, 0xc3, 0x50, 0x53, 0x70, 0x26, 0x1c, - 0x82, 0x22, 0x3e, 0xf6, 0x55, 0x0d, 0x26, 0x0c, 0xd7, 0x15, 0x99, 0xa9, 0x22, 0xfb, 0xb2, 0x35, - 0xe0, 0xdc, 0xe4, 0x91, 0x9a, 0x9b, 0x8f, 0xc9, 0xa4, 0xee, 0x8c, 0x15, 0x08, 0x56, 0x7b, 0xd3, - 0xc7, 0x35, 0xa8, 0x72, 0xaa, 0xae, 0x41, 0xe8, 0xa3, 0x11, 0x03, 0xe1, 0xda, 0xd7, 0x0b, 0x27, - 0x30, 0x3e, 0x8c, 0x1f, 0xe5, 0x5b, 0x45, 0x2e, 0xbf, 0x0f, 0x66, 0xd2, 0xa3, 0x77, 0x24, 0x53, - 0xc5, 0xbf, 0x1a, 0x4a, 0xac, 0xae, 0x42, 0xf2, 0x87, 0xb0, 0x05, 0x7d, 0x2d, 0xb5, 0x60, 0xf8, - 0x01, 0x6f, 0x9f, 0xd4, 0x80, 0x1c, 0xef, 0xaa, 0x19, 0x3a, 0x5d, 0x87, 0xb2, 0x41, 0xa7, 0xad, - 0x0e, 0x17, 0x95, 0x31, 0x62, 0xb7, 0xae, 0xf5, 0x4d, 0x62, 0x6e, 0x1d, 0xc9, 0x06, 0xb2, 0x40, - 0x75, 0x53, 0x89, 0x44, 0xc9, 0xb1, 0xf4, 0x28, 0x8c, 0x6d, 0xdb, 0x81, 0x1d, 0xc5, 0xe9, 0x50, - 0x70, 0x3c, 0xc7, 0x8b, 0x71, 0x04, 0xd7, 0x97, 0x12, 0x8c, 0x64, 0xcd, 0xeb, 0x7a, 0x8e, 0xd7, - 0xde, 0x9d, 0xbf, 0x6b, 0xf8, 0x04, 0x7b, 0xbd, 0x50, 0x60, 0x3b, 0x6c, 0x8f, 0x96, 0xe1, 0xaa, - 0x82, 0x2d, 0xf7, 0xc1, 0xf1, 0x51, 0xd0, 0x7d, 0xa7, 0x1a, 0x9d, 0xdd, 0xe2, 0x45, 0xd6, 0x37, - 0x34, 0xb8, 0x44, 0x8a, 0x18, 0xa8, 0x38, 0xff, 0x06, 0xdd, 0xc1, 0x85, 0x0c, 0x5a, 0x84, 0x52, - 0x2c, 0x02, 0xe3, 0xe2, 0x9e, 0xa1, 0xdd, 0x44, 0xa6, 0xb1, 0xca, 0x20, 0x86, 0x99, 0x9c, 0xf9, - 0xee, 0x97, 0x67, 0x0c, 0xfd, 0x9a, 0x06, 0xe7, 0x9d, 0x9c, 0x3d, 0x28, 0xc4, 0xda, 0xd6, 0x09, - 0x6c, 0x6f, 0x7e, 0x09, 0x96, 0x07, 0xc1, 0xb9, 0x5d, 0x41, 0xbf, 0x51, 0xf8, 0x12, 0x7e, 0xa4, - 0x7c, 0x9e, 0xe6, 0x83, 0x16, 0x62, 0x89, 0x47, 0xf1, 0x1f, 0x85, 0x09, 0x2f, 0xde, 0xaa, 0x22, - 0x74, 0xc1, 0x07, 0x06, 0xec, 0x9c, 0xb2, 0xf9, 0xb9, 0x4b, 0x81, 0x52, 0x80, 0x55, 0x7a, 0xe8, - 0xcb, 0x1a, 0x20, 0x2b, 0x23, 0x8f, 0x08, 0xaf, 0x86, 0x67, 0x8f, 0x5d, 0xe8, 0xe2, 0x97, 0xa8, - 0xd9, 0x72, 0x9c, 0xd3, 0x09, 0xb6, 0xcc, 0xc2, 0x1c, 0xee, 0x21, 0x82, 0x5c, 0x0e, 0xba, 0xcc, - 0xf2, 0x18, 0x13, 0x5f, 0x66, 0x79, 0x10, 0x9c, 0xdb, 0x15, 0xfd, 0x4b, 0x63, 0x5c, 0x4b, 0x66, - 0xb7, 0x5c, 0xeb, 0x30, 0xba, 0xce, 0xac, 0x4c, 0x82, 0x6d, 0x94, 0x36, 0x69, 0x71, 0x5b, 0x15, - 0x37, 0x01, 0xf1, 0xff, 0xb1, 0xc0, 0x8c, 0x5e, 0x84, 0x21, 0xcb, 0x0d, 0xc4, 0x7e, 0x7f, 0xcf, - 0x00, 0x26, 0x96, 0xf8, 0xfd, 0x43, 0x63, 0xa5, 0x85, 0x29, 0x52, 0xe4, 0x42, 0xd5, 0x15, 0x8a, - 0xa5, 0xb0, 0x64, 0x94, 0xce, 0xa1, 0x27, 0x15, 0x54, 0xa9, 0x16, 0x47, 0x25, 0x58, 0xd2, 0xa0, - 0xf4, 0x52, 0x96, 0xe5, 0xd2, 0xf4, 0xa4, 0xc1, 0xa8, 0x9f, 0x35, 0x6f, 0x55, 0x35, 0xff, 0x8c, - 0x1c, 0xde, 0xfc, 0x33, 0x55, 0x68, 0xfa, 0x21, 0x30, 0x1a, 0x1a, 0xb6, 0x1b, 0x72, 0x45, 0xb9, - 0xe4, 0xa5, 0x30, 0xed, 0xff, 0x1a, 0xc5, 0x12, 0x6b, 0xa4, 0xec, 0x67, 0x80, 0x05, 0x72, 0xba, - 0xb0, 0xb6, 0x59, 0x26, 0x5b, 0xb1, 0x31, 0x4b, 0x2f, 0x2c, 0x9e, 0x0f, 0x97, 0x2f, 0x2c, 0xfe, - 0x3f, 0x16, 0x98, 0xd1, 0xcb, 0x50, 0x0d, 0xa2, 0x6b, 0xfc, 0xea, 0xa0, 0x09, 0x14, 0xc5, 0x1d, - 0xbe, 0x78, 0x41, 0x21, 0x2e, 0xef, 0x25, 0x7e, 0xb4, 0x0e, 0x63, 0xc2, 0x7a, 0x28, 0xe2, 0x92, - 0xbc, 0x67, 0x80, 0xfc, 0x41, 0x51, 0x8a, 0x67, 0xfe, 0x9a, 0x3d, 0x42, 0xac, 0xff, 0x87, 0x71, - 0x6e, 0xf7, 0x15, 0x9e, 0x52, 0x1b, 0x50, 0x8d, 0xd0, 0x0d, 0xf2, 0x9a, 0x27, 0xca, 0xd8, 0xc6, - 0x3f, 0x4d, 0xe6, 0x6f, 0x93, 0xb8, 0x51, 0x3d, 0xef, 0xe1, 0x54, 0x1c, 0x4c, 0xfc, 0x70, 0x8f, - 0xa6, 0x5e, 0x61, 0x29, 0x96, 0xa2, 0x47, 0xc6, 0x43, 0xe5, 0x97, 0x96, 0x7c, 0x80, 0x9c, 0x48, - 0xad, 0x14, 0xbd, 0x51, 0x56, 0x88, 0x14, 0x78, 0x92, 0x0d, 0x97, 0xf2, 0x24, 0x7b, 0x1a, 0xce, - 0x88, 0x9b, 0xfb, 0x26, 0xcb, 0x66, 0x1c, 0xee, 0x0a, 0x47, 0x73, 0xe6, 0xd3, 0x51, 0x4f, 0x82, - 0x70, 0xba, 0x2e, 0xfa, 0x03, 0x0d, 0xaa, 0xa6, 0x90, 0x78, 0xc4, 0xbe, 0x5a, 0x1a, 0xec, 0x72, - 0x60, 0x2e, 0x12, 0xa0, 0xb8, 0x52, 0xf0, 0x5c, 0xc4, 0x23, 0xa2, 0xe2, 0x63, 0xba, 0xe5, 0x97, - 0xbd, 0x46, 0xdf, 0xa1, 0x7a, 0x8f, 0xc3, 0xb2, 0xc8, 0xb1, 0x27, 0xa2, 0xdc, 0x03, 0xfe, 0xf6, - 0x80, 0x5f, 0x31, 0x1f, 0x63, 0xe4, 0x1f, 0xf2, 0x41, 0xa9, 0xdd, 0xc4, 0x90, 0x63, 0xfa, 0x16, - 0xb5, 0xfb, 0xe8, 0xb7, 0x34, 0x78, 0x98, 0x3f, 0x3b, 0xa8, 0x53, 0x21, 0x86, 0x25, 0xe3, 0x25, - 0x71, 0xf6, 0xdf, 0xd8, 0xef, 0xad, 0x7a, 0x64, 0xbf, 0xb7, 0x47, 0xf6, 0xf7, 0x6a, 0x0f, 0xd7, - 0x0f, 0x81, 0x1b, 0x1f, 0xaa, 0x07, 0x97, 0xb7, 0x60, 0x2a, 0x31, 0xd9, 0x27, 0xe9, 0x17, 0x71, - 0xd9, 0x85, 0x99, 0xf4, 0x9c, 0x9c, 0xa8, 0x1f, 0xc6, 0x2d, 0x18, 0x97, 0x87, 0x05, 0x7a, 0x50, - 0x21, 0x14, 0x1f, 0xe6, 0xb7, 0xc8, 0x2e, 0xa7, 0x5a, 0x4b, 0x28, 0x8a, 0xdc, 0xd0, 0xf5, 0x1c, - 0x2d, 0x10, 0x08, 0xf5, 0xef, 0x0a, 0x2b, 0xe6, 0x1a, 0xe9, 0x74, 0x1d, 0x23, 0x24, 0x6f, 0xfc, - 0x3b, 0x45, 0xfd, 0x7f, 0x68, 0x9c, 0xe7, 0x8b, 0xa4, 0xf2, 0x06, 0x4c, 0x74, 0x78, 0x54, 0x53, - 0xf6, 0x32, 0x59, 0x2b, 0xff, 0x26, 0x7a, 0x39, 0x46, 0x83, 0x55, 0x9c, 0xe8, 0x2e, 0x8c, 0x47, - 0xe2, 0x45, 0x64, 0xdd, 0xb8, 0x3e, 0xd8, 0xe1, 0x2c, 0x25, 0x19, 0x79, 0xe9, 0x14, 0x95, 0x04, - 0x38, 0xa6, 0xa5, 0x1b, 0x80, 0xb2, 0x6d, 0xa8, 0x22, 0x1c, 0xb9, 0x57, 0xa7, 0xb2, 0x80, 0x67, - 0x5c, 0xac, 0x0f, 0xcc, 0xdd, 0xaa, 0x7f, 0xb3, 0x02, 0xb9, 0xe9, 0xb1, 0x90, 0x0e, 0xa3, 0xfc, - 0xbd, 0x4f, 0x94, 0x16, 0x96, 0x8a, 0x13, 0xfc, 0x31, 0x10, 0x16, 0x10, 0x74, 0x9b, 0x5b, 0x55, - 0x5c, 0x8b, 0x85, 0xe8, 0x8a, 0x77, 0xaa, 0xfa, 0xb2, 0x6c, 0x31, 0xaf, 0x02, 0xce, 0x6f, 0x87, - 0xb6, 0x01, 0x75, 0x8c, 0x9d, 0x34, 0xb6, 0x01, 0xd2, 0xa6, 0x2c, 0x67, 0xb0, 0xe1, 0x1c, 0x0a, - 0xf4, 0x30, 0x33, 0x4c, 0x93, 0x74, 0x43, 0x62, 0xf1, 0x4f, 0x8c, 0x2e, 0x51, 0xd8, 0x61, 0x36, - 0x9f, 0x04, 0xe1, 0x74, 0x5d, 0xfd, 0x47, 0xc3, 0x70, 0x29, 0x39, 0x88, 0x74, 0x87, 0x0a, 0x2b, - 0x0f, 0x7a, 0x26, 0xf2, 0xb9, 0xe6, 0x03, 0xf9, 0x68, 0xda, 0xe7, 0x7a, 0xb6, 0xee, 0x13, 0x76, - 0x2c, 0x1a, 0x4e, 0x10, 0x35, 0x4a, 0xf8, 0x5f, 0x8b, 0xe4, 0xfc, 0xc9, 0x94, 0xfd, 0x65, 0x02, - 0x0a, 0x45, 0xc9, 0xf9, 0x93, 0x98, 0x70, 0x0e, 0xf6, 0x88, 0x66, 0x32, 0x65, 0x7f, 0x09, 0x97, - 0x6f, 0x49, 0x33, 0x89, 0x09, 0xe7, 0x60, 0x47, 0x9f, 0xd3, 0xa0, 0x4f, 0x8a, 0xfe, 0x12, 0x2e, - 0xdf, 0x2c, 0xb4, 0xfa, 0x52, 0x21, 0x46, 0xdc, 0x87, 0x1a, 0xfa, 0xbc, 0x06, 0xfd, 0x12, 0xf4, - 0x97, 0xf0, 0xfe, 0x66, 0x2f, 0x22, 0x97, 0x8a, 0x51, 0xe2, 0x7e, 0xf4, 0xf4, 0x7f, 0x59, 0x81, - 0x11, 0x76, 0x07, 0xf8, 0xc6, 0x70, 0x82, 0x65, 0x5d, 0x2d, 0xf4, 0x0b, 0x69, 0xa7, 0xfc, 0x42, - 0x9e, 0x29, 0x4f, 0xa2, 0xbf, 0x63, 0xc8, 0x07, 0xe1, 0x22, 0xab, 0x36, 0x6f, 0x31, 0xcb, 0x4c, - 0x40, 0xac, 0x79, 0xcb, 0x62, 0x6f, 0xb2, 0x0f, 0xb6, 0x6b, 0x3f, 0x08, 0x43, 0x3d, 0xdf, 0x49, - 0x07, 0x12, 0xb8, 0x83, 0x97, 0x30, 0x2d, 0xd7, 0x3f, 0xa7, 0xc1, 0x0c, 0xc3, 0xad, 0x6c, 0x5f, - 0xb4, 0x0d, 0x55, 0x5f, 0x6c, 0x61, 0x31, 0x37, 0x4b, 0xa5, 0x3f, 0x2d, 0x87, 0x2d, 0x88, 0xe4, - 0x7d, 0xe2, 0x17, 0x96, 0xb4, 0xf4, 0x1f, 0x8c, 0xc2, 0x6c, 0x51, 0x23, 0xf4, 0x45, 0x0d, 0x2e, - 0x9a, 0xb1, 0x44, 0x35, 0xdf, 0x0b, 0x37, 0x3d, 0xdf, 0x0e, 0x6d, 0x71, 0x39, 0x5e, 0x52, 0xd5, - 0xac, 0xcf, 0xcb, 0x5e, 0xb1, 0x30, 0x4d, 0xf5, 0x5c, 0x0a, 0xb8, 0x80, 0x32, 0x7a, 0x0d, 0x60, - 0x2b, 0x8e, 0x0b, 0xc9, 0x57, 0xda, 0xad, 0xd2, 0x63, 0xa5, 0xc4, 0x8e, 0x8c, 0x3a, 0xc5, 0x8c, - 0x9b, 0x4a, 0xb9, 0x42, 0x8e, 0x12, 0x0f, 0x82, 0xcd, 0x5b, 0x64, 0xb7, 0x6b, 0xd8, 0xd1, 0x23, - 0xa7, 0xf2, 0xc4, 0x5b, 0xad, 0x9b, 0x02, 0x55, 0x92, 0xb8, 0x52, 0xae, 0x90, 0x43, 0x9f, 0xd1, - 0x60, 0x8a, 0x2b, 0x54, 0xc2, 0xf9, 0x55, 0x70, 0xb6, 0x95, 0xd2, 0x1d, 0xb8, 0xad, 0x62, 0x93, - 0x7d, 0x60, 0xf7, 0xc4, 0x49, 0x50, 0x92, 0x2e, 0x5d, 0x18, 0x67, 0x83, 0xf4, 0xb9, 0x25, 0x38, - 0xdb, 0xf2, 0xe0, 0x29, 0x38, 0x95, 0x43, 0x90, 0xeb, 0xc5, 0x59, 0x70, 0x96, 0x3c, 0xeb, 0x14, - 0x09, 0x4d, 0x6b, 0xd1, 0x35, 0xfd, 0x5d, 0xf6, 0x1c, 0x8d, 0x76, 0x6a, 0xb4, 0x7c, 0xa7, 0x16, - 0xd7, 0xea, 0x8d, 0x04, 0xb2, 0x64, 0xa7, 0xb2, 0xe0, 0x2c, 0x79, 0xfd, 0xe3, 0x15, 0xb8, 0xaf, - 0x60, 0xa1, 0x15, 0x1c, 0x95, 0xda, 0x89, 0x1e, 0x95, 0x3f, 0x01, 0x91, 0x80, 0xbd, 0x5c, 0x60, - 0x63, 0xf0, 0x06, 0x79, 0xb9, 0xc0, 0xfa, 0x5a, 0xe0, 0x2e, 0xf4, 0x87, 0x1a, 0x9c, 0xcd, 0x44, - 0x09, 0x3c, 0x94, 0xdf, 0xfb, 0xa9, 0x79, 0xb2, 0xbc, 0x25, 0x8e, 0x08, 0x3c, 0x14, 0xbf, 0xa2, - 0x4c, 0x47, 0x03, 0xd6, 0x9f, 0x87, 0xa9, 0x84, 0xb7, 0x90, 0x0c, 0x91, 0xa2, 0xe5, 0x86, 0x48, - 0x51, 0x23, 0xa0, 0x54, 0xfa, 0x45, 0x40, 0xd1, 0x3f, 0x59, 0x81, 0xcb, 0xc5, 0xdc, 0xe5, 0xaf, - 0xcd, 0xaa, 0x97, 0x3b, 0x3f, 0xcb, 0xe5, 0xff, 0xda, 0x8c, 0xc1, 0x6f, 0x9d, 0x11, 0x3b, 0x9f, - 0xdd, 0x80, 0xbc, 0x04, 0xa3, 0x2c, 0xec, 0x4c, 0x24, 0x3d, 0x3c, 0x55, 0x3a, 0x9c, 0x4d, 0xc0, - 0xb5, 0x4a, 0xfe, 0x3f, 0x16, 0x58, 0x51, 0x03, 0x66, 0x4c, 0xc7, 0xeb, 0x59, 0x22, 0x95, 0xe0, - 0x4a, 0xac, 0xc0, 0xca, 0xe0, 0x81, 0xf5, 0x14, 0x1c, 0x67, 0x5a, 0x20, 0xcc, 0xef, 0x50, 0xf8, - 0xd9, 0xfe, 0xae, 0x92, 0x0e, 0x94, 0x3c, 0x44, 0xbe, 0xbc, 0x3b, 0x79, 0x05, 0x80, 0x44, 0x7b, - 0x38, 0x7a, 0x77, 0xf7, 0x74, 0xb9, 0xb0, 0x88, 0x92, 0x13, 0x44, 0x82, 0xb8, 0x2c, 0x0a, 0xb0, - 0x42, 0x04, 0xf9, 0x30, 0xb1, 0x69, 0xaf, 0x13, 0xdf, 0x8d, 0x33, 0x90, 0x97, 0x14, 0x97, 0x6f, - 0xc6, 0x68, 0xb8, 0xbd, 0x43, 0x29, 0xc0, 0x2a, 0x11, 0xe4, 0x73, 0xd1, 0x8c, 0x9b, 0xab, 0x07, - 0x49, 0x53, 0x1e, 0xdb, 0xc1, 0xe3, 0xef, 0x8c, 0xcb, 0xb0, 0x42, 0x85, 0xd2, 0x74, 0x65, 0xcc, - 0xa9, 0x41, 0x6e, 0x40, 0xe2, 0xc8, 0x55, 0x31, 0xcd, 0xb8, 0x0c, 0x2b, 0x54, 0xe8, 0xd8, 0x76, - 0xe2, 0x38, 0x63, 0xc2, 0xae, 0xf9, 0xcc, 0x80, 0xf1, 0xde, 0x84, 0x2d, 0x29, 0x2e, 0xc0, 0x2a, - 0x11, 0xe4, 0x02, 0x74, 0x64, 0xf8, 0x31, 0x71, 0x31, 0x52, 0xea, 0x3b, 0xe3, 0x20, 0x66, 0x5c, - 0xd8, 0x8c, 0x7f, 0x63, 0x85, 0x02, 0x7a, 0x59, 0xb9, 0x7e, 0x83, 0xf2, 0x16, 0xb9, 0x43, 0x5d, - 0xbd, 0xbd, 0x33, 0x36, 0x4c, 0x4d, 0xb0, 0xfd, 0x7a, 0xbf, 0x62, 0x94, 0xba, 0xb7, 0x57, 0x9b, - 0x64, 0x3c, 0x24, 0x63, 0xa4, 0x8a, 0x5d, 0x36, 0x27, 0xfb, 0xba, 0x6c, 0xde, 0xa0, 0xc2, 0xaa, - 0xf2, 0xa4, 0x82, 0x31, 0x86, 0x29, 0xd6, 0x44, 0x86, 0xab, 0x6b, 0xa5, 0x2b, 0xe0, 0x6c, 0x1b, - 0x7e, 0x06, 0x12, 0x8b, 0xb5, 0x9f, 0x56, 0xcf, 0x40, 0x5e, 0x86, 0x25, 0x14, 0x6d, 0xc3, 0x64, - 0xa0, 0xf8, 0x80, 0x8a, 0x3c, 0x75, 0x03, 0xdc, 0x99, 0x09, 0xff, 0x4f, 0x16, 0x8c, 0x47, 0x2d, - 0xc1, 0x09, 0x3a, 0xe8, 0x35, 0x18, 0x8f, 0x8c, 0x94, 0xc1, 0xec, 0x4c, 0xf9, 0x07, 0x90, 0xf9, - 0x21, 0xe7, 0x62, 0xab, 0x63, 0x04, 0x0a, 0x70, 0x4c, 0x0f, 0xf5, 0x92, 0xc1, 0x0f, 0xce, 0x1e, - 0xcb, 0x83, 0x6f, 0xe9, 0xa3, 0x55, 0x14, 0xf8, 0x00, 0xd5, 0xe1, 0x2c, 0xd9, 0xe9, 0x7a, 0x41, - 0xcf, 0x27, 0x2c, 0xda, 0x25, 0x9b, 0x1e, 0x14, 0x5f, 0xaa, 0x2d, 0xa6, 0x81, 0x38, 0x5b, 0x1f, - 0x7d, 0x5a, 0x83, 0x19, 0x9e, 0xe6, 0x8f, 0x1e, 0x61, 0x9e, 0x4b, 0xdc, 0x30, 0x60, 0x79, 0xec, - 0x4a, 0xbe, 0x51, 0x6c, 0xa5, 0x70, 0xf1, 0xc4, 0x2c, 0xe9, 0x52, 0x9c, 0xa1, 0x49, 0x57, 0x8e, - 0xfa, 0x64, 0x9c, 0xa5, 0xc3, 0x2b, 0xb9, 0x72, 0xd4, 0xe7, 0xe8, 0x7c, 0xe5, 0xa8, 0x25, 0x38, - 0x41, 0x47, 0xff, 0x8f, 0x1a, 0x80, 0x34, 0x8c, 0x9c, 0x86, 0xb9, 0xdf, 0x4a, 0xd8, 0x8a, 0x16, - 0x06, 0x32, 0xe4, 0x90, 0x42, 0xa3, 0xff, 0x9f, 0x68, 0x30, 0x1d, 0x57, 0x3b, 0x05, 0x05, 0xc4, - 0x4c, 0x2a, 0x20, 0xef, 0x1b, 0xec, 0xbb, 0x0a, 0xb4, 0x90, 0xff, 0x57, 0x51, 0xbf, 0x8a, 0x09, - 0x57, 0xdb, 0x89, 0x2b, 0x6c, 0x4a, 0xfa, 0xe6, 0x20, 0x57, 0xd8, 0xea, 0x6b, 0xd4, 0xf8, 0x7b, - 0x73, 0xae, 0xb4, 0xff, 0x5e, 0x42, 0xb4, 0x19, 0xe0, 0xcd, 0xb5, 0x94, 0x63, 0x22, 0xd2, 0x7c, - 0x00, 0x0e, 0x92, 0x73, 0x5e, 0x51, 0x39, 0x1e, 0xbf, 0x0c, 0x7f, 0x7f, 0xb9, 0x87, 0xbe, 0xca, - 0x07, 0xf7, 0xe5, 0x73, 0xfa, 0xb7, 0xa7, 0x60, 0x42, 0xb1, 0x21, 0xa6, 0x2e, 0xe4, 0xb5, 0xd3, - 0xb8, 0x90, 0x0f, 0x61, 0xc2, 0x94, 0x41, 0xa0, 0xa3, 0x61, 0x1f, 0x90, 0xa6, 0xe4, 0xb4, 0x71, - 0x78, 0xe9, 0x00, 0xab, 0x64, 0xa8, 0x4c, 0x20, 0xd7, 0xd8, 0xd0, 0x31, 0xb8, 0x49, 0xf4, 0x5b, - 0x57, 0x4f, 0x00, 0x44, 0xa2, 0x25, 0xb1, 0x44, 0x68, 0x40, 0x99, 0x3c, 0xa5, 0x19, 0xdc, 0x94, - 0x30, 0xac, 0xd4, 0x43, 0xaf, 0xc2, 0x94, 0xa3, 0x66, 0x13, 0x10, 0x72, 0x6f, 0xa9, 0xb7, 0x34, - 0x89, 0xb4, 0x04, 0xdc, 0x28, 0x96, 0x28, 0xc2, 0x49, 0x52, 0x74, 0x19, 0x38, 0x51, 0xa6, 0x90, - 0x81, 0x5c, 0x7e, 0x64, 0xbe, 0x91, 0x78, 0x19, 0xc8, 0xa2, 0x00, 0x2b, 0x44, 0x0a, 0xfc, 0x32, - 0xc6, 0x4a, 0xf9, 0x65, 0xf4, 0xe0, 0x9c, 0x4f, 0x42, 0x7f, 0xb7, 0xbe, 0x6b, 0xb2, 0x04, 0x3a, - 0x7e, 0xc8, 0x14, 0xc4, 0x6a, 0xb9, 0x60, 0x3d, 0x38, 0x8b, 0x0a, 0xe7, 0xe1, 0x4f, 0xc8, 0x54, - 0xe3, 0x7d, 0x65, 0xaa, 0x77, 0xc2, 0x44, 0x48, 0xcc, 0x4d, 0xd7, 0x36, 0x0d, 0xa7, 0xd9, 0x10, - 0x71, 0xf3, 0x62, 0xf1, 0x20, 0x06, 0x61, 0xb5, 0x1e, 0x5a, 0x80, 0xa1, 0x9e, 0x6d, 0x09, 0xc1, - 0xf2, 0xa7, 0xa5, 0x35, 0xbe, 0xd9, 0xb8, 0xb7, 0x57, 0x7b, 0x73, 0xec, 0xe8, 0x20, 0xbf, 0xea, - 0x5a, 0x77, 0xab, 0x7d, 0x2d, 0xdc, 0xed, 0x92, 0x60, 0xee, 0x4e, 0xb3, 0x81, 0x69, 0xe3, 0x3c, - 0x9f, 0x95, 0xc9, 0x23, 0xf8, 0xac, 0x7c, 0x59, 0x83, 0x73, 0x46, 0xfa, 0x22, 0x81, 0x04, 0xb3, - 0x53, 0xe5, 0xb9, 0x65, 0xfe, 0xe5, 0x44, 0x1c, 0x33, 0x79, 0x3e, 0x4b, 0x0e, 0xe7, 0xf5, 0x01, - 0xf9, 0x80, 0x3a, 0x76, 0x5b, 0x26, 0xed, 0x10, 0xb3, 0x3e, 0x5d, 0xce, 0x2c, 0xb0, 0x9c, 0xc1, - 0x84, 0x73, 0xb0, 0xa3, 0xbb, 0x30, 0x61, 0xc6, 0xd7, 0x0d, 0x42, 0x38, 0x6e, 0x1c, 0xc7, 0x7d, - 0x87, 0xc8, 0xc0, 0xaf, 0xdc, 0x65, 0xa8, 0x94, 0xe4, 0x45, 0xa1, 0xa2, 0xc1, 0x8a, 0xcb, 0x32, - 0xf6, 0xd5, 0x33, 0xe5, 0x2f, 0x0a, 0xf3, 0x31, 0xe2, 0x3e, 0xd4, 0x58, 0x88, 0x1c, 0x27, 0x99, - 0x5b, 0x87, 0x65, 0x76, 0x2e, 0xf9, 0x38, 0x36, 0x95, 0xa6, 0x87, 0x2f, 0xcd, 0x54, 0x21, 0x4e, - 0x13, 0xd4, 0xbf, 0xa7, 0x09, 0x33, 0xe0, 0x29, 0x3a, 0x7a, 0x9c, 0xf4, 0x2d, 0xa1, 0xfe, 0x17, - 0x1a, 0x64, 0x44, 0x6d, 0xb4, 0x0e, 0x63, 0x14, 0x45, 0x63, 0xa5, 0x25, 0x3e, 0xeb, 0x3d, 0xe5, - 0x8e, 0x4b, 0x86, 0x82, 0xdb, 0x54, 0xc5, 0x0f, 0x1c, 0x21, 0xa6, 0xc2, 0xbb, 0xab, 0x84, 0xee, - 0x15, 0x5f, 0x58, 0x4a, 0x1e, 0x51, 0x43, 0x00, 0x73, 0xe1, 0x5d, 0x2d, 0xc1, 0x09, 0x3a, 0xfa, - 0x12, 0x40, 0xac, 0x1e, 0x0d, 0xec, 0xfb, 0xf3, 0xe3, 0x11, 0xb8, 0x30, 0xe8, 0x53, 0x0a, 0x96, - 0xd2, 0x85, 0x25, 0xd9, 0x9f, 0xdf, 0x08, 0x89, 0x7f, 0xfb, 0xf6, 0xb2, 0xcc, 0x41, 0x5e, 0x32, - 0xa7, 0x0c, 0xbb, 0x2b, 0x5c, 0xcc, 0xc5, 0x88, 0x0b, 0x28, 0x31, 0xd5, 0x50, 0xa4, 0x98, 0xc5, - 0x54, 0x98, 0x64, 0x09, 0xc6, 0x79, 0x80, 0x10, 0xae, 0x1a, 0xa6, 0x81, 0x38, 0x5b, 0x3f, 0x8d, - 0x84, 0x27, 0xfc, 0xa7, 0x02, 0x89, 0x96, 0x45, 0xc2, 0xb3, 0xfe, 0x67, 0xeb, 0xab, 0x48, 0xf8, - 0x4c, 0xd1, 0xdd, 0x3e, 0x92, 0x45, 0x22, 0x81, 0x38, 0x5b, 0x1f, 0x59, 0xf0, 0x80, 0x4f, 0x4c, - 0xaf, 0xd3, 0x21, 0xae, 0xc5, 0xb3, 0xa5, 0x19, 0x7e, 0xdb, 0x76, 0xaf, 0xfb, 0x06, 0xab, 0xc8, - 0x2c, 0x6e, 0xda, 0xc2, 0xd5, 0xfd, 0xbd, 0xda, 0x03, 0xb8, 0x4f, 0x3d, 0xdc, 0x17, 0x0b, 0xea, - 0xc0, 0x99, 0x1e, 0x8b, 0xf3, 0xef, 0x37, 0xdd, 0x90, 0xf8, 0xdb, 0x86, 0x23, 0xcc, 0x6a, 0xa5, - 0xd2, 0xc4, 0xde, 0x49, 0xa2, 0xc2, 0x69, 0xdc, 0x68, 0x97, 0xca, 0x1d, 0xa2, 0x3b, 0x0a, 0xc9, - 0x6a, 0xf9, 0xa4, 0x47, 0x38, 0x8b, 0x0e, 0xe7, 0xd1, 0xd0, 0xbf, 0xac, 0x81, 0x70, 0x74, 0x46, - 0x0f, 0x24, 0x6e, 0x70, 0xaa, 0xa9, 0xdb, 0x9b, 0x07, 0xc4, 0x4b, 0xe5, 0x4a, 0x0c, 0x55, 0x5e, - 0x29, 0xbf, 0x55, 0x89, 0x3c, 0x33, 0x1e, 0xf3, 0x3e, 0x8e, 0x59, 0xc9, 0x94, 0xf1, 0x36, 0x18, - 0x27, 0xfc, 0x72, 0x50, 0x4a, 0xb4, 0xcc, 0x79, 0x7c, 0x31, 0x2a, 0xc4, 0x31, 0x5c, 0xff, 0x63, - 0x0d, 0x04, 0x06, 0x96, 0xd7, 0xe5, 0x50, 0xf9, 0x3d, 0x0e, 0xf4, 0xda, 0x52, 0xf2, 0x92, 0x0c, - 0x15, 0xe6, 0x25, 0x39, 0xa1, 0x74, 0x1d, 0xdf, 0xd0, 0xe0, 0x4c, 0x32, 0x14, 0x50, 0x80, 0xde, - 0x02, 0x63, 0x22, 0x58, 0xa0, 0x88, 0xf6, 0xc5, 0xa3, 0x1a, 0x88, 0xac, 0xfd, 0x11, 0x2c, 0x69, - 0xd5, 0x1a, 0x40, 0xc5, 0xcc, 0x8f, 0x48, 0x74, 0x80, 0xb6, 0xf7, 0xa7, 0xd3, 0x30, 0xca, 0x23, - 0xcd, 0x51, 0x9e, 0x96, 0xf3, 0xc2, 0xf5, 0x56, 0xf9, 0x80, 0x76, 0x65, 0x9e, 0x24, 0xaa, 0x21, - 0xcd, 0x2b, 0x7d, 0x43, 0x9a, 0x63, 0x9e, 0x06, 0x69, 0x80, 0x9b, 0x8c, 0x3a, 0x6e, 0x8a, 0xec, - 0xc7, 0x51, 0x0a, 0xa4, 0x30, 0x61, 0xe2, 0x1f, 0x2e, 0x2f, 0xb9, 0xf1, 0x01, 0x50, 0x0c, 0xfd, - 0xd3, 0x7d, 0x8c, 0xfc, 0x71, 0x28, 0xaf, 0x91, 0xf2, 0x5e, 0x94, 0x62, 0xc8, 0x0f, 0x11, 0xca, - 0x4b, 0x6e, 0xa4, 0xd1, 0xc2, 0x8d, 0xb4, 0x01, 0x63, 0x62, 0x2b, 0x08, 0xe6, 0xf8, 0x9e, 0x01, - 0xf2, 0x09, 0x29, 0xd1, 0x67, 0x79, 0x01, 0x8e, 0x90, 0xd3, 0x13, 0xb7, 0x63, 0xec, 0xd8, 0x9d, - 0x5e, 0x87, 0x71, 0xc4, 0x11, 0xb5, 0x2a, 0x2b, 0xc6, 0x11, 0x9c, 0x55, 0xe5, 0xce, 0xa7, 0x4c, - 0x91, 0x52, 0xab, 0x8a, 0xec, 0xfd, 0x11, 0x1c, 0xbd, 0x08, 0xd5, 0x8e, 0xb1, 0xd3, 0xea, 0xf9, - 0x6d, 0x22, 0x8c, 0xfb, 0xc5, 0x32, 0x5e, 0x2f, 0xb4, 0x9d, 0x39, 0xaa, 0xfe, 0x87, 0xfe, 0x5c, - 0xd3, 0x0d, 0x6f, 0xfb, 0xad, 0xd0, 0x97, 0x19, 0x4b, 0x96, 0x05, 0x16, 0x2c, 0xf1, 0x21, 0x07, - 0xa6, 0x3b, 0xc6, 0xce, 0x1d, 0xd7, 0x90, 0x49, 0xc6, 0x27, 0x4a, 0x52, 0x60, 0x97, 0xdd, 0xcb, - 0x09, 0x5c, 0x38, 0x85, 0x3b, 0xe7, 0x5e, 0x7d, 0xf2, 0xa4, 0xee, 0xd5, 0xe7, 0xe5, 0x73, 0x1e, - 0xae, 0xb7, 0x5d, 0xca, 0x7b, 0x1d, 0xd4, 0xff, 0xa9, 0xce, 0x4b, 0xf2, 0xa9, 0xce, 0x74, 0xf9, - 0x1b, 0xd0, 0x3e, 0xcf, 0x74, 0x7a, 0x30, 0x41, 0x25, 0x6c, 0x5e, 0x4a, 0x15, 0xab, 0xd2, 0x26, - 0xc8, 0x86, 0x44, 0xa3, 0x24, 0xad, 0x8c, 0x51, 0x63, 0x95, 0x0e, 0xba, 0xcd, 0x93, 0x50, 0x3b, - 0x24, 0x8c, 0xab, 0x30, 0x85, 0x7e, 0x86, 0x5f, 0xb2, 0x44, 0x39, 0xa3, 0x33, 0x15, 0x70, 0x7e, - 0xbb, 0x38, 0xc8, 0xc6, 0xd9, 0xfc, 0x20, 0x1b, 0xe8, 0x17, 0xf3, 0xcc, 0xf5, 0xa8, 0xfc, 0xf3, - 0x48, 0xce, 0x1b, 0x4a, 0x1b, 0xed, 0x7f, 0x57, 0x83, 0xd9, 0x4e, 0x41, 0x76, 0x47, 0x71, 0x8b, - 0xb0, 0x36, 0x00, 0x7f, 0x28, 0xcc, 0x18, 0xb9, 0xf0, 0xf0, 0xfe, 0x5e, 0xed, 0xc0, 0xbc, 0x92, - 0xb8, 0xb0, 0x6f, 0x83, 0x3e, 0x2b, 0x1f, 0x24, 0xe6, 0xe1, 0xaf, 0x6b, 0x30, 0x93, 0x3e, 0x04, - 0xd4, 0xbc, 0xd9, 0xda, 0xc9, 0xe6, 0xcd, 0x56, 0xbc, 0x64, 0x2a, 0x7d, 0xbc, 0x64, 0x9e, 0x86, - 0x8b, 0xf9, 0x6b, 0x83, 0x4a, 0x64, 0x2c, 0x4f, 0xbd, 0xd0, 0x84, 0xe2, 0x04, 0x3b, 0xb4, 0x10, - 0x73, 0x98, 0xfe, 0x51, 0x48, 0x47, 0xa9, 0x45, 0x2f, 0xc3, 0x78, 0x10, 0x6c, 0xf2, 0x00, 0x84, - 0xe2, 0x23, 0xcb, 0xa9, 0xc0, 0x51, 0x14, 0x43, 0xf1, 0x02, 0x31, 0xfa, 0x89, 0x63, 0xf4, 0x0b, - 0x2f, 0x7c, 0xeb, 0x47, 0x57, 0xde, 0xf4, 0xdd, 0x1f, 0x5d, 0x79, 0xd3, 0xf7, 0x7f, 0x74, 0xe5, - 0x4d, 0x3f, 0xb7, 0x7f, 0x45, 0xfb, 0xd6, 0xfe, 0x15, 0xed, 0xbb, 0xfb, 0x57, 0xb4, 0xef, 0xef, - 0x5f, 0xd1, 0xfe, 0xeb, 0xfe, 0x15, 0xed, 0x0b, 0xff, 0xed, 0xca, 0x9b, 0x5e, 0x7c, 0x3c, 0xa6, - 0x7e, 0x2d, 0x22, 0x1a, 0xff, 0xd3, 0xdd, 0x6a, 0x5f, 0xa3, 0xd4, 0xa3, 0x97, 0x40, 0x8c, 0xfa, - 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x83, 0x80, 0x4a, 0x81, 0xe6, 0xe1, 0x00, 0x00, + // 11658 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x6c, 0x24, 0xc9, + 0x75, 0x18, 0xae, 0x1e, 0x7e, 0x0d, 0x1f, 0x3f, 0x96, 0x5b, 0xfb, 0x71, 0x5c, 0xee, 0xdd, 0xce, + 0xaa, 0xef, 0xa4, 0xdf, 0xdd, 0x4f, 0x32, 0xd7, 0x77, 0x3a, 0x59, 0xba, 0x95, 0x4f, 0x27, 0x72, + 0x86, 0xbb, 0x3b, 0x5a, 0x92, 0xcb, 0xab, 0xe1, 0xee, 0x9d, 0x4e, 0xce, 0x45, 0xcd, 0xee, 0xe2, + 0xb0, 0x8f, 0x3d, 0xdd, 0x73, 0xdd, 0x3d, 0x5c, 0xce, 0x9d, 0x14, 0x59, 0x8a, 0x3e, 0x2c, 0xd9, + 0x32, 0x04, 0x01, 0x8e, 0x22, 0xc9, 0x81, 0xcf, 0x30, 0x1c, 0x27, 0x70, 0xa0, 0x04, 0x49, 0x64, + 0xc0, 0x36, 0x02, 0x18, 0x02, 0x02, 0x4b, 0x86, 0x62, 0x28, 0x72, 0x82, 0x28, 0x40, 0x44, 0x47, + 0x8c, 0x23, 0x07, 0x48, 0x60, 0x04, 0x30, 0x82, 0x00, 0x1b, 0x23, 0x08, 0xea, 0xab, 0xbb, 0xba, + 0xa7, 0x7b, 0x48, 0xf6, 0x90, 0x94, 0x0e, 0xf6, 0x5f, 0xe4, 0xd4, 0xab, 0x7a, 0xaf, 0xba, 0x3e, + 0x5e, 0xbd, 0xf7, 0xea, 0xd5, 0x7b, 0xb0, 0xd8, 0xb4, 0xc3, 0xad, 0xce, 0xc6, 0xbc, 0xe9, 0xb5, + 0xae, 0x35, 0x0d, 0xdf, 0x22, 0x2e, 0xf1, 0xe3, 0x7f, 0xda, 0xdb, 0xcd, 0x6b, 0x46, 0xdb, 0x0e, + 0xae, 0x99, 0x9e, 0x4f, 0xae, 0xed, 0x3c, 0xb9, 0x41, 0x42, 0xe3, 0xc9, 0x6b, 0x4d, 0x0a, 0x33, + 0x42, 0x62, 0xcd, 0xb7, 0x7d, 0x2f, 0xf4, 0xd0, 0x53, 0x31, 0x8e, 0x79, 0xd9, 0x34, 0xfe, 0xa7, + 0xbd, 0xdd, 0x9c, 0xa7, 0x38, 0xe6, 0x29, 0x8e, 0x79, 0x81, 0x63, 0xee, 0xa7, 0x54, 0xba, 0x5e, + 0xd3, 0xbb, 0xc6, 0x50, 0x6d, 0x74, 0x36, 0xd9, 0x2f, 0xf6, 0x83, 0xfd, 0xc7, 0x49, 0xcc, 0x3d, + 0xb1, 0xfd, 0xde, 0x60, 0xde, 0xf6, 0x68, 0x67, 0xae, 0x19, 0x9d, 0xd0, 0x0b, 0x4c, 0xc3, 0xb1, + 0xdd, 0xe6, 0xb5, 0x9d, 0x9e, 0xde, 0xcc, 0xe9, 0x4a, 0x55, 0xd1, 0xed, 0xbe, 0x75, 0xfc, 0x0d, + 0xc3, 0xcc, 0xaa, 0xf3, 0x74, 0x5c, 0xa7, 0x65, 0x98, 0x5b, 0xb6, 0x4b, 0xfc, 0xae, 0x1c, 0x90, + 0x6b, 0x3e, 0x09, 0xbc, 0x8e, 0x6f, 0x92, 0x23, 0xb5, 0x0a, 0xae, 0xb5, 0x48, 0x68, 0x64, 0xd1, + 0xba, 0x96, 0xd7, 0xca, 0xef, 0xb8, 0xa1, 0xdd, 0xea, 0x25, 0xf3, 0x33, 0x07, 0x35, 0x08, 0xcc, + 0x2d, 0xd2, 0x32, 0x7a, 0xda, 0xbd, 0x2b, 0xaf, 0x5d, 0x27, 0xb4, 0x9d, 0x6b, 0xb6, 0x1b, 0x06, + 0xa1, 0x9f, 0x6e, 0xa4, 0x3f, 0x05, 0x23, 0x0b, 0x96, 0xe5, 0xb9, 0xe8, 0x09, 0x18, 0x23, 0xae, + 0xb1, 0xe1, 0x10, 0x6b, 0x56, 0xbb, 0xaa, 0x3d, 0x5e, 0x5e, 0x3c, 0xf3, 0xad, 0xbd, 0xca, 0x5b, + 0xf6, 0xf7, 0x2a, 0x63, 0x4b, 0xbc, 0x18, 0x4b, 0xb8, 0xfe, 0x2b, 0x25, 0x18, 0x65, 0x8d, 0x02, + 0xf4, 0x25, 0x0d, 0xce, 0x6d, 0x77, 0x36, 0x88, 0xef, 0x92, 0x90, 0x04, 0x35, 0x23, 0xd8, 0xda, + 0xf0, 0x0c, 0x9f, 0xa3, 0x98, 0x78, 0xea, 0xe6, 0xfc, 0xd1, 0x57, 0xcf, 0xfc, 0xed, 0x5e, 0x74, + 0x8b, 0x0f, 0xed, 0xef, 0x55, 0xce, 0x65, 0x00, 0x70, 0x16, 0x71, 0xb4, 0x03, 0x93, 0x6e, 0xd3, + 0x76, 0x77, 0xeb, 0x6e, 0xd3, 0x27, 0x41, 0x30, 0x5b, 0x62, 0x9d, 0xf9, 0x40, 0x91, 0xce, 0xac, + 0x2a, 0x78, 0x16, 0x67, 0xf6, 0xf7, 0x2a, 0x93, 0x6a, 0x09, 0x4e, 0xd0, 0xd1, 0xff, 0xaf, 0x06, + 0x67, 0x16, 0xac, 0x96, 0x1d, 0x04, 0xb6, 0xe7, 0xae, 0x39, 0x9d, 0xa6, 0xed, 0xa2, 0xab, 0x30, + 0xec, 0x1a, 0x2d, 0xc2, 0x06, 0x64, 0x7c, 0x71, 0x52, 0x8c, 0xe9, 0xf0, 0xaa, 0xd1, 0x22, 0x98, + 0x41, 0xd0, 0xf3, 0x30, 0x6a, 0x7a, 0xee, 0xa6, 0xdd, 0x14, 0xfd, 0xfc, 0xa9, 0x79, 0x3e, 0x8f, + 0xf3, 0xea, 0x3c, 0xb2, 0xee, 0x89, 0xf9, 0x9f, 0xc7, 0xc6, 0xfd, 0xa5, 0xdd, 0x90, 0xb8, 0x94, + 0xcc, 0x22, 0xec, 0xef, 0x55, 0x46, 0xab, 0x0c, 0x01, 0x16, 0x88, 0xd0, 0xe3, 0x50, 0xb6, 0xec, + 0x80, 0x4f, 0xe6, 0x10, 0x9b, 0xcc, 0xc9, 0xfd, 0xbd, 0x4a, 0xb9, 0x26, 0xca, 0x70, 0x04, 0x45, + 0xcb, 0x70, 0x9e, 0x8e, 0x20, 0x6f, 0xd7, 0x20, 0xa6, 0x4f, 0x42, 0xda, 0xb5, 0xd9, 0x61, 0xd6, + 0xdd, 0xd9, 0xfd, 0xbd, 0xca, 0xf9, 0xdb, 0x19, 0x70, 0x9c, 0xd9, 0x4a, 0xbf, 0x01, 0xe5, 0x05, + 0x87, 0xf8, 0xa1, 0xed, 0x36, 0xd1, 0x75, 0x98, 0x26, 0x2d, 0xc3, 0x76, 0x30, 0x31, 0x89, 0xbd, + 0x43, 0xfc, 0x60, 0x56, 0xbb, 0x3a, 0xf4, 0xf8, 0xf8, 0x22, 0xda, 0xdf, 0xab, 0x4c, 0x2f, 0x25, + 0x20, 0x38, 0x55, 0x53, 0xff, 0x84, 0x06, 0x13, 0x0b, 0x1d, 0xcb, 0x0e, 0xf9, 0x77, 0x21, 0x1f, + 0x26, 0x0c, 0xfa, 0x73, 0xcd, 0x73, 0x6c, 0xb3, 0x2b, 0x16, 0xd7, 0x73, 0x45, 0xe6, 0x73, 0x21, + 0x46, 0xb3, 0x78, 0x66, 0x7f, 0xaf, 0x32, 0xa1, 0x14, 0x60, 0x95, 0x88, 0xbe, 0x05, 0x2a, 0x0c, + 0x7d, 0x08, 0x26, 0xf9, 0xe7, 0xae, 0x18, 0x6d, 0x4c, 0x36, 0x45, 0x1f, 0x1e, 0x55, 0xe6, 0x4a, + 0x12, 0x9a, 0xbf, 0xb3, 0xf1, 0x0a, 0x31, 0x43, 0x4c, 0x36, 0x89, 0x4f, 0x5c, 0x93, 0xf0, 0x65, + 0x53, 0x55, 0x1a, 0xe3, 0x04, 0x2a, 0xfd, 0x4f, 0x35, 0x98, 0x59, 0xd8, 0x31, 0x6c, 0xc7, 0xd8, + 0xb0, 0x1d, 0x3b, 0xec, 0xbe, 0xe4, 0xb9, 0xe4, 0x10, 0xeb, 0xe6, 0x2e, 0x3c, 0xd4, 0x71, 0x0d, + 0xde, 0xce, 0x21, 0x2b, 0x7c, 0xa5, 0xac, 0x77, 0xdb, 0x84, 0x2e, 0x78, 0x3a, 0xd2, 0x97, 0xf7, + 0xf7, 0x2a, 0x0f, 0xdd, 0xcd, 0xae, 0x82, 0xf3, 0xda, 0x22, 0x0c, 0x17, 0x15, 0xd0, 0x3d, 0xcf, + 0xe9, 0xb4, 0x04, 0xd6, 0x21, 0x86, 0x75, 0x6e, 0x7f, 0xaf, 0x72, 0xf1, 0x6e, 0x66, 0x0d, 0x9c, + 0xd3, 0x52, 0xff, 0x56, 0x09, 0x26, 0x17, 0x0d, 0x73, 0xbb, 0xd3, 0x5e, 0xec, 0x98, 0xdb, 0x24, + 0x44, 0x1f, 0x81, 0x32, 0x65, 0x97, 0x96, 0x11, 0x1a, 0x62, 0x24, 0x7f, 0x3a, 0x77, 0xd5, 0xb3, + 0x49, 0xa4, 0xb5, 0xe3, 0xb1, 0x5d, 0x21, 0xa1, 0xb1, 0x88, 0xc4, 0x98, 0x40, 0x5c, 0x86, 0x23, + 0xac, 0x68, 0x13, 0x86, 0x83, 0x36, 0x31, 0xc5, 0x9e, 0xaa, 0x15, 0x59, 0x2b, 0x6a, 0x8f, 0x1b, + 0x6d, 0x62, 0xc6, 0xb3, 0x40, 0x7f, 0x61, 0x86, 0x1f, 0xb9, 0x30, 0x1a, 0x84, 0x46, 0xd8, 0x09, + 0xd8, 0x46, 0x9b, 0x78, 0xea, 0xc6, 0xc0, 0x94, 0x18, 0xb6, 0xc5, 0x69, 0x41, 0x6b, 0x94, 0xff, + 0xc6, 0x82, 0x8a, 0xfe, 0x1f, 0x34, 0x98, 0x51, 0xab, 0x2f, 0xdb, 0x41, 0x88, 0x7e, 0xae, 0x67, + 0x38, 0xe7, 0x0f, 0x37, 0x9c, 0xb4, 0x35, 0x1b, 0xcc, 0x19, 0x41, 0xae, 0x2c, 0x4b, 0x94, 0xa1, + 0x24, 0x30, 0x62, 0x87, 0xa4, 0xc5, 0x97, 0x55, 0x41, 0x3e, 0xaa, 0x76, 0x79, 0x71, 0x4a, 0x10, + 0x1b, 0xa9, 0x53, 0xb4, 0x98, 0x63, 0xd7, 0x3f, 0x02, 0xe7, 0xd5, 0x5a, 0x6b, 0xbe, 0xb7, 0x63, + 0x5b, 0xc4, 0xa7, 0x3b, 0x21, 0xec, 0xb6, 0x7b, 0x76, 0x02, 0x5d, 0x59, 0x98, 0x41, 0xd0, 0xdb, + 0x61, 0xd4, 0x27, 0x4d, 0xdb, 0x73, 0xd9, 0x6c, 0x8f, 0xc7, 0x63, 0x87, 0x59, 0x29, 0x16, 0x50, + 0xfd, 0x7f, 0x95, 0x92, 0x63, 0x47, 0xa7, 0x11, 0xed, 0x40, 0xb9, 0x2d, 0x48, 0x89, 0xb1, 0xbb, + 0x35, 0xe8, 0x07, 0xca, 0xae, 0xc7, 0xa3, 0x2a, 0x4b, 0x70, 0x44, 0x0b, 0xd9, 0x30, 0x2d, 0xff, + 0xaf, 0x0e, 0xc0, 0xfe, 0x19, 0x3b, 0x5d, 0x4b, 0x20, 0xc2, 0x29, 0xc4, 0x68, 0x1d, 0xc6, 0x03, + 0xc6, 0xa4, 0x29, 0xe3, 0x1a, 0xca, 0x67, 0x5c, 0x0d, 0x59, 0x49, 0x30, 0xae, 0xb3, 0xa2, 0xfb, + 0xe3, 0x11, 0x00, 0xc7, 0x88, 0xe8, 0x21, 0x13, 0x10, 0x62, 0x29, 0xc7, 0x05, 0x3b, 0x64, 0x1a, + 0xa2, 0x0c, 0x47, 0x50, 0xfd, 0x8d, 0x61, 0x40, 0xbd, 0x4b, 0x5c, 0x1d, 0x01, 0x5e, 0x22, 0xc6, + 0x7f, 0x90, 0x11, 0x10, 0xbb, 0x25, 0x85, 0x18, 0xbd, 0x06, 0x53, 0x8e, 0x11, 0x84, 0x77, 0xda, + 0x54, 0xf6, 0x91, 0x0b, 0x65, 0xe2, 0xa9, 0x85, 0x22, 0x33, 0xbd, 0xac, 0x22, 0x5a, 0x3c, 0xbb, + 0xbf, 0x57, 0x99, 0x4a, 0x14, 0xe1, 0x24, 0x29, 0xf4, 0x0a, 0x8c, 0xd3, 0x82, 0x25, 0xdf, 0xf7, + 0x7c, 0x31, 0xfa, 0xcf, 0x16, 0xa5, 0xcb, 0x90, 0x2c, 0x4e, 0xd1, 0x39, 0x89, 0x7e, 0xe2, 0x18, + 0x3d, 0xfa, 0x20, 0x20, 0x6f, 0x23, 0x20, 0xfe, 0x0e, 0xb1, 0x6e, 0x72, 0x41, 0x8f, 0x7e, 0x2c, + 0x9d, 0x9d, 0xa1, 0xc5, 0x39, 0x31, 0x9b, 0xe8, 0x4e, 0x4f, 0x0d, 0x9c, 0xd1, 0x0a, 0x6d, 0x03, + 0x8a, 0x84, 0xc5, 0x68, 0x01, 0xcc, 0x8e, 0x1c, 0x7e, 0xf9, 0x5c, 0xa4, 0xc4, 0x6e, 0xf6, 0xa0, + 0xc0, 0x19, 0x68, 0xf5, 0x7f, 0x5d, 0x82, 0x09, 0xbe, 0x44, 0x96, 0xdc, 0xd0, 0xef, 0x9e, 0xc2, + 0x01, 0x41, 0x12, 0x07, 0x44, 0xb5, 0xf8, 0x9e, 0x67, 0x1d, 0xce, 0x3d, 0x1f, 0x5a, 0xa9, 0xf3, + 0x61, 0x69, 0x50, 0x42, 0xfd, 0x8f, 0x87, 0x7f, 0xaf, 0xc1, 0x19, 0xa5, 0xf6, 0x29, 0x9c, 0x0e, + 0x56, 0xf2, 0x74, 0x78, 0x6e, 0xc0, 0xef, 0xcb, 0x39, 0x1c, 0xbc, 0xc4, 0x67, 0x31, 0xc6, 0xfd, + 0x14, 0xc0, 0x06, 0x63, 0x27, 0xab, 0xb1, 0x9c, 0x14, 0x4d, 0xf9, 0x62, 0x04, 0xc1, 0x4a, 0xad, + 0x04, 0xcf, 0x2a, 0xf5, 0xe5, 0x59, 0xff, 0x75, 0x08, 0xce, 0xf6, 0x0c, 0x7b, 0x2f, 0x1f, 0xd1, + 0x7e, 0x4c, 0x7c, 0xa4, 0xf4, 0xe3, 0xe0, 0x23, 0x43, 0x85, 0xf8, 0xc8, 0xa1, 0xcf, 0x09, 0xe4, + 0x03, 0x6a, 0xd9, 0x4d, 0xde, 0xac, 0x11, 0x1a, 0x7e, 0xb8, 0x6e, 0xb7, 0x88, 0xe0, 0x38, 0xff, + 0xff, 0xe1, 0x96, 0x2c, 0x6d, 0xc1, 0x19, 0xcf, 0x4a, 0x0f, 0x26, 0x9c, 0x81, 0x5d, 0xff, 0xde, + 0x30, 0x40, 0x75, 0x01, 0x7b, 0x21, 0xef, 0xec, 0x73, 0x30, 0xd2, 0xde, 0x32, 0x02, 0xb9, 0x9e, + 0x9e, 0x90, 0x8b, 0x71, 0x8d, 0x16, 0x3e, 0xd8, 0xab, 0xcc, 0x56, 0x7d, 0x62, 0x11, 0x37, 0xb4, + 0x0d, 0x27, 0x90, 0x8d, 0x18, 0x0c, 0xf3, 0x76, 0xf4, 0x1b, 0xe8, 0x30, 0x56, 0xbd, 0x56, 0xdb, + 0x21, 0x14, 0xca, 0xbe, 0xa1, 0x54, 0xec, 0x1b, 0x96, 0x7b, 0x30, 0xe1, 0x0c, 0xec, 0x92, 0x66, + 0xdd, 0xb5, 0x43, 0xdb, 0x88, 0x68, 0x0e, 0x15, 0xa7, 0x99, 0xc4, 0x84, 0x33, 0xb0, 0xa3, 0xcf, + 0x6b, 0x30, 0x97, 0x2c, 0xbe, 0x61, 0xbb, 0x76, 0xb0, 0x45, 0x2c, 0x46, 0x7c, 0xf8, 0xc8, 0xc4, + 0xaf, 0xec, 0xef, 0x55, 0xe6, 0x96, 0x73, 0x31, 0xe2, 0x3e, 0xd4, 0xd0, 0x17, 0x34, 0xb8, 0x9c, + 0x1a, 0x17, 0xdf, 0x6e, 0x36, 0x89, 0x2f, 0x7a, 0x73, 0xf4, 0x25, 0x54, 0xd9, 0xdf, 0xab, 0x5c, + 0x5e, 0xce, 0x47, 0x89, 0xfb, 0xd1, 0xd3, 0xbf, 0xa9, 0xc1, 0x50, 0x15, 0xd7, 0xd1, 0x3b, 0x12, + 0x4a, 0xdc, 0x43, 0xaa, 0x12, 0xf7, 0x60, 0xaf, 0x32, 0x56, 0xc5, 0x75, 0x45, 0x9f, 0xfb, 0x82, + 0x06, 0x67, 0x4d, 0xcf, 0x0d, 0x0d, 0xda, 0x2f, 0xcc, 0x25, 0x1d, 0xc9, 0x55, 0x0b, 0xe9, 0x2f, + 0xd5, 0x14, 0xb2, 0xc5, 0x4b, 0xa2, 0x03, 0x67, 0xd3, 0x90, 0x00, 0xf7, 0x52, 0xd6, 0xbf, 0xaf, + 0xc1, 0x64, 0xd5, 0xf1, 0x3a, 0xd6, 0x9a, 0xef, 0x6d, 0xda, 0x0e, 0x79, 0x73, 0x28, 0x6d, 0x6a, + 0x8f, 0xf3, 0x0e, 0x65, 0xa6, 0x44, 0xa9, 0x15, 0xdf, 0x24, 0x4a, 0x94, 0xda, 0xe5, 0x9c, 0x73, + 0xf2, 0x57, 0xc6, 0x92, 0x5f, 0xc6, 0x4e, 0xca, 0xc7, 0xa1, 0x6c, 0x1a, 0x8b, 0x1d, 0xd7, 0x72, + 0x22, 0x2d, 0x8a, 0xf6, 0xb2, 0xba, 0xc0, 0xcb, 0x70, 0x04, 0x45, 0xaf, 0x01, 0xc4, 0x06, 0x35, + 0x31, 0x0d, 0x37, 0x06, 0x33, 0xe2, 0x35, 0x48, 0x18, 0xda, 0x6e, 0x33, 0x88, 0xa7, 0x3e, 0x86, + 0x61, 0x85, 0x1a, 0xfa, 0x18, 0x4c, 0x89, 0x41, 0xae, 0xb7, 0x8c, 0xa6, 0xb0, 0x37, 0x14, 0x1c, + 0xa9, 0x15, 0x05, 0xd1, 0xe2, 0x05, 0x41, 0x78, 0x4a, 0x2d, 0x0d, 0x70, 0x92, 0x1a, 0xea, 0xc2, + 0x64, 0x4b, 0xb5, 0xa1, 0x0c, 0x17, 0x17, 0x67, 0x14, 0x7b, 0xca, 0xe2, 0x79, 0x41, 0x7c, 0x32, + 0x61, 0x7d, 0x49, 0x90, 0xca, 0x50, 0x05, 0x47, 0x4e, 0x4a, 0x15, 0x24, 0x30, 0xc6, 0x95, 0xe1, + 0x60, 0x76, 0x94, 0x7d, 0xe0, 0xf5, 0x22, 0x1f, 0xc8, 0xf5, 0xea, 0xd8, 0x42, 0xcc, 0x7f, 0x07, + 0x58, 0xe2, 0x46, 0x3b, 0x30, 0x49, 0x4f, 0xf5, 0x06, 0x71, 0x88, 0x19, 0x7a, 0xfe, 0xec, 0x58, + 0x71, 0x0b, 0x6c, 0x43, 0xc1, 0xc3, 0x4d, 0x69, 0x6a, 0x09, 0x4e, 0xd0, 0x89, 0x6c, 0x05, 0xe5, + 0x5c, 0x5b, 0x41, 0x07, 0x26, 0x76, 0x14, 0x9b, 0xd6, 0x38, 0x1b, 0x84, 0xf7, 0x17, 0xe9, 0x58, + 0x6c, 0xe0, 0x5a, 0x3c, 0x27, 0x08, 0x4d, 0xa8, 0xc6, 0x30, 0x95, 0x8e, 0xbe, 0x57, 0x86, 0xb3, + 0x55, 0xa7, 0x13, 0x84, 0xc4, 0x5f, 0x10, 0x57, 0x1c, 0xc4, 0x47, 0x9f, 0xd4, 0xe0, 0x22, 0xfb, + 0xb7, 0xe6, 0xdd, 0x77, 0x6b, 0xc4, 0x31, 0xba, 0x0b, 0x9b, 0xb4, 0x86, 0x65, 0x1d, 0x8d, 0x03, + 0xd5, 0x3a, 0x42, 0x8a, 0x64, 0xc6, 0xb9, 0x46, 0x26, 0x46, 0x9c, 0x43, 0x09, 0xfd, 0xa2, 0x06, + 0x97, 0x32, 0x40, 0x35, 0xe2, 0x90, 0x50, 0x4a, 0x2e, 0x47, 0xed, 0xc7, 0x23, 0xfb, 0x7b, 0x95, + 0x4b, 0x8d, 0x3c, 0xa4, 0x38, 0x9f, 0x1e, 0xfa, 0x65, 0x0d, 0xe6, 0x32, 0xa0, 0x37, 0x0c, 0xdb, + 0xe9, 0xf8, 0x52, 0xa8, 0x39, 0x6a, 0x77, 0x98, 0x6c, 0xd1, 0xc8, 0xc5, 0x8a, 0xfb, 0x50, 0x44, + 0x1f, 0x87, 0x0b, 0x11, 0xf4, 0xae, 0xeb, 0x12, 0x62, 0x25, 0x44, 0x9c, 0xa3, 0x76, 0xe5, 0xd2, + 0xfe, 0x5e, 0xe5, 0x42, 0x23, 0x0b, 0x21, 0xce, 0xa6, 0x83, 0x9a, 0xf0, 0x48, 0x0c, 0x08, 0x6d, + 0xc7, 0x7e, 0x8d, 0x4b, 0x61, 0x5b, 0x3e, 0x09, 0xb6, 0x3c, 0xc7, 0x62, 0xcc, 0x42, 0x5b, 0x7c, + 0xeb, 0xfe, 0x5e, 0xe5, 0x91, 0x46, 0xbf, 0x8a, 0xb8, 0x3f, 0x1e, 0x64, 0xc1, 0x64, 0x60, 0x1a, + 0x6e, 0xdd, 0x0d, 0x89, 0xbf, 0x63, 0x38, 0xb3, 0xa3, 0x85, 0x3e, 0x90, 0x6f, 0x51, 0x05, 0x0f, + 0x4e, 0x60, 0x45, 0xef, 0x85, 0x32, 0xd9, 0x6d, 0x1b, 0xae, 0x45, 0x38, 0x5b, 0x18, 0x5f, 0x7c, + 0x98, 0x1e, 0x46, 0x4b, 0xa2, 0xec, 0xc1, 0x5e, 0x65, 0x52, 0xfe, 0xbf, 0xe2, 0x59, 0x04, 0x47, + 0xb5, 0xd1, 0x47, 0xe1, 0x7c, 0xcb, 0xd8, 0x5d, 0xf5, 0x2c, 0xc2, 0x98, 0x5c, 0x20, 0x05, 0xdd, + 0x72, 0xa1, 0x7e, 0xb2, 0xbb, 0x8d, 0x95, 0x0c, 0x7c, 0x38, 0x93, 0x0a, 0x9d, 0x86, 0x96, 0xb1, + 0x7b, 0xd3, 0x37, 0x4c, 0xb2, 0xd9, 0x71, 0xd6, 0x89, 0xdf, 0xb2, 0x5d, 0xae, 0x4b, 0x10, 0xd3, + 0x73, 0x2d, 0xca, 0x4a, 0xb4, 0xc7, 0x47, 0xf8, 0x34, 0xac, 0xf4, 0xab, 0x88, 0xfb, 0xe3, 0x41, + 0x4f, 0xc3, 0xa4, 0xdd, 0x74, 0x3d, 0x9f, 0xac, 0x1b, 0xb6, 0x1b, 0x06, 0xb3, 0xc0, 0xcc, 0xee, + 0x6c, 0x58, 0xeb, 0x4a, 0x39, 0x4e, 0xd4, 0xd2, 0xf7, 0x86, 0x60, 0xbc, 0xea, 0xb9, 0x96, 0xcd, + 0xd4, 0x98, 0x27, 0x13, 0x36, 0xd3, 0x47, 0x54, 0x3e, 0xf8, 0x60, 0xaf, 0x32, 0x15, 0x55, 0x54, + 0x18, 0xe3, 0x33, 0x91, 0xa1, 0x82, 0x2b, 0xc6, 0x6f, 0x4d, 0x5a, 0x18, 0x1e, 0xec, 0x55, 0xce, + 0x44, 0xcd, 0x92, 0x46, 0x07, 0xb4, 0xc3, 0xf5, 0x8f, 0x75, 0xdf, 0x70, 0x03, 0x7b, 0x00, 0xfd, + 0x23, 0xd2, 0x2c, 0x97, 0x7b, 0xb0, 0xe1, 0x0c, 0x0a, 0xe8, 0x15, 0x98, 0xa6, 0xa5, 0x77, 0xdb, + 0x96, 0x11, 0x92, 0x82, 0x6a, 0xc7, 0x45, 0x41, 0x73, 0x7a, 0x39, 0x81, 0x09, 0xa7, 0x30, 0x73, + 0x1b, 0xb3, 0x11, 0x78, 0x2e, 0xdb, 0x6e, 0x09, 0x1b, 0x33, 0x2d, 0xc5, 0x02, 0x8a, 0x9e, 0x80, + 0xb1, 0x16, 0x09, 0x02, 0xa3, 0x49, 0xd8, 0xfe, 0x19, 0x8f, 0x0f, 0xc9, 0x15, 0x5e, 0x8c, 0x25, + 0x1c, 0xbd, 0x13, 0x46, 0x4c, 0xcf, 0x22, 0xc1, 0xec, 0x18, 0x9b, 0x61, 0xaa, 0x7d, 0x8d, 0x54, + 0x69, 0xc1, 0x83, 0xbd, 0xca, 0x38, 0xd3, 0xc3, 0xe9, 0x2f, 0xcc, 0x2b, 0xe9, 0xbf, 0x46, 0x65, + 0xd6, 0x94, 0x90, 0x7e, 0x08, 0xdb, 0xf8, 0xe9, 0x99, 0x99, 0xf5, 0x2f, 0x53, 0x85, 0xc1, 0x73, + 0x43, 0xdf, 0x73, 0xd6, 0x1c, 0xc3, 0x25, 0xe8, 0x33, 0x1a, 0xcc, 0x6c, 0xd9, 0xcd, 0x2d, 0xf5, + 0x72, 0x4b, 0x1c, 0x6c, 0x85, 0x64, 0xfb, 0x5b, 0x29, 0x5c, 0x8b, 0xe7, 0xf7, 0xf7, 0x2a, 0x33, + 0xe9, 0x52, 0xdc, 0x43, 0x53, 0xff, 0x5c, 0x09, 0xce, 0x8b, 0x9e, 0x39, 0xf4, 0xa4, 0x69, 0x3b, + 0x5e, 0xb7, 0x45, 0xdc, 0xd3, 0xb8, 0x87, 0x92, 0x33, 0x54, 0xca, 0x9d, 0xa1, 0x56, 0xcf, 0x0c, + 0x0d, 0x15, 0x99, 0xa1, 0x68, 0x21, 0x1f, 0x30, 0x4b, 0x7f, 0xae, 0xc1, 0x6c, 0xd6, 0x58, 0x9c, + 0x82, 0x0e, 0xd4, 0x4a, 0xea, 0x40, 0xb7, 0x8a, 0x2a, 0xb5, 0xe9, 0xae, 0xe7, 0xe8, 0x42, 0x3f, + 0x2a, 0xc1, 0xc5, 0xb8, 0x7a, 0xdd, 0x0d, 0x42, 0xc3, 0x71, 0xb8, 0x99, 0xe7, 0xe4, 0xe7, 0xbd, + 0x9d, 0x50, 0x65, 0x57, 0x07, 0xfb, 0x54, 0xb5, 0xef, 0xb9, 0x96, 0xe6, 0xdd, 0x94, 0xa5, 0x79, + 0xed, 0x18, 0x69, 0xf6, 0x37, 0x3a, 0xff, 0x77, 0x0d, 0xe6, 0xb2, 0x1b, 0x9e, 0xc2, 0xa2, 0xf2, + 0x92, 0x8b, 0xea, 0x83, 0xc7, 0xf7, 0xd5, 0x39, 0xcb, 0xea, 0x9f, 0x97, 0xf2, 0xbe, 0x96, 0x29, + 0xdb, 0x9b, 0x70, 0x86, 0x6a, 0x41, 0x41, 0x28, 0x4c, 0xa2, 0x47, 0xf3, 0x15, 0x90, 0x36, 0xa2, + 0x33, 0x38, 0x89, 0x03, 0xa7, 0x91, 0xa2, 0x55, 0x18, 0xa3, 0xaa, 0x0f, 0xc5, 0x5f, 0x3a, 0x3c, + 0xfe, 0xe8, 0x34, 0x6a, 0xf0, 0xb6, 0x58, 0x22, 0x41, 0x3f, 0x07, 0x53, 0x56, 0xb4, 0xa3, 0x0e, + 0xb8, 0x28, 0x4c, 0x63, 0x65, 0xc6, 0xeb, 0x9a, 0xda, 0x1a, 0x27, 0x91, 0xe9, 0x7f, 0xa5, 0xc1, + 0xc3, 0xfd, 0xd6, 0x16, 0x7a, 0x15, 0xc0, 0x94, 0xe2, 0x05, 0x77, 0x15, 0x29, 0x68, 0xde, 0x8e, + 0x84, 0x94, 0x78, 0x83, 0x46, 0x45, 0x01, 0x56, 0x88, 0x64, 0xdc, 0x3f, 0x96, 0x4e, 0xe8, 0xfe, + 0x51, 0xff, 0x1f, 0x9a, 0xca, 0x8a, 0xd4, 0xb9, 0x7d, 0xb3, 0xb1, 0x22, 0xb5, 0xef, 0xb9, 0xf6, + 0xb5, 0x3f, 0x29, 0xc1, 0xd5, 0xec, 0x26, 0xca, 0xd9, 0xfb, 0x01, 0x18, 0x6d, 0x73, 0x7f, 0x9e, + 0x21, 0x76, 0x36, 0x3e, 0x4e, 0x39, 0x0b, 0xf7, 0xb6, 0x79, 0xb0, 0x57, 0x99, 0xcb, 0x62, 0xf4, + 0xc2, 0x4f, 0x47, 0xb4, 0x43, 0x76, 0xca, 0xca, 0xc0, 0xa5, 0xbf, 0x77, 0x1d, 0x92, 0xb9, 0x18, + 0x1b, 0xc4, 0x39, 0xb4, 0x61, 0xe1, 0x13, 0x1a, 0x4c, 0x27, 0x56, 0x74, 0x30, 0x3b, 0xc2, 0xd6, + 0x68, 0xa1, 0xab, 0x9f, 0xc4, 0x56, 0x89, 0x4f, 0xee, 0x44, 0x71, 0x80, 0x53, 0x04, 0x53, 0x6c, + 0x56, 0x1d, 0xd5, 0x37, 0x1d, 0x9b, 0x55, 0x3b, 0x9f, 0xc3, 0x66, 0x7f, 0xb5, 0x94, 0xf7, 0xb5, + 0x8c, 0xcd, 0xde, 0x87, 0x71, 0xe9, 0xa7, 0x29, 0xd9, 0xc5, 0x8d, 0x41, 0xfb, 0xc4, 0xd1, 0xc5, + 0x6e, 0x0f, 0xb2, 0x24, 0xc0, 0x31, 0x2d, 0xf4, 0x29, 0x0d, 0x20, 0x9e, 0x18, 0xb1, 0xa9, 0xd6, + 0x8f, 0x6f, 0x38, 0x14, 0xb1, 0x66, 0x9a, 0x6e, 0x69, 0x65, 0x51, 0x28, 0x74, 0xf5, 0xaf, 0x0f, + 0x01, 0xea, 0xed, 0x3b, 0x15, 0x37, 0xb7, 0x6d, 0xd7, 0x4a, 0x2b, 0x04, 0xb7, 0x6d, 0xd7, 0xc2, + 0x0c, 0x72, 0x08, 0x81, 0xf4, 0x59, 0x38, 0xd3, 0x74, 0xbc, 0x0d, 0xc3, 0x71, 0xba, 0xc2, 0xf5, + 0x53, 0x38, 0x11, 0x9e, 0xa3, 0x07, 0xd3, 0xcd, 0x24, 0x08, 0xa7, 0xeb, 0xa2, 0x36, 0xcc, 0xf8, + 0x54, 0x95, 0x35, 0x6d, 0x87, 0xa9, 0x4e, 0x5e, 0x27, 0x2c, 0x68, 0x2b, 0x61, 0xe2, 0x3d, 0x4e, + 0xe1, 0xc2, 0x3d, 0xd8, 0xd1, 0xdb, 0x60, 0xac, 0xed, 0xdb, 0x2d, 0xc3, 0xef, 0x32, 0xe5, 0xac, + 0xbc, 0x38, 0x41, 0x4f, 0xb8, 0x35, 0x5e, 0x84, 0x25, 0x0c, 0x7d, 0x14, 0xc6, 0x1d, 0x7b, 0x93, + 0x98, 0x5d, 0xd3, 0x21, 0xc2, 0xb8, 0x71, 0xe7, 0x78, 0x96, 0xcc, 0xb2, 0x44, 0x2b, 0xae, 0x54, + 0xe5, 0x4f, 0x1c, 0x13, 0xd4, 0x3f, 0x5f, 0x82, 0xcb, 0x7d, 0x5a, 0x22, 0x4c, 0x17, 0xb4, 0xf8, + 0x30, 0x31, 0x7d, 0x4f, 0xf3, 0x45, 0x28, 0x0a, 0x1f, 0xec, 0x55, 0x1e, 0xed, 0x83, 0xa0, 0x41, + 0xd7, 0x0f, 0x69, 0x76, 0x71, 0x8c, 0x06, 0xd5, 0x61, 0xd4, 0x8a, 0xcd, 0x78, 0xe3, 0x8b, 0x4f, + 0x52, 0x16, 0xcb, 0x0d, 0x6d, 0x87, 0xc5, 0x26, 0x10, 0xa0, 0x65, 0x18, 0xe3, 0xb7, 0xa7, 0x44, + 0xb0, 0xeb, 0xa7, 0x98, 0x4e, 0xcb, 0x8b, 0x0e, 0x8b, 0x4c, 0xa2, 0xd0, 0xff, 0xb7, 0x06, 0x63, + 0x55, 0xcf, 0x27, 0xb5, 0xd5, 0x06, 0xea, 0xc2, 0x84, 0xe2, 0xf5, 0x2d, 0x58, 0x57, 0xc1, 0xbd, + 0xcc, 0x30, 0x2e, 0xc4, 0xd8, 0xa4, 0x8f, 0x67, 0x54, 0x80, 0x55, 0x5a, 0xe8, 0x55, 0x3a, 0xe6, + 0xf7, 0x7d, 0x3b, 0xa4, 0x84, 0x07, 0xb9, 0x74, 0xe2, 0x84, 0xb1, 0xc4, 0xc5, 0x97, 0x41, 0xf4, + 0x13, 0xc7, 0x54, 0xf4, 0x35, 0xba, 0x6d, 0xd3, 0xdd, 0x44, 0xd7, 0x61, 0xb8, 0xe5, 0x59, 0x72, + 0xde, 0xdf, 0x2e, 0x37, 0xe5, 0x8a, 0x67, 0xd1, 0xb1, 0xbd, 0xd8, 0xdb, 0x82, 0x99, 0xc6, 0x58, + 0x1b, 0x7d, 0x15, 0x66, 0xd2, 0xf4, 0xd1, 0x75, 0x98, 0x36, 0xbd, 0x56, 0xcb, 0x73, 0x1b, 0x9d, + 0xcd, 0x4d, 0x7b, 0x97, 0x24, 0x9c, 0x6f, 0xab, 0x09, 0x08, 0x4e, 0xd5, 0xd4, 0xbf, 0xa6, 0xc1, + 0x10, 0x9d, 0x17, 0x1d, 0x46, 0x2d, 0xaf, 0x65, 0xd8, 0xae, 0xe8, 0x15, 0x73, 0x34, 0xae, 0xb1, + 0x12, 0x2c, 0x20, 0xa8, 0x0d, 0xe3, 0x52, 0xd2, 0x19, 0xc8, 0x01, 0xa4, 0xb6, 0xda, 0x88, 0x9c, + 0xe6, 0x22, 0xf6, 0x2b, 0x4b, 0x02, 0x1c, 0x13, 0xd1, 0x0d, 0x38, 0x5b, 0x5b, 0x6d, 0xd4, 0x5d, + 0xd3, 0xe9, 0x58, 0x64, 0x69, 0x97, 0xfd, 0xa1, 0x0c, 0xc0, 0xe6, 0x25, 0xe2, 0x3b, 0x19, 0x03, + 0x10, 0x95, 0xb0, 0x84, 0xd1, 0x6a, 0x84, 0xb7, 0x10, 0x1e, 0xb2, 0xac, 0x9a, 0x40, 0x82, 0x25, + 0x4c, 0xff, 0x7e, 0x09, 0x26, 0x94, 0x0e, 0x21, 0x07, 0xc6, 0xf8, 0xe7, 0x4a, 0x07, 0xb5, 0xa5, + 0x82, 0x9f, 0x98, 0xec, 0x35, 0xa7, 0xce, 0x07, 0x34, 0xc0, 0x92, 0x84, 0xca, 0xcc, 0x4a, 0x7d, + 0x98, 0xd9, 0x3c, 0x40, 0x10, 0xbb, 0x6b, 0xf3, 0x2d, 0xc9, 0xce, 0x0b, 0xc5, 0x49, 0x5b, 0xa9, + 0x81, 0x1e, 0x16, 0x6c, 0x9f, 0x7b, 0x60, 0x94, 0x53, 0x2c, 0x7f, 0x13, 0x46, 0x5e, 0xf3, 0x5c, + 0x12, 0x88, 0x8b, 0xa7, 0x63, 0xfa, 0xc0, 0x71, 0x7a, 0xa8, 0xbf, 0x44, 0xf1, 0x62, 0x8e, 0x5e, + 0xff, 0x75, 0x0d, 0xa0, 0x66, 0x84, 0x06, 0xbf, 0x27, 0x39, 0x84, 0x93, 0xf3, 0xc3, 0x89, 0xd3, + 0xaa, 0xdc, 0xe3, 0xf8, 0x39, 0x1c, 0xd8, 0xaf, 0xc9, 0xcf, 0x8f, 0xa4, 0x60, 0x8e, 0xbd, 0x61, + 0xbf, 0x46, 0x30, 0x83, 0xa3, 0x77, 0xc0, 0x38, 0x71, 0x4d, 0xbf, 0xdb, 0x0e, 0x89, 0xc5, 0x46, + 0xa0, 0xcc, 0x77, 0xe8, 0x92, 0x2c, 0xc4, 0x31, 0x5c, 0x7f, 0x12, 0x92, 0xaa, 0xcc, 0xc1, 0xbd, + 0xd4, 0x7f, 0x38, 0x0c, 0x97, 0x96, 0xd6, 0xab, 0x35, 0x81, 0xcf, 0xf6, 0xdc, 0xdb, 0xa4, 0xfb, + 0x37, 0x3e, 0x25, 0x7f, 0xe3, 0x53, 0x72, 0x8c, 0x3e, 0x25, 0x0f, 0x34, 0x98, 0x59, 0xda, 0x6d, + 0xdb, 0x3e, 0x73, 0xae, 0x27, 0x3e, 0xd5, 0x3d, 0xd1, 0x13, 0x30, 0xb6, 0xc3, 0xff, 0x15, 0x8b, + 0x2b, 0xd2, 0xef, 0x45, 0x0d, 0x2c, 0xe1, 0x68, 0x13, 0xa6, 0x09, 0x6b, 0xce, 0x84, 0x4c, 0x23, + 0x2c, 0xb2, 0x80, 0xf8, 0xdb, 0x8d, 0x04, 0x16, 0x9c, 0xc2, 0x8a, 0x1a, 0x30, 0x6d, 0x3a, 0x46, + 0x10, 0xd8, 0x9b, 0xb6, 0x19, 0xbb, 0x8d, 0x8d, 0x2f, 0xbe, 0x83, 0x1d, 0x3d, 0x09, 0xc8, 0x83, + 0xbd, 0xca, 0x05, 0xd1, 0xcf, 0x24, 0x00, 0xa7, 0x50, 0xe8, 0x5f, 0x29, 0xc1, 0xd4, 0xd2, 0x6e, + 0xdb, 0x0b, 0x3a, 0x3e, 0x61, 0x55, 0x4f, 0x41, 0x6d, 0x7e, 0x02, 0xc6, 0xb6, 0x0c, 0xd7, 0x72, + 0x88, 0x2f, 0xb8, 0x4f, 0x34, 0xb6, 0xb7, 0x78, 0x31, 0x96, 0x70, 0xf4, 0x3a, 0x40, 0x60, 0x6e, + 0x11, 0xab, 0xc3, 0x24, 0x18, 0xbe, 0x49, 0x6e, 0x17, 0xe1, 0xa1, 0x89, 0x6f, 0x6c, 0x44, 0x28, + 0x05, 0x67, 0x8f, 0x7e, 0x63, 0x85, 0x9c, 0xfe, 0x1f, 0x35, 0x38, 0x9b, 0x68, 0x77, 0x0a, 0xda, + 0xe0, 0x66, 0x52, 0x1b, 0x5c, 0x18, 0xf8, 0x5b, 0x73, 0x94, 0xc0, 0x5f, 0x28, 0xc1, 0x43, 0x39, + 0x63, 0xd2, 0xe3, 0x63, 0xa0, 0x9d, 0x92, 0x8f, 0x41, 0x07, 0x26, 0x42, 0xcf, 0x11, 0xde, 0x8d, + 0x72, 0x04, 0x0a, 0x79, 0x10, 0xac, 0x47, 0x68, 0x62, 0x0f, 0x82, 0xb8, 0x2c, 0xc0, 0x2a, 0x1d, + 0xfd, 0x9b, 0x1a, 0x8c, 0x47, 0x46, 0xa7, 0x9f, 0xa8, 0x8b, 0x9f, 0xc3, 0x3f, 0x37, 0xd3, 0xbf, + 0x53, 0x82, 0x8b, 0x11, 0x6e, 0xa9, 0x27, 0x34, 0x42, 0xca, 0x37, 0x0e, 0xd6, 0x5c, 0x1f, 0x16, + 0xe7, 0xb0, 0x22, 0x0b, 0x28, 0x92, 0x02, 0x95, 0x9b, 0x3a, 0x7e, 0xdb, 0x0b, 0xa4, 0x38, 0xc0, + 0xe5, 0x26, 0x5e, 0x84, 0x25, 0x0c, 0xad, 0xc2, 0x48, 0x40, 0xe9, 0x89, 0xd3, 0xe4, 0x88, 0xa3, + 0xc1, 0x24, 0x1a, 0xd6, 0x5f, 0xcc, 0xd1, 0xa0, 0xd7, 0x55, 0x3b, 0xc4, 0x48, 0x71, 0xdb, 0x08, + 0xfd, 0x12, 0x4b, 0x8e, 0x48, 0xc6, 0x13, 0x8c, 0x2c, 0x5b, 0x84, 0xbe, 0x0c, 0x33, 0xc2, 0x4d, + 0x81, 0x2f, 0x1b, 0xd7, 0x24, 0xe8, 0xbd, 0x89, 0x95, 0xf1, 0x58, 0xea, 0xea, 0xf7, 0x7c, 0xba, + 0x7e, 0xbc, 0x62, 0xf4, 0x00, 0xca, 0x37, 0x45, 0x27, 0xd1, 0x1c, 0x94, 0x6c, 0x39, 0x17, 0x20, + 0x70, 0x94, 0xea, 0x35, 0x5c, 0xb2, 0xad, 0x48, 0x1e, 0x2a, 0xe5, 0x4a, 0x6d, 0xca, 0xb1, 0x34, + 0xd4, 0xff, 0x58, 0xd2, 0xff, 0xac, 0x04, 0xe7, 0x25, 0x55, 0xf9, 0x8d, 0x35, 0x71, 0x71, 0x76, + 0x80, 0x6c, 0x78, 0xb0, 0x25, 0xe3, 0x0e, 0x0c, 0x33, 0x06, 0x58, 0xe8, 0x42, 0x2d, 0x42, 0x48, + 0xbb, 0x83, 0x19, 0x22, 0xf4, 0x51, 0x18, 0x75, 0x8c, 0x0d, 0xe2, 0x48, 0xf7, 0xb0, 0x42, 0x76, + 0x9f, 0xac, 0xcf, 0xe5, 0xe6, 0xc8, 0x80, 0xbb, 0xc0, 0x47, 0xf7, 0x2c, 0xbc, 0x10, 0x0b, 0x9a, + 0x73, 0xcf, 0xc0, 0x84, 0x52, 0x0d, 0xcd, 0xc0, 0xd0, 0x36, 0xe1, 0x17, 0xaa, 0xe3, 0x98, 0xfe, + 0x8b, 0xce, 0xc3, 0xc8, 0x8e, 0xe1, 0x74, 0xc4, 0x90, 0x60, 0xfe, 0xe3, 0x7a, 0xe9, 0xbd, 0x9a, + 0xfe, 0x75, 0x0d, 0x26, 0x6e, 0xd9, 0x1b, 0xc4, 0xe7, 0xbe, 0x06, 0x4c, 0x15, 0x4a, 0xbc, 0xf6, + 0x9d, 0xc8, 0x7a, 0xe9, 0x8b, 0x76, 0x61, 0x5c, 0x9c, 0x34, 0x91, 0x2b, 0xea, 0xcd, 0x62, 0x37, + 0xb7, 0x11, 0x69, 0xc1, 0xc1, 0xd5, 0xd7, 0x45, 0x92, 0x02, 0x8e, 0x89, 0xe9, 0xaf, 0xc3, 0xb9, + 0x8c, 0x46, 0xa8, 0xc2, 0xb6, 0xaf, 0x1f, 0x8a, 0x65, 0x21, 0xf7, 0xa3, 0x1f, 0x62, 0x5e, 0x8e, + 0x2e, 0xc1, 0x10, 0x71, 0x2d, 0xb1, 0x26, 0xc6, 0xf6, 0xf7, 0x2a, 0x43, 0x4b, 0xae, 0x85, 0x69, + 0x19, 0x65, 0x53, 0x8e, 0x97, 0x90, 0x49, 0x18, 0x9b, 0x5a, 0x16, 0x65, 0x38, 0x82, 0xb2, 0xbb, + 0xf6, 0xf4, 0xb5, 0x32, 0x95, 0x4e, 0x67, 0x36, 0x53, 0xbb, 0x67, 0x90, 0xdb, 0xec, 0xf4, 0x4e, + 0x5c, 0x9c, 0x15, 0x03, 0xd2, 0xb3, 0xa7, 0x71, 0x0f, 0x5d, 0xfd, 0xf7, 0x86, 0xe1, 0x91, 0x5b, + 0x9e, 0x6f, 0xbf, 0xe6, 0xb9, 0xa1, 0xe1, 0xac, 0x79, 0x56, 0xec, 0x55, 0x26, 0x98, 0xf2, 0xa7, + 0x35, 0x78, 0xc8, 0x6c, 0x77, 0xb8, 0x74, 0x2b, 0x9d, 0x7d, 0xd6, 0x88, 0x6f, 0x7b, 0x45, 0x9d, + 0xcb, 0xd8, 0x7b, 0xd2, 0xea, 0xda, 0xdd, 0x2c, 0x94, 0x38, 0x8f, 0x16, 0xf3, 0x71, 0xb3, 0xbc, + 0xfb, 0x2e, 0xeb, 0x5c, 0x23, 0x64, 0xa3, 0xf9, 0x5a, 0x3c, 0x09, 0x05, 0x7d, 0xdc, 0x6a, 0x99, + 0x18, 0x71, 0x0e, 0x25, 0xf4, 0x71, 0xb8, 0x60, 0xf3, 0xce, 0x61, 0x62, 0x58, 0xb6, 0x4b, 0x82, + 0x80, 0x79, 0x7a, 0x0d, 0xe2, 0xc4, 0x55, 0xcf, 0x42, 0x88, 0xb3, 0xe9, 0xa0, 0x97, 0x01, 0x82, + 0xae, 0x6b, 0x8a, 0xf1, 0x1f, 0x29, 0x44, 0x95, 0x0b, 0x81, 0x11, 0x16, 0xac, 0x60, 0xa4, 0x1a, + 0x6e, 0x18, 0x2d, 0xca, 0x51, 0xe6, 0x10, 0xc6, 0x34, 0xdc, 0x78, 0x0d, 0xc5, 0x70, 0xfd, 0x9f, + 0x68, 0x30, 0x26, 0xde, 0xac, 0xa3, 0xb7, 0xa7, 0xac, 0x3c, 0x11, 0xef, 0x49, 0x59, 0x7a, 0xba, + 0xec, 0x7e, 0x4e, 0x58, 0xf8, 0x84, 0x28, 0x51, 0xc8, 0x4c, 0x20, 0x08, 0xc7, 0xe6, 0xc2, 0xc4, + 0x3d, 0x9d, 0x34, 0x21, 0x2a, 0xc4, 0xf4, 0x37, 0x34, 0x38, 0xdb, 0xd3, 0xea, 0x10, 0xf2, 0xc2, + 0x29, 0xba, 0xbe, 0x7c, 0x63, 0x1a, 0x58, 0x78, 0x82, 0x85, 0xb5, 0x7a, 0x83, 0xf8, 0x3b, 0xd1, + 0x26, 0xa4, 0x3c, 0x23, 0x76, 0x71, 0x16, 0xbd, 0x18, 0x80, 0x67, 0xdc, 0x4e, 0xe1, 0x8a, 0x79, + 0x46, 0x1a, 0x82, 0x7b, 0xe8, 0xa2, 0xcf, 0x69, 0x30, 0x63, 0x24, 0xc3, 0x13, 0x48, 0xa6, 0x5e, + 0xe8, 0xf9, 0x5b, 0x2a, 0xd4, 0x41, 0xdc, 0x97, 0x14, 0x20, 0xc0, 0x3d, 0x64, 0xd1, 0xd3, 0x30, + 0x69, 0xb4, 0xed, 0x85, 0x8e, 0x65, 0x53, 0x31, 0x47, 0xbe, 0x2d, 0x67, 0xa2, 0xf7, 0xc2, 0x5a, + 0x3d, 0x2a, 0xc7, 0x89, 0x5a, 0x51, 0x1c, 0x00, 0x31, 0x90, 0xc3, 0x03, 0xc6, 0x01, 0x10, 0x63, + 0x18, 0xc7, 0x01, 0x10, 0x43, 0xa7, 0x12, 0x41, 0x1f, 0x86, 0x4b, 0xfc, 0x34, 0x5c, 0x34, 0x02, + 0xdb, 0x5c, 0xe8, 0x84, 0x5b, 0xc4, 0x0d, 0xa5, 0x6a, 0xcb, 0xaf, 0x1b, 0x98, 0xb7, 0xeb, 0x52, + 0x5e, 0x25, 0x9c, 0xdf, 0x1e, 0xb9, 0x00, 0x9e, 0x6d, 0x99, 0xe2, 0x7b, 0xf8, 0x9d, 0x44, 0x21, + 0x55, 0xe2, 0x4e, 0xbd, 0x56, 0x15, 0x9f, 0xc3, 0xd8, 0x44, 0xfc, 0x1b, 0x2b, 0x14, 0xd0, 0x97, + 0x35, 0x98, 0x12, 0x8b, 0x5c, 0xd0, 0x1c, 0x63, 0xf3, 0xff, 0x52, 0xd1, 0xc5, 0x98, 0x5a, 0xf0, + 0xf3, 0x58, 0x45, 0xce, 0xa5, 0x99, 0xc8, 0xfd, 0x3e, 0x01, 0xc3, 0xc9, 0x7e, 0xa0, 0xbf, 0xa7, + 0xc1, 0xf9, 0x80, 0xf8, 0x3b, 0xb6, 0x49, 0x16, 0x4c, 0xd3, 0xeb, 0xb8, 0x72, 0x92, 0xcb, 0xc5, + 0xdf, 0x64, 0x37, 0x32, 0xf0, 0x71, 0xbf, 0xcf, 0x2c, 0x08, 0xce, 0xa4, 0x4f, 0xcf, 0xaf, 0x33, + 0xf7, 0x8d, 0xd0, 0xdc, 0xaa, 0x1a, 0xe6, 0x16, 0x33, 0x2a, 0x72, 0x57, 0xcf, 0x82, 0x9b, 0xe6, + 0x85, 0x24, 0x2a, 0x7e, 0xa7, 0x96, 0x2a, 0xc4, 0x69, 0x82, 0x28, 0x80, 0xb2, 0x4f, 0x5e, 0xed, + 0x90, 0x80, 0xf9, 0x83, 0x52, 0xe2, 0xf5, 0x81, 0x67, 0x0c, 0x0b, 0x84, 0x5c, 0x0a, 0x92, 0xbf, + 0x70, 0x44, 0x08, 0x35, 0xe1, 0x11, 0xbe, 0x72, 0x17, 0x5c, 0xcf, 0xed, 0xb6, 0xbc, 0x4e, 0x90, + 0x5a, 0xfd, 0x13, 0x6c, 0xf5, 0x33, 0x8f, 0xd7, 0xa5, 0x7e, 0x15, 0x71, 0x7f, 0x3c, 0xe8, 0x45, + 0x28, 0x93, 0x1d, 0xe2, 0x86, 0xeb, 0xeb, 0xcb, 0xb3, 0x93, 0x85, 0x8e, 0x46, 0xf6, 0x09, 0x4b, + 0x02, 0x07, 0x8e, 0xb0, 0x21, 0x0f, 0xc6, 0x1c, 0xaf, 0xd9, 0xb4, 0xdd, 0xe6, 0xec, 0x54, 0xf1, + 0x75, 0x94, 0x18, 0xb6, 0x65, 0x8e, 0x8f, 0x0b, 0xcc, 0xe2, 0x07, 0x96, 0x54, 0x50, 0x1b, 0xae, + 0x5a, 0x64, 0xd3, 0xe8, 0x38, 0xe1, 0xaa, 0x17, 0x52, 0x19, 0xa0, 0x1b, 0x2b, 0xf4, 0xd2, 0x51, + 0x78, 0x9a, 0x3d, 0xa3, 0x7c, 0x6c, 0x7f, 0xaf, 0x72, 0xb5, 0x76, 0x40, 0x5d, 0x7c, 0x20, 0x36, + 0xd4, 0x85, 0x47, 0x45, 0x9d, 0xbb, 0xae, 0x4f, 0x0c, 0x73, 0x8b, 0x8e, 0x74, 0x2f, 0xd1, 0x33, + 0x8c, 0xe8, 0xff, 0xb7, 0xbf, 0x57, 0x79, 0xb4, 0x76, 0x70, 0x75, 0x7c, 0x18, 0x9c, 0x73, 0x1f, + 0x00, 0xd4, 0xbb, 0xdf, 0x0f, 0x52, 0x4b, 0xca, 0xaa, 0x5a, 0xf2, 0xcb, 0x1a, 0x9c, 0xcf, 0x1a, + 0x5d, 0x2a, 0xcf, 0xec, 0x10, 0x7f, 0xc3, 0x0b, 0xa4, 0xcb, 0xe8, 0x08, 0x97, 0x67, 0xee, 0xc9, + 0x42, 0x1c, 0xc3, 0x51, 0x1d, 0xce, 0x6d, 0x85, 0x61, 0x7b, 0xc1, 0x34, 0x49, 0x10, 0x44, 0x35, + 0x18, 0xb5, 0x11, 0x1e, 0x3a, 0xe8, 0xd6, 0xfa, 0xfa, 0x5a, 0x0a, 0x8c, 0xb3, 0xda, 0xe8, 0xbf, + 0xa3, 0xc1, 0x85, 0xcc, 0x5d, 0x82, 0x30, 0x5c, 0x64, 0x7e, 0xe1, 0xee, 0x4a, 0x27, 0x34, 0x42, + 0xdb, 0x6d, 0xd6, 0xdd, 0x4d, 0xc7, 0x6e, 0x6e, 0x85, 0xa2, 0x7b, 0x4c, 0x2c, 0x5d, 0xc9, 0xac, + 0x81, 0x73, 0x5a, 0xd2, 0x8e, 0xb7, 0x8c, 0xdd, 0x1e, 0x84, 0x4a, 0xc7, 0x57, 0x7a, 0xc1, 0x38, + 0xab, 0x8d, 0xfe, 0xd5, 0x11, 0xb8, 0x4c, 0x3b, 0x1e, 0x4b, 0x48, 0x2b, 0x86, 0x6b, 0x34, 0x7f, + 0x32, 0x25, 0x91, 0xaf, 0x6b, 0xf0, 0xd0, 0x56, 0xb6, 0xf6, 0x22, 0x64, 0xb4, 0xe7, 0x0b, 0x69, + 0x99, 0xfd, 0x14, 0x22, 0xce, 0xa7, 0xfa, 0x56, 0xc1, 0x79, 0x9d, 0x42, 0x1f, 0x80, 0x19, 0xd7, + 0xb3, 0x48, 0xb5, 0x5e, 0xc3, 0x2b, 0x46, 0xb0, 0xdd, 0x90, 0x97, 0x4e, 0x23, 0xdc, 0x47, 0x61, + 0x35, 0x05, 0xc3, 0x3d, 0xb5, 0xd1, 0x0e, 0xa0, 0xb6, 0x67, 0x2d, 0xed, 0xd8, 0xa6, 0xbc, 0xee, + 0x28, 0xee, 0x17, 0xc1, 0xee, 0x54, 0xd6, 0x7a, 0xb0, 0xe1, 0x0c, 0x0a, 0x4c, 0xfd, 0xa2, 0x9d, + 0x59, 0xf1, 0x5c, 0x3b, 0xf4, 0x7c, 0xf6, 0xee, 0x60, 0x20, 0x2d, 0x84, 0xad, 0xf3, 0xd5, 0x4c, + 0x8c, 0x38, 0x87, 0x92, 0xfe, 0x3f, 0x35, 0x38, 0x43, 0x97, 0xc5, 0x9a, 0xef, 0xed, 0x76, 0x7f, + 0x12, 0x17, 0xe4, 0x13, 0xe2, 0xfe, 0x9d, 0x9b, 0x0d, 0x2e, 0x28, 0x77, 0xef, 0xe3, 0xac, 0xcf, + 0xf1, 0x75, 0xbb, 0x6a, 0x39, 0x19, 0xca, 0xb7, 0x9c, 0xe8, 0x5f, 0x2e, 0x71, 0x8d, 0x40, 0x5a, + 0x2e, 0x7e, 0x22, 0xf7, 0xe1, 0x7b, 0x60, 0x8a, 0x96, 0xad, 0x18, 0xbb, 0x6b, 0xb5, 0x7b, 0x9e, + 0x23, 0x9f, 0x7e, 0x30, 0x77, 0xce, 0xdb, 0x2a, 0x00, 0x27, 0xeb, 0xa1, 0xeb, 0x30, 0xd6, 0xe6, + 0x0f, 0x4c, 0x85, 0x25, 0xe5, 0x2a, 0xbf, 0xa4, 0x66, 0x45, 0x0f, 0xf6, 0x2a, 0x67, 0x63, 0x3b, + 0xbd, 0x28, 0xc4, 0xb2, 0x81, 0xfe, 0xc5, 0xf3, 0xc0, 0x90, 0x3b, 0x24, 0xfc, 0x49, 0x1c, 0x93, + 0x27, 0x61, 0xc2, 0x6c, 0x77, 0xaa, 0x37, 0x1a, 0xcf, 0x77, 0xbc, 0xd0, 0x10, 0x77, 0xf0, 0x4c, + 0x45, 0xa8, 0xae, 0xdd, 0x95, 0xc5, 0x58, 0xad, 0x43, 0xb9, 0x83, 0xd9, 0xee, 0x08, 0x7e, 0xbb, + 0xa6, 0xfa, 0x34, 0x32, 0xee, 0x50, 0x5d, 0xbb, 0x9b, 0x80, 0xe1, 0x9e, 0xda, 0xe8, 0xe3, 0x30, + 0x49, 0xc4, 0xc6, 0xbd, 0x65, 0xf8, 0x96, 0xe0, 0x0b, 0x85, 0x65, 0xbc, 0x68, 0x68, 0x25, 0x37, + 0xe0, 0x9a, 0xd5, 0x92, 0x42, 0x02, 0x27, 0x08, 0x32, 0x2d, 0x47, 0xfc, 0xa6, 0xb3, 0xec, 0x59, + 0x69, 0x46, 0x31, 0x22, 0xb4, 0x9c, 0xbc, 0x4a, 0x38, 0xbf, 0x3d, 0xfa, 0x6d, 0x0d, 0x2e, 0x46, + 0x50, 0xdb, 0xb5, 0x5b, 0x9d, 0x16, 0x26, 0xa6, 0x63, 0xd8, 0x2d, 0xa1, 0xf2, 0xbc, 0x70, 0x6c, + 0x1f, 0x9a, 0x44, 0xcf, 0x99, 0x55, 0x36, 0x0c, 0xe7, 0x74, 0x09, 0xbd, 0xa1, 0xc1, 0x55, 0x09, + 0x5a, 0xf3, 0x49, 0x10, 0x74, 0x7c, 0x12, 0x3f, 0x3c, 0x12, 0x43, 0x32, 0x56, 0x88, 0x77, 0x32, + 0x99, 0x6f, 0xe9, 0x00, 0xdc, 0xf8, 0x40, 0xea, 0xea, 0x72, 0x69, 0x78, 0x9b, 0xa1, 0xd0, 0x91, + 0x4e, 0x6a, 0xb9, 0x50, 0x12, 0x38, 0x41, 0x10, 0xfd, 0x53, 0x0d, 0x1e, 0x52, 0x0b, 0xd4, 0xd5, + 0xc2, 0x95, 0xa3, 0x17, 0x8f, 0xad, 0x33, 0x29, 0xfc, 0xdc, 0x0c, 0x99, 0x03, 0xc4, 0x79, 0xbd, + 0xa2, 0x6c, 0xbb, 0xc5, 0x16, 0x26, 0x57, 0xa0, 0x46, 0x38, 0xdb, 0xe6, 0x6b, 0x35, 0xc0, 0x12, + 0x86, 0x9e, 0x86, 0xc9, 0xb6, 0x67, 0xad, 0xd9, 0x56, 0xb0, 0x6c, 0xb7, 0xec, 0x90, 0xa9, 0x38, + 0x43, 0x7c, 0x38, 0xd6, 0x3c, 0x6b, 0xad, 0x5e, 0xe3, 0xe5, 0x38, 0x51, 0x8b, 0x3d, 0xa1, 0xb5, + 0x5b, 0x46, 0x93, 0xac, 0x75, 0x1c, 0x67, 0xcd, 0xf7, 0x98, 0xad, 0xaa, 0x46, 0x0c, 0xcb, 0xb1, + 0x5d, 0x52, 0x50, 0xa5, 0x61, 0xdb, 0xad, 0x9e, 0x87, 0x14, 0xe7, 0xd3, 0x43, 0xf3, 0x00, 0x9b, + 0x86, 0xed, 0x34, 0xee, 0x1b, 0xed, 0x3b, 0x2e, 0xd3, 0x7b, 0xca, 0xdc, 0x28, 0x70, 0x23, 0x2a, + 0xc5, 0x4a, 0x0d, 0xba, 0x9a, 0x28, 0x17, 0xc4, 0x84, 0x87, 0x6e, 0x61, 0xfa, 0xc9, 0x71, 0xac, + 0x26, 0x89, 0x90, 0x0f, 0xdf, 0x6d, 0x85, 0x04, 0x4e, 0x10, 0x44, 0x9f, 0xd6, 0x60, 0x3a, 0xe8, + 0x06, 0x21, 0x69, 0x45, 0x7d, 0x38, 0x73, 0xdc, 0x7d, 0x60, 0x56, 0xbc, 0x46, 0x82, 0x08, 0x4e, + 0x11, 0x45, 0x06, 0x5c, 0x66, 0xa3, 0x7a, 0xb3, 0x7a, 0xcb, 0x6e, 0x6e, 0x45, 0x0f, 0x63, 0xd7, + 0x88, 0x6f, 0x12, 0x37, 0x9c, 0x9d, 0x61, 0xeb, 0x86, 0x79, 0x71, 0xd4, 0xf3, 0xab, 0xe1, 0x7e, + 0x38, 0xd0, 0xcb, 0x30, 0x27, 0xc0, 0xcb, 0xde, 0xfd, 0x1e, 0x0a, 0x67, 0x19, 0x05, 0xe6, 0xb5, + 0x52, 0xcf, 0xad, 0x85, 0xfb, 0x60, 0xa0, 0x1a, 0x45, 0x40, 0x7c, 0x66, 0x84, 0x27, 0xd1, 0xe2, + 0x09, 0x66, 0x11, 0x5b, 0x04, 0x4c, 0xa3, 0x68, 0xf4, 0x82, 0x71, 0x56, 0x1b, 0xf4, 0x6c, 0xf4, + 0x90, 0xa5, 0x4b, 0x0b, 0x9e, 0x5f, 0x6b, 0xcc, 0x9e, 0x63, 0xfd, 0x3b, 0xa7, 0xbc, 0x4f, 0x91, + 0x20, 0x9c, 0xae, 0x4b, 0x65, 0x0b, 0x59, 0xb4, 0xd8, 0xf1, 0x83, 0x70, 0xf6, 0x3c, 0x6b, 0xcc, + 0x64, 0x0b, 0xac, 0x02, 0x70, 0xb2, 0x1e, 0xba, 0x0e, 0xd3, 0x01, 0x31, 0x4d, 0xaf, 0xd5, 0x16, + 0x8a, 0xea, 0xec, 0x05, 0xd6, 0x7b, 0x3e, 0x83, 0x09, 0x08, 0x4e, 0xd5, 0x44, 0x5d, 0x38, 0x17, + 0x05, 0x32, 0x59, 0xf6, 0x9a, 0x2b, 0xc6, 0x2e, 0x13, 0xd5, 0x2f, 0x1e, 0xbc, 0x03, 0xe7, 0xe5, + 0xad, 0xea, 0xfc, 0xf3, 0x1d, 0xc3, 0x0d, 0xed, 0xb0, 0xcb, 0x87, 0xab, 0xda, 0x8b, 0x0e, 0x67, + 0xd1, 0x40, 0xcb, 0x70, 0x3e, 0x55, 0x7c, 0xc3, 0x76, 0x48, 0x30, 0xfb, 0x10, 0xfb, 0x6c, 0x66, + 0x75, 0xaa, 0x66, 0xc0, 0x71, 0x66, 0x2b, 0x74, 0x07, 0x2e, 0xb4, 0x7d, 0x2f, 0x24, 0x66, 0x78, + 0x9b, 0x8a, 0x27, 0x8e, 0xf8, 0xc0, 0x60, 0x76, 0x96, 0x8d, 0x05, 0xbb, 0x80, 0x58, 0xcb, 0xaa, + 0x80, 0xb3, 0xdb, 0xa1, 0xaf, 0x6a, 0x70, 0x25, 0x08, 0x7d, 0x62, 0xb4, 0x6c, 0xb7, 0x59, 0xf5, + 0x5c, 0x97, 0x30, 0x36, 0x59, 0xb7, 0x62, 0x27, 0xed, 0x4b, 0x85, 0xf8, 0x94, 0xbe, 0xbf, 0x57, + 0xb9, 0xd2, 0xe8, 0x8b, 0x19, 0x1f, 0x40, 0x59, 0xdf, 0x2b, 0x71, 0xad, 0xbb, 0x87, 0xf7, 0xd3, + 0x45, 0xd8, 0x22, 0x2d, 0xcf, 0xef, 0x2e, 0xc8, 0xb8, 0xa2, 0xc2, 0xe0, 0xcf, 0x16, 0xe1, 0x4a, + 0x12, 0x84, 0xd3, 0x75, 0xa9, 0x64, 0xc6, 0x36, 0xcb, 0x8d, 0x46, 0xdc, 0xbe, 0x14, 0x4b, 0x66, + 0xf5, 0x14, 0x0c, 0xf7, 0xd4, 0x46, 0x55, 0x38, 0x2b, 0xca, 0xea, 0x54, 0xb9, 0x09, 0x6e, 0xf8, + 0x44, 0xca, 0xbc, 0x54, 0x4d, 0x38, 0x5b, 0x4f, 0x03, 0x71, 0x6f, 0x7d, 0xfa, 0x15, 0xf4, 0x87, + 0xda, 0x8b, 0xe1, 0xf8, 0x2b, 0x56, 0x93, 0x20, 0x9c, 0xae, 0x2b, 0xb5, 0xcf, 0x44, 0x17, 0x46, + 0xe2, 0xaf, 0x58, 0x4d, 0xc1, 0x70, 0x4f, 0x6d, 0xfd, 0x3f, 0x0d, 0xc3, 0xa3, 0x87, 0x90, 0x97, + 0x50, 0x2b, 0x7b, 0xb8, 0x8f, 0xbe, 0x77, 0x0e, 0x37, 0x3d, 0xed, 0x9c, 0xe9, 0x39, 0x3a, 0xbd, + 0xc3, 0x4e, 0x67, 0x90, 0x37, 0x9d, 0x47, 0x27, 0x79, 0xf8, 0xe9, 0x6f, 0x65, 0x4f, 0x7f, 0xc1, + 0x51, 0x3d, 0x70, 0xb9, 0xb4, 0x73, 0x96, 0x4b, 0xc1, 0x51, 0x3d, 0xc4, 0xf2, 0xfa, 0xc1, 0x30, + 0x3c, 0x76, 0x18, 0xd9, 0xad, 0xe0, 0xfa, 0xca, 0xe0, 0x3a, 0x27, 0xba, 0xbe, 0xf2, 0x9e, 0xa2, + 0x9c, 0xe0, 0xfa, 0xca, 0x20, 0x79, 0xd2, 0xeb, 0x2b, 0x6f, 0x54, 0x4f, 0x6a, 0x7d, 0xe5, 0x8d, + 0xea, 0x21, 0xd6, 0xd7, 0x5f, 0xa6, 0xcf, 0x87, 0x48, 0x64, 0xab, 0xc3, 0x90, 0xd9, 0xee, 0x14, + 0x64, 0x52, 0xcc, 0x3d, 0xa4, 0xba, 0x76, 0x17, 0x53, 0x1c, 0x08, 0xc3, 0x28, 0x5f, 0x3f, 0x05, + 0x59, 0x10, 0x7b, 0x1f, 0xc1, 0x97, 0x24, 0x16, 0x98, 0xe8, 0x50, 0x91, 0xf6, 0x16, 0x69, 0x11, + 0xdf, 0x70, 0x1a, 0xa1, 0xe7, 0x1b, 0xcd, 0xa2, 0xdc, 0x86, 0x0d, 0xd5, 0x52, 0x0a, 0x17, 0xee, + 0xc1, 0x4e, 0x07, 0xa4, 0x6d, 0x5b, 0x05, 0xf9, 0x0b, 0x1b, 0x90, 0xb5, 0x7a, 0x0d, 0x53, 0x1c, + 0xfa, 0x3f, 0x1c, 0x07, 0x25, 0x56, 0x17, 0xfa, 0x30, 0x5c, 0x32, 0x1c, 0xc7, 0xbb, 0xbf, 0xe6, + 0xdb, 0x3b, 0xb6, 0x43, 0x9a, 0xc4, 0x8a, 0xe4, 0x99, 0x40, 0x38, 0x11, 0x31, 0x9d, 0x65, 0x21, + 0xaf, 0x12, 0xce, 0x6f, 0x8f, 0x3e, 0xaf, 0xc1, 0x59, 0x33, 0x1d, 0x1f, 0x69, 0x10, 0x37, 0x83, + 0x9e, 0x60, 0x4b, 0x7c, 0x3f, 0xf5, 0x14, 0xe3, 0x5e, 0xb2, 0xe8, 0xe7, 0x35, 0x6e, 0x17, 0x8b, + 0x2e, 0x01, 0xc4, 0x9c, 0xdd, 0x3c, 0xa6, 0x5b, 0xd2, 0xd8, 0xc0, 0x16, 0x5f, 0x33, 0x24, 0x09, + 0xa2, 0x37, 0x34, 0xb8, 0xb0, 0x9d, 0x65, 0xce, 0x17, 0x33, 0x7b, 0xa7, 0x68, 0x57, 0x72, 0xee, + 0x07, 0xb8, 0x44, 0x99, 0x59, 0x01, 0x67, 0x77, 0x24, 0x1a, 0xa5, 0xc8, 0xc2, 0x29, 0x98, 0x40, + 0xe1, 0x51, 0x4a, 0x99, 0x4a, 0xe3, 0x51, 0x8a, 0x00, 0x38, 0x49, 0x10, 0xb5, 0x61, 0x7c, 0x5b, + 0x9a, 0x95, 0x85, 0x29, 0xa9, 0x5a, 0x94, 0xba, 0x62, 0x9b, 0xe6, 0x57, 0x4d, 0x51, 0x21, 0x8e, + 0x89, 0xa0, 0x2d, 0x18, 0xdb, 0xe6, 0x8c, 0x48, 0x98, 0x80, 0x16, 0x06, 0x56, 0x51, 0xb9, 0x25, + 0x42, 0x14, 0x61, 0x89, 0x5e, 0xf5, 0xa1, 0x2c, 0x1f, 0xe0, 0xda, 0xff, 0x55, 0x0d, 0x2e, 0xec, + 0x10, 0x3f, 0xb4, 0xcd, 0xf4, 0x65, 0xca, 0x78, 0x71, 0x35, 0xfa, 0x5e, 0x16, 0x42, 0xbe, 0x4c, + 0x32, 0x41, 0x38, 0xbb, 0x0b, 0x54, 0xa9, 0xe6, 0x36, 0xf1, 0x46, 0x68, 0x84, 0xb6, 0xb9, 0xee, + 0x6d, 0x13, 0x37, 0x4e, 0x29, 0xc1, 0x8c, 0x31, 0x65, 0xae, 0x54, 0x2f, 0xe5, 0x57, 0xc3, 0xfd, + 0x70, 0xe8, 0x3f, 0xd2, 0xa0, 0xc7, 0xb2, 0x8b, 0xbe, 0xa8, 0xc1, 0xe4, 0x26, 0x31, 0xc2, 0x8e, + 0x4f, 0x6e, 0x1a, 0x61, 0xf4, 0x48, 0xf8, 0xde, 0x71, 0x18, 0x94, 0xe7, 0x6f, 0x28, 0x88, 0xb9, + 0x97, 0x43, 0x14, 0xe7, 0x4f, 0x05, 0xe1, 0x44, 0x0f, 0xe6, 0x9e, 0x83, 0xb3, 0x3d, 0x0d, 0x8f, + 0x74, 0x5d, 0xfa, 0xaf, 0x34, 0xc8, 0xca, 0x82, 0x82, 0x5e, 0x86, 0x11, 0xc3, 0xb2, 0xa2, 0xb0, + 0xe6, 0xcf, 0x14, 0xf3, 0xe6, 0xb1, 0xd4, 0xb7, 0xd8, 0xec, 0x27, 0xe6, 0x68, 0xd1, 0x0d, 0x40, + 0x46, 0xe2, 0xca, 0x7e, 0x25, 0x7e, 0xac, 0xc8, 0x2e, 0xa3, 0x16, 0x7a, 0xa0, 0x38, 0xa3, 0x85, + 0xfe, 0x0b, 0x1a, 0xa0, 0xde, 0xc8, 0x90, 0xc8, 0x87, 0xb2, 0x58, 0xca, 0x72, 0x96, 0x6a, 0x05, + 0x1f, 0x14, 0x24, 0x5e, 0xc7, 0xc4, 0x2f, 0x18, 0x44, 0x41, 0x80, 0x23, 0x3a, 0xfa, 0x5f, 0x69, + 0x10, 0x87, 0x3e, 0x46, 0xef, 0x86, 0x09, 0x8b, 0x04, 0xa6, 0x6f, 0xb7, 0xc3, 0xf8, 0x2d, 0x4d, + 0xe4, 0x93, 0x5f, 0x8b, 0x41, 0x58, 0xad, 0x87, 0x74, 0x18, 0x0d, 0x8d, 0x60, 0xbb, 0x5e, 0x13, + 0x4a, 0x25, 0x13, 0x01, 0xd6, 0x59, 0x09, 0x16, 0x90, 0x38, 0xca, 0xd3, 0xd0, 0x21, 0xa2, 0x3c, + 0xa1, 0xcd, 0x63, 0x08, 0x69, 0x85, 0x0e, 0x0e, 0x67, 0xa5, 0xff, 0x66, 0x09, 0xce, 0xd0, 0x2a, + 0x2b, 0x86, 0xed, 0x86, 0xc4, 0x65, 0x9e, 0xe3, 0x05, 0x07, 0xa1, 0x09, 0x53, 0x61, 0xe2, 0x65, + 0xd4, 0xd1, 0xdf, 0x15, 0x45, 0x2e, 0x42, 0xc9, 0xf7, 0x50, 0x49, 0xbc, 0xe8, 0x19, 0xe9, 0xba, + 0xcf, 0xd5, 0xef, 0x47, 0xe5, 0x52, 0x65, 0xfe, 0xf8, 0x0f, 0xc4, 0x33, 0xb3, 0x28, 0x5e, 0x76, + 0xc2, 0x4b, 0xff, 0x3d, 0x30, 0x25, 0x5c, 0x68, 0x79, 0xb8, 0x2e, 0xa1, 0x7e, 0xb3, 0x13, 0xe6, + 0x86, 0x0a, 0xc0, 0xc9, 0x7a, 0xfa, 0xf7, 0x4a, 0x90, 0x8c, 0xca, 0x5d, 0x74, 0x94, 0x7a, 0x63, + 0x95, 0x95, 0x4e, 0x2c, 0x56, 0xd9, 0x3b, 0x59, 0x4a, 0x0b, 0x9e, 0xfb, 0x88, 0xdf, 0x52, 0xab, + 0x89, 0x28, 0x78, 0xe6, 0xa2, 0xa8, 0x46, 0x3c, 0xac, 0xc3, 0x47, 0x1e, 0xd6, 0x77, 0x0b, 0x0f, + 0xfc, 0x91, 0x44, 0xc4, 0x38, 0xf9, 0xd6, 0xe0, 0x6c, 0xa2, 0xa1, 0xf2, 0xd0, 0xe0, 0xdb, 0x1a, + 0x8c, 0x89, 0x70, 0xa8, 0x87, 0x78, 0xc8, 0xb2, 0x09, 0x23, 0x4c, 0xe5, 0x19, 0x44, 0x1a, 0x6c, + 0x6c, 0x79, 0x5e, 0x98, 0x08, 0x0a, 0xcb, 0x3c, 0xc7, 0xd9, 0xbf, 0x98, 0xa3, 0x67, 0x2e, 0x89, + 0xbe, 0xb9, 0x65, 0x87, 0xc4, 0x0c, 0x65, 0xa8, 0x49, 0xe9, 0x92, 0xa8, 0x94, 0xe3, 0x44, 0x2d, + 0xfd, 0x6b, 0xc3, 0x70, 0x55, 0x20, 0xee, 0x11, 0x91, 0x22, 0x06, 0xd7, 0x85, 0x73, 0x62, 0x6e, + 0x6b, 0xbe, 0x61, 0x47, 0xb7, 0xff, 0xc5, 0x54, 0x5f, 0xe1, 0x17, 0xd2, 0x83, 0x0e, 0x67, 0xd1, + 0xe0, 0x41, 0x13, 0x59, 0xf1, 0x2d, 0x62, 0x38, 0xe1, 0x96, 0xa4, 0x5d, 0x1a, 0x24, 0x68, 0x62, + 0x2f, 0x3e, 0x9c, 0x49, 0x85, 0x79, 0x1f, 0x08, 0x40, 0xd5, 0x27, 0x86, 0xea, 0xfa, 0x30, 0x80, + 0xf3, 0xf7, 0x4a, 0x26, 0x46, 0x9c, 0x43, 0x89, 0xd9, 0x10, 0x8d, 0x5d, 0x66, 0x92, 0xc0, 0x24, + 0xf4, 0x6d, 0x16, 0xdc, 0x37, 0x32, 0x64, 0xaf, 0x24, 0x41, 0x38, 0x5d, 0x17, 0x5d, 0x87, 0x69, + 0xe6, 0xcd, 0x11, 0x47, 0x27, 0x1a, 0x89, 0xdf, 0xd2, 0xaf, 0x26, 0x20, 0x38, 0x55, 0x53, 0xff, + 0x2d, 0x0d, 0x26, 0xd5, 0x65, 0x77, 0x88, 0x57, 0x2d, 0x1d, 0xe5, 0x30, 0x1c, 0xe0, 0xc5, 0x85, + 0x4a, 0xf5, 0x30, 0xe7, 0xe1, 0x17, 0x86, 0xe0, 0x5c, 0x46, 0x1b, 0x76, 0x37, 0x4f, 0x52, 0x07, + 0xeb, 0x20, 0x77, 0xf3, 0x3d, 0x87, 0x74, 0x74, 0x37, 0x9f, 0x86, 0xe0, 0x1e, 0xba, 0xe8, 0x1e, + 0x0c, 0x99, 0xbe, 0x2d, 0x86, 0xe5, 0x3d, 0x85, 0xd4, 0x42, 0x5c, 0x5f, 0x9c, 0x10, 0x14, 0x87, + 0xaa, 0xb8, 0x8e, 0x29, 0x42, 0x7a, 0x3c, 0xa8, 0x9b, 0x5a, 0x9e, 0xd5, 0xec, 0x78, 0x50, 0xf7, + 0x7e, 0x80, 0x93, 0xf5, 0xd0, 0x8b, 0x30, 0x2b, 0xe4, 0x75, 0xf9, 0x8e, 0xd5, 0x73, 0x83, 0x90, + 0xee, 0xbf, 0x50, 0xb0, 0xd3, 0x87, 0xf7, 0xf7, 0x2a, 0xb3, 0xb7, 0x73, 0xea, 0xe0, 0xdc, 0xd6, + 0xfa, 0x5f, 0x0c, 0xc1, 0x84, 0x12, 0x32, 0x1a, 0xad, 0x0c, 0x62, 0xe8, 0x88, 0xbf, 0x58, 0x1a, + 0x3b, 0x56, 0x60, 0xa8, 0xd9, 0xee, 0x14, 0xb4, 0x74, 0x44, 0xe8, 0x6e, 0x52, 0x74, 0xcd, 0x76, + 0x07, 0xdd, 0x8b, 0x6c, 0x27, 0xc5, 0xac, 0x1b, 0xd1, 0xab, 0x83, 0x94, 0xfd, 0x44, 0x6e, 0x97, + 0xe1, 0xdc, 0xed, 0xd2, 0x82, 0xb1, 0x40, 0x18, 0x56, 0x46, 0x8a, 0x47, 0x0e, 0x51, 0x46, 0x5a, + 0x18, 0x52, 0xb8, 0x56, 0x26, 0xed, 0x2c, 0x92, 0x06, 0x95, 0xf8, 0x3a, 0xec, 0x2d, 0x23, 0x53, + 0x37, 0xcb, 0x5c, 0xe2, 0xbb, 0xcb, 0x4a, 0xb0, 0x80, 0xf4, 0x1c, 0x24, 0x63, 0x87, 0x3a, 0x48, + 0x3e, 0x5b, 0x02, 0xd4, 0xdb, 0x0d, 0xf4, 0x28, 0x8c, 0xb0, 0xb7, 0xd0, 0x82, 0x63, 0x44, 0xf2, + 0x39, 0x7b, 0x0d, 0x8b, 0x39, 0x0c, 0x35, 0x44, 0x1c, 0x84, 0x62, 0xd3, 0xc9, 0x9c, 0x5b, 0x04, + 0x3d, 0x25, 0x68, 0x82, 0x3c, 0x99, 0x87, 0x72, 0x4f, 0xe6, 0xbb, 0x30, 0xd6, 0xb2, 0x5d, 0x76, + 0xc3, 0x56, 0xcc, 0xde, 0xc4, 0xef, 0xe0, 0x39, 0x0a, 0x2c, 0x71, 0xe9, 0x3f, 0x28, 0xd1, 0xa5, + 0x1f, 0xcb, 0xa5, 0x5d, 0x00, 0xa3, 0x13, 0x7a, 0x5c, 0xc0, 0x11, 0x3b, 0xa0, 0x5e, 0x6c, 0x96, + 0x23, 0xa4, 0x0b, 0x11, 0x42, 0x7e, 0x35, 0x1e, 0xff, 0xc6, 0x0a, 0x31, 0x4a, 0x3a, 0xb4, 0x5b, + 0xe4, 0x05, 0xdb, 0xb5, 0xbc, 0xfb, 0x62, 0x78, 0x07, 0x25, 0xbd, 0x1e, 0x21, 0xe4, 0xa4, 0xe3, + 0xdf, 0x58, 0x21, 0x46, 0x59, 0x0b, 0x53, 0x6f, 0x5d, 0x16, 0xc3, 0x5f, 0xf4, 0xcd, 0x73, 0x1c, + 0x79, 0x76, 0x96, 0x39, 0x6b, 0xa9, 0xe6, 0xd4, 0xc1, 0xb9, 0xad, 0xf5, 0xdf, 0xd6, 0xe0, 0x42, + 0xe6, 0x50, 0xa0, 0x9b, 0x70, 0x36, 0xf6, 0x87, 0x52, 0x99, 0x7d, 0x39, 0xce, 0x1d, 0x71, 0x3b, + 0x5d, 0x01, 0xf7, 0xb6, 0xe1, 0x8e, 0xad, 0x3d, 0x87, 0x89, 0x70, 0xa6, 0x52, 0x05, 0x18, 0x15, + 0x8c, 0xb3, 0xda, 0xe8, 0x1f, 0x4e, 0x74, 0x36, 0x1e, 0x2c, 0xba, 0x33, 0x36, 0x48, 0x33, 0x7a, + 0xb8, 0x14, 0xed, 0x8c, 0x45, 0x5a, 0x88, 0x39, 0x0c, 0x3d, 0xa2, 0x3e, 0x07, 0x8c, 0xf8, 0x96, + 0x7c, 0x12, 0xa8, 0x87, 0x00, 0xc2, 0x5d, 0xd1, 0x76, 0x9b, 0x68, 0x13, 0xca, 0x86, 0x48, 0x5f, + 0x29, 0x96, 0xd9, 0xcf, 0x16, 0xd2, 0xa4, 0x05, 0x0e, 0xee, 0x95, 0x2e, 0x7f, 0xe1, 0x08, 0xb7, + 0xfe, 0x8f, 0x35, 0xb8, 0x98, 0xfd, 0xde, 0xf7, 0x10, 0xf2, 0x41, 0x0b, 0x26, 0xfc, 0xb8, 0x99, + 0x58, 0x93, 0x3f, 0xa3, 0x46, 0x69, 0x54, 0x22, 0x1c, 0x51, 0xd9, 0xa9, 0xea, 0x7b, 0x81, 0x9c, + 0x98, 0x74, 0xe0, 0xc6, 0x48, 0x6f, 0x51, 0x7a, 0x82, 0x55, 0xfc, 0xfa, 0xef, 0x95, 0x00, 0x56, + 0x49, 0x78, 0xdf, 0xf3, 0xb7, 0xe9, 0x10, 0x3d, 0x9c, 0x10, 0xd7, 0xcb, 0x3f, 0xbe, 0x37, 0xe7, + 0x0f, 0xc3, 0x70, 0xdb, 0xb3, 0x02, 0xc1, 0x9d, 0x58, 0x47, 0x98, 0x27, 0x0f, 0x2b, 0x45, 0x15, + 0x18, 0x61, 0xb7, 0x07, 0xe2, 0xe0, 0x60, 0xc2, 0x3e, 0x15, 0xd5, 0x02, 0xcc, 0xcb, 0x79, 0x52, + 0x22, 0xf6, 0xda, 0x23, 0x10, 0xda, 0x8b, 0x48, 0x4a, 0xc4, 0xcb, 0x70, 0x04, 0x45, 0xd7, 0x01, + 0xec, 0xf6, 0x0d, 0xa3, 0x65, 0x3b, 0x54, 0x70, 0x1c, 0x8d, 0x72, 0x60, 0x42, 0x7d, 0x4d, 0x96, + 0x3e, 0xd8, 0xab, 0x94, 0xc5, 0xaf, 0x2e, 0x56, 0x6a, 0xeb, 0x9f, 0x1c, 0x86, 0x44, 0xbe, 0xd8, + 0xd8, 0x50, 0xa3, 0x9d, 0x8c, 0xa1, 0xe6, 0x45, 0x98, 0x75, 0x3c, 0xc3, 0x5a, 0x34, 0x1c, 0xba, + 0x59, 0xfc, 0x06, 0x9f, 0x46, 0xc3, 0x6d, 0x46, 0x49, 0x41, 0x19, 0xd3, 0x58, 0xce, 0xa9, 0x83, + 0x73, 0x5b, 0xa3, 0x30, 0xca, 0x52, 0xcb, 0xd3, 0x72, 0x2c, 0x0f, 0x9a, 0x4d, 0x77, 0x5e, 0x7d, + 0x23, 0x14, 0x9d, 0xff, 0xa9, 0x44, 0xb6, 0x9f, 0xd1, 0xe0, 0x02, 0xd9, 0x0d, 0x89, 0xef, 0x1a, + 0xce, 0xba, 0x6f, 0x6c, 0x6e, 0xda, 0xa6, 0xf0, 0xaf, 0xe4, 0x13, 0xbb, 0xb6, 0xbf, 0x57, 0xb9, + 0xb0, 0x94, 0x55, 0xe1, 0xc1, 0x5e, 0xe5, 0x5d, 0xbd, 0xc9, 0xa2, 0xe5, 0x93, 0xa0, 0xcc, 0x26, + 0x6c, 0x21, 0x67, 0x93, 0x9b, 0x7b, 0x06, 0x26, 0x8e, 0xf0, 0xc6, 0x21, 0xf1, 0xf4, 0xfa, 0xf7, + 0x4b, 0x30, 0x49, 0xd7, 0xde, 0xb2, 0x67, 0x1a, 0x4e, 0x6d, 0xb5, 0x71, 0x84, 0x4c, 0xcb, 0x68, + 0x19, 0xce, 0x6f, 0x7a, 0xbe, 0x49, 0xd6, 0xab, 0x6b, 0xeb, 0x9e, 0xb8, 0xbb, 0xa8, 0xad, 0x36, + 0x04, 0x23, 0x65, 0xda, 0xd8, 0x8d, 0x0c, 0x38, 0xce, 0x6c, 0x85, 0xee, 0xc0, 0x85, 0xb8, 0xfc, + 0x6e, 0x9b, 0x3b, 0x65, 0x50, 0x74, 0x43, 0xb1, 0x53, 0xc9, 0x8d, 0xac, 0x0a, 0x38, 0xbb, 0x1d, + 0x32, 0xe0, 0xb2, 0x08, 0xed, 0x70, 0xc3, 0xf3, 0xef, 0x1b, 0xbe, 0x95, 0x44, 0x3b, 0x1c, 0xdb, + 0x76, 0x6b, 0xf9, 0xd5, 0x70, 0x3f, 0x1c, 0xfa, 0xaf, 0x8e, 0x82, 0xf2, 0x98, 0xed, 0x08, 0xa9, + 0x6c, 0x7e, 0x43, 0x83, 0xf3, 0xa6, 0x63, 0x13, 0x37, 0x4c, 0xbd, 0x5a, 0xe2, 0x2c, 0xe9, 0x6e, + 0xa1, 0x57, 0x76, 0x6d, 0xe2, 0xd6, 0x6b, 0xc2, 0x87, 0xa5, 0x9a, 0x81, 0x5c, 0xf8, 0xf9, 0x64, + 0x40, 0x70, 0x66, 0x67, 0xd8, 0xf7, 0xb0, 0xf2, 0x7a, 0x4d, 0x7d, 0x93, 0x5e, 0x15, 0x65, 0x38, + 0x82, 0xa2, 0x27, 0x61, 0xa2, 0xe9, 0x7b, 0x9d, 0x76, 0x50, 0x65, 0x8e, 0xb3, 0x7c, 0xfd, 0x33, + 0xd1, 0xed, 0x66, 0x5c, 0x8c, 0xd5, 0x3a, 0x54, 0x10, 0xe5, 0x3f, 0xd7, 0x7c, 0xb2, 0x69, 0xef, + 0x0a, 0x46, 0xc7, 0x04, 0xd1, 0x9b, 0x4a, 0x39, 0x4e, 0xd4, 0x42, 0xef, 0x80, 0x71, 0x3b, 0x08, + 0x3a, 0xc4, 0xbf, 0x8b, 0x97, 0x45, 0x0c, 0x7b, 0x76, 0x1f, 0x52, 0x97, 0x85, 0x38, 0x86, 0xa3, + 0x2f, 0x69, 0x30, 0xed, 0x93, 0x57, 0x3b, 0xb6, 0x4f, 0x2c, 0x46, 0x34, 0x10, 0x2f, 0x0a, 0xf1, + 0x60, 0xaf, 0x18, 0xe7, 0x71, 0x02, 0x29, 0xe7, 0x12, 0x91, 0xfd, 0x2b, 0x09, 0xc4, 0xa9, 0x1e, + 0xd0, 0xa1, 0x0a, 0xec, 0xa6, 0x6b, 0xbb, 0xcd, 0x05, 0xa7, 0x19, 0xcc, 0x96, 0x19, 0xe3, 0xe3, + 0x52, 0x6e, 0x5c, 0x8c, 0xd5, 0x3a, 0x54, 0x03, 0xec, 0x04, 0x74, 0xdf, 0xb7, 0x08, 0x1f, 0xdf, + 0xf1, 0xd8, 0x40, 0x78, 0x57, 0x05, 0xe0, 0x64, 0x3d, 0x74, 0x1d, 0xa6, 0x65, 0x81, 0x18, 0x65, + 0xe0, 0xc1, 0xc8, 0x68, 0x3f, 0xef, 0x26, 0x20, 0x38, 0x55, 0x73, 0x6e, 0x01, 0xce, 0x65, 0x7c, + 0xe6, 0x91, 0x98, 0xcb, 0x6f, 0x95, 0xe0, 0xad, 0x07, 0xae, 0x4a, 0xf4, 0x0f, 0x34, 0x98, 0x20, + 0xbb, 0xa1, 0x6f, 0x44, 0xbe, 0xf5, 0x74, 0x8a, 0x36, 0x4f, 0x64, 0x0b, 0xcc, 0x2f, 0xc5, 0x84, + 0xf8, 0xb4, 0x45, 0x42, 0x86, 0x02, 0xc1, 0x6a, 0x7f, 0xa8, 0x56, 0xc5, 0x43, 0xd5, 0xa9, 0x76, + 0x74, 0x91, 0x1c, 0x54, 0x40, 0xe6, 0xde, 0x0f, 0x33, 0x69, 0xcc, 0x47, 0x1a, 0xa9, 0xdf, 0x2d, + 0xc1, 0xd8, 0x9a, 0xef, 0x51, 0xf9, 0xe7, 0x14, 0x82, 0x47, 0x19, 0x89, 0x98, 0xcb, 0x85, 0x9e, + 0x28, 0x8b, 0xce, 0xe6, 0xc6, 0x7b, 0xb7, 0x53, 0xf1, 0xde, 0x17, 0x06, 0x21, 0xd2, 0x3f, 0xc0, + 0xfb, 0xbf, 0xd1, 0x60, 0x42, 0xd4, 0x3c, 0x85, 0xe0, 0x52, 0x1f, 0x49, 0x06, 0x97, 0x7a, 0xdf, + 0x00, 0xdf, 0x95, 0x13, 0x56, 0xea, 0xab, 0x1a, 0x4c, 0x89, 0x1a, 0x2b, 0xa4, 0xb5, 0x41, 0x7c, + 0x74, 0x03, 0xc6, 0x82, 0x0e, 0x9b, 0x48, 0xf1, 0x41, 0x97, 0x55, 0x89, 0xda, 0xdf, 0x30, 0x4c, + 0x96, 0xe1, 0x96, 0x57, 0x51, 0xa2, 0xa8, 0xf3, 0x02, 0x2c, 0x1b, 0x53, 0xf9, 0xdd, 0xf7, 0x9c, + 0x9e, 0x98, 0x34, 0xd8, 0x73, 0x08, 0x66, 0x10, 0x2a, 0x9a, 0xd2, 0xbf, 0xd2, 0xc6, 0xc4, 0x44, + 0x53, 0x0a, 0x0e, 0x30, 0x2f, 0xd7, 0x3f, 0x3d, 0x1c, 0x0d, 0x36, 0x8b, 0x74, 0x7c, 0x0b, 0xc6, + 0x4d, 0x9f, 0x18, 0x21, 0xb1, 0x16, 0xbb, 0x87, 0xe9, 0x1c, 0x63, 0xd6, 0x55, 0xd9, 0x02, 0xc7, + 0x8d, 0x29, 0x5f, 0x54, 0xaf, 0x2e, 0x4a, 0xf1, 0x11, 0x92, 0x7b, 0x6d, 0xf1, 0xb3, 0x30, 0xe2, + 0xdd, 0x77, 0x23, 0x0f, 0x88, 0xbe, 0x84, 0xd9, 0xa7, 0xdc, 0xa1, 0xb5, 0x31, 0x6f, 0xa4, 0xc6, + 0x64, 0x1a, 0xee, 0x13, 0x93, 0xc9, 0x81, 0xb1, 0x16, 0x9b, 0x86, 0x81, 0x82, 0x6a, 0x27, 0x26, + 0x54, 0x4d, 0xbb, 0xc2, 0x30, 0x63, 0x49, 0x82, 0x9e, 0x6f, 0x94, 0x07, 0x07, 0x6d, 0xc3, 0x24, + 0xea, 0xf9, 0xb6, 0x2a, 0x0b, 0x71, 0x0c, 0x47, 0xdd, 0x64, 0xb0, 0xaf, 0xb1, 0xe2, 0x26, 0x26, + 0xd1, 0x3d, 0x25, 0xbe, 0x17, 0x1f, 0xfa, 0xdc, 0x80, 0x5f, 0xbf, 0x38, 0x1c, 0x2d, 0x52, 0x11, + 0x23, 0x3f, 0x3b, 0x2b, 0xab, 0x56, 0x28, 0x2b, 0xeb, 0xbb, 0x64, 0x50, 0xca, 0x52, 0x22, 0x45, + 0x50, 0x14, 0x94, 0x72, 0x52, 0x90, 0x4e, 0x04, 0xa2, 0xec, 0xc0, 0xb9, 0x20, 0x34, 0x1c, 0xd2, + 0xb0, 0x85, 0x2a, 0x1e, 0x84, 0x46, 0xab, 0x5d, 0x20, 0x2a, 0x24, 0xf7, 0x44, 0xef, 0x45, 0x85, + 0xb3, 0xf0, 0xa3, 0x4f, 0x69, 0x30, 0xcb, 0xca, 0x17, 0x3a, 0xa1, 0xc7, 0xc3, 0x17, 0xc7, 0xc4, + 0x8f, 0x7e, 0x3f, 0xca, 0x54, 0xa0, 0x46, 0x0e, 0x3e, 0x9c, 0x4b, 0x09, 0xbd, 0x0e, 0x17, 0x1c, + 0x23, 0x08, 0x17, 0xcc, 0xd0, 0xde, 0xb1, 0xc3, 0x6e, 0xdc, 0x85, 0xa3, 0x87, 0x82, 0x64, 0xa2, + 0xf6, 0x72, 0x16, 0x32, 0x9c, 0x4d, 0x43, 0xff, 0x4b, 0x0d, 0x50, 0xef, 0x12, 0x42, 0x0e, 0x94, + 0x2d, 0xe9, 0x1a, 0xae, 0x1d, 0x4b, 0x24, 0xba, 0x88, 0x33, 0x47, 0x1e, 0xe5, 0x11, 0x05, 0xe4, + 0xc1, 0xf8, 0xfd, 0x2d, 0x3b, 0x24, 0x8e, 0x1d, 0x84, 0xc7, 0x14, 0xf8, 0x2e, 0x8a, 0x02, 0xf5, + 0x82, 0x44, 0x8c, 0x63, 0x1a, 0xfa, 0x2f, 0x0d, 0x43, 0x94, 0x3b, 0xff, 0x10, 0x57, 0x85, 0x1d, + 0x40, 0xa6, 0x92, 0x80, 0x68, 0x10, 0x1b, 0x04, 0x73, 0x6b, 0xa8, 0xf6, 0x20, 0xc3, 0x19, 0x04, + 0xd0, 0xeb, 0x70, 0xde, 0x76, 0x37, 0x7d, 0x23, 0x08, 0xfd, 0x0e, 0x33, 0xe6, 0x0e, 0x92, 0xc7, + 0x87, 0x69, 0x10, 0xf5, 0x0c, 0x74, 0x38, 0x93, 0x08, 0x22, 0x30, 0x76, 0xdf, 0xf3, 0xb7, 0x29, + 0xf3, 0x1c, 0x2e, 0x9e, 0xd1, 0xf1, 0x05, 0x86, 0x22, 0xe6, 0x9a, 0xfc, 0x77, 0x80, 0x25, 0x6e, + 0x1e, 0x06, 0x83, 0xff, 0x2f, 0xaf, 0x35, 0xc5, 0xba, 0xaf, 0x16, 0xa7, 0x17, 0x27, 0x07, 0xe5, + 0x61, 0x30, 0x92, 0x85, 0x38, 0x4d, 0x50, 0xff, 0x23, 0x0d, 0x46, 0xf8, 0x93, 0xcb, 0x93, 0x97, + 0xe0, 0xfe, 0x76, 0x42, 0x82, 0x2b, 0x94, 0x8a, 0x84, 0x75, 0x35, 0x37, 0x49, 0xc6, 0xb7, 0x35, + 0x18, 0x67, 0x35, 0x4e, 0x41, 0xa4, 0x7a, 0x39, 0x29, 0x52, 0x3d, 0x53, 0xf8, 0x6b, 0x72, 0x04, + 0xaa, 0x3f, 0x1a, 0x12, 0xdf, 0xc2, 0x24, 0x96, 0x3a, 0x9c, 0x13, 0x4e, 0x95, 0xcb, 0xf6, 0x26, + 0xa1, 0x4b, 0xbc, 0x66, 0x74, 0x03, 0x11, 0x27, 0x81, 0xbf, 0xaa, 0xe9, 0x05, 0xe3, 0xac, 0x36, + 0xe8, 0xf7, 0x35, 0x2a, 0x1b, 0x84, 0xbe, 0x6d, 0x0e, 0x94, 0x79, 0x22, 0xea, 0xdb, 0xfc, 0x0a, + 0x47, 0xc6, 0x35, 0x93, 0xbb, 0xb1, 0x90, 0xc0, 0x4a, 0x1f, 0xec, 0x55, 0x2a, 0x19, 0x46, 0xa3, + 0x38, 0xa0, 0x7d, 0x10, 0x7e, 0xf2, 0x4f, 0xfb, 0x56, 0x61, 0x86, 0x5a, 0xd9, 0x63, 0x74, 0x0b, + 0x46, 0x02, 0xd3, 0x6b, 0x93, 0xa3, 0xe4, 0xd2, 0x89, 0x06, 0xb8, 0x41, 0x5b, 0x62, 0x8e, 0x60, + 0xee, 0x15, 0x98, 0x54, 0x7b, 0x9e, 0xa1, 0xf9, 0xd4, 0x54, 0xcd, 0xe7, 0xc8, 0x57, 0x31, 0xaa, + 0xa6, 0xf4, 0x07, 0x25, 0x18, 0xe5, 0x19, 0x5d, 0x0f, 0x61, 0x8e, 0xb6, 0x65, 0xe4, 0xf0, 0x01, + 0x12, 0x55, 0xab, 0x61, 0xf6, 0x5e, 0xf2, 0x5c, 0x65, 0x0c, 0xd4, 0xe0, 0xe1, 0xc8, 0x8d, 0x82, + 0x2f, 0x0e, 0x15, 0xcf, 0xf7, 0xc1, 0x3f, 0xec, 0xa4, 0xc3, 0x2d, 0xfe, 0xb1, 0x06, 0x93, 0x89, + 0x68, 0x96, 0x2d, 0x18, 0xf2, 0xa3, 0x4c, 0x50, 0x45, 0xad, 0xf5, 0xd2, 0x35, 0xe7, 0x72, 0x9f, + 0x4a, 0x98, 0xd2, 0x89, 0x02, 0x5f, 0x96, 0x8e, 0x29, 0xf0, 0xa5, 0xfe, 0x65, 0x0d, 0x2e, 0xca, + 0x0f, 0x4a, 0x46, 0x2b, 0x42, 0x8f, 0x43, 0xd9, 0x68, 0xdb, 0xcc, 0xa0, 0xa4, 0x9a, 0xe4, 0x16, + 0xd6, 0xea, 0xac, 0x0c, 0x47, 0x50, 0xf4, 0x4e, 0x28, 0xcb, 0x85, 0x27, 0xc4, 0xce, 0x88, 0x67, + 0x45, 0xf7, 0x0f, 0x51, 0x0d, 0xf4, 0x36, 0x25, 0xb8, 0xfb, 0x48, 0x2c, 0x27, 0x44, 0x84, 0xf9, + 0x35, 0xa5, 0xfe, 0x33, 0x30, 0xde, 0x68, 0xdc, 0xe2, 0x71, 0x5c, 0x8e, 0x60, 0x5a, 0xd5, 0x3f, + 0x37, 0x04, 0x53, 0xdc, 0xc4, 0xb0, 0x68, 0xbb, 0x96, 0xed, 0x36, 0x4f, 0xe1, 0x4c, 0x59, 0x87, + 0x71, 0x6e, 0xcd, 0x38, 0x20, 0x6b, 0x57, 0x43, 0x56, 0x4a, 0x47, 0x81, 0x8d, 0x00, 0x38, 0x46, + 0x84, 0x6e, 0xc3, 0xe8, 0xab, 0x94, 0xbf, 0xc9, 0x7d, 0x71, 0x28, 0x36, 0x13, 0x2d, 0x7a, 0xc6, + 0x1a, 0x03, 0x2c, 0x50, 0xa0, 0x80, 0xf9, 0x8e, 0x31, 0x81, 0x6b, 0x90, 0x28, 0x04, 0x89, 0x91, + 0x8d, 0x52, 0x3b, 0x4c, 0x0a, 0x17, 0x34, 0xf6, 0x0b, 0x47, 0x84, 0x58, 0x08, 0xeb, 0x44, 0x8b, + 0x37, 0x49, 0x08, 0xeb, 0x44, 0x9f, 0x73, 0x8e, 0xc6, 0x67, 0xe0, 0x42, 0xe6, 0x60, 0x1c, 0x2c, + 0xce, 0xea, 0xff, 0xac, 0x04, 0xc3, 0x0d, 0x42, 0xac, 0x53, 0x58, 0x99, 0x2f, 0x27, 0xa4, 0x9d, + 0x9f, 0x2d, 0x1c, 0x44, 0x3b, 0xcf, 0x58, 0xb5, 0x99, 0x32, 0x56, 0xbd, 0xbf, 0x30, 0x85, 0xfe, + 0x96, 0xaa, 0x5f, 0x2b, 0x01, 0xd0, 0x6a, 0x8b, 0x86, 0xb9, 0xcd, 0x39, 0x4e, 0xb4, 0x9a, 0xb5, + 0x24, 0xc7, 0xe9, 0x5d, 0x86, 0xa7, 0x79, 0x7d, 0xa9, 0xc3, 0x28, 0xcf, 0x95, 0x2e, 0xac, 0xfe, + 0xc0, 0x53, 0xc9, 0xd2, 0x12, 0x2c, 0x20, 0x49, 0x6e, 0x31, 0x7c, 0x4c, 0xdc, 0x42, 0xdf, 0x05, + 0x96, 0xfb, 0xaf, 0xb6, 0xda, 0x40, 0x2d, 0x65, 0x74, 0x4a, 0xc5, 0x65, 0x79, 0x81, 0xee, 0xc0, + 0x5d, 0xfe, 0x39, 0x0d, 0xce, 0xa4, 0xea, 0x1e, 0x42, 0xa7, 0x3b, 0x11, 0x9e, 0xa9, 0xff, 0xa1, + 0x06, 0x65, 0xda, 0x97, 0x53, 0x60, 0x34, 0x7f, 0x2b, 0xc9, 0x68, 0xde, 0x5b, 0x74, 0x88, 0x73, + 0xf8, 0xcb, 0x9f, 0x97, 0x80, 0x45, 0xab, 0x17, 0x97, 0xf4, 0xca, 0xdd, 0xb7, 0x96, 0x73, 0xf7, + 0x7d, 0x55, 0x5c, 0x9d, 0xa7, 0x6c, 0x94, 0xca, 0xf5, 0xf9, 0x3b, 0x95, 0xdb, 0xf1, 0xa1, 0xe4, + 0xb6, 0xc9, 0xb8, 0x21, 0x7f, 0x0d, 0xa6, 0x82, 0x2d, 0xcf, 0x0b, 0xa3, 0x37, 0xea, 0xc3, 0xc5, + 0xed, 0xd1, 0xcc, 0x51, 0x57, 0x7e, 0x0a, 0xbf, 0x7e, 0x69, 0xa8, 0xb8, 0x71, 0x92, 0x14, 0x9a, + 0x07, 0xd8, 0x70, 0x3c, 0x73, 0xbb, 0x5a, 0xaf, 0x61, 0xe9, 0x98, 0xc9, 0xbc, 0x6a, 0x16, 0xa3, + 0x52, 0xac, 0xd4, 0x18, 0xe8, 0x36, 0xff, 0xcf, 0x34, 0x3e, 0xd2, 0x47, 0x58, 0xbc, 0xa7, 0xc8, + 0x51, 0xde, 0x9e, 0xe2, 0x28, 0x4a, 0x82, 0xea, 0x04, 0x57, 0xa9, 0x48, 0x81, 0x7d, 0x38, 0xb6, + 0x3f, 0x27, 0x72, 0xf4, 0xfc, 0xae, 0xf8, 0xcc, 0x28, 0xe1, 0x41, 0x1b, 0xa6, 0x1c, 0x35, 0x59, + 0xa2, 0xd8, 0x23, 0x85, 0xf2, 0x2c, 0x46, 0x9e, 0xfe, 0x89, 0x62, 0x9c, 0x24, 0x80, 0xde, 0x03, + 0x53, 0xf2, 0xeb, 0xe8, 0x60, 0x4a, 0xdf, 0x05, 0xb6, 0x1c, 0xd6, 0x54, 0x00, 0x4e, 0xd6, 0xd3, + 0xff, 0xfe, 0x30, 0x3c, 0xc2, 0xfb, 0xce, 0x2c, 0x06, 0x35, 0xd2, 0x26, 0xae, 0x45, 0x5c, 0xb3, + 0xcb, 0x64, 0x56, 0xcb, 0x6b, 0xa2, 0xbf, 0xab, 0x41, 0x99, 0xb8, 0x56, 0xdb, 0xb3, 0x5d, 0x69, + 0xea, 0xff, 0x50, 0xf1, 0x94, 0x11, 0x39, 0x54, 0x96, 0x04, 0x01, 0x11, 0x97, 0x52, 0xfc, 0xc2, + 0x11, 0x61, 0x74, 0x1f, 0x46, 0xda, 0xbe, 0xb7, 0x21, 0x95, 0xb5, 0x7b, 0xc7, 0xde, 0x83, 0x35, + 0x8a, 0x9d, 0x4f, 0x2e, 0xfb, 0x17, 0x73, 0x7a, 0xe8, 0x75, 0x18, 0xbd, 0x4f, 0x88, 0x15, 0x19, + 0xf4, 0x5f, 0x38, 0x76, 0xca, 0x2f, 0x30, 0xf4, 0xfc, 0x40, 0xe3, 0xff, 0x63, 0x41, 0x92, 0x12, + 0x67, 0xbd, 0x90, 0x92, 0xe5, 0x0b, 0x27, 0xf3, 0xd9, 0x82, 0x38, 0xff, 0x1f, 0x0b, 0x92, 0x3a, + 0x86, 0xb7, 0x1d, 0x6a, 0xce, 0x8e, 0xa2, 0x43, 0xdc, 0x01, 0xfd, 0xe0, 0xee, 0x1c, 0x05, 0xe1, + 0x1a, 0x3c, 0x7a, 0x88, 0xef, 0x3b, 0x4e, 0x8c, 0x7c, 0x8a, 0x8e, 0x82, 0xf1, 0x79, 0x78, 0x4c, + 0xc1, 0xb8, 0xb4, 0x4b, 0x15, 0xaf, 0xaa, 0xd1, 0x36, 0x4c, 0x3b, 0xec, 0xf2, 0x77, 0xd9, 0xfc, + 0x86, 0xe1, 0x08, 0x28, 0x3f, 0x3b, 0x0c, 0x15, 0x05, 0x67, 0xc2, 0x3d, 0x49, 0x9e, 0x32, 0x5f, + 0xd3, 0x60, 0xc2, 0x70, 0x5d, 0x91, 0x1f, 0x4b, 0x5a, 0xbb, 0xad, 0x01, 0x97, 0x50, 0x16, 0xa9, + 0xf9, 0x85, 0x98, 0x4c, 0xea, 0x06, 0x5b, 0x81, 0x60, 0xb5, 0x37, 0x7d, 0x1c, 0x95, 0x4a, 0xa7, + 0xea, 0xa8, 0x84, 0x3e, 0x26, 0xd9, 0x3b, 0xd7, 0x05, 0x5f, 0x3c, 0x81, 0xf1, 0x61, 0xa7, 0x45, + 0xb6, 0x8d, 0x66, 0xee, 0xfd, 0x30, 0x93, 0x1e, 0xbd, 0x23, 0x19, 0x4e, 0xfe, 0xe5, 0x50, 0x62, + 0x75, 0xe5, 0x92, 0x3f, 0x84, 0x65, 0xea, 0x8d, 0xd4, 0x82, 0xe1, 0xe2, 0x97, 0x7d, 0x52, 0x03, + 0x72, 0xbc, 0xab, 0x66, 0xe8, 0x74, 0xdd, 0xdb, 0x06, 0x9d, 0xb6, 0x2a, 0x5c, 0x54, 0xc6, 0x88, + 0xdd, 0x01, 0x57, 0xb7, 0x88, 0xb9, 0x7d, 0x24, 0x8b, 0xcc, 0x22, 0xd5, 0x94, 0x23, 0x24, 0x4a, + 0xa6, 0xa7, 0x27, 0x60, 0x6c, 0xc7, 0x0e, 0x6c, 0x19, 0x2d, 0x44, 0xc1, 0x71, 0x8f, 0x17, 0x63, + 0x09, 0xd7, 0x97, 0x13, 0x8c, 0x64, 0xdd, 0x6b, 0x7b, 0x8e, 0xd7, 0xec, 0x2e, 0xdc, 0x37, 0x7c, + 0x82, 0xbd, 0x4e, 0x28, 0xb0, 0x1d, 0xb6, 0x47, 0x2b, 0x70, 0x55, 0xc1, 0x96, 0xf9, 0xec, 0xf9, + 0x28, 0xe8, 0xbe, 0x53, 0x96, 0x92, 0x95, 0x78, 0x17, 0xf6, 0x0d, 0x0d, 0x2e, 0x91, 0x3c, 0x06, + 0x2a, 0xa4, 0x93, 0x41, 0x77, 0x70, 0x2e, 0x83, 0x16, 0x01, 0x1d, 0xf3, 0xc0, 0x38, 0xbf, 0x67, + 0xa8, 0x9b, 0xc8, 0x77, 0x56, 0x1a, 0xc4, 0x4c, 0x94, 0x31, 0xdf, 0xfd, 0xb2, 0x9d, 0xa1, 0x5f, + 0xd7, 0xe0, 0xbc, 0x93, 0xb1, 0x07, 0x85, 0x48, 0xd1, 0x38, 0x81, 0xed, 0xcd, 0xaf, 0xe4, 0xb2, + 0x20, 0x38, 0xb3, 0x2b, 0xe8, 0x37, 0x73, 0xdf, 0xe3, 0x8f, 0x14, 0xcf, 0x16, 0x7d, 0xd0, 0x42, + 0x2c, 0xf0, 0x34, 0xff, 0x63, 0x30, 0xe1, 0xc5, 0x5b, 0x55, 0x04, 0x50, 0xf8, 0xe0, 0x80, 0x9d, + 0x53, 0x36, 0x3f, 0x77, 0x70, 0x50, 0x0a, 0xb0, 0x4a, 0x0f, 0x7d, 0x45, 0x03, 0x64, 0xf5, 0x08, + 0x24, 0xc2, 0xc7, 0xe2, 0xf9, 0x63, 0x97, 0x0d, 0xf9, 0x95, 0x6e, 0x6f, 0x39, 0xce, 0xe8, 0x04, + 0x5b, 0x66, 0x61, 0x06, 0xf7, 0x10, 0xa1, 0x36, 0x07, 0x5d, 0x66, 0x59, 0x8c, 0x89, 0x2f, 0xb3, + 0x2c, 0x08, 0xce, 0xec, 0x8a, 0xfe, 0xe5, 0x31, 0x6e, 0xc3, 0x60, 0x77, 0x6e, 0x1b, 0x30, 0xba, + 0xc1, 0x6c, 0x5e, 0x82, 0x6d, 0x14, 0x36, 0xb0, 0x71, 0xcb, 0x19, 0x17, 0xa1, 0xf9, 0xff, 0x58, + 0x60, 0x46, 0x2f, 0xc1, 0x90, 0xe5, 0x06, 0x62, 0xbf, 0xbf, 0x6f, 0x00, 0x53, 0x51, 0xfc, 0x12, + 0xa3, 0xb6, 0xda, 0xc0, 0x14, 0x29, 0x72, 0xa1, 0xec, 0x0a, 0xb5, 0x5f, 0xa8, 0x26, 0x85, 0x33, + 0xf9, 0x45, 0xe6, 0x83, 0xc8, 0x68, 0x21, 0x4b, 0x70, 0x44, 0x83, 0xd2, 0x4b, 0xd9, 0xb9, 0x0b, + 0xd3, 0x8b, 0x0c, 0x5f, 0xfd, 0x6c, 0x8b, 0x6b, 0xaa, 0x19, 0x6b, 0xe4, 0xf0, 0x66, 0xac, 0xa9, + 0x5c, 0xb3, 0x3f, 0x81, 0xd1, 0xd0, 0xb0, 0xdd, 0x90, 0x9b, 0x31, 0x0a, 0x5e, 0x51, 0xd3, 0xfe, + 0xaf, 0x53, 0x2c, 0xb1, 0xbd, 0x80, 0xfd, 0x0c, 0xb0, 0x40, 0x4e, 0x17, 0xd6, 0x0e, 0xcb, 0xa7, + 0x2b, 0x36, 0x66, 0xe1, 0x85, 0xc5, 0xb3, 0xf2, 0xf2, 0x85, 0xc5, 0xff, 0xc7, 0x02, 0x33, 0x7a, + 0x05, 0xca, 0x81, 0x74, 0x2a, 0x28, 0x0f, 0x9a, 0xc6, 0x51, 0x78, 0x14, 0x88, 0xf7, 0x1c, 0xc2, + 0x95, 0x20, 0xc2, 0x8f, 0x36, 0x60, 0xcc, 0xe6, 0x2f, 0x10, 0x44, 0x74, 0x94, 0xf7, 0x0d, 0x90, + 0xc5, 0x48, 0x26, 0x9a, 0xe6, 0x6f, 0xea, 0x25, 0x62, 0xfd, 0xdf, 0x8e, 0x73, 0x2b, 0xb4, 0xf0, + 0xdb, 0xda, 0x84, 0xb2, 0x44, 0x37, 0xc8, 0xbb, 0x22, 0x99, 0x37, 0x8e, 0x7f, 0x5a, 0x94, 0x45, + 0x2e, 0xc2, 0x8d, 0xaa, 0x59, 0xcf, 0xb7, 0xe2, 0x90, 0xe6, 0x87, 0x7b, 0xba, 0xf5, 0x2a, 0x4b, + 0xf4, 0x24, 0x9f, 0x3a, 0x0f, 0x15, 0x5f, 0x5a, 0xd1, 0x33, 0xe8, 0x44, 0x82, 0x27, 0xf9, 0x52, + 0x5a, 0x21, 0x92, 0xe3, 0xd7, 0x36, 0x5c, 0xc8, 0xaf, 0xed, 0x59, 0x38, 0x23, 0xfc, 0x08, 0xea, + 0x2c, 0xa7, 0x72, 0xd8, 0x15, 0x6e, 0xef, 0xcc, 0xc3, 0xa4, 0x9a, 0x04, 0xe1, 0x74, 0x5d, 0xf4, + 0x07, 0x1a, 0x94, 0x4d, 0x21, 0xf1, 0x88, 0x7d, 0xb5, 0x3c, 0xd8, 0x55, 0xc5, 0xbc, 0x14, 0xa0, + 0xb8, 0x52, 0x70, 0x4f, 0xf2, 0x08, 0x59, 0x7c, 0x4c, 0x3e, 0x07, 0x51, 0xaf, 0xd1, 0x77, 0xa8, + 0xde, 0xe3, 0xb0, 0x5c, 0x76, 0xec, 0xa1, 0x2a, 0xf7, 0xc7, 0xbf, 0x33, 0xe0, 0x57, 0x2c, 0xc4, + 0x18, 0xf9, 0x87, 0x7c, 0x28, 0xd2, 0x6e, 0x62, 0xc8, 0x31, 0x7d, 0x8b, 0xda, 0x7d, 0xf4, 0x8f, + 0x34, 0x78, 0x8c, 0x3f, 0x82, 0xa8, 0x52, 0x21, 0x86, 0xa5, 0x04, 0x26, 0x71, 0x0e, 0xe2, 0xd8, + 0x0b, 0xaf, 0x7c, 0x64, 0x2f, 0xbc, 0xc7, 0xf7, 0xf7, 0x2a, 0x8f, 0x55, 0x0f, 0x81, 0x1b, 0x1f, + 0xaa, 0x07, 0x73, 0xdb, 0x30, 0x95, 0x98, 0xec, 0x93, 0xf4, 0xd2, 0x98, 0x73, 0x61, 0x26, 0x3d, + 0x27, 0x27, 0xea, 0x15, 0x72, 0x1b, 0xc6, 0xa3, 0xc3, 0x02, 0x3d, 0xa2, 0x10, 0x8a, 0x0f, 0xf3, + 0xdb, 0xa4, 0xcb, 0xa9, 0x56, 0x12, 0x8a, 0x22, 0x37, 0x43, 0xde, 0xa3, 0x05, 0x02, 0xa1, 0xfe, + 0x5d, 0x61, 0x63, 0x5e, 0x27, 0xad, 0xb6, 0x63, 0x84, 0xe4, 0xcd, 0x7f, 0xc3, 0xa9, 0xff, 0x37, + 0x8d, 0xf3, 0x7c, 0x91, 0xda, 0xde, 0x80, 0x89, 0x16, 0x8f, 0xad, 0xca, 0xde, 0x47, 0x6b, 0xc5, + 0x5f, 0x66, 0xaf, 0xc4, 0x68, 0xb0, 0x8a, 0x13, 0xdd, 0x87, 0x71, 0x29, 0x5e, 0x48, 0xeb, 0xc6, + 0x8d, 0xc1, 0x0e, 0xe7, 0x48, 0x92, 0x89, 0x2e, 0xcf, 0x64, 0x49, 0x80, 0x63, 0x5a, 0xba, 0x01, + 0xa8, 0xb7, 0x0d, 0x55, 0x84, 0xa5, 0xb3, 0x77, 0x2a, 0x17, 0x79, 0x8f, 0xc3, 0xf7, 0x81, 0x19, + 0x64, 0xf5, 0x6f, 0x96, 0x20, 0x33, 0x49, 0x17, 0xd2, 0x61, 0x94, 0xbf, 0x3e, 0x92, 0xc9, 0x69, + 0xa9, 0x38, 0xc1, 0x9f, 0x26, 0x61, 0x01, 0x41, 0x77, 0xb8, 0x55, 0xc5, 0xb5, 0x58, 0xa0, 0xb0, + 0x78, 0xa7, 0xaa, 0xef, 0xdc, 0x96, 0xb2, 0x2a, 0xe0, 0xec, 0x76, 0x68, 0x07, 0x50, 0xcb, 0xd8, + 0x4d, 0x63, 0x1b, 0x20, 0x79, 0xcb, 0x4a, 0x0f, 0x36, 0x9c, 0x41, 0x81, 0x1e, 0x66, 0x86, 0x69, + 0x92, 0x76, 0x48, 0x2c, 0xfe, 0x89, 0xf2, 0x8a, 0x8b, 0x1d, 0x66, 0x0b, 0x49, 0x10, 0x4e, 0xd7, + 0xd5, 0x7f, 0x38, 0x0c, 0x97, 0x92, 0x83, 0x48, 0x77, 0xa8, 0xb0, 0xf2, 0xa0, 0xe7, 0xa4, 0x07, + 0x38, 0x1f, 0xc8, 0x27, 0xd2, 0x1e, 0xe0, 0xb3, 0x55, 0x9f, 0xb0, 0x63, 0xd1, 0x70, 0x02, 0xd9, + 0x28, 0xe1, 0x0d, 0xee, 0x03, 0x4a, 0x25, 0xac, 0x2f, 0x18, 0xd6, 0x68, 0x5f, 0x04, 0x19, 0x4a, + 0x62, 0xc2, 0x19, 0xd8, 0x25, 0xcd, 0x38, 0x67, 0x3f, 0xa3, 0x39, 0x54, 0x9c, 0x66, 0x12, 0x13, + 0xce, 0xc0, 0x8e, 0x3e, 0xaf, 0xc1, 0x5c, 0xb2, 0xf8, 0x86, 0xed, 0xda, 0xc1, 0x96, 0x08, 0x77, + 0x75, 0x74, 0x07, 0x74, 0x16, 0xe0, 0x7d, 0x39, 0x17, 0x23, 0xee, 0x43, 0x0d, 0x7d, 0x41, 0x83, + 0xcb, 0xa9, 0x71, 0x49, 0x04, 0xdf, 0x3a, 0xba, 0x2f, 0x3a, 0x7b, 0x9f, 0xb9, 0x9c, 0x8f, 0x12, + 0xf7, 0xa3, 0xa7, 0xff, 0x8b, 0x12, 0x8c, 0xb0, 0x1b, 0xda, 0x37, 0x87, 0x4b, 0x2e, 0xeb, 0x6a, + 0xae, 0x97, 0x4a, 0x33, 0xe5, 0xa5, 0xf2, 0x5c, 0x71, 0x12, 0xfd, 0xdd, 0x54, 0x3e, 0x04, 0x17, + 0x59, 0xb5, 0x05, 0x8b, 0x59, 0x66, 0x02, 0x62, 0x2d, 0x58, 0x16, 0x7b, 0x21, 0x7e, 0xb0, 0x5d, + 0xfb, 0x11, 0x18, 0xea, 0xf8, 0x4e, 0x3a, 0xa4, 0xc1, 0x5d, 0xbc, 0x8c, 0x69, 0xb9, 0xfe, 0x79, + 0x0d, 0x66, 0x18, 0x6e, 0x65, 0xfb, 0xa2, 0x1d, 0x28, 0xfb, 0x62, 0x0b, 0x8b, 0xb9, 0x59, 0x2e, + 0xfc, 0x69, 0x19, 0x6c, 0x41, 0xa4, 0x10, 0x14, 0xbf, 0x70, 0x44, 0x4b, 0xff, 0xc1, 0x28, 0xcc, + 0xe6, 0x35, 0x42, 0x5f, 0xd2, 0xe0, 0xa2, 0x19, 0x4b, 0x54, 0x0b, 0x9d, 0x70, 0xcb, 0xf3, 0xed, + 0xd0, 0x16, 0xae, 0x0b, 0x05, 0x55, 0xcd, 0xea, 0x42, 0xd4, 0x2b, 0x16, 0x2c, 0xaa, 0x9a, 0x49, + 0x01, 0xe7, 0x50, 0x46, 0xaf, 0x03, 0x6c, 0xc7, 0xd1, 0x29, 0xf9, 0x4a, 0xbb, 0x5d, 0x78, 0xac, + 0x94, 0x08, 0x96, 0xb2, 0x53, 0xcc, 0xb8, 0xa9, 0x94, 0x2b, 0xe4, 0x28, 0xf1, 0x20, 0xd8, 0xba, + 0x4d, 0xba, 0x6d, 0xc3, 0x96, 0x37, 0xb4, 0xc5, 0x89, 0x37, 0x1a, 0xb7, 0x04, 0xaa, 0x24, 0x71, + 0xa5, 0x5c, 0x21, 0x87, 0x3e, 0xab, 0xc1, 0x14, 0x57, 0xa8, 0x84, 0x2b, 0xae, 0xe0, 0x6c, 0xab, + 0x85, 0x3b, 0x70, 0x47, 0xc5, 0x16, 0xf5, 0x81, 0xdd, 0xe2, 0x27, 0x41, 0x49, 0xba, 0x74, 0x61, + 0x9c, 0x0d, 0xd2, 0xe7, 0x96, 0xe0, 0x6c, 0x2b, 0x83, 0x27, 0x02, 0x55, 0x0e, 0x41, 0xae, 0x17, + 0xf7, 0x82, 0x7b, 0xc9, 0xb3, 0x4e, 0x91, 0xd0, 0xb4, 0x96, 0x5c, 0xd3, 0xef, 0xb2, 0xc7, 0x71, + 0xb4, 0x53, 0xa3, 0xc5, 0x3b, 0xb5, 0xb4, 0x5e, 0xad, 0x25, 0x90, 0x25, 0x3b, 0xd5, 0x0b, 0xee, + 0x25, 0xaf, 0x7f, 0xa2, 0x04, 0x0f, 0xe5, 0x2c, 0xb4, 0x9c, 0xa3, 0x52, 0x3b, 0xd1, 0xa3, 0xf2, + 0xc7, 0x20, 0x12, 0xb0, 0x77, 0x14, 0x6c, 0x0c, 0xde, 0x24, 0xef, 0x28, 0x58, 0x5f, 0x73, 0x9c, + 0xb9, 0xfe, 0x50, 0x83, 0xb3, 0x3d, 0xb1, 0x0a, 0x0f, 0xe5, 0x85, 0x7f, 0x6a, 0x7e, 0x46, 0x6f, + 0x8b, 0xe3, 0x12, 0x0f, 0xc5, 0x6f, 0x3a, 0xd3, 0x31, 0x89, 0xf5, 0x17, 0x60, 0x2a, 0xe1, 0xcb, + 0x15, 0x05, 0x6c, 0xd1, 0x32, 0x03, 0xb6, 0xa8, 0xf1, 0x58, 0x4a, 0xfd, 0xe2, 0xb1, 0xe8, 0x9f, + 0x2a, 0xc1, 0x5c, 0x3e, 0x77, 0xf9, 0x6b, 0xb3, 0xea, 0xa3, 0x9d, 0xdf, 0xcb, 0xe5, 0xff, 0xda, + 0x8c, 0xc1, 0x1b, 0x67, 0xc4, 0xce, 0x67, 0x37, 0x20, 0x2f, 0xc3, 0x28, 0x0b, 0x82, 0x23, 0xa5, + 0x87, 0xeb, 0x85, 0x83, 0xeb, 0x04, 0x5c, 0xab, 0xe4, 0xff, 0x63, 0x81, 0x15, 0xd5, 0x60, 0xc6, + 0x74, 0xbc, 0x8e, 0x25, 0x12, 0x1a, 0xae, 0xc6, 0x0a, 0x6c, 0x14, 0xc2, 0xb0, 0x9a, 0x82, 0xe3, + 0x9e, 0x16, 0x08, 0xf3, 0x3b, 0x14, 0x7e, 0xb6, 0x17, 0x0a, 0x61, 0x58, 0x5b, 0x6d, 0xf0, 0x40, + 0xfd, 0xd1, 0xdd, 0xc9, 0xab, 0x00, 0x44, 0xee, 0x61, 0xf9, 0x0a, 0xf0, 0xd9, 0x62, 0xc1, 0x19, + 0x23, 0x4e, 0x20, 0x05, 0xf1, 0xa8, 0x28, 0xc0, 0x0a, 0x11, 0xe4, 0xc3, 0xc4, 0x96, 0xbd, 0x41, + 0x7c, 0x37, 0xce, 0x83, 0x5e, 0x50, 0x5c, 0xbe, 0x15, 0xa3, 0xe1, 0xf6, 0x0e, 0xa5, 0x00, 0xab, + 0x44, 0x90, 0xcf, 0x45, 0x33, 0x6e, 0xae, 0x1e, 0x24, 0x59, 0x7a, 0x6c, 0x07, 0x8f, 0xbf, 0x33, + 0x2e, 0xc3, 0x0a, 0x15, 0xe4, 0x02, 0xb8, 0x51, 0xf4, 0xab, 0x41, 0x6e, 0x40, 0xe2, 0x18, 0x5a, + 0x5c, 0x08, 0x8b, 0x7f, 0x63, 0x85, 0x02, 0x1d, 0xd7, 0x56, 0x1c, 0xed, 0x4c, 0xd8, 0x34, 0x9f, + 0x1b, 0x30, 0xe2, 0x9c, 0xb0, 0x23, 0xc5, 0x05, 0x58, 0x25, 0x42, 0xbf, 0xb1, 0x15, 0x05, 0x41, + 0x13, 0x97, 0x22, 0x85, 0xbe, 0x31, 0x0e, 0xa5, 0xc6, 0xbf, 0x31, 0xfe, 0x8d, 0x15, 0x0a, 0xe8, + 0x15, 0xe5, 0xea, 0x0d, 0x8a, 0x5b, 0xe3, 0x0e, 0x75, 0xed, 0xf6, 0xee, 0xd8, 0x28, 0x35, 0xc1, + 0xf6, 0xea, 0x65, 0xc5, 0x20, 0xf5, 0x60, 0xaf, 0x32, 0xc9, 0xf8, 0x47, 0x8f, 0x81, 0x2a, 0x76, + 0xa6, 0x9d, 0xec, 0xeb, 0x4c, 0x5b, 0xa5, 0x82, 0xaa, 0xf2, 0xb8, 0x83, 0x31, 0x85, 0xa9, 0xf8, + 0xc6, 0xa5, 0x91, 0x06, 0xe2, 0xde, 0xfa, 0xfc, 0xec, 0x23, 0x16, 0x6b, 0x3b, 0xad, 0x9e, 0x7d, + 0xbc, 0x0c, 0x47, 0x50, 0xb4, 0x03, 0x93, 0x81, 0xe2, 0x99, 0x2b, 0xb2, 0xe4, 0x0d, 0x70, 0x57, + 0x26, 0xbc, 0x72, 0x59, 0x48, 0x20, 0xb5, 0x04, 0x27, 0xe8, 0xa0, 0xd7, 0x61, 0x5c, 0x1a, 0x27, + 0x83, 0xd9, 0x99, 0xe2, 0xcf, 0x30, 0xb3, 0x83, 0xde, 0xc5, 0xd6, 0x46, 0x09, 0x0a, 0x70, 0x4c, + 0x0f, 0x75, 0x92, 0x21, 0x18, 0xce, 0x1e, 0xcb, 0xb3, 0xf3, 0xc8, 0x37, 0x2b, 0x2f, 0xfc, 0x02, + 0x9d, 0x5a, 0xb2, 0xdb, 0xf6, 0x82, 0x8e, 0x4f, 0x58, 0xac, 0x4d, 0x36, 0x3d, 0x28, 0x9e, 0xda, + 0xa5, 0x34, 0x10, 0xf7, 0xd6, 0x47, 0x9f, 0xd1, 0x60, 0x86, 0x27, 0x19, 0xa4, 0x47, 0x97, 0xe7, + 0x12, 0x37, 0x0c, 0x58, 0x16, 0xbd, 0x82, 0x2f, 0x25, 0x1b, 0x29, 0x5c, 0x3c, 0x2d, 0x4c, 0xba, + 0x14, 0xf7, 0xd0, 0xa4, 0x2b, 0x47, 0x7d, 0xb8, 0xce, 0x92, 0xf1, 0x15, 0x5c, 0x39, 0xea, 0xa3, + 0x78, 0xbe, 0x72, 0xd4, 0x12, 0x9c, 0xa0, 0xa3, 0xff, 0x3b, 0x0d, 0x20, 0x32, 0x88, 0x9c, 0x86, + 0x99, 0xdf, 0x4a, 0xd8, 0x88, 0x16, 0x07, 0x32, 0xe0, 0x90, 0x5c, 0x63, 0xff, 0x9f, 0x68, 0x30, + 0x1d, 0x57, 0x3b, 0x05, 0xc5, 0xc3, 0x4c, 0x2a, 0x1e, 0xef, 0x1f, 0xec, 0xbb, 0x72, 0xb4, 0x8f, + 0xff, 0x53, 0x52, 0xbf, 0x8a, 0x09, 0x55, 0x3b, 0x89, 0xab, 0x6b, 0x4a, 0xfa, 0xd6, 0x20, 0x57, + 0xd7, 0xea, 0x9b, 0xd8, 0xf8, 0x7b, 0x33, 0xae, 0xb2, 0xff, 0x4e, 0x42, 0xa4, 0x19, 0xe0, 0xe5, + 0x77, 0x24, 0xbf, 0x48, 0xd2, 0x7c, 0x00, 0x0e, 0x92, 0x6f, 0x5e, 0x55, 0x39, 0x1e, 0xbf, 0x04, + 0xff, 0x40, 0xb1, 0xe7, 0xc6, 0xca, 0x07, 0xf7, 0xe5, 0x73, 0xfa, 0xb7, 0xa7, 0x60, 0x42, 0xb1, + 0x1d, 0xa6, 0x2e, 0xe2, 0xb5, 0xd3, 0xb8, 0x88, 0x0f, 0x61, 0xc2, 0x8c, 0x42, 0x50, 0xcb, 0x61, + 0x1f, 0x90, 0x66, 0xc4, 0x69, 0xe3, 0xe0, 0xd6, 0x01, 0x56, 0xc9, 0x50, 0x79, 0x20, 0x5a, 0x63, + 0x43, 0xc7, 0xe0, 0x1e, 0xd1, 0x6f, 0x5d, 0x3d, 0x0d, 0x20, 0x45, 0x4a, 0x62, 0x89, 0x00, 0x85, + 0x51, 0xea, 0x96, 0x7a, 0x70, 0x2b, 0x82, 0x61, 0xa5, 0x1e, 0x7a, 0x0d, 0xa6, 0x1c, 0x35, 0x97, + 0x81, 0x90, 0x77, 0x0b, 0xbd, 0x70, 0x4a, 0x24, 0x45, 0xe0, 0xc6, 0xb0, 0x44, 0x11, 0x4e, 0x92, + 0xa2, 0xcb, 0xc0, 0x91, 0x79, 0x4a, 0x06, 0x72, 0xf5, 0x89, 0xb2, 0x9d, 0xc4, 0xcb, 0x20, 0x2a, + 0x0a, 0xb0, 0x42, 0x24, 0xc7, 0x1f, 0x63, 0xac, 0x90, 0x3f, 0x46, 0x07, 0xce, 0xf9, 0x24, 0xf4, + 0xbb, 0xd5, 0xae, 0xc9, 0xd2, 0xf7, 0xf8, 0x21, 0x53, 0x0c, 0xcb, 0xc5, 0x42, 0x06, 0xe1, 0x5e, + 0x54, 0x38, 0x0b, 0x7f, 0x42, 0xa6, 0x1a, 0xef, 0x2b, 0x53, 0xbd, 0x1b, 0x26, 0x42, 0x62, 0x6e, + 0xb9, 0xb6, 0x69, 0x38, 0xf5, 0x9a, 0x88, 0xde, 0x17, 0x8b, 0x07, 0x31, 0x08, 0xab, 0xf5, 0xd0, + 0x22, 0x0c, 0x75, 0x6c, 0x4b, 0x08, 0x95, 0x3f, 0x1d, 0x59, 0xe1, 0xeb, 0xb5, 0x07, 0x7b, 0x95, + 0xb7, 0xc6, 0x0e, 0x0e, 0xd1, 0x57, 0x5d, 0x6b, 0x6f, 0x37, 0xaf, 0x85, 0xdd, 0x36, 0x09, 0xe6, + 0xef, 0xd6, 0x6b, 0x98, 0x36, 0xce, 0xf2, 0x55, 0x99, 0x3c, 0x82, 0xaf, 0xca, 0x57, 0x34, 0x38, + 0x67, 0xa4, 0x2f, 0x10, 0x48, 0x30, 0x3b, 0x55, 0x9c, 0x5b, 0x66, 0x5f, 0x4a, 0x2c, 0x5e, 0x16, + 0xdf, 0x77, 0x6e, 0xa1, 0x97, 0x1c, 0xce, 0xea, 0x03, 0xf2, 0x01, 0xb5, 0xec, 0x66, 0x94, 0x32, + 0x44, 0xcc, 0xfa, 0x74, 0x31, 0x73, 0xc0, 0x4a, 0x0f, 0x26, 0x9c, 0x81, 0x1d, 0xdd, 0x87, 0x09, + 0x33, 0xbe, 0x66, 0x10, 0xc2, 0x71, 0xed, 0x38, 0xee, 0x39, 0x44, 0xfe, 0x7f, 0xe5, 0x0e, 0x43, + 0xa5, 0x14, 0x5d, 0x10, 0x2a, 0x9a, 0xab, 0xb8, 0x24, 0x63, 0x5f, 0x3d, 0x53, 0xfc, 0x82, 0x30, + 0x1b, 0x23, 0xee, 0x43, 0x8d, 0x05, 0xea, 0x71, 0x92, 0x99, 0x7d, 0x58, 0x5e, 0xe9, 0x82, 0x8f, + 0x7b, 0x53, 0x49, 0x82, 0xf8, 0xd2, 0x4c, 0x15, 0xe2, 0x34, 0x41, 0xfd, 0x7b, 0x9a, 0x30, 0xff, + 0x9d, 0xa2, 0x83, 0xc7, 0x49, 0xdf, 0x0e, 0xea, 0x7f, 0xa1, 0x41, 0x8f, 0xa8, 0x8d, 0x36, 0x60, + 0x8c, 0xa2, 0xa8, 0xad, 0x36, 0xc4, 0x67, 0xbd, 0xaf, 0xd8, 0x71, 0xc9, 0x50, 0x70, 0x5b, 0xaa, + 0xf8, 0x81, 0x25, 0x62, 0x2a, 0xbc, 0xbb, 0x4a, 0x00, 0x61, 0xf1, 0x85, 0x85, 0xe4, 0x11, 0x35, + 0x10, 0x31, 0x17, 0xde, 0xd5, 0x12, 0x9c, 0xa0, 0xa3, 0x2f, 0x03, 0xc4, 0xea, 0xd1, 0xc0, 0x3e, + 0x3f, 0x3f, 0x1a, 0x81, 0x0b, 0x83, 0x3e, 0xa1, 0x60, 0x09, 0x65, 0x58, 0x8a, 0xff, 0x85, 0xcd, + 0x90, 0xf8, 0x77, 0xee, 0xac, 0x44, 0x19, 0xd0, 0x0b, 0x66, 0xb4, 0x61, 0x77, 0x84, 0x4b, 0x99, + 0x18, 0x71, 0x0e, 0x25, 0xa6, 0x1a, 0x8a, 0x04, 0xb7, 0x98, 0x0a, 0x93, 0x2c, 0xbd, 0x39, 0x0f, + 0x53, 0xc2, 0x55, 0xc3, 0x34, 0x10, 0xf7, 0xd6, 0x4f, 0x23, 0x59, 0xb6, 0x5b, 0x36, 0xcf, 0x19, + 0xa2, 0xf5, 0x22, 0x61, 0x40, 0xdc, 0x5b, 0x5f, 0x45, 0xc2, 0x67, 0x8a, 0xee, 0xf6, 0x91, 0x5e, + 0x24, 0x11, 0x10, 0xf7, 0xd6, 0x47, 0x16, 0x3c, 0xec, 0x13, 0xd3, 0x6b, 0xb5, 0x88, 0x6b, 0xf1, + 0x5c, 0x6d, 0x86, 0xdf, 0xb4, 0xdd, 0x1b, 0xbe, 0xc1, 0x2a, 0x32, 0x4b, 0x9b, 0xb6, 0x78, 0x75, + 0x7f, 0xaf, 0xf2, 0x30, 0xee, 0x53, 0x0f, 0xf7, 0xc5, 0x82, 0x5a, 0x70, 0xa6, 0xc3, 0xb2, 0x0c, + 0xf8, 0x75, 0x37, 0x24, 0xfe, 0x8e, 0xe1, 0x08, 0x73, 0x5a, 0xa1, 0x24, 0xb5, 0x77, 0x93, 0xa8, + 0x70, 0x1a, 0x37, 0xea, 0x52, 0xb9, 0x43, 0x74, 0x47, 0x21, 0x59, 0x2e, 0x9e, 0x72, 0x09, 0xf7, + 0xa2, 0xc3, 0x59, 0x34, 0xf4, 0xaf, 0x68, 0x20, 0x1c, 0x9c, 0xd1, 0xc3, 0x89, 0x9b, 0x9b, 0x72, + 0xea, 0xd6, 0x46, 0x06, 0xd3, 0x2f, 0x65, 0x06, 0xd3, 0x7f, 0xbb, 0x12, 0xff, 0x66, 0x3c, 0xe6, + 0x7d, 0x1c, 0xb3, 0x92, 0xa7, 0xe3, 0x1d, 0x30, 0x4e, 0xf8, 0xa5, 0x60, 0x24, 0xd1, 0x32, 0xa7, + 0xf1, 0x25, 0x59, 0x88, 0x63, 0xb8, 0xfe, 0xc7, 0x1a, 0x08, 0x0c, 0x2c, 0xab, 0xcc, 0xa1, 0xb2, + 0x8b, 0x1c, 0xe8, 0xad, 0xa5, 0x64, 0x45, 0x19, 0xca, 0xcd, 0x8a, 0x72, 0x42, 0xc9, 0x42, 0xbe, + 0xa1, 0xc1, 0x99, 0x64, 0x40, 0xa2, 0x00, 0xbd, 0x0d, 0xc6, 0x44, 0xc8, 0x42, 0x11, 0x73, 0x8c, + 0x35, 0x15, 0x31, 0x03, 0xb0, 0x84, 0x25, 0xad, 0x5a, 0x03, 0xa8, 0x98, 0xd9, 0x71, 0x91, 0x0e, + 0xd0, 0xf6, 0x3e, 0x3d, 0x03, 0xa3, 0x3c, 0xde, 0x1d, 0xe5, 0x69, 0x19, 0x2f, 0x5b, 0x6f, 0x17, + 0x0f, 0xab, 0x57, 0xe4, 0x29, 0xa2, 0x1a, 0x58, 0xbd, 0xd4, 0x37, 0xb0, 0x3a, 0xe6, 0x49, 0x98, + 0x06, 0xb8, 0xc1, 0xa8, 0xe2, 0xba, 0xc8, 0xbd, 0x2c, 0x13, 0x30, 0x85, 0x09, 0xd3, 0xfe, 0x70, + 0x71, 0xc9, 0x8d, 0x0f, 0x80, 0x62, 0xe0, 0x9f, 0xee, 0x6b, 0xdc, 0x97, 0x01, 0xc5, 0x46, 0x8a, + 0x7b, 0x4f, 0x8a, 0x21, 0x3f, 0x44, 0x40, 0xb1, 0x68, 0x23, 0x8d, 0xe6, 0x6e, 0xa4, 0x4d, 0x18, + 0x13, 0x5b, 0x41, 0x30, 0xc7, 0xf7, 0x0d, 0x90, 0xcd, 0x48, 0x89, 0x81, 0xcb, 0x0b, 0xb0, 0x44, + 0x4e, 0x4f, 0xdc, 0x96, 0xb1, 0x6b, 0xb7, 0x3a, 0x2d, 0xc6, 0x11, 0x47, 0xd4, 0xaa, 0xac, 0x18, + 0x4b, 0x38, 0xab, 0xca, 0x9d, 0x4e, 0x99, 0x22, 0xa5, 0x56, 0xe5, 0xc5, 0x58, 0xc2, 0xd1, 0x4b, + 0x50, 0x6e, 0x19, 0xbb, 0x8d, 0x8e, 0xdf, 0x24, 0xc2, 0xb0, 0x9f, 0x2f, 0xe3, 0x75, 0x42, 0xdb, + 0x99, 0xa7, 0xea, 0x7f, 0xe8, 0xcf, 0xd7, 0xdd, 0xf0, 0x8e, 0xdf, 0x08, 0xfd, 0x28, 0x67, 0xca, + 0x8a, 0xc0, 0x82, 0x23, 0x7c, 0xc8, 0x81, 0xe9, 0x96, 0xb1, 0x7b, 0xd7, 0x35, 0xa2, 0x14, 0xe7, + 0x13, 0x05, 0x29, 0xb0, 0x4b, 0xee, 0x95, 0x04, 0x2e, 0x9c, 0xc2, 0x9d, 0x71, 0x9f, 0x3e, 0x79, + 0x52, 0xf7, 0xe9, 0x0b, 0xd1, 0x33, 0x1e, 0xae, 0xb7, 0x5d, 0xca, 0x7a, 0x15, 0xd4, 0xff, 0x89, + 0xce, 0xcb, 0xd1, 0x13, 0x9d, 0xe9, 0xe2, 0x37, 0x9f, 0x7d, 0x9e, 0xe7, 0x74, 0x60, 0x82, 0x4a, + 0xd8, 0xbc, 0x94, 0x2a, 0x56, 0x85, 0x4d, 0x90, 0xb5, 0x08, 0x8d, 0x92, 0x32, 0x33, 0x46, 0x8d, + 0x55, 0x3a, 0xe8, 0x0e, 0x4f, 0x81, 0xed, 0x90, 0x30, 0xae, 0xc2, 0x14, 0xfa, 0x19, 0xb6, 0x7f, + 0xa2, 0x8c, 0xd5, 0x3d, 0x15, 0x70, 0x76, 0xbb, 0x38, 0xf4, 0xc9, 0xd9, 0xec, 0xd0, 0x27, 0xe8, + 0x97, 0xb2, 0xcc, 0xf5, 0xa8, 0xf8, 0xb3, 0x48, 0xce, 0x1b, 0x0a, 0x1b, 0xed, 0x7f, 0x47, 0x83, + 0xd9, 0x56, 0x4e, 0x6e, 0x49, 0x71, 0x8b, 0xb0, 0x3e, 0x00, 0x7f, 0xc8, 0xcd, 0x57, 0xb9, 0xf8, + 0xd8, 0xfe, 0x5e, 0xe5, 0xc0, 0xac, 0x96, 0x38, 0xb7, 0x6f, 0xc8, 0x87, 0xb1, 0xa0, 0x1b, 0x98, + 0xa1, 0x13, 0xcc, 0x9e, 0x2f, 0x9e, 0xc2, 0x50, 0x70, 0xd6, 0x06, 0xc7, 0xc4, 0x59, 0x6b, 0x1c, + 0x79, 0x9d, 0x97, 0x62, 0x49, 0x68, 0xd0, 0x27, 0xec, 0x03, 0x44, 0x7b, 0x9c, 0xbb, 0x0e, 0x93, + 0x6a, 0x27, 0x8f, 0xf4, 0x72, 0xfe, 0x37, 0x34, 0x98, 0x49, 0x1f, 0x5a, 0x6a, 0x96, 0x71, 0xed, + 0x64, 0xb3, 0x8c, 0x2b, 0xde, 0x3c, 0xa5, 0x3e, 0xde, 0x3c, 0xcf, 0xc2, 0xc5, 0xec, 0xb5, 0x4c, + 0x25, 0x48, 0x96, 0xd5, 0x5f, 0x68, 0x6e, 0x71, 0x5a, 0x22, 0x5a, 0x88, 0x39, 0x4c, 0xff, 0x18, + 0xa4, 0x63, 0xfb, 0xa2, 0x57, 0x60, 0x3c, 0x08, 0xb6, 0x78, 0xd8, 0x46, 0xf1, 0x91, 0xc5, 0x54, + 0x76, 0x19, 0xfb, 0x51, 0xbc, 0x94, 0x94, 0x3f, 0x71, 0x8c, 0x7e, 0xf1, 0xc5, 0x6f, 0xfd, 0xf0, + 0xca, 0x5b, 0xbe, 0xfb, 0xc3, 0x2b, 0x6f, 0xf9, 0xfe, 0x0f, 0xaf, 0xbc, 0xe5, 0xe7, 0xf7, 0xaf, + 0x68, 0xdf, 0xda, 0xbf, 0xa2, 0x7d, 0x77, 0xff, 0x8a, 0xf6, 0xfd, 0xfd, 0x2b, 0xda, 0x7f, 0xde, + 0xbf, 0xa2, 0x7d, 0xf1, 0xbf, 0x5c, 0x79, 0xcb, 0x4b, 0x4f, 0xc5, 0xd4, 0xaf, 0x49, 0xa2, 0xf1, + 0x3f, 0xed, 0xed, 0xe6, 0x35, 0x4a, 0x5d, 0xbe, 0x58, 0x62, 0xd4, 0xff, 0x5f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x7c, 0xa4, 0x85, 0x14, 0x62, 0xe3, 0x00, 0x00, } func (m *Addon) Marshal() (dAtA []byte, err error) { @@ -5684,6 +5749,13 @@ func (m *AdmissionPlugin) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.KubeconfigSecretName != nil { + i -= len(*m.KubeconfigSecretName) + copy(dAtA[i:], *m.KubeconfigSecretName) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.KubeconfigSecretName))) + i-- + dAtA[i] = 0x22 + } if m.Disabled != nil { i-- if *m.Disabled { @@ -10553,15 +10625,17 @@ func (m *MaintenanceAutoUpdate) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - i-- - if m.MachineImageVersion { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if m.MachineImageVersion != nil { + i-- + if *m.MachineImageVersion { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 } i-- - dAtA[i] = 0x10 - i-- if m.KubernetesVersion { dAtA[i] = 1 } else { @@ -10740,11 +10814,13 @@ func (m *Networking) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0xa + if m.Type != nil { + i -= len(*m.Type) + copy(dAtA[i:], *m.Type) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Type))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } @@ -12111,13 +12187,6 @@ func (m *SeedDNS) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if m.IngressDomain != nil { - i -= len(*m.IngressDomain) - copy(dAtA[i:], *m.IngressDomain) - i = encodeVarintGenerated(dAtA, i, uint64(len(*m.IngressDomain))) - i-- - dAtA[i] = 0xa - } return len(dAtA) - i, nil } @@ -12141,30 +12210,6 @@ func (m *SeedDNSProvider) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.Zones != nil { - { - size, err := m.Zones.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.Domains != nil { - { - size, err := m.Domains.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } { size, err := m.SecretRef.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -12416,6 +12461,30 @@ func (m *SeedSettingDependencyWatchdog) MarshalToSizedBuffer(dAtA []byte) (int, _ = i var l int _ = l + if m.Prober != nil { + { + size, err := m.Prober.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.Weeder != nil { + { + size, err := m.Weeder.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } if m.Probe != nil { { size, err := m.Probe.MarshalToSizedBuffer(dAtA[:i]) @@ -12505,6 +12574,68 @@ func (m *SeedSettingDependencyWatchdogProbe) MarshalToSizedBuffer(dAtA []byte) ( return len(dAtA) - i, nil } +func (m *SeedSettingDependencyWatchdogProber) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SeedSettingDependencyWatchdogProber) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingDependencyWatchdogProber) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + +func (m *SeedSettingDependencyWatchdogWeeder) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SeedSettingDependencyWatchdogWeeder) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SeedSettingDependencyWatchdogWeeder) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *SeedSettingExcessCapacityReservation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -14050,11 +14181,13 @@ func (m *ShootSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x72 } - i -= len(m.SecretBindingName) - copy(dAtA[i:], m.SecretBindingName) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.SecretBindingName))) - i-- - dAtA[i] = 0x6a + if m.SecretBindingName != nil { + i -= len(*m.SecretBindingName) + copy(dAtA[i:], *m.SecretBindingName) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SecretBindingName))) + i-- + dAtA[i] = 0x6a + } i -= len(m.Region) copy(dAtA[i:], m.Region) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Region))) @@ -14101,16 +14234,18 @@ func (m *ShootSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x42 } - { - size, err := m.Networking.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if m.Networking != nil { + { + size, err := m.Networking.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x3a } - i-- - dAtA[i] = 0x3a { size, err := m.Kubernetes.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -14918,6 +15053,32 @@ func (m *Worker) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Sysctls) > 0 { + keysForSysctls := make([]string, 0, len(m.Sysctls)) + for k := range m.Sysctls { + keysForSysctls = append(keysForSysctls, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSysctls) + for iNdEx := len(keysForSysctls) - 1; iNdEx >= 0; iNdEx-- { + v := m.Sysctls[string(keysForSysctls[iNdEx])] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(keysForSysctls[iNdEx]) + copy(dAtA[i:], keysForSysctls[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(keysForSysctls[iNdEx]))) + i-- + dAtA[i] = 0xa + i = encodeVarintGenerated(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + } + } if m.MachineControllerManagerSettings != nil { { size, err := m.MachineControllerManagerSettings.MarshalToSizedBuffer(dAtA[:i]) @@ -15306,6 +15467,10 @@ func (m *AdmissionPlugin) Size() (n int) { if m.Disabled != nil { n += 2 } + if m.KubeconfigSecretName != nil { + l = len(*m.KubeconfigSecretName) + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -17121,7 +17286,9 @@ func (m *MaintenanceAutoUpdate) Size() (n int) { var l int _ = l n += 2 - n += 2 + if m.MachineImageVersion != nil { + n += 2 + } return n } @@ -17170,8 +17337,10 @@ func (m *Networking) Size() (n int) { } var l int _ = l - l = len(m.Type) - n += 1 + l + sovGenerated(uint64(l)) + if m.Type != nil { + l = len(*m.Type) + n += 1 + l + sovGenerated(uint64(l)) + } if m.ProviderConfig != nil { l = m.ProviderConfig.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -17695,10 +17864,6 @@ func (m *SeedDNS) Size() (n int) { } var l int _ = l - if m.IngressDomain != nil { - l = len(*m.IngressDomain) - n += 1 + l + sovGenerated(uint64(l)) - } if m.Provider != nil { l = m.Provider.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -17716,14 +17881,6 @@ func (m *SeedDNSProvider) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = m.SecretRef.Size() n += 1 + l + sovGenerated(uint64(l)) - if m.Domains != nil { - l = m.Domains.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Zones != nil { - l = m.Zones.Size() - n += 1 + l + sovGenerated(uint64(l)) - } return n } @@ -17831,6 +17988,14 @@ func (m *SeedSettingDependencyWatchdog) Size() (n int) { l = m.Probe.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.Weeder != nil { + l = m.Weeder.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Prober != nil { + l = m.Prober.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -17854,6 +18019,26 @@ func (m *SeedSettingDependencyWatchdogProbe) Size() (n int) { return n } +func (m *SeedSettingDependencyWatchdogProber) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + +func (m *SeedSettingDependencyWatchdogWeeder) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + return n +} + func (m *SeedSettingExcessCapacityReservation) Size() (n int) { if m == nil { return 0 @@ -18401,8 +18586,10 @@ func (m *ShootSpec) Size() (n int) { } l = m.Kubernetes.Size() n += 1 + l + sovGenerated(uint64(l)) - l = m.Networking.Size() - n += 1 + l + sovGenerated(uint64(l)) + if m.Networking != nil { + l = m.Networking.Size() + n += 1 + l + sovGenerated(uint64(l)) + } if m.Maintenance != nil { l = m.Maintenance.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -18419,8 +18606,10 @@ func (m *ShootSpec) Size() (n int) { } l = len(m.Region) n += 1 + l + sovGenerated(uint64(l)) - l = len(m.SecretBindingName) - n += 1 + l + sovGenerated(uint64(l)) + if m.SecretBindingName != nil { + l = len(*m.SecretBindingName) + n += 1 + l + sovGenerated(uint64(l)) + } if m.SeedName != nil { l = len(*m.SeedName) n += 1 + l + sovGenerated(uint64(l)) @@ -18811,6 +19000,14 @@ func (m *Worker) Size() (n int) { l = m.MachineControllerManagerSettings.Size() n += 2 + l + sovGenerated(uint64(l)) } + if len(m.Sysctls) > 0 { + for k, v := range m.Sysctls { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) + } + } return n } @@ -18889,6 +19086,7 @@ func (this *AdmissionPlugin) String() string { `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `Config:` + strings.Replace(fmt.Sprintf("%v", this.Config), "RawExtension", "runtime.RawExtension", 1) + `,`, `Disabled:` + valueToStringGenerated(this.Disabled) + `,`, + `KubeconfigSecretName:` + valueToStringGenerated(this.KubeconfigSecretName) + `,`, `}`, }, "") return s @@ -20091,7 +20289,7 @@ func (this *MaintenanceAutoUpdate) String() string { } s := strings.Join([]string{`&MaintenanceAutoUpdate{`, `KubernetesVersion:` + fmt.Sprintf("%v", this.KubernetesVersion) + `,`, - `MachineImageVersion:` + fmt.Sprintf("%v", this.MachineImageVersion) + `,`, + `MachineImageVersion:` + valueToStringGenerated(this.MachineImageVersion) + `,`, `}`, }, "") return s @@ -20133,7 +20331,7 @@ func (this *Networking) String() string { return "nil" } s := strings.Join([]string{`&Networking{`, - `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Type:` + valueToStringGenerated(this.Type) + `,`, `ProviderConfig:` + strings.Replace(fmt.Sprintf("%v", this.ProviderConfig), "RawExtension", "runtime.RawExtension", 1) + `,`, `Pods:` + valueToStringGenerated(this.Pods) + `,`, `Nodes:` + valueToStringGenerated(this.Nodes) + `,`, @@ -20527,7 +20725,6 @@ func (this *SeedDNS) String() string { return "nil" } s := strings.Join([]string{`&SeedDNS{`, - `IngressDomain:` + valueToStringGenerated(this.IngressDomain) + `,`, `Provider:` + strings.Replace(this.Provider.String(), "SeedDNSProvider", "SeedDNSProvider", 1) + `,`, `}`, }, "") @@ -20540,8 +20737,6 @@ func (this *SeedDNSProvider) String() string { s := strings.Join([]string{`&SeedDNSProvider{`, `Type:` + fmt.Sprintf("%v", this.Type) + `,`, `SecretRef:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.SecretRef), "SecretReference", "v1.SecretReference", 1), `&`, ``, 1) + `,`, - `Domains:` + strings.Replace(this.Domains.String(), "DNSIncludeExclude", "DNSIncludeExclude", 1) + `,`, - `Zones:` + strings.Replace(this.Zones.String(), "DNSIncludeExclude", "DNSIncludeExclude", 1) + `,`, `}`, }, "") return s @@ -20608,6 +20803,8 @@ func (this *SeedSettingDependencyWatchdog) String() string { s := strings.Join([]string{`&SeedSettingDependencyWatchdog{`, `Endpoint:` + strings.Replace(this.Endpoint.String(), "SeedSettingDependencyWatchdogEndpoint", "SeedSettingDependencyWatchdogEndpoint", 1) + `,`, `Probe:` + strings.Replace(this.Probe.String(), "SeedSettingDependencyWatchdogProbe", "SeedSettingDependencyWatchdogProbe", 1) + `,`, + `Weeder:` + strings.Replace(this.Weeder.String(), "SeedSettingDependencyWatchdogWeeder", "SeedSettingDependencyWatchdogWeeder", 1) + `,`, + `Prober:` + strings.Replace(this.Prober.String(), "SeedSettingDependencyWatchdogProber", "SeedSettingDependencyWatchdogProber", 1) + `,`, `}`, }, "") return s @@ -20632,6 +20829,26 @@ func (this *SeedSettingDependencyWatchdogProbe) String() string { }, "") return s } +func (this *SeedSettingDependencyWatchdogProber) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingDependencyWatchdogProber{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} +func (this *SeedSettingDependencyWatchdogWeeder) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SeedSettingDependencyWatchdogWeeder{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `}`, + }, "") + return s +} func (this *SeedSettingExcessCapacityReservation) String() string { if this == nil { return "nil" @@ -21034,13 +21251,13 @@ func (this *ShootSpec) String() string { `Extensions:` + repeatedStringForExtensions + `,`, `Hibernation:` + strings.Replace(this.Hibernation.String(), "Hibernation", "Hibernation", 1) + `,`, `Kubernetes:` + strings.Replace(strings.Replace(this.Kubernetes.String(), "Kubernetes", "Kubernetes", 1), `&`, ``, 1) + `,`, - `Networking:` + strings.Replace(strings.Replace(this.Networking.String(), "Networking", "Networking", 1), `&`, ``, 1) + `,`, + `Networking:` + strings.Replace(this.Networking.String(), "Networking", "Networking", 1) + `,`, `Maintenance:` + strings.Replace(this.Maintenance.String(), "Maintenance", "Maintenance", 1) + `,`, `Monitoring:` + strings.Replace(this.Monitoring.String(), "Monitoring", "Monitoring", 1) + `,`, `Provider:` + strings.Replace(strings.Replace(this.Provider.String(), "Provider", "Provider", 1), `&`, ``, 1) + `,`, `Purpose:` + valueToStringGenerated(this.Purpose) + `,`, `Region:` + fmt.Sprintf("%v", this.Region) + `,`, - `SecretBindingName:` + fmt.Sprintf("%v", this.SecretBindingName) + `,`, + `SecretBindingName:` + valueToStringGenerated(this.SecretBindingName) + `,`, `SeedName:` + valueToStringGenerated(this.SeedName) + `,`, `SeedSelector:` + strings.Replace(this.SeedSelector.String(), "SeedSelector", "SeedSelector", 1) + `,`, `Resources:` + repeatedStringForResources + `,`, @@ -21278,6 +21495,16 @@ func (this *Worker) String() string { mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) } mapStringForLabels += "}" + keysForSysctls := make([]string, 0, len(this.Sysctls)) + for k := range this.Sysctls { + keysForSysctls = append(keysForSysctls, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSysctls) + mapStringForSysctls := "map[string]string{" + for _, k := range keysForSysctls { + mapStringForSysctls += fmt.Sprintf("%v: %v,", k, this.Sysctls[k]) + } + mapStringForSysctls += "}" s := strings.Join([]string{`&Worker{`, `Annotations:` + mapStringForAnnotations + `,`, `CABundle:` + valueToStringGenerated(this.CABundle) + `,`, @@ -21298,6 +21525,7 @@ func (this *Worker) String() string { `Zones:` + fmt.Sprintf("%v", this.Zones) + `,`, `SystemComponents:` + strings.Replace(this.SystemComponents.String(), "WorkerSystemComponents", "WorkerSystemComponents", 1) + `,`, `MachineControllerManagerSettings:` + strings.Replace(this.MachineControllerManagerSettings.String(), "MachineControllerManagerSettings", "MachineControllerManagerSettings", 1) + `,`, + `Sysctls:` + mapStringForSysctls + `,`, `}`, }, "") return s @@ -21651,6 +21879,39 @@ func (m *AdmissionPlugin) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.Disabled = &b + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KubeconfigSecretName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.KubeconfigSecretName = &s + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -35791,7 +36052,8 @@ func (m *MaintenanceAutoUpdate) Unmarshal(dAtA []byte) error { break } } - m.MachineImageVersion = bool(v != 0) + b := bool(v != 0) + m.MachineImageVersion = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -36187,7 +36449,8 @@ func (m *Networking) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Type = string(dAtA[iNdEx:postIndex]) + s := string(dAtA[iNdEx:postIndex]) + m.Type = &s iNdEx = postIndex case 2: if wireType != 2 { @@ -40501,39 +40764,6 @@ func (m *SeedDNS) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: SeedDNS: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IngressDomain", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := string(dAtA[iNdEx:postIndex]) - m.IngressDomain = &s - iNdEx = postIndex case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Provider", wireType) @@ -40685,78 +40915,6 @@ func (m *SeedDNSProvider) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Domains", 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 < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Domains == nil { - m.Domains = &DNSIncludeExclude{} - } - if err := m.Domains.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Zones", 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 < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Zones == nil { - m.Zones = &DNSIncludeExclude{} - } - if err := m.Zones.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -41347,50 +41505,326 @@ func (m *SeedSelector) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSelector: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LabelSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProviderTypes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ProviderTypes = append(m.ProviderTypes, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedSettingDependencyWatchdog) 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: SeedSettingDependencyWatchdog: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SeedSettingDependencyWatchdog: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Endpoint", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Endpoint == nil { + m.Endpoint = &SeedSettingDependencyWatchdogEndpoint{} + } + if err := m.Endpoint.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Probe", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Probe == nil { + m.Probe = &SeedSettingDependencyWatchdogProbe{} + } + if err := m.Probe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Weeder", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Weeder == nil { + m.Weeder = &SeedSettingDependencyWatchdogWeeder{} + } + if err := m.Weeder.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Prober", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Prober == nil { + m.Prober = &SeedSettingDependencyWatchdogProber{} + } + if err := m.Prober.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) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SeedSettingDependencyWatchdogEndpoint) 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: SeedSettingDependencyWatchdogEndpoint: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSelector: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingDependencyWatchdogEndpoint: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", 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 < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.LabelSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProviderTypes", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) } - var stringLen uint64 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -41400,24 +41834,12 @@ func (m *SeedSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ProviderTypes = append(m.ProviderTypes, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex + m.Enabled = bool(v != 0) default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -41439,7 +41861,7 @@ func (m *SeedSelector) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingDependencyWatchdog) Unmarshal(dAtA []byte) error { +func (m *SeedSettingDependencyWatchdogProbe) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41462,53 +41884,17 @@ func (m *SeedSettingDependencyWatchdog) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdog: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProbe: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdog: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProbe: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Endpoint", 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 < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Endpoint == nil { - m.Endpoint = &SeedSettingDependencyWatchdogEndpoint{} - } - if err := m.Endpoint.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Probe", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) } - var msglen int + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -41518,28 +41904,12 @@ func (m *SeedSettingDependencyWatchdog) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Probe == nil { - m.Probe = &SeedSettingDependencyWatchdogProbe{} - } - if err := m.Probe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex + m.Enabled = bool(v != 0) default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -41561,7 +41931,7 @@ func (m *SeedSettingDependencyWatchdog) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingDependencyWatchdogEndpoint) Unmarshal(dAtA []byte) error { +func (m *SeedSettingDependencyWatchdogProber) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41584,10 +41954,10 @@ func (m *SeedSettingDependencyWatchdogEndpoint) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdogEndpoint: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProber: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdogEndpoint: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingDependencyWatchdogProber: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -41631,7 +42001,7 @@ func (m *SeedSettingDependencyWatchdogEndpoint) Unmarshal(dAtA []byte) error { } return nil } -func (m *SeedSettingDependencyWatchdogProbe) Unmarshal(dAtA []byte) error { +func (m *SeedSettingDependencyWatchdogWeeder) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41654,10 +42024,10 @@ func (m *SeedSettingDependencyWatchdogProbe) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdogProbe: wiretype end group for non-group") + return fmt.Errorf("proto: SeedSettingDependencyWatchdogWeeder: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SeedSettingDependencyWatchdogProbe: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SeedSettingDependencyWatchdogWeeder: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -46194,6 +46564,9 @@ func (m *ShootSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } + if m.Networking == nil { + m.Networking = &Networking{} + } if err := m.Networking.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -46398,7 +46771,8 @@ func (m *ShootSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SecretBindingName = string(dAtA[iNdEx:postIndex]) + s := string(dAtA[iNdEx:postIndex]) + m.SecretBindingName = &s iNdEx = postIndex case 14: if wireType != 2 { @@ -49523,6 +49897,133 @@ func (m *Worker) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sysctls", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Sysctls == nil { + m.Sysctls = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := 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) + if fieldNum == 1 { + 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 < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + 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 < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Sysctls[mapkey] = mapvalue + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto index cce994d6..8a29836c 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -61,6 +61,10 @@ message AdmissionPlugin { // Disabled specifies whether this plugin should be disabled. // +optional optional bool disabled = 3; + + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this admission plugin. + // +optional + optional string kubeconfigSecretName = 4; } // Alerting contains information about how alerting will be done (i.e. who will receive alerts and how). @@ -865,7 +869,7 @@ message HibernationSchedule { // +optional optional string end = 2; - // Location is the time location in which both start and and shall be evaluated. + // Location is the time location in which both start and shall be evaluated. // +optional optional string location = 3; } @@ -1584,6 +1588,7 @@ message MaintenanceAutoUpdate { optional bool kubernetesVersion = 1; // MachineImageVersion indicates whether the machine image version may be automatically updated (default: true). + // +optional optional bool machineImageVersion = 2; } @@ -1621,6 +1626,7 @@ message NamedResourceReference { // Networking defines networking parameters for the shoot cluster. message Networking { // Type identifies the type of the networking plugin. This field is immutable. + // +optional optional string type = 1; // ProviderConfig is the configuration passed to network resource. @@ -1883,6 +1889,7 @@ message Provider { // Workers is a list of worker groups. // +patchMergeKey=name // +patchStrategy=merge + // +optional repeated Worker workers = 4; // WorkersSettings contains settings for all workers. @@ -2045,12 +2052,6 @@ message SeedBackup { // SeedDNS contains DNS-relevant information about this seed cluster. message SeedDNS { - // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used - // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use spec.ingress.domain instead. - // +optional - optional string ingressDomain = 1; - // Provider configures a DNSProvider // +optional optional SeedDNSProvider provider = 2; @@ -2063,16 +2064,6 @@ message SeedDNSProvider { // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. optional k8s.io.api.core.v1.SecretReference secretRef = 2; - - // Domains contains information about which domains shall be included/excluded for this provider. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. - // +optional - optional DNSIncludeExclude domains = 3; - - // Zones contains information about which hosted zones shall be included/excluded for this provider. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. - // +optional - optional DNSIncludeExclude zones = 4; } // SeedList is a collection of Seeds. @@ -2144,15 +2135,26 @@ message SeedSelector { // SeedSettingDependencyWatchdog controls the dependency-watchdog settings for the seed. message SeedSettingDependencyWatchdog { // Endpoint controls the endpoint settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Weeder` instead. // +optional optional SeedSettingDependencyWatchdogEndpoint endpoint = 1; // Probe controls the probe settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Prober` instead. // +optional optional SeedSettingDependencyWatchdogProbe probe = 2; + + // Weeder controls the weeder settings for the dependency-watchdog for the seed. + // +optional + optional SeedSettingDependencyWatchdogWeeder weeder = 3; + + // Prober controls the prober settings for the dependency-watchdog for the seed. + // +optional + optional SeedSettingDependencyWatchdogProber prober = 4; } // SeedSettingDependencyWatchdogEndpoint controls the endpoint settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogWeeder` instead. message SeedSettingDependencyWatchdogEndpoint { // Enabled controls whether the endpoint controller of the dependency-watchdog should be enabled. This controller // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in @@ -2161,13 +2163,30 @@ message SeedSettingDependencyWatchdogEndpoint { } // SeedSettingDependencyWatchdogProbe controls the probe settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogProber` instead. message SeedSettingDependencyWatchdogProbe { // Enabled controls whether the probe controller of the dependency-watchdog should be enabled. This controller - // scales down the kube-controller-manager of shoot clusters in case their respective kube-apiserver is not + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not + // reachable via its external ingress in order to avoid melt-down situations. + optional bool enabled = 1; +} + +// SeedSettingDependencyWatchdogProber controls the prober settings for the dependency-watchdog for the seed. +message SeedSettingDependencyWatchdogProber { + // Enabled controls whether the probe controller(prober) of the dependency-watchdog should be enabled. This controller + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not // reachable via its external ingress in order to avoid melt-down situations. optional bool enabled = 1; } +// SeedSettingDependencyWatchdogWeeder controls the weeder settings for the dependency-watchdog for the seed. +message SeedSettingDependencyWatchdogWeeder { + // Enabled controls whether the endpoint controller(weeder) of the dependency-watchdog should be enabled. This controller + // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in + // CrashLoopBackoff status and restarting them once their dependants become ready and available again. + optional bool enabled = 1; +} + // SeedSettingExcessCapacityReservation controls the excess capacity reservation for shoot control planes in the seed. message SeedSettingExcessCapacityReservation { // Enabled controls whether the excess capacity reservation should be enabled. @@ -2211,6 +2230,10 @@ message SeedSettingLoadBalancerServicesZones { } // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. +// +// Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). +// The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. +// Set this field to false to be prepared for the above-mentioned locking. message SeedSettingOwnerChecks { // Enabled controls whether owner checks are enabled for shoots scheduled on this seed. It // is enabled by default because it is a prerequisite for control plane migration. @@ -2260,6 +2283,10 @@ message SeedSettings { optional SeedSettingVerticalPodAutoscaler verticalPodAutoscaler = 5; // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. + // + // Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). + // The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. + // Set this field to false to be prepared for the above-mentioned locking. // +optional optional SeedSettingOwnerChecks ownerChecks = 6; @@ -2604,6 +2631,7 @@ message ShootSpec { optional Kubernetes kubernetes = 6; // Networking contains information about cluster networking such as CNI Plugin type, CIDRs, ...etc. + // +optional optional Networking networking = 7; // Maintenance contains information about the time window for maintenance operations and which @@ -2628,6 +2656,7 @@ message ShootSpec { // SecretBindingName is the name of the a SecretBinding that has a reference to the provider secret. // The credentials inside the provider secret will be used to create the shoot in the respective account. // This field is immutable. + // +optional optional string secretBindingName = 13; // SeedName is the name of the seed cluster that runs the control plane of the Shoot. @@ -2975,6 +3004,10 @@ message Worker { // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. // +optional optional MachineControllerManagerSettings machineControllerManager = 19; + + // Sysctls is a map of kernel settings to apply on all VMs in this worker pool. + // +optional + map sysctls = 20; } // WorkerKubernetes contains configuration for Kubernetes components related to this worker pool. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/condition_builder.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/condition_builder.go index dc40c198..55c70111 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/condition_builder.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/condition_builder.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/errors.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/errors.go index 132205a7..c139a54f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/errors.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/errors.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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,6 @@ package helper import ( "errors" - "regexp" "strings" "time" @@ -56,84 +55,6 @@ func (e *ErrorWithCodes) Error() string { return e.err.Error() } -var ( - unauthenticatedRegexp = regexp.MustCompile(`(?i)(InvalidAuthenticationTokenTenant|Authentication failed|AuthFailure|invalid character|invalid_client|query returned no results|InvalidAccessKeyId|cannot fetch token|InvalidSecretAccessKey|InvalidSubscriptionId)`) - unauthorizedRegexp = regexp.MustCompile(`(?i)(Unauthorized|InvalidClientTokenId|SignatureDoesNotMatch|AuthorizationFailed|invalid_grant|Authorization Profile was not found|no active subscriptions|UnauthorizedOperation|not authorized|AccessDenied|OperationNotAllowed|Error 403|SERVICE_ACCOUNT_ACCESS_DENIED)`) - quotaExceededRegexp = regexp.MustCompile(`(?i)((?:^|[^t]|(?:[^s]|^)t|(?:[^e]|^)st|(?:[^u]|^)est|(?:[^q]|^)uest|(?:[^e]|^)quest|(?:[^r]|^)equest)LimitExceeded|Quotas|Quota.*exceeded|exceeded quota|Quota has been met|QUOTA_EXCEEDED|Maximum number of ports exceeded|ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS|VolumeSizeExceedsAvailableQuota)`) - rateLimitsExceededRegexp = regexp.MustCompile(`(?i)(RequestLimitExceeded|Throttling|Too many requests)`) - dependenciesRegexp = regexp.MustCompile(`(?i)(PendingVerification|Access Not Configured|accessNotConfigured|DependencyViolation|OptInRequired|DeleteConflict|Conflict|inactive billing state|ReadOnlyDisabledSubscription|is already being used|InUseSubnetCannotBeDeleted|VnetInUse|InUseRouteTableCannotBeDeleted|timeout while waiting for state to become|InvalidCidrBlock|already busy for|InsufficientFreeAddressesInSubnet|InternalServerError|internalerror|internal server error|A resource with the ID|VnetAddressSpaceCannotChangeDueToPeerings|InternalBillingError|There are not enough hosts available)`) - retryableDependenciesRegexp = regexp.MustCompile(`(?i)(RetryableError)`) - resourcesDepletedRegexp = regexp.MustCompile(`(?i)(not available in the current hardware cluster|InsufficientInstanceCapacity|SkuNotAvailable|ZonalAllocationFailed|out of stock|Zone.NotOnSale)`) - configurationProblemRegexp = regexp.MustCompile(`(?i)(AzureBastionSubnet|not supported in your requested Availability Zone|InvalidParameter|InvalidParameterValue|notFound|NetcfgInvalidSubnet|InvalidSubnet|Invalid value|KubeletHasInsufficientMemory|KubeletHasDiskPressure|KubeletHasInsufficientPID|violates constraint|no attached internet gateway found|Your query returned no results|PrivateEndpointNetworkPoliciesCannotBeEnabledOnPrivateEndpointSubnet|invalid VPC attributes|PrivateLinkServiceNetworkPoliciesCannotBeEnabledOnPrivateLinkServiceSubnet|unrecognized feature gate|runtime-config invalid key|LoadBalancingRuleMustDisableSNATSinceSameFrontendIPConfigurationIsReferencedByOutboundRule|strict decoder error|not allowed to configure an unsupported|error during apply of object .* is invalid:|OverconstrainedZonalAllocationRequest|duplicate zones|overlapping zones)`) - retryableConfigurationProblemRegexp = regexp.MustCompile(`(?i)(is misconfigured and requires zero voluntary evictions|SDK.CanNotResolveEndpoint|The requested configuration is currently not supported)`) -) - -// DeprecatedDetermineError determines the Gardener error codes for the given error and returns an ErrorWithCodes with the error and codes. -// This function is deprecated and will be removed in a future version. -func DeprecatedDetermineError(err error) error { - if err == nil { - return nil - } - - // try to re-use codes from error - var coder Coder - if errors.As(err, &coder) { - return err - } - - codes := DeprecatedDetermineErrorCodes(err) - if len(codes) == 0 { - return err - } - - return &ErrorWithCodes{err, codes} -} - -// DeprecatedDetermineErrorCodes determines error codes based on the given error. -// This function is deprecated and will be removed in a future version. -func DeprecatedDetermineErrorCodes(err error) []gardencorev1beta1.ErrorCode { - var ( - coder Coder - message = err.Error() - codes = sets.New[string]() - - knownCodes = map[gardencorev1beta1.ErrorCode]func(string) bool{ - gardencorev1beta1.ErrorInfraUnauthenticated: unauthenticatedRegexp.MatchString, - gardencorev1beta1.ErrorInfraUnauthorized: unauthorizedRegexp.MatchString, - gardencorev1beta1.ErrorInfraQuotaExceeded: quotaExceededRegexp.MatchString, - gardencorev1beta1.ErrorInfraRateLimitsExceeded: rateLimitsExceededRegexp.MatchString, - gardencorev1beta1.ErrorInfraDependencies: dependenciesRegexp.MatchString, - gardencorev1beta1.ErrorRetryableInfraDependencies: retryableDependenciesRegexp.MatchString, - gardencorev1beta1.ErrorInfraResourcesDepleted: resourcesDepletedRegexp.MatchString, - gardencorev1beta1.ErrorConfigurationProblem: configurationProblemRegexp.MatchString, - gardencorev1beta1.ErrorRetryableConfigurationProblem: retryableConfigurationProblemRegexp.MatchString, - } - ) - - // try to re-use codes from error - if errors.As(err, &coder) { - for _, code := range coder.Codes() { - codes.Insert(string(code)) - // found codes don't need to be checked any more - delete(knownCodes, code) - } - } - - // determine error codes - for code, matchFn := range knownCodes { - if !codes.Has(string(code)) && matchFn(message) { - codes.Insert(string(code)) - } - } - - // compute error code list based on code string set - var out []gardencorev1beta1.ErrorCode - for _, c := range sets.List(codes) { - out = append(out, gardencorev1beta1.ErrorCode(c)) - } - return out -} - // Coder is an error that may produce a ErrorCodes visible to the outside. type Coder interface { error @@ -223,23 +144,6 @@ type WrappedLastErrors struct { LastErrors []gardencorev1beta1.LastError } -// DeprecatedNewWrappedLastErrors returns a list of last errors. -func DeprecatedNewWrappedLastErrors(description string, err error) *WrappedLastErrors { - var lastErrors []gardencorev1beta1.LastError - - for _, partError := range errorsutils.Errors(err) { - lastErrors = append(lastErrors, *LastErrorWithTaskID( - partError.Error(), - errorsutils.GetID(partError), - DeprecatedDetermineErrorCodes(partError)...)) - } - - return &WrappedLastErrors{ - Description: description, - LastErrors: lastErrors, - } -} - // NewWrappedLastErrors returns a list of last errors. func NewWrappedLastErrors(description string, err error) *WrappedLastErrors { var lastErrors []gardencorev1beta1.LastError diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go index 2ef64882..9735fbcb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/helper.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -498,14 +498,14 @@ func SeedSettingOwnerChecksEnabled(settings *gardencorev1beta1.SeedSettings) boo return settings == nil || settings.OwnerChecks == nil || settings.OwnerChecks.Enabled } -// SeedSettingDependencyWatchdogEndpointEnabled returns true if the depedency-watchdog-endpoint is enabled. -func SeedSettingDependencyWatchdogEndpointEnabled(settings *gardencorev1beta1.SeedSettings) bool { - return settings == nil || settings.DependencyWatchdog == nil || settings.DependencyWatchdog.Endpoint == nil || settings.DependencyWatchdog.Endpoint.Enabled +// SeedSettingDependencyWatchdogWeederEnabled returns true if the dependency-watchdog-weeder is enabled. +func SeedSettingDependencyWatchdogWeederEnabled(settings *gardencorev1beta1.SeedSettings) bool { + return settings == nil || settings.DependencyWatchdog == nil || settings.DependencyWatchdog.Weeder == nil || settings.DependencyWatchdog.Weeder.Enabled } -// SeedSettingDependencyWatchdogProbeEnabled returns true if the depedency-watchdog-probe is enabled. -func SeedSettingDependencyWatchdogProbeEnabled(settings *gardencorev1beta1.SeedSettings) bool { - return settings == nil || settings.DependencyWatchdog == nil || settings.DependencyWatchdog.Probe == nil || settings.DependencyWatchdog.Probe.Enabled +// SeedSettingDependencyWatchdogProberEnabled returns true if the dependency-watchdog-prober is enabled. +func SeedSettingDependencyWatchdogProberEnabled(settings *gardencorev1beta1.SeedSettings) bool { + return settings == nil || settings.DependencyWatchdog == nil || settings.DependencyWatchdog.Prober == nil || settings.DependencyWatchdog.Prober.Enabled } // SeedSettingTopologyAwareRoutingEnabled returns true if the topology-aware routing is enabled. @@ -532,18 +532,18 @@ func DetermineMachineImageForName(cloudProfile *gardencorev1beta1.CloudProfile, // FindMachineImageVersion finds the machine image version in the for the given and . // In case no machine image version can be found with the given or , false is being returned. -func FindMachineImageVersion(cloudProfile *gardencorev1beta1.CloudProfile, name, version string) (bool, gardencorev1beta1.MachineImageVersion) { - for _, image := range cloudProfile.Spec.MachineImages { +func FindMachineImageVersion(machineImages []gardencorev1beta1.MachineImage, name, version string) (gardencorev1beta1.MachineImageVersion, bool) { + for _, image := range machineImages { if image.Name == name { for _, imageVersion := range image.Versions { if imageVersion.Version == version { - return true, imageVersion + return imageVersion, true } } } } - return false, gardencorev1beta1.MachineImageVersion{} + return gardencorev1beta1.MachineImageVersion{}, false } // ShootMachineImageVersionExists checks if the shoot machine image (name, version) exists in the machine image constraint and returns true if yes and the index in the versions slice @@ -1032,8 +1032,8 @@ func GetShootAuditPolicyConfigMapRef(apiServerConfig *gardencorev1beta1.KubeAPIS return nil } -// ShootWantsAnonymousAuthentication returns true if anonymous authentication is set explicitly to 'true' and false otherwise. -func ShootWantsAnonymousAuthentication(kubeAPIServerConfig *gardencorev1beta1.KubeAPIServerConfig) bool { +// AnonymousAuthenticationEnabled returns true if anonymous authentication is set explicitly to 'true' and false otherwise. +func AnonymousAuthenticationEnabled(kubeAPIServerConfig *gardencorev1beta1.KubeAPIServerConfig) bool { if kubeAPIServerConfig == nil { return false } @@ -1090,7 +1090,7 @@ func SecretBindingHasType(secretBinding *gardencorev1beta1.SecretBinding, provid return false } - return sets.New[string](types...).Has(providerType) + return sets.New(types...).Has(providerType) } // AddTypeToSecretBinding adds the given provider type to the SecretBinding. @@ -1103,7 +1103,7 @@ func AddTypeToSecretBinding(secretBinding *gardencorev1beta1.SecretBinding, prov } types := GetSecretBindingTypes(secretBinding) - if !sets.New[string](types...).Has(providerType) { + if !sets.New(types...).Has(providerType) { types = append(types, providerType) } secretBinding.Provider.Type = strings.Join(types, ",") @@ -1382,6 +1382,11 @@ func IsMultiZonalShootControlPlane(shoot *gardencorev1beta1.Shoot) bool { return shoot.Spec.ControlPlane != nil && shoot.Spec.ControlPlane.HighAvailability != nil && shoot.Spec.ControlPlane.HighAvailability.FailureTolerance.Type == gardencorev1beta1.FailureToleranceTypeZone } +// IsWorkerless checks if the shoot has zero workers. +func IsWorkerless(shoot *gardencorev1beta1.Shoot) bool { + return len(shoot.Spec.Provider.Workers) == 0 +} + // ShootEnablesSSHAccess returns true if ssh access to worker nodes should be allowed for the given shoot. func ShootEnablesSSHAccess(shoot *gardencorev1beta1.Shoot) bool { return shoot.Spec.Provider.WorkersSettings == nil || shoot.Spec.Provider.WorkersSettings.SSHAccess == nil || shoot.Spec.Provider.WorkersSettings.SSHAccess.Enabled diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/shootstate_list.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/shootstate_list.go index fdc13506..294637c7 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/shootstate_list.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/helper/shootstate_list.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/register.go index a9a673f8..a289a285 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types.go index 7aa68a04..6d276f00 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupbucket.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupbucket.go index 1a0ac34c..6161722e 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupbucket.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupbucket.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupentry.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupentry.go index bade121b..039cf756 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupentry.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_backupentry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_cloudprofile.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_cloudprofile.go index 41ae24ae..6617a8bd 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_cloudprofile.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_cloudprofile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_common.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_common.go index b4e01183..b2b9e36d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_common.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_common.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerdeployment.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerdeployment.go index 534ebcaa..fc2545c2 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerdeployment.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerdeployment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerinstallation.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerinstallation.go index d23a4347..6ad1d416 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerinstallation.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerinstallation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerregistration.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerregistration.go index e2aa6861..947883d0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerregistration.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_controllerregistration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_exposureclass.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_exposureclass.go index f66857d5..aa71449e 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_exposureclass.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_exposureclass.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_project.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_project.go index d71d19bd..ca794739 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_project.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_quota.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_quota.go index 39febf0e..9e4efb35 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_quota.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_quota.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_secretbinding.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_secretbinding.go index 099e675f..d4ba7b61 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_secretbinding.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_secretbinding.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go index 4cb3aed5..c68d4f03 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_seed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -140,11 +140,9 @@ type SeedBackup struct { // SeedDNS contains DNS-relevant information about this seed cluster. type SeedDNS struct { - // IngressDomain is the domain of the Seed cluster pointing to the ingress controller endpoint. It will be used - // to construct ingress URLs for system applications running in Shoot clusters. This field is immutable. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use spec.ingress.domain instead. - // +optional - IngressDomain *string `json:"ingressDomain,omitempty" protobuf:"bytes,1,opt,name=ingressDomain"` + // IngressDomain is tombstoned to show why 1 is reserved protobuf tag. + // IngressDomain *string `json:"ingressDomain,omitempty" protobuf:"bytes,1,opt,name=ingressDomain"` + // Provider configures a DNSProvider // +optional Provider *SeedDNSProvider `json:"provider,omitempty" protobuf:"bytes,2,opt,name=provider"` @@ -156,14 +154,12 @@ type SeedDNSProvider struct { Type string `json:"type" protobuf:"bytes,1,opt,name=type"` // SecretRef is a reference to a Secret object containing cloud provider credentials used for registering external domains. SecretRef corev1.SecretReference `json:"secretRef" protobuf:"bytes,2,opt,name=secretRef"` - // Domains contains information about which domains shall be included/excluded for this provider. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. - // +optional - Domains *DNSIncludeExclude `json:"domains,omitempty" protobuf:"bytes,3,opt,name=domains"` - // Zones contains information about which hosted zones shall be included/excluded for this provider. - // Deprecated: This field is deprecated and will be removed in a future version of Gardener. - // +optional - Zones *DNSIncludeExclude `json:"zones,omitempty" protobuf:"bytes,4,opt,name=zones"` + + // Domains is tombstoned to show why 3 is reserved protobuf tag. + // Domains *DNSIncludeExclude `json:"domains,omitempty" protobuf:"bytes,3,opt,name=domains"` + + // Zones is tombstoned to show why 4 is reserved protobuf tag. + // Zones *DNSIncludeExclude `json:"zones,omitempty" protobuf:"bytes,4,opt,name=zones"` } // Ingress configures the Ingress specific settings of the Seed cluster @@ -250,6 +246,10 @@ type SeedSettings struct { // +optional VerticalPodAutoscaler *SeedSettingVerticalPodAutoscaler `json:"verticalPodAutoscaler,omitempty" protobuf:"bytes,5,opt,name=verticalPodAutoscaler"` // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. + // + // Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). + // The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. + // Set this field to false to be prepared for the above-mentioned locking. // +optional OwnerChecks *SeedSettingOwnerChecks `json:"ownerChecks,omitempty" protobuf:"bytes,6,opt,name=ownerChecks"` // DependencyWatchdog controls certain settings for the dependency-watchdog components deployed in the seed. @@ -316,6 +316,10 @@ type SeedSettingVerticalPodAutoscaler struct { } // SeedSettingOwnerChecks controls certain owner checks settings for shoots scheduled on this seed. +// +// Deprecated: This field is deprecated. The "bad-case" control plane migration is being removed in favor of the HA Shoot control planes (see https://github.com/gardener/gardener/issues/6302). +// The field will be locked to false in a future version of Gardener. In this way gardenlet will clean up all owner DNSRecords. Finally, the field will be removed from the API. +// Set this field to false to be prepared for the above-mentioned locking. type SeedSettingOwnerChecks struct { // Enabled controls whether owner checks are enabled for shoots scheduled on this seed. It // is enabled by default because it is a prerequisite for control plane migration. @@ -325,14 +329,23 @@ type SeedSettingOwnerChecks struct { // SeedSettingDependencyWatchdog controls the dependency-watchdog settings for the seed. type SeedSettingDependencyWatchdog struct { // Endpoint controls the endpoint settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Weeder` instead. // +optional Endpoint *SeedSettingDependencyWatchdogEndpoint `json:"endpoint,omitempty" protobuf:"bytes,1,opt,name=endpoint"` // Probe controls the probe settings for the dependency-watchdog for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Use `Prober` instead. // +optional Probe *SeedSettingDependencyWatchdogProbe `json:"probe,omitempty" protobuf:"bytes,2,opt,name=probe"` + // Weeder controls the weeder settings for the dependency-watchdog for the seed. + // +optional + Weeder *SeedSettingDependencyWatchdogWeeder `json:"weeder,omitempty" protobuf:"bytes,3,opt,name=weeder"` + // Prober controls the prober settings for the dependency-watchdog for the seed. + // +optional + Prober *SeedSettingDependencyWatchdogProber `json:"prober,omitempty" protobuf:"bytes,4,opt,name=prober"` } // SeedSettingDependencyWatchdogEndpoint controls the endpoint settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogWeeder` instead. type SeedSettingDependencyWatchdogEndpoint struct { // Enabled controls whether the endpoint controller of the dependency-watchdog should be enabled. This controller // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in @@ -341,9 +354,26 @@ type SeedSettingDependencyWatchdogEndpoint struct { } // SeedSettingDependencyWatchdogProbe controls the probe settings for the dependency-watchdog for the seed. +// Deprecated: This type is deprecated and will be removed in a future version of Gardener. Use type `SeedSettingDependencyWatchdogProber` instead. type SeedSettingDependencyWatchdogProbe struct { // Enabled controls whether the probe controller of the dependency-watchdog should be enabled. This controller - // scales down the kube-controller-manager of shoot clusters in case their respective kube-apiserver is not + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not + // reachable via its external ingress in order to avoid melt-down situations. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + +// SeedSettingDependencyWatchdogWeeder controls the weeder settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogWeeder struct { + // Enabled controls whether the endpoint controller(weeder) of the dependency-watchdog should be enabled. This controller + // helps to alleviate the delay where control plane components remain unavailable by finding the respective pods in + // CrashLoopBackoff status and restarting them once their dependants become ready and available again. + Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` +} + +// SeedSettingDependencyWatchdogProber controls the prober settings for the dependency-watchdog for the seed. +type SeedSettingDependencyWatchdogProber struct { + // Enabled controls whether the probe controller(prober) of the dependency-watchdog should be enabled. This controller + // scales down the kube-controller-manager, machine-controller-manager and cluster-autoscaler of shoot clusters in case their respective kube-apiserver is not // reachable via its external ingress in order to avoid melt-down situations. Enabled bool `json:"enabled" protobuf:"bytes,1,opt,name=enabled"` } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go index e147ebd0..4b802eee 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -85,7 +85,8 @@ type ShootSpec struct { // Kubernetes contains the version and configuration settings of the control plane components. Kubernetes Kubernetes `json:"kubernetes" protobuf:"bytes,6,opt,name=kubernetes"` // Networking contains information about cluster networking such as CNI Plugin type, CIDRs, ...etc. - Networking Networking `json:"networking" protobuf:"bytes,7,opt,name=networking"` + // +optional + Networking *Networking `json:"networking,omitempty" protobuf:"bytes,7,opt,name=networking"` // Maintenance contains information about the time window for maintenance operations and which // operations should be performed. // +optional @@ -103,7 +104,8 @@ type ShootSpec struct { // SecretBindingName is the name of the a SecretBinding that has a reference to the provider secret. // The credentials inside the provider secret will be used to create the shoot in the respective account. // This field is immutable. - SecretBindingName string `json:"secretBindingName" protobuf:"bytes,13,opt,name=secretBindingName"` + // +optional + SecretBindingName *string `json:"secretBindingName,omitempty" protobuf:"bytes,13,opt,name=secretBindingName"` // SeedName is the name of the seed cluster that runs the control plane of the Shoot. // This field is immutable when the SeedChange feature gate is disabled. // +optional @@ -500,7 +502,7 @@ type HibernationSchedule struct { // End is a Cron spec at which time a Shoot will be woken up. // +optional End *string `json:"end,omitempty" protobuf:"bytes,2,opt,name=end"` - // Location is the time location in which both start and and shall be evaluated. + // Location is the time location in which both start and shall be evaluated. // +optional Location *string `json:"location,omitempty" protobuf:"bytes,3,opt,name=location"` } @@ -850,6 +852,9 @@ type AdmissionPlugin struct { // Disabled specifies whether this plugin should be disabled. // +optional Disabled *bool `json:"disabled,omitempty" protobuf:"varint,3,opt,name=disabled"` + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this admission plugin. + // +optional + KubeconfigSecretName *string `json:"kubeconfigSecretName,omitempty" protobuf:"bytes,4,opt,name=kubeconfigSecretName"` } // WatchCacheSizes contains configuration of the API server's watch cache sizes. @@ -1188,7 +1193,8 @@ type KubeletConfigReserved struct { // Networking defines networking parameters for the shoot cluster. type Networking struct { // Type identifies the type of the networking plugin. This field is immutable. - Type string `json:"type" protobuf:"bytes,1,opt,name=type"` + // +optional + Type *string `json:"type,omitempty" protobuf:"bytes,1,opt,name=type"` // ProviderConfig is the configuration passed to network resource. // +optional ProviderConfig *runtime.RawExtension `json:"providerConfig,omitempty" protobuf:"bytes,2,opt,name=providerConfig"` @@ -1244,7 +1250,8 @@ type MaintenanceAutoUpdate struct { // KubernetesVersion indicates whether the patch Kubernetes version may be automatically updated (default: true). KubernetesVersion bool `json:"kubernetesVersion" protobuf:"varint,1,opt,name=kubernetesVersion"` // MachineImageVersion indicates whether the machine image version may be automatically updated (default: true). - MachineImageVersion bool `json:"machineImageVersion" protobuf:"varint,2,opt,name=machineImageVersion"` + // +optional + MachineImageVersion *bool `json:"machineImageVersion,omitempty" protobuf:"varint,2,opt,name=machineImageVersion"` } // MaintenanceTimeWindow contains information about the time window for maintenance operations. @@ -1291,7 +1298,8 @@ type Provider struct { // Workers is a list of worker groups. // +patchMergeKey=name // +patchStrategy=merge - Workers []Worker `json:"workers" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,4,rep,name=workers"` + // +optional + Workers []Worker `json:"workers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,4,rep,name=workers"` // WorkersSettings contains settings for all workers. // +optional WorkersSettings *WorkersSettings `json:"workersSettings,omitempty" protobuf:"bytes,5,opt,name=workersSettings"` @@ -1354,6 +1362,9 @@ type Worker struct { // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. // +optional MachineControllerManagerSettings *MachineControllerManagerSettings `json:"machineControllerManager,omitempty" protobuf:"bytes,19,opt,name=machineControllerManager"` + // Sysctls is a map of kernel settings to apply on all VMs in this worker pool. + // +optional + Sysctls map[string]string `json:"sysctls,omitempty" protobuf:"bytes,20,rep,name=sysctls"` } // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shootstate.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shootstate.go index e887322f..7e461818 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shootstate.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_shootstate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_utils.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_utils.go index bb2149ca..1ef1a1ec 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_utils.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/types_utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go index 7393f2c4..bc1305f1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -1252,6 +1252,26 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*SeedSettingDependencyWatchdogProber)(nil), (*core.SeedSettingDependencyWatchdogProber)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(a.(*SeedSettingDependencyWatchdogProber), b.(*core.SeedSettingDependencyWatchdogProber), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingDependencyWatchdogProber)(nil), (*SeedSettingDependencyWatchdogProber)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingDependencyWatchdogProber_To_v1beta1_SeedSettingDependencyWatchdogProber(a.(*core.SeedSettingDependencyWatchdogProber), b.(*SeedSettingDependencyWatchdogProber), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*SeedSettingDependencyWatchdogWeeder)(nil), (*core.SeedSettingDependencyWatchdogWeeder)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(a.(*SeedSettingDependencyWatchdogWeeder), b.(*core.SeedSettingDependencyWatchdogWeeder), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.SeedSettingDependencyWatchdogWeeder)(nil), (*SeedSettingDependencyWatchdogWeeder)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1beta1_SeedSettingDependencyWatchdogWeeder(a.(*core.SeedSettingDependencyWatchdogWeeder), b.(*SeedSettingDependencyWatchdogWeeder), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*SeedSettingExcessCapacityReservation)(nil), (*core.SeedSettingExcessCapacityReservation)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_SeedSettingExcessCapacityReservation_To_core_SeedSettingExcessCapacityReservation(a.(*SeedSettingExcessCapacityReservation), b.(*core.SeedSettingExcessCapacityReservation), scope) }); err != nil { @@ -1741,6 +1761,7 @@ func autoConvert_v1beta1_AdmissionPlugin_To_core_AdmissionPlugin(in *AdmissionPl out.Name = in.Name out.Config = (*runtime.RawExtension)(unsafe.Pointer(in.Config)) out.Disabled = (*bool)(unsafe.Pointer(in.Disabled)) + out.KubeconfigSecretName = (*string)(unsafe.Pointer(in.KubeconfigSecretName)) return nil } @@ -1753,6 +1774,7 @@ func autoConvert_core_AdmissionPlugin_To_v1beta1_AdmissionPlugin(in *core.Admiss out.Name = in.Name out.Disabled = (*bool)(unsafe.Pointer(in.Disabled)) out.Config = (*runtime.RawExtension)(unsafe.Pointer(in.Config)) + out.KubeconfigSecretName = (*string)(unsafe.Pointer(in.KubeconfigSecretName)) return nil } @@ -4025,7 +4047,7 @@ func Convert_core_Maintenance_To_v1beta1_Maintenance(in *core.Maintenance, out * func autoConvert_v1beta1_MaintenanceAutoUpdate_To_core_MaintenanceAutoUpdate(in *MaintenanceAutoUpdate, out *core.MaintenanceAutoUpdate, s conversion.Scope) error { out.KubernetesVersion = in.KubernetesVersion - out.MachineImageVersion = in.MachineImageVersion + out.MachineImageVersion = (*bool)(unsafe.Pointer(in.MachineImageVersion)) return nil } @@ -4036,7 +4058,7 @@ func Convert_v1beta1_MaintenanceAutoUpdate_To_core_MaintenanceAutoUpdate(in *Mai func autoConvert_core_MaintenanceAutoUpdate_To_v1beta1_MaintenanceAutoUpdate(in *core.MaintenanceAutoUpdate, out *MaintenanceAutoUpdate, s conversion.Scope) error { out.KubernetesVersion = in.KubernetesVersion - out.MachineImageVersion = in.MachineImageVersion + out.MachineImageVersion = (*bool)(unsafe.Pointer(in.MachineImageVersion)) return nil } @@ -4110,7 +4132,7 @@ func Convert_core_NamedResourceReference_To_v1beta1_NamedResourceReference(in *c } func autoConvert_v1beta1_Networking_To_core_Networking(in *Networking, out *core.Networking, s conversion.Scope) error { - out.Type = in.Type + out.Type = (*string)(unsafe.Pointer(in.Type)) out.ProviderConfig = (*runtime.RawExtension)(unsafe.Pointer(in.ProviderConfig)) out.Pods = (*string)(unsafe.Pointer(in.Pods)) out.Nodes = (*string)(unsafe.Pointer(in.Nodes)) @@ -4125,7 +4147,7 @@ func Convert_v1beta1_Networking_To_core_Networking(in *Networking, out *core.Net } func autoConvert_core_Networking_To_v1beta1_Networking(in *core.Networking, out *Networking, s conversion.Scope) error { - out.Type = in.Type + out.Type = (*string)(unsafe.Pointer(in.Type)) out.ProviderConfig = (*runtime.RawExtension)(unsafe.Pointer(in.ProviderConfig)) out.Pods = (*string)(unsafe.Pointer(in.Pods)) out.Nodes = (*string)(unsafe.Pointer(in.Nodes)) @@ -4771,7 +4793,6 @@ func Convert_core_SeedBackup_To_v1beta1_SeedBackup(in *core.SeedBackup, out *See } func autoConvert_v1beta1_SeedDNS_To_core_SeedDNS(in *SeedDNS, out *core.SeedDNS, s conversion.Scope) error { - out.IngressDomain = (*string)(unsafe.Pointer(in.IngressDomain)) out.Provider = (*core.SeedDNSProvider)(unsafe.Pointer(in.Provider)) return nil } @@ -4782,7 +4803,6 @@ func Convert_v1beta1_SeedDNS_To_core_SeedDNS(in *SeedDNS, out *core.SeedDNS, s c } func autoConvert_core_SeedDNS_To_v1beta1_SeedDNS(in *core.SeedDNS, out *SeedDNS, s conversion.Scope) error { - out.IngressDomain = (*string)(unsafe.Pointer(in.IngressDomain)) out.Provider = (*SeedDNSProvider)(unsafe.Pointer(in.Provider)) return nil } @@ -4795,8 +4815,6 @@ func Convert_core_SeedDNS_To_v1beta1_SeedDNS(in *core.SeedDNS, out *SeedDNS, s c func autoConvert_v1beta1_SeedDNSProvider_To_core_SeedDNSProvider(in *SeedDNSProvider, out *core.SeedDNSProvider, s conversion.Scope) error { out.Type = in.Type out.SecretRef = in.SecretRef - out.Domains = (*core.DNSIncludeExclude)(unsafe.Pointer(in.Domains)) - out.Zones = (*core.DNSIncludeExclude)(unsafe.Pointer(in.Zones)) return nil } @@ -4808,8 +4826,6 @@ func Convert_v1beta1_SeedDNSProvider_To_core_SeedDNSProvider(in *SeedDNSProvider func autoConvert_core_SeedDNSProvider_To_v1beta1_SeedDNSProvider(in *core.SeedDNSProvider, out *SeedDNSProvider, s conversion.Scope) error { out.Type = in.Type out.SecretRef = in.SecretRef - out.Domains = (*DNSIncludeExclude)(unsafe.Pointer(in.Domains)) - out.Zones = (*DNSIncludeExclude)(unsafe.Pointer(in.Zones)) return nil } @@ -4941,6 +4957,8 @@ func Convert_core_SeedSelector_To_v1beta1_SeedSelector(in *core.SeedSelector, ou func autoConvert_v1beta1_SeedSettingDependencyWatchdog_To_core_SeedSettingDependencyWatchdog(in *SeedSettingDependencyWatchdog, out *core.SeedSettingDependencyWatchdog, s conversion.Scope) error { out.Endpoint = (*core.SeedSettingDependencyWatchdogEndpoint)(unsafe.Pointer(in.Endpoint)) out.Probe = (*core.SeedSettingDependencyWatchdogProbe)(unsafe.Pointer(in.Probe)) + out.Weeder = (*core.SeedSettingDependencyWatchdogWeeder)(unsafe.Pointer(in.Weeder)) + out.Prober = (*core.SeedSettingDependencyWatchdogProber)(unsafe.Pointer(in.Prober)) return nil } @@ -4952,6 +4970,8 @@ func Convert_v1beta1_SeedSettingDependencyWatchdog_To_core_SeedSettingDependency func autoConvert_core_SeedSettingDependencyWatchdog_To_v1beta1_SeedSettingDependencyWatchdog(in *core.SeedSettingDependencyWatchdog, out *SeedSettingDependencyWatchdog, s conversion.Scope) error { out.Endpoint = (*SeedSettingDependencyWatchdogEndpoint)(unsafe.Pointer(in.Endpoint)) out.Probe = (*SeedSettingDependencyWatchdogProbe)(unsafe.Pointer(in.Probe)) + out.Weeder = (*SeedSettingDependencyWatchdogWeeder)(unsafe.Pointer(in.Weeder)) + out.Prober = (*SeedSettingDependencyWatchdogProber)(unsafe.Pointer(in.Prober)) return nil } @@ -5000,6 +5020,46 @@ func Convert_core_SeedSettingDependencyWatchdogProbe_To_v1beta1_SeedSettingDepen return autoConvert_core_SeedSettingDependencyWatchdogProbe_To_v1beta1_SeedSettingDependencyWatchdogProbe(in, out, s) } +func autoConvert_v1beta1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in *SeedSettingDependencyWatchdogProber, out *core.SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1beta1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber is an autogenerated conversion function. +func Convert_v1beta1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in *SeedSettingDependencyWatchdogProber, out *core.SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + return autoConvert_v1beta1_SeedSettingDependencyWatchdogProber_To_core_SeedSettingDependencyWatchdogProber(in, out, s) +} + +func autoConvert_core_SeedSettingDependencyWatchdogProber_To_v1beta1_SeedSettingDependencyWatchdogProber(in *core.SeedSettingDependencyWatchdogProber, out *SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingDependencyWatchdogProber_To_v1beta1_SeedSettingDependencyWatchdogProber is an autogenerated conversion function. +func Convert_core_SeedSettingDependencyWatchdogProber_To_v1beta1_SeedSettingDependencyWatchdogProber(in *core.SeedSettingDependencyWatchdogProber, out *SeedSettingDependencyWatchdogProber, s conversion.Scope) error { + return autoConvert_core_SeedSettingDependencyWatchdogProber_To_v1beta1_SeedSettingDependencyWatchdogProber(in, out, s) +} + +func autoConvert_v1beta1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in *SeedSettingDependencyWatchdogWeeder, out *core.SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_v1beta1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder is an autogenerated conversion function. +func Convert_v1beta1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in *SeedSettingDependencyWatchdogWeeder, out *core.SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + return autoConvert_v1beta1_SeedSettingDependencyWatchdogWeeder_To_core_SeedSettingDependencyWatchdogWeeder(in, out, s) +} + +func autoConvert_core_SeedSettingDependencyWatchdogWeeder_To_v1beta1_SeedSettingDependencyWatchdogWeeder(in *core.SeedSettingDependencyWatchdogWeeder, out *SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + out.Enabled = in.Enabled + return nil +} + +// Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1beta1_SeedSettingDependencyWatchdogWeeder is an autogenerated conversion function. +func Convert_core_SeedSettingDependencyWatchdogWeeder_To_v1beta1_SeedSettingDependencyWatchdogWeeder(in *core.SeedSettingDependencyWatchdogWeeder, out *SeedSettingDependencyWatchdogWeeder, s conversion.Scope) error { + return autoConvert_core_SeedSettingDependencyWatchdogWeeder_To_v1beta1_SeedSettingDependencyWatchdogWeeder(in, out, s) +} + func autoConvert_v1beta1_SeedSettingExcessCapacityReservation_To_core_SeedSettingExcessCapacityReservation(in *SeedSettingExcessCapacityReservation, out *core.SeedSettingExcessCapacityReservation, s conversion.Scope) error { out.Enabled = in.Enabled return nil @@ -5679,9 +5739,7 @@ func autoConvert_v1beta1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.Sh if err := Convert_v1beta1_Kubernetes_To_core_Kubernetes(&in.Kubernetes, &out.Kubernetes, s); err != nil { return err } - if err := Convert_v1beta1_Networking_To_core_Networking(&in.Networking, &out.Networking, s); err != nil { - return err - } + out.Networking = (*core.Networking)(unsafe.Pointer(in.Networking)) out.Maintenance = (*core.Maintenance)(unsafe.Pointer(in.Maintenance)) out.Monitoring = (*core.Monitoring)(unsafe.Pointer(in.Monitoring)) if err := Convert_v1beta1_Provider_To_core_Provider(&in.Provider, &out.Provider, s); err != nil { @@ -5689,7 +5747,7 @@ func autoConvert_v1beta1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.Sh } out.Purpose = (*core.ShootPurpose)(unsafe.Pointer(in.Purpose)) out.Region = in.Region - out.SecretBindingName = in.SecretBindingName + out.SecretBindingName = (*string)(unsafe.Pointer(in.SecretBindingName)) out.SeedName = (*string)(unsafe.Pointer(in.SeedName)) out.SeedSelector = (*core.SeedSelector)(unsafe.Pointer(in.SeedSelector)) out.Resources = *(*[]core.NamedResourceReference)(unsafe.Pointer(&in.Resources)) @@ -5714,9 +5772,7 @@ func autoConvert_core_ShootSpec_To_v1beta1_ShootSpec(in *core.ShootSpec, out *Sh if err := Convert_core_Kubernetes_To_v1beta1_Kubernetes(&in.Kubernetes, &out.Kubernetes, s); err != nil { return err } - if err := Convert_core_Networking_To_v1beta1_Networking(&in.Networking, &out.Networking, s); err != nil { - return err - } + out.Networking = (*Networking)(unsafe.Pointer(in.Networking)) out.Maintenance = (*Maintenance)(unsafe.Pointer(in.Maintenance)) out.Monitoring = (*Monitoring)(unsafe.Pointer(in.Monitoring)) if err := Convert_core_Provider_To_v1beta1_Provider(&in.Provider, &out.Provider, s); err != nil { @@ -5724,7 +5780,7 @@ func autoConvert_core_ShootSpec_To_v1beta1_ShootSpec(in *core.ShootSpec, out *Sh } out.Purpose = (*ShootPurpose)(unsafe.Pointer(in.Purpose)) out.Region = in.Region - out.SecretBindingName = in.SecretBindingName + out.SecretBindingName = (*string)(unsafe.Pointer(in.SecretBindingName)) out.SeedName = (*string)(unsafe.Pointer(in.SeedName)) out.SeedSelector = (*SeedSelector)(unsafe.Pointer(in.SeedSelector)) out.Resources = *(*[]NamedResourceReference)(unsafe.Pointer(&in.Resources)) @@ -6076,6 +6132,7 @@ func autoConvert_v1beta1_Worker_To_core_Worker(in *Worker, out *core.Worker, s c out.Zones = *(*[]string)(unsafe.Pointer(&in.Zones)) out.SystemComponents = (*core.WorkerSystemComponents)(unsafe.Pointer(in.SystemComponents)) out.MachineControllerManagerSettings = (*core.MachineControllerManagerSettings)(unsafe.Pointer(in.MachineControllerManagerSettings)) + out.Sysctls = *(*map[string]string)(unsafe.Pointer(&in.Sysctls)) return nil } @@ -6114,6 +6171,7 @@ func autoConvert_core_Worker_To_v1beta1_Worker(in *core.Worker, out *Worker, s c out.KubeletDataVolumeName = (*string)(unsafe.Pointer(in.KubeletDataVolumeName)) out.Zones = *(*[]string)(unsafe.Pointer(&in.Zones)) out.MachineControllerManagerSettings = (*MachineControllerManagerSettings)(unsafe.Pointer(in.MachineControllerManagerSettings)) + out.Sysctls = *(*map[string]string)(unsafe.Pointer(&in.Sysctls)) return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go index 8909791b..80ef165f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -84,6 +84,11 @@ func (in *AdmissionPlugin) DeepCopyInto(out *AdmissionPlugin) { *out = new(bool) **out = **in } + if in.KubeconfigSecretName != nil { + in, out := &in.KubeconfigSecretName, &out.KubeconfigSecretName + *out = new(string) + **out = **in + } return } @@ -2648,7 +2653,7 @@ func (in *Maintenance) DeepCopyInto(out *Maintenance) { if in.AutoUpdate != nil { in, out := &in.AutoUpdate, &out.AutoUpdate *out = new(MaintenanceAutoUpdate) - **out = **in + (*in).DeepCopyInto(*out) } if in.TimeWindow != nil { in, out := &in.TimeWindow, &out.TimeWindow @@ -2676,6 +2681,11 @@ func (in *Maintenance) DeepCopy() *Maintenance { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MaintenanceAutoUpdate) DeepCopyInto(out *MaintenanceAutoUpdate) { *out = *in + if in.MachineImageVersion != nil { + in, out := &in.MachineImageVersion, &out.MachineImageVersion + *out = new(bool) + **out = **in + } return } @@ -2746,6 +2756,11 @@ func (in *NamedResourceReference) DeepCopy() *NamedResourceReference { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Networking) DeepCopyInto(out *Networking) { *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } if in.ProviderConfig != nil { in, out := &in.ProviderConfig, &out.ProviderConfig *out = new(runtime.RawExtension) @@ -3495,15 +3510,10 @@ func (in *SeedBackup) DeepCopy() *SeedBackup { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedDNS) DeepCopyInto(out *SeedDNS) { *out = *in - if in.IngressDomain != nil { - in, out := &in.IngressDomain, &out.IngressDomain - *out = new(string) - **out = **in - } if in.Provider != nil { in, out := &in.Provider, &out.Provider *out = new(SeedDNSProvider) - (*in).DeepCopyInto(*out) + **out = **in } return } @@ -3522,16 +3532,6 @@ func (in *SeedDNS) DeepCopy() *SeedDNS { func (in *SeedDNSProvider) DeepCopyInto(out *SeedDNSProvider) { *out = *in out.SecretRef = in.SecretRef - if in.Domains != nil { - in, out := &in.Domains, &out.Domains - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } - if in.Zones != nil { - in, out := &in.Zones, &out.Zones - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } return } @@ -3675,6 +3675,16 @@ func (in *SeedSettingDependencyWatchdog) DeepCopyInto(out *SeedSettingDependency *out = new(SeedSettingDependencyWatchdogProbe) **out = **in } + if in.Weeder != nil { + in, out := &in.Weeder, &out.Weeder + *out = new(SeedSettingDependencyWatchdogWeeder) + **out = **in + } + if in.Prober != nil { + in, out := &in.Prober, &out.Prober + *out = new(SeedSettingDependencyWatchdogProber) + **out = **in + } return } @@ -3720,6 +3730,38 @@ func (in *SeedSettingDependencyWatchdogProbe) DeepCopy() *SeedSettingDependencyW return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogProber) DeepCopyInto(out *SeedSettingDependencyWatchdogProber) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogProber. +func (in *SeedSettingDependencyWatchdogProber) DeepCopy() *SeedSettingDependencyWatchdogProber { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogProber) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopyInto(out *SeedSettingDependencyWatchdogWeeder) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogWeeder. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopy() *SeedSettingDependencyWatchdogWeeder { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogWeeder) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingExcessCapacityReservation) DeepCopyInto(out *SeedSettingExcessCapacityReservation) { *out = *in @@ -4464,7 +4506,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { (*in).DeepCopyInto(*out) } in.Kubernetes.DeepCopyInto(&out.Kubernetes) - in.Networking.DeepCopyInto(&out.Networking) + if in.Networking != nil { + in, out := &in.Networking, &out.Networking + *out = new(Networking) + (*in).DeepCopyInto(*out) + } if in.Maintenance != nil { in, out := &in.Maintenance, &out.Maintenance *out = new(Maintenance) @@ -4481,6 +4527,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = new(ShootPurpose) **out = **in } + if in.SecretBindingName != nil { + in, out := &in.SecretBindingName, &out.SecretBindingName + *out = new(string) + **out = **in + } if in.SeedName != nil { in, out := &in.SeedName, &out.SeedName *out = new(string) @@ -4996,6 +5047,13 @@ func (in *Worker) DeepCopyInto(out *Worker) { *out = new(MachineControllerManagerSettings) (*in).DeepCopyInto(*out) } + if in.Sysctls != nil { + in, out := &in.Sysctls, &out.Sysctls + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.defaults.go index 1134741d..5e124eeb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/v1beta1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -142,10 +142,15 @@ func SetObjectDefaults_Shoot(in *Shoot) { if in.Spec.Kubernetes.ClusterAutoscaler != nil { SetDefaults_ClusterAutoscaler(in.Spec.Kubernetes.ClusterAutoscaler) } + if in.Spec.Kubernetes.KubeAPIServer != nil { + SetDefaults_KubeAPIServerConfig(in.Spec.Kubernetes.KubeAPIServer) + } if in.Spec.Kubernetes.VerticalPodAutoscaler != nil { SetDefaults_VerticalPodAutoscaler(in.Spec.Kubernetes.VerticalPodAutoscaler) } - SetDefaults_Networking(&in.Spec.Networking) + if in.Spec.Networking != nil { + SetDefaults_Networking(in.Spec.Networking) + } if in.Spec.Maintenance != nil { SetDefaults_Maintenance(in.Spec.Maintenance) } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go index 29813135..56fb7642 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/core/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -84,6 +84,11 @@ func (in *AdmissionPlugin) DeepCopyInto(out *AdmissionPlugin) { *out = new(runtime.RawExtension) (*in).DeepCopyInto(*out) } + if in.KubeconfigSecretName != nil { + in, out := &in.KubeconfigSecretName, &out.KubeconfigSecretName + *out = new(string) + **out = **in + } return } @@ -2650,7 +2655,7 @@ func (in *Maintenance) DeepCopyInto(out *Maintenance) { if in.AutoUpdate != nil { in, out := &in.AutoUpdate, &out.AutoUpdate *out = new(MaintenanceAutoUpdate) - **out = **in + (*in).DeepCopyInto(*out) } if in.TimeWindow != nil { in, out := &in.TimeWindow, &out.TimeWindow @@ -2678,6 +2683,11 @@ func (in *Maintenance) DeepCopy() *Maintenance { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MaintenanceAutoUpdate) DeepCopyInto(out *MaintenanceAutoUpdate) { *out = *in + if in.MachineImageVersion != nil { + in, out := &in.MachineImageVersion, &out.MachineImageVersion + *out = new(bool) + **out = **in + } return } @@ -2748,6 +2758,11 @@ func (in *NamedResourceReference) DeepCopy() *NamedResourceReference { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Networking) DeepCopyInto(out *Networking) { *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } if in.ProviderConfig != nil { in, out := &in.ProviderConfig, &out.ProviderConfig *out = new(runtime.RawExtension) @@ -3497,15 +3512,10 @@ func (in *SeedBackup) DeepCopy() *SeedBackup { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedDNS) DeepCopyInto(out *SeedDNS) { *out = *in - if in.IngressDomain != nil { - in, out := &in.IngressDomain, &out.IngressDomain - *out = new(string) - **out = **in - } if in.Provider != nil { in, out := &in.Provider, &out.Provider *out = new(SeedDNSProvider) - (*in).DeepCopyInto(*out) + **out = **in } return } @@ -3524,16 +3534,6 @@ func (in *SeedDNS) DeepCopy() *SeedDNS { func (in *SeedDNSProvider) DeepCopyInto(out *SeedDNSProvider) { *out = *in out.SecretRef = in.SecretRef - if in.Domains != nil { - in, out := &in.Domains, &out.Domains - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } - if in.Zones != nil { - in, out := &in.Zones, &out.Zones - *out = new(DNSIncludeExclude) - (*in).DeepCopyInto(*out) - } return } @@ -3677,6 +3677,16 @@ func (in *SeedSettingDependencyWatchdog) DeepCopyInto(out *SeedSettingDependency *out = new(SeedSettingDependencyWatchdogProbe) **out = **in } + if in.Weeder != nil { + in, out := &in.Weeder, &out.Weeder + *out = new(SeedSettingDependencyWatchdogWeeder) + **out = **in + } + if in.Prober != nil { + in, out := &in.Prober, &out.Prober + *out = new(SeedSettingDependencyWatchdogProber) + **out = **in + } return } @@ -3722,6 +3732,38 @@ func (in *SeedSettingDependencyWatchdogProbe) DeepCopy() *SeedSettingDependencyW return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogProber) DeepCopyInto(out *SeedSettingDependencyWatchdogProber) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogProber. +func (in *SeedSettingDependencyWatchdogProber) DeepCopy() *SeedSettingDependencyWatchdogProber { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogProber) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopyInto(out *SeedSettingDependencyWatchdogWeeder) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedSettingDependencyWatchdogWeeder. +func (in *SeedSettingDependencyWatchdogWeeder) DeepCopy() *SeedSettingDependencyWatchdogWeeder { + if in == nil { + return nil + } + out := new(SeedSettingDependencyWatchdogWeeder) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SeedSettingExcessCapacityReservation) DeepCopyInto(out *SeedSettingExcessCapacityReservation) { *out = *in @@ -4461,7 +4503,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { (*in).DeepCopyInto(*out) } in.Kubernetes.DeepCopyInto(&out.Kubernetes) - in.Networking.DeepCopyInto(&out.Networking) + if in.Networking != nil { + in, out := &in.Networking, &out.Networking + *out = new(Networking) + (*in).DeepCopyInto(*out) + } if in.Maintenance != nil { in, out := &in.Maintenance, &out.Maintenance *out = new(Maintenance) @@ -4478,6 +4524,11 @@ func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = new(ShootPurpose) **out = **in } + if in.SecretBindingName != nil { + in, out := &in.SecretBindingName, &out.SecretBindingName + *out = new(string) + **out = **in + } if in.SeedName != nil { in, out := &in.SeedName, &out.SeedName *out = new(string) @@ -4993,6 +5044,13 @@ func (in *Worker) DeepCopyInto(out *Worker) { *out = new(MachineControllerManagerSettings) (*in).DeepCopyInto(*out) } + if in.Sysctls != nil { + in, out := &in.Sysctls, &out.Sysctls + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/register.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/register.go index 5a16fbd5..468e1967 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/doc.go index 6ffa98ab..57be4c38 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper/filecodec.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper/filecodec.go index 5879fa0b..9a0a38de 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper/filecodec.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper/filecodec.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper/helper.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper/helper.go index 8d005849..798a631d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper/helper.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper/helper.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/register.go index e6d7ece1..246bc255 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types.go index 34c64595..bcedab9f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupbucket.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupbucket.go index beb10333..73758890 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupbucket.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupbucket.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupentry.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupentry.go index 02cc0362..9d11fec0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupentry.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_backupentry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_bastion.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_bastion.go index eb80dac5..428799ec 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_bastion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_bastion.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_cluster.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_cluster.go index df700279..1c4542a0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_cluster.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_cluster.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_containerruntime.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_containerruntime.go index 9c412aeb..4c444e45 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_containerruntime.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_containerruntime.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_controlplane.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_controlplane.go index 63859b32..10efc67e 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_controlplane.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_controlplane.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_defaults.go index 616a4737..4afb853d 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_dnsrecord.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_dnsrecord.go index ef4225b0..12a3a19a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_dnsrecord.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_dnsrecord.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_extension.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_extension.go index 4bfdfba8..4fa76172 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_extension.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_extension.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go index 1b4a45d5..32609974 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_infrastructure.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_network.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_network.go index 8740f674..0dcaf658 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_network.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_network.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_operatingsystemconfig.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_operatingsystemconfig.go index 145fbd27..4fc3a6a5 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_operatingsystemconfig.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_operatingsystemconfig.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_worker.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_worker.go index 2fdce722..543899d7 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_worker.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/types_worker.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -210,6 +210,9 @@ type WorkerStatus struct { // +patchMergeKey=name // +patchStrategy=merge MachineDeployments []MachineDeployment `json:"machineDeployments,omitempty" patchStrategy:"merge" patchMergeKey:"name"` + // MachineDeploymentsLastUpdateTime is the timestamp when the status.MachineDeployments slice was last updated. + // +optional + MachineDeploymentsLastUpdateTime *metav1.Time `json:"machineDeploymentsLastUpdateTime,omitempty"` } // MachineDeployment is a created machine deployment. diff --git a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go index 13f78d95..68625f21 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -1760,6 +1760,10 @@ func (in *WorkerStatus) DeepCopyInto(out *WorkerStatus) { *out = make([]MachineDeployment, len(*in)) copy(*out, *in) } + if in.MachineDeploymentsLastUpdateTime != nil { + in, out := &in.MachineDeploymentsLastUpdateTime, &out.MachineDeploymentsLastUpdateTime + *out = (*in).DeepCopy() + } return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operations/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/doc.go index d2396d8f..26449004 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operations/field_constants.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/field_constants.go index adf156eb..51515fd0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/field_constants.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/field_constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operations/install/install.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/install/install.go index e495da00..6cf53311 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/install/install.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/install/install.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operations/register.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/register.go index 4a862bc9..13ae6efb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operations/types_bastion.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/types_bastion.go index 94c7d683..d041c153 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/types_bastion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/types_bastion.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/conversions.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/conversions.go index 420038a4..2c7c7acd 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/conversions.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/conversions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/defaults.go index adfa160e..1cfd0221 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/doc.go index 740ea2e7..02e82163 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.pb.go index 06799b47..472f7133 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.proto index 6f68e024..71243ddb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/register.go index 87b5c49f..f7fe9064 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/types_bastion.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/types_bastion.go index b1e1a9ab..f09afef0 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/types_bastion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/types_bastion.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.conversion.go index 98477e43..cfdb7487 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.deepcopy.go index 5c7c80d1..49b3715f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.defaults.go index f31795e5..44136377 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/operations/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/operations/zz_generated.deepcopy.go index e9763bcf..b57cd1a1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operations/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operations/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/operator/register.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/register.go index ae4eb753..94ed0355 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/constants.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/constants.go index 232f2323..be9f677a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/constants.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/doc.go index 11779bdb..d1374dbd 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/register.go index f13651a8..288f257b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go index e810d2b4..df4c5610 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -87,6 +87,10 @@ type Settings struct { // cluster. // +optional VerticalPodAutoscaler *SettingVerticalPodAutoscaler `json:"verticalPodAutoscaler,omitempty"` + // TopologyAwareRouting controls certain settings for topology-aware traffic routing in the cluster. + // See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. + // +optional + TopologyAwareRouting *SettingTopologyAwareRouting `json:"topologyAwareRouting,omitempty"` } // SettingLoadBalancerServices controls certain settings for services of type load balancer that are created in the @@ -109,16 +113,41 @@ type SettingVerticalPodAutoscaler struct { Enabled *bool `json:"enabled,omitempty"` } +// SettingTopologyAwareRouting controls certain settings for topology-aware traffic routing in the cluster. +// See https://github.com/gardener/gardener/blob/master/docs/usage/topology_aware_routing.md. +type SettingTopologyAwareRouting struct { + // Enabled controls whether certain Services deployed in the cluster should be topology-aware. + // These Services are virtual-garden-etcd-main-client, virtual-garden-etcd-events-client and virtual-garden-kube-apiserver. + // Additionally, other components that are deployed to the runtime cluster via other means can read this field and + // according to its value enable/disable topology-aware routing for their Services. + Enabled bool `json:"enabled"` +} + // VirtualCluster contains configuration for the virtual cluster. type VirtualCluster struct { // ControlPlane holds information about the general settings for the control plane of the virtual cluster. // +optional ControlPlane *ControlPlane `json:"controlPlane,omitempty"` + // DNS holds information about DNS settings. + DNS DNS `json:"dns"` // ETCD contains configuration for the etcds of the virtual garden cluster. // +optional ETCD *ETCD `json:"etcd,omitempty"` + // Kubernetes contains the version and configuration options for the Kubernetes components of the virtual garden + // cluster. + Kubernetes Kubernetes `json:"kubernetes"` // Maintenance contains information about the time window for maintenance operations. Maintenance Maintenance `json:"maintenance"` + // Networking contains information about cluster networking such as CIDRs, etc. + Networking Networking `json:"networking"` +} + +// DNS holds information about DNS settings. +type DNS struct { + // Domain is the external domain of the virtual garden cluster. This field is immutable. + // +kubebuilder:validation:MinLength=1 + // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable" + Domain string `json:"domain"` } // ETCD contains configuration for the etcds of the virtual garden cluster. @@ -188,6 +217,142 @@ type ControlPlane struct { // HighAvailability specifies the configuration settings for high availability for a resource. type HighAvailability struct{} +// Kubernetes contains the version and configuration options for the Kubernetes components of the virtual garden +// cluster. +type Kubernetes struct { + // KubeAPIServer contains configuration settings for the kube-apiserver. + // +optional + KubeAPIServer *KubeAPIServerConfig `json:"kubeAPIServer,omitempty"` + // Version is the semantic Kubernetes version to use for the virtual garden cluster. + // +kubebuilder:validation:MinLength=1 + Version string `json:"version"` +} + +// KubeAPIServerConfig contains configuration settings for the kube-apiserver. +type KubeAPIServerConfig struct { + // KubeAPIServerConfig contains all configuration values not specific to the virtual garden cluster. + // +optional + *gardencorev1beta1.KubeAPIServerConfig `json:",inline"` + // AuditWebhook contains settings related to an audit webhook configuration. + // +optional + AuditWebhook *AuditWebhook `json:"auditWebhook,omitempty"` + // Authentication contains settings related to authentication. + // +optional + Authentication *Authentication `json:"authentication,omitempty"` + // Authorization contains settings related to authorization. + // +optional + Authorization *Authorization `json:"authorization,omitempty"` + // ResourcesToStoreInETCDEvents contains a list of resources which should be stored in etcd-events instead of + // etcd-main. The 'events' resource is always stored in etcd-events. Note that adding or removing resources from + // this list will not migrate them automatically from the etcd-main to etcd-events or vice versa. + // +optional + ResourcesToStoreInETCDEvents []GroupResource `json:"resourcesToStoreInETCDEvents,omitempty"` + // SNI contains configuration options for the TLS SNI settings. + // +optional + SNI *SNI `json:"sni,omitempty"` +} + +// AuditWebhook contains settings related to an audit webhook configuration. +type AuditWebhook struct { + // BatchMaxSize is the maximum size of a batch. + // +kubebuilder:default=30 + // +kubebuilder:validation:Minimum=1 + // +optional + BatchMaxSize *int32 `json:"batchMaxSize,omitempty"` + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this webhook. + // +kubebuilder:validation:MinLength=1 + KubeconfigSecretName string `json:"kubeconfigSecretName"` + // Version is the API version to send and expect from the webhook. + // +kubebuilder:default=audit.k8s.io/v1 + // +kubebuilder:validation:Enum=audit.k8s.io/v1 + // +optional + Version *string `json:"version,omitempty"` +} + +// Authentication contains settings related to authentication. +type Authentication struct { + // Webhook contains settings related to an authentication webhook configuration. + // +optional + Webhook *AuthenticationWebhook `json:"webhook,omitempty"` +} + +// AuthenticationWebhook contains settings related to an authentication webhook configuration. +type AuthenticationWebhook struct { + // CacheTTL is the duration to cache responses from the webhook authenticator. + // +kubebuilder:validation:Type=string + // +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$" + // +optional + CacheTTL *metav1.Duration `json:"cacheTTL,omitempty"` + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this webhook. + // +kubebuilder:validation:MinLength=1 + KubeconfigSecretName string `json:"kubeconfigSecretName"` + // Version is the API version to send and expect from the webhook. + // +kubebuilder:default=v1beta1 + // +kubebuilder:validation:Enum=v1alpha1;v1beta1;v1 + // +optional + Version *string `json:"version,omitempty"` +} + +// Authorization contains settings related to authorization. +type Authorization struct { + // Webhook contains settings related to an authorization webhook configuration. + // +optional + Webhook *AuthorizationWebhook `json:"webhook,omitempty"` +} + +// AuthorizationWebhook contains settings related to an authorization webhook configuration. +type AuthorizationWebhook struct { + // CacheAuthorizedTTL is the duration to cache 'authorized' responses from the webhook authorizer. + // +kubebuilder:validation:Type=string + // +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$" + // +optional + CacheAuthorizedTTL *metav1.Duration `json:"cacheAuthorizedTTL,omitempty"` + // CacheUnauthorizedTTL is the duration to cache 'unauthorized' responses from the webhook authorizer. + // +kubebuilder:validation:Type=string + // +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$" + // +optional + CacheUnauthorizedTTL *metav1.Duration `json:"cacheUnauthorizedTTL,omitempty"` + // KubeconfigSecretName specifies the name of a secret containing the kubeconfig for this webhook. + // +kubebuilder:validation:MinLength=1 + KubeconfigSecretName string `json:"kubeconfigSecretName"` + // Version is the API version to send and expect from the webhook. + // +kubebuilder:default=v1beta1 + // +kubebuilder:validation:Enum=v1beta1;v1 + // +optional + Version *string `json:"version,omitempty"` +} + +// GroupResource contains a list of resources which should be stored in etcd-events instead of etcd-main. +type GroupResource struct { + // Group is the API group name. + // +kubebuilder:validation:MinLength=1 + Group string `json:"group"` + // Resource is the resource name. + // +kubebuilder:validation:MinLength=1 + Resource string `json:"resource"` +} + +// SNI contains configuration options for the TLS SNI settings. +type SNI struct { + // SecretName is the name of a secret containing the TLS certificate and private key. + // +kubebuilder:validation:MinLength=1 + SecretName string `json:"secretName"` + // DomainPatterns is a list of fully qualified domain names, possibly with prefixed wildcard segments. The domain + // patterns also allow IP addresses, but IPs should only be used if the apiserver has visibility to the IP address + // requested by a client. If no domain patterns are provided, the names of the certificate are extracted. + // Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. + // +optional + DomainPatterns []string `json:"domainPatterns,omitempty"` +} + +// Networking defines networking parameters for the virtual garden cluster. +type Networking struct { + // Services is the CIDR of the service network. This field is immutable. + // +kubebuilder:validation:MinLength=1 + // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable" + Services string `json:"services"` +} + // GardenStatus is the status of a garden environment. type GardenStatus struct { // Gardener holds information about the Gardener which last acted on the Garden. @@ -228,10 +393,14 @@ const ( ) // AvailableOperationAnnotations is the set of available operation annotations for Garden resources. -var AvailableOperationAnnotations = sets.New[string]( +var AvailableOperationAnnotations = sets.New( v1beta1constants.GardenerOperationReconcile, v1beta1constants.OperationRotateCAStart, v1beta1constants.OperationRotateCAComplete, + v1beta1constants.OperationRotateServiceAccountKeyStart, + v1beta1constants.OperationRotateServiceAccountKeyComplete, + v1beta1constants.OperationRotateETCDEncryptionKeyStart, + v1beta1constants.OperationRotateETCDEncryptionKeyComplete, v1beta1constants.OperationRotateCredentialsStart, v1beta1constants.OperationRotateCredentialsComplete, ) diff --git a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go index a4d593dc..1c2d53df 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -23,9 +23,135 @@ package v1alpha1 import ( v1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" 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 *AuditWebhook) DeepCopyInto(out *AuditWebhook) { + *out = *in + if in.BatchMaxSize != nil { + in, out := &in.BatchMaxSize, &out.BatchMaxSize + *out = new(int32) + **out = **in + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuditWebhook. +func (in *AuditWebhook) DeepCopy() *AuditWebhook { + if in == nil { + return nil + } + out := new(AuditWebhook) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Authentication) DeepCopyInto(out *Authentication) { + *out = *in + if in.Webhook != nil { + in, out := &in.Webhook, &out.Webhook + *out = new(AuthenticationWebhook) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Authentication. +func (in *Authentication) DeepCopy() *Authentication { + if in == nil { + return nil + } + out := new(Authentication) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthenticationWebhook) DeepCopyInto(out *AuthenticationWebhook) { + *out = *in + if in.CacheTTL != nil { + in, out := &in.CacheTTL, &out.CacheTTL + *out = new(v1.Duration) + **out = **in + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthenticationWebhook. +func (in *AuthenticationWebhook) DeepCopy() *AuthenticationWebhook { + if in == nil { + return nil + } + out := new(AuthenticationWebhook) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Authorization) DeepCopyInto(out *Authorization) { + *out = *in + if in.Webhook != nil { + in, out := &in.Webhook, &out.Webhook + *out = new(AuthorizationWebhook) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Authorization. +func (in *Authorization) DeepCopy() *Authorization { + if in == nil { + return nil + } + out := new(Authorization) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthorizationWebhook) DeepCopyInto(out *AuthorizationWebhook) { + *out = *in + if in.CacheAuthorizedTTL != nil { + in, out := &in.CacheAuthorizedTTL, &out.CacheAuthorizedTTL + *out = new(v1.Duration) + **out = **in + } + if in.CacheUnauthorizedTTL != nil { + in, out := &in.CacheUnauthorizedTTL, &out.CacheUnauthorizedTTL + *out = new(v1.Duration) + **out = **in + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthorizationWebhook. +func (in *AuthorizationWebhook) DeepCopy() *AuthorizationWebhook { + if in == nil { + return nil + } + out := new(AuthorizationWebhook) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Backup) DeepCopyInto(out *Backup) { *out = *in @@ -116,6 +242,22 @@ func (in *CredentialsRotation) DeepCopy() *CredentialsRotation { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNS) DeepCopyInto(out *DNS) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNS. +func (in *DNS) DeepCopy() *DNS { + if in == nil { + return nil + } + out := new(DNS) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ETCD) DeepCopyInto(out *ETCD) { *out = *in @@ -301,6 +443,22 @@ func (in *GardenStatus) DeepCopy() *GardenStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupResource) DeepCopyInto(out *GroupResource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupResource. +func (in *GroupResource) DeepCopy() *GroupResource { + if in == nil { + return nil + } + out := new(GroupResource) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *HighAvailability) DeepCopyInto(out *HighAvailability) { *out = *in @@ -317,6 +475,73 @@ func (in *HighAvailability) DeepCopy() *HighAvailability { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KubeAPIServerConfig) DeepCopyInto(out *KubeAPIServerConfig) { + *out = *in + if in.KubeAPIServerConfig != nil { + in, out := &in.KubeAPIServerConfig, &out.KubeAPIServerConfig + *out = new(v1beta1.KubeAPIServerConfig) + (*in).DeepCopyInto(*out) + } + if in.AuditWebhook != nil { + in, out := &in.AuditWebhook, &out.AuditWebhook + *out = new(AuditWebhook) + (*in).DeepCopyInto(*out) + } + if in.Authentication != nil { + in, out := &in.Authentication, &out.Authentication + *out = new(Authentication) + (*in).DeepCopyInto(*out) + } + if in.Authorization != nil { + in, out := &in.Authorization, &out.Authorization + *out = new(Authorization) + (*in).DeepCopyInto(*out) + } + if in.ResourcesToStoreInETCDEvents != nil { + in, out := &in.ResourcesToStoreInETCDEvents, &out.ResourcesToStoreInETCDEvents + *out = make([]GroupResource, len(*in)) + copy(*out, *in) + } + if in.SNI != nil { + in, out := &in.SNI, &out.SNI + *out = new(SNI) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeAPIServerConfig. +func (in *KubeAPIServerConfig) DeepCopy() *KubeAPIServerConfig { + if in == nil { + return nil + } + out := new(KubeAPIServerConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Kubernetes) DeepCopyInto(out *Kubernetes) { + *out = *in + if in.KubeAPIServer != nil { + in, out := &in.KubeAPIServer, &out.KubeAPIServer + *out = new(KubeAPIServerConfig) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Kubernetes. +func (in *Kubernetes) DeepCopy() *Kubernetes { + if in == nil { + return nil + } + out := new(Kubernetes) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Maintenance) DeepCopyInto(out *Maintenance) { *out = *in @@ -334,6 +559,22 @@ func (in *Maintenance) DeepCopy() *Maintenance { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Networking) DeepCopyInto(out *Networking) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Networking. +func (in *Networking) DeepCopy() *Networking { + if in == nil { + return nil + } + out := new(Networking) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Provider) DeepCopyInto(out *Provider) { *out = *in @@ -377,6 +618,27 @@ func (in *RuntimeCluster) DeepCopy() *RuntimeCluster { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SNI) DeepCopyInto(out *SNI) { + *out = *in + if in.DomainPatterns != nil { + in, out := &in.DomainPatterns, &out.DomainPatterns + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SNI. +func (in *SNI) DeepCopy() *SNI { + if in == nil { + return nil + } + out := new(SNI) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SettingLoadBalancerServices) DeepCopyInto(out *SettingLoadBalancerServices) { *out = *in @@ -400,6 +662,22 @@ func (in *SettingLoadBalancerServices) DeepCopy() *SettingLoadBalancerServices { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingTopologyAwareRouting) DeepCopyInto(out *SettingTopologyAwareRouting) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingTopologyAwareRouting. +func (in *SettingTopologyAwareRouting) DeepCopy() *SettingTopologyAwareRouting { + if in == nil { + return nil + } + out := new(SettingTopologyAwareRouting) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SettingVerticalPodAutoscaler) DeepCopyInto(out *SettingVerticalPodAutoscaler) { *out = *in @@ -434,6 +712,11 @@ func (in *Settings) DeepCopyInto(out *Settings) { *out = new(SettingVerticalPodAutoscaler) (*in).DeepCopyInto(*out) } + if in.TopologyAwareRouting != nil { + in, out := &in.TopologyAwareRouting, &out.TopologyAwareRouting + *out = new(SettingTopologyAwareRouting) + **out = **in + } return } @@ -481,12 +764,15 @@ func (in *VirtualCluster) DeepCopyInto(out *VirtualCluster) { *out = new(ControlPlane) (*in).DeepCopyInto(*out) } + out.DNS = in.DNS if in.ETCD != nil { in, out := &in.ETCD, &out.ETCD *out = new(ETCD) (*in).DeepCopyInto(*out) } + in.Kubernetes.DeepCopyInto(&out.Kubernetes) out.Maintenance = in.Maintenance + out.Networking = in.Networking return } diff --git a/vendor/github.com/gardener/gardener/pkg/apis/resources/register.go b/vendor/github.com/gardener/gardener/pkg/apis/resources/register.go index 10862a1e..7408b398 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/resources/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/resources/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/doc.go index 640dbae3..9189a5f8 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/register.go index 78bc88a7..fd8578cd 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go index baa073fb..db4fe45f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/zz_generated.deepcopy.go index c97ea2d9..3cba1bd5 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/resources/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/seedmanagement/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/doc.go index 7c323f91..e1d166c6 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/encoding/encoding.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/encoding/encoding.go index 831edb52..14d95075 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/encoding/encoding.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/encoding/encoding.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/field_constants.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/field_constants.go index f9f7cff1..25a4fba1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/field_constants.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/field_constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/install/install.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/install/install.go index c8bce184..d61f55c5 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/install/install.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/install/install.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/register.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/register.go index ae284d1a..f41404b4 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseed.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseed.go index c51f4997..7761f547 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseedset.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseedset.go index d2dfc9d4..5b72b45f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseedset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/types_managedseedset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/conversions.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/conversions.go index 299dc20b..67a96296 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/conversions.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/conversions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseed.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseed.go index a1d2bd4a..013523f8 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseedset.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseedset.go index 46732646..1d61ffdd 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseedset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/defaults_managedseedset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/doc.go index 67e1e223..96ba366a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.pb.go index 226922d9..fbe07f6f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.proto index 4532a1ce..8fe94b3a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/register.go index a3a90a8b..2bc4c071 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseed.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseed.go index 9b0f9fc8..4af67b82 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseed.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseedset.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseedset.go index efa0bd00..7101579b 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseedset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/types_managedseedset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.conversion.go index eb55453a..1d340aca 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.deepcopy.go index b1e50e24..c593678a 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.defaults.go index 51c6b669..f4868849 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/seedmanagement/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/zz_generated.deepcopy.go index 9500fbf4..5a80c616 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/seedmanagement/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/settings/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/doc.go index 61b8fbc2..c8f92f2f 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/install/install.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/install/install.go index 87523ade..9ee66de1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/install/install.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/install/install.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/register.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/register.go index a8729609..8f9b7a0e 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/types_cluster_openidconnect_preset.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_cluster_openidconnect_preset.go index 45d1a77e..10097244 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/types_cluster_openidconnect_preset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_cluster_openidconnect_preset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/types_openidconnect_preset.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_openidconnect_preset.go index 5871f873..b24ff193 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/types_openidconnect_preset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_openidconnect_preset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/types_shared.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_shared.go index 8f4e7bba..75dd1a44 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/types_shared.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/types_shared.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/defaults.go index 8e91ce30..4209c0cd 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/doc.go index 348524d0..1f49dcbb 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.pb.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.pb.go index 32799ca5..53672045 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.pb.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto index 210958a0..9613ec5e 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/register.go index c783212b..f389dc29 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_cluster_openidconnect_preset.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_cluster_openidconnect_preset.go index 8422e9e7..ab3cef17 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_cluster_openidconnect_preset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_cluster_openidconnect_preset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_openidconnect_preset.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_openidconnect_preset.go index b5ae4769..afc8b938 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_openidconnect_preset.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_openidconnect_preset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go index 41689392..ebc64a88 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/types_shared.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.conversion.go index c5b4e23a..678317e7 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go index e9271028..702d4eaa 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.defaults.go index c404a374..3bd0f7a8 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/apis/settings/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/apis/settings/zz_generated.deepcopy.go index c9fa3a12..0ad85dc1 100644 --- a/vendor/github.com/gardener/gardener/pkg/apis/settings/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/apis/settings/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/chartrenderer/default.go b/vendor/github.com/gardener/gardener/pkg/chartrenderer/default.go index 945fa146..9332a82f 100644 --- a/vendor/github.com/gardener/gardener/pkg/chartrenderer/default.go +++ b/vendor/github.com/gardener/gardener/pkg/chartrenderer/default.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/chartrenderer/factory.go b/vendor/github.com/gardener/gardener/pkg/chartrenderer/factory.go index e93b44f9..bc011222 100644 --- a/vendor/github.com/gardener/gardener/pkg/chartrenderer/factory.go +++ b/vendor/github.com/gardener/gardener/pkg/chartrenderer/factory.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/chartrenderer/renderer.go b/vendor/github.com/gardener/gardener/pkg/chartrenderer/renderer.go index d53de662..d2e0f000 100644 --- a/vendor/github.com/gardener/gardener/pkg/chartrenderer/renderer.go +++ b/vendor/github.com/gardener/gardener/pkg/chartrenderer/renderer.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/client/kubernetes/applier.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/applier.go index 515e6a39..66d8971b 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/applier.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/applier.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/client/kubernetes/cache/cache.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/aggregator.go similarity index 96% rename from vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/cache.go rename to vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/aggregator.go index d183ecfb..bcd45a01 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/cache.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/aggregator.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/client/kubernetes/cache/errors.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/errors.go index 0f683b88..fc49d35c 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/errors.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/errors.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/client/kubernetes/cache/single_object.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/single_object.go new file mode 100644 index 00000000..193e78ac --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/cache/single_object.go @@ -0,0 +1,267 @@ +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// +// 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 cache + +import ( + "context" + "fmt" + "sync" + "sync/atomic" + "time" + + "github.com/go-logr/logr" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/client-go/rest" + "k8s.io/utils/clock" + "sigs.k8s.io/controller-runtime/pkg/cache" + "sigs.k8s.io/controller-runtime/pkg/client" + + "github.com/gardener/gardener/pkg/utils" +) + +var _ cache.Cache = &singleObject{} + +type singleObject struct { + parentCtx context.Context + log logr.Logger + restConfig *rest.Config + newCache cache.NewCacheFunc + opts func() cache.Options + gvk schema.GroupVersionKind + + started bool + startWait chan struct{} // startWait is a channel that is closed after the cache has been started + + lock sync.RWMutex + store map[client.ObjectKey]*objectCache + + clock clock.Clock + garbageCollectionInterval time.Duration + maxIdleTime time.Duration +} + +type objectCache struct { + cache cache.Cache + cancel context.CancelFunc + lastAccessTime atomic.Value +} + +// NewSingleObject creates a new instance of the singleObject cache.Cache implementation. +// This cache maintains a separate cache per `client.ObjectKey` and invalidates them when not accessed for the +// given `maxIdleTime`. A new cache for a particular object is added or re-added as soon as the caches `Get()` function +// is invoked. Please note that object types are not differentiated by this cache (only object keys), i.e. it must not +// be used with mixed GVKs. +func NewSingleObject( + log logr.Logger, + restConfig *rest.Config, + newCache cache.NewCacheFunc, + opts cache.Options, + gvk schema.GroupVersionKind, + clock clock.Clock, + maxIdleTime time.Duration, + garbageCollectionInterval time.Duration, +) cache.Cache { + return &singleObject{ + log: log, + restConfig: restConfig, + newCache: newCache, + opts: func() cache.Options { return opts }, + gvk: gvk, + startWait: make(chan struct{}), + store: make(map[client.ObjectKey]*objectCache), + clock: clock, + garbageCollectionInterval: garbageCollectionInterval, + maxIdleTime: maxIdleTime, + } +} + +func (s *singleObject) Start(ctx context.Context) error { + if s.parentCtx != nil { + return fmt.Errorf("the Start method cannot be called multiple times") + } + + logger := s.log.WithName("garbage-collector").WithValues("interval", s.garbageCollectionInterval, "maxIdleTime", s.maxIdleTime) + logger.V(1).Info("Starting") + + s.parentCtx = ctx + s.started = true + close(s.startWait) + + wait.Until(func() { + s.lock.Lock() + defer s.lock.Unlock() + + for key, objCache := range s.store { + var ( + lastAccessTime, ok = (objCache.lastAccessTime.Load()).(*time.Time) + now = s.clock.Now().UTC() + log = logger.WithValues( + "key", key, + "now", now, + "lastAccessTime", utils.TimePtrDeref(lastAccessTime, time.Time{}), + ) + ) + + if !ok || lastAccessTime == nil || !now.After(lastAccessTime.Add(s.maxIdleTime)) { + log.V(1).Info("Cache was accessed recently, no need to close it") + continue + } + + // close cache for object because it was not accessed for at least the max idle time + log.V(1).Info("Cache was not accessed recently, closing it") + objCache.cancel() + delete(s.store, key) + } + }, s.garbageCollectionInterval, ctx.Done()) + + logger.V(1).Info("Stopping") + return nil +} + +func (s *singleObject) Get(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error { + cache, err := s.getOrCreateCache(key) + if err != nil { + return err + } + return cache.Get(ctx, key, obj, opts...) +} + +func (s *singleObject) GetInformer(ctx context.Context, obj client.Object) (cache.Informer, error) { + cache, err := s.getOrCreateCache(client.ObjectKeyFromObject(obj)) + if err != nil { + return nil, err + } + return cache.GetInformer(ctx, obj) +} + +func (s *singleObject) IndexField(ctx context.Context, obj client.Object, field string, extractValue client.IndexerFunc) error { + cache, err := s.getOrCreateCache(client.ObjectKeyFromObject(obj)) + if err != nil { + return err + } + return cache.IndexField(ctx, obj, field, extractValue) +} + +func (s *singleObject) getOrCreateCache(key client.ObjectKey) (cache.Cache, error) { + if !s.started { + return nil, &cache.ErrCacheNotStarted{} + } + + log := s.log.WithValues("key", key) + + cache, found := func() (*objectCache, bool) { + s.lock.RLock() + defer s.lock.RUnlock() + cache, found := s.store[key] + return cache, found + }() + + if !found { + log.V(1).Info("Cache not found, creating it") + + var err error + cache, err = s.createAndStartCache(log, key) + if err != nil { + return nil, err + } + } else { + log.V(1).Info("Cache found, accessing it") + } + + now := s.clock.Now().UTC() + cache.lastAccessTime.Store(&now) + log.V(1).Info("Cache was accessed, renewing last access time", "lastAccessTime", now) + + return cache.cache, nil +} + +func (s *singleObject) createAndStartCache(log logr.Logger, key client.ObjectKey) (*objectCache, error) { + s.lock.Lock() + defer s.lock.Unlock() + + // Cache could have been created since last read lock was set, so we need to check again if the cache is available. + if objCache, ok := s.store[key]; ok { + log.V(1).Info("Cache created mid-air, no need to create it again") + return objCache, nil + } + + opts := s.opts() + opts.Namespace = key.Namespace + opts.DefaultSelector = cache.ObjectSelector{Field: fields.SelectorFromSet(fields.Set{metav1.ObjectNameField: key.Name})} + opts.SelectorsByObject = nil + + log.V(1).Info("Creating new cache") + cache, err := s.newCache(s.restConfig, opts) + if err != nil { + return nil, fmt.Errorf("failed creating new cache: %w", err) + } + + cacheCtx, cancel := context.WithCancel(s.parentCtx) + + go func() { + log.V(1).Info("Starting new cache") + if err := cache.Start(cacheCtx); err != nil { + log.Error(err, "Cache failed to start") + } + }() + + waitForSyncCtx, waitForSyncCancel := context.WithTimeout(s.parentCtx, 5*time.Second) + defer waitForSyncCancel() + + log.V(1).Info("Waiting for cache to be synced") + if !cache.WaitForCacheSync(waitForSyncCtx) { + cancel() + return nil, fmt.Errorf("failed waiting for cache to be synced") + } + + // The controller-runtime starts informers (which start the real WATCH on the API servers) only lazily with the + // first call on the cache. Hence, after we have started the cache above and waited for its sync, in fact no + // informer was started yet. + // Hence, when we newly start a cache here, we need to perform a call on such cache to make it starting the + // underlying informer. This is blocking because it implicitly waits for this informer to be synced. That's why we + // use a context with a small timeout, especially to exit early in case of any permission errors. + if _, err := cache.GetInformerForKind(waitForSyncCtx, s.gvk); err != nil { + cancel() + return nil, fmt.Errorf("failed getting informer: %w", err) + } + + log.V(1).Info("Cache was synced successfully") + s.store[key] = &objectCache{ + cache: cache, + cancel: cancel, + } + + return s.store[key], nil +} + +func (s *singleObject) WaitForCacheSync(ctx context.Context) bool { + select { + case <-s.startWait: + return true + case <-ctx.Done(): + return false + } +} + +func (s *singleObject) List(_ context.Context, _ client.ObjectList, _ ...client.ListOption) error { + return fmt.Errorf("the List operation is not supported by singleObject cache") +} + +func (s *singleObject) GetInformerForKind(_ context.Context, _ schema.GroupVersionKind) (cache.Informer, error) { + return nil, fmt.Errorf("the GetInformerForKind operation is not supported by singleObject cache") +} diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartapplier.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartapplier.go index d97b16f1..e8c0f910 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartapplier.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartapplier.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/client/kubernetes/chartoptions.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartoptions.go index d07b6e2a..f9e035c2 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartoptions.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartoptions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/client/kubernetes/client.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/client.go index 75e7b5d9..965b82fd 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/client.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -37,7 +37,6 @@ import ( settingsinstall "github.com/gardener/gardener/pkg/apis/settings/install" kubernetescache "github.com/gardener/gardener/pkg/client/kubernetes/cache" "github.com/gardener/gardener/pkg/utils" - versionutils "github.com/gardener/gardener/pkg/utils/version" ) const ( @@ -232,30 +231,6 @@ func ValidateConfigWithAllowList(config clientcmdapi.Config, allowedFields []str return nil } -var supportedKubernetesVersions = []string{ - "1.20", - "1.21", - "1.22", - "1.23", - "1.24", - "1.25", - "1.26", -} - -func checkIfSupportedKubernetesVersion(gitVersion string) error { - for _, supportedVersion := range supportedKubernetesVersions { - ok, err := versionutils.CompareVersions(gitVersion, "~", supportedVersion) - if err != nil { - return err - } - - if ok { - return nil - } - } - return fmt.Errorf("unsupported kubernetes version %q", gitVersion) -} - // NewWithConfig returns a new Kubernetes base client. func NewWithConfig(fns ...ConfigFunc) (Interface, error) { conf := &Config{} diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/clientset.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/clientset.go index d7297949..44827a19 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/clientset.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/clientset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ import ( logf "sigs.k8s.io/controller-runtime/pkg/log" "github.com/gardener/gardener/pkg/chartrenderer" + "github.com/gardener/gardener/pkg/utils/validation/kubernetesversion" ) // clientSet is a struct containing the configuration for the respective Kubernetes @@ -118,7 +119,7 @@ func (c *clientSet) DiscoverVersion() (*version.Info, error) { return nil, err } - if err := checkIfSupportedKubernetesVersion(serverVersion.GitVersion); err != nil { + if err := kubernetesversion.CheckIfSupported(serverVersion.GitVersion); err != nil { return nil, err } diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/deployments.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/deployments.go index f6d87403..19c3b978 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/deployments.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/deployments.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/client/kubernetes/manifestoptions.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/manifestoptions.go index 3e73cb74..92782eb6 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/manifestoptions.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/manifestoptions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/client/kubernetes/options.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/options.go index c924bbde..2900cb20 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/options.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/client/kubernetes/pods.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/pods.go index ff478432..178ebca9 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/pods.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/pods.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/client/kubernetes/runtime_client.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/runtime_client.go index 55dd3e80..aacabe79 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/runtime_client.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/runtime_client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,10 +18,12 @@ import ( "fmt" "time" + "github.com/go-logr/logr" "golang.org/x/time/rate" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/rest" + "k8s.io/utils/clock" "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" @@ -34,6 +36,24 @@ const ( defaultCacheResyncPeriod = 6 * time.Hour ) +// NewRuntimeCache creates a new cache.Cache with the given config and options. It can be used +// for creating new controller-runtime clients with caches. +func NewRuntimeCache(config *rest.Config, options cache.Options) (cache.Cache, error) { + if err := setCacheOptionsDefaults(&options); err != nil { + return nil, err + } + + return cache.New(config, options) +} + +func setCacheOptionsDefaults(options *cache.Options) error { + if options.Resync == nil { + options.Resync = pointer.Duration(defaultCacheResyncPeriod) + } + + return nil +} + func setClientOptionsDefaults(config *rest.Config, options *client.Options) error { if options.Mapper == nil { // default the client's REST mapper to a dynamic REST mapper (automatically rediscovers resources on NoMatchErrors) @@ -82,20 +102,18 @@ func AggregatorCacheFunc(newCache cache.NewCacheFunc, typeToNewCache map[client. } } -// NewRuntimeCache creates a new cache.Cache with the given config and options. It can be used -// for creating new controller-runtime clients with caches. -func NewRuntimeCache(config *rest.Config, options cache.Options) (cache.Cache, error) { - if err := setCacheOptionsDefaults(&options); err != nil { - return nil, err - } +// SingleObjectCacheFunc returns a cache.NewCacheFunc for the SingleObject implementation. +func SingleObjectCacheFunc(log logr.Logger, scheme *runtime.Scheme, obj client.Object) cache.NewCacheFunc { + return func(restConfig *rest.Config, options cache.Options) (cache.Cache, error) { + gvk, err := apiutil.GVKForObject(obj, scheme) + if err != nil { + return nil, err + } - return cache.New(config, options) -} + logger := log. + WithName("single-object-cache"). + WithValues("groupVersion", gvk.GroupVersion().String(), "kind", gvk.Kind) -func setCacheOptionsDefaults(options *cache.Options) error { - if options.Resync == nil { - options.Resync = pointer.Duration(defaultCacheResyncPeriod) + return kubernetescache.NewSingleObject(logger, restConfig, cache.New, options, gvk, clock.RealClock{}, 10*time.Minute, time.Minute), nil } - - return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/scaling.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/scaling.go index 615f4ace..38df6a52 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/scaling.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/scaling.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/client/kubernetes/types.go b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/types.go index ee8961e3..9a3bc2a9 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/types.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import ( druidv1alpha1 "github.com/gardener/etcd-druid/api/v1alpha1" hvpav1alpha1 "github.com/gardener/hvpa-controller/api/v1alpha1" machinev1alpha1 "github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1" - volumesnapshotv1beta1 "github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1" + volumesnapshotv1 "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1" istionetworkingv1alpha3 "istio.io/client-go/pkg/apis/networking/v1alpha3" istionetworkingv1beta1 "istio.io/client-go/pkg/apis/networking/v1beta1" apiextensionsscheme "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme" @@ -122,7 +122,7 @@ var ( apiregistrationscheme.AddToScheme, vpaautoscalingv1.AddToScheme, metricsv1beta1.AddToScheme, - volumesnapshotv1beta1.AddToScheme, + volumesnapshotv1.AddToScheme, ) ) diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/associations.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/associations.go index f18e216f..8df15673 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/associations.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/associations.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import ( "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" "github.com/gardener/gardener/pkg/apis/core" @@ -50,7 +51,7 @@ func DetermineShootsAssociatedTo(ctx context.Context, gardenClient client.Reader } case *gardencorev1beta1.SecretBinding: binding := obj.(*gardencorev1beta1.SecretBinding) - if shoot.Spec.SecretBindingName == binding.Name && shoot.Namespace == binding.Namespace { + if pointer.StringDeref(shoot.Spec.SecretBindingName, "") == binding.Name && shoot.Namespace == binding.Namespace { associatedShoots = append(associatedShoots, fmt.Sprintf("%s/%s", shoot.Namespace, shoot.Name)) } case *gardencorev1beta1.ExposureClass: diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/eventhandler.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/eventhandler.go index 5a382bae..511a5d35 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/eventhandler.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/eventhandler.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/controllerutils/finalizers.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/finalizers.go index 87f3ca8c..f83e0bb8 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/finalizers.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/finalizers.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/controllerutils/miscellaneous.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/miscellaneous.go index d42ff549..56da039b 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/miscellaneous.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/miscellaneous.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ package controllerutils import ( + "context" "strings" "time" @@ -27,6 +28,9 @@ import ( "github.com/gardener/gardener/pkg/utils" ) +// DefaultReconciliationTimeout is the default timeout for the context of reconciliation functions. +const DefaultReconciliationTimeout = 1 * time.Minute + const separator = "," // GetTasks returns the list of tasks in the ShootTasks annotation. @@ -124,3 +128,25 @@ func ReconcileOncePer24hDuration(clock clock.Clock, objectMeta metav1.ObjectMeta return 0 } + +// GetMainReconciliationContext returns a context with timeout for the controller's main client. The resulting context has a timeout equal to the timeout passed in the argument but +// not more than DefaultReconciliationTimeout. +func GetMainReconciliationContext(ctx context.Context, timeout time.Duration) (context.Context, context.CancelFunc) { + t := timeout + if timeout > DefaultReconciliationTimeout { + t = DefaultReconciliationTimeout + } + + return context.WithTimeout(ctx, t) +} + +// GetChildReconciliationContext returns context with timeout for the controller's secondary client. The resulting context has a timeout equal to half of the timeout +// for the controller's main client. +func GetChildReconciliationContext(ctx context.Context, timeout time.Duration) (context.Context, context.CancelFunc) { + t := timeout + if timeout > DefaultReconciliationTimeout { + t = DefaultReconciliationTimeout + } + + return context.WithTimeout(ctx, t/2) +} diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go index ccf577fe..28013501 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/controllerutils/reconciler/operation_annotation_wrapper.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/operation_annotation_wrapper.go index 68e7fa6f..4a62c73a 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/operation_annotation_wrapper.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/operation_annotation_wrapper.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/controllerutils/reconciler/reconcile.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/reconcile.go index 88af92bd..3c75a01d 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/reconcile.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/reconcile.go @@ -1,4 +1,4 @@ -// Copyright (c) 2011 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2011 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/controllerutils/reconciler/requeue.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/requeue.go index 988a8e64..c121da93 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/requeue.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/requeue.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/controllerutils/runner.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/runner.go index 68f8424b..b03cc6b7 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/runner.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/runner.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/controllerutils/source.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/source.go index 37490120..f486d588 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/source.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/source.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/controllerutils/update.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/update.go index 628d1cf4..0c6131f0 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/update.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/update.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/extensions/cluster.go b/vendor/github.com/gardener/gardener/pkg/extensions/cluster.go index 38347fc6..f186d23f 100644 --- a/vendor/github.com/gardener/gardener/pkg/extensions/cluster.go +++ b/vendor/github.com/gardener/gardener/pkg/extensions/cluster.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/extensions/constants.go b/vendor/github.com/gardener/gardener/pkg/extensions/constants.go index 3f6f29d8..cf27ff81 100644 --- a/vendor/github.com/gardener/gardener/pkg/extensions/constants.go +++ b/vendor/github.com/gardener/gardener/pkg/extensions/constants.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/extensions/customresources.go b/vendor/github.com/gardener/gardener/pkg/extensions/customresources.go index 9e1fb6c2..16989e1a 100644 --- a/vendor/github.com/gardener/gardener/pkg/extensions/customresources.go +++ b/vendor/github.com/gardener/gardener/pkg/extensions/customresources.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -123,9 +123,9 @@ func WaitUntilObjectReadyWithHealthFunction( }); err != nil { message := fmt.Sprintf("Error while waiting for %s to become ready", extensionKey(kind, namespace, name)) if lastObservedError != nil { - return v1beta1helper.NewErrorWithCodes(fmt.Errorf("%s: %w", message, lastObservedError), v1beta1helper.DeprecatedDetermineErrorCodes(lastObservedError)...) + return fmt.Errorf("%s: %w", message, lastObservedError) } - return v1beta1helper.NewErrorWithCodes(fmt.Errorf("%s: %w", message, err), v1beta1helper.DeprecatedDetermineErrorCodes(err)...) + return fmt.Errorf("%s: %w", message, err) } return nil @@ -235,9 +235,9 @@ func WaitUntilExtensionObjectDeleted( }); err != nil { message := fmt.Sprintf("Failed to delete %s", extensionKey(kind, namespace, name)) if lastObservedError != nil { - return v1beta1helper.NewErrorWithCodes(fmt.Errorf("%s: %w", message, lastObservedError), v1beta1helper.DeprecatedDetermineErrorCodes(lastObservedError)...) + return fmt.Errorf("%s: %w", message, lastObservedError) } - return v1beta1helper.NewErrorWithCodes(fmt.Errorf("%s: %w", message, err), v1beta1helper.DeprecatedDetermineErrorCodes(err)...) + return fmt.Errorf("%s: %w", message, err) } return nil @@ -284,7 +284,7 @@ func RestoreExtensionObjectState( extensionStatus.SetResources(extensionResourceState.Resources) if err := c.Status().Patch(ctx, extensionObj, patch); err != nil { - return v1beta1helper.NewErrorWithCodes(err, v1beta1helper.DeprecatedDetermineErrorCodes(err)...) + return err } for _, r := range extensionResourceState.Resources { @@ -299,10 +299,10 @@ func RestoreExtensionObjectState( if resourceData != nil { obj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&resourceData.Data) if err != nil { - return v1beta1helper.DeprecatedDetermineError(err) + return err } if err := unstructuredutils.CreateOrPatchObjectByRef(ctx, c, &resourceRef, extensionObj.GetNamespace(), obj); err != nil { - return v1beta1helper.DeprecatedDetermineError(err) + return err } } } @@ -338,7 +338,7 @@ func MigrateExtensionObjects( return err } - return v1beta1helper.DeprecatedDetermineError(flow.Parallel(fns...)(ctx)) + return flow.Parallel(fns...)(ctx) } // WaitUntilExtensionObjectMigrated waits until the migrate operation for the extension object is successful. @@ -352,7 +352,7 @@ func WaitUntilExtensionObjectMigrated( interval time.Duration, timeout time.Duration, ) error { - if err := retry.UntilTimeout(ctx, interval, timeout, func(ctx context.Context) (done bool, err error) { + return retry.UntilTimeout(ctx, interval, timeout, func(ctx context.Context) (done bool, err error) { if err := c.Get(ctx, client.ObjectKeyFromObject(obj), obj); err != nil { if client.IgnoreNotFound(err) == nil { return retry.Ok() @@ -369,10 +369,7 @@ func WaitUntilExtensionObjectMigrated( } return retry.MinorError(fmt.Errorf("error while waiting for %s to be successfully migrated", extensionKey(kind, obj.GetNamespace(), obj.GetName()))) - }); err != nil { - return v1beta1helper.DeprecatedDetermineError(err) - } - return nil + }) } // WaitUntilExtensionObjectsMigrated lists all extension objects of a given kind and waits until they are migrated. @@ -395,14 +392,14 @@ func WaitUntilExtensionObjectsMigrated( return err } - return v1beta1helper.DeprecatedDetermineError(flow.Parallel(fns...)(ctx)) + return flow.Parallel(fns...)(ctx) } // AnnotateObjectWithOperation annotates the object with the provided operation annotation value. func AnnotateObjectWithOperation(ctx context.Context, w client.Writer, obj client.Object, operation string) error { patch := client.MergeFrom(obj.DeepCopyObject().(client.Object)) kubernetesutils.SetMetaDataAnnotation(obj, v1beta1constants.GardenerOperation, operation) - kubernetesutils.SetMetaDataAnnotation(obj, v1beta1constants.GardenerTimestamp, TimeNow().UTC().String()) + kubernetesutils.SetMetaDataAnnotation(obj, v1beta1constants.GardenerTimestamp, TimeNow().UTC().Format(time.RFC3339Nano)) return w.Patch(ctx, obj, patch) } diff --git a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/doc.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/doc.go index 3e61bbf7..7fdba1b7 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/gardenlet/apis/config/register.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/register.go index cd4aa54f..0a6599b2 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/register.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go index c21609e6..b3568cbb 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/conversions.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/conversions.go index fcd4a62a..3f2d218e 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/conversions.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/conversions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go index a3a28879..5c8cd180 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/defaults.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/doc.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/doc.go index fa831411..5e71867f 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/doc.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/register.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/register.go index 0a27ae86..69541a56 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/register.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/register.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go index 256a31df..711836d8 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go index 6d5b48dc..b89f442b 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.conversion.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go index a17e1db5..4d4d297a 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go index 21b1a363..a100c42b 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/v1alpha1/zz_generated.defaults.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go index 0e7087b5..6c3a141b 100644 --- a/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/gardener/pkg/gardenlet/apis/config/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright (c) SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +Copyright SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file 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/github.com/gardener/gardener/pkg/logger/types.go b/vendor/github.com/gardener/gardener/pkg/logger/types.go index b265e231..84218458 100644 --- a/vendor/github.com/gardener/gardener/pkg/logger/types.go +++ b/vendor/github.com/gardener/gardener/pkg/logger/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/logger/zap.go b/vendor/github.com/gardener/gardener/pkg/logger/zap.go index fccdbd25..a9d70e44 100644 --- a/vendor/github.com/gardener/gardener/pkg/logger/zap.go +++ b/vendor/github.com/gardener/gardener/pkg/logger/zap.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/references.go b/vendor/github.com/gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/references.go index 9820de32..836feb2f 100644 --- a/vendor/github.com/gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/references.go +++ b/vendor/github.com/gardener/gardener/pkg/resourcemanager/controller/garbagecollector/references/references.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/checksums.go b/vendor/github.com/gardener/gardener/pkg/utils/checksums.go index e6e69d19..d91a7e39 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/checksums.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/checksums.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/context/context.go b/vendor/github.com/gardener/gardener/pkg/utils/context/context.go index 0d339bdc..900a8dd9 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/context/context.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/context/context.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/context/types.go b/vendor/github.com/gardener/gardener/pkg/utils/context/types.go index ad7ddf07..7d1b330b 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/context/types.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/context/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/encoding.go b/vendor/github.com/gardener/gardener/pkg/utils/encoding.go index ca69bc73..36ecfa83 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/encoding.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/encoding.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/errors/errors.go b/vendor/github.com/gardener/gardener/pkg/utils/errors/errors.go index 5ed337c7..a1f54f51 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/errors/errors.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/errors/errors.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -159,23 +159,6 @@ func (e *ErrorContext) HasLastErrorWithID(errorID string) bool { return false } -type cancelError struct{} - -func (*cancelError) Error() string { - return "Canceled" -} - -// Cancel returns an error which will cause the HandleErrors function to stop executing tasks without triggering its FailureHandler. -func Cancel() error { - return &cancelError{} -} - -// WasCanceled checks to see if the HandleErrors function was canceled manually. It can be used to check if execution after HandleErrors should be stopped without returning an error -func WasCanceled(err error) bool { - _, ok := err.(*cancelError) - return ok -} - // FailureHandler is a function which is called when an error occurs type FailureHandler func(string, error) error @@ -218,15 +201,12 @@ func ToExecute(errorID string, task func() error) TaskFunc { func HandleErrors(errorContext *ErrorContext, onSuccess SuccessHandler, onFailure FailureHandler, tasks ...TaskFunc) error { for _, task := range tasks { errorID, err := task.Do(errorContext) - if err != nil && !WasCanceled(err) { + if err != nil { return handleFailure(onFailure, errorID, err) } if handlerErr := handleSuccess(errorContext, onSuccess, errorID); handlerErr != nil { return handlerErr } - if WasCanceled(err) { - return err - } } return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/errors/multierror.go b/vendor/github.com/gardener/gardener/pkg/utils/errors/multierror.go index 69e94553..c9d64a61 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/errors/multierror.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/errors/multierror.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/errors/unwrap.go b/vendor/github.com/gardener/gardener/pkg/utils/errors/unwrap.go index dca9d510..d79b43d4 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/errors/unwrap.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/errors/unwrap.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/flow/flow.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/flow.go index 0f70edb2..935d3ab9 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/flow.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/flow.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/flow/graph.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/graph.go index 8dc29204..8d757dce 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/graph.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/graph.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/flow/progress_reporter.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter.go index 4acdc8d3..027f1586 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_delaying.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_delaying.go index a4e7249c..6d4bb074 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_delaying.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_delaying.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_immediate.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_immediate.go index d3f293d0..cf6340c0 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_immediate.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/progress_reporter_immediate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/flow/taskfn.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/taskfn.go index b841d859..60288f05 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/taskfn.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/taskfn.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/flow/taskid.go b/vendor/github.com/gardener/gardener/pkg/utils/flow/taskid.go index e786fa82..d8d3dcc4 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/flow/taskid.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/flow/taskid.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/gardener/backupentry.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/backupentry.go index 4483b5a7..c2c4abed 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/backupentry.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/backupentry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/gardener/controllerinstallation.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/controllerinstallation.go index 1c0dd653..088a50f8 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/controllerinstallation.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/controllerinstallation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/gardener/deletion_confirmation.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/deletion_confirmation.go index ad046f71..5037f54a 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/deletion_confirmation.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/deletion_confirmation.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -58,7 +58,7 @@ func CheckIfDeletionIsConfirmed(obj client.Object) error { func ConfirmDeletion(ctx context.Context, w client.Writer, obj client.Object) error { patch := client.MergeFrom(obj.DeepCopyObject().(client.Object)) kubernetesutils.SetMetaDataAnnotation(obj, ConfirmationDeletion, "true") - kubernetesutils.SetMetaDataAnnotation(obj, v1beta1constants.GardenerTimestamp, TimeNow().UTC().String()) + kubernetesutils.SetMetaDataAnnotation(obj, v1beta1constants.GardenerTimestamp, TimeNow().UTC().Format(time.RFC3339Nano)) return w.Patch(ctx, obj, patch) } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/dns.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/dns.go index 441df2df..9868a628 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/dns.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/dns.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/gardener/exposureclass.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/exposureclass.go index 98689ac6..92c4df1e 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/exposureclass.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/exposureclass.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/gardener/garden.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go index 4faea822..777e611d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/garden.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/gardener/identity.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/identity.go index e405752d..3d336dbc 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/identity.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/identity.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/gardener/migration.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/migration.go index 82eaaf8a..1a9505bb 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/migration.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/migration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/gardener/networkpolicy.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/networkpolicy.go index f6dbaa43..b948b5f8 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/networkpolicy.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/networkpolicy.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -30,12 +30,26 @@ import ( // `networking.resources.gardener.cloud/from-policy-allowed-ports` annotation of the given service. In addition, it adds // the well-known annotation for scrape targets of Prometheus in shoot namespaces. func InjectNetworkPolicyAnnotationsForScrapeTargets(service *corev1.Service, ports ...networkingv1.NetworkPolicyPort) error { + return injectNetworkPolicyAnnotationsForScrapeTargets(service, v1beta1constants.LabelNetworkPolicyScrapeTargets, ports...) +} + +// InjectNetworkPolicyAnnotationsForSeedScrapeTargets injects the provided ports into the +// `networking.resources.gardener.cloud/from-policy-allowed-ports` annotation of the given service. In addition, it adds +// the well-known annotation for scrape targets of the Prometheis in the garden namespace. +func InjectNetworkPolicyAnnotationsForSeedScrapeTargets(service *corev1.Service, ports ...networkingv1.NetworkPolicyPort) error { + return injectNetworkPolicyAnnotationsForScrapeTargets(service, v1beta1constants.LabelNetworkPolicySeedScrapeTargets, ports...) +} + +// InjectNetworkPolicyAnnotationsForScrapeTargets injects the provided ports into the +// `networking.resources.gardener.cloud/from-policy-allowed-ports` annotation of the given service. In addition, it adds +// the annotation for scrape targets based on the provided label selector. +func injectNetworkPolicyAnnotationsForScrapeTargets(service *corev1.Service, podLabelSelector string, ports ...networkingv1.NetworkPolicyPort) error { rawPorts, err := json.Marshal(ports) if err != nil { return err } - metav1.SetMetaDataAnnotation(&service.ObjectMeta, resourcesv1alpha1.NetworkingFromPolicyPodLabelSelector, v1beta1constants.LabelNetworkPolicyScrapeTargets) + metav1.SetMetaDataAnnotation(&service.ObjectMeta, resourcesv1alpha1.NetworkingFromPolicyPodLabelSelector, podLabelSelector) metav1.SetMetaDataAnnotation(&service.ObjectMeta, resourcesv1alpha1.NetworkingFromPolicyAllowedPorts, string(rawPorts)) return nil } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/project.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/project.go index a222bc31..ca94e228 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/project.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/project.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/gardener/secrets.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/secrets.go index aa144fff..287301db 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/secrets.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/secrets.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/gardener/seed.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/seed.go index 971f0bb4..2e9d915f 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/seed.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/seed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,11 +23,14 @@ import ( certificatesv1 "k8s.io/api/certificates/v1" corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/meta" "sigs.k8s.io/controller-runtime/pkg/client" gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper" + operatorv1alpha1 "github.com/gardener/gardener/pkg/apis/operator/v1alpha1" + kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes" "github.com/gardener/gardener/pkg/utils/version" ) @@ -147,3 +150,15 @@ func GetWildcardCertificate(ctx context.Context, c client.Client) (*corev1.Secre } return nil, nil } + +// SeedIsGarden returns 'true' if the cluster is registered as a Garden cluster. +func SeedIsGarden(ctx context.Context, seedClient client.Client) (bool, error) { + seedIsGarden, err := kubernetesutils.ResourcesExist(ctx, seedClient, operatorv1alpha1.SchemeGroupVersion.WithKind("GardenList")) + if err != nil { + if !meta.IsNoMatchError(err) { + return false, err + } + seedIsGarden = false + } + return seedIsGarden, nil +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go index 109356e6..6ebc63b4 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -587,6 +587,9 @@ func ConstructExternalDomain(ctx context.Context, c client.Reader, shoot *garden } externalDomain.SecretData = secret.Data } else { + if shootSecret == nil { + return nil, fmt.Errorf("default domain is not present, secret for primary dns provider is required") + } externalDomain.SecretData = shootSecret.Data } if primaryProvider.Type != nil { @@ -627,7 +630,9 @@ func ComputeRequiredExtensions(shoot *gardencorev1beta1.Shoot, seed *gardencorev requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.ControlPlaneResource, shoot.Spec.Provider.Type)) requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.InfrastructureResource, shoot.Spec.Provider.Type)) - requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.NetworkResource, shoot.Spec.Networking.Type)) + if shoot.Spec.Networking != nil && shoot.Spec.Networking.Type != nil { + requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.NetworkResource, *shoot.Spec.Networking.Type)) + } requiredExtensions.Insert(ExtensionsID(extensionsv1alpha1.WorkerResource, shoot.Spec.Provider.Type)) disabledExtensions := utilsets.New[string]() diff --git a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go index 62c17a56..2b730aa3 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/shoot_status.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go b/vendor/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go index 6b384485..e9ac4e90 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/gardener/topology_aware_routing.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/admissionplugins.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/admissionplugins.go index 63cc6d4d..74513759 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/admissionplugins.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/admissionplugins.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/daemonset.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/daemonset.go index 0e8b65fc..7138978c 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/daemonset.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/daemonset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/deployment.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/deployment.go index b5fab0ed..c28c363e 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/deployment.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/deployment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/and.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/and.go index b41efa23..3d1ac969 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/and.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/and.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/apiservice.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/apiservice.go index 208acceb..208b100e 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/apiservice.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/apiservice.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/customresourcedefinition.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/customresourcedefinition.go index 3a1487e1..398e908a 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/customresourcedefinition.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/customresourcedefinition.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/daemonset.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/daemonset.go index d567c80c..57725970 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/daemonset.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/daemonset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/deployment.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/deployment.go index 5d177625..9981fe96 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/deployment.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/deployment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/etcd.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/etcd.go index 5eda979a..1b2c6bba 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/etcd.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/etcd.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/extensions.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/extensions.go index 91449d81..249d7707 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/extensions.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/extensions.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/health.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/health.go index 2bcc84a0..4a742087 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/health.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/health.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/healthz.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/healthz.go index 650c2f01..c57c142d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/healthz.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/healthz.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/job.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/job.go index 1c3aaf7c..cb61342f 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/job.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/job.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedresource.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedresource.go index 807867f4..3ca6e694 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedresource.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedresource.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedseed.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedseed.go index b8adb7fc..86c0d4c2 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedseed.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/managedseed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/node.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/node.go index 03b91d1f..ae32b373 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/node.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/node.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/pod.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/pod.go index bd81f9db..f86ea7b5 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/pod.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/pod.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicaset.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicaset.go index b64ed095..570dfa74 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicaset.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicaset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicationcontroller.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicationcontroller.go index 8068d23d..b152257d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicationcontroller.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/replicationcontroller.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/seed.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/seed.go index f2690730..8d48e47a 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/seed.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/seed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/service.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/service.go index 4fa1ef57..8efc8254 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/service.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/service.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/health/statefulset.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/statefulset.go index 73e5a79e..470a5151 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/statefulset.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/health/statefulset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/highavailability.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/highavailability.go index 201d466c..a2f15073 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/highavailability.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/highavailability.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -93,6 +93,7 @@ func GetTopologySpreadConstraints( topologySpreadConstraints = append(topologySpreadConstraints, corev1.TopologySpreadConstraint{ TopologyKey: corev1.LabelTopologyZone, + MinDomains: minDomains(numberOfZones, maxReplicas), MaxSkew: maxSkew, WhenUnsatisfiable: corev1.DoNotSchedule, LabelSelector: &labelSelector, @@ -101,3 +102,14 @@ func GetTopologySpreadConstraints( return topologySpreadConstraints } + +func minDomains(numberOfZones, maxReplicas int32) *int32 { + // If the maximum replica count is lower than the number of zones, then we only need to set 'minDomains' to + // the number of replicas because there is no benefit of enforcing a further zone spread for additional replicas, + // e.g. when a rolling update is performed. + if maxReplicas < numberOfZones { + return pointer.Int32(maxReplicas) + } + // Return the number of zones otherwise because it's not possible to spread pods over more zones than there are available. + return pointer.Int32(numberOfZones) +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/kubernetes.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/kubernetes.go index 02ad29a6..939fc61d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/kubernetes.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/kubernetes.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/leaderelection.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/leaderelection.go index dd93b3c0..92320bd4 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/leaderelection.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/leaderelection.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/managedseed.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/managedseed.go index 7ef86012..afda58bf 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/managedseed.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/managedseed.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/node.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/node.go index b881c3a4..b305066d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/node.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/node.go @@ -1,4 +1,4 @@ -// Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/object.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/object.go index 5d139784..148eab9f 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/object.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/object.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/secretref.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/secretref.go index 0c07aae3..ef201cfb 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/secretref.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/secretref.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/service.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/service.go index 211f9a57..9b6e5613 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/service.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/service.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,12 +20,17 @@ import ( "github.com/gardener/gardener/pkg/apis/core/v1beta1" ) +// FQDNForService returns the fully qualified domain name of a service with the given name and namespace. +func FQDNForService(name, namespace string) string { + return fmt.Sprintf("%s.%s.svc.%s", name, namespace, v1beta1.DefaultDomain) +} + // DNSNamesForService returns the possible DNS names for a service with the given name and namespace. func DNSNamesForService(name, namespace string) []string { return []string{ name, fmt.Sprintf("%s.%s", name, namespace), fmt.Sprintf("%s.%s.svc", name, namespace), - fmt.Sprintf("%s.%s.svc.%s", name, namespace, v1beta1.DefaultDomain), + FQDNForService(name, namespace), } } diff --git a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/sorter.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/sorter.go index 26aeb9b1..8112843d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/sorter.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/sorter.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/statefulset.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/statefulset.go index a8c04a28..3d7fb382 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/statefulset.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/statefulset.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/tls_cipher_suites.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/tls_cipher_suites.go index 2013b394..b77e3707 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/tls_cipher_suites.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/tls_cipher_suites.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/kubernetes/unstructured/object.go b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/unstructured/object.go index f8fedb5c..8f8fe1a8 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/unstructured/object.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/unstructured/object.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/labels.go b/vendor/github.com/gardener/gardener/pkg/utils/labels.go index e1085a3d..76daf077 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/labels.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/labels.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/miscellaneous.go b/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go index 93a3f4fc..84a80d1d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -141,6 +141,20 @@ func ProtocolPtr(protocol corev1.Protocol) *corev1.Protocol { return &protocol } +// TimePtr returns a time.Time pointer to its argument. +func TimePtr(t time.Time) *time.Time { + return &t +} + +// TimePtrDeref dereferences the time.Time ptr and returns it if not nil, or else +// returns def. +func TimePtrDeref(ptr *time.Time, def time.Time) time.Time { + if ptr != nil { + return *ptr + } + return def +} + // IntStrPtrFromInt returns an intstr.IntOrString pointer to its argument. func IntStrPtrFromInt(port int) *intstr.IntOrString { v := intstr.FromInt(port) diff --git a/vendor/github.com/gardener/gardener/pkg/utils/random.go b/vendor/github.com/gardener/gardener/pkg/utils/random.go index f676f52e..1da80435 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/random.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/random.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/retry/alias.go b/vendor/github.com/gardener/gardener/pkg/utils/retry/alias.go index 471a3b2b..faa025e8 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/retry/alias.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/retry/alias.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/retry/error.go b/vendor/github.com/gardener/gardener/pkg/utils/retry/error.go index 801ded7a..dbb8459f 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/retry/error.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/retry/error.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/retry/retry.go b/vendor/github.com/gardener/gardener/pkg/utils/retry/retry.go index 76ca91b2..14bcb4e4 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/retry/retry.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/retry/retry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/retry/types.go b/vendor/github.com/gardener/gardener/pkg/utils/retry/types.go index d1bffb31..1343d827 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/retry/types.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/retry/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/secrets/alias.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/alias.go index f34a16a2..b20a33c6 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/alias.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/alias.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/secrets/basic_auth.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/basic_auth.go index 49ada437..35ee79d0 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/basic_auth.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/basic_auth.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/secrets/bundle.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/bundle.go index 47786394..f642d94d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/bundle.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/bundle.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/secrets/certificate.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate.go index 7dded01f..6245b46a 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/secrets/control_plane.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/control_plane.go index 6f186121..b74d4a21 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/control_plane.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/control_plane.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/secrets/etcd_encryption_key.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/etcd_encryption_key.go index fd17ea01..6c279a17 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/etcd_encryption_key.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/etcd_encryption_key.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/secrets/kubeconfig.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/kubeconfig.go index 55aef066..dc22fe18 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/kubeconfig.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/kubeconfig.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/secrets/rsa_private_key.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/rsa_private_key.go index ef554219..a3606c29 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/rsa_private_key.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/rsa_private_key.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/secrets/static_token.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/static_token.go index ab1fa4a7..e62e1294 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/static_token.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/static_token.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/secrets/types.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/types.go index c481bdb4..7b6e0e83 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/types.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/types.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/secrets/vpn_tlsauth.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/vpn_tlsauth.go index 96f5cec5..2d879ae9 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/vpn_tlsauth.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/vpn_tlsauth.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/timewindow/schedule.go b/vendor/github.com/gardener/gardener/pkg/utils/timewindow/schedule.go index bdb28950..8fcaaf7d 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/timewindow/schedule.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/timewindow/schedule.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2022 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/timewindow/timewindow.go b/vendor/github.com/gardener/gardener/pkg/utils/timewindow/timewindow.go index a0bb3a70..fd876097 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/timewindow/timewindow.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/timewindow/timewindow.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/validation/kubernetesversion/version.go b/vendor/github.com/gardener/gardener/pkg/utils/validation/kubernetesversion/version.go new file mode 100644 index 00000000..1ad7350a --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/utils/validation/kubernetesversion/version.go @@ -0,0 +1,49 @@ +// Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// +// 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 kubernetesversion + +import ( + "fmt" + + versionutils "github.com/gardener/gardener/pkg/utils/version" +) + +// SupportedVersions is the list of supported Kubernetes versions for all runtime and target clusters, i.e. all gardens, +// seeds, and shoots. +var SupportedVersions = []string{ + "1.20", + "1.21", + "1.22", + "1.23", + "1.24", + "1.25", + "1.26", +} + +// CheckIfSupported checks if the provided version is part of the supported Kubernetes versions list. +func CheckIfSupported(gitVersion string) error { + for _, supportedVersion := range SupportedVersions { + ok, err := versionutils.CompareVersions(gitVersion, "~", supportedVersion) + if err != nil { + return err + } + + if ok { + return nil + } + } + + return fmt.Errorf("unsupported kubernetes version %q", gitVersion) +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/values.go b/vendor/github.com/gardener/gardener/pkg/utils/values.go index f9190165..72270998 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/values.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/values.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2021 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/gardener/pkg/utils/version/version.go b/vendor/github.com/gardener/gardener/pkg/utils/version/version.go index 85aaf132..56369502 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/version/version.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/version/version.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +// Copyright 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file // // 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/github.com/gardener/machine-controller-manager/pkg/apis/machine/types.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/types.go index 2b2a817f..46e1d241 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/types.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/types.go @@ -167,9 +167,6 @@ type CurrentStatus struct { // MachineStatus holds the most recently observed status of Machine. type MachineStatus struct { - // Node string - Node string - // Conditions of this machine, same as node Conditions []corev1.NodeCondition diff --git a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machine_types.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machine_types.go index 4628562e..e0eb04f0 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machine_types.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machine_types.go @@ -27,13 +27,20 @@ import ( // IF YOU MODIFY ANY OF THE TYPES HERE COPY THEM TO ../types.go // AND RUN ./hack/generate-code +// NodeLabelKey is the key for node label on machine object +const ( + NodeLabelKey string = "node" +) + // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:resource:shortName="mc" // +kubebuilder:object:root=true // +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.currentStatus.phase`,description="Current status of the machine." // +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`,description="CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" // +kubebuilder:printcolumn:name="Node",type=string,JSONPath=`.metadata.labels.node`,description="Node backing the machine object" +// +kubebuilder:printcolumn:name="ProviderID",type=string,JSONPath=`.spec.providerID`,description="ProviderID of the infra instance backing the machine object",priority=1 // Machine is the representation of a physical or virtual machine. type Machine struct { @@ -95,9 +102,6 @@ type NodeTemplateSpec struct { // MachineStatus holds the most recently observed status of Machine. type MachineStatus struct { - // Node string - Node string `json:"node,omitempty"` - // Conditions of this machine, same as node Conditions []corev1.NodeCondition `json:"conditions,omitempty"` diff --git a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineclass_types.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineclass_types.go index 67817574..6d525c33 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineclass_types.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineclass_types.go @@ -27,6 +27,7 @@ import ( // +genclient // +genclient:noStatus // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:resource:shortName="mcc" // +kubebuilder:object:root=true // MachineClass can be used to templatize and re-use provider configuration diff --git a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machinedeployment_types.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machinedeployment_types.go index 6f5f49a3..1161e718 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machinedeployment_types.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machinedeployment_types.go @@ -26,6 +26,7 @@ import ( // +genclient // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:resource:shortName="mcd" // +kubebuilder:object:root=true // +kubebuilder:subresource:status // +kubebuilder:subresource:scale:specpath=.spec.replicas,statuspath=.status.replicas @@ -34,7 +35,8 @@ import ( // +kubebuilder:printcolumn:name="Up-to-date",type=integer,JSONPath=`.status.updatedReplicas`,description="Total number of non-terminated machines targeted by this machine deployment that have the desired template spec." // +kubebuilder:printcolumn:name="Available",type=integer,JSONPath=`.status.availableReplicas`,description="Total number of available machines (ready for at least minReadySeconds) targeted by this machine deployment." // +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`,description="CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" -// Deployment enables declarative updates for machines and MachineSets. + +// MachineDeployment enables declarative updates for machines and MachineSets. type MachineDeployment struct { metav1.TypeMeta `json:",inline"` // Standard object metadata. @@ -96,7 +98,7 @@ type MachineDeploymentSpec struct { // process failed MachineDeployments and a condition with a ProgressDeadlineExceeded // reason will be surfaced in the MachineDeployment status. Note that progress will // not be estimated during the time a MachineDeployment is paused. This is not set - // by default. + // by default, which is treated as infinite deadline. // +optional ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty"` } @@ -217,8 +219,8 @@ const ( // Progressing means the MachineDeployment is progressing. Progress for a MachineDeployment is // considered when a new machine set is created or adopted, and when new machines scale - // up or old machines scale down. Progress is not estimated for paused MachineDeployments or - // when progressDeadlineSeconds is not specified. + // up or old machines scale down. Progress is not estimated for paused MachineDeployments. It is also updated + // if progressDeadlineSeconds is not specified(treated as infinite deadline), in which case it would never be updated to "false". MachineDeploymentProgressing MachineDeploymentConditionType = "Progressing" // ReplicaFailure is added in a MachineDeployment when one of its machines fails to be created diff --git a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineset_types.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineset_types.go index 6e349ed1..d2486e87 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineset_types.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/machineset_types.go @@ -23,6 +23,7 @@ import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale +// +kubebuilder:resource:shortName="mcs" // +kubebuilder:object:root=true // +kubebuilder:subresource:status // +kubebuilder:subresource:scale:specpath=.spec.replicas,statuspath=.status.replicas diff --git a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/zz_generated.conversion.go b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/zz_generated.conversion.go index c7f8746e..c1d4a9a8 100644 --- a/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/zz_generated.conversion.go +++ b/vendor/github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1/zz_generated.conversion.go @@ -2547,7 +2547,6 @@ func Convert_machine_MachineSpec_To_v1alpha1_MachineSpec(in *machine.MachineSpec } func autoConvert_v1alpha1_MachineStatus_To_machine_MachineStatus(in *MachineStatus, out *machine.MachineStatus, s conversion.Scope) error { - out.Node = in.Node out.Conditions = *(*[]v1.NodeCondition)(unsafe.Pointer(&in.Conditions)) if err := Convert_v1alpha1_LastOperation_To_machine_LastOperation(&in.LastOperation, &out.LastOperation, s); err != nil { return err @@ -2565,7 +2564,6 @@ func Convert_v1alpha1_MachineStatus_To_machine_MachineStatus(in *MachineStatus, } func autoConvert_machine_MachineStatus_To_v1alpha1_MachineStatus(in *machine.MachineStatus, out *MachineStatus, s conversion.Scope) error { - out.Node = in.Node out.Conditions = *(*[]v1.NodeCondition)(unsafe.Pointer(&in.Conditions)) if err := Convert_machine_LastOperation_To_v1alpha1_LastOperation(&in.LastOperation, &out.LastOperation, s); err != nil { return err diff --git a/vendor/github.com/go-logr/logr/.golangci.yaml b/vendor/github.com/go-logr/logr/.golangci.yaml index 94ff801d..0cffafa7 100644 --- a/vendor/github.com/go-logr/logr/.golangci.yaml +++ b/vendor/github.com/go-logr/logr/.golangci.yaml @@ -6,7 +6,6 @@ linters: disable-all: true enable: - asciicheck - - deadcode - errcheck - forcetypeassert - gocritic @@ -18,10 +17,8 @@ linters: - misspell - revive - staticcheck - - structcheck - typecheck - unused - - varcheck issues: exclude-use-default: false diff --git a/vendor/github.com/go-logr/logr/discard.go b/vendor/github.com/go-logr/logr/discard.go index 9d92a38f..99fe8be9 100644 --- a/vendor/github.com/go-logr/logr/discard.go +++ b/vendor/github.com/go-logr/logr/discard.go @@ -20,35 +20,5 @@ package logr // used whenever the caller is not interested in the logs. Logger instances // produced by this function always compare as equal. func Discard() Logger { - return Logger{ - level: 0, - sink: discardLogSink{}, - } -} - -// discardLogSink is a LogSink that discards all messages. -type discardLogSink struct{} - -// Verify that it actually implements the interface -var _ LogSink = discardLogSink{} - -func (l discardLogSink) Init(RuntimeInfo) { -} - -func (l discardLogSink) Enabled(int) bool { - return false -} - -func (l discardLogSink) Info(int, string, ...interface{}) { -} - -func (l discardLogSink) Error(error, string, ...interface{}) { -} - -func (l discardLogSink) WithValues(...interface{}) LogSink { - return l -} - -func (l discardLogSink) WithName(string) LogSink { - return l + return New(nil) } diff --git a/vendor/github.com/go-logr/logr/funcr/funcr.go b/vendor/github.com/go-logr/logr/funcr/funcr.go index 7accdb0c..e52f0cd0 100644 --- a/vendor/github.com/go-logr/logr/funcr/funcr.go +++ b/vendor/github.com/go-logr/logr/funcr/funcr.go @@ -21,13 +21,13 @@ limitations under the License. // github.com/go-logr/logr.LogSink with output through an arbitrary // "write" function. See New and NewJSON for details. // -// Custom LogSinks +// # Custom LogSinks // // For users who need more control, a funcr.Formatter can be embedded inside // your own custom LogSink implementation. This is useful when the LogSink // needs to implement additional methods, for example. // -// Formatting +// # Formatting // // This will respect logr.Marshaler, fmt.Stringer, and error interfaces for // values which are being logged. When rendering a struct, funcr will use Go's @@ -37,6 +37,7 @@ package funcr import ( "bytes" "encoding" + "encoding/json" "fmt" "path/filepath" "reflect" @@ -217,7 +218,7 @@ func newFormatter(opts Options, outfmt outputFormat) Formatter { prefix: "", values: nil, depth: 0, - opts: opts, + opts: &opts, } return f } @@ -231,7 +232,7 @@ type Formatter struct { values []interface{} valuesStr string depth int - opts Options + opts *Options } // outputFormat indicates which outputFormat to use. @@ -447,6 +448,7 @@ func (f Formatter) prettyWithFlags(value interface{}, flags uint32, depth int) s if flags&flagRawStruct == 0 { buf.WriteByte('{') } + printComma := false // testing i>0 is not enough because of JSON omitted fields for i := 0; i < t.NumField(); i++ { fld := t.Field(i) if fld.PkgPath != "" { @@ -478,9 +480,10 @@ func (f Formatter) prettyWithFlags(value interface{}, flags uint32, depth int) s if omitempty && isEmpty(v.Field(i)) { continue } - if i > 0 { + if printComma { buf.WriteByte(',') } + printComma = true // if we got here, we are rendering a field if fld.Anonymous && fld.Type.Kind() == reflect.Struct && name == "" { buf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), flags|flagRawStruct, depth+1)) continue @@ -500,6 +503,20 @@ func (f Formatter) prettyWithFlags(value interface{}, flags uint32, depth int) s } return buf.String() case reflect.Slice, reflect.Array: + // If this is outputing as JSON make sure this isn't really a json.RawMessage. + // If so just emit "as-is" and don't pretty it as that will just print + // it as [X,Y,Z,...] which isn't terribly useful vs the string form you really want. + if f.outputFormat == outputJSON { + if rm, ok := value.(json.RawMessage); ok { + // If it's empty make sure we emit an empty value as the array style would below. + if len(rm) > 0 { + buf.Write(rm) + } else { + buf.WriteString("null") + } + return buf.String() + } + } buf.WriteByte('[') for i := 0; i < v.Len(); i++ { if i > 0 { diff --git a/vendor/github.com/go-logr/logr/logr.go b/vendor/github.com/go-logr/logr/logr.go index c3b56b3d..e027aea3 100644 --- a/vendor/github.com/go-logr/logr/logr.go +++ b/vendor/github.com/go-logr/logr/logr.go @@ -21,7 +21,7 @@ limitations under the License. // to back that API. Packages in the Go ecosystem can depend on this package, // while callers can implement logging with whatever backend is appropriate. // -// Usage +// # Usage // // Logging is done using a Logger instance. Logger is a concrete type with // methods, which defers the actual logging to a LogSink interface. The main @@ -30,16 +30,20 @@ limitations under the License. // "structured logging". // // With Go's standard log package, we might write: -// log.Printf("setting target value %s", targetValue) +// +// log.Printf("setting target value %s", targetValue) // // With logr's structured logging, we'd write: -// logger.Info("setting target", "value", targetValue) +// +// logger.Info("setting target", "value", targetValue) // // Errors are much the same. Instead of: -// log.Printf("failed to open the pod bay door for user %s: %v", user, err) +// +// log.Printf("failed to open the pod bay door for user %s: %v", user, err) // // We'd write: -// logger.Error(err, "failed to open the pod bay door", "user", user) +// +// logger.Error(err, "failed to open the pod bay door", "user", user) // // Info() and Error() are very similar, but they are separate methods so that // LogSink implementations can choose to do things like attach additional @@ -47,7 +51,7 @@ limitations under the License. // always logged, regardless of the current verbosity. If there is no error // instance available, passing nil is valid. // -// Verbosity +// # Verbosity // // Often we want to log information only when the application in "verbose // mode". To write log lines that are more verbose, Logger has a V() method. @@ -58,20 +62,22 @@ limitations under the License. // Error messages do not have a verbosity level and are always logged. // // Where we might have written: -// if flVerbose >= 2 { -// log.Printf("an unusual thing happened") -// } +// +// if flVerbose >= 2 { +// log.Printf("an unusual thing happened") +// } // // We can write: -// logger.V(2).Info("an unusual thing happened") // -// Logger Names +// logger.V(2).Info("an unusual thing happened") +// +// # Logger Names // // Logger instances can have name strings so that all messages logged through // that instance have additional context. For example, you might want to add // a subsystem name: // -// logger.WithName("compactor").Info("started", "time", time.Now()) +// logger.WithName("compactor").Info("started", "time", time.Now()) // // The WithName() method returns a new Logger, which can be passed to // constructors or other functions for further use. Repeated use of WithName() @@ -82,25 +88,27 @@ limitations under the License. // joining operation (e.g. whitespace, commas, periods, slashes, brackets, // quotes, etc). // -// Saved Values +// # Saved Values // // Logger instances can store any number of key/value pairs, which will be // logged alongside all messages logged through that instance. For example, // you might want to create a Logger instance per managed object: // // With the standard log package, we might write: -// log.Printf("decided to set field foo to value %q for object %s/%s", -// targetValue, object.Namespace, object.Name) +// +// log.Printf("decided to set field foo to value %q for object %s/%s", +// targetValue, object.Namespace, object.Name) // // With logr we'd write: -// // Elsewhere: set up the logger to log the object name. -// obj.logger = mainLogger.WithValues( -// "name", obj.name, "namespace", obj.namespace) // -// // later on... -// obj.logger.Info("setting foo", "value", targetValue) +// // Elsewhere: set up the logger to log the object name. +// obj.logger = mainLogger.WithValues( +// "name", obj.name, "namespace", obj.namespace) +// +// // later on... +// obj.logger.Info("setting foo", "value", targetValue) // -// Best Practices +// # Best Practices // // Logger has very few hard rules, with the goal that LogSink implementations // might have a lot of freedom to differentiate. There are, however, some @@ -124,15 +132,15 @@ limitations under the License. // around. For cases where passing a logger is optional, a pointer to Logger // should be used. // -// Key Naming Conventions +// # Key Naming Conventions // // Keys are not strictly required to conform to any specification or regex, but // it is recommended that they: -// * be human-readable and meaningful (not auto-generated or simple ordinals) -// * be constant (not dependent on input data) -// * contain only printable characters -// * not contain whitespace or punctuation -// * use lower case for simple keys and lowerCamelCase for more complex ones +// - be human-readable and meaningful (not auto-generated or simple ordinals) +// - be constant (not dependent on input data) +// - contain only printable characters +// - not contain whitespace or punctuation +// - use lower case for simple keys and lowerCamelCase for more complex ones // // These guidelines help ensure that log data is processed properly regardless // of the log implementation. For example, log implementations will try to @@ -141,51 +149,54 @@ limitations under the License. // While users are generally free to use key names of their choice, it's // generally best to avoid using the following keys, as they're frequently used // by implementations: -// * "caller": the calling information (file/line) of a particular log line -// * "error": the underlying error value in the `Error` method -// * "level": the log level -// * "logger": the name of the associated logger -// * "msg": the log message -// * "stacktrace": the stack trace associated with a particular log line or -// error (often from the `Error` message) -// * "ts": the timestamp for a log line +// - "caller": the calling information (file/line) of a particular log line +// - "error": the underlying error value in the `Error` method +// - "level": the log level +// - "logger": the name of the associated logger +// - "msg": the log message +// - "stacktrace": the stack trace associated with a particular log line or +// error (often from the `Error` message) +// - "ts": the timestamp for a log line // // Implementations are encouraged to make use of these keys to represent the // above concepts, when necessary (for example, in a pure-JSON output form, it // would be necessary to represent at least message and timestamp as ordinary // named values). // -// Break Glass +// # Break Glass // // Implementations may choose to give callers access to the underlying // logging implementation. The recommended pattern for this is: -// // Underlier exposes access to the underlying logging implementation. -// // Since callers only have a logr.Logger, they have to know which -// // implementation is in use, so this interface is less of an abstraction -// // and more of way to test type conversion. -// type Underlier interface { -// GetUnderlying() -// } +// +// // Underlier exposes access to the underlying logging implementation. +// // Since callers only have a logr.Logger, they have to know which +// // implementation is in use, so this interface is less of an abstraction +// // and more of way to test type conversion. +// type Underlier interface { +// GetUnderlying() +// } // // Logger grants access to the sink to enable type assertions like this: -// func DoSomethingWithImpl(log logr.Logger) { -// if underlier, ok := log.GetSink()(impl.Underlier) { -// implLogger := underlier.GetUnderlying() -// ... -// } -// } +// +// func DoSomethingWithImpl(log logr.Logger) { +// if underlier, ok := log.GetSink().(impl.Underlier); ok { +// implLogger := underlier.GetUnderlying() +// ... +// } +// } // // Custom `With*` functions can be implemented by copying the complete // Logger struct and replacing the sink in the copy: -// // WithFooBar changes the foobar parameter in the log sink and returns a -// // new logger with that modified sink. It does nothing for loggers where -// // the sink doesn't support that parameter. -// func WithFoobar(log logr.Logger, foobar int) logr.Logger { -// if foobarLogSink, ok := log.GetSink()(FoobarSink); ok { -// log = log.WithSink(foobarLogSink.WithFooBar(foobar)) -// } -// return log -// } +// +// // WithFooBar changes the foobar parameter in the log sink and returns a +// // new logger with that modified sink. It does nothing for loggers where +// // the sink doesn't support that parameter. +// func WithFoobar(log logr.Logger, foobar int) logr.Logger { +// if foobarLogSink, ok := log.GetSink().(FoobarSink); ok { +// log = log.WithSink(foobarLogSink.WithFooBar(foobar)) +// } +// return log +// } // // Don't use New to construct a new Logger with a LogSink retrieved from an // existing Logger. Source code attribution might not work correctly and @@ -201,11 +212,14 @@ import ( ) // New returns a new Logger instance. This is primarily used by libraries -// implementing LogSink, rather than end users. +// implementing LogSink, rather than end users. Passing a nil sink will create +// a Logger which discards all log lines. func New(sink LogSink) Logger { logger := Logger{} logger.setSink(sink) - sink.Init(runtimeInfo) + if sink != nil { + sink.Init(runtimeInfo) + } return logger } @@ -244,7 +258,7 @@ type Logger struct { // Enabled tests whether this Logger is enabled. For example, commandline // flags might be used to set the logging verbosity and disable some info logs. func (l Logger) Enabled() bool { - return l.sink.Enabled(l.level) + return l.sink != nil && l.sink.Enabled(l.level) } // Info logs a non-error message with the given key/value pairs as context. @@ -254,6 +268,9 @@ func (l Logger) Enabled() bool { // information. The key/value pairs must alternate string keys and arbitrary // values. func (l Logger) Info(msg string, keysAndValues ...interface{}) { + if l.sink == nil { + return + } if l.Enabled() { if withHelper, ok := l.sink.(CallStackHelperLogSink); ok { withHelper.GetCallStackHelper()() @@ -273,6 +290,9 @@ func (l Logger) Info(msg string, keysAndValues ...interface{}) { // triggered this log line, if present. The err parameter is optional // and nil may be passed instead of an error instance. func (l Logger) Error(err error, msg string, keysAndValues ...interface{}) { + if l.sink == nil { + return + } if withHelper, ok := l.sink.(CallStackHelperLogSink); ok { withHelper.GetCallStackHelper()() } @@ -284,6 +304,9 @@ func (l Logger) Error(err error, msg string, keysAndValues ...interface{}) { // level means a log message is less important. Negative V-levels are treated // as 0. func (l Logger) V(level int) Logger { + if l.sink == nil { + return l + } if level < 0 { level = 0 } @@ -294,6 +317,9 @@ func (l Logger) V(level int) Logger { // WithValues returns a new Logger instance with additional key/value pairs. // See Info for documentation on how key/value pairs work. func (l Logger) WithValues(keysAndValues ...interface{}) Logger { + if l.sink == nil { + return l + } l.setSink(l.sink.WithValues(keysAndValues...)) return l } @@ -304,6 +330,9 @@ func (l Logger) WithValues(keysAndValues ...interface{}) Logger { // contain only letters, digits, and hyphens (see the package documentation for // more information). func (l Logger) WithName(name string) Logger { + if l.sink == nil { + return l + } l.setSink(l.sink.WithName(name)) return l } @@ -324,6 +353,9 @@ func (l Logger) WithName(name string) Logger { // WithCallDepth(1) because it works with implementions that support the // CallDepthLogSink and/or CallStackHelperLogSink interfaces. func (l Logger) WithCallDepth(depth int) Logger { + if l.sink == nil { + return l + } if withCallDepth, ok := l.sink.(CallDepthLogSink); ok { l.setSink(withCallDepth.WithCallDepth(depth)) } @@ -345,6 +377,9 @@ func (l Logger) WithCallDepth(depth int) Logger { // implementation does not support either of these, the original Logger will be // returned. func (l Logger) WithCallStackHelper() (func(), Logger) { + if l.sink == nil { + return func() {}, l + } var helper func() if withCallDepth, ok := l.sink.(CallDepthLogSink); ok { l.setSink(withCallDepth.WithCallDepth(1)) @@ -357,6 +392,11 @@ func (l Logger) WithCallStackHelper() (func(), Logger) { return helper, l } +// IsZero returns true if this logger is an uninitialized zero value +func (l Logger) IsZero() bool { + return l.sink == nil +} + // contextKey is how we find Loggers in a context.Context. type contextKey struct{} @@ -442,7 +482,7 @@ type LogSink interface { WithName(name string) LogSink } -// CallDepthLogSink represents a Logger that knows how to climb the call stack +// CallDepthLogSink represents a LogSink that knows how to climb the call stack // to identify the original call site and can offset the depth by a specified // number of frames. This is useful for users who have helper functions // between the "real" call site and the actual calls to Logger methods. @@ -467,7 +507,7 @@ type CallDepthLogSink interface { WithCallDepth(depth int) LogSink } -// CallStackHelperLogSink represents a Logger that knows how to climb +// CallStackHelperLogSink represents a LogSink that knows how to climb // the call stack to identify the original call site and can skip // intermediate helper functions if they mark themselves as // helper. Go's testing package uses that approach. diff --git a/vendor/github.com/golang/protobuf/jsonpb/decode.go b/vendor/github.com/golang/protobuf/jsonpb/decode.go index 60e82caa..6c16c255 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/decode.go +++ b/vendor/github.com/golang/protobuf/jsonpb/decode.go @@ -386,8 +386,14 @@ func (u *Unmarshaler) unmarshalMessage(m protoreflect.Message, in []byte) error } func isSingularWellKnownValue(fd protoreflect.FieldDescriptor) bool { + if fd.Cardinality() == protoreflect.Repeated { + return false + } if md := fd.Message(); md != nil { - return md.FullName() == "google.protobuf.Value" && fd.Cardinality() != protoreflect.Repeated + return md.FullName() == "google.protobuf.Value" + } + if ed := fd.Enum(); ed != nil { + return ed.FullName() == "google.protobuf.NullValue" } return false } diff --git a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/LICENSE b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/LICENSE similarity index 100% rename from vendor/github.com/kubernetes-csi/external-snapshotter/v2/LICENSE rename to vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/LICENSE diff --git a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/doc.go b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/doc.go similarity index 97% rename from vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/doc.go rename to vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/doc.go index d8a1f5da..462e9d48 100644 --- a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/doc.go +++ b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/doc.go @@ -17,4 +17,4 @@ limitations under the License. // +k8s:deepcopy-gen=package // +groupName=snapshot.storage.k8s.io -package v1beta1 +package v1 diff --git a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/register.go b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/register.go similarity index 98% rename from vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/register.go rename to vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/register.go index 91f45142..cca3da0b 100644 --- a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/register.go +++ b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/register.go @@ -11,7 +11,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package v1beta1 +package v1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -28,7 +28,7 @@ var ( // AddToScheme adds to scheme AddToScheme = SchemeBuilder.AddToScheme // SchemeGroupVersion is the group version used to register these objects. - SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} ) // Resource takes an unqualified resource and returns a Group-qualified GroupResource. diff --git a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/types.go b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/types.go similarity index 74% rename from vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/types.go rename to vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/types.go index 1299d365..b9745df2 100644 --- a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/types.go +++ b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/types.go @@ -1,5 +1,5 @@ /* -Copyright 2019 The Kubernetes Authors. +Copyright 2020 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. @@ -15,7 +15,7 @@ limitations under the License. */ // +kubebuilder:object:generate=true -package v1beta1 +package v1 import ( core_v1 "k8s.io/api/core/v1" @@ -31,13 +31,13 @@ import ( // +kubebuilder:object:root=true // +kubebuilder:resource:scope=Namespaced // +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="ReadyToUse",type=boolean,JSONPath=`.status.readyToUse`,description="Indicates if a snapshot is ready to be used to restore a volume." -// +kubebuilder:printcolumn:name="SourcePVC",type=string,JSONPath=`.spec.source.persistentVolumeClaimName`,description="Name of the source PVC from where a dynamically taken snapshot will be created." -// +kubebuilder:printcolumn:name="SourceSnapshotContent",type=string,JSONPath=`.spec.source.volumeSnapshotContentName`,description="Name of the VolumeSnapshotContent which represents a pre-provisioned snapshot." -// +kubebuilder:printcolumn:name="RestoreSize",type=string,JSONPath=`.status.restoreSize`,description="Represents the complete size of the snapshot." +// +kubebuilder:printcolumn:name="ReadyToUse",type=boolean,JSONPath=`.status.readyToUse`,description="Indicates if the snapshot is ready to be used to restore a volume." +// +kubebuilder:printcolumn:name="SourcePVC",type=string,JSONPath=`.spec.source.persistentVolumeClaimName`,description="If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created." +// +kubebuilder:printcolumn:name="SourceSnapshotContent",type=string,JSONPath=`.spec.source.volumeSnapshotContentName`,description="If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot." +// +kubebuilder:printcolumn:name="RestoreSize",type=string,JSONPath=`.status.restoreSize`,description="Represents the minimum size of volume required to rehydrate from this snapshot." // +kubebuilder:printcolumn:name="SnapshotClass",type=string,JSONPath=`.spec.volumeSnapshotClassName`,description="The name of the VolumeSnapshotClass requested by the VolumeSnapshot." -// +kubebuilder:printcolumn:name="SnapshotContent",type=string,JSONPath=`.status.boundVolumeSnapshotContentName`,description="The name of the VolumeSnapshotContent to which this VolumeSnapshot is bound." -// +kubebuilder:printcolumn:name="CreationTime",type=date,JSONPath=`.status.creationTime`,description="Timestamp when the point-in-time snapshot is taken by the underlying storage system." +// +kubebuilder:printcolumn:name="SnapshotContent",type=string,JSONPath=`.status.boundVolumeSnapshotContentName`,description="Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object." +// +kubebuilder:printcolumn:name="CreationTime",type=date,JSONPath=`.status.creationTime`,description="Timestamp when the point-in-time snapshot was taken by the underlying storage system." // +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp` type VolumeSnapshot struct { metav1.TypeMeta `json:",inline"` @@ -52,10 +52,10 @@ type VolumeSnapshot struct { Spec VolumeSnapshotSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` // status represents the current information of a snapshot. - // NOTE: status can be modified by sources other than system controllers, - // and must not be depended upon for accuracy. - // Controllers should only use information from the VolumeSnapshotContent object - // after verifying that the binding is accurate and complete. + // Consumers must verify binding between VolumeSnapshot and + // VolumeSnapshotContent objects is successful (by validating that both + // VolumeSnapshot and VolumeSnapshotContent point at each other) before + // using this object. // +optional Status *VolumeSnapshotStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` } @@ -78,12 +78,18 @@ type VolumeSnapshotSpec struct { // Required. Source VolumeSnapshotSource `json:"source" protobuf:"bytes,1,opt,name=source"` - // volumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. - // If not specified, the default snapshot class will be used if one exists. - // If not specified, and there is no default snapshot class, dynamic snapshot creation will fail. + // VolumeSnapshotClassName is the name of the VolumeSnapshotClass + // requested by the VolumeSnapshot. + // VolumeSnapshotClassName may be left nil to indicate that the default + // SnapshotClass should be used. + // A given cluster may have multiple default Volume SnapshotClasses: one + // default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, + // VolumeSnapshotSource will be checked to figure out what the associated + // CSI Driver is, and the default VolumeSnapshotClass associated with that + // CSI Driver will be used. If more than one VolumeSnapshotClass exist for + // a given CSI Driver and more than one have been marked as default, + // CreateSnapshot will fail and generate an event. // Empty string is not allowed for this field. - // TODO(xiangqian): a webhook validation on empty string. - // More info: https://kubernetes.io/docs/concepts/storage/volume-snapshot-classes // +optional VolumeSnapshotClassName *string `json:"volumeSnapshotClassName,omitempty" protobuf:"bytes,2,opt,name=volumeSnapshotClassName"` } @@ -93,48 +99,62 @@ type VolumeSnapshotSpec struct { // object should be used. // Exactly one of its members must be set. // Members in VolumeSnapshotSource are immutable. -// TODO(xiangqian): Add a webhook to ensure that VolumeSnapshotSource members -// will not be updated once specified. type VolumeSnapshotSource struct { // persistentVolumeClaimName specifies the name of the PersistentVolumeClaim - // object in the same namespace as the VolumeSnapshot object where the - // snapshot should be dynamically taken from. + // object representing the volume from which a snapshot should be created. + // This PVC is assumed to be in the same namespace as the VolumeSnapshot + // object. + // This field should be set if the snapshot does not exists, and needs to be + // created. // This field is immutable. // +optional PersistentVolumeClaimName *string `json:"persistentVolumeClaimName,omitempty" protobuf:"bytes,1,opt,name=persistentVolumeClaimName"` // volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent - // object. + // object representing an existing volume snapshot. + // This field should be set if the snapshot already exists and only needs a representation in Kubernetes. // This field is immutable. // +optional VolumeSnapshotContentName *string `json:"volumeSnapshotContentName,omitempty" protobuf:"bytes,2,opt,name=volumeSnapshotContentName"` } // VolumeSnapshotStatus is the status of the VolumeSnapshot +// Note that CreationTime, RestoreSize, ReadyToUse, and Error are in both +// VolumeSnapshotStatus and VolumeSnapshotContentStatus. Fields in VolumeSnapshotStatus +// are updated based on fields in VolumeSnapshotContentStatus. They are eventual +// consistency. These fields are duplicate in both objects due to the following reasons: +// - Fields in VolumeSnapshotContentStatus can be used for filtering when importing a +// volumesnapshot. +// - VolumsnapshotStatus is used by end users because they cannot see VolumeSnapshotContent. +// - CSI snapshotter sidecar is light weight as it only watches VolumeSnapshotContent +// object, not VolumeSnapshot object. type VolumeSnapshotStatus struct { - // boundVolumeSnapshotContentName represents the name of the VolumeSnapshotContent - // object to which the VolumeSnapshot object is bound. + // boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent + // object to which this VolumeSnapshot object intends to bind to. // If not specified, it indicates that the VolumeSnapshot object has not been // successfully bound to a VolumeSnapshotContent object yet. - // NOTE: Specified boundVolumeSnapshotContentName alone does not mean binding - // is valid. Controllers MUST always verify bidirectional binding between - // VolumeSnapshot and VolumeSnapshotContent to avoid possible security issues. + // NOTE: To avoid possible security issues, consumers must verify binding between + // VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that + // both VolumeSnapshot and VolumeSnapshotContent point at each other) before using + // this object. // +optional BoundVolumeSnapshotContentName *string `json:"boundVolumeSnapshotContentName,omitempty" protobuf:"bytes,1,opt,name=boundVolumeSnapshotContentName"` // creationTime is the timestamp when the point-in-time snapshot is taken // by the underlying storage system. - // In dynamic snapshot creation case, this field will be filled in with the - // "creation_time" value returned from CSI "CreateSnapshotRequest" gRPC call. + // In dynamic snapshot creation case, this field will be filled in by the + // snapshot controller with the "creation_time" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "creation_time" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. - // If not specified, it indicates that the creation time of the snapshot is unknown. + // If not specified, it may indicate that the creation time of the snapshot is unknown. // +optional CreationTime *metav1.Time `json:"creationTime,omitempty" protobuf:"bytes,2,opt,name=creationTime"` - // readyToUse indicates if a snapshot is ready to be used to restore a volume. - // In dynamic snapshot creation case, this field will be filled in with the - // "ready_to_use" value returned from CSI "CreateSnapshotRequest" gRPC call. + // readyToUse indicates if the snapshot is ready to be used to restore a volume. + // In dynamic snapshot creation case, this field will be filled in by the + // snapshot controller with the "ready_to_use" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "ready_to_use" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, // otherwise, this field will be set to "True". @@ -142,9 +162,11 @@ type VolumeSnapshotStatus struct { // +optional ReadyToUse *bool `json:"readyToUse,omitempty" protobuf:"varint,3,opt,name=readyToUse"` - // restoreSize represents the complete size of the snapshot in bytes. - // In dynamic snapshot creation case, this field will be filled in with the - // "size_bytes" value returned from CSI "CreateSnapshotRequest" gRPC call. + // restoreSize represents the minimum size of volume required to create a volume + // from this snapshot. + // In dynamic snapshot creation case, this field will be filled in by the + // snapshot controller with the "size_bytes" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "size_bytes" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. // When restoring a volume from this snapshot, the size of the volume MUST NOT @@ -157,6 +179,8 @@ type VolumeSnapshotStatus struct { // This field could be helpful to upper level controllers(i.e., application controller) // to decide whether they should continue on waiting for the snapshot to be created // based on the type of error reported. + // The snapshot controller will keep retrying when an error occurrs during the + // snapshot creation. Upon success, this error field will be cleared. // +optional Error *VolumeSnapshotError `json:"error,omitempty" protobuf:"bytes,5,opt,name=error,casttype=VolumeSnapshotError"` } @@ -223,7 +247,7 @@ type VolumeSnapshotClassList struct { // +kubebuilder:object:root=true // +kubebuilder:resource:scope=Cluster // +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="ReadyToUse",type=boolean,JSONPath=`.status.readyToUse`,description="Indicates if a snapshot is ready to be used to restore a volume." +// +kubebuilder:printcolumn:name="ReadyToUse",type=boolean,JSONPath=`.status.readyToUse`,description="Indicates if the snapshot is ready to be used to restore a volume." // +kubebuilder:printcolumn:name="RestoreSize",type=integer,JSONPath=`.status.restoreSize`,description="Represents the complete size of the snapshot in bytes" // +kubebuilder:printcolumn:name="DeletionPolicy",type=string,JSONPath=`.spec.deletionPolicy`,description="Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted." // +kubebuilder:printcolumn:name="Driver",type=string,JSONPath=`.spec.driver`,description="Name of the CSI driver used to create the physical snapshot on the underlying storage system." @@ -276,9 +300,11 @@ type VolumeSnapshotContentSpec struct { // Supported values are "Retain" and "Delete". // "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. // "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. - // In dynamic snapshot creation case, this field will be filled in with the "DeletionPolicy" field defined in the - // VolumeSnapshotClass the VolumeSnapshot refers to. - // For pre-existing snapshots, users MUST specify this field when creating the VolumeSnapshotContent object. + // For dynamically provisioned snapshots, this field will automatically be filled in by the + // CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding + // VolumeSnapshotClass. + // For pre-existing snapshots, users MUST specify this field when creating the + // VolumeSnapshotContent object. // Required. DeletionPolicy DeletionPolicy `json:"deletionPolicy" protobuf:"bytes,2,opt,name=deletionPolicy"` @@ -289,11 +315,16 @@ type VolumeSnapshotContentSpec struct { // Required. Driver string `json:"driver" protobuf:"bytes,3,opt,name=driver"` - // name of the VolumeSnapshotClass to which this snapshot belongs. + // name of the VolumeSnapshotClass from which this snapshot was (or will be) + // created. + // Note that after provisioning, the VolumeSnapshotClass may be deleted or + // recreated with different set of values, and as such, should not be referenced + // post-snapshot creation. // +optional VolumeSnapshotClassName *string `json:"volumeSnapshotClassName,omitempty" protobuf:"bytes,4,opt,name=volumeSnapshotClassName"` - // source specifies from where a snapshot will be created. + // source specifies whether the snapshot is (or should be) dynamically provisioned + // or already exists, and just requires a Kubernetes object representation. // This field is immutable after creation. // Required. Source VolumeSnapshotContentSource `json:"source" protobuf:"bytes,5,opt,name=source"` @@ -312,13 +343,23 @@ type VolumeSnapshotContentSource struct { VolumeHandle *string `json:"volumeHandle,omitempty" protobuf:"bytes,1,opt,name=volumeHandle"` // snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on - // the underlying storage system. + // the underlying storage system for which a Kubernetes object representation + // was (or should be) created. // This field is immutable. // +optional SnapshotHandle *string `json:"snapshotHandle,omitempty" protobuf:"bytes,2,opt,name=snapshotHandle"` } // VolumeSnapshotContentStatus is the status of a VolumeSnapshotContent object +// Note that CreationTime, RestoreSize, ReadyToUse, and Error are in both +// VolumeSnapshotStatus and VolumeSnapshotContentStatus. Fields in VolumeSnapshotStatus +// are updated based on fields in VolumeSnapshotContentStatus. They are eventual +// consistency. These fields are duplicate in both objects due to the following reasons: +// - Fields in VolumeSnapshotContentStatus can be used for filtering when importing a +// volumesnapshot. +// - VolumsnapshotStatus is used by end users because they cannot see VolumeSnapshotContent. +// - CSI snapshotter sidecar is light weight as it only watches VolumeSnapshotContent +// object, not VolumeSnapshot object. type VolumeSnapshotContentStatus struct { // snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. // If not specified, it indicates that dynamic snapshot creation has either failed @@ -328,8 +369,9 @@ type VolumeSnapshotContentStatus struct { // creationTime is the timestamp when the point-in-time snapshot is taken // by the underlying storage system. - // In dynamic snapshot creation case, this field will be filled in with the - // "creation_time" value returned from CSI "CreateSnapshotRequest" gRPC call. + // In dynamic snapshot creation case, this field will be filled in by the + // CSI snapshotter sidecar with the "creation_time" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "creation_time" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. // If not specified, it indicates the creation time is unknown. @@ -340,8 +382,9 @@ type VolumeSnapshotContentStatus struct { CreationTime *int64 `json:"creationTime,omitempty" protobuf:"varint,2,opt,name=creationTime"` // restoreSize represents the complete size of the snapshot in bytes. - // In dynamic snapshot creation case, this field will be filled in with the - // "size_bytes" value returned from CSI "CreateSnapshotRequest" gRPC call. + // In dynamic snapshot creation case, this field will be filled in by the + // CSI snapshotter sidecar with the "size_bytes" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "size_bytes" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. // When restoring a volume from this snapshot, the size of the volume MUST NOT @@ -352,8 +395,9 @@ type VolumeSnapshotContentStatus struct { RestoreSize *int64 `json:"restoreSize,omitempty" protobuf:"bytes,3,opt,name=restoreSize"` // readyToUse indicates if a snapshot is ready to be used to restore a volume. - // In dynamic snapshot creation case, this field will be filled in with the - // "ready_to_use" value returned from CSI "CreateSnapshotRequest" gRPC call. + // In dynamic snapshot creation case, this field will be filled in by the + // CSI snapshotter sidecar with the "ready_to_use" value returned from CSI + // "CreateSnapshot" gRPC call. // For a pre-existing snapshot, this field will be filled with the "ready_to_use" // value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, // otherwise, this field will be set to "True". @@ -361,7 +405,8 @@ type VolumeSnapshotContentStatus struct { // +optional. ReadyToUse *bool `json:"readyToUse,omitempty" protobuf:"varint,4,opt,name=readyToUse"` - // error is the latest observed error during snapshot creation, if any. + // error is the last observed error during snapshot creation, if any. + // Upon success after retry, this error field will be cleared. // +optional Error *VolumeSnapshotError `json:"error,omitempty" protobuf:"bytes,5,opt,name=error,casttype=VolumeSnapshotError"` } diff --git a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/zz_generated.deepcopy.go b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/zz_generated.deepcopy.go similarity index 99% rename from vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/zz_generated.deepcopy.go rename to vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/zz_generated.deepcopy.go index 2918bf92..febab0cd 100644 --- a/vendor/github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1/zz_generated.deepcopy.go +++ b/vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1/zz_generated.deepcopy.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright 2019 The Kubernetes Authors. +Copyright 2020 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. @@ -18,7 +18,7 @@ limitations under the License. // Code generated by deepcopy-gen. DO NOT EDIT. -package v1beta1 +package v1 import ( runtime "k8s.io/apimachinery/pkg/runtime" diff --git a/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md b/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md index a77e95e2..5e779fe6 100644 --- a/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md +++ b/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md @@ -1,3 +1,42 @@ +## 2.9.2 + +### Maintenance +- Bump github.com/go-task/slim-sprig (#1167) [3fcc5bf] +- Bump github.com/onsi/gomega from 1.27.3 to 1.27.4 (#1163) [6143ffe] + +## 2.9.1 + +### Fixes +This release fixes a longstanding issue where `ginkgo -coverpkg=./...` would not work. This is now resolved and fixes [#1161](https://github.com/onsi/ginkgo/issues/1161) and [#995](https://github.com/onsi/ginkgo/issues/995) +- Support -coverpkg=./... [26ca1b5] +- document coverpkg a bit more clearly [fc44c3b] + +### Maintenance +- bump various dependencies +- Improve Documentation and fix typo (#1158) [93de676] + +## 2.9.0 + +### Features +- AttachProgressReporter is an experimental feature that allows users to provide arbitrary information when a ProgressReport is requested [28801fe] + +- GinkgoT() has been expanded to include several Ginkgo-specific methods [2bd5a3b] + + The intent is to enable the development of third-party libraries that integrate deeply with Ginkgo using `GinkgoT()` to access Ginkgo's functionality. + +## 2.8.4 + +### Features +- Add OmitSuiteSetupNodes to JunitReportConfig (#1147) [979fbc2] +- Add a reference to ginkgolinter in docs.index.md (#1143) [8432589] + +### Fixes +- rename tools hack to see if it fixes things for downstream users [a8bb39a] + +### Maintenance +- Bump golang.org/x/text (#1144) [41b2a8a] +- Bump github.com/onsi/gomega from 1.27.0 to 1.27.1 (#1142) [7c4f583] + ## 2.8.3 Released to fix security issue in golang.org/x/net dependency diff --git a/vendor/github.com/onsi/ginkgo/v2/core_dsl.go b/vendor/github.com/onsi/ginkgo/v2/core_dsl.go index 0b13b0d2..a244bdc1 100644 --- a/vendor/github.com/onsi/ginkgo/v2/core_dsl.go +++ b/vendor/github.com/onsi/ginkgo/v2/core_dsl.go @@ -540,7 +540,7 @@ and will simply log the passed in text to the GinkgoWriter. If By is handed a f By will also generate and attach a ReportEntry to the spec. This will ensure that By annotations appear in Ginkgo's machine-readable reports. -Note that By does not generate a new Ginkgo node - rather it is simply synctactic sugar around GinkgoWriter and AddReportEntry +Note that By does not generate a new Ginkgo node - rather it is simply syntactic sugar around GinkgoWriter and AddReportEntry You can learn more about By here: https://onsi.github.io/ginkgo/#documenting-complex-specs-by */ func By(text string, callback ...func()) { @@ -771,3 +771,24 @@ func DeferCleanup(args ...interface{}) { } pushNode(internal.NewCleanupNode(deprecationTracker, fail, args...)) } + +/* +AttachProgressReporter allows you to register a function that will be called whenever Ginkgo generates a Progress Report. The contents returned by the function will be included in the report. + +**This is an experimental feature and the public-facing interface may change in a future minor version of Ginkgo** + +Progress Reports are generated: +- whenever the user explicitly requests one (via `SIGINFO` or `SIGUSR1`) +- on nodes decorated with PollProgressAfter +- on suites run with --poll-progress-after +- whenever a test times out + +Ginkgo uses Progress Reports to convey the current state of the test suite, including any running goroutines. By attaching a progress reporter you are able to supplement these reports with additional information. + +# AttachProgressReporter returns a function that can be called to detach the progress reporter + +You can learn more about AttachProgressReporter here: https://onsi.github.io/ginkgo/#attaching-additional-information-to-progress-reports +*/ +func AttachProgressReporter(reporter func() string) func() { + return global.Suite.AttachProgressReporter(reporter) +} diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go index 496ec4a2..86da7340 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go @@ -25,7 +25,16 @@ func CompileSuite(suite TestSuite, goFlagsConfig types.GoFlagsConfig) TestSuite return suite } - args, err := types.GenerateGoTestCompileArgs(goFlagsConfig, path, "./") + ginkgoInvocationPath, _ := os.Getwd() + ginkgoInvocationPath, _ = filepath.Abs(ginkgoInvocationPath) + packagePath := suite.AbsPath() + pathToInvocationPath, err := filepath.Rel(packagePath, ginkgoInvocationPath) + if err != nil { + suite.State = TestSuiteStateFailedToCompile + suite.CompilationError = fmt.Errorf("Failed to get relative path from package to the current working directory:\n%s", err.Error()) + return suite + } + args, err := types.GenerateGoTestCompileArgs(goFlagsConfig, path, "./", pathToInvocationPath) if err != nil { suite.State = TestSuiteStateFailedToCompile suite.CompilationError = fmt.Errorf("Failed to generate go test compile flags:\n%s", err.Error()) diff --git a/vendor/github.com/onsi/ginkgo/v2/tools.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo_cli_dependencies.go similarity index 50% rename from vendor/github.com/onsi/ginkgo/v2/tools.go rename to vendor/github.com/onsi/ginkgo/v2/ginkgo_cli_dependencies.go index 97429446..85162720 100644 --- a/vendor/github.com/onsi/ginkgo/v2/tools.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo_cli_dependencies.go @@ -1,5 +1,5 @@ -//go:build tools -// +build tools +//go:build ginkgoclidependencies +// +build ginkgoclidependencies package ginkgo diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go index c5a7eb94..17073145 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go @@ -1,26 +1,42 @@ package ginkgo -import "github.com/onsi/ginkgo/v2/internal/testingtproxy" +import ( + "github.com/onsi/ginkgo/v2/internal/testingtproxy" +) /* -GinkgoT() implements an interface analogous to *testing.T and can be used with -third-party libraries that accept *testing.T through an interface. +GinkgoT() implements an interface that allows third party libraries to integrate with and build on top of Ginkgo. + +GinkgoT() is analogous to *testing.T and implements the majority of *testing.T's methods. It can be typically be used a a drop-in replacement with third-party libraries that accept *testing.T through an interface. GinkgoT() takes an optional offset argument that can be used to get the correct line number associated with the failure - though you do not need to use this if you call GinkgoHelper() or GinkgoT().Helper() appropriately You can learn more here: https://onsi.github.io/ginkgo/#using-third-party-libraries */ -func GinkgoT(optionalOffset ...int) GinkgoTInterface { +func GinkgoT(optionalOffset ...int) FullGinkgoTInterface { offset := 3 if len(optionalOffset) > 0 { offset = optionalOffset[0] } - return testingtproxy.New(GinkgoWriter, Fail, Skip, DeferCleanup, CurrentSpecReport, offset) + return testingtproxy.New( + GinkgoWriter, + Fail, + Skip, + DeferCleanup, + CurrentSpecReport, + AddReportEntry, + GinkgoRecover, + AttachProgressReporter, + suiteConfig.RandomSeed, + suiteConfig.ParallelProcess, + suiteConfig.ParallelTotal, + reporterConfig.NoColor, + offset) } /* -The interface returned by GinkgoT(). This covers most of the methods in the testing package's T. +The portion of the interface returned by GinkgoT() that maps onto methods in the testing package's T. */ type GinkgoTInterface interface { Cleanup(func()) @@ -43,3 +59,33 @@ type GinkgoTInterface interface { Skipped() bool TempDir() string } + +/* +Additional methods returned by GinkgoT() that provide deeper integration points into Ginkgo +*/ +type FullGinkgoTInterface interface { + GinkgoTInterface + + AddReportEntryVisibilityAlways(name string, args ...any) + AddReportEntryVisibilityFailureOrVerbose(name string, args ...any) + AddReportEntryVisibilityNever(name string, args ...any) + + //Prints to the GinkgoWriter + Print(a ...interface{}) + Printf(format string, a ...interface{}) + Println(a ...interface{}) + + //Provides access to Ginkgo's color formatting, correctly configured to match the color settings specified in the invocation of ginkgo + F(format string, args ...any) string + Fi(indentation uint, format string, args ...any) string + Fiw(indentation uint, maxWidth uint, format string, args ...any) string + + GinkgoRecover() + DeferCleanup(args ...any) + + RandomSeed() int64 + ParallelProcess() int + ParallelTotal() int + + AttachProgressReporter(func() string) func() +} diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/progress_reporter_manager.go b/vendor/github.com/onsi/ginkgo/v2/internal/progress_reporter_manager.go new file mode 100644 index 00000000..2c6e260f --- /dev/null +++ b/vendor/github.com/onsi/ginkgo/v2/internal/progress_reporter_manager.go @@ -0,0 +1,79 @@ +package internal + +import ( + "context" + "sort" + "strings" + "sync" + + "github.com/onsi/ginkgo/v2/types" +) + +type ProgressReporterManager struct { + lock *sync.Mutex + progressReporters map[int]func() string + prCounter int +} + +func NewProgressReporterManager() *ProgressReporterManager { + return &ProgressReporterManager{ + progressReporters: map[int]func() string{}, + lock: &sync.Mutex{}, + } +} + +func (prm *ProgressReporterManager) AttachProgressReporter(reporter func() string) func() { + prm.lock.Lock() + defer prm.lock.Unlock() + prm.prCounter += 1 + prCounter := prm.prCounter + prm.progressReporters[prCounter] = reporter + + return func() { + prm.lock.Lock() + defer prm.lock.Unlock() + delete(prm.progressReporters, prCounter) + } +} + +func (prm *ProgressReporterManager) QueryProgressReporters(ctx context.Context, failer *Failer) []string { + prm.lock.Lock() + keys := []int{} + for key := range prm.progressReporters { + keys = append(keys, key) + } + sort.Ints(keys) + reporters := []func() string{} + for _, key := range keys { + reporters = append(reporters, prm.progressReporters[key]) + } + prm.lock.Unlock() + + if len(reporters) == 0 { + return nil + } + out := []string{} + for _, reporter := range reporters { + reportC := make(chan string, 1) + go func() { + defer func() { + e := recover() + if e != nil { + failer.Panic(types.NewCodeLocationWithStackTrace(1), e) + reportC <- "failed to query attached progress reporter" + } + }() + reportC <- reporter() + }() + var report string + select { + case report = <-reportC: + case <-ctx.Done(): + return out + } + if strings.TrimSpace(report) != "" { + out = append(out, report) + } + } + return out +} diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go b/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go index 8f569dd3..2515b84a 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go @@ -2,8 +2,6 @@ package internal import ( "context" - "sort" - "sync" "github.com/onsi/ginkgo/v2/types" ) @@ -17,11 +15,9 @@ type SpecContext interface { type specContext struct { context.Context + *ProgressReporterManager - cancel context.CancelFunc - lock *sync.Mutex - progressReporters map[int]func() string - prCounter int + cancel context.CancelFunc suite *Suite } @@ -36,11 +32,9 @@ This is because Ginkgo needs finer control over when the context is canceled. S func NewSpecContext(suite *Suite) *specContext { ctx, cancel := context.WithCancel(context.Background()) sc := &specContext{ - cancel: cancel, - suite: suite, - lock: &sync.Mutex{}, - prCounter: 0, - progressReporters: map[int]func() string{}, + cancel: cancel, + suite: suite, + ProgressReporterManager: NewProgressReporterManager(), } ctx = context.WithValue(ctx, "GINKGO_SPEC_CONTEXT", sc) //yes, yes, the go docs say don't use a string for a key... but we'd rather avoid a circular dependency between Gomega and Ginkgo sc.Context = ctx //thank goodness for garbage collectors that can handle circular dependencies @@ -51,40 +45,3 @@ func NewSpecContext(suite *Suite) *specContext { func (sc *specContext) SpecReport() types.SpecReport { return sc.suite.CurrentSpecReport() } - -func (sc *specContext) AttachProgressReporter(reporter func() string) func() { - sc.lock.Lock() - defer sc.lock.Unlock() - sc.prCounter += 1 - prCounter := sc.prCounter - sc.progressReporters[prCounter] = reporter - - return func() { - sc.lock.Lock() - defer sc.lock.Unlock() - delete(sc.progressReporters, prCounter) - } -} - -func (sc *specContext) QueryProgressReporters() []string { - sc.lock.Lock() - keys := []int{} - for key := range sc.progressReporters { - keys = append(keys, key) - } - sort.Ints(keys) - reporters := []func() string{} - for _, key := range keys { - reporters = append(reporters, sc.progressReporters[key]) - } - sc.lock.Unlock() - - if len(reporters) == 0 { - return nil - } - out := []string{} - for _, reporter := range reporters { - out = append(out, reporter()) - } - return out -} diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/suite.go b/vendor/github.com/onsi/ginkgo/v2/internal/suite.go index 5ddf1007..a1dbd4c6 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/suite.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/suite.go @@ -9,6 +9,7 @@ import ( "github.com/onsi/ginkgo/v2/internal/parallel_support" "github.com/onsi/ginkgo/v2/reporters" "github.com/onsi/ginkgo/v2/types" + "golang.org/x/net/context" ) type Phase uint @@ -19,10 +20,14 @@ const ( PhaseRun ) +var PROGRESS_REPORTER_DEADLING = 5 * time.Second + type Suite struct { tree *TreeNode topLevelContainers Nodes + *ProgressReporterManager + phase Phase suiteNodes Nodes @@ -64,8 +69,9 @@ type Suite struct { func NewSuite() *Suite { return &Suite{ - tree: &TreeNode{}, - phase: PhaseBuildTopLevel, + tree: &TreeNode{}, + phase: PhaseBuildTopLevel, + ProgressReporterManager: NewProgressReporterManager(), selectiveLock: &sync.Mutex{}, } @@ -338,10 +344,13 @@ func (suite *Suite) generateProgressReport(fullReport bool) types.ProgressReport suite.selectiveLock.Lock() defer suite.selectiveLock.Unlock() + deadline, cancel := context.WithTimeout(context.Background(), PROGRESS_REPORTER_DEADLING) + defer cancel() var additionalReports []string if suite.currentSpecContext != nil { - additionalReports = suite.currentSpecContext.QueryProgressReporters() + additionalReports = append(additionalReports, suite.currentSpecContext.QueryProgressReporters(deadline, suite.failer)...) } + additionalReports = append(additionalReports, suite.QueryProgressReporters(deadline, suite.failer)...) gwOutput := suite.currentSpecReport.CapturedGinkgoWriterOutput + string(suite.writer.Bytes()) pr, err := NewProgressReport(suite.isRunningInParallel(), suite.currentSpecReport, suite.currentNode, suite.currentNodeStartTime, suite.currentByStep, gwOutput, timelineLocation, additionalReports, suite.config.SourceRoots, fullReport) diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go b/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go index c797c95d..92acc0a0 100644 --- a/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go +++ b/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go @@ -5,34 +5,61 @@ import ( "io" "os" + "github.com/onsi/ginkgo/v2/formatter" "github.com/onsi/ginkgo/v2/internal" "github.com/onsi/ginkgo/v2/types" ) type failFunc func(message string, callerSkip ...int) type skipFunc func(message string, callerSkip ...int) -type cleanupFunc func(args ...interface{}) +type cleanupFunc func(args ...any) type reportFunc func() types.SpecReport +type addReportEntryFunc func(names string, args ...any) +type ginkgoWriterInterface interface { + io.Writer -func New(writer io.Writer, fail failFunc, skip skipFunc, cleanup cleanupFunc, report reportFunc, offset int) *ginkgoTestingTProxy { + Print(a ...interface{}) + Printf(format string, a ...interface{}) + Println(a ...interface{}) +} +type ginkgoRecoverFunc func() +type attachProgressReporterFunc func(func() string) func() + +func New(writer ginkgoWriterInterface, fail failFunc, skip skipFunc, cleanup cleanupFunc, report reportFunc, addReportEntry addReportEntryFunc, ginkgoRecover ginkgoRecoverFunc, attachProgressReporter attachProgressReporterFunc, randomSeed int64, parallelProcess int, parallelTotal int, noColor bool, offset int) *ginkgoTestingTProxy { return &ginkgoTestingTProxy{ - fail: fail, - offset: offset, - writer: writer, - skip: skip, - cleanup: cleanup, - report: report, + fail: fail, + offset: offset, + writer: writer, + skip: skip, + cleanup: cleanup, + report: report, + addReportEntry: addReportEntry, + ginkgoRecover: ginkgoRecover, + attachProgressReporter: attachProgressReporter, + randomSeed: randomSeed, + parallelProcess: parallelProcess, + parallelTotal: parallelTotal, + f: formatter.NewWithNoColorBool(noColor), } } type ginkgoTestingTProxy struct { - fail failFunc - skip skipFunc - cleanup cleanupFunc - report reportFunc - offset int - writer io.Writer -} + fail failFunc + skip skipFunc + cleanup cleanupFunc + report reportFunc + offset int + writer ginkgoWriterInterface + addReportEntry addReportEntryFunc + ginkgoRecover ginkgoRecoverFunc + attachProgressReporter attachProgressReporterFunc + randomSeed int64 + parallelProcess int + parallelTotal int + f formatter.Formatter +} + +// basic testing.T support func (t *ginkgoTestingTProxy) Cleanup(f func()) { t.cleanup(f, internal.Offset(1)) @@ -126,3 +153,54 @@ func (t *ginkgoTestingTProxy) TempDir() string { return tmpDir } + +// FullGinkgoTInterface +func (t *ginkgoTestingTProxy) AddReportEntryVisibilityAlways(name string, args ...any) { + finalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityAlways} + t.addReportEntry(name, append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) AddReportEntryVisibilityFailureOrVerbose(name string, args ...any) { + finalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityFailureOrVerbose} + t.addReportEntry(name, append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) AddReportEntryVisibilityNever(name string, args ...any) { + finalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityNever} + t.addReportEntry(name, append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) Print(a ...any) { + t.writer.Print(a...) +} +func (t *ginkgoTestingTProxy) Printf(format string, a ...any) { + t.writer.Printf(format, a...) +} +func (t *ginkgoTestingTProxy) Println(a ...any) { + t.writer.Println(a...) +} +func (t *ginkgoTestingTProxy) F(format string, args ...any) string { + return t.f.F(format, args...) +} +func (t *ginkgoTestingTProxy) Fi(indentation uint, format string, args ...any) string { + return t.f.Fi(indentation, format, args...) +} +func (t *ginkgoTestingTProxy) Fiw(indentation uint, maxWidth uint, format string, args ...any) string { + return t.f.Fiw(indentation, maxWidth, format, args...) +} +func (t *ginkgoTestingTProxy) GinkgoRecover() { + t.ginkgoRecover() +} +func (t *ginkgoTestingTProxy) DeferCleanup(args ...any) { + finalArgs := []any{internal.Offset(1)} + t.cleanup(append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) RandomSeed() int64 { + return t.randomSeed +} +func (t *ginkgoTestingTProxy) ParallelProcess() int { + return t.parallelProcess +} +func (t *ginkgoTestingTProxy) ParallelTotal() int { + return t.parallelTotal +} +func (t *ginkgoTestingTProxy) AttachProgressReporter(f func() string) func() { + return t.attachProgressReporter(f) +} diff --git a/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go b/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go index fb87e24d..ca98609d 100644 --- a/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go +++ b/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go @@ -36,6 +36,9 @@ type JunitReportConfig struct { // Enable OmitLeafNodeType to prevent the spec leaf node type from appearing in the spec name OmitLeafNodeType bool + + // Enable OmitSuiteSetupNodes to prevent the creation of testcase entries for setup nodes + OmitSuiteSetupNodes bool } type JUnitTestSuites struct { @@ -177,6 +180,9 @@ func GenerateJUnitReportWithConfig(report types.Report, dst string, config Junit }, } for _, spec := range report.SpecReports { + if config.OmitSuiteSetupNodes && spec.LeafNodeType != types.NodeTypeIt { + continue + } name := fmt.Sprintf("[%s]", spec.LeafNodeType) if config.OmitLeafNodeType { name = "" diff --git a/vendor/github.com/onsi/ginkgo/v2/types/config.go b/vendor/github.com/onsi/ginkgo/v2/types/config.go index 1efd77d3..1014c7b4 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/config.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/config.go @@ -8,6 +8,7 @@ package types import ( "flag" "os" + "path/filepath" "runtime" "strconv" "strings" @@ -600,13 +601,29 @@ func VetAndInitializeCLIAndGoConfig(cliConfig CLIConfig, goFlagsConfig GoFlagsCo } // GenerateGoTestCompileArgs is used by the Ginkgo CLI to generate command line arguments to pass to the go test -c command when compiling the test -func GenerateGoTestCompileArgs(goFlagsConfig GoFlagsConfig, destination string, packageToBuild string) ([]string, error) { +func GenerateGoTestCompileArgs(goFlagsConfig GoFlagsConfig, destination string, packageToBuild string, pathToInvocationPath string) ([]string, error) { // if the user has set the CoverProfile run-time flag make sure to set the build-time cover flag to make sure // the built test binary can generate a coverprofile if goFlagsConfig.CoverProfile != "" { goFlagsConfig.Cover = true } + if goFlagsConfig.CoverPkg != "" { + coverPkgs := strings.Split(goFlagsConfig.CoverPkg, ",") + adjustedCoverPkgs := make([]string, len(coverPkgs)) + for i, coverPkg := range coverPkgs { + coverPkg = strings.Trim(coverPkg, " ") + if strings.HasPrefix(coverPkg, "./") { + // this is a relative coverPkg - we need to reroot it + adjustedCoverPkgs[i] = "./" + filepath.Join(pathToInvocationPath, strings.TrimPrefix(coverPkg, "./")) + } else { + // this is a package name - don't touch it + adjustedCoverPkgs[i] = coverPkg + } + } + goFlagsConfig.CoverPkg = strings.Join(adjustedCoverPkgs, ",") + } + args := []string{"test", "-c", "-o", destination, packageToBuild} goArgs, err := GenerateFlagArgs( GoBuildFlags, diff --git a/vendor/github.com/onsi/ginkgo/v2/types/version.go b/vendor/github.com/onsi/ginkgo/v2/types/version.go index 185317c6..8e7f7404 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/version.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/version.go @@ -1,3 +1,3 @@ package types -const VERSION = "2.8.3" +const VERSION = "2.9.2" diff --git a/vendor/github.com/onsi/gomega/CHANGELOG.md b/vendor/github.com/onsi/gomega/CHANGELOG.md index 99ea9407..ef428f6f 100644 --- a/vendor/github.com/onsi/gomega/CHANGELOG.md +++ b/vendor/github.com/onsi/gomega/CHANGELOG.md @@ -1,3 +1,44 @@ +## 1.27.6 + +### Fixes +- Allow collections matchers to work correctly when expected has nil elements [60e7cf3] + +### Maintenance +- updates MatchError godoc comment to also accept a Gomega matcher (#654) [67b869d] + +## 1.27.5 + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.9.1 to 2.9.2 (#653) [a215021] +- Bump github.com/go-task/slim-sprig (#652) [a26fed8] + +## 1.27.4 + +### Fixes +- improve error formatting and remove duplication of error message in Eventually/Consistently [854f075] + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.9.0 to 2.9.1 (#650) [ccebd9b] + +## 1.27.3 + +### Fixes +- format.Object now always includes err.Error() when passed an error [86d97ef] +- Fix HaveExactElements to work inside ContainElement or other collection matchers (#648) [636757e] + +### Maintenance +- Bump github.com/golang/protobuf from 1.5.2 to 1.5.3 (#649) [cc16689] +- Bump github.com/onsi/ginkgo/v2 from 2.8.4 to 2.9.0 (#646) [e783366] + +## 1.27.2 + +### Fixes +- improve poll progress message when polling a consistently that has been passing [28a319b] + +### Maintenance +- bump ginkgo +- remove tools.go hack as Ginkgo 2.8.2 automatically pulls in the cli dependencies [81443b3] + ## 1.27.1 ### Maintenance diff --git a/vendor/github.com/onsi/gomega/format/format.go b/vendor/github.com/onsi/gomega/format/format.go index 1a2ed877..56bdd053 100644 --- a/vendor/github.com/onsi/gomega/format/format.go +++ b/vendor/github.com/onsi/gomega/format/format.go @@ -52,7 +52,7 @@ var CharactersAroundMismatchToInclude uint = 5 var contextType = reflect.TypeOf((*context.Context)(nil)).Elem() var timeType = reflect.TypeOf(time.Time{}) -//The default indentation string emitted by the format package +// The default indentation string emitted by the format package var Indent = " " var longFormThreshold = 20 @@ -258,7 +258,11 @@ Set PrintContextObjects to true to print the content of objects implementing con func Object(object interface{}, indentation uint) string { indent := strings.Repeat(Indent, int(indentation)) value := reflect.ValueOf(object) - return fmt.Sprintf("%s<%s>: %s", indent, formatType(value), formatValue(value, indentation)) + commonRepresentation := "" + if err, ok := object.(error); ok { + commonRepresentation += "\n" + IndentString(err.Error(), indentation) + "\n" + indent + } + return fmt.Sprintf("%s<%s>: %s%s", indent, formatType(value), commonRepresentation, formatValue(value, indentation)) } /* diff --git a/vendor/github.com/onsi/gomega/gomega_dsl.go b/vendor/github.com/onsi/gomega/gomega_dsl.go index 4405c068..872592bf 100644 --- a/vendor/github.com/onsi/gomega/gomega_dsl.go +++ b/vendor/github.com/onsi/gomega/gomega_dsl.go @@ -22,7 +22,7 @@ import ( "github.com/onsi/gomega/types" ) -const GOMEGA_VERSION = "1.27.1" +const GOMEGA_VERSION = "1.27.6" const nilGomegaPanic = `You are trying to make an assertion, but haven't registered Gomega's fail handler. If you're using Ginkgo then you probably forgot to put your assertion in an It(). @@ -204,7 +204,7 @@ func Ω(actual interface{}, extra ...interface{}) Assertion { // All subsequent arguments will be required to be nil/zero. // // This is convenient if you want to make an assertion on a method/function that returns -// a value and an error - a common patter in Go. +// a value and an error - a common pattern in Go. // // For example, given a function with signature: // diff --git a/vendor/github.com/onsi/gomega/internal/async_assertion.go b/vendor/github.com/onsi/gomega/internal/async_assertion.go index 7f622696..1188b0bc 100644 --- a/vendor/github.com/onsi/gomega/internal/async_assertion.go +++ b/vendor/github.com/onsi/gomega/internal/async_assertion.go @@ -412,7 +412,7 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch message += format.Object(attachment.Object, 1) } } else { - message = preamble + "\n" + err.Error() + "\n" + format.Object(err, 1) + message = preamble + "\n" + format.Object(err, 1) } return message } @@ -425,10 +425,18 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch if actualErr == nil { if matcherErr == nil { - if desiredMatch { - message += matcher.FailureMessage(actual) + if desiredMatch != matches { + if desiredMatch { + message += matcher.FailureMessage(actual) + } else { + message += matcher.NegatedFailureMessage(actual) + } } else { - message += matcher.NegatedFailureMessage(actual) + if assertion.asyncType == AsyncAssertionTypeConsistently { + message += "There is no failure as the matcher passed to Consistently has not yet failed" + } else { + message += "There is no failure as the matcher passed to Eventually succeeded on its most recent iteration" + } } } else { var fgErr formattedGomegaError diff --git a/vendor/github.com/onsi/gomega/matchers.go b/vendor/github.com/onsi/gomega/matchers.go index 44056ad6..b832f3db 100644 --- a/vendor/github.com/onsi/gomega/matchers.go +++ b/vendor/github.com/onsi/gomega/matchers.go @@ -87,14 +87,17 @@ func Succeed() types.GomegaMatcher { return &matchers.SucceedMatcher{} } -// MatchError succeeds if actual is a non-nil error that matches the passed in string/error. +// MatchError succeeds if actual is a non-nil error that matches the passed in +// string, error, or matcher. // // These are valid use-cases: // -// Expect(err).Should(MatchError("an error")) //asserts that err.Error() == "an error" -// Expect(err).Should(MatchError(SomeError)) //asserts that err == SomeError (via reflect.DeepEqual) +// Expect(err).Should(MatchError("an error")) //asserts that err.Error() == "an error" +// Expect(err).Should(MatchError(SomeError)) //asserts that err == SomeError (via reflect.DeepEqual) +// Expect(err).Should(MatchError(ContainsSubstring("sprocket not found"))) // asserts that edrr.Error() contains substring "sprocket not found" // -// It is an error for err to be nil or an object that does not implement the Error interface +// It is an error for err to be nil or an object that does not implement the +// Error interface func MatchError(expected interface{}) types.GomegaMatcher { return &matchers.MatchErrorMatcher{ Expected: expected, diff --git a/vendor/github.com/onsi/gomega/matchers/consist_of.go b/vendor/github.com/onsi/gomega/matchers/consist_of.go index e8ef0dee..f69037a4 100644 --- a/vendor/github.com/onsi/gomega/matchers/consist_of.go +++ b/vendor/github.com/onsi/gomega/matchers/consist_of.go @@ -48,11 +48,13 @@ func neighbours(value, matcher interface{}) (bool, error) { func equalMatchersToElements(matchers []interface{}) (elements []interface{}) { for _, matcher := range matchers { - equalMatcher, ok := matcher.(*EqualMatcher) - if ok { - matcher = equalMatcher.Expected + if equalMatcher, ok := matcher.(*EqualMatcher); ok { + elements = append(elements, equalMatcher.Expected) + } else if _, ok := matcher.(*BeNilMatcher); ok { + elements = append(elements, nil) + } else { + elements = append(elements, matcher) } - elements = append(elements, matcher) } return } @@ -72,11 +74,13 @@ func flatten(elems []interface{}) []interface{} { func matchers(expectedElems []interface{}) (matchers []interface{}) { for _, e := range flatten(expectedElems) { - matcher, isMatcher := e.(omegaMatcher) - if !isMatcher { - matcher = &EqualMatcher{Expected: e} + if e == nil { + matchers = append(matchers, &BeNilMatcher{}) + } else if matcher, isMatcher := e.(omegaMatcher); isMatcher { + matchers = append(matchers, matcher) + } else { + matchers = append(matchers, &EqualMatcher{Expected: e}) } - matchers = append(matchers, matcher) } return } @@ -89,9 +93,14 @@ func presentable(elems []interface{}) interface{} { } sv := reflect.ValueOf(elems) - tt := sv.Index(0).Elem().Type() + firstEl := sv.Index(0) + if firstEl.IsNil() { + return elems + } + tt := firstEl.Elem().Type() for i := 1; i < sv.Len(); i++ { - if sv.Index(i).Elem().Type() != tt { + el := sv.Index(i) + if el.IsNil() || (sv.Index(i).Elem().Type() != tt) { return elems } } diff --git a/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go b/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go index 19d8f3d1..7cce776c 100644 --- a/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go +++ b/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go @@ -19,6 +19,8 @@ type HaveExactElementsMatcher struct { } func (matcher *HaveExactElementsMatcher) Match(actual interface{}) (success bool, err error) { + matcher.resetState() + if isMap(actual) { return false, fmt.Errorf("error") } @@ -73,3 +75,9 @@ func (matcher *HaveExactElementsMatcher) FailureMessage(actual interface{}) (mes func (matcher *HaveExactElementsMatcher) NegatedFailureMessage(actual interface{}) (message string) { return format.Message(actual, "not to contain elements", presentable(matcher.Elements)) } + +func (matcher *HaveExactElementsMatcher) resetState() { + matcher.mismatchFailures = nil + matcher.missingIndex = 0 + matcher.extraIndex = 0 +} diff --git a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go index 5bcfdd2a..22a1b673 100644 --- a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go +++ b/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go @@ -31,5 +31,5 @@ func (matcher *HaveOccurredMatcher) FailureMessage(actual interface{}) (message } func (matcher *HaveOccurredMatcher) NegatedFailureMessage(actual interface{}) (message string) { - return fmt.Sprintf("Unexpected error:\n%s\n%s\n%s", format.Object(actual, 1), format.IndentString(actual.(error).Error(), 1), "occurred") + return fmt.Sprintf("Unexpected error:\n%s\n%s", format.Object(actual, 1), "occurred") } diff --git a/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go b/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go index da5a3959..327350f7 100644 --- a/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go +++ b/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go @@ -34,7 +34,7 @@ func (matcher *SucceedMatcher) FailureMessage(actual interface{}) (message strin if errors.As(actual.(error), &fgErr) { return fgErr.FormattedGomegaError() } - return fmt.Sprintf("Expected success, but got an error:\n%s\n%s", format.Object(actual, 1), format.IndentString(actual.(error).Error(), 1)) + return fmt.Sprintf("Expected success, but got an error:\n%s", format.Object(actual, 1)) } func (matcher *SucceedMatcher) NegatedFailureMessage(actual interface{}) (message string) { diff --git a/vendor/github.com/onsi/gomega/tools b/vendor/github.com/onsi/gomega/tools deleted file mode 100644 index e4195cf3..00000000 --- a/vendor/github.com/onsi/gomega/tools +++ /dev/null @@ -1,8 +0,0 @@ -//go:build tools -// +build tools - -package main - -import ( - _ "github.com/onsi/ginkgo/v2/ginkgo" -) diff --git a/vendor/golang.org/x/net/html/doc.go b/vendor/golang.org/x/net/html/doc.go index 822ed42a..7a96eae3 100644 --- a/vendor/golang.org/x/net/html/doc.go +++ b/vendor/golang.org/x/net/html/doc.go @@ -92,6 +92,21 @@ example, to process each anchor node in depth-first order: The relevant specifications include: https://html.spec.whatwg.org/multipage/syntax.html and https://html.spec.whatwg.org/multipage/syntax.html#tokenization + +# Security Considerations + +Care should be taken when parsing and interpreting HTML, whether full documents +or fragments, within the framework of the HTML specification, especially with +regard to untrusted inputs. + +This package provides both a tokenizer and a parser. Only the parser constructs +a DOM according to the HTML specification, resolving malformed and misplaced +tags where appropriate. The tokenizer simply tokenizes the HTML presented to it, +and as such does not resolve issues that may exist in the processed HTML, +producing a literal interpretation of the input. + +If your use case requires semantically well-formed HTML, as defined by the +WHATWG specifiction, the parser should be used rather than the tokenizer. */ package html // import "golang.org/x/net/html" diff --git a/vendor/golang.org/x/net/html/escape.go b/vendor/golang.org/x/net/html/escape.go index d8561396..04c6bec2 100644 --- a/vendor/golang.org/x/net/html/escape.go +++ b/vendor/golang.org/x/net/html/escape.go @@ -193,6 +193,87 @@ func lower(b []byte) []byte { return b } +// escapeComment is like func escape but escapes its input bytes less often. +// Per https://github.com/golang/go/issues/58246 some HTML comments are (1) +// meaningful and (2) contain angle brackets that we'd like to avoid escaping +// unless we have to. +// +// "We have to" includes the '&' byte, since that introduces other escapes. +// +// It also includes those bytes (not including EOF) that would otherwise end +// the comment. Per the summary table at the bottom of comment_test.go, this is +// the '>' byte that, per above, we'd like to avoid escaping unless we have to. +// +// Studying the summary table (and T actions in its '>' column) closely, we +// only need to escape in states 43, 44, 49, 51 and 52. State 43 is at the +// start of the comment data. State 52 is after a '!'. The other three states +// are after a '-'. +// +// Our algorithm is thus to escape every '&' and to escape '>' if and only if: +// - The '>' is after a '!' or '-' (in the unescaped data) or +// - The '>' is at the start of the comment data (after the opening ""); err != nil { diff --git a/vendor/golang.org/x/net/html/token.go b/vendor/golang.org/x/net/html/token.go index 50f7c6aa..5c2a1f4e 100644 --- a/vendor/golang.org/x/net/html/token.go +++ b/vendor/golang.org/x/net/html/token.go @@ -110,7 +110,7 @@ func (t Token) String() string { case SelfClosingTagToken: return "<" + t.tagString() + "/>" case CommentToken: - return "" + return "" case DoctypeToken: return "" } @@ -598,10 +598,10 @@ scriptDataDoubleEscapeEnd: // readComment reads the next comment token starting with "