diff --git a/.ci/build b/.ci/build index c8436764..2202a50d 100755 --- a/.ci/build +++ b/.ci/build @@ -66,7 +66,7 @@ if [[ -z "$LOCAL_BUILD" ]]; then # If the LOCAL_BUILD environment variable is set, we simply run `go build`. else - GO111MODULE=on go build \ + go build \ -v \ -mod=vendor \ -o "${BINARY_PATH}/kupid" \ diff --git a/.ci/pipeline_definitions b/.ci/pipeline_definitions index f5c51989..f57b48b0 100644 --- a/.ci/pipeline_definitions +++ b/.ci/pipeline_definitions @@ -19,11 +19,11 @@ kupid: build: ~ steps: check: - image: 'golang:1.19.4' + image: 'golang:1.23.1' test: - image: 'golang:1.19.4' + image: 'golang:1.23.1' build: - image: 'golang:1.19.4' + image: 'golang:1.23.1' output_dir: 'binary' jobs: diff --git a/Dockerfile b/Dockerfile index f215aff9..274d9771 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Build the manager binary -FROM golang:1.19.4 as builder +FROM golang:1.23.1 as builder WORKDIR /go/src/github.com/gardener/kupid # Copy the Go Modules manifests diff --git a/charts/gardener-extension-kupid/templates/clusterpodschedulingpolicy.yaml b/charts/gardener-extension-kupid/templates/clusterpodschedulingpolicy.yaml index 5b6bba11..3419fff4 100644 --- a/charts/gardener-extension-kupid/templates/clusterpodschedulingpolicy.yaml +++ b/charts/gardener-extension-kupid/templates/clusterpodschedulingpolicy.yaml @@ -20,6 +20,10 @@ spec: podSelector: matchLabels: {{ toYaml $policy.podLabels | indent 6 }} + {{- if $policy.podExpressions }} + matchExpressions: +{{ toYaml $policy.podExpressions | indent 6}} + {{- end }} {{- else }} podSelector: {} {{- end }} diff --git a/charts/gardener-extension-kupid/values.yaml b/charts/gardener-extension-kupid/values.yaml index 666fdf23..b255423b 100755 --- a/charts/gardener-extension-kupid/values.yaml +++ b/charts/gardener-extension-kupid/values.yaml @@ -44,6 +44,9 @@ enableLeaderElection: true # podLabels: # app: etcd-statefulset # role: main +# podExpressions: +# - key: networking.resources.gardener.cloud/to-etcd-main-client-tcp-2379 +# operator: DoesNotExist # nodeLabels: # pool.worker.gardener.cloud/dedicated-for: etcd # tolerations: diff --git a/example/controller-registration.yaml b/example/controller-registration.yaml index 3c31a3cf..fca19a27 100644 --- a/example/controller-registration.yaml +++ b/example/controller-registration.yaml @@ -5,10 +5,10 @@ metadata: name: kupid type: helm providerConfig: - chart: H4sIAAAAAAAAA+19a3PcNrKoP8+vwFX2lOVbIkeSJTlHedRxZMfriiOrLF3vPWcrleKQ0AzXHJLhQ4ri9f3tt7sBvkkQHEuynaArFY9IsPHsRr/QWDqJx0OeWPz3jIepH4XWuzz2vfmD24NdgCeHh/QvQPtf+r33+GBv/3D/6Aif7x0cHB09YIe32IZByNPMSRh7kERRpio39v4LheXQ/NsrHqz9ZRgl/GPrwAk+OjgYnH+Y9tb8Hx3tP37Adm+jg2PwF5//r9iZk2U8CVOWRUzMN7te8ZAtcj/w/HDJYsd95yx5as++YhcrP2VpHsdRksEPWCMBWwbRgq2dzF1B6R2W8MDJ/CsO32Wr2nMn9ABByJfwNgrZdpzwS/937rFrH8r9r0c2ex0GNywK6UtsEot5wgI/5PbMfnb+63kGbQMUJ9F6DQjenpwzz0/Smb30szn9XzR/Zi/+SOb0/+LBajnH/xV/plfhvEK0gP7lMbv0A57O/redXsfw/4XzDv6freH3/4Oib53Ej/KUvXz2HCqMk+hf3M1mtu9xZy7KwaOZfZW6kcfns089q/owSP8nKyfJ7BtnHXx0HWP0v79/0Kb/g709Q//3AU7sv+UJzvsxu9qbOXFc/blrf23vWh6/mnk8dRM/zuj5U/Z32BqYiwuEXUYJy1acvZDriP2Eq4eVq2kWOmt+zIaW2eyqp7ZPPSZ/JRikfy9y7WV0K3WM0f+Twzb9Hx4+2TX0fx8wn7Pzs2f/1/oRdr+TKL6BLXOVXcBiOGb7u/sH7PzpGTt/zoDKnZD+cC5ho/SdjDM3WsdOeIMbe0X+bhRmib/IYa9OZ/P5rMD/yndheXHrJRTL/EufJ8BIQLJYcWvf3p1BuWV0vEQUiDpdMctlW7Y9h/+ueOhFyRz291W+sKHWebFoqx8r2MPnxecWNSIKAljWCV/6aZaQzGEDWlrczGZ/23adjIkK3j5/c/7y9ekj+Sf/3VnHAZ8PYcE9kT0vyOX4JIAlxJOzyDuH3ng5CCzLsyjw3ZtaoZ63W9hpkL5IuJLclIfOAqQQ1hgLIW0Rp5UPUSpDputGSQJyCKtayhotncV17L18dZD+Mw6DAPWnH68JTtf/jg6ODoz+dx+gMf+/gpQPknhqZ/FmsuAI/9872j9szv/+3u7evuH/9wHv31vMA0UMtK4tFNW2mPXhw2xQXMPiwI6p0Kz+beAseJDaID/a7/iNwEJ/5AvQ5DisI9uP5lhDA8cAiisnyGVT3r9nfugGuVc20GbyQ0VDut+2G4hYjtlACVk/1dTthR/CmgldTp/bb3jAnZTbp9C43paVTfPXwItFyxjDN/4lWznpGSnCbCtdOfuHR8dQ7VusHqrC8nbmLFn5RZz4YXbJtv4j/a//SNslEx5HqQ87740KBfSR9yE83hghdLbW7/aEeDwOops1bPtS1i8XRzoHjWNwImPaJa1qUdIKtORjHHnlOpDlaFJrSPrXZHMhNGqeUEsiVsJQRfrL5h7pX4P/u0LAiSMvLUUY0W9N88AI/9/fO3jS4v+Hu/tHhv/fB8BS/Bt2jR1/Vyx1ljghyIx/E3OM63On+INKSU5AT3wQVuEjy7JmdUsCLSG7WFu2G0S5B8TuBPHK2Zu980PvmA3LzbM1zxzPyZxj4DAj5FlrpeBIgosfz3q+qPOC+nf/hpKolrAD1to0+slbDFjzqzTm7nHF1iV6GytLQQrnr6hZoonlw3PA6AJ7xQ+ZMJW+qpqfRf+NmsYQqrL+oz7e3q2DvW8x7E5jgcLrzYQ/JzWw+lzdtDre8UaFkdcYPNQ/Qz+7EU3Ct08bTxioQL/lfsK9Zznsbctqcb0k6698/Px37uZkz5JfCVxFwy54sk6rV5bo+/Pf44SnuMRr77C9kmJAsABSIeEBKWWoCxVW+IDWNn7ZfMdYFKOqh2P0Mmy8IPzpMfsnfSlq+zf7LY8yHGD2S6NljWEdGuMsCrhQGWULaw/6ZrpevkkGjXrwS/nzU7M5AwOgv/8nMOmb+QPG9L/93b22/vdk99Ds//cBna07WTiu7eTZKkr8P4QZ6d3XJL9etXbuN7AgRrbqmgjdvzMX2prd4iNJHgCLm1kMmvYiifKYGK7VK1jMkOWnUZ64XJYalFhBXKECQ29AQ1kUOBIOq59+erApyJ9LntG/gZ+KHzHuC/Qrj73ig2t6WG88MOutLWLNraaW+3Sr+k5F/Tgdb+3ThtSw+4kJ660PtgvfIwviNV+souidG4WX/jKX7JzKrPNMWeJWR+lTE8BfHKbx/wXQKCyMidvAaPzHQZv/P94/MPrfvcDmrP8HsRbubAeAKt7wS8RasDxFC6FUd28aaU+aLzCKg7YZ8fE5T658lz913SgPs/H+lMy7a9Khx1+A5KtD/4n3q2pHHeUGSvrfe3L0eH+/Rf9He0+M/Hcv0Bb/4He5EtIu+cNoRes3UqR4xknxxiiPOhNwwjDKCuUR9dCaI3XJQ7KKUnAZCHCIvBYBcmTvwxckVMCjCx/oKHPWQPhhHgQlPSoX44CEOIX1FLacpWA6AxiJ+EUHRw1aWAiFoZ9GCr4SAhNjcQDyVqDuKhVM4UEeOImiKFafulHMy5qFDFfaMSw5rqWBjhADkrVTmDng6/Dp2cu3j88bj9G3UYsMUrjC/ZQ81uLzMmpotHsCoObyrzhBw0jm85oJhraIYgk3bCWN5j3EHohS0oAvGiXHgnuy0yy6hOfQ4oSjvQfWBS3HBmKGhZyQRbSH2LR1ABqWrqI88HDJw58ZYHCjZej/UeKmMEuslHhr1sLphxj36ATCxkMxk2zt3AAarIXlYQ2fMAPZ7GeM2PTDy+iYrbIM9II5hkoUpOtG63WO1rF5PTJj7vErHsxTf2k5ibvyM8CeJ3wOw2hR00MiX3vtfVXqDw8bbc1ucD2BxoEiQPWYKEExA0gAuBYc+anoRTXQRWTDm+fnF6XqQpPRHn0a9+rDtJoCHDAYD56ISbxMojXh5KEXRzDCcuX5PGwPP0gEaz9LyYIIk4NzZbMT4mdswaXu4tnsZQhP1zw4wd3+ricARzq1cGD1pqDOituFxajVXhSsbmC+hgn6HD5sEBF8h0ZXaI/Q71qkMsIcC+inbgSnZeUdaPHLS+oTRhh5O9QwYC4PU1bxF6RN1JRhJbQXlap+hD5rs6Itz+iPBQwQflj2oN4WsnMU7LAXI9nL7d5X6saKEhzoYANbuLJfFzCqsg9AZNd+EMiKkLcVL8jGAg8GUYrhxMXjZCwFDpte3tCElePEK3N7NalscaNAKSje5wFMPlAa8zNiB+4qilLALCaCarzyI2LBFHAeJQqca6Rv2hJ4vUk2jUOFECpeR2lWjbkCpdwNsWqKfsc/lmRKAQRpvsbqrjmG4qU7zLeByeAS4Q4ZUVTDKZqy5hyYlwPzIptdX3HCO4L++JRtFyxWgVYyw51Bv0rvhO0oMPLMtR/tUPxgnuGsYI8XwLSzKrgNRK+lGBdQqkRjo0utiadN0/Ho6MKWGMStYtPFinwxJDRa5NXhXTZQxyvD7NI4In234wn6pkS3nT4qp1OBcgVNKubZSTh93lw5/eSOAEO0HqR2hGakdshAi4OJKTHXVwKM9lpjBJhYSEJXFv3zQTUEGS2Ta5Ttsm1apH72MCUis6L40XAnEJ6SSD/eMEBW1k2VKLGiZBGkkVYbxrlnUQ6byDFwQ1muPfZihaXSoUidAoEuTSMXo2c9nZUioLn8xJCrh0G/cwjDrk3trqJug7ym2eU6q9HAyZAHIAZYRDIWS+OrUYoYbPRgY2kZaWFktflFxosiHggWqRTOYb4Z+YSJJbUViCEoHL8CJR2nkjIWeokRlRT9tfBNWQkC0CmtWbRHMKCZo5ZS84nryjHSRor6HHAYTgK49lcD8rAKSh/7Zv19U2ofYqIfpvL0G1DRyo8n9DdDnpVyIqJCsXuLrpqyiSnuFRMwvgx32GmU4T/PfwfyhMX4LOIpPKI/bfYiE2fy9FG+GmU7tQ5NnwwZ17DZVMBW5yQJiHowgHXVEsbxpUpu6LQbxbKCAIEPgKoHP+RAkrGAsE5ZytSsNag/qEOGUWjRnoztatQ2ASW0S8wptq0+q/UmioonYC2a2N88rPRFppaU2/Cqp0GimpVzRYIfzFMwZVVLYXCHXa98dyV0jwUXdhOgRdxXnVSf1SLgt0ue2OJsq2ijsP0Ejgv4PBJ3tTcEBHLE8qXvgiSeLLlwf+rTzoQtTcAGxFZ8pL9ICvFfr2EU26RZchIFDBgy1MX1ekmC0I+oQ3wWMhBpM0YGMjKQkYGMDDQARgYyMpCRgRCMDDRSXKeX2oiFFWqSQewfwlbYtoAVCWK6ltbRnrUD9ndgHRMaEY6/Z+3t7o6tuMsogRYcIwU83tcaHUkrIxbzsVVi1eyKymJipFUWap05G18Cm56aaEPbG9fw6DScD3WXTp+Ltw7Ssp/g5oH+DVhHWcNk7OMpJenuEyxROG0VOAtPFcgXofQP4IqyNVutwCz7I1vtYlAYSjfApIuWR2tsKTqjJWvFZvNidBWot7m9tOEjQuiE0if9SPQ9vUmBbZLHCzYr/AcHIUtu1H44ju7m3AmCG/jpu1k5juQ6R4c4jcsgBj3xWnG8pg9aQqZYnPagnoXm9VFtAGVzKkgr6fUblacFQWsTamtU6NZAZx05XrqN1PK4IFSOD+FpbKxC4dcT/qOnp89wZC40XAkXURwF0fKmPg/EG8ilI3GjP24h5XAd/8Rpa2KNb6IAo5erwejlCjB6udHLW+02ernRy41e3gN/dr3c+CaMDFSCkYEUYGQgzQ4ZGUiCkYGMDGRkIFXJz0MG0kasg3J8sKyuwXLEuq5o2kiBOPI2OlaCNtrhUyXCVOxGVhC53TM5ZdOQqhCR9J2kmBELu77D/ohC+D9G6yPRks06giIJFt9OHw1EV5tTKf1jbE6lmFMpeqdSVo5KfqEVLLbX4oxE95BKjaMg6/pmxJDfPr1yj2dUcLnKRUVHaqvlIXrnSccx986afVLuAUI/pabDoAMSYEmWWIoRvIS56PaoGAXV2OueGWk2dZILqe7rajD49gmS0d21nM27PkFCOmUzV+CEDj+VOikQdAL6wRVw7FLXKk8fqyi3AtrDgORc9LgioegIdVM18E18UgiNTreRiEPRhZ2GBkRbUuw16PQ4DacoqMKpqFl8okDcO/t9nZimcjl6xp4pqiGZhcYNPhNQTjENIUw3DyFMMhEhNKYEeyVlgaa1aBJK1rAtbWQxIiSb6E6bWI4QGsNQTnvSMSNNHIi60WnYlDQRacPw1DUnTVyXCA37031M0lSLEkJjiqThAom/Y1+a2PnKGqW0MW1AAl3rSsPONBFjT/sGbE231VRpb7pQR2j1wbCxpjLBTES5kcEGYbLRBmHDdT3deIMwzYCDoG/EEaUnmzInGnOqT/R73kgqrVcFqlFI/05wtsHuuMGcdiU3mc6ZpI61EyPXeY/CBRHQB/3d3fGTFAV9YWit4yjsMbXqtNFii6BpuJ4AGXrMRLCgVFqxtW35U59bXK/QaIEigVBsoaItvFFjp82XtDFuvQy3hA+uw4NKGS7CuyG3xL0c+oTfJwJPE203MmdqFh/IA6+GMdVJCF3C21vPLavR9sIfSGGKNXmtjJuk9U7P9UQLad/IQ8y4JbX6qlFSNtSK/62gsqZIW1VKWhMvDZi1Cqis3kxT2GYlrAL6ViBnhTXwO3m7+mHNHVi5W4WF9WFaYdmyq+Qck9yv2+8/PCrtPmgsqRomPSQlVS545lgB5pnSwuyIzFxEaKuIDLHiItia3eW0vWL1pow7mNyKWBJdcKY1J0Yt7wGjljOjlhu13KjlWmDU8gEwarlRy3W/MWq5UcuNWv5XVMunR1rXlVsZGiJyHYOc4eorjnXdXfxSK+d6ynhTgR9RzrVQ1hXvRqBDqZrXVHw9NbytYNq3oIeX2nwHu1JF18A9YfeayN+m8OtMnur8SU+9aIVfyPAvmbh8wauIMY9tF8EHqqCICmBA8cBxA0GY+VaJpQpJQOe8/kZU5AdoBBqUEWtlEFa1OPT45vWKJ43+wliInNYUpprkYYg1A32IGC1NpMiIRV5zSVZCXaO+k85WzZf+EBQ8gNLOy4PF0DARCIRPiqAqSXFamCmWyC97arPnRGS1BuJbnFMnCKJrPf48YaXrylbWhDG7yxwW17eew6IVKfSFpbDQjsgyeSwEmDwWEpp5LOgzwSXVCS0UGKtUF7oJLdg/VlzVxoy2B5ysdR5kfhxUYZ+ieYFQ8C9lzLAu5WMLHeDaLfKhmuikREocXMbYopE/U4afV0dDRMCyf3vRmc/kDQ+laYx2jG3caANcHLjVFdxPyXq6u7ewvl3xQhBdwu+w2sIxwHwEI0nEeuJLVzRR4u4TW3Y0xQUl4lKU0BATvq3ted8rsWoICDRIpYiQqcOWO4KBoqyuJXxSjOhdxIdOjg291zwlt+V4muB00te4Nz/DO+xEMod4N/TMDbqBtJL1VPBRLqD7P8urcPt8xod6aSVt5sC57xO6t+S0uX2HjYazRta2gSNy5Kzu5I4PO2lKt8sEnAoHjTm6qlPy8zi6OtmdsrkrZeJ83YkL5Q7cJ3fmOtF2mwh3iLa9WdNlom2931x4m7CqtYtOjly8m6jFSRGLUs8cRaobrVi5OzTaqRep2IxCHEU7GqXYdW/oO7/6IhSV0YejqIeiEwcjD0cxqiITN4g6NApfAUbhGwGj8I2DUfiMwmcUPqPw9YBR+FpgFL4WGIXv81T4pqXDH4+Ha2h8etrJLR9UGzmk1hfjpqWZ9cXAKeLbRnH2a3hjsW2jaDeKfdPcVSbwJl3eOiHW7W7i3CbGuOl5x6lnk+LbhDN6FKl+bFvdIT0+CGNxbW2XtAbFaMS0deLVRtF+bDyb5grWC5fSi2G7lTgojYSDsGg3TzpYX/EDmQcH2u5cRaBvxXkmU6pNyD44gPEvnJOwMQ29iQkVSBt2zCmJCRU4cdsxiQlHEhMOzZrJTjg8UyY7oclOuEFXEUx2Qh0waRAkmDQIJg2CPhKTBqEfTBoEkwbBpEHQBpMGwaRBqDXQpEEwaRB0wGQnNNkJTXZCk53QqOVGLa+BUcuNWt4PRi03arlRy7XBqOVGLa810KjlRi3XAZOd0GQnNNkJi7ImO6HJTmiyEzaqN9kJe8FkJ/yo7ISNuMLBFIWqTtb2yQkpChUYRfLC8RSFg01X4O7kXZyQp1CBtpHBcFKeQgXSKoPhpDyFypEtMhiyiXkKFUiboXiT8hQqsJYZDE2eQpOn0OQpHAGTp9CkrajApK0waStM2gqTtsKkrVCDSVsxUtykreiASVvxl0lbYfIUmjyFJk+hUfiMwjcGRuEbB6PwGYWPGYXPKHxNMArfaKOMwmcUvgJMnkKTp9DkKTR5ChFMnkKTp7BTQPFSw7DXICtRLGWnFVvKUQhgbgACMU+s1IUtVcb2pIPnVsRWfBnhpKS4PYSek3htY0LK10hqrlA2pFKI+fV6MBK33MHEe6lsYvvY7MtLWggSDRX1QBugh+KbHrS0TKu+Ivdd8dDl7U+pIK1W7mMYUXedqS0IeualqQalAWPRwCqbakJSbgrTzERNA9AgFagNQ2qTzyDScVOQjvFnxNyjb+DpmG1GtkcVR9PiZjpmm40MNepUnEzLNNM1uKhRTjDGaA3OuMFF28TSMpwo+zFkVPnoI436BxhrVamHfNQcsvEBRE0DiIZwqrmt68cdD1WnMl2MGitGJQF1+0ZNEFOMDqMjNtWw0DYaDNSrNiWMmQkGkPYZDzQNAwMYC3PBVFOATkz2yLa7sagH0jaKbSMS3qksJuZRZuFtpFkuY3ApBt0p9JU+Wi6D0/1MCOKSSclo7zKjc+qv46BMgE2btqijB6eMfIfdUuS3dtI0X4tjGQ5lXr7Ei+mLQNERyUexzBH7sFSsS0tKOmoM/MPTWoUtqUgmApZMNktyTpmZ+7cRnBrKf5tV2p7NzntwEVHIEg9h9w6G7HWysgJ16yRCNRs2+zmioPbL6JitsixOj+fzd/mCJyEHWcz2o7kXuekcCMTlcUY/Lv1lnpDQMIep9JehBbVQFt/5wynrG77SVGLOqpKltlDq79A9MUL45ERoNfhBeXDjLAp8t4//SnkN/eg3Mrodx2tNh4nEUCPOeu3ImIqjBlh7WUmMlfj9IikIBGlO80ahzSWLFBmhxXciRzod3IA91APe8/rZa8yRHQBf6sG5iq4FItpyV9AVHjbVrn4FSyjofRjpsMJwREXHf99W0HpQdjW2Uu0y+pbRtwaHw+hbBEbfGgSjbyEYfWtS+4y+ZfQtxctSu9FQuoBNlF6f5plgJHLPT2N5SwZITqoraco6S2lKG63HLx0QRZVIp6hPWRRwIdb3rPnxzj9M6xi6NQ8yoc61I6SzIH+8KPERzWSZQ31HbVK8IQP/gH/FwTPP4pab2nUs0HEU3b8tiWiHX17CUvheekXqsnkv3nJj+Lb49X3fKhyTiEStWrLhcyoKtO75bimvie4JLDgg1GaZJ2KQf4tgY6lDorRfQ5LKI9W1iZUeuLE9DqnxNJLqFqj3Z3RxS/WEOMBpJM72Dx6XHmWnCvmxMVw/VbKj6F9DdqyW6Kj0iOEKwjvZP26AtwqqkxKr0LlGJclSGhCixTfy3Gu0XvihaJyosphYrHVEAhMifhCIZm06yGOibmOkX+uLuUp5jjrQL9zWQjaf/5Y7gY3n3ZHr0diIR4N45ced3RDYqeei9xKNJIIJsFRaqJwBG5YAFzbSgvVUK0FckATbN9C7mwdOwpBOl1EyKGqOzkO1TM857JWenhZ50f6qPjPEpnniy1Pm/uCtcqxNKNtNYxZ8LflOSdQ74iq6az9VIa0fLvBF2o9HNU5eUqzNfih3N7RfDKL0C8tCtlMYySTZyCmqmABMNcdjLNtehN8MoqRsFI9s9j88iUToDl+KJAiSzIq9OKNb2ChSY5dt02fD7VyvuYd5aYKbR+JwSpE4Y2iB1HLHHB0oF5EqZww1WWvlvKUsBw22KRIftJaC3EqVPHNQg6ppTLUgnzGWWSws9i9cf2jgXhKNCerZkMI0RMSuEtH7UedhypMrUH/I5isewCA4Sy6fYGRdTuTsuGhR5R4Z1sQsvYNN/phtieCuOMgTJ5B/Ijn7QjZj//xlJrBy7y1P0vLhAwMTYAk7AA95YvHfMx7iKFrv8tj35kCWMRnG5m7i/dpv5L1x1oFGHbsARwcH9C9A89+9J3u7T3Yf7D0+2Ns/3D86wuf7B4dHRw/Y7p33HgDICciIPUiiKFOVG3v/hYJlWTMn9iUFAb3HfrkSUvvd1+T7uNqbCZo8gdGK1m+kj4qS7hA5ztY8czwnc4iiQ9ha6hoUqrlJFAD7tJY8tNGvsshB+gDNDJEXVV/t2kc2pghzcVOBRxewO8PsrONjCh2dibCv4wGPAy1bu1jPthtEOYowgTR0vH8Pm4Qb5B5nW+LZFrPZv1GhQIHogH34MEOpH5u8TKIcKh3AGLY51ZCbBW3sPw2VeFXkhywYXG+vBOuEB8js+8pgTRS7dly5JrCRVwVLnKFBSYzb1Z4TxCtnTyAFPGun2BYBQfj07OXbx+eNxz0OqFY3it1SfFd3uA10RgDUVf7VryTWFmVj+2n6HrHNopQMGhWtkb0HwUR0UwRo+jVJkBZYa8+jjERyE0PHY4Joij0aFjH8ie4CN1qG/h8l7rSIzCZu2d5HKU9W6ASFhI3CFGYBSzjWwvKwhq8w/Pb4Ipd+VhAj6EfrHCN450RX/iJHPWHu4RHVeeovLScBvT0D7HnC5zCMFjU9FAaJtfdVmYvoYc++3pEVaIkrZgAXuPTN1MzX1UAX5oQ3z88vKu92z4UqYtxrsno1BThgMB50/hrFZ8yOhjh56ImkbpTZENTYjmUvzRdr4VaneAARfX9CHAqlLpHEzbPReH6CucJOnLTfGXybE4AjnVo4sHpTUGeu7cId4a3gYQPz1UPC5/BFg3rgA7Rd0/EHUnTG/MjDZh5n8IZxLVNaLe0gjCF6A/w+e6jazIQu+Y1uOqc47+FbzocjGahN0YBd9s96F7nyGnLdvJNTriFXH0Yx15CPXUP+xd5APqZ+C9NNM5dl26/zTYmufrO4AuX93TleprOo7v6up1/FY2PjIyACWcTukIr+YawayGFZkSd4l23TIvWzhykRmRXFj9Ru4afiDNdowwBZWff2SHZQcQ1TkEZabdC+45yaiEceJqZ8oRVWhZm0bjXXWSkC7vpW849O7PG0OtfY6LJm9t0KFuJEVBmHd7eJOwYba/J2bJhf4UIdX6SNlH0hCTvefEl5OnaacUrsRbYz8ZKuV59xao+nquinKROhSOihG6DUhJGEHtNvRWJ6MVQTr39i7YiqHrfDi0zn2HYFr3oaJKpZOVck+KkCc/pACoOFe6pwHpFtBGhROpC0WS2CdPiMhpBNQGkymHy5GUx+RB3is5CBSJsxMpCRgYwMZGSgATAykJGBjAyEYGSgkeI6vbzLO8X+cet3itXPp36Bl4qVdkVlsT/FfWKjV4n1uXHrMP0qMXlhmALn6FVi6lYrME+/Rax5V5gCdfMWsbDv8rD+K8JU/pixy8PEuAxi0BOv29Q6wt1bQqZYnPagnkW3go0Re5EsT8RCv34zlg1LaxNqa1TN9OSdRmp5XBAqx0dPbmvh11vXTu5opVm8kPm46vNAvIFcOsUhXIx1kHK4jn/itDWxxjdRgNHL1WD0cgUYvdzo5a12G73c6OVGL++BP7tebnwTRgYqwchACjAykGaHjAwkwchARgYyMpCq5OchA2kj1kE5PlhW12A5Yl0fTaM0WCCubvWbdKwEbbTDp0qEqbi8D2Gg9WUu0+LuBcx8KvKK/hGF8H+M1keiJZs1nR7H4tvpo4HoanMqpX+MzakUcypF71TKylHJL7SCZXaOWiKm5imBGkdB1vXNiCG/fXrlHs+o4HKVi4qOzVbLYy1TcwnHMffOmn1S7gFCP6Wmw6DjPSo8scRSxLzAMoVas0fFKKjGXvfMSLOpk1xIdV9Xg8G3T5CM7q7lbN71CZLGJT6bmCfalyOXulZ5wljvWrLizipKC9yfFffjeoqwiU8K4U4uw0WYcCGuNk7tu9cQJgrE2pl6p6lcjp6xZ4pqqJHld6KOPsU0hDDdPIQwyUSEoJcteBJK1rAtbWQxIiSb6E6bWI4QdLMOTxyIdvK2flPSRKQjWYsnrkuEzS7xRdhwkqZalBDu4kLfqi23eakvwsdmT+6Cfj7l22pqLcPyRJQfnY+5CxsZbBAmG20QNlzX0403CNMMOAj6RhxRerIpc6Ixp/pEv+cTrw1G2Pzq4KqBk+b0Tq4QRriDa4QR7uwqYQTt64S1MU7Oa62NuU8EnibabmTO1CyucfVkF8ZUJyF0NW8Z1puK271kmDCqLxqu34YyEv9bQWVNkbaq5oXFjQqorN5MU9hmJawWdwxXgZzNW4j1WBslT+2/btiuknNMcr9uv//wqLT7tC/4vGikhF3wzLECzCWlhdkR2beI0FYRGWLxyt2Q1ewunTtr9KaMO5jAilhS6CwCPeozankPGLWcGbXcqOVGLdcCo5YPgFHLjVqu+41Ry41abtTyv6JaPj3Suq7cytAQkc8Y5AxXX3Gs6+7il1o511PGmwr8iHKuhbKueDcCHUrVvKbi66nh3UtRP14PL7X5Dnaliq6Be8LuNZG/TeHXmTzV+ZOeetEKv5DhX9UFImXEmMe2i+ADVVBEBTCgeOC4gSDMfKvEUoUkoHNefyMq8gM0Ag3KiLUyCKtaHHp883rFk0Z/YSxE+moKU03yMMSayzukNZEiIxa5yyVZCXWN+k46WzVf+kNQ8ABKLS8PFkPDRCAQPimCqiTFaWEWlxeXPS3u56o1sLgTSN5dpsOfJ6x0XdnKmjBmd5nD4vrWc1i0IoW+sBQW2hFZJo+FAJPHQkIzjwV9JrikOqGFAmOV6kI3oQVd0KhakbQ94GSVV9QXYZ+ieYFQ8C9lzLAu5WMLHeDaLfKhmuikREocXMbY0rV4yvDz6miICFj2by8685m8zKE0jdGOsY0bbYCLA7c65fWetbFs7d7C+nbFC0F0Cb/DagvHAPMRjCQR64kvXdFEibtPbNnRFBeUiEtRQkNM+La2532vxKohINAglSJCpg5b7ggGirK6lvBJMaJ3ER86OTb0XvOU3JbjaYLTSV/j3vwM77ATyRzi3dAzN+gG0krWU8FHuYDu/yyvwu3zGR/qpZW0mQPnvk/o3pLT5vYdNhrOGlnbBo7IkbO6kzs+7KQp3S4TcCocNOboqk7Jz+Po6mR3yuaulInzdSculDtwn9yZ60TbbSLcIdr2Zk2Xibb1fnPhbcKq1i46OXLxbqIWJ0UsSj1zFKlutGLl7tBop16kYjMKcRTtaJRi172h7/zqi1BURh+Ooh6KThyMPBzFqIpM3CDq0Ch8BRiFbwSMwjcORuEzCp9R+IzC1wNG4WuBUfhaYBS+z1Phm5YOfzwerqHx6Wknt3xQbeSQWl+Mm5Zm1hcDp4hvG8XZr+GNxbaNot0o9k1zV5nAm3R564RYt7uJc5sY46bnHaeeTYpvE87oUaT6sW11h/T4IIzFtbVd0hoUoxHT1olXG0X7sfFsmitYL1xKL4btVuKgNBIOwqLdPOlgfcUPZB4caLtzFYG+FeeZTKk2IfvgAMa/cE7CxjT0JiZUIG3YMackJlTgxG3HJCYcSUw4NGsmO+HwTJnshCY74QZdRTDZCXXApEGQYNIgmDQI+khMGoR+MGkQTBoEkwZBG0waBJMGodZAkwbBpEHQAZOd0GQnNNkJTXZCo5YbtbwGRi03ank/GLXcqOVGLdcGo5YbtbzWQKOWG7VcB0x2QpOd0GQnLMqa7IQmO6HJTtio3mQn7AWTnfCjshM24goHUxSqOlnbJyekKFRgFMkLx1MUDjZdgbuTd3FCnkIF2kYGw0l5ChVIqwyGk/IUKke2yGDIJuYpVCBthuJNylOowFpmMDR5Ck2eQpOncARMnkKTtqICk7bCpK0waStM2gqTtkINJm3FSHGTtqIDJm3FXyZthclTaPIUmjyFRuEzCt8YGIVvHIzCZxQ+ZhQ+o/A1wSh8o40yCp9R+AoweQpNnkKTp9DkKUQweQpNnsJOAcVLnAI0pXQ70qCmU1lMSA0yNVsj914ZmEGBSU6xiPtOmJQRS34mZkcK+Tv1nHE8AeFiHQdlVkRaW6KOHpwyHArWnkh66KRpvhaxeg6l47vE20qL6IGm7WRgvHoXAWIftoHqSnXKVdYY+IentQpb5yxldjipiGRJzildX79Sg1NDSdGyigXY7LwHF1GyLPEQNolgSIiTlRWoW+Fp1WzY7OeIIp0uo2O2yrI4PZ7P3+ULnoQ8A03Sj+Ze5KZzEKBcHmf049Jf5gmp/HOYSn8ZWlALpXabP5yyvuGr4elqjPRZVVIOcVoxdeieGCF8giXLML6zKPDdPpqUYgpaVW9krBMO1JpCS8UYF8iKalHGLQLPsNqykhgr8fttVaBzpzlNGAW6lLK3yA8ovhMZMymMD1RKD+Sm189eY8bEAATWHpyr6FogIg10BV3hodD4pWWGklwKAQUWVDFcaCAeiPhuW8C7PVFb2PTMr1MNrgPG1AEuPNXEqhSapplRmwbSwV1CbThVm0QHkY6bSnWMoyPmUH0DaMesOSI+qnZ8rd1ex6y5kSFTnaqWaZkuuwZJNcoJxkqtwRk3SGqbIFuGRWU/hoyOH33kV/+Ab60q9ZCPmgs3PqCraSDUUN40xV79uPyh6lSmvVFj3qikrG7fqIluilFudMSmGt7aRrWBetWmtjEz2gDSPuOapuFsAGNhTptqKtM5szCy7W6qCpWKh4Y+BGyi1NKbZziQyD0/jWVW48WNMoV4WSdxPdRTtdGCbu+AsKhEOkWzyaKAC4m7Z82Pd/5hWsfQrXmQCXXSRJM6gfzxosRHNJNlDvUdFT3xBtdTOKAPO3hGRWQlr6XPho6jcP1tSUQ7/PISlsL3LE+Lk11KA065MXxb/Pq+bxWOSUSiVi3Z8DkVBVr3fLeU10T3BBYcEGqzPNc3yL9FcIhU7/AoSQ1JKo/A1CZWWkzG9jikxtNIKkSgeZ9Rou3qCXGA00icxRo83jLKThXyY2O4fqpkR9G/huxYLdFR6RHNy8Ka1D9ugLdygkqJVZgxRiXJUhoQosU38pxCtF74oWicqLKYWKx1RAITIn4QiGZtOshjom5jpF/ri7lKeY460C/c1lzsz3/LncDG80nI9WhsxKNBvPLjzm4I7NRzncQj+4VgAiyVxiNnwLwkwIWNtGA91UoQCe1h+wZ6d/PASRjS6TJKBkXN0Xmoluk5h73S09MiL9pf1WeG2DRPfHkqyB+8BYS1CWW7aWeCryXfKYl6R1wdcu2nKqT1YDBfHNN8VOPkJcXa7Idyd9uBfWMQpbTsgpK0U9ivJNnIKaqYAEw1x7DDbS/CbwZR0unBRzb7H55EwtXCl+LQmiSzYi/O6NYMsqzvsm36bLid6zX38BxxcPNIBBMWBx2HFkjtrO/RgXIRqc74UpO1Vs5bOpXWYJvioFprKcitVMkzBzWomsZUc8qMscxiYbF/4fpD2/OSaExQz4YUpiEidpWI3o86D1OeXIH6Q+ZY8QAGwVly+QQ9oTmRs+OisZN7FMgoZukdbPLHbEs44+IgT5xA/onk7AvZjP3zl5nAyr23PEnLhw8M/ClgCXsTD3li8d8zHuL8Wu/y2PfmwDBiMtnNPR4H0Q3qSPaNsw6m17ELcHRwQP8CtP893D18/GDv8cHe/uH+0RE+3987fPz4Adu9/e52AQgdCJw9SKIoU5Ube/+FghP7kq6P2fv3wOHdIPc426om/Uq83mI2+/BhJrjGs/LtbM0zx3MyB5kKGtybaPCJ/LIW5kFl7Dc8wDP/dhlcLUoFNZsJXhlkOVeODw/9wM9uLOGtscuTuXaxgG03iHJYtoIXI19MZvWWCLTYln+jeoPi2QFWiDoIVhaDtJJADSeBk6aklLOSNsT+af3n7u4MjU5XPg7I331kizev/LUPm6d4A0K+66Sie2+FgVE+PIlyqJE6mDZcRA070UiDjwSCgjQFAicEGaOpSoNCCNOy4jm5u2DrdXBQtnBP2OotIiZuiyi/v0QcJVmjX/Au8d30DJ6LVqHKVy0FhKBl/Qp5dh0l73Anbc9aZCUwPiAnWrAgxewdFzqh3vcebkzFFyPj+HXR4mLyi73Ud/lT18WpOlUvZQRpVwLyKFBYkgJoHMtm+2vakeu46FEDmSx2lgeBcPI1Bpve2XH5sv4daHJrEB6rYbbYvNkAi1nWNV+souidhfP4XQ2zfH4iyEqMfH1Oi+9BEsJQpaRAlH5XyhztKnAaozyzUqEXDNcmCxb6A9T4/r2Ft5Ztl4vMCaHjySP7tzhttwge1VHLokVJxMRBpFYhXeRJ2ukoPexDXJbuou7v3iWwrTzh3RmrD5YsZJHz9GZ4rDrIaq2o43V5klmen3w3v3ISsQ7m+CxttzWIlkukJHFIpoXlqt6QTsnhARBHYV5xx+PJc+RyKMe3cIsyVkCFLC5L1SscwtLTZR5e1Re+IL9/PP/h769f//TryevTH1+++PX06c/Pz8+enjyvCdikGPwIHK6psZDK+IZftvUYen7mZKvjksnZ3bjCAP3uPE3PkmjRUIUwDOEFb1ngYkI3X3EnyFZ/NF+1ma0o1KZLdHSDnO4Ez3jg3BTKO3u8WyshtPDy3eGsXkdaH7uSnZ21a9fhEcXmX6xruQPXGpJEWeRGoGNcnJxpVTvUaVFRd9ym19Czh9WrkK8Hq2gt/lImqeMqH9LmnkX/DRJ0zxfl1rS3O7DSr6IgX/OfcW9qTNsan4il2SH5dofqTwW+ztbV/JD05Wc+7MXvPxiV788IGvpfHHmenyY5mW8WubfkExXBEf1v92i3rf89Pjg4NPrffYDkYSlfA7s+idYxWsK3vv+O7dn7e9YuyKgnTiyULwwJ+ylfcKkv2i/8TP5EPlVXJIUwM7/aE4wsSPlgCTyou1fnd0LBPIu8Z+Wa+4HW3N1pmlPUxLXz+/8JpUYaAPq9j1foPun8a9B/EgV8Q8uPgDH6fwLE3qT/3cd7Twz93wfMLMtqUGaycFzbybNVlPh/kFnBfvc1mQCAnAVxvoEF8WmpkS6sP55ZDFr+IonyGI3SbGuL/TJriFwo14AamnCSaSyRuhF/ArNbyPcuOVfopwctkz+R4eC/MiG0JQKf6JfIIUk/r+lhvRkCZRQlnvSuytHrtosGYbgtnQZc9zWgalWt7eIniKlSd1JxGE36X/iUXHIzNjBG/4dP9tr236MDQ//3AhuQ/g9iLXxiDgANkYp6QXyKDswKdxexrpHmpjk52Ii/iK/OG6bB2+nup554CRr0Lw2jm4sAI/S/f7R70Kb/3b19Q//3AXX6L6lcrvfbp/COr6Jm0h906WBaZQtKBZ6VRZawW7GH/3y/VVhjto63Lk7Otna28N3WsZ7l6sMvD6e1wAkCK+Xcs4Q/xYJlA3t0akmfQ6Nh7XY0DU077ZZPaUs50FahdshKa3oH1L3VPPLUsFpCrQLp1qRRwDNRxI7Lmq2qMU7go+Or5CLC3lw3j4konDdtI9lgdaJ86bZqmcS+olNF8uStOLfhxDCsmPmazqLGCRcnUymwJmJBFC55Ah3lXpUj6zLHJE42e8PX0RUFoKwxyCaNMGQvLR2A8+LHf13t2U8O2crBDFM8xMgzXOYyNlh7KQnt1+oOKHmw+lbZRvhvbWVuoigLR+xJkKPX6OVZQ03Wc3OWFmpLGsQPDh7PlJbmrgVYDN9Ei7bVNcD3WIq7NmLt6lvYPiX/19//HSH9bCAGjMn/j3fb+v/+4yMT/3EvoNr/C3n3kwr6IM5H5ONoNuoiesehyZdOkPLPRZb+EkGD/q9i56PMf2P0v7f3eL9t/9sz8V/3Ay0fJs61zGfZstgjHaaugwfEO1aBt3j6BN5hxkxZDHbkz8JeL3bg0qU/NdwNv+mEvFW7/2CHhIlORvLQB+LJz5HHG6IADni9sF2V64mvwNJrP3wqD8tQVYUoWK+s5vIWZ/LF45ov/LQTqFTh7XNVt2puhlK1AkLEz0+9sg3owCD/l+ejP4rxSxiz/4C01+T/e0dHhweG/98HiOBEYiNxlPoY0QpafI4nCi0vct+BYhm/W9oevyqVYAv0HDSQzuN8AdylfF5GHWbO8piR7IC8Mq6FNL68PI2yM3FKaDarh8aiJ3UmI82wORRsdkxpXLBgzXMi8wFJlubGOXy6uyuu8VqDHo8dODr4GXFgaG693H673P7h0c+zGfA2LCT3vfI0RZ0hjlWl5vdbuCtuzWYylBAL/IYuq0MbQ7UosBAxz2YNvfR4Jg94yMCl/xT6bzNqEr7DmK5GeCCMM9lOZrMqhOqYfb379e6spnnSExj0vmg7OQazr8qkLsfwG4Yocz3xq7ZnS183hgiJN3HkFf7vr2QgkRPHx/S1hWdS+GUOYntWvkVjPh5b98MCNwxbG0UcRYGN9g9Yki2jh8fFcVXPukQbCtYjP2ucM/5KRjrh6U5tdGX95XFFcRSwfC4OPtUrLU/cVofW6M0lFAwza+Fnm49hhaM1epJ2yqetPvUV+mwGZ1bUcSzcoUI+29oyip0BAwYMGDBwJ/D/AQrD0RkAWAIA + chart: H4sIAAAAAAAAA+19a3PcNrKoP8+vwFX2lOVbIkdvZ5Vs6jiyN+uKI6ssHe89Z2srxSGhGa45JMOHFMXr+9tPdwN8kyA4lmQ7QVcqHpFg49mNfqGxdBKPhzyx+K8ZD1M/Cq13eex780d3B7sAT4+O6F+A9r/0e+/gcG//aP/4GJ/vHR4eHz9iR3fYhkHI08xJGHuURFGmKjf2/guF5dD82yserP1lGCX8Y+vACT4+PBycf5j21vwfH+8fPGK7d9HBMfiDz/9X7NzJMp6EKcsiJuab3ax4yBa5H3h+uGSx475zljy1Z1+xy5WfsjSP4yjJ4AeskYAtg2jB1k7mrqD0Dkt44GT+NYfvslXtuRN6gCDkS3gbhWw7TviV/yv32I0P5f7PE5u9DoNbFoX0JTaJxTxhgR9ye2Y/v/j5IoO2AYrTaL0GBG9PL5jnJ+nMXvrZnP4vmj+zF78lc/p/8WC1nOP/ij/T63BeIVpA//KYXfkBT2f/105vYvj/wnkH/8/W8Pv/Q9G3TuJHecpePn8BFcZJ9C/uZjPb97gzF+Xg0cy+Tt3I4/PZp55VfRik/9OVk2T2rbMOPrqOMfrf3z9s0//h3p6h/4cAJ/bf8gTn/YRd782cOK7+3LX/bO9aHr+eeTx1Ez/O6Pkz9jfYGpiLC4RdRQnLVpz9INcR+xFXDytX0yx01vyEDS2z2XVPbZ96TP5IMEj/XuTay+hO6hij/6dHbfo/Onq6a+j/IWA+Zxfnz/+f9VfY/U6j+Ba2zFV2CYvhhO3v7h+yi2fn7OIFAyp3QvrDuYKN0ncyztxoHTvhLW7sFfm7UZgl/iKHvTqdzeezAv8r34Xlxa2XUCzzr3yeACMByWLFrX17dwblltHJElEg6nTFLJdt2fYc/rvmoRclc9jfV/nChlrnxaKtfqxgD58Xn1vUiCgIYFknfOmnWUIyhw1oaXEzm/1p23UyJip4++LNxcvXZ0/kn/xXZx0HfD6EBfdE9qIgl5PTAJYQT84j7wJ64+UgsCzPo8B3b2uFet5uYadB+iLhSnJTHjoLkEJYYyyEtEWcVj5EqQyZrhslCcghrGopa7R0Ftex9/LVQfrPOAwC1J9+vCY4Xf87Pjw+NPrfQ4DG/P8MUj5I4qmdxZvJgiP8f+94/6g5//t7u3v7hv8/BLx/bzEPFDHQurZQVNti1ocPs0FxDYsDO6ZCs/q3gbPgQWqD/Gi/47cCC/2RL0CT47CObD+aYw0NHAMorp0gl015/575oRvkXtlAm8kPFQ3pfttuIGI5YQMlZP1UU7cXfghrJnQ5fW6/4QF3Um6fQeN6W1Y2zV8DLxYtYwzf+Fds5aTnpAizrXTl7B8dn0C1b7F6qArL25mzZOUXceKH2RXb+o/0P/8jbZdMeBylPuy8tyoU0Efeh/BkY4TQ2Vq/2xPi8TiIbtew7UtZv1wc6Rw0jsGJjGmXtKpFSSvQko9x5JXrQJajSa0h6V+TzYXQqHlCLYlYCUMV6S+bB6R/Df7vCgEnjry0FGFEvzXNAyP8f//g4KDF/492jf3vYQCW4p+wa+zkL8VSZ4kTgsz4JzHHuD53ij+olOQE9MQHYRU+sixrVrck0BKyi7Vlu0GUe0DsThCvnL3ZOz/0Ttiw3Dxb88zxnMw5AQ4zQp61VgqOJLj4yaznizovqH/3byiJagk7ZK1No5+8xYA1v0pj7p5UbF2it7GyFKRw/oqaJZpYPrwAjC6wV/yQCVPpq6r5WfTfqGkMoSrrP+7j7d062PsWw+40Fii83kz4c1IDq8/7mtas58WvccJTXCyyMom99nygivqXVT3tzag9HPW+jA9EGHmNCUOdN/SzWzEM+PZZ4wkDteuX3E+49zyH/XRZLeiXZHGWj1/8yt2cbGjyK4GraNglT9Zp9crqGZHiHbZXUikIM0CeJLAgdQ51ocIKHxA94ZfNd4xFMaqXOEYvw8YLwp+esH/Ql6K2f7Nf8ijDAWb/bLSsOQcDY5xFARdqqmxh7UHf1NfLN0mvUQ9+KX9+atb6RYD+/p/ABGzmDxjT//Z399r639PdI7P/PwR0tu5k4bi2k2erKPF/E2akd1+T/Hrd2rnfwIIY2aprInT/zlxoa3aLppM8AHYzsxg07YckymNiflavYDFD9ptGeeJyWWpQYgVxhQoMvQENZVHgSDisfvrpAYOWP5c8o38DPxU/YuTR9CuPveKDG3pYbzwwzq0tYpOtppb7dKv6TkX9OB1v7dPm0LD7iQnrrQ9Yt++RBfGGL1ZR9M6Nwit/mUvWSmXWeaYscaej9KkJ4A8O0/j/AmgUFsbEbWA0/uOwzf8P9g+PDf9/CNic9X8v1sK97QBQxRt+hVgLlqdoIZTq7k0j7UnzBUZx0DYjPr7gybXv8meuG+VhNt6fknl3TTr0+AuQQnXoP/F+Vu2oo9xASf97T48P9vdb9H+899TIfw8CbfEPfpcrIe2SP4xWtH4jRYrnnJRgjPKoMwEnDKOsUORQJ6w5Upc8JKsoBZeBAIfIaxEgx/Y+fEFCBTy69IGOMmcNhB/mQVDSo3IxDkiIU1hPYctZCqYzgJGIX3Rw1KCFhVAY+nGk4CshMDEWByBvBequUsEUHuSBkyiKYvWpC6p9WbOQ4UqbgiXHtTTQEWJAsnYKkwN8HT47f/n24KLxGH0btcgghSvcT8ljLT4vo4ZGuycAai7/ihM0UmQ+r5lDaIsolnDDbtFo3mPsgSglDfiiUXIsuCc7zaIreA4tTjjaXmBd0HJsIGZYyAlZRHuITVsHoGHpKsoDD5c8/JkBBjdahv5vJW4Ks8RKibdmLZx+iHGPTiDsLRQzydbOLaDBWlge1vAJk4zNfsKITT+8ik7YKstAL5hjqERBum60XudoqZrXIzPmHr/mwTz1l5aTuCs/A+x5wucwjBY1PSTytdfeV6X+8LjR1uwW1xNoHCgCVI+JEhQzgASAa8GRn4peVANdRDa8eXFxWaouNBnt0adxrz5MqynAAYPx4ImYxKskWhNOHnpxBCMsV57Pw/bwg0Sw9rOUrHkwOThXNjslfsYWXOouns1ehvB0zYNT3O3vewJwpFMLB1ZvCuqsuF1YjFrtRcHqBuZrmKAv4MMGEcF3aACF9gj9rkUqI8yxgH7qRnBaFteBFr+8oj5hhJG3Qw0D5vI4ZRV/QdpETRlWQntRqepH6LP8KtrynP5YwADhh2UP6m0hO0fBDnsxku3a7n2lbqwowYEONrBLK/t1CaMq+wBEduMHgawIeVvxgmws8GAQpRhOXDxOxlLgsOnVLU1YOU68ZuovJ5UtbhUoBcX7PIDJB0pjfkbswF1FUQqYxURQjdd+RCyYAs6jRIFzjfRNWwKvN8mmcagQQsXrKM2qMVeglLshVk3R7/jHkkwpgCDN11jdDcdQvHSH+TYwGVwi3CEjimo4RVPWnAPzcmBeZLPrK054KtAfn7LtgsUq0EpmuDPo4+idsB0FRp659pMdih/MM5wV7PECmHZWBbeB6LUU4wJKlWhsdKU18bRpOh4dXdgSg7hVbLpYkS+GhEaLPCy8ywbqeGWYXRpHpO92vDLflOi20yfldCpQrqBJxTw7CafPmyunn9wRYIjWg9SO0IzUDhlocTAxJeb6SoDRXmuMABMLSejKon8+qIYgo2VyjbJdtk2L1M8ep0RkVhQ/Ge4EwjMS6ccbBsjKuqkSJVaULII00mrDOPcsymETOQZuKMu1x16ssFQ696hTINClaeRi9Kyns1IENJefGHL1MOh3DmHYzajdVdRtkNc0u1xnNRo4GfIAxACLSMZiaXw1ShGDjR5sLC0jLYysNr/IeFHEA8EilcI5zDcj/yyxpLYCMQSFE1agpONUUsZCjy2ikqK/Fr4pK0EAOog1i/YIBjRz1FJqPnFdOUbaSFGfAw7DSQDX/mpAHlZB6e/erL9vSu1DTPTjVJ5+Aypa+fGE/mbIs1JORFQodm/RVVM2McW9YgLGl+EOO4sy/OfFr0CesBifRzyFR/SnzX7IxJk8fZSvRtlOrUPTJ0PGGGw2FbDVOUkCoh4MYF21hHF8qZIbOu1GsawgQOADoOrBDzmQZCwgrFOWMjVrDeoP6pBhFFq0J2O7GrVNQAntEnOKbavPar2JouIJWIsm9jcPK/0hU0vKbXjV0yBRzcq5JsEP5imYsqqlMLjDbla+uxK6x4ILuwnQIu6rTqrPahHw2yVPbHG2VbRR2H4CxwV8Hom72hsCAjli+dJ3QRJPlly4P/VpZ8KWJmADYis+0l8khfiv1zCKM9IsOYkCBgwZ6uJ6vSRB6K+oQ3wWMhBpM0YGMjKQkYGMDDQARgYyMpCRgRCMDDRSXKeX2oiFFWqSQezvwlbYtoAVCWK6ltbRnrWD53dgHRMaERq/Z+3t7o6tuKsogRacIAUc7GuNjqSVEYv52CqxanZFZTEx0ioLtc6cjS+BTU8wtKHtjWt4dBrOh7pLp8/FWwdp2U9w80D/BqyjrGEy9vGUknT3CZYonLYKnIWnCuSLUPoHcEXZmq1WYJb9ka12MSgMpRtg0kXLozW2FJ3RkrVis3kxugrU29xe2vARIXRC6ZN+Ivqe3qbANsnjBZsV/oODkCW3aj8cR3dz7gTBLfz03awcR3Kdo0OcxmUQg554rTjq0gctIVMsTntQz0Lz+qg2gLI5FaSV9PqNytOCoLUJtTUqdGugs44cL91GanlcECrHh/A0Nlah8OsJ/9Gzs+c4MpcaroTLKI6CaHlbnwfiDeTSkbjRH7eQcriOf+KsNbHGN1GA0cvVYPRyBRi93OjlrXYbvdzo5UYv74Hfu15ufBNGBirByEAKMDKQZoeMDCTByEBGBjIykKrk5yEDaSPWQTk+WFbXYDliXVc0baRAHHkbHStBG+3wqRJhKnYjK4jc7pmcsmlIVYhI+k5SzIiFXd9hv0Uh/B+j9ZFoyWYdQZEEi2+nTwaiq82plP4xNqdSzKkUvVMpK0clv9AKFttrcUaie0ilxlGQdX0zYshvn155wDMquFzloqIjtdXyEL3zpOOYe+fNPin3AKGfUtNh0AEJsCRLLMUIXsJcdHtUjIJq7HXPjDSbOsmFVPd1NRh8+wTJ6O5azuZ9nyAhnbKZK3BCh59JnRQIOgH94Bo4dqlrlaePVZRbAe1hQHIuelyRUHSEuqka+CY+KYRGp9tIxKHowk5DA6ItKfYadHqchlMUVOFU1Cw+USDunf2+TkxTuRw9Y88U1ZDMQuMGnwkop5iGEKabhxAmmYgQGlOCvZKyQNNaNAkla9iWNrIYEZJNdKdNLEcIjWEopz3pmJEmDkTd6DRsSpqItGF46pqTJq5LhIb96SEmaapFCaExRdJwgcTfsS9N7HxljVLamDYgga51pWFnmoixp30Dtqa7aqq0N12qI7T6YNhYU5lgJqLcyGCDMNlog7Dhup5uvEGYZsBB0DfiiNKTTZkTjTnVJ/o9bySV1qsC1Sikfyc432B33GBOu5KbTK1MUsfaiZHrvEfhggjog/7u7vhJioK+MLTWcRT2mFp12mixRdA0XE+ADD1mIlhQKq3Y2rb8qc8tblZotECRQCi2UNEW3qix0+ZL2hi3XoZbwgfX4UGlDBfh3ZBb4l4OfcLvE4GnibYbmTM1iw/kgVfDmOokhC7h7a3nltVoe+EPpDDFmrxWxk3SeqfneqKFtG/kIWbcklp91SgpG2rF/1ZQWVOkrSolrYmXBsxaBVRWb6YpbLMSVgF9K5Czwhr4nbxd/bDmDqzcrcLC+jitsGzZVXKOSe7X7fcfnpR2HzSWVA2THpKSKhc8c6wA80xpYXZEZi4itFVEhlhxEWzN7nLWXrF6U8YdTG5FLIkuONOaE6OW94BRy5lRy41abtRyLTBq+QAYtdyo5brfGLXcqOVGLf8jquXTI63ryq0MDRG5jkHOcPUVx7ruLn6plXM9ZbypwI8o51oo64p3I9ChVM1rKr6eGt5WMO070MNLbb6DXamia+CesHtN5G9T+HUmT3X+qKdetMIvZPiXTFy+4FXEmMe2i+ADVVBEBTCgeOC4gSDMfKvEUoUkoHNefyMq8gM0Ag3KiLUyCKtaHHp882bFk0Z/YSxETmsKU03yMMSagT5EjJYmUmTEIq+5JCuhrlHfSWer5kt/CAoeQGnn5cFiaJgIBMInRVCVpDgtzBRL5Jc9tdkLIrJaA/EtzqkTBNGNHn+esNJ1ZStrwpjdZw6LmzvPYdGKFPrCUlhoR2SZPBYCTB4LCc08FvSZ4JLqhBYKjFWqC92EFuzvK65qY0bbA07WOg8yPw6qsE/RvEAo+FcyZliX8rGFDnDtFvlQTXRSIiUOLmNs0cifKcPPq6MhImDZv7vozOfyhofSNEY7xjZutAEuDtzqCu6nZD3d3VtY3655IYgu4XdYbeEYYD6CkSRiPfGlK5oocfeJLTua4oIScSlKaIgJ39b2vO+UWDUEBBqkUkTI1GHLHcFAUVbXEj4pRvQ+4kMnx4Y+aJ6Su3I8TXA66Wvcm5/hHXYimUO8G3rmBt1AWsl6KvgoF9DDn+VVuH0+40O9tJI2c+A89AndO3La3L3DRsNZI2vbwBE5clZ3cseHnTSl22UCToWDxhxd1Sn5eRxdnexO2dyVMnG+7sWFcg/uk3tznWi7TYQ7RNverOky0bbeby68TVjV2kUnRy7eT9TipIhFqWeOItWNVqzcHRrt1ItUbEYhjqIdjVLsujf0nV99EYrK6MNR1EPRiYORh6MYVZGJG0QdGoWvAKPwjYBR+MbBKHxG4TMKn1H4esAofC0wCl8LjML3eSp809Lhj8fDNTQ+Pe3kjg+qjRxS64tx09LM+mLgFPFtozj7Nbyx2LZRtBvFvmnuKhN4ky5vnRDrdj9xbhNj3PS849SzSfFtwhk9ilQ/tq3ukB4fhLG4trZLWoNiNGLaOvFqo2g/Np5NcwXrhUvpxbDdSRyURsJBWLSbJx2sr/iBzIMDbXeuI9C34jyTKdUmZB8cwPgHzknYmIbexIQKpA075pTEhAqcuO2YxIQjiQmHZs1kJxyeKZOd0GQn3KCrCCY7oQ6YNAgSTBoEkwZBH4lJg9APJg2CSYNg0iBog0mDYNIg1Bpo0iCYNAg6YLITmuyEJjuhyU5o1HKjltfAqOVGLe8Ho5Ybtdyo5dpg1HKjltcaaNRyo5brgMlOaLITmuyERVmTndBkJzTZCRvVm+yEvWCyE35UdsJGXOFgikJVJ2v75IQUhQqMInnheIrCwaYrcHfyLk7IU6hA28hgOClPoQJplcFwUp5C5cgWGQzZxDyFCqTNULxJeQoVWMsMhiZPoclTaPIUjoDJU2jSVlRg0laYtBUmbYVJW2HSVqjBpK0YKW7SVnTApK34w6StMHkKTZ5Ck6fQKHxG4RsDo/CNg1H4jMLHjMJnFL4mGIVvtFFG4TMKXwEmT6HJU2jyFJo8hQgmT6HJU9gpoHipYdhrkJUolrKzii3lKAQwNwCBmCdW6sKWKmN70sFzK2IrvopwUlLcHkLPSby2MSHlayQ1VygbUinE/Ho9GIlb7mDivVQ2sX1s9uUVLQSJhop6oA3QQ/FND1paplVfkfuueOjy9qdUkFYr9zGMqLvO1BYEPfPSVIPSgLFoYJVNNSEpN4VpZqKmAWiQCtSGIbXJZxDpuClIx/gzYu7RN/B0zDYj26OKo2lxMx2zzUaGGnUqTqZlmukaXNQoJxhjtAZn3OCibWJpGU6U/Rgyqnz0kUb9A4y1qtRDPmoO2fgAoqYBREM41dzW9eOOh6pTmS5GjRWjkoC6faMmiClGh9ERm2pYaBsNBupVmxLGzAQDSPuMB5qGgQGMhblgqilAJyZ7ZNvdWNQDaRvFthEJ70wWE/Mos/A20iyXMbgUg+4U+kofLZfB6X4mBHHJpGS0d5nROfXXcVAmwKZNW9TRg1NGvsNuKfJbO2mar8WxDIcyL1/hxfRFoOiI5KNY5oh9WCrWpSUlHTUG/vFZrcKWVCQTAUsmmyU5p8zM/dsITg3lv80qbc9mFz24iChkicewewdD9jpZWYG6dRKhmg2b/RRRUPtVdMJWWRanJ/P5u3zBk5CDLGb70dyL3HQOBOLyOKMfV/4yT0homMNU+svQglooi+/88ZT1DV9pKjHnVclSWyj1d+ieGCF8ciq0GvygPLhxHgW+28d/pbyGfvRbGd2O47Wmw0RiqBFnvXZkTMVRA6y9rCTGSvx+kRQEgjSneaPQ5pJFiozQ4juRI50ObsAe6gHvef38NebIDoAv9eBcRTcCEW25K+gKD5tqV7+CJRT0Pox0WGE4oqLjv28raD0ouxpbqXYZfcvoW4PDYfQtAqNvDYLRtxCMvjWpfUbfMvqW4mWp3WgoXcAmSq9P80wwErnnp7G8JQMkJ9WVNGWdpTSljdbjVw6IokqkU9SnLAq4EOt71vx45x+ndQzdmgeZUOfaEdJZkD9elviIZrLMob6jNinekIF/wL/i4JlncctN7ToW6DiK7t+WRLTDr65gKXwnvSJ12bwXb7kxfFv8+q5vFY5JRKJWLdnwBRUFWvd8t5TXRPcEFhwQarPMEzHIv0WwsdQhUdqvIUnlkeraxEoP3Ngeh9R4Fkl1C9T7c7q4pXpCHOAsEmf7B49Lj7JThfzYGK4fK9lR9K8hO1ZLdFR6xHAF4Z3sHzfAWwXVSYlV6FyjkmQpDQjR4ht57jVaL/xQNE5UWUws1joigQkRPwhEszYd5DFRtzHSr/XFXKU8Rx3oF25rIZsvfsmdwMbz7sj1aGzEo0G88uPObgjs1HPRe4lGEsEEWCotVM6ADUuACxtpwXqqlSAuSILtG+jdzQMnYUinyygZFDVH56Faphcc9kpPT4u8bH9Vnxli0zzx5Slzf/BWOdYmlO2mMQu+lnynJOodcRXdjZ+qkNYPF/gi7ceTGicvKdZm35e7G9ovBlH6hWUh2ymMZJJs5BRVTACmmuMxlm0vwm8GUVI2iic2+x+eRCJ0hy9FEgRJZsVenNEtbBSpscu26bPhdq7X3MO8NMHtE3E4pUicMbRAarljjg+Vi0iVM4aarLVy3lKWgwbbFIkPWktBbqVKnjmoQdU0plqQzxjLLBYW+xeuPzRwL4nGBPVsSGEaImJXiej9qPMw5ck1qD9k8xUPYBCcJZdPMLIuJ3J2XLSoco8Ma2KW3sEmf8K2RHBXHOSJE8g/kZx9IZuxf/xzJrBy7y1P0vLhIwMTYAk7AA95YvFfMx7iKFrv8tj35kCWMRnG5m7i/dxv5L111oFGHbsAx4eH9C9A89+9p3u7T3cf7R0c7u0f7R8f4/P9w6Pj40ds9957DwDkBGTEHiVRlKnKjb3/QsGyrJkT+5KCgN5jv1wJqf3ua/J9XO/NBE2ewmhF6zfSR0VJd4gcZ2ueOZ6TOUTRIWwtdQ0K1dwkCoB9Wkse2uhXWeQgfYBmhsiLqq937WMbU4S5uKnAo0vYnWF21vEJhY7ORNjXyYDHgZatXaxn2w2iHEWYQBo63r+HTcINco+zLfFsi9ns36hQoEB0yD58mKHUj01eJlEOlQ5gDNucasjNgjb2H4dKvCryQxYMrrdXgnXCA2T2fWWwJopdO6lcE9jI64IlztCgJMbtes8J4pWzJ5ACnrVTbIuAIHx2/vLtwUXjcY8DqtWNYrcU39UdbgOdEQB1lX/1K4m1RdnYfpq+R2yzKCWDRkVrZO9BMBHdFAGafk0SpAXW2vMoI5HcxNDxmCCaYo+GRQx/orvAjZah/1uJOy0is4lbtvdRypMVOkEhYaMwhVnAEo61sDys4SsMvz2+yKWfFcQI+tE6xwjeOdGVv8hRT5h7eER1nvpLy0lAb88Ae57wOQyjRU0PhUFi7X1V5iJ63LOvd2QFWuKKGcAFLn0zNfN1NdCFOeHNi4vLyrvdc6GKGPearF5NAQ4YjAedv0bxGbOjIU4eeiKpG2U2BDW2Y9lL88VauNUpHkBE358Sh0KpSyRx82w0np9irrBTJ+13Bt/lBOBIpxYOrN4U1Jlru3BHeCt42MB89ZDwBXzRoB74AG3XdPyBFJ0xP/KwmccZvGFcy5RWSzsIY4jeAL/PHqo2M6FLfqObzinOe/iW8+FIBmpTNGCX/b3eRa68hlw37+SUa8jVh1HMNeRj15B/sTeQj6nfwnTTzGXZ9ut8U6Kr3yyuQPlwd46X6Syqu7/r6Vfx2Nj4CIhAFrE7pKJ/GKsGclhW5AneZdu0SP3scUpEZkXxE7Vb+Jk4wzXaMEBW1r09kh1UXMMUpJFWG7TvOKcm4pGHiSlfaIVVYSatW811VoqA+77V/KMTezyrzjU2uqyZfbeChTgRVcbh3W/ijsHGmrwdG+ZXuFTHF2kjZV9Iwo43X1Kejp1mnBL7IduZeEnXq884tcczVfTTlIlQJPTQDVBqwkhCj+m3IjG9GKqJ1z+xdkRVj9vhh0zn2HYFr3oaJKpZOdck+KkCc/pACoOFe6pwHpFtBGhROpC0WS2CdPiMhpBNQGkymHy5GUz+ijrEZyEDkTZjZCAjAxkZyMhAA2BkICMDGRkIwchAI8V1enmfd4r9/c7vFKufT/0CLxUr7YrKYr+L+8RGrxLrc+PWYfpVYvLCMAXO0avE1K1WYJ5+i1jzrjAF6uYtYmHf5WH9V4Sp/DFjl4eJcRnEoCdet6l1hLu3hEyxOO1BPYtuBRsj9iJZnoiFfv1mLBuW1ibU1qia6ck7jdTyuCBUjo+e3NbCr7eundzRSrN4KfNx1eeBeAO5dIpDuBjrIOVwHf/EWWtijW+iAKOXq8Ho5QowernRy1vtNnq50cuNXt4Dv3e93PgmjAxUgpGBFGBkIM0OGRlIgpGBjAxkZCBVyc9DBtJGrINyfLCsrsFyxLo+mkZpsEBc3eo36VgJ2miHT5UIU3F5H8JA68tcpsXdC5j5VOQV/S0K4f8YrY9ESzZrOj2OxbfTJwPR1eZUSv8Ym1Mp5lSK3qmUlaOSX2gFy+wctURMzVMCNY6CrOubEUN++/TKA55RweUqFxUdm62Wx1qm5hKOY+6dN/uk3AOEfkpNh0HHe1R4YomliHmBZQq1Zo+KUVCNve6ZkWZTJ7mQ6r6uBoNvnyAZ3V3L2bzvEySNS3w2MU+0L0cuda3yhLHetWTFnVWUFrg/K+7H9RRhE58Uwr1chosw4UJcbZzad68hTBSItTP1TlO5HD1jzxTVUCPL70QdfYppCGG6eQhhkokIQS9b8CSUrGFb2shiREg20Z02sRwh6GYdnjgQ7eRt/aakiUhHshZPXJcIm13ii7DhJE21KCHcx4W+VVvu8lJfhI/NntwF/XzKd9XUWobliSg/Oh9zFzYy2CBMNtogbLiupxtvEKYZcBD0jTii9GRT5kRjTvWJfs8nXhuMsPnVwVUDJ83pvVwhjHAP1wgj3NtVwgja1wlrY5yc11obc58IPE203cicqVlc4+rJLoypTkLoat4yrDcVd3vJMGFUXzRcvw1lJP63gsqaIm1VzQuLGxVQWb2ZprDNSlgt7hiuAjmbtxDrsTZKntp/3bBdJeeY5H7dfv/hSWn3aV/wedlICbvgmWMFmEtKC7Mjsm8Roa0iMsTilbshq9ldOnfW6E0ZdzCBFbGk0FkEetRn1PIeMGo5M2q5UcuNWq4FRi0fAKOWG7Vc9xujlhu13Kjlf0S1fHqkdV25laEhIp8xyBmuvuJY193FL7VyrqeMNxX4EeVcC2Vd8W4EOpSqeU3F11PDu5eifrweXmrzHexKFV0D94TdayJ/m8KvM3mq80c99aIVfiHDv6oLRMqIMY9tF8EHqqCICmBA8cBxA0GY+VaJpQpJQOe8/kZU5AdoBBqUEWtlEFa1OPT45s2KJ43+wliI9NUUpprkYYg1l3dIayJFRixyl0uyEuoa9Z10tmq+9Ieg4AGUWl4eLIaGiUAgfFIEVUmK08IsLi8ue1rcz1VrYHEnkLy7TIc/T1jpurKVNWHM7jOHxc2d57BoRQp9YSkstCOyTB4LASaPhYRmHgv6THBJdUILBcYq1YVuQgu6oFG1Iml7wMkqr6gvwj5F8wKh4F/JmGFdyscWOsC1W+RDNdFJiZQ4uIyxpWvxlOHn1dEQEbDs31105nN5mUNpGqMdYxs32gAXB251yus9a2PZ2r2F9e2aF4LoEn6H1RaOAeYjGEki1hNfuqKJEnef2LKjKS4oEZeihIaY8G1tz/tOiVVDQKBBKkWETB223BEMFGV1LeGTYkTvIz50cmzog+YpuSvH0wSnk77GvfkZ3mEnkjnEu6FnbtANpJWsp4KPcgE9/FlehdvnMz7USytpMwfOQ5/QvSOnzd07bDScNbK2DRyRI2d1J3d82ElTul0m4FQ4aMzRVZ2Sn8fR1cnulM1dKRPn615cKPfgPrk314m220S4Q7TtzZouE23r/ebC24RVrV10cuTi/UQtTopYlHrmKFLdaMXK3aHRTr1IxWYU4ija0SjFrntD3/nVF6GojD4cRT0UnTgYeTiKURWZuEHUoVH4CjAK3wgYhW8cjMJnFD6j8BmFrweMwtcCo/C1wCh8n6fCNy0d/ng8XEPj09NO7vig2sghtb4YNy3NrC8GThHfNoqzX8Mbi20bRbtR7JvmrjKBN+ny1gmxbvcT5zYxxk3PO049mxTfJpzRo0j1Y9vqDunxQRiLa2u7pDUoRiOmrROvNor2Y+PZNFewXriUXgzbncRBaSQchEW7edLB+oofyDw40HbnOgJ9K84zmVJtQvbBAYx/4JyEjWnoTUyoQNqwY05JTKjAiduOSUw4kphwaNZMdsLhmTLZCU12wg26imCyE+qASYMgwaRBMGkQ9JGYNAj9YNIgmDQIJg2CNpg0CCYNQq2BJg2CSYOgAyY7oclOaLITmuyERi03ankNjFpu1PJ+MGq5UcuNWq4NRi03anmtgUYtN2q5DpjshCY7oclOWJQ12QlNdkKTnbBRvclO2AsmO+FHZSdsxBUOpihUdbK2T05IUajAKJIXjqcoHGy6Ancn7+KEPIUKtI0MhpPyFCqQVhkMJ+UpVI5skcGQTcxTqEDaDMWblKdQgbXMYGjyFJo8hSZP4QiYPIUmbUUFJm2FSVth0laYtBUmbYUaTNqKkeImbUUHTNqKP0zaCpOn0OQpNHkKjcJnFL4xMArfOBiFzyh8zCh8RuFrglH4RhtlFD6j8BVg8hSaPIUmT6HJU4hg8hSaPIWdAoqXOAVoSul2pEFNZ7KYkBpkarZG7r0yMIMCk5xiEfedMCkjlvxMzI4U8nfqOeN4AsLFOg7KrIi0tkQdPThlOBSsPZH00EnTfC1i9RxKx3eFt5UW0QNN28nAePUuAsQ+bAPVleqUq6wx8I/PahW2zlnK7HBSEcmSnFO6vn6lBqeGkqJlFQuw2UUPLqJkWeIxbBLBkBAnKytQt8LTqtmw2U8RRTpdRSdslWVxejKfv8sXPAl5BpqkH829yE3nIEC5PM7ox5W/zBNS+ecwlf4ytKAWSu02fzxlfcNXw9PVGOnzqqQc4rRi6tA9MUL4BEuWYXznUeC7fTQpxRS0qt7KWCccqDWFlooxLpAV1aKMWwSeYbVlJTFW4vfbqkDnTnOaMAp0KWVvkR9QfCcyZlIYH6iUHshNr5+/xoyJAQisPThX0Y1ARBroCrrCQ6HxS8sMJbkUAgosqGK40EA8EPHdtoB3e6K2sOmZX6caXAeMqQNceKqJVSk0TTOjNg2kg7uE2nCqNokOIh03leoYR0fMofoG0I5Zc0R8VO34Wru9jllzI0OmOlUt0zJddg2SapQTjJVagzNukNQ2QbYMi8p+DBkdP/rIr/4B31pV6iEfNRdufEBX00Coobxpir36cflD1alMe6PGvFFJWd2+URPdFKPc6IhNNby1jWoD9apNbWNmtAGkfcY1TcPZAMbCnDbVVKZzZmFk291UFSoVDw19CNhEqaU3z3AgkXt+GsusxotbZQrxsk7ieqinaqMF3d4BYVGJdIpmk0UBFxJ3z5of7/zjtI6hW/MgE+qkiSZ1AvnjZYmPaCbLHOo7KnriDa6ncEAfdvCMishKXkufDR1H4frbkoh2+NUVLIXvWJ4WJ7uUBpxyY/i2+PVd3yock4hErVqy4QsqCrTu+W4pr4nuCSw4INRmea5vkH+L4BCp3uFRkhqSVB6BqU2stJiM7XFIjWeRVIhA8z6nRNvVE+IAZ5E4izV4vGWUnSrkx8Zw/VjJjqJ/DdmxWqKj0iOal4U1qX/cAG/lBJUSqzBjjEqSpTQgRItv5DmFaL3wQ9E4UWUxsVjriAQmRPwgEM3adJDHRN3GSL/WF3OV8hx1oF+4rbnYX/ySO4GN55OQ69HYiEeDeOXHnd0Q2KnnOolH9gvBBFgqjUfOgHlJgAsbacF6qpUgEtrD9g307uaBkzCk02WUDIqao/NQLdMLDnulp6dFXra/qs8MsWme+PJUkD94CwhrE8p2084EX0u+UxL1jrg65MZPVUjrwWC+OKb5pMbJS4q12ffl7rYD+8YgSmnZBSVpp7BfSbKRU1QxAZhqjmGH216E3wyipNODT2z2PzyJhKuFL8WhNUlmxV6c0a0ZZFnfZdv02XA712vu4Tni4PaJCCYsDjoOLZDaWd/jQ+UiUp3xpSZrrZy3dCqtwTbFQbXWUpBbqZJnDmpQNY2p5pQZY5nFwmL/wvWHtucl0Zigng0pTENE7CoRvR91HqY8uQb1h8yx4gEMgrPk8gl6QnMiZ8dFYyf3KJBRzNI72ORP2JZwxsVBnjiB/BPJ2ReyGfvHP2cCK/fe8iQtHz4y8LuAJexNPOSJxX/NeIjza73LY9+bA8OIyWQ393gcRLeoI9m3zjqYXscuwPHhIf0L0P73aPfo4NHeweHe/tH+8TE+3987Ojh4xHbvvrtdAEIHAmePkijKVOXG3n+h4MS+pOsT9v49cHg3yD3OtqpJvxavt5jNPnyYCa7xvHw7W/PM8ZzMQaaCBvcmGnwiv6yFeVAZ+w0P8My/XQZXi1JBzWaCVwZZzrXjw0M/8LNbS3hr7PJkrl0sYNsNohyWreDFyBeTWb0lAi225d+o3qB4dogVog6ClcUgrSRQw2ngpCkp5aykDbF/Wn/e3Z2h0enaxwH5m49s8faVv/Zh8xRvQMh3nVR0760wMMqHp1EONVIH04aLqGEnGmnwsUBQkKZA4IQgYzRVaVAIYVpWPCd3F2y9Dg7KFu4JW71FxMRtEeX3l4ijJGv0C94lvpuew3PRKlT5qqWAELSsXyHPbqLkHe6k7VmLrATGB+RECxakmL2TQifU+97Djan4YmQcvy5aXEx+sZf6Ln/mujhVZ+qljCDtSkAeBQpLUgCNY9lsf007ch0XPWogk8XO8yAQTr7GYNM7Oy5f1r8DTW4NwmM1zBabNxtgMcu64YtVFL2zcB7/UsMsn58KshIjX5/T4nuQhDBUKSkQpX8pZY52FTiNUZ5ZqdALhmuTBQv9AWp8/97CW8u2y0XmhNDx5In9S5y2WwSP6qhl0aIkYuIgUquQLvIk7XSUHvYhLkt3Ufd37wrYVp7w7ozVB0sWssh5ejs8Vh1ktVbU8bo8ySzPT/4yv3YSsQ7m+CxttzWIlkukJHFIpoXlut6QTsnhARBHYV5xx+PJC+RyKMe3cIsyVkCFLC5L1SscwtLTZR5e1xe+IL+/v/j+b69f//jz6euzv7784eezZz+9uDh/dvqiJmCTYvBX4HBNjYVUxjf8qq3H0PNzJ1udlEzO7sYVBuh352l6nkSLhiqEYQg/8JYFLiZ08xV3gmz1W/NVm9mKQm26REc3yOlO8JwHzm2hvLOD3VoJoYWX745m9TrS+tiV7Oy8XbsOjyg2/2Jdyx241pAkyiI3Ah3j8vRcq9qhTouKuuM2vYaePaxehXw9WEVr8ZcySR1X+ZA29yz6b5Cge74ot6a93YGVfh0F+Zr/hHtTY9rW+EQszQ7JtztUfyrwdbau5oekLz/3YS9+/8GofL9H0ND/4sjz/DTJyXyzyL0ln6gIjuh/u8e7bf3v4PDwyOh/DwGSh6V8Dez6NFrHaAnf+u4vbM/e37N2QUY9dWKhfGFI2I/5gkt90f7Bz+RP5FN1RVIIM/PrPcHIgpQPlsCDunt1ficUzPPIe16uue9pzd2fpjlFTVw7v/5XKDXSANDvfbxC90nnX4P+kyjgG1p+BIzR/1Mg9ib97x7sPTX0/xAwsyyrQZnJwnFtJ89WUeL/RmYF+93XZAIAchbE+QYWxKelRrqw/mRmMWj5D0mUx2iUZltb7J+zhsiFcg2ooQknmcYSqRvxJzC7hXzvknOFfnrQMvkTGQ7+KxNCWyLwiX6JHJL084Ye1pshUEZR4knvqhy9brtoEIbb0mnATV8DqlbV2i5+gpgqdScVh9Gk/4VPySU3YwNj9H/0dK9t/z0+NPT/ILAB6X8v1sIn5gDQEKmoF8Sn6MCscHcR6xppbpqTg434i/jqomEavJvufuqJl6BB/9IwurkIMEL/+8e7h236393bN/T/EFCn/5LK5Xq/ewrv+CpqJv1Blw6mVbagVOBZWWQJuxV7/I/3W4U1Zutk6/L0fGtnC99tnehZrj788/G0FjhBYKWce5bwp1iwbGCPTi3pc2g0rN2OpqFpp93yKW0pB9oq1A5ZaU3vgLq3mkeeGlZLqFUg3Zo0CngmithxWbNVNcYJfHR8lVxE2Jvr5jERhfOmbSQbrE6UL91WLZPYV3SqSJ68Fec2nBiGFTNf01nUOOHiZCoF1kQsiMIlT6Cj3KtyZF3lmMTJZm/4OrqmAJQ1BtmkEYbspaUDcF78+M/rPfvpEVs5mGGKhxh5hstcxgZrLyWh/VrdASUPVt8q2wj/na3MTRRl4Yg9DXL0Gr08b6jJem7O0kJtSYP44eHBTGlp7lqAxfBNtGhbXQN8j6W4ayPWrr6F7VPyf/393xHSzwZiwJj8f7Db1v/3D45N/MeDgGr/L+TdTyrogzgfkY+j2ajL6B2HJl85Qco/F1n6SwQN+r+OnY8y/43R/97ewX7b/rdn4r8eBlo+TJxrmc+yZbFHOkxdBw+Id6wCb/H0CbzDjJmyGOzIn4W9XuzApUt/argbftMJeat2/8EOCROdjOShD8STnyKPN0QBHPB6Ybsq1xNfgaXXfvhMHpahqgpRsF5ZzeUtzuSLxzVf+FknUKnC2+eqbtXcDKVqBYSIn596ZRvQgUH+L89HfxTjlzBm/zk8bNl/946Pj4z950FABCcSG4mj1MeIVtDiczxRaHmR+w4Uy/jd0vb4dakEW6DnoIF0HucL4C7l8zLqMHOWJ4xkB+SVcS2k8eXVWZSdi1NCs1k9NBY9qTMZaYbNoWCzE0rjggVrnhOZD0iyNDfO4dPdXXGN1xr0eOzA8eFPiANDc+vl9tvl9o+Of5rNgLdhIbnvlacp6gxxrCo1v9/CXXFrNpOhhFjgF3RZHdkYqkWBhYh5NmvopSczecBDBi79Wei/zahJ+A5juhrhgTDOZDuZzaoQqhP29e7Xu7Oa5klPYND7ou3kGMy+KpO6nMBvGKLM9cSv2p4tfd0YIiTexJFX+L+/koFEThyf0NcWnknhVzmI7Vn5Fo35eGzdDysMjfQrX8kYJTyXqWUGySKLakOclhv4sN6szI2t/YOnfy6rLQ8gNnItFN2DmWv3Io6iwMa6oZ5WhR4XJ2Y96woRYuXys8ZR50ZHdNH1NJhOI5bPxdmreqXlod/q3By9uYKCMBQLP9t8GiscrQmU5Fs+bfWpr9BnMzizoo4T4ZEVIuLWltEtDRgwYMDA7xH+F+UdrAAAWAIA values: image: - tag: v0.8.0-dev + tag: v0.9.0-dev --- apiVersion: core.gardener.cloud/v1beta1 kind: ControllerRegistration diff --git a/go.mod b/go.mod index e47d5e36..65e7a6d0 100644 --- a/go.mod +++ b/go.mod @@ -1,51 +1,73 @@ module github.com/gardener/kupid -go 1.19 +go 1.23 require ( - github.com/gardener/gardener v1.47.0 - github.com/go-logr/logr v1.2.0 + github.com/gardener/gardener v1.50.0 + github.com/go-logr/logr v1.2.3 github.com/onsi/ginkgo v1.16.5 - github.com/onsi/gomega v1.18.0 - github.com/prometheus/client_golang v1.11.1 - go.uber.org/zap v1.19.1 + github.com/onsi/gomega v1.19.0 + github.com/prometheus/client_golang v1.12.1 + go.uber.org/zap v1.21.0 golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 - k8s.io/api v0.23.3 - k8s.io/apimachinery v0.23.3 + k8s.io/api v0.24.3 + k8s.io/apimachinery v0.24.3 k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible - sigs.k8s.io/controller-runtime v0.11.1 + sigs.k8s.io/controller-runtime v0.12.1 ) require ( - cloud.google.com/go v0.81.0 // indirect github.com/BurntSushi/toml v0.3.1 // 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 + github.com/coreos/go-systemd/v22 v22.3.2 // indirect + github.com/cyphar/filepath-securejoin v0.2.2 // indirect + github.com/gardener/etcd-druid v0.9.0 // indirect + github.com/gardener/external-dns-management v0.7.18 // indirect + github.com/gardener/hvpa-controller/api v0.5.0 // indirect + github.com/ghodss/yaml v1.0.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/google/gnostic v0.5.7-v3refs // indirect + github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/huandu/xstrings v1.3.2 // indirect + github.com/kubernetes-csi/external-snapshotter/v2 v2.1.4 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moby/spdystream v0.2.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/sirupsen/logrus v1.8.1 // indirect + golang.org/x/crypto v0.0.0-20220516162934-403b01795ae8 // indirect + istio.io/api v0.0.0-20220304035241-8c47cbbea144 // indirect + istio.io/client-go v1.12.5 // indirect + istio.io/gogo-genproto v0.0.0-20210113155706-4daf5697332f // indirect + k8s.io/apiserver v0.24.3 // indirect + k8s.io/autoscaler/vertical-pod-autoscaler v0.10.0 // indirect + k8s.io/helm v2.16.1+incompatible // indirect + k8s.io/kube-aggregator v0.24.2 // indirect + k8s.io/metrics v0.24.2 // indirect +) + +require ( + cloud.google.com/go v0.81.0 // indirect github.com/PuerkitoBio/purell v1.1.1 // indirect github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect github.com/ahmetb/gen-crd-api-reference-docs v0.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bronze1man/yaml2json v0.0.0-20201022121239-82e774ec909d // indirect - github.com/cespare/xxhash/v2 v2.1.1 // indirect - github.com/coreos/go-systemd/v22 v22.3.2 // indirect - github.com/cyphar/filepath-securejoin v0.2.2 // indirect + github.com/bronze1man/yaml2json v0.0.0-20211227013850-8972abeaea25 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/emicklei/go-restful v2.16.0+incompatible // indirect github.com/evanphx/json-patch v4.12.0+incompatible // indirect - github.com/fatih/color v1.12.0 // indirect + github.com/fatih/color v1.13.0 // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect - github.com/gardener/etcd-druid v0.8.0 // indirect - github.com/gardener/external-dns-management v0.7.18 // indirect - github.com/gardener/hvpa-controller v0.3.1 // indirect - github.com/ghodss/yaml v1.0.0 // indirect github.com/go-logr/zapr v1.2.0 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.19.5 // indirect github.com/go-openapi/swag v0.19.14 // indirect github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect - github.com/gobuffalo/flect v0.2.3 // indirect - github.com/gobwas/glob v0.2.3 // indirect + github.com/gobuffalo/flect v0.2.5 // 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 @@ -53,82 +75,63 @@ require ( github.com/google/go-cmp v0.5.7 // indirect github.com/google/gofuzz v1.1.0 // indirect github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect - github.com/google/uuid v1.1.2 // indirect - github.com/googleapis/gnostic v0.5.5 // indirect - github.com/hashicorp/errwrap v1.0.0 // indirect - github.com/hashicorp/go-multierror v1.1.0 // indirect - github.com/huandu/xstrings v1.3.2 // indirect + github.com/google/uuid v1.3.0 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/inconshreveable/mousetrap v1.0.0 // 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/mailru/easyjson v0.7.6 // indirect - github.com/mattn/go-colorable v0.1.8 // indirect - github.com/mattn/go-isatty v0.0.12 // indirect + github.com/mattn/go-colorable v0.1.12 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/moby/spdystream v0.2.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/nxadm/tail v1.4.8 // indirect - github.com/onsi/ginkgo/v2 v2.1.3 // indirect + github.com/onsi/ginkgo/v2 v2.1.4 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.28.0 // indirect - github.com/prometheus/procfs v0.6.0 // indirect - github.com/russross/blackfriday/v2 v2.0.1 // indirect - github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect - github.com/sirupsen/logrus v1.8.1 // indirect - github.com/spf13/afero v1.6.0 // indirect - github.com/spf13/cobra v1.2.1 // indirect + github.com/prometheus/common v0.32.1 // indirect + github.com/prometheus/procfs v0.7.3 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/spf13/afero v1.8.2 // indirect + github.com/spf13/cobra v1.4.0 // indirect github.com/spf13/pflag v1.0.5 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect - golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f // indirect // golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f // 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/time v0.0.0-20210723032227-1f47c861a9ac // indirect - golang.org/x/tools v0.1.12 // indirect + golang.org/x/mod v0.8.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.6.0 // indirect + golang.org/x/term v0.6.0 // indirect + golang.org/x/text v0.8.0 // indirect + golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect + golang.org/x/tools v0.6.0 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/protobuf v1.27.1 // indirect + google.golang.org/protobuf v1.28.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.0 // indirect - istio.io/api v0.0.0-20220304035241-8c47cbbea144 // indirect - istio.io/client-go v1.12.5 // indirect - istio.io/gogo-genproto v0.0.0-20210113155706-4daf5697332f // indirect - k8s.io/apiextensions-apiserver v0.23.3 // indirect - k8s.io/apiserver v0.23.3 // indirect - k8s.io/autoscaler v0.0.0-20190805135949-100e91ba756e // indirect - k8s.io/code-generator v0.23.3 // indirect - k8s.io/component-base v0.23.3 // indirect - k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c // indirect - k8s.io/helm v2.16.1+incompatible // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/apiextensions-apiserver v0.24.3 // indirect + k8s.io/code-generator v0.24.3 // indirect + k8s.io/component-base v0.24.3 // indirect + k8s.io/gengo v0.0.0-20211129171323-c02415ce4185 // indirect k8s.io/klog v1.0.0 // indirect - k8s.io/klog/v2 v2.30.0 // indirect - k8s.io/kube-aggregator v0.23.3 // indirect - k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 // indirect - k8s.io/metrics v0.23.3 // indirect - k8s.io/utils v0.0.0-20211116205334-6203023598ed // indirect - sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20211208212546-f236f0345ad2 // indirect - sigs.k8s.io/controller-tools v0.8.0 // indirect - sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect + k8s.io/klog/v2 v2.60.1 // indirect + k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 // indirect + k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect + sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20220613074012-11e533d55213 // indirect + sigs.k8s.io/controller-tools v0.9.0 // indirect + sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) replace ( - k8s.io/api => k8s.io/api v0.23.3 - k8s.io/apimachinery => k8s.io/apimachinery v0.23.3 - k8s.io/client-go => k8s.io/client-go v0.23.3 + k8s.io/api => k8s.io/api v0.24.3 + k8s.io/apimachinery => k8s.io/apimachinery v0.24.3 + k8s.io/client-go => k8s.io/client-go v0.24.3 ) diff --git a/go.sum b/go.sum index c1f2c7be..01147e42 100644 --- a/go.sum +++ b/go.sum @@ -3,6 +3,7 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -15,6 +16,7 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= @@ -37,10 +39,10 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= 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/Azure/azure-sdk-for-go v39.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= @@ -104,6 +106,8 @@ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +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-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.19.41/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= @@ -117,17 +121,17 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bronze1man/yaml2json v0.0.0-20201022121239-82e774ec909d h1:8pnjDJr9TIv2XUQhypkjAB2zB9g8OYonQkNAI3YwXFQ= -github.com/bronze1man/yaml2json v0.0.0-20201022121239-82e774ec909d/go.mod h1:mVTg4vqWRIHEJK5QnZhSXBUP8GmI7ArXGq182zSJbxM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bronze1man/yaml2json v0.0.0-20211227013850-8972abeaea25 h1:GMDsCxuwEJ1tYY5anXDexdmQ1BDVzyU5BDU7N3PQWl4= +github.com/bronze1man/yaml2json v0.0.0-20211227013850-8972abeaea25/go.mod h1:mVTg4vqWRIHEJK5QnZhSXBUP8GmI7ArXGq182zSJbxM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -160,6 +164,7 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -200,8 +205,8 @@ github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi 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/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc= -github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= @@ -210,14 +215,14 @@ github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4 github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/gardener/controller-manager-library v0.2.1-0.20200810091329-d980dbe10959/go.mod h1:XMp1tPcX3SP/dMd+3id418f5Cqu44vydeTkBRbW8EvQ= -github.com/gardener/etcd-druid v0.8.0 h1:mfQ89ywtbeGiH5ePmo+MrXNm7ADBuZGA1civ9PqSGaQ= -github.com/gardener/etcd-druid v0.8.0/go.mod h1:EJF6z4Ghv2FGUe1UzZWOEF1MxCA186fxvjBO44oSJX4= +github.com/gardener/etcd-druid v0.9.0 h1:nQWqmPpT5LhURPTADQ/93x7AiCCe7ruJ9DQnYU/IJ0w= +github.com/gardener/etcd-druid v0.9.0/go.mod h1:EJF6z4Ghv2FGUe1UzZWOEF1MxCA186fxvjBO44oSJX4= github.com/gardener/external-dns-management v0.7.18 h1:15uIyFfZSbR8fivnXvqb1Dvv4QqzfNYxEFUQ9K+mpsE= github.com/gardener/external-dns-management v0.7.18/go.mod h1:oHhauLQ3/sop0c1urS6n304Wqv/WM4me0geLn9nTAcY= -github.com/gardener/gardener v1.47.0 h1:JNzGOrcli0cigPkKLLVDkBhW7Lh7QWehQvEIblc0mU8= -github.com/gardener/gardener v1.47.0/go.mod h1:JgQDOhOe7E8r6L+he46JBM5/NUwCKwfQ3uumBtunRsk= -github.com/gardener/hvpa-controller v0.3.1 h1:VsOdcKZMcZDlUNVbFY8oqlKrb1GSCdmzPooKT/Tyi+Y= -github.com/gardener/hvpa-controller v0.3.1/go.mod h1:rjsb3BPKJFMluudZ8/bhCCDQfFCF/0Um+rzXQI/MmfI= +github.com/gardener/gardener v1.50.0 h1:5JfyAKpZC27ACRG77r80O0lWXcYPPfdRsi92r6hF/HM= +github.com/gardener/gardener v1.50.0/go.mod h1:Rc2JNnGPMEH+0Wm04EOVLmu9VonyU4JCk1VjOjHUGx8= +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/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -236,9 +241,10 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE= +github.com/go-logr/logr v0.4.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/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= +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/zapr v1.2.0 h1:n4JnPI1T3Qq1SFEi/F8rwLrZERp2bso19PJZDB9dayk= github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= @@ -293,10 +299,9 @@ github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85n 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/gobuffalo/flect v0.1.5/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= -github.com/gobuffalo/flect v0.2.3 h1:f/ZukRnSNA/DUpSNDadko7Qc0PhGvsew35p/2tu+CRY= -github.com/gobuffalo/flect v0.2.3/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc= +github.com/gobuffalo/flect v0.2.5 h1:H6vvsv2an0lalEaCDRThvtBfmg44W/QHXBCYUXf/6S4= +github.com/gobuffalo/flect v0.2.5/go.mod h1:1ZyCLIbg0YD7sDkzvFdPoOydPtD8y9JQnrOROolUcM8= 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/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -310,7 +315,6 @@ github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptG github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/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= @@ -349,8 +353,10 @@ github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu 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= -github.com/google/cel-go v0.9.0/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSxrmI1w= +github.com/google/cel-go v0.10.1/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSxrmI1w= github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA= +github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -365,7 +371,6 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/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= @@ -381,6 +386,7 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= @@ -388,16 +394,15 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= 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.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= -github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gophercloud/gophercloud v0.0.0-20190212181753-892256c46858/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gophercloud/gophercloud v0.2.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gophercloud/utils v0.0.0-20190527093828-25f1b77b8c03/go.mod h1:SZ9FTKibIotDtCrxAU/evccoyu1yhKST6hgBvwTB5Eg= @@ -422,15 +427,14 @@ github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= @@ -494,7 +498,6 @@ github.com/kubernetes-csi/external-snapshotter/v2 v2.1.4 h1:5k854kIoa81t4A0BhVAX github.com/kubernetes-csi/external-snapshotter/v2 v2.1.4/go.mod h1:2ar8FelpdkUJaoqp8cQpucBd8pir8c1K5BQIVZwUbJI= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -505,14 +508,16 @@ github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= @@ -535,7 +540,7 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= 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= @@ -545,6 +550,7 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -559,33 +565,25 @@ github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:v github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= 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.8.0/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.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.1.3 h1:e/3Cwtogj0HA+25nMP1jCMDIf8RtRYbGwGGuBIFztkc= -github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY= +github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.18.0 h1:ngbYoRctxjl8SiF7XgP0NxBFbfHcg3wfHMMaFHWwMTM= -github.com/onsi/gomega v1.18.0/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= +github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v0.0.0-20170612153648-e790cca94e6c/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.6.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= 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= @@ -593,52 +591,52 @@ github.com/pkg/errors v0.9.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE 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.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +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/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/prometheus/client_golang v0.9.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.11.1 h1:+4eQaD7vAZ6DsfsxB15hbE0odUjGI5ARs9yskGu1v4s= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.28.0 h1:vGVfV9KrDTvWt5boZO0I19g2E3CsWfpPPKZM9dt3mEw= -github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= 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 v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= 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= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -654,28 +652,25 @@ github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= +github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= +github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -706,15 +701,18 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/client/v3 v3.5.1/go.mod h1:OnjH4M8OnAotwaB2l9bVgZzRFKru7/ZMoS46OtKyd3Q= go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= @@ -745,18 +743,17 @@ go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI= -go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= +go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -771,11 +768,15 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f h1:OeJjE6G4dgCY4PIXvIRQbE8+RX+uXZyGhUy/ksMGJoc= -golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220516162934-403b01795ae8 h1:y+mHpWoQJNAHt26Nhh6JP7hvM71IRZureyvZhoVALIs= +golang.org/x/crypto v0.0.0-20220516162934-403b01795ae8/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= 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= @@ -814,8 +815,9 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +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/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= @@ -861,17 +863,18 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -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.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +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= @@ -883,10 +886,10 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -898,6 +901,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -914,7 +919,6 @@ golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -948,7 +952,6 @@ golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/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-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -959,26 +962,32 @@ golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/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-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -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.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +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= @@ -989,15 +998,15 @@ 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.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-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= +golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1012,7 +1021,6 @@ golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190501045030-23463209683d/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -1061,19 +1069,20 @@ golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +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/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 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.0.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f h1:GGU+dLjvlC3qDwqYgL6UgRmHXhOOgns0bZu2Ty5mm6U= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/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= @@ -1100,7 +1109,6 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1148,13 +1156,16 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= 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-20210222152913-aa3ee6e6a81c/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-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= 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.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1191,8 +1202,9 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1206,7 +1218,6 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= @@ -1228,8 +1239,8 @@ gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0 h1:hjy8E9ON/egN1tAYqKb61G10WtihqetD4sz2H+8nIeA= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= @@ -1246,37 +1257,43 @@ istio.io/client-go v1.12.5 h1:jRRXcL8kX1ph4BVU/yuRhO4JYX/av5KPimj+7uHqyfQ= istio.io/client-go v1.12.5/go.mod h1:rKTRGbzRHY/lb3VCCIF4wwTwvkW000acWEcseSy3V9M= istio.io/gogo-genproto v0.0.0-20210113155706-4daf5697332f h1:9710FpGLvIJ1GGEbpuTh1smVBv+r8cJfR3G82ouSxIQ= istio.io/gogo-genproto v0.0.0-20210113155706-4daf5697332f/go.mod h1:6BwTZRNbWS570wHX/uR1Wqk5e0157TofTAUMzT7N4+s= -k8s.io/api v0.23.3 h1:KNrME8KHGr12Ozjf8ytOewKzZh6hl/hHUZeHddT3a38= -k8s.io/api v0.23.3/go.mod h1:w258XdGyvCmnBj/vGzQMj6kzdufJZVUwEM1U2fRJwSQ= -k8s.io/apiextensions-apiserver v0.0.0-20190409022649-727a075fdec8/go.mod h1:IxkesAMoaCRoLrPJdZNZUQp9NfZnzqaVzLhb2VEQzXE= +k8s.io/api v0.24.3 h1:tt55QEmKd6L2k5DP6G/ZzdMQKvG5ro4H4teClqm0sTY= +k8s.io/api v0.24.3/go.mod h1:elGR/XSZrS7z7cSZPzVWaycpJuGIw57j9b95/1PdJNI= k8s.io/apiextensions-apiserver v0.17.0/go.mod h1:XiIFUakZywkUl54fVXa7QTEHcqQz9HG55nHd1DCoHj8= k8s.io/apiextensions-apiserver v0.18.6/go.mod h1:lv89S7fUysXjLZO7ke783xOwVTm6lKizADfvUM/SS/M= -k8s.io/apiextensions-apiserver v0.23.3 h1:JvPJA7hSEAqMRteveq4aj9semilAZYcJv+9HHFWfUdM= -k8s.io/apiextensions-apiserver v0.23.3/go.mod h1:/ZpRXdgKZA6DvIVPEmXDCZJN53YIQEUDF+hrpIQJL38= -k8s.io/apimachinery v0.23.3 h1:7IW6jxNzrXTsP0c8yXz2E5Yx/WTzVPTsHIx/2Vm0cIk= -k8s.io/apimachinery v0.23.3/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= +k8s.io/apiextensions-apiserver v0.24.3 h1:kyx+Tmro1qEsTUr07ZGQOfvTsF61yn+AxnxytBWq8As= +k8s.io/apiextensions-apiserver v0.24.3/go.mod h1:cL0xkmUefpYM4f6IuOau+6NMFEIh6/7wXe/O4vPVJ8A= +k8s.io/apimachinery v0.24.3 h1:hrFiNSA2cBZqllakVYyH/VyEh4B581bQRmqATJSeQTg= +k8s.io/apimachinery v0.24.3/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= k8s.io/apiserver v0.18.6/go.mod h1:Zt2XvTHuaZjBz6EFYzpp+X4hTmgWGy8AthNVnTdm3Wg= -k8s.io/apiserver v0.23.3 h1:gWY1DmA0AdAGR/H+Q/1FtyGkFq8xqSaZOw7oLopmO8k= -k8s.io/apiserver v0.23.3/go.mod h1:3HhsTmC+Pn+Jctw+Ow0LHA4dQ4oXrQ4XJDzrVDG64T4= -k8s.io/autoscaler v0.0.0-20190805135949-100e91ba756e h1:5AX59ZgftHpbmNupSWosdtW4q/rCnF4s/0J0dEfJkAQ= -k8s.io/autoscaler v0.0.0-20190805135949-100e91ba756e/go.mod h1:QEXezc9uKPT91dwqhSJq3GNI3B1HxFRQHiku9kmrsSA= -k8s.io/client-go v0.23.3 h1:23QYUmCQ/W6hW78xIwm3XqZrrKZM+LWDqW2zfo+szJs= -k8s.io/client-go v0.23.3/go.mod h1:47oMd+YvAOqZM7pcQ6neJtBiFH7alOyfunYN48VsmwE= +k8s.io/apiserver v0.24.2/go.mod h1:pSuKzr3zV+L+MWqsEo0kHHYwCo77AT5qXbFXP2jbvFI= +k8s.io/apiserver v0.24.3 h1:J8CKjUaZopT0hSgxjzUyp3T1GK78iixxOuFpEC0MI3k= +k8s.io/apiserver v0.24.3/go.mod h1:aXfwtIn4U27B7lYs5f2BKgz6DRbgWy+HJeYReN1jLJ8= +k8s.io/autoscaler/vertical-pod-autoscaler v0.9.0/go.mod h1:PwWTGRRCxefhAezrDbG/tRYSAW7etHjjMPAr8fXKVAA= +k8s.io/autoscaler/vertical-pod-autoscaler v0.10.0 h1:mSO9phIinHH3bRuXQkHMIA2uJ4i1WSayDeYr8J3bGjU= +k8s.io/autoscaler/vertical-pod-autoscaler v0.10.0/go.mod h1:sOm4JDB+0ZrrqFuscsbWL5KoFMMJuOrN1NE/6ulmYNA= +k8s.io/client-go v0.24.3 h1:Nl1840+6p4JqkFWEW2LnMKU667BUxw03REfLAVhuKQY= +k8s.io/client-go v0.24.3/go.mod h1:AAovolf5Z9bY1wIg2FZ8LPQlEdKHjLI7ZD4rw920BJw= k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= k8s.io/code-generator v0.17.0/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= +k8s.io/code-generator v0.18.3/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= k8s.io/code-generator v0.18.6/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= -k8s.io/code-generator v0.23.3 h1:NSAKIkvkL8OaWr5DrF9CXGBJjhMp3itplT/6fwHQcAY= -k8s.io/code-generator v0.23.3/go.mod h1:S0Q1JVA+kSzTI1oUvbKAxZY/DYbA/ZUb4Uknog12ETk= +k8s.io/code-generator v0.24.2/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w= +k8s.io/code-generator v0.24.3 h1:itd1V1ZAYKM+WT+qQDlFKhU1D/Ff5HcEFL/icfClnZA= +k8s.io/code-generator v0.24.3/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w= k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= +k8s.io/component-base v0.18.3/go.mod h1:bp5GzGR0aGkYEfTj+eTY0AN/vXTgkJdQXjNTTVUaa3k= k8s.io/component-base v0.18.6/go.mod h1:knSVsibPR5K6EW2XOjEHik6sdU5nCvKMrzMt2D4In14= -k8s.io/component-base v0.23.3 h1:q+epprVdylgecijVGVdf4MbizEL2feW4ssd7cdo6LVY= -k8s.io/component-base v0.23.3/go.mod h1:1Smc4C60rWG7d3HjSYpIwEbySQ3YWg0uzH5a2AtaTLg= +k8s.io/component-base v0.24.2/go.mod h1:ucHwW76dajvQ9B7+zecZAP3BVqvrHoOxm8olHEg0nmM= +k8s.io/component-base v0.24.3 h1:u99WjuHYCRJjS1xeLOx72DdRaghuDnuMgueiGMFy1ec= +k8s.io/component-base v0.24.3/go.mod h1:bqom2IWN9Lj+vwAkPNOv2TflsP1PeVDIwIN0lRthxYY= 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-20210813121822-485abfe95c7c h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20211129171323-c02415ce4185 h1:TT1WdmqqXareKxZ/oNXEUSwKlLiHzPMyB0t8BaFeBYI= +k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/helm v2.16.0+incompatible/go.mod h1:LZzlS4LQBHfciFOurYBFkCMTaZ0D1l+p0teMg7TSULI= k8s.io/helm v2.16.1+incompatible h1:L+k810plJlaGWEw1EszeT4deK8XVaKxac1oGcuB+WDc= k8s.io/helm v2.16.1+incompatible/go.mod h1:LZzlS4LQBHfciFOurYBFkCMTaZ0D1l+p0teMg7TSULI= @@ -1287,25 +1304,25 @@ k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= 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.30.0 h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw= -k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-aggregator v0.23.3 h1:9IP+D+YzIbGor/TArN3pYf9Thj19wYhzLRGRrFaKFSs= -k8s.io/kube-aggregator v0.23.3/go.mod h1:pt5QJ3QaIdhZzNlUvN5wndbM0LNT4BvhszGkzy2QdFo= -k8s.io/kube-openapi v0.0.0-20180731170545-e3762e86a74c/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= +k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= +k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= +k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-aggregator v0.24.2 h1:vaKw45vFA5fIT0wdSehPIL7idjVxgLqz6iedOHedLG4= +k8s.io/kube-aggregator v0.24.2/go.mod h1:Ju2jNDixn+vqeeKEBfjfpc204bO1pbdXX0N9knCxeMQ= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU= -k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4= -k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= +k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 h1:Gii5eqf+GmIEwGNKQYQClCayuJCe2/4fZUvF7VG99sU= +k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= k8s.io/kubernetes v1.14.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/metrics v0.23.3 h1:rX/RBOwqi0atFlTSlpbQ7CX5s/kfqGR9zEefCx9Rv1s= -k8s.io/metrics v0.23.3/go.mod h1:Ut8TvkbsO4oMVeUzaTArvPrcw9QRFLs2XNzUlORjdYE= -k8s.io/utils v0.0.0-20190506122338-8fab8cb257d5/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/metrics v0.18.3/go.mod h1:TkuJE3ezDZ1ym8pYkZoEzJB7HDiFE7qxl+EmExEBoPA= +k8s.io/metrics v0.24.2 h1:3lgEq973VGPWAEaT9VI/p0XmI0R5kJgb/r9Ufr5fz8k= +k8s.io/metrics v0.24.2/go.mod h1:5NWURxZ6Lz5gj8TFU83+vdWIVASx7W8lwPpHYCqopMo= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= 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-20211116205334-6203023598ed h1:ck1fRPWPJWsMd8ZRFsWc6mh/zHp5fZ/shhbrgPUxDAE= -k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= +k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= 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= @@ -1315,18 +1332,16 @@ 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/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.27/go.mod h1:tq2nT0Kx7W+/f2JVE+zxYtUhdjuELJkVpNz+x/QN5R4= -sigs.k8s.io/controller-runtime v0.2.0-beta.5/go.mod h1:HweyYKQ8fBuzdu2bdaeBJvsFgAi/OqBBnrVGXcqKhME= -sigs.k8s.io/controller-runtime v0.11.1 h1:7YIHT2QnHJArj/dk9aUkYhfqfK5cIxPOX5gPECfdZLU= -sigs.k8s.io/controller-runtime v0.11.1/go.mod h1:KKwLiTooNGu+JmLZGn9Sl3Gjmfj66eMbCQznLP5zcqA= -sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20211208212546-f236f0345ad2 h1:ixmjiqjca72gl+JktzMpZZJYDpYJ4ZGgExZJJ4AzG7o= -sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20211208212546-f236f0345ad2/go.mod h1:+sJcI1F0QI0Cv+8fp5rH5B2fK1LxzrAQqYnaPx9nY8I= -sigs.k8s.io/controller-tools v0.2.0-beta.4/go.mod h1:8t/X+FVWvk6TaBcsa+UKUBbn7GMtvyBKX30SGl4em6Y= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30/go.mod h1:fEO7lRTdivWO2qYVCVG7dEADOMo/MLDCVr8So2g88Uw= +sigs.k8s.io/controller-runtime v0.12.1 h1:4BJY01xe9zKQti8oRjj/NeHKRXthf1YkYJAgLONFFoI= +sigs.k8s.io/controller-runtime v0.12.1/go.mod h1:BKhxlA4l7FPK4AQcsuL4X6vZeWnKDXez/vp1Y8dxTU0= +sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20220613074012-11e533d55213 h1:iJ6yK+uR1h/+LPASQkwQmZ0Vhv0oJfwPDS323/S6R9s= +sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20220613074012-11e533d55213/go.mod h1:nLkMD2WB4Jcix1qfVuJeOF4j5y/VfyeOIlTxG5Wj9co= sigs.k8s.io/controller-tools v0.2.9/go.mod h1:ArP7w60JQKkZf7UU2oWTVnEhoNGA+sOMyuSuS+JFNDQ= -sigs.k8s.io/controller-tools v0.8.0 h1:uUkfTGEwrguqYYfcI2RRGUnC8mYdCFDqfwPKUcNJh1o= -sigs.k8s.io/controller-tools v0.8.0/go.mod h1:qE2DXhVOiEq5ijmINcFbqi9GZrrUjzB1TuJU0xa6eoY= -sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s= -sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= +sigs.k8s.io/controller-tools v0.9.0 h1:b/vSEPpA8hiMiyzDfLbZdCn3hoAcy3/868OHhYtHY9w= +sigs.k8s.io/controller-tools v0.9.0/go.mod h1:NUkn8FTV3Sad3wWpSK7dt/145qfuQ8CKJV6j4jHC5rM= +sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y= +sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= sigs.k8s.io/kind v0.7.0/go.mod h1:An/AbWHT6pA/Lm0Og8j3ukGhfJP3RiVN/IBU6Lo3zl8= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= @@ -1334,9 +1349,9 @@ sigs.k8s.io/structured-merge-diff/v2 v2.0.1/go.mod h1:Wb7vfKAodbKgf6tn1Kl0VvGj7m 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.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y= sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -sigs.k8s.io/testing_frameworks v0.1.1/go.mod h1:VVBKrHmJ6Ekkfz284YKhQePcdycOzNH9qL6ht1zEr/U= +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= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= diff --git a/main.go b/main.go index 6f1f7caf..f044d526 100644 --- a/main.go +++ b/main.go @@ -33,8 +33,10 @@ import ( corev1 "k8s.io/api/core/v1" extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook" + kupidv1alpha1 "github.com/gardener/kupid/api/v1alpha1" "github.com/gardener/kupid/pkg/webhook" + kupidwebhook "github.com/gardener/kupid/pkg/webhook" admissionregistrationv1 "k8s.io/api/admissionregistration/v1" ) @@ -194,10 +196,9 @@ func doRegisterWebhooks(mgr manager.Manager, certDir, namespace string, timeoutS } ctx := context.TODO() - setupLog.Info("Registering TLS certificates if necessary.") - caBundle, err := extensionswebhook.GenerateCertificates( + caBundle, err := kupidwebhook.GenerateCertificates( ctx, mgr, certDir, @@ -209,7 +210,6 @@ func doRegisterWebhooks(mgr manager.Manager, certDir, namespace string, timeoutS if err != nil { return err } - clientConfig := buildWebhookClientConfig(namespace, caBundle) setupLog.Info("Registering webhooks if necessary.") diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates.go b/pkg/webhook/certificates.go similarity index 100% rename from vendor/github.com/gardener/gardener/extensions/pkg/webhook/certificates.go rename to pkg/webhook/certificates.go diff --git a/vendor/github.com/bronze1man/yaml2json/LICENSE b/vendor/github.com/bronze1man/yaml2json/LICENSE index 07aa1867..914e84b2 100644 --- a/vendor/github.com/bronze1man/yaml2json/LICENSE +++ b/vendor/github.com/bronze1man/yaml2json/LICENSE @@ -1,17 +1,17 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/cespare/xxhash/v2/.travis.yml b/vendor/github.com/cespare/xxhash/v2/.travis.yml deleted file mode 100644 index c516ea88..00000000 --- a/vendor/github.com/cespare/xxhash/v2/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: go -go: - - "1.x" - - master -env: - - TAGS="" - - TAGS="-tags purego" -script: go test $TAGS -v ./... diff --git a/vendor/github.com/cespare/xxhash/v2/README.md b/vendor/github.com/cespare/xxhash/v2/README.md index 2fd8693c..792b4a60 100644 --- a/vendor/github.com/cespare/xxhash/v2/README.md +++ b/vendor/github.com/cespare/xxhash/v2/README.md @@ -1,7 +1,7 @@ # xxhash -[![GoDoc](https://godoc.org/github.com/cespare/xxhash?status.svg)](https://godoc.org/github.com/cespare/xxhash) -[![Build Status](https://travis-ci.org/cespare/xxhash.svg?branch=master)](https://travis-ci.org/cespare/xxhash) +[![Go Reference](https://pkg.go.dev/badge/github.com/cespare/xxhash/v2.svg)](https://pkg.go.dev/github.com/cespare/xxhash/v2) +[![Test](https://github.com/cespare/xxhash/actions/workflows/test.yml/badge.svg)](https://github.com/cespare/xxhash/actions/workflows/test.yml) xxhash is a Go implementation of the 64-bit [xxHash](http://cyan4973.github.io/xxHash/) algorithm, XXH64. This is a @@ -64,4 +64,6 @@ $ go test -benchtime 10s -bench '/xxhash,direct,bytes' - [InfluxDB](https://github.com/influxdata/influxdb) - [Prometheus](https://github.com/prometheus/prometheus) +- [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) - [FreeCache](https://github.com/coocood/freecache) +- [FastCache](https://github.com/VictoriaMetrics/fastcache) diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash.go b/vendor/github.com/cespare/xxhash/v2/xxhash.go index db0b35fb..15c835d5 100644 --- a/vendor/github.com/cespare/xxhash/v2/xxhash.go +++ b/vendor/github.com/cespare/xxhash/v2/xxhash.go @@ -193,7 +193,6 @@ func (d *Digest) UnmarshalBinary(b []byte) error { b, d.v4 = consumeUint64(b) b, d.total = consumeUint64(b) copy(d.mem[:], b) - b = b[len(d.mem):] d.n = int(d.total % uint64(len(d.mem))) return nil } diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s b/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s index d580e32a..be8db5bf 100644 --- a/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s +++ b/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s @@ -6,7 +6,7 @@ // Register allocation: // AX h -// CX pointer to advance through b +// SI pointer to advance through b // DX n // BX loop end // R8 v1, k1 @@ -16,39 +16,39 @@ // R12 tmp // R13 prime1v // R14 prime2v -// R15 prime4v +// DI prime4v -// round reads from and advances the buffer pointer in CX. +// round reads from and advances the buffer pointer in SI. // It assumes that R13 has prime1v and R14 has prime2v. #define round(r) \ - MOVQ (CX), R12 \ - ADDQ $8, CX \ + MOVQ (SI), R12 \ + ADDQ $8, SI \ IMULQ R14, R12 \ ADDQ R12, r \ ROLQ $31, r \ IMULQ R13, r // mergeRound applies a merge round on the two registers acc and val. -// It assumes that R13 has prime1v, R14 has prime2v, and R15 has prime4v. +// It assumes that R13 has prime1v, R14 has prime2v, and DI has prime4v. #define mergeRound(acc, val) \ IMULQ R14, val \ ROLQ $31, val \ IMULQ R13, val \ XORQ val, acc \ IMULQ R13, acc \ - ADDQ R15, acc + ADDQ DI, acc // func Sum64(b []byte) uint64 TEXT ·Sum64(SB), NOSPLIT, $0-32 // Load fixed primes. MOVQ ·prime1v(SB), R13 MOVQ ·prime2v(SB), R14 - MOVQ ·prime4v(SB), R15 + MOVQ ·prime4v(SB), DI // Load slice. - MOVQ b_base+0(FP), CX + MOVQ b_base+0(FP), SI MOVQ b_len+8(FP), DX - LEAQ (CX)(DX*1), BX + LEAQ (SI)(DX*1), BX // The first loop limit will be len(b)-32. SUBQ $32, BX @@ -65,14 +65,14 @@ TEXT ·Sum64(SB), NOSPLIT, $0-32 XORQ R11, R11 SUBQ R13, R11 - // Loop until CX > BX. + // Loop until SI > BX. blockLoop: round(R8) round(R9) round(R10) round(R11) - CMPQ CX, BX + CMPQ SI, BX JLE blockLoop MOVQ R8, AX @@ -100,16 +100,16 @@ noBlocks: afterBlocks: ADDQ DX, AX - // Right now BX has len(b)-32, and we want to loop until CX > len(b)-8. + // Right now BX has len(b)-32, and we want to loop until SI > len(b)-8. ADDQ $24, BX - CMPQ CX, BX + CMPQ SI, BX JG fourByte wordLoop: // Calculate k1. - MOVQ (CX), R8 - ADDQ $8, CX + MOVQ (SI), R8 + ADDQ $8, SI IMULQ R14, R8 ROLQ $31, R8 IMULQ R13, R8 @@ -117,18 +117,18 @@ wordLoop: XORQ R8, AX ROLQ $27, AX IMULQ R13, AX - ADDQ R15, AX + ADDQ DI, AX - CMPQ CX, BX + CMPQ SI, BX JLE wordLoop fourByte: ADDQ $4, BX - CMPQ CX, BX + CMPQ SI, BX JG singles - MOVL (CX), R8 - ADDQ $4, CX + MOVL (SI), R8 + ADDQ $4, SI IMULQ R13, R8 XORQ R8, AX @@ -138,19 +138,19 @@ fourByte: singles: ADDQ $4, BX - CMPQ CX, BX + CMPQ SI, BX JGE finalize singlesLoop: - MOVBQZX (CX), R12 - ADDQ $1, CX + MOVBQZX (SI), R12 + ADDQ $1, SI IMULQ ·prime5v(SB), R12 XORQ R12, AX ROLQ $11, AX IMULQ R13, AX - CMPQ CX, BX + CMPQ SI, BX JL singlesLoop finalize: @@ -179,9 +179,9 @@ TEXT ·writeBlocks(SB), NOSPLIT, $0-40 MOVQ ·prime2v(SB), R14 // Load slice. - MOVQ b_base+8(FP), CX + MOVQ b_base+8(FP), SI MOVQ b_len+16(FP), DX - LEAQ (CX)(DX*1), BX + LEAQ (SI)(DX*1), BX SUBQ $32, BX // Load vN from d. @@ -199,7 +199,7 @@ blockLoop: round(R10) round(R11) - CMPQ CX, BX + CMPQ SI, BX JLE blockLoop // Copy vN back to d. @@ -208,8 +208,8 @@ blockLoop: MOVQ R10, 16(AX) MOVQ R11, 24(AX) - // The number of bytes written is CX minus the old base pointer. - SUBQ b_base+8(FP), CX - MOVQ CX, ret+32(FP) + // The number of bytes written is SI minus the old base pointer. + SUBQ b_base+8(FP), SI + MOVQ SI, ret+32(FP) RET diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go b/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go index 53bf76ef..376e0ca2 100644 --- a/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go +++ b/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go @@ -6,41 +6,52 @@ package xxhash import ( - "reflect" "unsafe" ) -// Notes: +// In the future it's possible that compiler optimizations will make these +// XxxString functions unnecessary by realizing that calls such as +// Sum64([]byte(s)) don't need to copy s. See https://golang.org/issue/2205. +// If that happens, even if we keep these functions they can be replaced with +// the trivial safe code. + +// NOTE: The usual way of doing an unsafe string-to-[]byte conversion is: // -// See https://groups.google.com/d/msg/golang-nuts/dcjzJy-bSpw/tcZYBzQqAQAJ -// for some discussion about these unsafe conversions. +// var b []byte +// bh := (*reflect.SliceHeader)(unsafe.Pointer(&b)) +// bh.Data = (*reflect.StringHeader)(unsafe.Pointer(&s)).Data +// bh.Len = len(s) +// bh.Cap = len(s) // -// In the future it's possible that compiler optimizations will make these -// unsafe operations unnecessary: https://golang.org/issue/2205. +// Unfortunately, as of Go 1.15.3 the inliner's cost model assigns a high enough +// weight to this sequence of expressions that any function that uses it will +// not be inlined. Instead, the functions below use a different unsafe +// conversion designed to minimize the inliner weight and allow both to be +// inlined. There is also a test (TestInlining) which verifies that these are +// inlined. // -// Both of these wrapper functions still incur function call overhead since they -// will not be inlined. We could write Go/asm copies of Sum64 and Digest.Write -// for strings to squeeze out a bit more speed. Mid-stack inlining should -// eventually fix this. +// See https://github.com/golang/go/issues/42739 for discussion. // Sum64String computes the 64-bit xxHash digest of s. // It may be faster than Sum64([]byte(s)) by avoiding a copy. func Sum64String(s string) uint64 { - var b []byte - bh := (*reflect.SliceHeader)(unsafe.Pointer(&b)) - bh.Data = (*reflect.StringHeader)(unsafe.Pointer(&s)).Data - bh.Len = len(s) - bh.Cap = len(s) + b := *(*[]byte)(unsafe.Pointer(&sliceHeader{s, len(s)})) return Sum64(b) } // WriteString adds more data to d. It always returns len(s), nil. // It may be faster than Write([]byte(s)) by avoiding a copy. func (d *Digest) WriteString(s string) (n int, err error) { - var b []byte - bh := (*reflect.SliceHeader)(unsafe.Pointer(&b)) - bh.Data = (*reflect.StringHeader)(unsafe.Pointer(&s)).Data - bh.Len = len(s) - bh.Cap = len(s) - return d.Write(b) + d.Write(*(*[]byte)(unsafe.Pointer(&sliceHeader{s, len(s)}))) + // d.Write always returns len(s), nil. + // Ignoring the return output and returning these fixed values buys a + // savings of 6 in the inliner's cost model. + return len(s), nil +} + +// sliceHeader is similar to reflect.SliceHeader, but it assumes that the layout +// of the first two words is the same as the layout of a string. +type sliceHeader struct { + s string + cap int } diff --git a/vendor/github.com/fatih/color/README.md b/vendor/github.com/fatih/color/README.md index 5c751f21..5152bf59 100644 --- a/vendor/github.com/fatih/color/README.md +++ b/vendor/github.com/fatih/color/README.md @@ -78,7 +78,7 @@ notice("Don't forget this...") ### Custom fprint functions (FprintFunc) ```go -blue := color.New(FgBlue).FprintfFunc() +blue := color.New(color.FgBlue).FprintfFunc() blue(myWriter, "important notice: %s", stars) // Mix up with multiple attributes diff --git a/vendor/github.com/gardener/etcd-druid/api/v1alpha1/etcd_types.go b/vendor/github.com/gardener/etcd-druid/api/v1alpha1/etcd_types.go index b9d80741..d89b5db7 100644 --- a/vendor/github.com/gardener/etcd-druid/api/v1alpha1/etcd_types.go +++ b/vendor/github.com/gardener/etcd-druid/api/v1alpha1/etcd_types.go @@ -88,11 +88,11 @@ type StoreSpec struct { // TLSConfig hold the TLS configuration details. type TLSConfig struct { // +required - ServerTLSSecretRef corev1.SecretReference `json:"serverTLSSecretRef"` + TLSCASecretRef SecretReference `json:"tlsCASecretRef"` // +required + ServerTLSSecretRef corev1.SecretReference `json:"serverTLSSecretRef"` + // +optional ClientTLSSecretRef corev1.SecretReference `json:"clientTLSSecretRef"` - // +required - TLSCASecretRef SecretReference `json:"tlsCASecretRef"` } // SecretReference defines a reference to a secret. @@ -217,8 +217,13 @@ type EtcdConfig struct { // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ // +optional Resources *corev1.ResourceRequirements `json:"resources,omitempty"` + // ClientUrlTLS contains the ca, server TLS and client TLS secrets for client communication to ETCD cluster // +optional - TLS *TLSConfig `json:"tls,omitempty"` + ClientUrlTLS *TLSConfig `json:"clientUrlTls,omitempty"` + // PeerUrlTLS contains the ca and server TLS secrets for peer communication within ETCD cluster + // Currently, PeerUrlTLS does not require client TLS secrets for gardener implementation of ETCD cluster. + // +optional + PeerUrlTLS *TLSConfig `json:"peerUrlTls,omitempty"` // EtcdDefragTimeout defines the timeout duration for etcd defrag call // +optional EtcdDefragTimeout *metav1.Duration `json:"etcdDefragTimeout,omitempty"` @@ -237,6 +242,20 @@ type SharedConfig struct { AutoCompactionRetention *string `json:"autoCompactionRetention,omitempty"` } +// SchedulingConstraints defines the different scheduling constraints that must be applied to the +// pod spec in the etcd statefulset. +// Currently supported constraints are Affinity and TopologySpreadConstraints. +type SchedulingConstraints struct { + // Affinity defines the various affinity and anti-affinity rules for a pod + // that are honoured by the kube-scheduler. + // +optional + Affinity *corev1.Affinity `json:"affinity,omitempty"` + // TopologySpreadConstraints describes how a group of pods ought to spread across topology domains, + // that are honoured by the kube-scheduler. + // +optional + TopologySpreadConstraints []corev1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"` +} + // EtcdSpec defines the desired state of Etcd type EtcdSpec struct { // selector is a label query over pods that should match the replica count. @@ -253,6 +272,8 @@ type EtcdSpec struct { Backup BackupSpec `json:"backup"` // +optional Common SharedConfig `json:"sharedConfig,omitempty"` + // +optional + SchedulingConstraints SchedulingConstraints `json:"schedulingConstraints,omitempty"` // +required Replicas int32 `json:"replicas"` // PriorityClassName is the name of a priority class that shall be used for the etcd pods. diff --git a/vendor/github.com/gardener/etcd-druid/api/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/etcd-druid/api/v1alpha1/zz_generated.deepcopy.go index 770eb619..2a4c1226 100644 --- a/vendor/github.com/gardener/etcd-druid/api/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/etcd-druid/api/v1alpha1/zz_generated.deepcopy.go @@ -247,8 +247,13 @@ func (in *EtcdConfig) DeepCopyInto(out *EtcdConfig) { *out = new(v1.ResourceRequirements) (*in).DeepCopyInto(*out) } - if in.TLS != nil { - in, out := &in.TLS, &out.TLS + if in.ClientUrlTLS != nil { + in, out := &in.ClientUrlTLS, &out.ClientUrlTLS + *out = new(TLSConfig) + (*in).DeepCopyInto(*out) + } + if in.PeerUrlTLS != nil { + in, out := &in.PeerUrlTLS, &out.PeerUrlTLS *out = new(TLSConfig) (*in).DeepCopyInto(*out) } @@ -480,6 +485,7 @@ func (in *EtcdSpec) DeepCopyInto(out *EtcdSpec) { in.Etcd.DeepCopyInto(&out.Etcd) in.Backup.DeepCopyInto(&out.Backup) in.Common.DeepCopyInto(&out.Common) + in.SchedulingConstraints.DeepCopyInto(&out.SchedulingConstraints) if in.PriorityClassName != nil { in, out := &in.PriorityClassName, &out.PriorityClassName *out = new(string) @@ -631,6 +637,33 @@ func (in *OwnerCheckSpec) DeepCopy() *OwnerCheckSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SchedulingConstraints) DeepCopyInto(out *SchedulingConstraints) { + *out = *in + if in.Affinity != nil { + in, out := &in.Affinity, &out.Affinity + *out = new(v1.Affinity) + (*in).DeepCopyInto(*out) + } + if in.TopologySpreadConstraints != nil { + in, out := &in.TopologySpreadConstraints, &out.TopologySpreadConstraints + *out = make([]v1.TopologySpreadConstraint, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingConstraints. +func (in *SchedulingConstraints) DeepCopy() *SchedulingConstraints { + if in == nil { + return nil + } + out := new(SchedulingConstraints) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SecretReference) DeepCopyInto(out *SecretReference) { *out = *in @@ -710,9 +743,9 @@ func (in *StoreSpec) DeepCopy() *StoreSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TLSConfig) DeepCopyInto(out *TLSConfig) { *out = *in + in.TLSCASecretRef.DeepCopyInto(&out.TLSCASecretRef) out.ServerTLSSecretRef = in.ServerTLSSecretRef out.ClientTLSSecretRef = in.ClientTLSSecretRef - in.TLSCASecretRef.DeepCopyInto(&out.TLSCASecretRef) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSConfig. 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 7316b425..700d46db 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 @@ -18,6 +18,7 @@ import ( "context" "fmt" "os" + "time" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" "github.com/gardener/gardener/pkg/chartrenderer" @@ -30,6 +31,8 @@ import ( "k8s.io/apimachinery/pkg/version" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" + "k8s.io/client-go/util/flowcontrol" + "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" ) @@ -68,13 +71,36 @@ func NewShootClients(c client.Client, clientset kubernetes.Interface, gardenerCl } } +// RESTOptions define a subset of optional parameters for a rest.Client +type RESTOptions struct { + // QPS indicates the maximum QPS to the master from this client. + QPS *float32 + // Maximum burst for throttle. + Burst *int + // Rate limiter for limiting connections to the master from this client. If present overwrites QPS/Burst + RateLimiter flowcontrol.RateLimiter + // The maximum length of time to wait before giving up on a server request. A value of zero means no timeout. + Timeout *time.Duration +} + +// ApplyRESTOptions applies RESTOptions to the given rest.Config +func ApplyRESTOptions(restConfig *rest.Config, restOptions RESTOptions) *rest.Config { + restConfig.QPS = pointer.Float32Deref(restOptions.QPS, restConfig.QPS) + restConfig.Burst = pointer.IntDeref(restOptions.Burst, restConfig.Burst) + restConfig.Timeout = pointer.DurationDeref(restOptions.Timeout, restConfig.Timeout) + if restOptions.RateLimiter != nil { + restConfig.RateLimiter = restOptions.RateLimiter + } + return restConfig +} + // NewClientForShoot returns the rest config and the client for the given shoot namespace. It first looks to use the "internal" kubeconfig // (the one with in-cluster address) as in-cluster traffic is free of charge. If it cannot find that, then it fallbacks to the "external" kubeconfig // (the one with external DNS name or load balancer address) and this usually translates to egress traffic costs. // However, if the environment variable GARDENER_SHOOT_CLIENT=external, then it *only* checks for the external endpoint, // i.e. v1beta1constants.SecretNameGardener. This is useful when connecting from outside the seed cluster on which the shoot kube-apiserver // is running. -func NewClientForShoot(ctx context.Context, c client.Client, namespace string, opts client.Options) (*rest.Config, client.Client, error) { +func NewClientForShoot(ctx context.Context, c client.Client, namespace string, opts client.Options, restOptions RESTOptions) (*rest.Config, client.Client, error) { var ( gardenerSecret = &corev1.Secret{} err error @@ -95,6 +121,7 @@ func NewClientForShoot(ctx context.Context, c client.Client, namespace string, o if err != nil { return nil, nil, err } + ApplyRESTOptions(shootRESTConfig, restOptions) if opts.Mapper == nil { mapper, err := apiutil.NewDynamicRESTMapper(shootRESTConfig, apiutil.WithLazyDiscovery) @@ -113,11 +140,12 @@ func NewClientForShoot(ctx context.Context, c client.Client, namespace string, o // NewClientsForShoot is a utility function that creates a new clientset and a chart applier for the shoot cluster. // It uses the 'gardener' secret in the given shoot namespace. It also returns the Kubernetes version of the cluster. -func NewClientsForShoot(ctx context.Context, c client.Client, namespace string, opts client.Options) (ShootClients, error) { - shootRESTConfig, shootClient, err := NewClientForShoot(ctx, c, namespace, opts) +func NewClientsForShoot(ctx context.Context, c client.Client, namespace string, opts client.Options, restOptions RESTOptions) (ShootClients, error) { + shootRESTConfig, shootClient, err := NewClientForShoot(ctx, c, namespace, opts, restOptions) if err != nil { return nil, err } + ApplyRESTOptions(shootRESTConfig, restOptions) shootClientset, err := kubernetes.NewForConfig(shootRESTConfig) if err != nil { return nil, err diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler_shootclient.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler_shootclient.go index 94da6293..fe275164 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler_shootclient.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/handler_shootclient.go @@ -122,7 +122,7 @@ func (h *handlerShootClient) Handle(ctx context.Context, req admission.Request) return fmt.Errorf("could not find shoot namespace for webhook request") } - _, shootClient, err := util.NewClientForShoot(ctx, h.client, shootNamespace, client.Options{}) + _, shootClient, err := util.NewClientForShoot(ctx, h.client, shootNamespace, client.Options{}, util.RESTOptions{}) if err != nil { return fmt.Errorf("could not create shoot client: %w", err) } diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/registration.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/registration.go index 8bfe17e0..89124b8a 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/registration.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/registration.go @@ -19,16 +19,17 @@ import ( "fmt" "strings" + v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" "github.com/gardener/gardener/pkg/controllerutils" "github.com/gardener/gardener/pkg/utils/kubernetes" admissionregistrationv1 "k8s.io/api/admissionregistration/v1" + admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" - "sigs.k8s.io/controller-runtime/pkg/manager" ) const ( @@ -36,23 +37,32 @@ const ( NamePrefix = "gardener-extension-" // NameSuffixShoot is the suffix used for {Valida,Muta}tingWebhookConfigurations of extensions targeting a shoot. NameSuffixShoot = "-shoot" + // ModeService is a constant for the webhook mode indicating that the controller is running inside of the Kubernetes cluster it + // is serving. + ModeService = "service" + // ModeURL is a constant for the webhook mode indicating that the controller is running outside of the Kubernetes cluster it + // is serving. If this is set then a URL is required for configuration. + ModeURL = "url" + // ModeURLWithServiceName is a constant for the webhook mode indicating that the controller is running outside of the Kubernetes cluster it + // is serving but in the same cluster like the kube-apiserver. If this is set then a URL is required for configuration. + ModeURLWithServiceName = "url-service" ) -// RegisterWebhooks registers the given webhooks in the Kubernetes cluster targeted by the provided manager. -func RegisterWebhooks(ctx context.Context, mgr manager.Manager, namespace, providerName string, servicePort int, mode, url string, caBundle []byte, webhooks []*Webhook) (webhooksToRegisterSeed []admissionregistrationv1.MutatingWebhook, webhooksToRegisterShoot []admissionregistrationv1.MutatingWebhook, err error) { +// BuildWebhookConfigs builds MutatingWebhookConfiguration objects for seed and shoots from the given webhooks slice. +func BuildWebhookConfigs(webhooks []*Webhook, c client.Client, namespace, providerName string, servicePort int, mode, url string, caBundle []byte) (*admissionregistrationv1.MutatingWebhookConfiguration, *admissionregistrationv1.MutatingWebhookConfiguration, error) { var ( - exact = admissionregistrationv1.Exact - mutatingWebhookConfigurationSeed = &admissionregistrationv1.MutatingWebhookConfiguration{ObjectMeta: metav1.ObjectMeta{Name: NamePrefix + providerName}} + exact = admissionregistrationv1.Exact + sideEffects = admissionregistrationv1.SideEffectClassNone + + seedWebhooks []admissionregistrationv1.MutatingWebhook + shootWebhooks []admissionregistrationv1.MutatingWebhook ) for _, webhook := range webhooks { - var ( - rules []admissionregistrationv1.RuleWithOperations - sideEffects = admissionregistrationv1.SideEffectClassNone - ) + var rules []admissionregistrationv1.RuleWithOperations for _, t := range webhook.Types { - rule, err := buildRule(mgr, t) + rule, err := buildRule(c, t) if err != nil { return nil, nil, err } @@ -83,46 +93,169 @@ func RegisterWebhooks(ctx context.Context, mgr manager.Manager, namespace, provi webhookToRegister.FailurePolicy = getFailurePolicy(admissionregistrationv1.Fail, webhook.FailurePolicy) webhookToRegister.MatchPolicy = &exact webhookToRegister.ClientConfig = buildClientConfigFor(webhook, namespace, providerName, servicePort, mode, url, caBundle) - webhooksToRegisterSeed = append(webhooksToRegisterSeed, webhookToRegister) + seedWebhooks = append(seedWebhooks, webhookToRegister) case TargetShoot: webhookToRegister.FailurePolicy = getFailurePolicy(admissionregistrationv1.Ignore, webhook.FailurePolicy) webhookToRegister.MatchPolicy = &exact webhookToRegister.ClientConfig = buildClientConfigFor(webhook, namespace, providerName, servicePort, shootMode, url, caBundle) - webhooksToRegisterShoot = append(webhooksToRegisterShoot, webhookToRegister) + shootWebhooks = append(shootWebhooks, webhookToRegister) default: return nil, nil, fmt.Errorf("invalid webhook target: %s", webhook.Target) } + } + + var seedWebhookConfig, shootWebhookConfig *admissionregistrationv1.MutatingWebhookConfiguration + // if all webhooks for one target are removed in a new version, extensions need to explicitly delete the respective + // webhook config + if len(seedWebhooks) > 0 { + seedWebhookConfig = &admissionregistrationv1.MutatingWebhookConfiguration{ + ObjectMeta: metav1.ObjectMeta{ + Name: NamePrefix + providerName, + Labels: map[string]string{v1beta1constants.LabelExcludeWebhookFromRemediation: "true"}, + }, + Webhooks: seedWebhooks, + } } - if len(webhooksToRegisterSeed) > 0 { - c, err := getClient(mgr) - if err != nil { - return nil, nil, err + if len(shootWebhooks) > 0 { + shootWebhookConfig = &admissionregistrationv1.MutatingWebhookConfiguration{ + ObjectMeta: metav1.ObjectMeta{ + Name: NamePrefix + providerName + NameSuffixShoot, + Labels: map[string]string{v1beta1constants.LabelExcludeWebhookFromRemediation: "true"}, + }, + Webhooks: shootWebhooks, } + } - var ownerReference *metav1.OwnerReference - if len(namespace) > 0 { - ns := &corev1.Namespace{} - if err := c.Get(ctx, client.ObjectKey{Name: namespace}, ns); err != nil { - return nil, nil, err + return seedWebhookConfig, shootWebhookConfig, nil +} + +// ReconcileSeedWebhookConfig reconciles the given webhook config in the seed cluster. +// If a CA bundle is given, it is injected it into all desired webhooks. If not, the CA bundle from the webhook config +// on the cluster (if any) is kept. +func ReconcileSeedWebhookConfig(ctx context.Context, c client.Client, webhookConfig client.Object, ownerNamespace string, caBundle []byte) error { + var ownerReference *metav1.OwnerReference + if len(ownerNamespace) > 0 { + ns := &corev1.Namespace{} + if err := c.Get(ctx, client.ObjectKey{Name: ownerNamespace}, ns); err != nil { + return err + } + ownerReference = metav1.NewControllerRef(ns, corev1.SchemeGroupVersion.WithKind("Namespace")) + ownerReference.BlockOwnerDeletion = pointer.Bool(false) + } + + desiredWebhookConfig := webhookConfig.DeepCopyObject().(client.Object) + + if _, err := controllerutils.GetAndCreateOrStrategicMergePatch(ctx, c, webhookConfig, func() error { + if ownerReference != nil { + webhookConfig.SetOwnerReferences(kubernetes.MergeOwnerReferences(webhookConfig.GetOwnerReferences(), *ownerReference)) + } + + if len(caBundle) == 0 { + var err error + // we can safely assume, that the CA bundles in all webhooks are the same, as we manage it ourselves + caBundle, err = GetCABundleFromWebhookConfig(webhookConfig) + if err != nil { + return err } - ownerReference = metav1.NewControllerRef(ns, corev1.SchemeGroupVersion.WithKind("Namespace")) - ownerReference.BlockOwnerDeletion = pointer.Bool(false) } - if _, err := controllerutils.GetAndCreateOrStrategicMergePatch(ctx, c, mutatingWebhookConfigurationSeed, func() error { - if ownerReference != nil { - mutatingWebhookConfigurationSeed.SetOwnerReferences(kubernetes.MergeOwnerReferences(mutatingWebhookConfigurationSeed.GetOwnerReferences(), *ownerReference)) + if err := InjectCABundleIntoWebhookConfig(desiredWebhookConfig, caBundle); err != nil { + return err + } + return OverwriteWebhooks(webhookConfig, desiredWebhookConfig) + }); err != nil { + return fmt.Errorf("error reconciling seed webhook config: %w", err) + } + + return nil +} + +// OverwriteWebhooks sets current.Webhooks to desired.Webhooks for all kinds and version of webhook configs. +func OverwriteWebhooks(current, desired client.Object) error { + switch config := current.(type) { + case *admissionregistrationv1.MutatingWebhookConfiguration: + d := desired.(*admissionregistrationv1.MutatingWebhookConfiguration) + config.Webhooks = d.DeepCopy().Webhooks + case *admissionregistrationv1.ValidatingWebhookConfiguration: + d := desired.(*admissionregistrationv1.ValidatingWebhookConfiguration) + config.Webhooks = d.DeepCopy().Webhooks + case *admissionregistrationv1beta1.MutatingWebhookConfiguration: + d := desired.(*admissionregistrationv1beta1.MutatingWebhookConfiguration) + config.Webhooks = d.DeepCopy().Webhooks + case *admissionregistrationv1beta1.ValidatingWebhookConfiguration: + d := desired.(*admissionregistrationv1beta1.ValidatingWebhookConfiguration) + config.Webhooks = d.DeepCopy().Webhooks + default: + return fmt.Errorf("unexpected webhook config type: %T", current) + } + + return nil +} + +// GetCABundleFromWebhookConfig finds the first non-empty Webhooks[0].ClientConfig.CABundle from the given webhook config. +func GetCABundleFromWebhookConfig(obj client.Object) ([]byte, error) { + switch config := obj.(type) { + case *admissionregistrationv1.MutatingWebhookConfiguration: + for _, webhook := range config.Webhooks { + if caBundle := webhook.ClientConfig.CABundle; len(caBundle) > 0 { + return caBundle, nil + } + } + case *admissionregistrationv1.ValidatingWebhookConfiguration: + for _, webhook := range config.Webhooks { + if caBundle := webhook.ClientConfig.CABundle; len(caBundle) > 0 { + return caBundle, nil + } + } + case *admissionregistrationv1beta1.MutatingWebhookConfiguration: + for _, w := range config.Webhooks { + if caBundle := w.ClientConfig.CABundle; len(caBundle) > 0 { + return caBundle, nil } - mutatingWebhookConfigurationSeed.Webhooks = webhooksToRegisterSeed - return nil - }); err != nil { - return nil, nil, err } + case *admissionregistrationv1beta1.ValidatingWebhookConfiguration: + for _, webhook := range config.Webhooks { + if caBundle := webhook.ClientConfig.CABundle; len(caBundle) > 0 { + return caBundle, nil + } + } + default: + return nil, fmt.Errorf("unexpected webhook config type: %T", obj) } - return webhooksToRegisterSeed, webhooksToRegisterShoot, nil + return nil, nil +} + +// InjectCABundleIntoWebhookConfig sets the given CA bundle in all webhook client config in the given webhook config. +func InjectCABundleIntoWebhookConfig(obj client.Object, caBundle []byte) error { + switch config := obj.(type) { + case *admissionregistrationv1.MutatingWebhookConfiguration: + for i, w := range config.Webhooks { + w.ClientConfig.CABundle = caBundle + config.Webhooks[i] = w + } + case *admissionregistrationv1.ValidatingWebhookConfiguration: + for i, w := range config.Webhooks { + w.ClientConfig.CABundle = caBundle + config.Webhooks[i] = w + } + case *admissionregistrationv1beta1.MutatingWebhookConfiguration: + for i, w := range config.Webhooks { + w.ClientConfig.CABundle = caBundle + config.Webhooks[i] = w + } + case *admissionregistrationv1beta1.ValidatingWebhookConfiguration: + for i, w := range config.Webhooks { + w.ClientConfig.CABundle = caBundle + config.Webhooks[i] = w + } + default: + return fmt.Errorf("unexpected webhook config type: %T", obj) + } + + return nil } func getFailurePolicy(def admissionregistrationv1.FailurePolicyType, overwrite *admissionregistrationv1.FailurePolicyType) *admissionregistrationv1.FailurePolicyType { @@ -133,15 +266,15 @@ func getFailurePolicy(def admissionregistrationv1.FailurePolicyType, overwrite * } // buildRule creates and returns a RuleWithOperations for the given object type. -func buildRule(mgr manager.Manager, t Type) (*admissionregistrationv1.RuleWithOperations, error) { +func buildRule(c client.Client, t Type) (*admissionregistrationv1.RuleWithOperations, error) { // Get GVK from the type - gvk, err := apiutil.GVKForObject(t.Obj, mgr.GetScheme()) + gvk, err := apiutil.GVKForObject(t.Obj, c.Scheme()) if err != nil { return nil, fmt.Errorf("could not get GroupVersionKind from object %v: %w", t.Obj, err) } // Get REST mapping from GVK - mapping, err := mgr.GetRESTMapper().RESTMapping(gvk.GroupKind(), gvk.Version) + mapping, err := c.RESTMapper().RESTMapping(gvk.GroupKind(), gvk.Version) if err != nil { return nil, fmt.Errorf("could not get REST mapping from GroupVersionKind '%s': %w", gvk.String(), err) } @@ -166,19 +299,19 @@ func buildRule(mgr manager.Manager, t Type) (*admissionregistrationv1.RuleWithOp } func buildClientConfigFor(webhook *Webhook, namespace, providerName string, servicePort int, mode, url string, caBundle []byte) admissionregistrationv1.WebhookClientConfig { - path := "/" + webhook.Path - - clientConfig := admissionregistrationv1.WebhookClientConfig{ - CABundle: caBundle, - } + var ( + path = "/" + webhook.Path + clientConfig = admissionregistrationv1.WebhookClientConfig{ + // can be empty if injected later on + CABundle: caBundle, + } + ) switch mode { case ModeURL: - url := fmt.Sprintf("https://%s%s", url, path) - clientConfig.URL = &url + clientConfig.URL = pointer.String(fmt.Sprintf("https://%s%s", url, path)) case ModeURLWithServiceName: - url := fmt.Sprintf("https://gardener-extension-%s.%s:%d%s", providerName, namespace, servicePort, path) - clientConfig.URL = &url + clientConfig.URL = pointer.String(fmt.Sprintf("https://gardener-extension-%s.%s:%d%s", providerName, namespace, servicePort, path)) case ModeService: clientConfig.Service = &admissionregistrationv1.ServiceReference{ Namespace: namespace, diff --git a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/webhook.go b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/webhook.go index 06d2151c..7b4b9a40 100644 --- a/vendor/github.com/gardener/gardener/extensions/pkg/webhook/webhook.go +++ b/vendor/github.com/gardener/gardener/extensions/pkg/webhook/webhook.go @@ -31,17 +31,11 @@ const ( TargetSeed = "seed" // TargetShoot defines that the webhook is to be installed in the shoot. TargetShoot = "shoot" - - // ValidatorName is a common name for a validation webhook. - ValidatorName = "validator" - // ValidatorPath is a common path for a validation webhook. - ValidatorPath = "/webhooks/validate" ) // Webhook is the specification of a webhook. type Webhook struct { Name string - Kind string Provider string Path string Target string diff --git a/vendor/github.com/gardener/gardener/hack/check-apidiff.sh b/vendor/github.com/gardener/gardener/hack/check-apidiff.sh index 91f3f672..189a7a94 100755 --- a/vendor/github.com/gardener/gardener/hack/check-apidiff.sh +++ b/vendor/github.com/gardener/gardener/hack/check-apidiff.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # diff --git a/vendor/github.com/gardener/gardener/hack/check-charts.sh b/vendor/github.com/gardener/gardener/hack/check-charts.sh index 46e1c8cb..a4877bf6 100755 --- a/vendor/github.com/gardener/gardener/hack/check-charts.sh +++ b/vendor/github.com/gardener/gardener/hack/check-charts.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # diff --git a/vendor/github.com/gardener/gardener/hack/check-generate.sh b/vendor/github.com/gardener/gardener/hack/check-generate.sh index 1bb0da3c..82400ab4 100755 --- a/vendor/github.com/gardener/gardener/hack/check-generate.sh +++ b/vendor/github.com/gardener/gardener/hack/check-generate.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # diff --git a/vendor/github.com/gardener/gardener/hack/check.sh b/vendor/github.com/gardener/gardener/hack/check.sh index a59ec3ed..a72d8cfe 100755 --- a/vendor/github.com/gardener/gardener/hack/check.sh +++ b/vendor/github.com/gardener/gardener/hack/check.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # diff --git a/vendor/github.com/gardener/gardener/hack/ci-common.sh b/vendor/github.com/gardener/gardener/hack/ci-common.sh new file mode 100755 index 00000000..af87ef1d --- /dev/null +++ b/vendor/github.com/gardener/gardener/hack/ci-common.sh @@ -0,0 +1,29 @@ +#!/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 +# +# 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 + +dump_logs() { + cluster_name=${1} + kind export logs "${ARTIFACTS:-}" --name "${cluster_name}" || true +} + +clamp_mss_to_pmtu() { + # https://github.com/kubernetes/test-infra/issues/23741 + if [[ "$OSTYPE" != "darwin"* ]]; then + iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu + fi +} \ No newline at end of file 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 new file mode 100755 index 00000000..1cc7d920 --- /dev/null +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind-migration.sh @@ -0,0 +1,37 @@ +#!/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 +# +# 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-up +make kind2-up + +# dump all container logs after test execution +trap "dump_logs 'gardener-local'; dump_logs 'gardener-local2'" EXIT + +export KUBECONFIG=$PWD/gardener-local/kind/kubeconfig +make gardener-up +make gardenlet-kind2-up + +# run test +make test-e2e-local-migration diff --git a/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh new file mode 100755 index 00000000..6425d3d5 --- /dev/null +++ b/vendor/github.com/gardener/gardener/hack/ci-e2e-kind.sh @@ -0,0 +1,35 @@ +#!/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 +# +# 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-up + +# dump all container logs after test execution +trap "dump_logs 'gardener-local'" EXIT + +export KUBECONFIG=$PWD/example/provider-local/base/kubeconfig +make gardener-up + +# run test +make test-e2e-local diff --git a/vendor/github.com/gardener/gardener/hack/clean.sh b/vendor/github.com/gardener/gardener/hack/clean.sh index b2000bac..1bc22978 100755 --- a/vendor/github.com/gardener/gardener/hack/clean.sh +++ b/vendor/github.com/gardener/gardener/hack/clean.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # 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 e2a08a55..f6cd2870 100755 --- a/vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh +++ b/vendor/github.com/gardener/gardener/hack/compare-k8s-controllers.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!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 # 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 059fab26..6bd1c741 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,4 +1,4 @@ -#!/bin/bash +#!/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 # diff --git a/vendor/github.com/gardener/gardener/hack/format.sh b/vendor/github.com/gardener/gardener/hack/format.sh index de42f3df..7be90172 100755 --- a/vendor/github.com/gardener/gardener/hack/format.sh +++ b/vendor/github.com/gardener/gardener/hack/format.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # 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 b3b10231..408ae792 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # 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 1e90efc1..bf68fcf7 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-imagename-constants.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # diff --git a/vendor/github.com/gardener/gardener/hack/generate-parallel.sh b/vendor/github.com/gardener/gardener/hack/generate-parallel.sh index 8bd996df..ceffb695 100755 --- a/vendor/github.com/gardener/gardener/hack/generate-parallel.sh +++ b/vendor/github.com/gardener/gardener/hack/generate-parallel.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # diff --git a/vendor/github.com/gardener/gardener/hack/generate.sh b/vendor/github.com/gardener/gardener/hack/generate.sh index 4a9f4a7b..0db95507 100755 --- a/vendor/github.com/gardener/gardener/hack/generate.sh +++ b/vendor/github.com/gardener/gardener/hack/generate.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # 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 9b287750..f3349ae4 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,4 +1,4 @@ -#!/bin/bash -e +#!/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 # @@ -14,6 +14,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +set -e + PACKAGE_PATH="${1:-k8s.io/component-base}" VERSION_PATH="${2:-$(dirname $0)/../VERSION}" PROGRAM_NAME="${3:-Gardener}" diff --git a/vendor/github.com/gardener/gardener/hack/install-requirements.sh b/vendor/github.com/gardener/gardener/hack/install-requirements.sh index c9e954b7..bfa85a78 100755 --- a/vendor/github.com/gardener/gardener/hack/install-requirements.sh +++ b/vendor/github.com/gardener/gardener/hack/install-requirements.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # diff --git a/vendor/github.com/gardener/gardener/hack/install.sh b/vendor/github.com/gardener/gardener/hack/install.sh index f610c978..1ca8b501 100755 --- a/vendor/github.com/gardener/gardener/hack/install.sh +++ b/vendor/github.com/gardener/gardener/hack/install.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # 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 f8e72936..855e7535 100755 --- a/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh +++ b/vendor/github.com/gardener/gardener/hack/test-e2e-local.sh @@ -18,15 +18,25 @@ ginkgo_flags= # If running in prow, we want to generate a machine-readable output file under the location specified via $ARTIFACTS. # This will add a JUnit view above the build log that shows an overview over successful and failed test cases. -if [ -n "${CI:-}" -a -n "${ARTIFACTS:-}" ] ; then +if [ -n "${CI:-}" -a -n "${ARTIFACTS:-}" ]; then mkdir -p "$ARTIFACTS" ginkgo_flags="--output-dir=$ARTIFACTS --junit-report=junit.xml" - - printf "\n127.0.0.1 api.e2e-default.local.external.local.gardener.cloud\n127.0.0.1 api.e2e-default.local.internal.local.gardener.cloud\n" >> /etc/hosts + + # make shoot domains accessible to test + for shoot in e2e-default e2e-rotate ; do + printf "\n127.0.0.1 api.%s.local.external.local.gardener.cloud\n127.0.0.1 api.%s.local.internal.local.gardener.cloud\n" $shoot $shoot >>/etc/hosts + done + printf "\n127.0.0.1 gu-local--e2e-rotate.ingress.local.seed.local.gardener.cloud\n" >>/etc/hosts else - if ! grep -q "127.0.0.1 api.e2e-default.local.external.local.gardener.cloud" /etc/hosts ; then + if ! grep -q "127.0.0.1 api.e2e-default.local.external.local.gardener.cloud" /etc/hosts; then printf "To access the shoot cluster and running e2e tests, you have to extend your /etc/hosts file.\nPlease refer https://github.com/gardener/gardener/blob/master/docs/deployment/getting_started_locally.md#accessing-the-shoot-cluster" fi fi -GO111MODULE=on ginkgo --timeout=1h $ginkgo_flags --v --progress "$@" ./test/e2e/... +for ((i = 2; i <= "$#"; i++)); do + if [ "${!i}" = "--" ]; then + break + fi +done + +GO111MODULE=on ginkgo run --timeout=1h $ginkgo_flags "${@:1:$((i - 1))}" --v --progress ./test/e2e/... "${@:$i}" diff --git a/vendor/github.com/gardener/gardener/hack/test-integration.sh b/vendor/github.com/gardener/gardener/hack/test-integration.sh index 223cb50a..7fa20e2d 100755 --- a/vendor/github.com/gardener/gardener/hack/test-integration.sh +++ b/vendor/github.com/gardener/gardener/hack/test-integration.sh @@ -26,8 +26,15 @@ if ! command -v setup-envtest &> /dev/null ; then exit 1 fi +ARCH= +# if using M1 macbook, use amd64 architecture build, as suggested in +# https://github.com/kubernetes-sigs/controller-runtime/issues/1657#issuecomment-988484517 +if [[ $(uname) == 'Darwin' && $(uname -m) == 'arm64' ]]; then + ARCH='--arch=amd64' +fi + # --use-env allows overwriting the envtest tools path via the KUBEBUILDER_ASSETS env var just like it was before -export KUBEBUILDER_ASSETS="$(setup-envtest use --use-env -p path ${ENVTEST_K8S_VERSION})" +export KUBEBUILDER_ASSETS="$(setup-envtest ${ARCH} use --use-env -p path ${ENVTEST_K8S_VERSION})" echo "using envtest tools installed at '$KUBEBUILDER_ASSETS'" echo "> Integration Tests" diff --git a/vendor/github.com/gardener/gardener/hack/tools.mk b/vendor/github.com/gardener/gardener/hack/tools.mk index 53995b29..93ad6014 100755 --- a/vendor/github.com/gardener/gardener/hack/tools.mk +++ b/vendor/github.com/gardener/gardener/hack/tools.mk @@ -55,10 +55,10 @@ GO_APIDIFF := $(TOOLS_BIN_DIR)/go-apidiff DOCFORGE_VERSION ?= v0.28.0 GOLANGCI_LINT_VERSION ?= v1.45.2 HELM_VERSION ?= v3.6.3 -KIND_VERSION ?= v0.11.1 -SKAFFOLD_VERSION ?= v1.35.0 +KIND_VERSION ?= v0.14.0 +SKAFFOLD_VERSION ?= v1.38.0 YQ_VERSION ?= v4.9.6 -GO_APIDIFF_VERSION ?= v0.3.0 +GO_APIDIFF_VERSION ?= v0.4.0 export TOOLS_BIN_DIR := $(TOOLS_BIN_DIR) export PATH := $(abspath $(TOOLS_BIN_DIR)):$(PATH) diff --git a/vendor/github.com/gardener/gardener/hack/update-codegen.sh b/vendor/github.com/gardener/gardener/hack/update-codegen.sh index 4d003a44..7bacd5ae 100755 --- a/vendor/github.com/gardener/gardener/hack/update-codegen.sh +++ b/vendor/github.com/gardener/gardener/hack/update-codegen.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # diff --git a/vendor/github.com/gardener/gardener/hack/update-protobuf.sh b/vendor/github.com/gardener/gardener/hack/update-protobuf.sh index 2a6f47ef..aef430f4 100755 --- a/vendor/github.com/gardener/gardener/hack/update-protobuf.sh +++ b/vendor/github.com/gardener/gardener/hack/update-protobuf.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/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 # 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 8e6c87d9..ed310871 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 @@ -105,6 +105,8 @@ type MachineImageVersion struct { ExpirableVersion // CRI list of supported container runtime and interfaces supported by this version CRI []CRI + // Architectures is the list of CPU architectures of the machine image in this version. + Architectures []string } // ExpirableVersion contains a version and an expiration date. @@ -131,6 +133,8 @@ type MachineType struct { Storage *MachineTypeStorage // Usable defines if the machine type can be used for shoot clusters. Usable *bool + // Architecture is the CPU architecture of this machine type. + Architecture *string } // MachineTypeStorage is the amount of storage associated with the root volume of this machine type. 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 9876e0d2..25ec07dc 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 @@ -118,6 +118,8 @@ const ( ProjectMemberViewer = "viewer" // ProjectMemberUserAccessManager is a const for a role that provides permissions to manage human user(s, (groups)). ProjectMemberUserAccessManager = "uam" + // ProjectMemberServiceAccountManager is a const for a role that provides permissions to manage service accounts and request tokens for them. + ProjectMemberServiceAccountManager = "serviceaccountmanager" // ProjectMemberExtensionPrefix is a prefix for custom roles that are not known by Gardener. ProjectMemberExtensionPrefix = "extension:" ) 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 5e025081..cf0036b5 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 @@ -201,6 +201,7 @@ type SeedSettings struct { // Scheduling controls settings for scheduling decisions for the seed. Scheduling *SeedSettingScheduling // ShootDNS controls the shoot DNS settings for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Do not use it. ShootDNS *SeedSettingShootDNS // LoadBalancerServices controls certain settings for services of type load balancer that are created in the seed. LoadBalancerServices *SeedSettingLoadBalancerServices 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 ab8fb565..667d333b 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 @@ -122,6 +122,9 @@ type ShootStatus struct { Gardener Gardener // IsHibernated indicates whether the Shoot is currently hibernated. IsHibernated bool + // LastHibernationTriggerTime indicates the last time when the hibernation controller + // managed to change the hibernation settings of the cluster + LastHibernationTriggerTime *metav1.Time // LastOperation holds information about the last operation on the Shoot. LastOperation *LastOperation // LastErrors holds information about the last occurred error(s) during an operation. @@ -167,6 +170,10 @@ type ShootCredentialsRotation struct { SSHKeypair *ShootSSHKeypairRotation // Observability contains information about the observability credential rotation. Observability *ShootObservabilityRotation + // ServiceAccountKey contains information about the service account key credential rotation. + ServiceAccountKey *ShootServiceAccountKeyRotation + // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. + ETCDEncryptionKey *ShootETCDEncryptionKeyRotation } // ShootCARotation contains information about the certificate authority credential rotation. @@ -204,6 +211,28 @@ type ShootObservabilityRotation struct { LastCompletionTime *metav1.Time } +// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. +type ShootServiceAccountKeyRotation struct { + // Phase describes the phase of the service account key credential rotation. + Phase ShootCredentialsRotationPhase + // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. + LastInitiationTime *metav1.Time + // LastCompletionTime is the most recent time when the service account key credential rotation was successfully + // completed. + LastCompletionTime *metav1.Time +} + +// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +type ShootETCDEncryptionKeyRotation struct { + // Phase describes the phase of the ETCD encryption key credential rotation. + Phase ShootCredentialsRotationPhase + // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. + LastInitiationTime *metav1.Time + // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully + // completed. + LastCompletionTime *metav1.Time +} + // ShootCredentialsRotationPhase is a string alias. type ShootCredentialsRotationPhase string @@ -528,6 +557,7 @@ type ServiceAccountConfig struct { // SigningKeySecret is a reference to a secret that contains an optional private key of the // service account token issuer. The issuer will sign issued ID tokens with this private key. // Only useful if service account tokens are also issued by another external system. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Do not use it. SigningKeySecret *corev1.LocalObjectReference // ExtendTokenExpiration turns on projected service account expiration extension during token generation, which // helps safe transition from legacy token to bound service account token feature. If this flag is enabled, @@ -995,6 +1025,8 @@ type Machine struct { // Image holds information about the machine image to use for all nodes of this pool. It will default to the // latest version of the first image stated in the referenced CloudProfile if no value has been provided. Image *ShootMachineImage + // Architecture is the CPU architecture of the machines in this worker pool. + Architecture *string } // ShootMachineImage defines the name and the version of the shoot's machine image in any environment. Has to be @@ -1074,6 +1106,8 @@ var ( type SystemComponents struct { // CoreDNS contains the settings of the Core DNS components running in the data plane of the Shoot cluster. CoreDNS *CoreDNS + // NodeLocalDNS contains the settings of the node local DNS components running in the data plane of the Shoot cluster. + NodeLocalDNS *NodeLocalDNS } // CoreDNS contains the settings of the Core DNS components running in the data plane of the Shoot cluster. @@ -1099,6 +1133,18 @@ const ( CoreDNSAutoscalingModeClusterProportional CoreDNSAutoscalingMode = "cluster-proportional" ) +// NodeLocalDNS contains the settings of the node local DNS components running in the data plane of the Shoot cluster. +type NodeLocalDNS struct { + // Enabled indicates whether node local DNS is enabled or not. + Enabled bool + // ForceTCPToClusterDNS indicates whether the connection from the node local DNS to the cluster DNS (Core DNS) will be forced to TCP or not. + // Default, if unspecified, is to enforce TCP. + ForceTCPToClusterDNS *bool + // ForceTCPToUpstreamDNS indicates whether the connection from the node local DNS to the upstream DNS (infrastructure DNS) will be forced to TCP or not. + // Default, if unspecified, is to enforce TCP. + ForceTCPToUpstreamDNS *bool +} + ////////////////////////////////////////////////////////////////////////////////////////////////// // Other/miscellaneous constants and types // ////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/constants/types_constants.go b/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/constants/types_constants.go deleted file mode 100644 index ac39fe75..00000000 --- a/vendor/github.com/gardener/gardener/pkg/apis/core/v1alpha1/constants/types_constants.go +++ /dev/null @@ -1,268 +0,0 @@ -// 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 -// -// 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 constants - -const ( - // SecretNameCACluster is a constant for the name of a Kubernetes secret object that contains the CA - // certificate of a shoot cluster. - SecretNameCACluster = "ca" - // SecretNameCAETCD is a constant for the name of a Kubernetes secret object that contains the CA - // certificate of the etcd of a shoot cluster. - SecretNameCAETCD = "ca-etcd" - // SecretNameCAFrontProxy is a constant for the name of a Kubernetes secret object that contains the CA - // certificate of the kube-aggregator a shoot cluster. - SecretNameCAFrontProxy = "ca-front-proxy" - // SecretNameCAKubelet is a constant for the name of a Kubernetes secret object that contains the CA - // certificate of the kubelet of a shoot cluster. - SecretNameCAKubelet = "ca-kubelet" - // SecretNameCAMetricsServer is a constant for the name of a Kubernetes secret object that contains the CA - // certificate of the metrics-server of a shoot cluster. - SecretNameCAMetricsServer = "ca-metrics-server" - // SecretNameCloudProvider is a constant for the name of a Kubernetes secret object that contains the provider - // specific credentials that shall be used to create/delete the shoot. - SecretNameCloudProvider = "cloudprovider" - // SecretNameSSHKeyPair is a constant for the name of a Kubernetes secret object that contains the SSH key pair - // (public and private key) that can be used to SSH into the shoot nodes. - SecretNameSSHKeyPair = "ssh-keypair" - - // SecretNameGardener is a constant for the name of a Kubernetes secret object that contains the client - // certificate and a kubeconfig for a shoot cluster. It is used by Gardener and can be used by extension - // controllers in order to communicate with the shoot's API server. The client certificate has administrator - // privileges. - SecretNameGardener = "gardener" - - // DeploymentNameClusterAutoscaler is a constant for the name of a Kubernetes deployment object that contains - // the cluster-autoscaler pod. - DeploymentNameClusterAutoscaler = "cluster-autoscaler" - // DeploymentNameKubeAPIServer is a constant for the name of a Kubernetes deployment object that contains - // the kube-apiserver pod. - DeploymentNameKubeAPIServer = "kube-apiserver" - // DeploymentNameKubeControllerManager is a constant for the name of a Kubernetes deployment object that contains - // the kube-controller-manager pod. - DeploymentNameKubeControllerManager = "kube-controller-manager" - - // DeploymentNameKubeScheduler is a constant for the name of a Kubernetes deployment object that contains - // the kube-scheduler pod. - DeploymentNameKubeScheduler = "kube-scheduler" - // 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" - // DeploymentNameKubeStateMetricsShoot is a constant for the name of a Kubernetes deployment object that contains - // the kube-state-metrics pod. - DeploymentNameKubeStateMetricsShoot = "kube-state-metrics" - - // StatefulSetNameAlertManager is a constant for the name of a Kubernetes stateful set object that contains - // the alertmanager pod. - StatefulSetNameAlertManager = "alertmanager" - // ETCDRoleMain is a constant for the main etcd role. - ETCDRoleMain = "main" - // ETCDRoleEvents is a constant for the events etcd role. - ETCDRoleEvents = "events" - // ETCDMain is a constant for the name of etcd-main Etcd object. - ETCDMain = "etcd-" + ETCDRoleMain - // ETCDEvents is a constant for the name of etcd-events Etcd object. - ETCDEvents = "etcd-" + ETCDRoleEvents - - // StatefulSetNamePrometheus is a constant for the name of a Kubernetes stateful set object that contains - // the prometheus pod. - StatefulSetNamePrometheus = "prometheus" - - // GardenerPurpose is a constant for the key in a label describing the purpose of the respective object. - GardenerPurpose = "gardener.cloud/purpose" - - // GardenerOperation is a constant for an annotation on a resource that describes a desired operation. - GardenerOperation = "gardener.cloud/operation" - // GardenerOperationReconcile is a constant for the value of the operation annotation describing a reconcile - // operation. - GardenerOperationReconcile = "reconcile" - // GardenerOperationMigrate is a constant for the value of the operation annotation describing a migration - // operation. - GardenerOperationMigrate = "migrate" - // GardenerOperationRestore is a constant for the value of the operation annotation describing a restoration - // operation. - GardenerOperationRestore = "restore" - // GardenerOperationWaitForState is a constant for the value of the operation annotation describing a wait - // operation. - GardenerOperationWaitForState = "wait-for-state" - - // DeprecatedGardenRole is the key for an annotation on a Kubernetes object indicating what it is used for. - // - // Deprecated: Use `GardenRole` instead. - DeprecatedGardenRole = "garden.sapcloud.io/role" - // GardenRole is a constant for a label that describes a role. - GardenRole = "gardener.cloud/role" - // GardenRoleExtension is a constant for a label that describes the 'extensions' role. - GardenRoleExtension = "extension" - // GardenRoleSeed is the value of the GardenRole key indicating type 'seed'. - GardenRoleSeed = "seed" - // GardenRoleShoot is the value of the GardenRole key indicating type 'shoot'. - GardenRoleShoot = "shoot" - // GardenRoleLogging is the value of the GardenRole key indicating type 'logging'. - GardenRoleLogging = "logging" - // GardenRoleProject is the value of GardenRole key indicating type 'project'. - GardenRoleProject = "project" - // GardenRoleControlPlane is the value of the GardenRole key indicating type 'controlplane'. - GardenRoleControlPlane = "controlplane" - // GardenRoleSystemComponent is the value of the GardenRole key indicating type 'system-component'. - GardenRoleSystemComponent = "system-component" - // GardenRoleMonitoring is the value of the GardenRole key indicating type 'monitoring'. - GardenRoleMonitoring = "monitoring" - // GardenRoleOptionalAddon is the value of the GardenRole key indicating type 'optional-addon'. - GardenRoleOptionalAddon = "optional-addon" - // GardenRoleExposureClassHandler is the value of the GardenRole key indicating type 'exposureclass-handler'. - GardenRoleExposureClassHandler = "exposureclass-handler" - - // ShootUID is an annotation key for the shoot namespace in the seed cluster, - // which value will be the value of `shoot.status.uid` - ShootUID = "shoot.gardener.cloud/uid" - - // SeedResourceManagerClass is the resource-class managed by the Gardener-Resource-Manager - // instance in the garden namespace on the seeds. - SeedResourceManagerClass = "seed" - // LabelBackupProvider is used to identify the backup provider. - LabelBackupProvider = "backup.gardener.cloud/provider" - // LabelSeedProvider is used to identify the seed provider. - LabelSeedProvider = "seed.gardener.cloud/provider" - // LabelShootProvider is used to identify the shoot provider. - LabelShootProvider = "shoot.gardener.cloud/provider" - // LabelShootProviderPrefix is used to prefix label that indicates the provider type. - // The label key is in the form provider.shoot.gardener.cloud/. - LabelShootProviderPrefix = "provider.shoot.gardener.cloud/" - // LabelNetworkingProvider is used to identify the networking provider for the cni plugin. - LabelNetworkingProvider = "networking.shoot.gardener.cloud/provider" - // LabelExtensionPrefix is used to prefix extension specific labels. - LabelExtensionPrefix = "extensions.gardener.cloud/" - // LabelExtensionConfiguration is used to identify the provider's configuration which will be added to Gardener configuration - LabelExtensionConfiguration = LabelExtensionPrefix + "configuration" - // LabelLogging is a constant for a label for logging stack configurations - LabelLogging = "logging" - // LabelMonitoring is a constant for a label for monitoring stack configurations - LabelMonitoring = "monitoring" - - // LabelNetworkPolicyToBlockedCIDRs allows Egress from pods labeled with 'networking.gardener.cloud/to-blocked-cidrs=allowed'. - LabelNetworkPolicyToBlockedCIDRs = "networking.gardener.cloud/to-blocked-cidrs" - // LabelNetworkPolicyToDNS allows Egress from pods labeled with 'networking.gardener.cloud/to-dns=allowed' to DNS running in 'kube-system'. - // In practice, most of the Pods which require network Egress need this label. - LabelNetworkPolicyToDNS = "networking.gardener.cloud/to-dns" - // LabelNetworkPolicyToPrivateNetworks allows Egress from pods labeled with 'networking.gardener.cloud/to-private-networks=allowed' to the - // private networks (RFC1918), Carrier-grade NAT (RFC6598) except for cloudProvider's specific metadata service IP, seed networks, - // shoot networks. - LabelNetworkPolicyToPrivateNetworks = "networking.gardener.cloud/to-private-networks" - // LabelNetworkPolicyToPublicNetworks allows Egress from pods labeled with 'networking.gardener.cloud/to-public-networks=allowed' to all public - // network IPs, except for private networks (RFC1918), carrier-grade NAT (RFC6598), cloudProvider's specific metadata service IP. - // In practice, this blocks Egress traffic to all networks in the Seed cluster and only traffic to public IPv4 addresses. - LabelNetworkPolicyToPublicNetworks = "networking.gardener.cloud/to-public-networks" - // LabelNetworkPolicyToSeedAPIServer allows Egress from pods labeled with 'networking.gardener.cloud/to-seed-apiserver=allowed' to Seed's Kubernetes - // API Server. - LabelNetworkPolicyToSeedAPIServer = "networking.gardener.cloud/to-seed-apiserver" - // LabelNetworkPolicyToShootAPIServer allows Egress from pods labeled with 'networking.gardener.cloud/to-shoot-apiserver=allowed' to talk to Shoot's - // Kubernetes API Server. - LabelNetworkPolicyToShootAPIServer = "networking.gardener.cloud/to-shoot-apiserver" - // LabelNetworkPolicyToAll disables all Ingress and Egress traffic into/from this namespace when set to "disallowed". - LabelNetworkPolicyToAll = "networking.gardener.cloud/to-all" - // LabelNetworkPolicyFromPrometheus allows Ingress from Prometheus to pods labeled with 'networking.gardener.cloud/from-prometheus=allowed' and ports - // named 'metrics' in the PodSpecification. - LabelNetworkPolicyFromPrometheus = "networking.gardener.cloud/from-prometheus" - // LabelNetworkPolicyAllowed is a constant for allowing a network policy. - LabelNetworkPolicyAllowed = "allowed" - // LabelNetworkPolicyDisallowed is a constant for disallowing a network policy. - LabelNetworkPolicyDisallowed = "disallowed" - - // LabelApp is a constant for a label key. - LabelApp = "app" - // LabelRole is a constant for a label key. - LabelRole = "role" - // LabelKubernetes is a constant for a label for Kubernetes workload. - LabelKubernetes = "kubernetes" - // LabelAPIServer is a constant for a label for the kube-apiserver. - LabelAPIServer = "apiserver" - // LabelControllerManager is a constant for a label for the kube-controller-manager. - LabelControllerManager = "controller-manager" - // LabelScheduler is a constant for a label for the kube-scheduler. - LabelScheduler = "scheduler" - // LabelExtensionProjectRole is a constant for a label value for extension project roles - LabelExtensionProjectRole = "extension-project-role" - - // LabelAPIServerExposure is a constant for label key which gardener can add to various objects related - // to kube-apiserver exposure. - LabelAPIServerExposure = "core.gardener.cloud/apiserver-exposure" - // LabelAPIServerExposureGardenerManaged is a constant for label value which gardener sets on the label key - // "core.gardener.cloud/apiserver-exposure" to indicate that it's responsible for apiserver exposure (via SNI). - LabelAPIServerExposureGardenerManaged = "gardener-managed" - - // LabelWorkerPoolSystemComponents is a constant that indicates whether the worker pool should host system components - LabelWorkerPoolSystemComponents = "worker.gardener.cloud/system-components" - - // GardenNamespace is the namespace in which the configuration and secrets for - // the Gardener controller manager will be stored (e.g., secrets for the Seed clusters). - // It is also used by the gardener-apiserver. - GardenNamespace = "garden" - - // AnnotationShootUseAsSeed is a constant for an annotation on a Shoot resource indicating that the Shoot shall be registered as Seed in the - // Garden cluster once successfully created. - AnnotationShootUseAsSeed = "shoot.gardener.cloud/use-as-seed" - // AnnotationShootIgnoreAlerts is the key for an annotation of a Shoot cluster whose value indicates - // if alerts for this cluster should be ignored - AnnotationShootIgnoreAlerts = "shoot.gardener.cloud/ignore-alerts" - // AnnotationShootSkipCleanup is a key for an annotation on a Shoot resource that declares that the clean up steps should be skipped when the - // cluster is deleted. Concretely, this will skip everything except the deletion of (load balancer) services and persistent volume resources. - AnnotationShootSkipCleanup = "shoot.gardener.cloud/skip-cleanup" - // AnnotationReversedVPN moves the vpn-server to the seed. - AnnotationReversedVPN = "alpha.featuregates.shoot.gardener.cloud/reversed-vpn" - // AnnotationNodeLocalDNS enables a per node dns cache on the shoot cluster. - AnnotationNodeLocalDNS = "alpha.featuregates.shoot.gardener.cloud/node-local-dns" - // AnnotationNodeLocalDNSForceTcpToClusterDns enforces upgrade to tcp connections for communication between node local and cluster dns. - AnnotationNodeLocalDNSForceTcpToClusterDns = "alpha.featuregates.shoot.gardener.cloud/node-local-dns-force-tcp-to-cluster-dns" - // AnnotationNodeLocalDNSForceTcpToUpstreamDns enforces upgrade to tcp connections for communication between node local and upstream dns. - AnnotationNodeLocalDNSForceTcpToUpstreamDns = "alpha.featuregates.shoot.gardener.cloud/node-local-dns-force-tcp-to-upstream-dns" - - // OperatingSystemConfigUnitNameKubeletService is a constant for a unit in the operating system config that contains the kubelet service. - OperatingSystemConfigUnitNameKubeletService = "kubelet.service" - // OperatingSystemConfigUnitNameDockerService is a constant for a unit in the operating system config that contains the docker service. - OperatingSystemConfigUnitNameDockerService = "docker.service" - // OperatingSystemConfigFilePathKernelSettings is a constant for a path to a file in the operating system config that contains some general kernel settings. - OperatingSystemConfigFilePathKernelSettings = "/etc/sysctl.d/99-k8s-general.conf" - // OperatingSystemConfigFilePathKubeletConfig is a constant for a path to a file in the operating system config that contains the kubelet configuration. - OperatingSystemConfigFilePathKubeletConfig = "/var/lib/kubelet/config/kubelet" - - // FluentBitConfigMapKubernetesFilter is a constant for the Fluent Bit ConfigMap's section regarding Kubernetes filters - FluentBitConfigMapKubernetesFilter = "filter-kubernetes.conf" - // FluentBitConfigMapParser is a constant for the Fluent Bit ConfigMap's section regarding Parsers for common container types - FluentBitConfigMapParser = "parsers.conf" - // PrometheusConfigMapAlertingRules is a constant for the Prometheus alerting rules tag in provider-specific monitoring configuration - PrometheusConfigMapAlertingRules = "alerting_rules" - // PrometheusConfigMapScrapeConfig is a constant for the Prometheus scrape config tag in provider-specific monitoring configuration - PrometheusConfigMapScrapeConfig = "scrape_config" - // GrafanaConfigMapUserDashboard is a constant for the Grafana user dashboard tag in provider-specific monitoring configuration - GrafanaConfigMapUserDashboard = "dashboard_users" - // GrafanaConfigMapOperatorDashboard is a constant for the Grafana operator dashboard tag in provider-specific monitoring configuration - GrafanaConfigMapOperatorDashboard = "dashboard_operators" - - // LabelControllerRegistrationName is the key of a label on extension namespaces that indicates the controller registration name. - LabelControllerRegistrationName = "controllerregistration.core.gardener.cloud/name" - - // LabelExposureClassHandlerName is the label key for exposure class handler names. - LabelExposureClassHandlerName = "handler.exposureclass.gardener.cloud/name" - - // EventResourceReferenced indicates that the resource deletion is in waiting mode because the resource is still - // being referenced by at least one other resource (e.g. a SecretBinding is still referenced by a Shoot) - EventResourceReferenced = "ResourceReferenced" -) 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 9bbbd2e7..7adf02a8 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 @@ -270,6 +270,10 @@ func SetDefaults_Shoot(obj *Shoot) { kubernetesVersion = *worker.Kubernetes.Version } + if worker.Machine.Architecture == nil { + obj.Spec.Provider.Workers[i].Machine.Architecture = pointer.String(v1beta1constants.ArchitectureAMD64) + } + if k8sVersionGreaterOrEqualThan122, _ := versionutils.CompareVersions(kubernetesVersion, ">=", "1.22"); !k8sVersionGreaterOrEqualThan122 { // Error is ignored here because we cannot do anything meaningful with it. // k8sVersionLessThan116 and k8sVersionGreaterOrEqualThan122 will default to `false`. 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 908f050c..631f4ee8 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 @@ -2491,10 +2491,38 @@ func (m *NginxIngress) XXX_DiscardUnknown() { var xxx_messageInfo_NginxIngress proto.InternalMessageInfo +func (m *NodeLocalDNS) Reset() { *m = NodeLocalDNS{} } +func (*NodeLocalDNS) ProtoMessage() {} +func (*NodeLocalDNS) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{87} +} +func (m *NodeLocalDNS) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *NodeLocalDNS) 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 *NodeLocalDNS) XXX_Merge(src proto.Message) { + xxx_messageInfo_NodeLocalDNS.Merge(m, src) +} +func (m *NodeLocalDNS) XXX_Size() int { + return m.Size() +} +func (m *NodeLocalDNS) XXX_DiscardUnknown() { + xxx_messageInfo_NodeLocalDNS.DiscardUnknown(m) +} + +var xxx_messageInfo_NodeLocalDNS proto.InternalMessageInfo + func (m *OIDCConfig) Reset() { *m = OIDCConfig{} } func (*OIDCConfig) ProtoMessage() {} func (*OIDCConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{87} + return fileDescriptor_f1caaec5647a9dbf, []int{88} } func (m *OIDCConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2522,7 +2550,7 @@ var xxx_messageInfo_OIDCConfig proto.InternalMessageInfo func (m *OpenIDConnectClientAuthentication) Reset() { *m = OpenIDConnectClientAuthentication{} } func (*OpenIDConnectClientAuthentication) ProtoMessage() {} func (*OpenIDConnectClientAuthentication) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{88} + return fileDescriptor_f1caaec5647a9dbf, []int{89} } func (m *OpenIDConnectClientAuthentication) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2550,7 +2578,7 @@ var xxx_messageInfo_OpenIDConnectClientAuthentication proto.InternalMessageInfo func (m *Plant) Reset() { *m = Plant{} } func (*Plant) ProtoMessage() {} func (*Plant) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{89} + return fileDescriptor_f1caaec5647a9dbf, []int{90} } func (m *Plant) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2578,7 +2606,7 @@ var xxx_messageInfo_Plant proto.InternalMessageInfo func (m *PlantList) Reset() { *m = PlantList{} } func (*PlantList) ProtoMessage() {} func (*PlantList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{90} + return fileDescriptor_f1caaec5647a9dbf, []int{91} } func (m *PlantList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2606,7 +2634,7 @@ var xxx_messageInfo_PlantList proto.InternalMessageInfo func (m *PlantSpec) Reset() { *m = PlantSpec{} } func (*PlantSpec) ProtoMessage() {} func (*PlantSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{91} + return fileDescriptor_f1caaec5647a9dbf, []int{92} } func (m *PlantSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2634,7 +2662,7 @@ var xxx_messageInfo_PlantSpec proto.InternalMessageInfo func (m *PlantStatus) Reset() { *m = PlantStatus{} } func (*PlantStatus) ProtoMessage() {} func (*PlantStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{92} + return fileDescriptor_f1caaec5647a9dbf, []int{93} } func (m *PlantStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2662,7 +2690,7 @@ var xxx_messageInfo_PlantStatus proto.InternalMessageInfo func (m *Project) Reset() { *m = Project{} } func (*Project) ProtoMessage() {} func (*Project) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{93} + return fileDescriptor_f1caaec5647a9dbf, []int{94} } func (m *Project) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2690,7 +2718,7 @@ var xxx_messageInfo_Project proto.InternalMessageInfo func (m *ProjectList) Reset() { *m = ProjectList{} } func (*ProjectList) ProtoMessage() {} func (*ProjectList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{94} + return fileDescriptor_f1caaec5647a9dbf, []int{95} } func (m *ProjectList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2718,7 +2746,7 @@ var xxx_messageInfo_ProjectList proto.InternalMessageInfo func (m *ProjectMember) Reset() { *m = ProjectMember{} } func (*ProjectMember) ProtoMessage() {} func (*ProjectMember) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{95} + return fileDescriptor_f1caaec5647a9dbf, []int{96} } func (m *ProjectMember) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2746,7 +2774,7 @@ var xxx_messageInfo_ProjectMember proto.InternalMessageInfo func (m *ProjectSpec) Reset() { *m = ProjectSpec{} } func (*ProjectSpec) ProtoMessage() {} func (*ProjectSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{96} + return fileDescriptor_f1caaec5647a9dbf, []int{97} } func (m *ProjectSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2774,7 +2802,7 @@ var xxx_messageInfo_ProjectSpec proto.InternalMessageInfo func (m *ProjectStatus) Reset() { *m = ProjectStatus{} } func (*ProjectStatus) ProtoMessage() {} func (*ProjectStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{97} + return fileDescriptor_f1caaec5647a9dbf, []int{98} } func (m *ProjectStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2802,7 +2830,7 @@ var xxx_messageInfo_ProjectStatus proto.InternalMessageInfo func (m *ProjectTolerations) Reset() { *m = ProjectTolerations{} } func (*ProjectTolerations) ProtoMessage() {} func (*ProjectTolerations) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{98} + return fileDescriptor_f1caaec5647a9dbf, []int{99} } func (m *ProjectTolerations) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2830,7 +2858,7 @@ var xxx_messageInfo_ProjectTolerations proto.InternalMessageInfo func (m *Provider) Reset() { *m = Provider{} } func (*Provider) ProtoMessage() {} func (*Provider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{99} + return fileDescriptor_f1caaec5647a9dbf, []int{100} } func (m *Provider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2858,7 +2886,7 @@ var xxx_messageInfo_Provider proto.InternalMessageInfo func (m *Quota) Reset() { *m = Quota{} } func (*Quota) ProtoMessage() {} func (*Quota) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{100} + return fileDescriptor_f1caaec5647a9dbf, []int{101} } func (m *Quota) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2886,7 +2914,7 @@ var xxx_messageInfo_Quota proto.InternalMessageInfo func (m *QuotaList) Reset() { *m = QuotaList{} } func (*QuotaList) ProtoMessage() {} func (*QuotaList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{101} + return fileDescriptor_f1caaec5647a9dbf, []int{102} } func (m *QuotaList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2914,7 +2942,7 @@ var xxx_messageInfo_QuotaList proto.InternalMessageInfo func (m *QuotaSpec) Reset() { *m = QuotaSpec{} } func (*QuotaSpec) ProtoMessage() {} func (*QuotaSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{102} + return fileDescriptor_f1caaec5647a9dbf, []int{103} } func (m *QuotaSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2942,7 +2970,7 @@ var xxx_messageInfo_QuotaSpec proto.InternalMessageInfo func (m *Region) Reset() { *m = Region{} } func (*Region) ProtoMessage() {} func (*Region) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{103} + return fileDescriptor_f1caaec5647a9dbf, []int{104} } func (m *Region) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2970,7 +2998,7 @@ var xxx_messageInfo_Region proto.InternalMessageInfo func (m *ResourceData) Reset() { *m = ResourceData{} } func (*ResourceData) ProtoMessage() {} func (*ResourceData) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{104} + return fileDescriptor_f1caaec5647a9dbf, []int{105} } func (m *ResourceData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2998,7 +3026,7 @@ var xxx_messageInfo_ResourceData proto.InternalMessageInfo func (m *ResourceWatchCacheSize) Reset() { *m = ResourceWatchCacheSize{} } func (*ResourceWatchCacheSize) ProtoMessage() {} func (*ResourceWatchCacheSize) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{105} + return fileDescriptor_f1caaec5647a9dbf, []int{106} } func (m *ResourceWatchCacheSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3026,7 +3054,7 @@ var xxx_messageInfo_ResourceWatchCacheSize proto.InternalMessageInfo func (m *SecretBinding) Reset() { *m = SecretBinding{} } func (*SecretBinding) ProtoMessage() {} func (*SecretBinding) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{106} + return fileDescriptor_f1caaec5647a9dbf, []int{107} } func (m *SecretBinding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3054,7 +3082,7 @@ var xxx_messageInfo_SecretBinding proto.InternalMessageInfo func (m *SecretBindingList) Reset() { *m = SecretBindingList{} } func (*SecretBindingList) ProtoMessage() {} func (*SecretBindingList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{107} + return fileDescriptor_f1caaec5647a9dbf, []int{108} } func (m *SecretBindingList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3082,7 +3110,7 @@ var xxx_messageInfo_SecretBindingList proto.InternalMessageInfo func (m *SecretBindingProvider) Reset() { *m = SecretBindingProvider{} } func (*SecretBindingProvider) ProtoMessage() {} func (*SecretBindingProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{108} + return fileDescriptor_f1caaec5647a9dbf, []int{109} } func (m *SecretBindingProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3110,7 +3138,7 @@ var xxx_messageInfo_SecretBindingProvider proto.InternalMessageInfo func (m *Seed) Reset() { *m = Seed{} } func (*Seed) ProtoMessage() {} func (*Seed) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{109} + return fileDescriptor_f1caaec5647a9dbf, []int{110} } func (m *Seed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3138,7 +3166,7 @@ var xxx_messageInfo_Seed proto.InternalMessageInfo func (m *SeedBackup) Reset() { *m = SeedBackup{} } func (*SeedBackup) ProtoMessage() {} func (*SeedBackup) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{110} + return fileDescriptor_f1caaec5647a9dbf, []int{111} } func (m *SeedBackup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3166,7 +3194,7 @@ var xxx_messageInfo_SeedBackup proto.InternalMessageInfo func (m *SeedDNS) Reset() { *m = SeedDNS{} } func (*SeedDNS) ProtoMessage() {} func (*SeedDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{111} + return fileDescriptor_f1caaec5647a9dbf, []int{112} } func (m *SeedDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3194,7 +3222,7 @@ var xxx_messageInfo_SeedDNS proto.InternalMessageInfo func (m *SeedDNSProvider) Reset() { *m = SeedDNSProvider{} } func (*SeedDNSProvider) ProtoMessage() {} func (*SeedDNSProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{112} + return fileDescriptor_f1caaec5647a9dbf, []int{113} } func (m *SeedDNSProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3222,7 +3250,7 @@ var xxx_messageInfo_SeedDNSProvider proto.InternalMessageInfo func (m *SeedList) Reset() { *m = SeedList{} } func (*SeedList) ProtoMessage() {} func (*SeedList) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{113} + return fileDescriptor_f1caaec5647a9dbf, []int{114} } func (m *SeedList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3250,7 +3278,7 @@ var xxx_messageInfo_SeedList proto.InternalMessageInfo func (m *SeedNetworks) Reset() { *m = SeedNetworks{} } func (*SeedNetworks) ProtoMessage() {} func (*SeedNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{114} + return fileDescriptor_f1caaec5647a9dbf, []int{115} } func (m *SeedNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3278,7 +3306,7 @@ var xxx_messageInfo_SeedNetworks proto.InternalMessageInfo func (m *SeedProvider) Reset() { *m = SeedProvider{} } func (*SeedProvider) ProtoMessage() {} func (*SeedProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{115} + return fileDescriptor_f1caaec5647a9dbf, []int{116} } func (m *SeedProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3306,7 +3334,7 @@ var xxx_messageInfo_SeedProvider proto.InternalMessageInfo func (m *SeedSelector) Reset() { *m = SeedSelector{} } func (*SeedSelector) ProtoMessage() {} func (*SeedSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{116} + return fileDescriptor_f1caaec5647a9dbf, []int{117} } func (m *SeedSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3334,7 +3362,7 @@ var xxx_messageInfo_SeedSelector proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdog) Reset() { *m = SeedSettingDependencyWatchdog{} } func (*SeedSettingDependencyWatchdog) ProtoMessage() {} func (*SeedSettingDependencyWatchdog) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{117} + return fileDescriptor_f1caaec5647a9dbf, []int{118} } func (m *SeedSettingDependencyWatchdog) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3362,7 +3390,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdog proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdogEndpoint) Reset() { *m = SeedSettingDependencyWatchdogEndpoint{} } func (*SeedSettingDependencyWatchdogEndpoint) ProtoMessage() {} func (*SeedSettingDependencyWatchdogEndpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{118} + return fileDescriptor_f1caaec5647a9dbf, []int{119} } func (m *SeedSettingDependencyWatchdogEndpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3390,7 +3418,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogEndpoint proto.InternalMessageI func (m *SeedSettingDependencyWatchdogProbe) Reset() { *m = SeedSettingDependencyWatchdogProbe{} } func (*SeedSettingDependencyWatchdogProbe) ProtoMessage() {} func (*SeedSettingDependencyWatchdogProbe) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{119} + return fileDescriptor_f1caaec5647a9dbf, []int{120} } func (m *SeedSettingDependencyWatchdogProbe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3418,7 +3446,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogProbe proto.InternalMessageInfo func (m *SeedSettingExcessCapacityReservation) Reset() { *m = SeedSettingExcessCapacityReservation{} } func (*SeedSettingExcessCapacityReservation) ProtoMessage() {} func (*SeedSettingExcessCapacityReservation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{120} + return fileDescriptor_f1caaec5647a9dbf, []int{121} } func (m *SeedSettingExcessCapacityReservation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3446,7 +3474,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{121} + return fileDescriptor_f1caaec5647a9dbf, []int{122} } func (m *SeedSettingLoadBalancerServices) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3474,7 +3502,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServices proto.InternalMessageInfo func (m *SeedSettingOwnerChecks) Reset() { *m = SeedSettingOwnerChecks{} } func (*SeedSettingOwnerChecks) ProtoMessage() {} func (*SeedSettingOwnerChecks) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{122} + return fileDescriptor_f1caaec5647a9dbf, []int{123} } func (m *SeedSettingOwnerChecks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3502,7 +3530,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{123} + return fileDescriptor_f1caaec5647a9dbf, []int{124} } func (m *SeedSettingScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3530,7 +3558,7 @@ var xxx_messageInfo_SeedSettingScheduling proto.InternalMessageInfo func (m *SeedSettingShootDNS) Reset() { *m = SeedSettingShootDNS{} } func (*SeedSettingShootDNS) ProtoMessage() {} func (*SeedSettingShootDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{124} + return fileDescriptor_f1caaec5647a9dbf, []int{125} } func (m *SeedSettingShootDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3558,7 +3586,7 @@ var xxx_messageInfo_SeedSettingShootDNS proto.InternalMessageInfo func (m *SeedSettingVerticalPodAutoscaler) Reset() { *m = SeedSettingVerticalPodAutoscaler{} } func (*SeedSettingVerticalPodAutoscaler) ProtoMessage() {} func (*SeedSettingVerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{125} + return fileDescriptor_f1caaec5647a9dbf, []int{126} } func (m *SeedSettingVerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3586,7 +3614,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{126} + return fileDescriptor_f1caaec5647a9dbf, []int{127} } func (m *SeedSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3614,7 +3642,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{127} + return fileDescriptor_f1caaec5647a9dbf, []int{128} } func (m *SeedSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3642,7 +3670,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{128} + return fileDescriptor_f1caaec5647a9dbf, []int{129} } func (m *SeedStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3670,7 +3698,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{129} + return fileDescriptor_f1caaec5647a9dbf, []int{130} } func (m *SeedTaint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3698,7 +3726,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{130} + return fileDescriptor_f1caaec5647a9dbf, []int{131} } func (m *SeedVolume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3726,7 +3754,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{131} + return fileDescriptor_f1caaec5647a9dbf, []int{132} } func (m *SeedVolumeProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3754,7 +3782,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{132} + return fileDescriptor_f1caaec5647a9dbf, []int{133} } func (m *ServiceAccountConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3782,7 +3810,7 @@ var xxx_messageInfo_ServiceAccountConfig proto.InternalMessageInfo func (m *Shoot) Reset() { *m = Shoot{} } func (*Shoot) ProtoMessage() {} func (*Shoot) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{133} + return fileDescriptor_f1caaec5647a9dbf, []int{134} } func (m *Shoot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3810,7 +3838,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{134} + return fileDescriptor_f1caaec5647a9dbf, []int{135} } func (m *ShootAdvertisedAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3838,7 +3866,7 @@ var xxx_messageInfo_ShootAdvertisedAddress proto.InternalMessageInfo func (m *ShootCARotation) Reset() { *m = ShootCARotation{} } func (*ShootCARotation) ProtoMessage() {} func (*ShootCARotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{135} + return fileDescriptor_f1caaec5647a9dbf, []int{136} } func (m *ShootCARotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3866,7 +3894,7 @@ var xxx_messageInfo_ShootCARotation proto.InternalMessageInfo func (m *ShootCredentials) Reset() { *m = ShootCredentials{} } func (*ShootCredentials) ProtoMessage() {} func (*ShootCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{136} + return fileDescriptor_f1caaec5647a9dbf, []int{137} } func (m *ShootCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3894,7 +3922,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{137} + return fileDescriptor_f1caaec5647a9dbf, []int{138} } func (m *ShootCredentialsRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3919,10 +3947,38 @@ func (m *ShootCredentialsRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootCredentialsRotation proto.InternalMessageInfo +func (m *ShootETCDEncryptionKeyRotation) Reset() { *m = ShootETCDEncryptionKeyRotation{} } +func (*ShootETCDEncryptionKeyRotation) ProtoMessage() {} +func (*ShootETCDEncryptionKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{139} +} +func (m *ShootETCDEncryptionKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ShootETCDEncryptionKeyRotation) 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 *ShootETCDEncryptionKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ShootETCDEncryptionKeyRotation.Merge(m, src) +} +func (m *ShootETCDEncryptionKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ShootETCDEncryptionKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ShootETCDEncryptionKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ShootETCDEncryptionKeyRotation proto.InternalMessageInfo + func (m *ShootKubeconfigRotation) Reset() { *m = ShootKubeconfigRotation{} } func (*ShootKubeconfigRotation) ProtoMessage() {} func (*ShootKubeconfigRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{138} + return fileDescriptor_f1caaec5647a9dbf, []int{140} } func (m *ShootKubeconfigRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3950,7 +4006,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{139} + return fileDescriptor_f1caaec5647a9dbf, []int{141} } func (m *ShootList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3978,7 +4034,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{140} + return fileDescriptor_f1caaec5647a9dbf, []int{142} } func (m *ShootMachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4006,7 +4062,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{141} + return fileDescriptor_f1caaec5647a9dbf, []int{143} } func (m *ShootNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4034,7 +4090,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{142} + return fileDescriptor_f1caaec5647a9dbf, []int{144} } func (m *ShootObservabilityRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4062,7 +4118,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{143} + return fileDescriptor_f1caaec5647a9dbf, []int{145} } func (m *ShootSSHKeypairRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4087,10 +4143,38 @@ func (m *ShootSSHKeypairRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootSSHKeypairRotation proto.InternalMessageInfo +func (m *ShootServiceAccountKeyRotation) Reset() { *m = ShootServiceAccountKeyRotation{} } +func (*ShootServiceAccountKeyRotation) ProtoMessage() {} +func (*ShootServiceAccountKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_f1caaec5647a9dbf, []int{146} +} +func (m *ShootServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ShootServiceAccountKeyRotation) 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 *ShootServiceAccountKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ShootServiceAccountKeyRotation.Merge(m, src) +} +func (m *ShootServiceAccountKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ShootServiceAccountKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ShootServiceAccountKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ShootServiceAccountKeyRotation proto.InternalMessageInfo + func (m *ShootSpec) Reset() { *m = ShootSpec{} } func (*ShootSpec) ProtoMessage() {} func (*ShootSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_f1caaec5647a9dbf, []int{144} + return fileDescriptor_f1caaec5647a9dbf, []int{147} } func (m *ShootSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4118,7 +4202,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{145} + return fileDescriptor_f1caaec5647a9dbf, []int{148} } func (m *ShootState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4146,7 +4230,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{146} + return fileDescriptor_f1caaec5647a9dbf, []int{149} } func (m *ShootStateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4174,7 +4258,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{147} + return fileDescriptor_f1caaec5647a9dbf, []int{150} } func (m *ShootStateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4202,7 +4286,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{148} + return fileDescriptor_f1caaec5647a9dbf, []int{151} } func (m *ShootStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4230,7 +4314,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{149} + return fileDescriptor_f1caaec5647a9dbf, []int{152} } func (m *SystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4258,7 +4342,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{150} + return fileDescriptor_f1caaec5647a9dbf, []int{153} } func (m *Toleration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4286,7 +4370,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{151} + return fileDescriptor_f1caaec5647a9dbf, []int{154} } func (m *VerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4314,7 +4398,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{152} + return fileDescriptor_f1caaec5647a9dbf, []int{155} } func (m *Volume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4342,7 +4426,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{153} + return fileDescriptor_f1caaec5647a9dbf, []int{156} } func (m *VolumeType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4370,7 +4454,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{154} + return fileDescriptor_f1caaec5647a9dbf, []int{157} } func (m *WatchCacheSizes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4398,7 +4482,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{155} + return fileDescriptor_f1caaec5647a9dbf, []int{158} } func (m *Worker) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4426,7 +4510,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{156} + return fileDescriptor_f1caaec5647a9dbf, []int{159} } func (m *WorkerKubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4454,7 +4538,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{157} + return fileDescriptor_f1caaec5647a9dbf, []int{160} } func (m *WorkerSystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4571,6 +4655,7 @@ func init() { proto.RegisterType((*Networking)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.Networking") proto.RegisterType((*NginxIngress)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.NginxIngress") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.NginxIngress.ConfigEntry") + proto.RegisterType((*NodeLocalDNS)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.NodeLocalDNS") proto.RegisterType((*OIDCConfig)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.OIDCConfig") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.OIDCConfig.RequiredClaimsEntry") proto.RegisterType((*OpenIDConnectClientAuthentication)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.OpenIDConnectClientAuthentication") @@ -4627,12 +4712,14 @@ func init() { proto.RegisterType((*ShootCARotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootCARotation") proto.RegisterType((*ShootCredentials)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootCredentials") proto.RegisterType((*ShootCredentialsRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootCredentialsRotation") + proto.RegisterType((*ShootETCDEncryptionKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootETCDEncryptionKeyRotation") proto.RegisterType((*ShootKubeconfigRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootKubeconfigRotation") proto.RegisterType((*ShootList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootList") proto.RegisterType((*ShootMachineImage)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootMachineImage") proto.RegisterType((*ShootNetworks)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootNetworks") proto.RegisterType((*ShootObservabilityRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootObservabilityRotation") proto.RegisterType((*ShootSSHKeypairRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootSSHKeypairRotation") + proto.RegisterType((*ShootServiceAccountKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootServiceAccountKeyRotation") proto.RegisterType((*ShootSpec)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootSpec") proto.RegisterType((*ShootState)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootState") proto.RegisterType((*ShootStateList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1alpha1.ShootStateList") @@ -4656,655 +4743,673 @@ func init() { } var fileDescriptor_f1caaec5647a9dbf = []byte{ - // 10359 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x5b, 0x6c, 0x25, 0xc9, - 0x75, 0x98, 0xfa, 0xf2, 0x75, 0x79, 0x2e, 0x9f, 0x35, 0x8f, 0xe5, 0xce, 0xce, 0x2c, 0x57, 0x2d, - 0xad, 0x32, 0x1b, 0xc9, 0x1c, 0xaf, 0x1e, 0x96, 0x76, 0xb5, 0xbb, 0x5a, 0xde, 0x7b, 0x39, 0x33, - 0x57, 0x33, 0x9c, 0xa1, 0xea, 0x0e, 0x77, 0xf5, 0x30, 0x24, 0x35, 0xbb, 0x8b, 0x97, 0x2d, 0xf6, - 0xed, 0xbe, 0xdb, 0xdd, 0x97, 0x43, 0xce, 0x2a, 0x96, 0x2c, 0xeb, 0x61, 0x4b, 0x48, 0x90, 0xc0, - 0x09, 0x64, 0x48, 0x82, 0x24, 0x0b, 0x46, 0xa0, 0x00, 0x31, 0x64, 0x08, 0x88, 0x02, 0x27, 0x8e, - 0x03, 0xd8, 0x1f, 0x16, 0xe4, 0x40, 0x31, 0x02, 0xc7, 0x50, 0x0c, 0x87, 0x8a, 0x98, 0x87, 0x9d, - 0xd7, 0x47, 0x10, 0xe4, 0x67, 0xe0, 0x04, 0x41, 0x3d, 0xba, 0xba, 0xfa, 0xc5, 0x47, 0xf7, 0x0c, - 0xb5, 0x6b, 0x7f, 0x91, 0xb7, 0x4e, 0xd5, 0x39, 0x55, 0xd5, 0xa7, 0x4e, 0x9d, 0x73, 0xea, 0xd4, - 0x29, 0x68, 0xf5, 0xec, 0x70, 0x6b, 0xb8, 0xb1, 0x64, 0x7a, 0xfd, 0x2b, 0x3d, 0xc3, 0xb7, 0x88, - 0x4b, 0xfc, 0xf8, 0x9f, 0xc1, 0x76, 0xef, 0x8a, 0x31, 0xb0, 0x83, 0x2b, 0xa6, 0xe7, 0x93, 0x2b, - 0x3b, 0x4f, 0x1b, 0xce, 0x60, 0xcb, 0x78, 0xfa, 0x4a, 0x8f, 0x02, 0x8d, 0x90, 0x58, 0x4b, 0x03, - 0xdf, 0x0b, 0x3d, 0xf4, 0x8e, 0x18, 0xc9, 0x52, 0xd4, 0x36, 0xfe, 0x67, 0xb0, 0xdd, 0x5b, 0xa2, - 0x48, 0x96, 0x28, 0x92, 0xa5, 0x08, 0xc9, 0x85, 0xe6, 0x89, 0x28, 0x6f, 0x90, 0x30, 0x4b, 0xf8, - 0xc2, 0xcf, 0xa8, 0x38, 0xbc, 0x9e, 0x77, 0x85, 0x15, 0x6f, 0x0c, 0x37, 0xd9, 0x2f, 0xf6, 0x83, - 0xfd, 0x27, 0xaa, 0x3f, 0xb5, 0xfd, 0x9e, 0x60, 0xc9, 0xf6, 0x28, 0xe2, 0x2b, 0xc6, 0x30, 0xf4, - 0x02, 0xd3, 0x70, 0x6c, 0xb7, 0x77, 0x65, 0x27, 0x8b, 0x59, 0x57, 0xaa, 0x8a, 0x2e, 0x1c, 0x5a, - 0xc7, 0xdf, 0x30, 0xcc, 0xbc, 0x3a, 0xef, 0x8c, 0xeb, 0xf4, 0x0d, 0x73, 0xcb, 0x76, 0x89, 0xbf, - 0x17, 0x0d, 0xee, 0x8a, 0x4f, 0x02, 0x6f, 0xe8, 0x9b, 0xe4, 0x44, 0xad, 0x82, 0x2b, 0x7d, 0x12, - 0x1a, 0x79, 0xb4, 0xae, 0x14, 0xb5, 0xf2, 0x87, 0x6e, 0x68, 0xf7, 0xb3, 0x64, 0x7e, 0xee, 0xa8, - 0x06, 0x81, 0xb9, 0x45, 0xfa, 0x46, 0xa6, 0xdd, 0x3b, 0x8a, 0xda, 0x0d, 0x43, 0xdb, 0xb9, 0x62, - 0xbb, 0x61, 0x10, 0xfa, 0xe9, 0x46, 0xfa, 0xdb, 0x61, 0x6c, 0xd9, 0xb2, 0x3c, 0x17, 0x3d, 0x05, - 0x13, 0xc4, 0x35, 0x36, 0x1c, 0x62, 0x2d, 0x68, 0x4f, 0x68, 0x97, 0xeb, 0xcd, 0xd9, 0xef, 0xef, - 0x2f, 0xbe, 0xe1, 0x60, 0x7f, 0x71, 0x62, 0x85, 0x17, 0xe3, 0x08, 0xae, 0x7f, 0xb9, 0x06, 0xe3, - 0xac, 0x51, 0x80, 0x7e, 0x55, 0x83, 0x33, 0xdb, 0xc3, 0x0d, 0xe2, 0xbb, 0x24, 0x24, 0x41, 0xdb, - 0x08, 0xb6, 0x36, 0x3c, 0xc3, 0xe7, 0x28, 0x1a, 0x6f, 0xbf, 0xbe, 0x54, 0x82, 0x05, 0x97, 0x6e, - 0x64, 0xf1, 0x35, 0x1f, 0x39, 0xd8, 0x5f, 0x3c, 0x93, 0x03, 0xc0, 0x79, 0xd4, 0xd1, 0x5d, 0x98, - 0x72, 0x7b, 0xb6, 0xbb, 0xdb, 0x71, 0x7b, 0x3e, 0x09, 0x82, 0x85, 0x1a, 0xeb, 0xcd, 0x72, 0xa9, - 0xde, 0xdc, 0x52, 0x10, 0x35, 0xe7, 0x0e, 0xf6, 0x17, 0xa7, 0xd4, 0x12, 0x9c, 0x20, 0xa4, 0x7f, - 0x5e, 0x83, 0xd9, 0x65, 0xab, 0x6f, 0x07, 0x81, 0xed, 0xb9, 0x6b, 0xce, 0xb0, 0x67, 0xbb, 0xe8, - 0x09, 0x18, 0x75, 0x8d, 0x3e, 0x61, 0x53, 0x32, 0xd9, 0x9c, 0x12, 0xb3, 0x3a, 0x7a, 0xcb, 0xe8, - 0x13, 0xcc, 0x20, 0xe8, 0x03, 0x30, 0x6e, 0x7a, 0xee, 0xa6, 0xdd, 0x13, 0x1d, 0xfd, 0x99, 0x25, - 0xfe, 0x25, 0x97, 0xd4, 0x2f, 0xc9, 0xfa, 0x27, 0x38, 0x60, 0x09, 0x1b, 0x77, 0x57, 0x76, 0x43, - 0xe2, 0x52, 0x32, 0x4d, 0x38, 0xd8, 0x5f, 0x1c, 0x6f, 0x31, 0x04, 0x58, 0x20, 0xd2, 0xaf, 0x42, - 0x7d, 0xd9, 0x21, 0x7e, 0x68, 0xbb, 0x3d, 0xf4, 0x2c, 0xcc, 0x90, 0xbe, 0x61, 0x3b, 0x98, 0x98, - 0xc4, 0xde, 0x21, 0x7e, 0xb0, 0xa0, 0x3d, 0x31, 0x72, 0x79, 0xb2, 0x89, 0x0e, 0xf6, 0x17, 0x67, - 0x56, 0x12, 0x10, 0x9c, 0xaa, 0xa9, 0x7f, 0x46, 0x83, 0xc6, 0xf2, 0xd0, 0xb2, 0x43, 0x8e, 0x1f, - 0x05, 0xd0, 0x30, 0xe8, 0xcf, 0x35, 0xcf, 0xb1, 0xcd, 0x3d, 0xf1, 0x99, 0x5f, 0x2c, 0x35, 0xb1, - 0xcb, 0x31, 0x9e, 0xe6, 0xec, 0xc1, 0xfe, 0x62, 0x43, 0x29, 0xc0, 0x2a, 0x15, 0x7d, 0x0b, 0x54, - 0x18, 0xfa, 0x10, 0x4c, 0xf1, 0x51, 0xae, 0x1a, 0x03, 0x4c, 0x36, 0x45, 0x27, 0xde, 0xa4, 0x4c, - 0x5a, 0x44, 0x69, 0xe9, 0xf6, 0xc6, 0x27, 0x88, 0x19, 0x62, 0xb2, 0x49, 0x7c, 0xe2, 0x9a, 0x84, - 0x7f, 0xbf, 0x96, 0xd2, 0x18, 0x27, 0x50, 0xe9, 0x3f, 0xd6, 0x60, 0x6e, 0x79, 0xc7, 0xb0, 0x1d, - 0x63, 0xc3, 0x76, 0xec, 0x70, 0xef, 0xc3, 0x9e, 0x4b, 0x8e, 0xf1, 0x01, 0xd7, 0xe1, 0x91, 0xa1, - 0x6b, 0xf0, 0x76, 0x0e, 0x59, 0xe5, 0x9f, 0xec, 0xce, 0xde, 0x80, 0x50, 0xd6, 0xa3, 0x53, 0xfd, - 0xd8, 0xc1, 0xfe, 0xe2, 0x23, 0xeb, 0xf9, 0x55, 0x70, 0x51, 0x5b, 0x84, 0xe1, 0xbc, 0x02, 0x7a, - 0xc9, 0x73, 0x86, 0x7d, 0x81, 0x75, 0x84, 0x61, 0xbd, 0x70, 0xb0, 0xbf, 0x78, 0x7e, 0x3d, 0xb7, - 0x06, 0x2e, 0x68, 0xa9, 0xff, 0xa0, 0x06, 0x53, 0x4d, 0xc3, 0xdc, 0x1e, 0x0e, 0x9a, 0x43, 0x73, - 0x9b, 0x84, 0xe8, 0xe3, 0x50, 0xa7, 0x92, 0xcb, 0x32, 0x42, 0x43, 0xcc, 0xe4, 0xcf, 0x16, 0xb2, - 0x1f, 0xfb, 0x8a, 0xb4, 0x76, 0x3c, 0xb7, 0xab, 0x24, 0x34, 0x9a, 0x48, 0xcc, 0x09, 0xc4, 0x65, - 0x58, 0x62, 0x45, 0x3d, 0x18, 0x0d, 0x06, 0xc4, 0x14, 0xcc, 0xbd, 0x52, 0x8a, 0x59, 0xd4, 0x2e, - 0x77, 0x07, 0xc4, 0x8c, 0x3f, 0x03, 0xfd, 0x85, 0x19, 0x01, 0xe4, 0xc1, 0x78, 0x10, 0x1a, 0xe1, - 0x90, 0xce, 0x0f, 0x25, 0x75, 0xad, 0x3a, 0x29, 0x86, 0xae, 0x39, 0x23, 0x88, 0x8d, 0xf3, 0xdf, - 0x58, 0x90, 0xd1, 0x7f, 0xa4, 0xc1, 0x9c, 0x5a, 0xfd, 0xa6, 0x1d, 0x84, 0xe8, 0xe7, 0x33, 0x13, - 0xba, 0x74, 0xbc, 0x09, 0xa5, 0xad, 0xd9, 0x74, 0xce, 0x09, 0x72, 0xf5, 0xa8, 0x44, 0x99, 0xcc, - 0x4d, 0x18, 0xb3, 0x43, 0xd2, 0xe7, 0x8c, 0x55, 0x56, 0xa6, 0xa9, 0x7d, 0x6e, 0x4e, 0x0b, 0x6a, - 0x63, 0x1d, 0x8a, 0x17, 0x73, 0xf4, 0xfa, 0xc7, 0xe1, 0xac, 0x5a, 0x6b, 0xcd, 0xf7, 0x76, 0x6c, - 0x8b, 0xf8, 0x74, 0x31, 0x84, 0x7b, 0x83, 0xcc, 0x62, 0xa0, 0xcc, 0x85, 0x19, 0x04, 0xbd, 0x05, - 0xc6, 0x7d, 0xd2, 0xb3, 0x3d, 0x97, 0x7d, 0xf0, 0xc9, 0x78, 0xf2, 0x30, 0x2b, 0xc5, 0x02, 0xaa, - 0xff, 0xb7, 0x5a, 0x72, 0xf2, 0xe8, 0x87, 0x44, 0x77, 0xa1, 0x3e, 0x10, 0xa4, 0xc4, 0xe4, 0x75, - 0x2a, 0x8f, 0x30, 0xea, 0x7b, 0x3c, 0xaf, 0x51, 0x09, 0x96, 0xc4, 0x90, 0x0d, 0x33, 0xd1, 0xff, - 0xad, 0x0a, 0xb2, 0x98, 0xc9, 0xd4, 0xb5, 0x04, 0x22, 0x9c, 0x42, 0x8c, 0xee, 0xc0, 0x64, 0x40, - 0x4c, 0x9f, 0x50, 0xb9, 0x24, 0x38, 0x35, 0x57, 0x78, 0x75, 0xa3, 0x4a, 0x42, 0x78, 0xcd, 0x8b, - 0xee, 0x4f, 0x4a, 0x00, 0x8e, 0x11, 0xa1, 0x8b, 0x30, 0x1a, 0x10, 0x62, 0x2d, 0x8c, 0xb2, 0x49, - 0xaf, 0xb3, 0xa5, 0x41, 0x88, 0x85, 0x59, 0xa9, 0xfe, 0xad, 0x51, 0x40, 0x59, 0xc6, 0x56, 0x47, - 0xcd, 0x4b, 0xc4, 0xa4, 0x57, 0x19, 0xb5, 0x58, 0x23, 0x29, 0xc4, 0xe8, 0x55, 0x98, 0x76, 0x8c, - 0x20, 0xbc, 0x3d, 0xa0, 0xea, 0x47, 0xc4, 0x1d, 0x8d, 0xb7, 0x37, 0x4b, 0x7d, 0xde, 0x9b, 0x2a, - 0xa6, 0xe6, 0xfc, 0xc1, 0xfe, 0xe2, 0x74, 0xa2, 0x08, 0x27, 0x69, 0xa1, 0x6d, 0x98, 0xa4, 0x05, - 0x2b, 0xbe, 0xef, 0xf9, 0x62, 0xca, 0x5f, 0x28, 0x4d, 0x98, 0x61, 0x69, 0x4e, 0xd3, 0x2f, 0x21, - 0x7f, 0xe2, 0x18, 0x3f, 0x7a, 0x3f, 0x20, 0x6f, 0x23, 0x20, 0xfe, 0x0e, 0xb1, 0xae, 0x71, 0x6d, - 0x8b, 0x0e, 0x97, 0x7e, 0x97, 0x91, 0xe6, 0x05, 0xf1, 0x0d, 0xd1, 0xed, 0x4c, 0x0d, 0x9c, 0xd3, - 0x0a, 0x6d, 0x03, 0x92, 0x1a, 0x9b, 0xfc, 0xec, 0x0b, 0x63, 0xc7, 0x67, 0x9a, 0xf3, 0x94, 0xd8, - 0xb5, 0x0c, 0x0a, 0x9c, 0x83, 0x56, 0xff, 0x83, 0x1a, 0x34, 0x38, 0x93, 0xac, 0xb8, 0xa1, 0xbf, - 0x77, 0x0a, 0x5b, 0xc3, 0x66, 0x62, 0x6b, 0x68, 0x57, 0x58, 0xea, 0xac, 0xc7, 0x85, 0x3b, 0x83, - 0x9b, 0xda, 0x19, 0xae, 0x56, 0xa6, 0x74, 0xf8, 0xc6, 0xf0, 0x27, 0x1a, 0xcc, 0x2a, 0xb5, 0x4f, - 0x61, 0x5f, 0x20, 0xc9, 0x7d, 0xe1, 0xc5, 0xaa, 0x03, 0x2c, 0xd8, 0x16, 0xcc, 0xc4, 0xb8, 0x98, - 0xc8, 0x7e, 0x3b, 0xc0, 0x06, 0x93, 0x29, 0xb7, 0x62, 0x25, 0x49, 0x7e, 0xf5, 0xa6, 0x84, 0x60, - 0xa5, 0x96, 0x14, 0x56, 0xb5, 0x5c, 0x61, 0xf5, 0xe7, 0x23, 0x30, 0x9f, 0x99, 0xeb, 0xac, 0x00, - 0xd1, 0x7e, 0x5a, 0x02, 0xa4, 0xf6, 0x53, 0x11, 0x20, 0x23, 0xa5, 0x04, 0xc8, 0x65, 0xa8, 0xd3, - 0x39, 0x65, 0xdf, 0x86, 0x6f, 0x0d, 0x53, 0x94, 0x83, 0xba, 0xa2, 0x0c, 0x4b, 0x28, 0xf2, 0x01, - 0xf5, 0xed, 0x1e, 0x6f, 0xd6, 0x0d, 0x0d, 0x3f, 0xbc, 0x63, 0xf7, 0x89, 0x10, 0x35, 0x7f, 0xf3, - 0x78, 0x9c, 0x4a, 0x5b, 0x70, 0x89, 0xb3, 0x9a, 0xc1, 0x84, 0x73, 0xb0, 0xeb, 0xbf, 0xaf, 0xc1, - 0x48, 0x0b, 0x77, 0xd0, 0x5b, 0x13, 0x2a, 0xf6, 0x23, 0xaa, 0x8a, 0x7d, 0x7f, 0x7f, 0x71, 0xa2, - 0x85, 0x3b, 0x8a, 0xb6, 0xfd, 0x77, 0x34, 0x98, 0x37, 0x3d, 0x37, 0x34, 0x68, 0x2f, 0x30, 0xdf, - 0x8f, 0x22, 0xbe, 0x2f, 0xa7, 0x5d, 0xb6, 0x52, 0xd8, 0x9a, 0x8f, 0x8a, 0x1e, 0xcc, 0xa7, 0x21, - 0x01, 0xce, 0x92, 0xd6, 0xd7, 0x61, 0xb2, 0xe5, 0x78, 0x43, 0xab, 0xe3, 0x6e, 0x7a, 0x0f, 0x50, - 0x41, 0xfa, 0x77, 0x1a, 0x4c, 0x31, 0xbc, 0x6b, 0xbe, 0xb7, 0x69, 0x3b, 0xe4, 0x75, 0xa2, 0xaa, - 0xab, 0x5d, 0x2e, 0x12, 0xc8, 0x4c, 0x73, 0x56, 0x2b, 0xbe, 0x5e, 0x34, 0x67, 0xb5, 0xcf, 0x05, - 0x22, 0xf2, 0xab, 0x13, 0xc9, 0xa1, 0x31, 0x21, 0x79, 0x19, 0xea, 0xa6, 0xd1, 0x1c, 0xba, 0x96, - 0x23, 0x39, 0x83, 0x76, 0xb3, 0xb5, 0xcc, 0xcb, 0xb0, 0x84, 0xa2, 0x57, 0x01, 0x62, 0x97, 0x86, - 0xf8, 0x10, 0xd7, 0x2a, 0xfa, 0x51, 0xba, 0x24, 0x0c, 0x6d, 0xb7, 0x17, 0xc4, 0x5f, 0x3f, 0x86, - 0x61, 0x85, 0x1c, 0xfa, 0x05, 0x98, 0x16, 0xd3, 0xdc, 0xe9, 0x1b, 0x3d, 0x61, 0x68, 0x96, 0x9d, - 0xab, 0x55, 0x05, 0x53, 0xf3, 0x9c, 0xa0, 0x3c, 0xad, 0x96, 0x06, 0x38, 0x49, 0x0e, 0xdd, 0x83, - 0xa9, 0xbe, 0x6a, 0x3d, 0x8f, 0x56, 0xd8, 0xcc, 0x14, 0x53, 0xba, 0x79, 0x56, 0x50, 0x9f, 0x4a, - 0x18, 0xde, 0x09, 0x5a, 0x39, 0x16, 0xc0, 0xd8, 0xc3, 0xb2, 0x00, 0x36, 0x61, 0x82, 0xaf, 0xf1, - 0x60, 0x61, 0x9c, 0x8d, 0xf0, 0xbd, 0xa5, 0x46, 0xc8, 0xe5, 0x45, 0xec, 0xa8, 0xe3, 0xbf, 0x03, - 0x1c, 0x21, 0x47, 0x77, 0x61, 0x8a, 0x8a, 0xf7, 0x2e, 0x71, 0x88, 0x19, 0x7a, 0xfe, 0xc2, 0x44, - 0x05, 0x3f, 0x58, 0x57, 0x41, 0xc4, 0xfd, 0x28, 0x6a, 0x09, 0x4e, 0x10, 0x92, 0x42, 0xb0, 0x5e, - 0x28, 0x04, 0x77, 0xa0, 0xb1, 0xa3, 0x38, 0x34, 0x26, 0xd9, 0x34, 0xbc, 0xaf, 0x54, 0xcf, 0x62, - 0xf7, 0x46, 0xf3, 0x8c, 0xa0, 0xd4, 0x50, 0x5d, 0x21, 0x2a, 0x21, 0x7d, 0xbf, 0x0e, 0xf3, 0x2d, - 0x67, 0x18, 0x84, 0xc4, 0x5f, 0x16, 0xbe, 0x66, 0xe2, 0xa3, 0xcf, 0x68, 0x70, 0x9e, 0xfd, 0xdb, - 0xf6, 0xee, 0xba, 0x6d, 0xe2, 0x18, 0x7b, 0xcb, 0x9b, 0xb4, 0x86, 0x65, 0x9d, 0x4c, 0x10, 0xb5, - 0x87, 0x42, 0xa3, 0x60, 0xae, 0x99, 0x6e, 0x2e, 0x46, 0x5c, 0x40, 0x09, 0x7d, 0x49, 0x83, 0x47, - 0x73, 0x40, 0x6d, 0xe2, 0x90, 0x90, 0x08, 0x49, 0x70, 0xd2, 0x7e, 0x5c, 0x3a, 0xd8, 0x5f, 0x7c, - 0xb4, 0x5b, 0x84, 0x14, 0x17, 0xd3, 0xa3, 0xbb, 0xec, 0x85, 0x1c, 0xe8, 0x55, 0xc3, 0x76, 0x86, - 0x3e, 0x11, 0x7a, 0xf4, 0x49, 0xbb, 0xf3, 0xf8, 0xc1, 0xfe, 0xe2, 0x85, 0x6e, 0x21, 0x56, 0x7c, - 0x08, 0x45, 0xf4, 0x29, 0x38, 0x27, 0xa1, 0xeb, 0xae, 0x4b, 0x88, 0x45, 0x2c, 0xa6, 0xa2, 0x8c, - 0x96, 0xea, 0xca, 0xa3, 0x07, 0xfb, 0x8b, 0xe7, 0xba, 0x79, 0x08, 0x71, 0x3e, 0x1d, 0xd4, 0x83, - 0x4b, 0x31, 0x20, 0xb4, 0x1d, 0xfb, 0x1e, 0xc3, 0x74, 0x67, 0xcb, 0x27, 0xc1, 0x96, 0xe7, 0x58, - 0x4c, 0x5e, 0x68, 0xcd, 0x37, 0x1e, 0xec, 0x2f, 0x5e, 0xea, 0x1e, 0x56, 0x11, 0x1f, 0x8e, 0x07, - 0x59, 0x30, 0x15, 0x98, 0x86, 0xdb, 0x71, 0x43, 0xe2, 0xef, 0x18, 0xce, 0xc2, 0x78, 0xa9, 0x01, - 0xf2, 0x35, 0xaa, 0xe0, 0xc1, 0x09, 0xac, 0xe8, 0x3d, 0x50, 0x27, 0xbb, 0x03, 0xc3, 0xb5, 0x08, - 0x17, 0x0c, 0x93, 0xcd, 0x8b, 0x74, 0x4b, 0x5a, 0x11, 0x65, 0xf7, 0xf7, 0x17, 0xa7, 0xa2, 0xff, - 0x57, 0x3d, 0x8b, 0x60, 0x59, 0x1b, 0x7d, 0x12, 0xce, 0xf6, 0x8d, 0xdd, 0x5b, 0x9e, 0x45, 0x98, - 0x9c, 0xa3, 0x62, 0x8f, 0x7d, 0x88, 0x7a, 0xa9, 0x7e, 0x2e, 0x1c, 0xec, 0x2f, 0x9e, 0x5d, 0xcd, - 0xc1, 0x87, 0x73, 0xa9, 0xd0, 0xcf, 0xd0, 0x37, 0x76, 0xaf, 0xf9, 0x86, 0x49, 0x36, 0x87, 0xce, - 0x1d, 0xe2, 0xf7, 0x6d, 0x97, 0xab, 0x95, 0xc4, 0xf4, 0x5c, 0x8b, 0xca, 0x12, 0xed, 0xf2, 0x18, - 0xff, 0x0c, 0xab, 0x87, 0x55, 0xc4, 0x87, 0xe3, 0x41, 0xef, 0x84, 0x29, 0xbb, 0xe7, 0x7a, 0x3e, - 0xb9, 0x63, 0xd8, 0x6e, 0x18, 0x2c, 0x00, 0x73, 0xba, 0xb2, 0x69, 0xed, 0x28, 0xe5, 0x38, 0x51, - 0x4b, 0xff, 0xef, 0x1a, 0x34, 0x84, 0x80, 0x61, 0xfa, 0xa0, 0x09, 0x63, 0x26, 0xd5, 0x06, 0x84, - 0x20, 0x79, 0xa1, 0xbc, 0xda, 0x41, 0xd1, 0xc5, 0x3a, 0x07, 0x2b, 0xc2, 0x1c, 0x37, 0xba, 0x9b, - 0xa3, 0x34, 0xb4, 0x2a, 0x2a, 0x0d, 0x8c, 0xdc, 0x11, 0x0a, 0x83, 0xbe, 0x3f, 0x02, 0x93, 0x2d, - 0xcf, 0xb5, 0x6c, 0x66, 0x6c, 0x3c, 0x9d, 0xd0, 0x7d, 0x2f, 0xa9, 0x62, 0xff, 0xfe, 0xfe, 0xe2, - 0xb4, 0xac, 0xa8, 0xec, 0x03, 0xcf, 0x48, 0xcb, 0x9c, 0x2b, 0xc3, 0x6f, 0x4c, 0x5a, 0xd4, 0xf7, - 0xf7, 0x17, 0x67, 0x65, 0xb3, 0xa4, 0x91, 0x8d, 0x76, 0x00, 0x51, 0x9b, 0xe9, 0x8e, 0x6f, 0xb8, - 0x01, 0x47, 0x4b, 0x99, 0x70, 0xe4, 0xc4, 0x06, 0x8b, 0x34, 0xa9, 0x6e, 0x66, 0xb0, 0xe1, 0x1c, - 0x0a, 0xe8, 0x13, 0x30, 0x43, 0x4b, 0xd7, 0x07, 0x96, 0x11, 0x12, 0x45, 0x02, 0x9d, 0xc8, 0x48, - 0x12, 0x34, 0x67, 0x6e, 0x26, 0x30, 0xe1, 0x14, 0x66, 0x6e, 0x2b, 0x18, 0x81, 0xe7, 0x32, 0xe1, - 0x92, 0xb0, 0x15, 0x68, 0x29, 0x16, 0x50, 0xf4, 0x14, 0x4c, 0xf4, 0x49, 0x10, 0x18, 0x3d, 0xc2, - 0xa4, 0xc5, 0x64, 0xac, 0x14, 0xac, 0xf2, 0x62, 0x1c, 0xc1, 0xd1, 0xdb, 0x60, 0xcc, 0xf4, 0x2c, - 0x12, 0x2c, 0x4c, 0x30, 0x7e, 0x3e, 0xcf, 0x98, 0x89, 0x16, 0xdc, 0xdf, 0x5f, 0x9c, 0x64, 0x06, - 0x28, 0xfd, 0x85, 0x79, 0x25, 0xfd, 0x1b, 0x54, 0x51, 0x4f, 0x59, 0x3c, 0x45, 0x27, 0x22, 0xfc, - 0xb3, 0x32, 0x1b, 0xed, 0xf4, 0xdc, 0xa9, 0xfa, 0xaf, 0xd4, 0xe0, 0x2c, 0xed, 0xa1, 0xef, 0x39, - 0x0e, 0xdd, 0xbd, 0x06, 0x8e, 0xb7, 0xd7, 0x27, 0xee, 0x69, 0x9c, 0x6c, 0x44, 0x6a, 0x4e, 0xad, - 0x50, 0xcd, 0xe9, 0x67, 0xe6, 0x61, 0xa4, 0xcc, 0x3c, 0x48, 0x76, 0x39, 0x62, 0x2e, 0xfe, 0x42, - 0x83, 0x85, 0xbc, 0xb9, 0x38, 0x05, 0xf3, 0xca, 0x4d, 0x9a, 0x57, 0x9d, 0xd2, 0x86, 0x78, 0xba, - 0xef, 0x05, 0x66, 0xd6, 0x5f, 0xd4, 0xe0, 0x7c, 0x5c, 0xbd, 0xe3, 0x06, 0xa1, 0xe1, 0x38, 0xdc, - 0xe7, 0xf1, 0xf0, 0x3f, 0xfc, 0x2b, 0x09, 0x3b, 0xf9, 0x76, 0xc5, 0xb1, 0xaa, 0x9d, 0x2f, 0x74, - 0x61, 0xee, 0xa5, 0x5c, 0x98, 0x1f, 0x78, 0x90, 0x44, 0x0f, 0xf7, 0x66, 0xfe, 0x0f, 0x0d, 0x2e, - 0xe4, 0x37, 0x3c, 0x05, 0xbe, 0x1a, 0x24, 0xf9, 0xea, 0xc6, 0x03, 0x1c, 0x76, 0x01, 0x67, 0x7d, - 0xb7, 0x56, 0x34, 0x5c, 0x66, 0xca, 0x6f, 0xc2, 0x2c, 0xb5, 0xaf, 0x82, 0x50, 0x78, 0xdd, 0x4e, - 0x76, 0x02, 0x1d, 0xf9, 0xb6, 0x66, 0x71, 0x12, 0x07, 0x4e, 0x23, 0x45, 0xb7, 0x60, 0x82, 0xda, - 0x54, 0x14, 0x7f, 0xed, 0xf8, 0xf8, 0xa5, 0xdc, 0xef, 0xf2, 0xb6, 0x38, 0x42, 0x82, 0x7e, 0x1e, - 0xa6, 0x2d, 0xb9, 0xa8, 0x8e, 0x38, 0x7a, 0x4a, 0x63, 0x65, 0x0e, 0xd2, 0xb6, 0xda, 0x1a, 0x27, - 0x91, 0xe9, 0xff, 0x57, 0x83, 0x8b, 0x87, 0x31, 0x17, 0xf2, 0x01, 0xcc, 0x68, 0x23, 0xe7, 0x11, - 0x08, 0xa5, 0x95, 0xa1, 0x08, 0x4d, 0xbc, 0x48, 0x65, 0x51, 0x80, 0x15, 0x2a, 0x39, 0xc7, 0x5b, - 0xb5, 0x87, 0x74, 0xbc, 0xa5, 0xff, 0x4f, 0x4d, 0x15, 0x47, 0xea, 0xc7, 0x7d, 0xdd, 0x89, 0x23, - 0xb5, 0xf3, 0x85, 0x0e, 0xbc, 0x3f, 0xae, 0xc1, 0x13, 0xf9, 0x4d, 0x94, 0x1d, 0xf8, 0x45, 0x18, - 0x1f, 0xf0, 0x40, 0x91, 0x11, 0xb6, 0x43, 0x5e, 0xa6, 0xc2, 0x85, 0x47, 0x71, 0xdc, 0xdf, 0x5f, - 0xbc, 0x90, 0x27, 0xed, 0x45, 0xfc, 0x87, 0x68, 0x87, 0xec, 0x94, 0x07, 0x83, 0x6b, 0x5a, 0xef, - 0x38, 0xa6, 0x7c, 0x31, 0x36, 0x88, 0x73, 0x6c, 0x9f, 0xc5, 0x67, 0x34, 0x98, 0x49, 0xf0, 0x74, - 0xb0, 0x30, 0xc6, 0xb8, 0xb4, 0xdc, 0x09, 0x43, 0x62, 0xb5, 0xc4, 0x1b, 0x78, 0xa2, 0x38, 0xc0, - 0x29, 0x8a, 0x29, 0x51, 0xab, 0x4e, 0xeb, 0xeb, 0x4f, 0xd4, 0xaa, 0xbd, 0x2f, 0x10, 0xb5, 0x5f, - 0xaf, 0x15, 0x0d, 0x97, 0x89, 0xda, 0x5d, 0x98, 0x8c, 0x82, 0xf1, 0x22, 0x91, 0x71, 0xad, 0x72, - 0xa7, 0x38, 0xbe, 0xf8, 0x34, 0x3d, 0x2a, 0x09, 0x70, 0x4c, 0x0c, 0x7d, 0x4e, 0x03, 0x88, 0x3f, - 0x8d, 0x58, 0x58, 0xeb, 0x0f, 0x70, 0x42, 0x14, 0xfd, 0x66, 0x86, 0xae, 0x6b, 0x85, 0x2f, 0x14, - 0xc2, 0xfa, 0x6f, 0xd5, 0x00, 0x65, 0x3b, 0x4f, 0x15, 0xcf, 0x6d, 0xdb, 0xb5, 0xd2, 0x0a, 0xf8, - 0x0d, 0xdb, 0xb5, 0x30, 0x83, 0x1c, 0x43, 0x35, 0x7d, 0x1e, 0x66, 0x7b, 0x8e, 0xb7, 0x61, 0x38, - 0xce, 0x9e, 0x88, 0xf0, 0x63, 0xab, 0xb4, 0xde, 0x3c, 0x43, 0xb7, 0xa7, 0x6b, 0x49, 0x10, 0x4e, - 0xd7, 0x45, 0x03, 0x98, 0xf3, 0xa9, 0xa1, 0x6c, 0xda, 0x0e, 0x33, 0x55, 0xbc, 0x61, 0x58, 0xd2, - 0x13, 0x73, 0xf6, 0x60, 0x7f, 0x71, 0x0e, 0xa7, 0x70, 0xe1, 0x0c, 0x76, 0xf4, 0x24, 0x4c, 0x0c, - 0x7c, 0xbb, 0x6f, 0xf8, 0x7b, 0xcc, 0x18, 0xaa, 0x37, 0x1b, 0x74, 0x9f, 0x5b, 0xe3, 0x45, 0x38, - 0x82, 0xe9, 0x9f, 0xd3, 0x60, 0xa2, 0xe5, 0xf9, 0xa4, 0x7d, 0xab, 0x8b, 0xee, 0x41, 0x43, 0x89, - 0x28, 0x15, 0x4b, 0xa6, 0x2c, 0x0b, 0x31, 0x94, 0xcb, 0x31, 0xba, 0x28, 0x6a, 0x4d, 0x16, 0x60, - 0x95, 0x98, 0xbe, 0x46, 0xbf, 0x5c, 0xba, 0x0d, 0x7a, 0x16, 0x46, 0xfb, 0x9e, 0x15, 0x99, 0x4e, - 0x6f, 0x89, 0xbe, 0xcb, 0xaa, 0x67, 0x51, 0x13, 0xf9, 0x7c, 0xb6, 0x05, 0xf3, 0xbd, 0xb0, 0x36, - 0xfa, 0xd7, 0x34, 0x18, 0xa1, 0xa3, 0xd2, 0x61, 0xdc, 0xf2, 0xfa, 0x86, 0xed, 0x0a, 0x2c, 0x2c, - 0x00, 0xb0, 0xcd, 0x4a, 0xb0, 0x80, 0xa0, 0x57, 0x60, 0x32, 0xda, 0xa1, 0xaa, 0x9d, 0x09, 0xb7, - 0x6f, 0x75, 0x65, 0x00, 0x8d, 0x5c, 0x33, 0x51, 0x49, 0x80, 0x63, 0x2a, 0xba, 0x01, 0xf3, 0xed, - 0x5b, 0xdd, 0x8e, 0x6b, 0x3a, 0x43, 0x8b, 0xac, 0xec, 0xb2, 0x3f, 0xf4, 0xa3, 0xd9, 0xbc, 0x44, - 0x44, 0x1d, 0xb2, 0x8f, 0x26, 0x2a, 0xe1, 0x08, 0x46, 0xab, 0x11, 0xde, 0x42, 0x44, 0xcc, 0xb1, - 0x6a, 0x02, 0x09, 0x8e, 0x60, 0xfa, 0x9f, 0xd6, 0xa0, 0xa1, 0x74, 0x08, 0xf5, 0x61, 0x82, 0x8f, - 0x37, 0x0a, 0x5c, 0xb9, 0x5a, 0x76, 0x8c, 0xc9, 0x6e, 0x73, 0xf2, 0x7c, 0x4a, 0x03, 0x1c, 0xd1, - 0x50, 0x39, 0xb0, 0x56, 0xcc, 0x81, 0x68, 0x09, 0x80, 0xc7, 0xe5, 0xb0, 0x53, 0x57, 0xbe, 0xf5, - 0xb1, 0x45, 0xde, 0x95, 0xa5, 0x58, 0xa9, 0x81, 0x2e, 0x8a, 0xb5, 0xaa, 0x84, 0xee, 0x28, 0xeb, - 0xb4, 0x07, 0x63, 0xf7, 0x3c, 0x97, 0x04, 0xe2, 0x38, 0xe2, 0x41, 0x8d, 0x70, 0x92, 0x0a, 0xe3, - 0x0f, 0x53, 0xc4, 0x98, 0xe3, 0xd7, 0x7f, 0x5d, 0x03, 0x68, 0x1b, 0xa1, 0xc1, 0x7d, 0xe7, 0xc7, - 0x08, 0x7b, 0xbc, 0x98, 0x90, 0x31, 0xf5, 0xcc, 0x31, 0xe7, 0x68, 0x60, 0xdf, 0x8b, 0xc6, 0x2f, - 0x15, 0x18, 0x8e, 0xbd, 0x6b, 0xdf, 0x23, 0x98, 0xc1, 0xd1, 0x5b, 0x61, 0x92, 0xb8, 0xa6, 0xbf, - 0x37, 0x08, 0x45, 0xf4, 0x52, 0x9d, 0x1f, 0x8d, 0xaf, 0x44, 0x85, 0x38, 0x86, 0xeb, 0x4f, 0x43, - 0x52, 0x0d, 0x3d, 0xba, 0x97, 0xfa, 0x0e, 0xd4, 0x57, 0x5c, 0x6b, 0xe0, 0xd9, 0x6e, 0x78, 0x8c, - 0x31, 0x5d, 0x82, 0x91, 0xa1, 0xef, 0x88, 0x21, 0x35, 0x44, 0x85, 0x91, 0x75, 0x7c, 0x13, 0xd3, - 0x72, 0xf4, 0x14, 0x4c, 0x0c, 0x86, 0xfe, 0xc0, 0x0b, 0xa2, 0x71, 0x49, 0x7d, 0x7b, 0x8d, 0x17, - 0xe3, 0x08, 0xae, 0xdf, 0xd7, 0x60, 0x6e, 0x65, 0x77, 0x60, 0xfb, 0x2c, 0x04, 0x93, 0xf8, 0x54, - 0x95, 0xa4, 0xed, 0x77, 0xf8, 0xbf, 0xa2, 0x0f, 0xb2, 0xbd, 0xa8, 0x81, 0x23, 0x38, 0xda, 0x84, - 0x19, 0xc2, 0x9a, 0xb3, 0xed, 0xc2, 0x90, 0x47, 0x00, 0x27, 0x71, 0x33, 0xf1, 0x10, 0xdf, 0x04, - 0x16, 0x9c, 0xc2, 0x8a, 0xba, 0x30, 0x63, 0x3a, 0x46, 0x10, 0xd8, 0x9b, 0xb6, 0x19, 0x47, 0x1a, - 0x4c, 0x36, 0xdf, 0x4a, 0xdb, 0xb6, 0x12, 0x90, 0xfb, 0xfb, 0x8b, 0xe7, 0x44, 0x3f, 0x93, 0x00, - 0x9c, 0x42, 0xa1, 0x7f, 0xa5, 0x06, 0xd3, 0x2b, 0xbb, 0x03, 0x2f, 0x18, 0xfa, 0x84, 0x55, 0x3d, - 0x05, 0x2d, 0xf8, 0x29, 0x98, 0xd8, 0x32, 0x5c, 0xcb, 0x21, 0xbe, 0xf8, 0x7c, 0x72, 0x6e, 0xaf, - 0xf3, 0x62, 0x1c, 0xc1, 0xd1, 0x27, 0x01, 0x02, 0x73, 0x8b, 0x58, 0x43, 0xb6, 0x2d, 0x70, 0x43, - 0xe8, 0x66, 0xa9, 0x85, 0x95, 0x18, 0x64, 0x57, 0xe2, 0x14, 0xeb, 0x5d, 0xfe, 0xc6, 0x0a, 0x3d, - 0xfd, 0x4f, 0x35, 0x98, 0x4f, 0xb4, 0x3b, 0x05, 0xdd, 0xae, 0x97, 0xd4, 0xed, 0x9a, 0xd5, 0x07, - 0x5b, 0xa0, 0xd2, 0x7d, 0xb1, 0x06, 0x8f, 0x14, 0x4c, 0x4a, 0xe6, 0x3c, 0x52, 0x3b, 0xad, 0xf3, - 0xc8, 0x1d, 0x68, 0x84, 0x9e, 0x23, 0x62, 0x62, 0xa2, 0x39, 0x28, 0x77, 0xda, 0x78, 0x47, 0xe2, - 0x89, 0x4f, 0x1b, 0xe3, 0xb2, 0x00, 0xab, 0x84, 0xf4, 0xdf, 0xd3, 0x60, 0x52, 0xda, 0x91, 0xc7, - 0x08, 0x0d, 0x39, 0xc5, 0x28, 0xd4, 0xcb, 0x50, 0xb7, 0xec, 0x40, 0xd5, 0xfb, 0x58, 0x44, 0x42, - 0x5b, 0x94, 0x61, 0x09, 0xd5, 0xff, 0x55, 0x0d, 0xce, 0x4b, 0xdc, 0x91, 0x0a, 0x4a, 0xcd, 0xde, - 0xe3, 0xe8, 0xa1, 0x17, 0x85, 0xc4, 0x55, 0xf6, 0x08, 0x45, 0xda, 0x3e, 0x99, 0x16, 0xa7, 0x8d, - 0x3c, 0x51, 0x8a, 0x6e, 0xc1, 0x58, 0x40, 0xe9, 0x09, 0x05, 0xf3, 0x84, 0xb3, 0xc1, 0x76, 0x3a, - 0xd6, 0x5f, 0xcc, 0xd1, 0xa0, 0x57, 0x55, 0xbb, 0x82, 0x1b, 0x79, 0xef, 0x3f, 0x19, 0x33, 0xb0, - 0x8b, 0x4f, 0x4b, 0x74, 0x24, 0x56, 0x34, 0x23, 0x39, 0x81, 0xba, 0x79, 0xa6, 0x85, 0x1e, 0x40, - 0xfd, 0x9a, 0x40, 0x8b, 0x2e, 0x40, 0xcd, 0x8e, 0x66, 0x0f, 0x44, 0xab, 0x5a, 0xa7, 0x8d, 0x6b, - 0xb6, 0x25, 0xf7, 0xaa, 0x5a, 0xe1, 0x5e, 0xa5, 0x6c, 0x26, 0x23, 0x87, 0x6f, 0x26, 0xfa, 0x7f, - 0xae, 0xc1, 0xd9, 0x88, 0x6a, 0xd4, 0xab, 0xb6, 0x70, 0x61, 0x1f, 0xb1, 0x23, 0x1e, 0x6d, 0x49, - 0xdc, 0x86, 0x51, 0x26, 0xb5, 0x4a, 0xb9, 0xb6, 0x25, 0x42, 0xda, 0x1d, 0xcc, 0x10, 0xa1, 0xbf, - 0x05, 0xe3, 0x0e, 0xb5, 0xdd, 0xa3, 0x00, 0x90, 0x72, 0x86, 0x57, 0xde, 0x78, 0xb9, 0x4f, 0x20, - 0xe0, 0x21, 0x8e, 0xd2, 0xdf, 0xc9, 0x0b, 0xb1, 0x20, 0x7a, 0xe1, 0x19, 0x68, 0x28, 0xd5, 0xd0, - 0x1c, 0x8c, 0x6c, 0x13, 0x7e, 0xd7, 0x65, 0x12, 0xd3, 0x7f, 0xd1, 0x59, 0x18, 0xdb, 0x31, 0x9c, - 0xa1, 0x98, 0x13, 0xcc, 0x7f, 0x3c, 0x5b, 0x7b, 0x8f, 0xa6, 0x7f, 0x47, 0x83, 0xc6, 0x75, 0x7b, - 0x83, 0xf8, 0xfc, 0x28, 0x91, 0xe9, 0xb5, 0x89, 0x5b, 0x55, 0x8d, 0xbc, 0x1b, 0x55, 0x68, 0x0f, - 0x26, 0xc5, 0xfe, 0x20, 0x23, 0xd9, 0xca, 0xdd, 0x9d, 0x52, 0x68, 0x0b, 0xb9, 0xab, 0xc6, 0x8d, - 0x47, 0x24, 0x70, 0x4c, 0x4d, 0x7f, 0x15, 0xce, 0xe4, 0x34, 0x42, 0x8b, 0x6c, 0xc9, 0xf9, 0xa1, - 0x60, 0x8c, 0x68, 0x0d, 0xf9, 0x21, 0xe6, 0xe5, 0xe8, 0x51, 0x18, 0x21, 0x6e, 0x14, 0xc1, 0x39, - 0x41, 0x95, 0xa4, 0x15, 0xd7, 0xc2, 0xb4, 0x8c, 0x8a, 0x16, 0xc7, 0x4b, 0xe8, 0x12, 0x4c, 0xb4, - 0xdc, 0x14, 0x65, 0x58, 0x42, 0xf5, 0x7f, 0x36, 0x0a, 0x97, 0xae, 0x7b, 0xbe, 0x7d, 0xcf, 0x73, - 0x43, 0xc3, 0x59, 0xf3, 0xac, 0x38, 0x26, 0x43, 0x88, 0xa9, 0xcf, 0x69, 0xf0, 0x88, 0x39, 0x18, - 0x76, 0x5c, 0x3b, 0xb4, 0x8d, 0xe8, 0xa8, 0x7c, 0x8d, 0xf8, 0xb6, 0x57, 0x36, 0x34, 0x83, 0xdd, - 0xc5, 0x69, 0xad, 0xad, 0xe7, 0xa1, 0xc4, 0x45, 0xb4, 0x58, 0x84, 0x88, 0xe5, 0xdd, 0x75, 0x59, - 0xe7, 0xba, 0x21, 0xbb, 0x1f, 0x74, 0x2f, 0x1e, 0x62, 0xc9, 0x08, 0x91, 0x76, 0x2e, 0x46, 0x5c, - 0x40, 0x09, 0x7d, 0x0a, 0xce, 0xd9, 0xbc, 0x73, 0x98, 0x18, 0x96, 0xed, 0x92, 0x20, 0x60, 0x71, - 0x12, 0x55, 0x42, 0x20, 0x3a, 0x79, 0x08, 0x71, 0x3e, 0x1d, 0xf4, 0x51, 0x80, 0x60, 0xcf, 0x35, - 0xc5, 0xfc, 0x8f, 0x95, 0xa2, 0xca, 0x35, 0x23, 0x89, 0x05, 0x2b, 0x18, 0xa9, 0x2d, 0xc0, 0xb7, - 0x4f, 0xd7, 0xe4, 0x07, 0x99, 0x1a, 0xb7, 0x05, 0xee, 0x44, 0x85, 0x38, 0x86, 0xeb, 0xbf, 0xa9, - 0xc1, 0x84, 0xb8, 0x78, 0x87, 0xde, 0x92, 0x32, 0x89, 0xe5, 0xd2, 0x4e, 0x99, 0xc5, 0xf7, 0x98, - 0x17, 0x5a, 0xb8, 0x53, 0xc4, 0xe6, 0x5a, 0xce, 0xa2, 0x12, 0x94, 0x63, 0xe7, 0x4c, 0xc2, 0x1b, - 0x1d, 0x39, 0x6c, 0x14, 0x6a, 0xfa, 0x37, 0x35, 0x98, 0xcf, 0xb4, 0x3a, 0xc6, 0x16, 0x7a, 0x8a, - 0x67, 0xa9, 0x3f, 0x6e, 0x00, 0xbb, 0x65, 0xb9, 0xbc, 0xd6, 0xe9, 0x12, 0x7f, 0x47, 0xae, 0xc2, - 0x2f, 0x69, 0x30, 0x17, 0x9f, 0xfa, 0x8b, 0x5e, 0x68, 0x15, 0x82, 0x44, 0x6f, 0xa4, 0x90, 0x35, - 0x17, 0xc4, 0xc0, 0xe7, 0xd2, 0x10, 0x9c, 0x21, 0x8c, 0xbe, 0xa8, 0xc1, 0x9c, 0x91, 0xbc, 0x65, - 0x19, 0x49, 0xcd, 0x72, 0x57, 0x08, 0x52, 0x57, 0x36, 0xe3, 0xce, 0xa4, 0x00, 0x01, 0xce, 0xd0, - 0x45, 0xef, 0x84, 0x29, 0x63, 0x60, 0x2f, 0x0f, 0x2d, 0x9b, 0xee, 0xfd, 0xd1, 0xd5, 0x3c, 0xa6, - 0x90, 0x2e, 0xaf, 0x75, 0x64, 0x39, 0x4e, 0xd4, 0x92, 0xf7, 0x28, 0xc5, 0x54, 0x8e, 0x56, 0xbd, - 0x47, 0x29, 0x66, 0x31, 0xbe, 0x47, 0x29, 0x26, 0x4f, 0xa5, 0x82, 0x3e, 0x02, 0x8f, 0xf2, 0x0d, - 0xa7, 0x69, 0x04, 0xb6, 0xb9, 0x3c, 0x0c, 0xb7, 0x88, 0x1b, 0x46, 0x46, 0x1f, 0x77, 0xa9, 0xb1, - 0x78, 0xb1, 0x95, 0xa2, 0x4a, 0xb8, 0xb8, 0x3d, 0xf2, 0x00, 0x3c, 0xdb, 0x32, 0xc5, 0x80, 0x78, - 0xc8, 0x52, 0x39, 0x0d, 0xfb, 0x76, 0xa7, 0xdd, 0x12, 0xe3, 0x61, 0xb2, 0x22, 0xfe, 0x8d, 0x15, - 0x12, 0xe8, 0xd7, 0x34, 0x98, 0x16, 0x8c, 0x2e, 0x88, 0x4e, 0x30, 0x16, 0xf8, 0x48, 0x69, 0x86, - 0x4c, 0x71, 0xfd, 0x12, 0x56, 0xb1, 0x73, 0x95, 0x41, 0x86, 0xb1, 0x26, 0x60, 0x38, 0xd9, 0x11, - 0xf4, 0x65, 0x0d, 0xce, 0x06, 0xc4, 0xdf, 0xb1, 0x4d, 0xb2, 0x6c, 0x9a, 0xde, 0xd0, 0x8d, 0xbe, - 0x73, 0xbd, 0xc2, 0x95, 0xb6, 0x6e, 0x0e, 0x42, 0x1e, 0x3c, 0x95, 0x07, 0xc1, 0xb9, 0x1d, 0x40, - 0xbf, 0xa4, 0xc1, 0xec, 0x5d, 0x23, 0x34, 0xb7, 0x5a, 0x86, 0xb9, 0xc5, 0xbc, 0x30, 0x3c, 0x5e, - 0xaa, 0xec, 0xca, 0x79, 0x39, 0x89, 0x8b, 0xfb, 0x8e, 0x53, 0x85, 0x38, 0x4d, 0x11, 0x85, 0x50, - 0xf7, 0xc9, 0x2b, 0x43, 0x12, 0xb0, 0xa8, 0x2a, 0xed, 0xe4, 0xea, 0x77, 0xde, 0x47, 0xc3, 0x02, - 0x23, 0x57, 0x36, 0xa2, 0x5f, 0x58, 0x52, 0x42, 0x3d, 0xb8, 0xc4, 0xd9, 0x77, 0xd9, 0xf5, 0xdc, - 0xbd, 0xbe, 0x37, 0x0c, 0x52, 0x4b, 0xa0, 0xc1, 0x96, 0x00, 0x0b, 0x1c, 0x5b, 0x39, 0xac, 0x22, - 0x3e, 0x1c, 0x0f, 0xfa, 0x20, 0xd4, 0xc9, 0x0e, 0x71, 0xc3, 0x3b, 0x77, 0x6e, 0x2e, 0x4c, 0x95, - 0xda, 0x23, 0xd9, 0x10, 0x56, 0x04, 0x0e, 0x2c, 0xb1, 0x5d, 0x78, 0x11, 0x50, 0x96, 0x29, 0x8f, - 0x52, 0x50, 0xeb, 0xaa, 0x82, 0xfa, 0x3d, 0x0d, 0xce, 0xe5, 0x4e, 0x1b, 0xc2, 0x70, 0x9e, 0xc5, - 0xdb, 0xb9, 0xab, 0xc3, 0xd0, 0x08, 0x6d, 0xb7, 0xd7, 0x71, 0x37, 0x1d, 0xbb, 0xb7, 0xc5, 0x55, - 0xc0, 0x31, 0xae, 0xb0, 0xac, 0xe6, 0xd6, 0xc0, 0x05, 0x2d, 0x51, 0x07, 0xce, 0xf4, 0x8d, 0xdd, - 0x0c, 0xc2, 0x1a, 0x43, 0xc8, 0xee, 0xf4, 0xaf, 0x66, 0xc1, 0x38, 0xaf, 0x8d, 0xfe, 0xb5, 0x31, - 0x78, 0x8c, 0x76, 0x3c, 0xde, 0x3a, 0x57, 0x0d, 0xd7, 0xe8, 0xbd, 0x46, 0xb7, 0xa8, 0xef, 0x68, - 0xf0, 0xc8, 0x56, 0xbe, 0x62, 0x2b, 0x76, 0x6f, 0x5c, 0x4e, 0xbf, 0x3f, 0x4c, 0x59, 0xe6, 0xac, - 0x7b, 0x68, 0x15, 0x5c, 0xd4, 0x2b, 0xf4, 0x22, 0xcc, 0xb9, 0x9e, 0x45, 0x5a, 0x9d, 0x36, 0x5e, - 0x35, 0x82, 0xed, 0x6e, 0xe4, 0xba, 0x1d, 0xe3, 0xe7, 0x33, 0xb7, 0x52, 0x30, 0x9c, 0xa9, 0x8d, - 0x76, 0x00, 0x0d, 0x3c, 0x6b, 0x65, 0xc7, 0x36, 0xa3, 0x50, 0xb9, 0xf2, 0x67, 0x42, 0xec, 0x12, - 0xd1, 0x5a, 0x06, 0x1b, 0xce, 0xa1, 0xc0, 0x54, 0x73, 0xda, 0x99, 0x55, 0xcf, 0xb5, 0x43, 0xcf, - 0x67, 0x11, 0x9d, 0x95, 0x34, 0x54, 0xc6, 0xe9, 0xb7, 0x72, 0x31, 0xe2, 0x02, 0x4a, 0xfa, 0xff, - 0xd2, 0x60, 0x96, 0xf2, 0xc5, 0x9a, 0xef, 0xed, 0xee, 0xbd, 0x26, 0x59, 0xf2, 0x29, 0x71, 0xf2, - 0xc4, 0x2d, 0xb6, 0x73, 0xca, 0xa9, 0xd3, 0x24, 0xeb, 0x74, 0x7c, 0xd0, 0xa4, 0x5a, 0xad, 0x23, - 0xc5, 0x56, 0xab, 0xfe, 0x67, 0x1a, 0xd7, 0x16, 0x23, 0xa3, 0xf1, 0xb5, 0xb9, 0x14, 0xdf, 0x0d, - 0xd3, 0xb4, 0x6c, 0xd5, 0xd8, 0x5d, 0x6b, 0xbf, 0xe4, 0x39, 0x51, 0xa0, 0x29, 0x0b, 0x69, 0xb9, - 0xa1, 0x02, 0x70, 0xb2, 0x9e, 0xfe, 0x9d, 0x59, 0x60, 0x15, 0x1c, 0x12, 0xbe, 0x26, 0x07, 0xf6, - 0x34, 0x34, 0xcc, 0xc1, 0xb0, 0x75, 0xb5, 0xfb, 0x81, 0xa1, 0x17, 0x1a, 0xe2, 0x44, 0x8a, 0x69, - 0x80, 0xad, 0xb5, 0xf5, 0xa8, 0x18, 0xab, 0x75, 0xe8, 0x22, 0x37, 0x07, 0x43, 0x21, 0x38, 0xd7, - 0xd4, 0xd0, 0x0c, 0xb6, 0xc8, 0x5b, 0x6b, 0xeb, 0x09, 0x18, 0xce, 0xd4, 0x46, 0x9f, 0xd6, 0x60, - 0x8a, 0x88, 0x05, 0x78, 0xdd, 0xf0, 0x2d, 0xb1, 0xbe, 0xcb, 0xef, 0xdf, 0x72, 0x76, 0xa3, 0x65, - 0xcd, 0x75, 0xe7, 0x15, 0x85, 0x06, 0x4e, 0x50, 0x64, 0x6a, 0xac, 0xf8, 0x4d, 0x3f, 0x96, 0x67, - 0xa5, 0x57, 0xfc, 0x98, 0x50, 0x63, 0x8b, 0x2a, 0xe1, 0xe2, 0xf6, 0xe8, 0x1f, 0x6b, 0x70, 0x5e, - 0x42, 0x6d, 0xd7, 0xee, 0x0f, 0xfb, 0x98, 0x98, 0x8e, 0x61, 0xf7, 0x85, 0x4e, 0xfb, 0xc1, 0x07, - 0x37, 0xd2, 0x24, 0x7e, 0x2e, 0x76, 0xf2, 0x61, 0xb8, 0xa0, 0x4f, 0xe8, 0x9b, 0x1a, 0x3c, 0x11, - 0x81, 0xd6, 0xa8, 0x65, 0x39, 0xf4, 0x49, 0x1c, 0xae, 0x2c, 0xe6, 0x64, 0xa2, 0x94, 0x14, 0x7c, - 0xf3, 0xc1, 0xfe, 0xe2, 0x13, 0x2b, 0x47, 0xe0, 0xc6, 0x47, 0x52, 0x4f, 0x70, 0x4c, 0xd7, 0xdb, - 0x0c, 0x85, 0x12, 0xfc, 0xd0, 0x38, 0x86, 0xd2, 0xc0, 0x09, 0x8a, 0xe8, 0xb7, 0x34, 0x78, 0x44, - 0x2d, 0x50, 0x19, 0x86, 0x6b, 0xbf, 0x1f, 0x7a, 0x70, 0xbd, 0x49, 0x11, 0xe0, 0xfe, 0xa6, 0x02, - 0x20, 0x2e, 0xea, 0x16, 0x15, 0xc1, 0x7d, 0xc6, 0x9c, 0x5c, 0x43, 0x1e, 0xe3, 0x22, 0x98, 0xf3, - 0x6b, 0x80, 0x23, 0x18, 0xb5, 0x3e, 0x07, 0x9e, 0xb5, 0x66, 0x5b, 0xc1, 0x4d, 0xbb, 0x6f, 0x87, - 0x4c, 0x85, 0x1d, 0xe1, 0xf3, 0xb1, 0xe6, 0x59, 0x6b, 0x9d, 0x36, 0x2f, 0xc7, 0x89, 0x5a, 0xec, - 0xa6, 0x91, 0xdd, 0x37, 0x7a, 0x64, 0x6d, 0xe8, 0x38, 0x6b, 0xbe, 0xc7, 0x7c, 0x12, 0x6d, 0x62, - 0x58, 0x8e, 0xed, 0x92, 0x92, 0x2a, 0x2b, 0x5b, 0x72, 0x9d, 0x22, 0xa4, 0xb8, 0x98, 0x1e, 0x5a, - 0x02, 0xd8, 0x34, 0x6c, 0xa7, 0x7b, 0xd7, 0x18, 0xdc, 0x76, 0x17, 0xa6, 0x99, 0x18, 0x63, 0x86, - 0xdf, 0x55, 0x59, 0x8a, 0x95, 0x1a, 0x8c, 0xa1, 0xa8, 0x30, 0xc4, 0x84, 0xdf, 0x76, 0x5e, 0x98, - 0x79, 0x50, 0x0c, 0x15, 0x61, 0xe4, 0x13, 0x78, 0x43, 0xa1, 0x81, 0x13, 0x14, 0xd1, 0xe7, 0x35, - 0x98, 0x09, 0xf6, 0x82, 0x90, 0xf4, 0x65, 0x27, 0x66, 0x1f, 0x78, 0x27, 0x98, 0xc3, 0xa6, 0x9b, - 0xa0, 0x82, 0x53, 0x54, 0x91, 0x01, 0x8f, 0xb1, 0x89, 0xbd, 0xd6, 0xba, 0x6e, 0xf7, 0xb6, 0xe4, - 0x15, 0xa2, 0x35, 0xe2, 0x9b, 0xc4, 0x0d, 0x17, 0xe6, 0x18, 0xeb, 0x2c, 0x1e, 0xec, 0x2f, 0x3e, - 0xd6, 0x29, 0xae, 0x86, 0x0f, 0xc3, 0x81, 0x3e, 0x0a, 0x17, 0x04, 0xf8, 0xa6, 0x77, 0x37, 0x43, - 0x61, 0x9e, 0x51, 0x60, 0xf7, 0xba, 0x3a, 0x85, 0xb5, 0xf0, 0x21, 0x18, 0xa8, 0x8d, 0x10, 0x10, - 0x9f, 0x39, 0x5c, 0x89, 0xe4, 0x9f, 0x60, 0x01, 0x31, 0x3e, 0x60, 0x36, 0x42, 0x37, 0x0b, 0xc6, - 0x79, 0x6d, 0xf4, 0xfd, 0x1a, 0x37, 0x6e, 0x32, 0x6b, 0x12, 0x3d, 0x0f, 0xb3, 0x7d, 0xd2, 0xf7, - 0xfc, 0xbd, 0xe5, 0x28, 0x29, 0x92, 0x70, 0xb8, 0x31, 0x83, 0x75, 0x35, 0x09, 0xc2, 0xe9, 0xba, - 0x74, 0xdf, 0x64, 0x23, 0xb8, 0xda, 0x8d, 0xdb, 0xd7, 0xe2, 0x7d, 0xb3, 0x93, 0x82, 0xe1, 0x4c, - 0x6d, 0xd4, 0x82, 0x79, 0x51, 0xd6, 0xa1, 0x1a, 0x64, 0x70, 0xd5, 0x27, 0xd1, 0x99, 0x17, 0x55, - 0xc5, 0xe6, 0x3b, 0x69, 0x20, 0xce, 0xd6, 0xa7, 0xa3, 0xa0, 0x3f, 0xd4, 0x5e, 0x8c, 0xc6, 0xa3, - 0xb8, 0x95, 0x04, 0xe1, 0x74, 0xdd, 0x48, 0xc5, 0x4f, 0x74, 0x61, 0x2c, 0x1e, 0xc5, 0xad, 0x14, - 0x0c, 0x67, 0x6a, 0xeb, 0x7f, 0x36, 0x0a, 0x6f, 0x3a, 0xc6, 0x56, 0x86, 0xfa, 0xf9, 0xd3, 0x7d, - 0x84, 0x54, 0x59, 0x8a, 0x0e, 0xc9, 0x96, 0x3e, 0x30, 0x34, 0xdc, 0xd0, 0x0e, 0xf7, 0x8e, 0xf9, - 0x79, 0x06, 0x05, 0x9f, 0xe7, 0xe4, 0xf4, 0x8e, 0xfb, 0x39, 0x83, 0xa2, 0xcf, 0x79, 0x72, 0x92, - 0xc7, 0xff, 0xfc, 0xfd, 0xfc, 0xcf, 0x5f, 0x72, 0x56, 0x8f, 0x64, 0x97, 0x41, 0x01, 0xbb, 0x94, - 0x9c, 0xd5, 0x63, 0xb0, 0xd7, 0xbf, 0x1f, 0x85, 0x37, 0x1f, 0x67, 0x4f, 0x2d, 0xc9, 0x5f, 0x39, - 0xbb, 0xd6, 0x43, 0xe5, 0xaf, 0xa2, 0x58, 0xc7, 0x87, 0xc8, 0x5f, 0x39, 0x24, 0x1f, 0x36, 0x7f, - 0x15, 0xcd, 0xea, 0xc3, 0xe2, 0xaf, 0xa2, 0x59, 0x3d, 0x06, 0x7f, 0xfd, 0xef, 0xf4, 0xfe, 0x20, - 0xf7, 0xd1, 0x0e, 0x8c, 0x98, 0x83, 0x61, 0x49, 0x21, 0xc5, 0x4e, 0x3f, 0x5b, 0x6b, 0xeb, 0x98, - 0xe2, 0x40, 0x18, 0xc6, 0x39, 0xff, 0x94, 0x14, 0x41, 0x2c, 0x9a, 0x93, 0xb3, 0x24, 0x16, 0x98, - 0xe8, 0x54, 0x91, 0xc1, 0x16, 0xe9, 0x13, 0xdf, 0x70, 0xba, 0xa1, 0xe7, 0x1b, 0xbd, 0xb2, 0xd2, - 0x86, 0x4d, 0xd5, 0x4a, 0x0a, 0x17, 0xce, 0x60, 0xa7, 0x13, 0x32, 0xb0, 0xad, 0x92, 0xf2, 0x85, - 0x4d, 0xc8, 0x5a, 0xa7, 0x8d, 0x29, 0x0e, 0xfd, 0x37, 0x27, 0x41, 0xb9, 0x3e, 0x4a, 0xcd, 0x37, - 0xc3, 0x71, 0xbc, 0xbb, 0x6b, 0xbe, 0xbd, 0x63, 0x3b, 0xa4, 0x47, 0x2c, 0x79, 0xbf, 0x30, 0x10, - 0x87, 0xe4, 0x4c, 0x97, 0x5c, 0x2e, 0xaa, 0x84, 0x8b, 0xdb, 0x53, 0xcd, 0x76, 0xde, 0x4c, 0x5f, - 0xef, 0xaf, 0x74, 0xce, 0x97, 0x49, 0x16, 0xc0, 0x17, 0x54, 0xa6, 0x18, 0x67, 0xe9, 0xa2, 0x5f, - 0xd4, 0xb8, 0xef, 0x41, 0x3a, 0x5b, 0xc5, 0x47, 0xbb, 0xfe, 0xa0, 0x8e, 0x28, 0x62, 0x2f, 0x46, - 0xec, 0xcf, 0x4d, 0x52, 0x44, 0xbf, 0xae, 0xc1, 0xb9, 0xed, 0x3c, 0xbf, 0xa9, 0xf8, 0xb6, 0x6b, - 0xa5, 0xfb, 0x52, 0xe0, 0x89, 0xe5, 0xc7, 0xca, 0xb9, 0x15, 0x70, 0x7e, 0x4f, 0xe4, 0x3c, 0x49, - 0x47, 0x92, 0x90, 0x03, 0xe5, 0xe7, 0x29, 0xe5, 0x92, 0x8a, 0xe7, 0x49, 0x02, 0x70, 0x92, 0x22, - 0x7a, 0x05, 0x26, 0xb7, 0x23, 0xff, 0x9d, 0x30, 0xf5, 0xdb, 0xa5, 0xc9, 0x2b, 0x5e, 0x40, 0x7e, - 0x80, 0x2d, 0x0b, 0x71, 0x4c, 0x05, 0xd9, 0x30, 0xb1, 0xcd, 0xa5, 0x91, 0x30, 0xd1, 0x9b, 0xd5, - 0xad, 0x07, 0x6e, 0x27, 0x8a, 0x22, 0x1c, 0xe1, 0x57, 0x43, 0x85, 0xea, 0x47, 0xc4, 0x9d, 0x7e, - 0x55, 0x83, 0x73, 0x3b, 0xc4, 0x0f, 0x6d, 0x33, 0xed, 0xb8, 0x9e, 0xac, 0x60, 0xe2, 0xbc, 0x94, - 0x87, 0x91, 0xb3, 0x4a, 0x2e, 0x08, 0xe7, 0xf7, 0x81, 0x1a, 0x3c, 0xdc, 0xfd, 0xd8, 0x0d, 0x8d, - 0xd0, 0x36, 0xef, 0x78, 0xdb, 0xc4, 0xa5, 0xa3, 0x15, 0x09, 0x74, 0x81, 0xc9, 0x0f, 0x66, 0xf0, - 0xac, 0x14, 0x57, 0xc3, 0x87, 0xe1, 0xd0, 0xff, 0x5c, 0x83, 0x8c, 0xfb, 0x0d, 0xfd, 0x3d, 0x0d, - 0xa6, 0x36, 0x89, 0x11, 0x0e, 0x7d, 0x72, 0xcd, 0x08, 0xe5, 0x75, 0x94, 0x97, 0x1f, 0x88, 0xdb, - 0x6f, 0xe9, 0xaa, 0x82, 0x99, 0x1f, 0x34, 0xca, 0x8c, 0x35, 0x2a, 0x08, 0x27, 0xba, 0x70, 0xe1, - 0x7d, 0x30, 0x9f, 0x69, 0x78, 0xa2, 0xc3, 0xa0, 0xdf, 0x15, 0x0e, 0xdc, 0x74, 0xfe, 0xe4, 0x8f, - 0xc1, 0x98, 0x61, 0x59, 0x32, 0x47, 0xe3, 0xb3, 0x25, 0x0f, 0xd5, 0x2d, 0xf5, 0xde, 0x0f, 0xfb, - 0x89, 0x39, 0x5e, 0x74, 0x15, 0x90, 0x91, 0x38, 0x33, 0x5b, 0x8d, 0xef, 0x44, 0x30, 0xd7, 0xff, - 0x72, 0x06, 0x8a, 0x73, 0x5a, 0xe8, 0xef, 0x85, 0x99, 0x64, 0xc2, 0x82, 0x13, 0x04, 0x58, 0xeb, - 0xbf, 0xa2, 0x01, 0xca, 0xe6, 0x48, 0x42, 0x01, 0xd4, 0x45, 0x8d, 0xe8, 0x23, 0xaf, 0x94, 0x0d, - 0x96, 0x4d, 0xc4, 0x7e, 0xc7, 0xe1, 0xb9, 0xa2, 0x20, 0xc0, 0x92, 0x90, 0xfe, 0x97, 0x1a, 0xc4, - 0xb9, 0xe0, 0xd0, 0xbb, 0xa0, 0x61, 0x91, 0xc0, 0xf4, 0xed, 0x41, 0x18, 0x0f, 0x44, 0x46, 0x9b, - 0xb6, 0x63, 0x10, 0x56, 0xeb, 0x21, 0x1d, 0xc6, 0x43, 0x23, 0xd8, 0xee, 0xb4, 0x85, 0x6d, 0xca, - 0x34, 0x89, 0x3b, 0xac, 0x04, 0x0b, 0x48, 0x7c, 0xfb, 0x7f, 0xe4, 0x18, 0xb7, 0xff, 0xd1, 0xe6, - 0x03, 0x48, 0x75, 0x80, 0x8e, 0x4e, 0x73, 0xa0, 0xff, 0x9b, 0x1a, 0x24, 0xf3, 0xef, 0x95, 0x9d, - 0x82, 0x6c, 0x6e, 0x86, 0xda, 0x43, 0xcb, 0xcd, 0xf0, 0x36, 0x96, 0xab, 0x96, 0x67, 0x18, 0xe7, - 0x27, 0x65, 0x6a, 0x82, 0x59, 0x9e, 0x1e, 0x5c, 0xd6, 0x40, 0xcf, 0xa8, 0x31, 0xac, 0x93, 0xcd, - 0x37, 0x45, 0xeb, 0x82, 0x05, 0xa6, 0xde, 0x17, 0xd9, 0x27, 0xe4, 0xf8, 0x13, 0xe1, 0xaa, 0xef, - 0x12, 0x11, 0x98, 0x63, 0x89, 0x0c, 0x19, 0x51, 0x5a, 0x8d, 0xf9, 0x44, 0xc3, 0x38, 0x2c, 0x53, - 0xff, 0xfb, 0x1a, 0x4c, 0x88, 0x7c, 0x57, 0xc7, 0x08, 0x3d, 0xee, 0xc1, 0x18, 0xb3, 0x08, 0x2a, - 0x29, 0x4b, 0xdd, 0x2d, 0xcf, 0x0b, 0x13, 0x79, 0xbf, 0x58, 0xe0, 0x20, 0xfb, 0x17, 0x73, 0xfc, - 0xfa, 0x57, 0x47, 0xe1, 0x09, 0x51, 0x25, 0xa3, 0x09, 0xc8, 0x45, 0xb8, 0x07, 0x67, 0xc4, 0x67, - 0x6a, 0xfb, 0x86, 0x2d, 0x0f, 0x13, 0xcb, 0x19, 0x79, 0xe2, 0xa0, 0x39, 0x83, 0x0e, 0xe7, 0xd1, - 0xe0, 0xd9, 0x6d, 0x58, 0xf1, 0x75, 0x62, 0x38, 0xe1, 0x56, 0x44, 0xbb, 0x56, 0x25, 0xbb, 0x4d, - 0x16, 0x1f, 0xce, 0xa5, 0xc2, 0x0e, 0x33, 0x05, 0xa0, 0xe5, 0x13, 0x43, 0x3d, 0x49, 0xad, 0x10, - 0x67, 0xb8, 0x9a, 0x8b, 0x11, 0x17, 0x50, 0x62, 0xde, 0x32, 0x63, 0x97, 0x19, 0xdf, 0x98, 0x84, - 0xbe, 0xcd, 0x32, 0xb1, 0x51, 0x06, 0xe7, 0xe6, 0x72, 0x12, 0x84, 0xd3, 0x75, 0xd1, 0xb3, 0x30, - 0xc3, 0x0e, 0x87, 0xe3, 0xeb, 0xde, 0x63, 0x71, 0xc2, 0xf9, 0x5b, 0x09, 0x08, 0x4e, 0xd5, 0xd4, - 0xbf, 0xad, 0xc1, 0x94, 0xca, 0x40, 0xc7, 0x08, 0x50, 0xde, 0x51, 0x04, 0x76, 0x95, 0xd8, 0x59, - 0x95, 0xec, 0x31, 0x65, 0xf6, 0x99, 0x9c, 0x36, 0xec, 0x94, 0x90, 0xa4, 0x84, 0x7f, 0xa5, 0x53, - 0xc2, 0xcc, 0x4e, 0x22, 0x4f, 0x09, 0xd3, 0x10, 0x9c, 0x21, 0x8c, 0x5e, 0x86, 0x11, 0xd3, 0xb7, - 0xc5, 0xc4, 0xbc, 0xa7, 0x9c, 0x09, 0x84, 0x3b, 0xf1, 0x55, 0xa8, 0x16, 0xee, 0x60, 0x8a, 0x51, - 0xff, 0xed, 0x11, 0x68, 0x28, 0xe9, 0xf4, 0xd0, 0x6a, 0x15, 0x13, 0x3a, 0x46, 0x1f, 0x99, 0xd1, - 0xab, 0x30, 0xd2, 0x1b, 0x0c, 0x4b, 0xda, 0xd0, 0x12, 0xdd, 0x35, 0x8a, 0xae, 0x37, 0x18, 0xa2, - 0x97, 0xa4, 0x55, 0x5e, 0xce, 0x6e, 0x96, 0x01, 0xa5, 0x29, 0xcb, 0x3c, 0x62, 0xcf, 0xd1, 0x42, - 0xf6, 0x74, 0x61, 0x22, 0x10, 0x26, 0xfb, 0x58, 0x85, 0xfb, 0xa7, 0xca, 0x54, 0x0b, 0x1b, 0x9d, - 0xab, 0xfa, 0x91, 0x09, 0x1f, 0x11, 0xa1, 0x5a, 0xc0, 0x90, 0xdd, 0xdc, 0x60, 0x56, 0x4c, 0x9d, - 0x6b, 0x01, 0xeb, 0xac, 0x04, 0x0b, 0x88, 0xfe, 0x85, 0x1a, 0xa0, 0x2c, 0x42, 0xf4, 0x26, 0x18, - 0x63, 0xf7, 0xb8, 0xc4, 0x62, 0x53, 0x72, 0x4d, 0x19, 0x41, 0x80, 0x39, 0x0c, 0x75, 0xc5, 0xbd, - 0xbe, 0x72, 0x5f, 0x86, 0x9d, 0x4f, 0x0b, 0x7a, 0xca, 0x25, 0xc0, 0x68, 0x7f, 0x1a, 0x29, 0xdc, - 0x9f, 0xd6, 0x61, 0xa2, 0x6f, 0xbb, 0x2c, 0x2c, 0xa5, 0x9c, 0x53, 0x82, 0x1f, 0xa0, 0x71, 0x14, - 0x38, 0xc2, 0xa5, 0xff, 0xb8, 0x46, 0xb9, 0xd8, 0x76, 0x43, 0xe2, 0x1a, 0xae, 0x49, 0xd0, 0x3d, - 0x00, 0x63, 0x18, 0x7a, 0x7c, 0x9b, 0x17, 0xcc, 0xfc, 0xfe, 0x92, 0x1f, 0x4c, 0x62, 0x5d, 0x96, - 0x18, 0xf9, 0xc1, 0x56, 0xfc, 0x1b, 0x2b, 0xd4, 0x28, 0xed, 0xd0, 0xee, 0x93, 0x97, 0x6d, 0xd7, - 0xf2, 0xee, 0x8a, 0xf9, 0xad, 0x4c, 0xfb, 0x8e, 0xc4, 0xc8, 0x69, 0xc7, 0xbf, 0xb1, 0x42, 0x0d, - 0x7d, 0x10, 0x16, 0x98, 0xf9, 0xe3, 0xb2, 0x7c, 0xa5, 0xa2, 0x73, 0x9e, 0xe3, 0x44, 0x1b, 0x4f, - 0x9d, 0x65, 0x87, 0x5b, 0x68, 0x15, 0xd4, 0xc1, 0x85, 0xad, 0xf5, 0xef, 0x68, 0x70, 0x2e, 0x77, - 0x2e, 0xd0, 0x35, 0x98, 0x8f, 0x83, 0x1a, 0x54, 0x41, 0x59, 0x8f, 0x13, 0xf0, 0xde, 0x48, 0x57, - 0xc0, 0xd9, 0x36, 0x68, 0x55, 0x6a, 0x0b, 0xaa, 0x20, 0x16, 0x11, 0x11, 0x8f, 0x09, 0x54, 0x79, - 0xb2, 0x1a, 0xe7, 0xb5, 0xd3, 0x3f, 0x92, 0xe8, 0x70, 0x3c, 0x61, 0x74, 0x7d, 0x6c, 0x90, 0x9e, - 0x0c, 0x32, 0x97, 0xeb, 0xa3, 0x49, 0x0b, 0x31, 0x87, 0xa1, 0x4b, 0xea, 0xc5, 0x08, 0x29, 0x88, - 0xa2, 0xcb, 0x11, 0xfa, 0x10, 0x40, 0x84, 0x0f, 0xd9, 0x6e, 0x0f, 0xf5, 0xa0, 0x6e, 0x88, 0x77, - 0x5a, 0x04, 0xb3, 0x3d, 0x5f, 0xce, 0xd8, 0x12, 0x48, 0x78, 0xe4, 0x60, 0xf4, 0x0b, 0x4b, 0xe4, - 0xfa, 0x3f, 0xd2, 0xe0, 0x7c, 0xfe, 0x75, 0xa5, 0x63, 0xec, 0xb0, 0x7d, 0x68, 0xf8, 0x71, 0x33, - 0xc1, 0x99, 0x3f, 0xa7, 0x26, 0x8e, 0x51, 0x2e, 0xbe, 0x53, 0xed, 0xa3, 0xe5, 0x7b, 0x41, 0xf4, - 0x75, 0xd2, 0xb9, 0x64, 0xa4, 0x12, 0xaf, 0xf4, 0x04, 0xab, 0xf8, 0xf5, 0xcf, 0xd4, 0x00, 0x6e, - 0x91, 0xf0, 0xae, 0xe7, 0x6f, 0xd3, 0x39, 0x7a, 0x4d, 0x5d, 0x9b, 0xbb, 0x08, 0xa3, 0x03, 0xcf, - 0x0a, 0x84, 0xa0, 0x62, 0xf7, 0xd9, 0xd8, 0x89, 0x3c, 0x2b, 0x45, 0x8b, 0x30, 0xc6, 0xbc, 0xcd, - 0x62, 0x3b, 0x60, 0xca, 0x2f, 0x55, 0x78, 0x02, 0xcc, 0xcb, 0x79, 0x3a, 0x6e, 0x16, 0x97, 0x1b, - 0x08, 0x75, 0x5e, 0xa4, 0xe3, 0xe6, 0x65, 0x58, 0x42, 0xf5, 0xcf, 0x8e, 0x42, 0xe2, 0xa5, 0xa1, - 0xd8, 0x28, 0x1f, 0x7d, 0x48, 0x46, 0xf9, 0x07, 0x61, 0xc1, 0xf1, 0x0c, 0xab, 0x69, 0x38, 0x94, - 0xed, 0xfd, 0x2e, 0xff, 0x1e, 0x86, 0xdb, 0x23, 0xd1, 0x8b, 0x41, 0x4c, 0x04, 0xdc, 0x2c, 0xa8, - 0x83, 0x0b, 0x5b, 0xa3, 0xa1, 0xf2, 0xc0, 0x11, 0x55, 0x43, 0x56, 0x2b, 0xbf, 0xc4, 0xb4, 0xa4, - 0x06, 0x65, 0xcb, 0xbd, 0x39, 0xf9, 0x08, 0x12, 0xfa, 0xbc, 0x06, 0xe7, 0xc8, 0x6e, 0x48, 0x7c, - 0xd7, 0x70, 0xee, 0xf8, 0xc6, 0xe6, 0xa6, 0x6d, 0x26, 0x62, 0x9e, 0xd6, 0x0e, 0xf6, 0x17, 0xcf, - 0xad, 0xe4, 0x55, 0xb8, 0xbf, 0xbf, 0xf8, 0x8e, 0xec, 0x53, 0x63, 0x51, 0x08, 0x76, 0x6e, 0x13, - 0xc6, 0x8e, 0xf9, 0xe4, 0x2e, 0x3c, 0x03, 0x8d, 0x13, 0xc4, 0xeb, 0x26, 0x2e, 0x94, 0x7d, 0x7d, - 0x1c, 0x94, 0x00, 0xf8, 0x13, 0xe4, 0x91, 0xfe, 0x0d, 0x0d, 0xce, 0x9a, 0x8e, 0x4d, 0xdc, 0x30, - 0x15, 0xe5, 0xcc, 0x97, 0xc6, 0x4b, 0xe5, 0x42, 0xf3, 0x07, 0xc4, 0xed, 0xb4, 0x5b, 0x9e, 0xeb, - 0x12, 0x33, 0x6c, 0xe5, 0x60, 0xe7, 0xf6, 0x4e, 0x1e, 0x04, 0xe7, 0xf6, 0x86, 0x0d, 0x88, 0x95, - 0x77, 0xda, 0xea, 0x5d, 0xb1, 0x96, 0x28, 0xc3, 0x12, 0x8a, 0x9e, 0x86, 0x46, 0xcf, 0xf7, 0x86, - 0x83, 0xa0, 0xc5, 0xa2, 0xb1, 0xf8, 0x0a, 0x63, 0xea, 0xc4, 0xb5, 0xb8, 0x18, 0xab, 0x75, 0xd0, - 0x3b, 0x61, 0x8a, 0xff, 0x5c, 0xf3, 0xc9, 0xa6, 0xbd, 0x2b, 0x56, 0x1c, 0x0b, 0xee, 0xb8, 0xa6, - 0x94, 0xe3, 0x44, 0x2d, 0xf4, 0x56, 0x98, 0xb4, 0x83, 0x60, 0x48, 0xfc, 0x75, 0x7c, 0x53, 0x64, - 0x53, 0x64, 0x3e, 0xdc, 0x4e, 0x54, 0x88, 0x63, 0x38, 0xfa, 0x55, 0x0d, 0x66, 0x7c, 0xf2, 0xca, - 0xd0, 0xf6, 0x89, 0xc5, 0x88, 0x06, 0xe2, 0x1a, 0x42, 0xb7, 0xe2, 0xdd, 0x87, 0x25, 0x9c, 0xc0, - 0xca, 0x39, 0x5d, 0xba, 0x26, 0x92, 0x40, 0x9c, 0xea, 0x02, 0x9d, 0xab, 0xc0, 0xee, 0xb9, 0xb6, - 0xdb, 0x5b, 0x76, 0x7a, 0xc1, 0x42, 0x9d, 0xad, 0x5e, 0xae, 0x7a, 0xc5, 0xc5, 0x58, 0xad, 0x83, - 0xde, 0x0d, 0xd3, 0xc3, 0x80, 0xf2, 0x6e, 0x9f, 0xf0, 0x09, 0x9e, 0x8c, 0xc3, 0x24, 0xd7, 0x55, - 0x00, 0x4e, 0xd6, 0xa3, 0xd6, 0x5e, 0x54, 0x20, 0xa6, 0x19, 0x78, 0xc6, 0x07, 0xda, 0xcf, 0xf5, - 0x04, 0x04, 0xa7, 0x6a, 0x5e, 0x58, 0x86, 0x33, 0x39, 0xc3, 0x3c, 0xd1, 0x02, 0xf9, 0x76, 0x0d, - 0xde, 0x78, 0x24, 0x5b, 0xa2, 0xaf, 0x6b, 0xd0, 0x20, 0xbb, 0xa1, 0x6f, 0xc8, 0xa0, 0x4d, 0xfa, - 0x8d, 0x7a, 0x0f, 0x67, 0x11, 0x2c, 0xad, 0xc4, 0x94, 0xf8, 0x77, 0x93, 0x7b, 0x9e, 0x02, 0xc1, - 0x6a, 0x87, 0xa8, 0xd6, 0xce, 0x33, 0x82, 0xa8, 0xbe, 0x3b, 0xf1, 0x34, 0x8b, 0x80, 0x5c, 0x78, - 0x01, 0xe6, 0xd2, 0x98, 0x4f, 0x34, 0x55, 0xff, 0xa4, 0x06, 0x63, 0x6b, 0x8e, 0x71, 0x2a, 0xa9, - 0x31, 0x3f, 0x9e, 0x48, 0x49, 0x56, 0x2e, 0xd1, 0x1b, 0xeb, 0x6b, 0x61, 0x42, 0xc4, 0xad, 0x54, - 0x42, 0xc4, 0x17, 0x2b, 0xd0, 0x38, 0x3c, 0xff, 0xe1, 0x0f, 0x34, 0x98, 0x64, 0xf5, 0x4e, 0x21, - 0x4f, 0xc3, 0xc7, 0x92, 0x79, 0x1a, 0x9e, 0x2d, 0x3f, 0xa8, 0x82, 0xfc, 0x0c, 0x7f, 0x12, 0x0d, - 0x86, 0x65, 0xd8, 0xfa, 0x90, 0xfa, 0x16, 0x15, 0x1f, 0xcd, 0xe5, 0xbc, 0x84, 0x80, 0x37, 0x3d, - 0xd3, 0x70, 0x32, 0x59, 0x01, 0x0f, 0x7d, 0x90, 0xca, 0x85, 0x49, 0x22, 0xf2, 0xae, 0x44, 0xa3, - 0x29, 0xa7, 0xdb, 0x46, 0xd9, 0x5b, 0x62, 0x7a, 0x51, 0x49, 0x80, 0x63, 0x12, 0xfa, 0xef, 0xd6, - 0xa0, 0xa1, 0x7c, 0xcd, 0x9f, 0x4a, 0xc2, 0xc1, 0xab, 0xb9, 0x2f, 0xb7, 0xd4, 0x58, 0x50, 0xe6, - 0xf9, 0x13, 0xbc, 0xda, 0x12, 0x40, 0xc3, 0x8c, 0x73, 0x48, 0x57, 0x62, 0x70, 0x25, 0x17, 0xb5, - 0x08, 0x0e, 0x8f, 0x0b, 0xb0, 0x4a, 0x45, 0xff, 0xe7, 0x35, 0x98, 0x58, 0xf3, 0x3d, 0xfa, 0x8d, - 0x4f, 0x41, 0x40, 0x6c, 0x24, 0x04, 0x44, 0xc9, 0xc5, 0xcb, 0x7b, 0x5b, 0x28, 0x22, 0x3e, 0x91, - 0x12, 0x11, 0xcd, 0x4a, 0x54, 0x0e, 0x17, 0x12, 0x3f, 0xd4, 0xa0, 0x21, 0x6a, 0x9e, 0x82, 0x98, - 0x30, 0x92, 0x62, 0xe2, 0xb9, 0x2a, 0x03, 0x2b, 0x10, 0x14, 0x5f, 0xd1, 0x60, 0x5a, 0xd4, 0x58, - 0x25, 0xfd, 0x0d, 0xe2, 0xa3, 0xab, 0x30, 0x11, 0x0c, 0xd9, 0xb7, 0x14, 0x23, 0x7a, 0x4c, 0x15, - 0x15, 0xfe, 0x86, 0x61, 0xb2, 0x17, 0xc8, 0x78, 0x15, 0x25, 0x13, 0x29, 0x2f, 0xc0, 0x51, 0x63, - 0x6a, 0xd0, 0xf9, 0x9e, 0x93, 0xc9, 0x28, 0x81, 0x3d, 0x87, 0x60, 0x06, 0xa1, 0x76, 0x14, 0xfd, - 0x1b, 0x9d, 0x52, 0x31, 0x3b, 0x8a, 0x82, 0x03, 0xcc, 0xcb, 0xf5, 0x2f, 0x8c, 0xca, 0xd9, 0x66, - 0x72, 0xec, 0x3a, 0x4c, 0x9a, 0x3e, 0x31, 0x42, 0x62, 0x35, 0xf7, 0x8e, 0xd3, 0x39, 0xa6, 0xd0, - 0xb5, 0xa2, 0x16, 0x38, 0x6e, 0x4c, 0x55, 0x27, 0xf5, 0xe0, 0xa9, 0x16, 0xab, 0x99, 0x85, 0x87, - 0x4e, 0xcf, 0xc1, 0x98, 0x77, 0xd7, 0x95, 0xd1, 0x1d, 0x87, 0x12, 0x66, 0x43, 0xb9, 0x4d, 0x6b, - 0x63, 0xde, 0x48, 0xcd, 0x81, 0x32, 0x7a, 0x48, 0x0e, 0x94, 0x3e, 0x4c, 0xf4, 0xd9, 0x67, 0xa8, - 0x96, 0x96, 0x32, 0xf1, 0x45, 0xd5, 0x2c, 0xe1, 0x0c, 0x35, 0x8e, 0x68, 0x50, 0x25, 0x98, 0xea, - 0x69, 0xc1, 0xc0, 0x30, 0x89, 0xaa, 0x04, 0xdf, 0x8a, 0x0a, 0x71, 0x0c, 0x47, 0xf7, 0x92, 0xe9, - 0x75, 0x26, 0x2a, 0xb8, 0x39, 0x45, 0xff, 0x94, 0x8c, 0x3a, 0x7c, 0xf2, 0x0b, 0x53, 0xec, 0x7c, - 0x69, 0x54, 0xb2, 0xa9, 0x10, 0xfc, 0xf9, 0xcf, 0x67, 0x69, 0xa5, 0x9e, 0xcf, 0x7a, 0x07, 0x8c, - 0x0d, 0xb6, 0x8c, 0x20, 0xe2, 0xd5, 0x28, 0xa5, 0xfd, 0xd8, 0x1a, 0x2d, 0xbc, 0xbf, 0xbf, 0x38, - 0x25, 0x48, 0xb3, 0xdf, 0x98, 0xd7, 0x45, 0x43, 0x38, 0x13, 0x84, 0x86, 0x43, 0xba, 0xb6, 0x70, - 0x1f, 0x05, 0xa1, 0xd1, 0x1f, 0x94, 0xc8, 0x4c, 0xcf, 0xa3, 0x9f, 0xb3, 0xa8, 0x70, 0x1e, 0x7e, - 0xf4, 0x59, 0x0d, 0x16, 0x58, 0xf9, 0xf2, 0x30, 0xf4, 0xf8, 0x2b, 0x1e, 0x31, 0xf1, 0x93, 0x9f, - 0xdb, 0x32, 0x63, 0xbf, 0x5b, 0x80, 0x0f, 0x17, 0x52, 0x42, 0xaf, 0xc2, 0x39, 0xc7, 0x08, 0xc2, - 0x65, 0x33, 0xb4, 0x77, 0xec, 0x70, 0x2f, 0xee, 0xc2, 0xc9, 0x9f, 0x12, 0x63, 0xe1, 0x21, 0x37, - 0xf3, 0x90, 0xe1, 0x7c, 0x1a, 0xfa, 0xff, 0xd1, 0x00, 0x65, 0x59, 0x08, 0xf5, 0xa1, 0x6e, 0x91, - 0x4d, 0x63, 0xe8, 0x84, 0x91, 0x26, 0x50, 0x39, 0xf9, 0x93, 0x94, 0xce, 0x6d, 0x81, 0x18, 0x4b, - 0x12, 0x68, 0x00, 0x93, 0x77, 0xb7, 0xec, 0x90, 0x38, 0x76, 0x10, 0x3e, 0xa8, 0x64, 0x53, 0x52, - 0xf9, 0x79, 0x39, 0xc2, 0x8c, 0x63, 0x22, 0xfa, 0x2f, 0x8f, 0x40, 0xfd, 0x04, 0x6f, 0xb4, 0x0e, - 0x01, 0x89, 0xc4, 0x14, 0x54, 0x63, 0x22, 0x55, 0x9c, 0x66, 0x4c, 0xad, 0x69, 0x65, 0x90, 0xe1, - 0x1c, 0x02, 0xe8, 0x55, 0x38, 0x6b, 0xbb, 0x9b, 0xbe, 0x11, 0x84, 0xfe, 0xd0, 0x0c, 0x87, 0x3e, - 0xa9, 0x92, 0x13, 0x9f, 0x79, 0x1a, 0x3a, 0x39, 0xe8, 0x70, 0x2e, 0x11, 0xb4, 0x09, 0x13, 0x77, - 0x3d, 0x7f, 0x9b, 0x0a, 0xd0, 0xd1, 0x0a, 0x8f, 0x2e, 0xbd, 0xcc, 0x70, 0xc4, 0x92, 0x93, 0xff, - 0x0e, 0x70, 0x84, 0x5c, 0xff, 0x43, 0x0d, 0xc6, 0xf8, 0x6d, 0xbb, 0xd7, 0x87, 0x95, 0xc5, 0xfa, - 0x5a, 0x98, 0xe7, 0x99, 0xda, 0x3e, 0xac, 0xc6, 0xeb, 0xc5, 0xf6, 0x61, 0x9d, 0x2d, 0x50, 0x69, - 0xfe, 0x70, 0x44, 0x0c, 0x86, 0xe9, 0x0c, 0x1d, 0x38, 0x23, 0xd4, 0xdf, 0x9b, 0xf6, 0x26, 0xa1, - 0x0c, 0xd6, 0x36, 0xf6, 0x02, 0x71, 0xdb, 0x9d, 0x89, 0xde, 0x56, 0x16, 0x8c, 0xf3, 0xda, 0xa0, - 0xdf, 0xd1, 0xe8, 0xee, 0x1c, 0xfa, 0xb6, 0x59, 0x2d, 0x79, 0xb2, 0xec, 0xdc, 0xd2, 0x2a, 0xc7, - 0xc6, 0xdd, 0x07, 0xeb, 0xf1, 0x36, 0xcd, 0x4a, 0xef, 0xef, 0x2f, 0x2e, 0xe6, 0xb8, 0x27, 0x23, - 0x87, 0x3a, 0x9d, 0xda, 0xcf, 0xfc, 0xf8, 0xd0, 0x2a, 0xcc, 0xb9, 0x1f, 0x75, 0x19, 0x5d, 0x87, - 0xb1, 0xc0, 0xf4, 0x06, 0xe4, 0x24, 0x29, 0xe1, 0xe5, 0x0c, 0x77, 0x69, 0x4b, 0xcc, 0x11, 0x5c, - 0xf8, 0x04, 0x4c, 0xa9, 0x3d, 0xcf, 0x71, 0x4f, 0xb4, 0x55, 0xf7, 0xc4, 0x89, 0x4f, 0xf1, 0x54, - 0x77, 0xc6, 0xef, 0xd5, 0x40, 0x3c, 0x99, 0x78, 0x8c, 0x23, 0x8c, 0x4f, 0x44, 0x59, 0x54, 0xab, - 0xbc, 0x13, 0x99, 0x7e, 0x1a, 0x3e, 0x9e, 0x04, 0x35, 0x91, 0x2a, 0xf2, 0x64, 0xfa, 0xb2, 0x91, - 0x0a, 0x39, 0xab, 0xf9, 0xd0, 0x1e, 0x76, 0xc2, 0xb2, 0x1f, 0x6a, 0x30, 0x95, 0x48, 0x08, 0xd7, - 0x87, 0x11, 0x5f, 0xfa, 0x02, 0xca, 0x9e, 0xf1, 0x44, 0xd1, 0x4d, 0x8f, 0x1d, 0x52, 0x09, 0x53, - 0x3a, 0x32, 0x77, 0x5c, 0xed, 0x01, 0xe5, 0x8e, 0xd3, 0xbf, 0xac, 0xc1, 0xf9, 0x68, 0x40, 0xc9, - 0x44, 0x24, 0xe8, 0x32, 0xd4, 0x8d, 0x81, 0xcd, 0x3c, 0xbf, 0xaa, 0xf3, 0x7c, 0x79, 0xad, 0xc3, - 0xca, 0xb0, 0x84, 0xa2, 0xb7, 0x41, 0x3d, 0x62, 0x3d, 0xa1, 0xf9, 0x49, 0xb9, 0x25, 0x4f, 0xad, - 0x64, 0x0d, 0xf4, 0xa4, 0x92, 0xe9, 0x76, 0x2c, 0xde, 0xa8, 0x25, 0x61, 0x7e, 0xc6, 0xad, 0x7f, - 0x71, 0x04, 0xa6, 0xb9, 0xa7, 0xa4, 0x69, 0xbb, 0x96, 0xed, 0xf6, 0x4e, 0x61, 0x83, 0x48, 0xbc, - 0x35, 0x5e, 0x7b, 0x50, 0x6f, 0x8d, 0xdf, 0x80, 0xf1, 0x57, 0xa8, 0xa4, 0x8a, 0x18, 0xfc, 0x58, - 0x02, 0x43, 0x32, 0x2f, 0x13, 0x72, 0x01, 0x16, 0x28, 0x50, 0xa8, 0x3c, 0xf9, 0x5e, 0xe5, 0x32, - 0x79, 0x62, 0x6a, 0x65, 0xca, 0xea, 0xa9, 0xfc, 0xf7, 0xde, 0x59, 0x0e, 0xd6, 0x44, 0x8b, 0xd7, - 0x4b, 0x0e, 0xd6, 0x44, 0xa7, 0x0b, 0xf6, 0xb9, 0x67, 0xe0, 0x5c, 0xee, 0x6c, 0x1c, 0xad, 0x19, - 0xea, 0xdf, 0xad, 0x01, 0x7b, 0x8a, 0xf9, 0x14, 0x78, 0xf3, 0x63, 0x09, 0xe5, 0xe5, 0xf9, 0xf2, - 0x59, 0x60, 0x8b, 0xdc, 0x3f, 0xbd, 0x94, 0xfb, 0xe7, 0x7d, 0xe5, 0x49, 0x1c, 0xee, 0xfb, 0xf9, - 0x46, 0x0d, 0x80, 0x56, 0xe3, 0x8f, 0x56, 0x8b, 0xc0, 0x50, 0xce, 0xd1, 0x5a, 0x52, 0x7a, 0x64, - 0x39, 0xf1, 0x34, 0x0f, 0xaf, 0x75, 0xf9, 0xf2, 0xf0, 0x48, 0x7c, 0xc8, 0x90, 0x7c, 0x75, 0x38, - 0x29, 0x31, 0x46, 0x1f, 0x90, 0xc4, 0xd0, 0xbf, 0xab, 0x01, 0x7b, 0x91, 0xa6, 0x7d, 0xab, 0x8b, - 0xde, 0x0d, 0xd3, 0x36, 0x3f, 0xc5, 0x6d, 0xab, 0x29, 0xfb, 0xd8, 0x49, 0x53, 0x47, 0x05, 0xe0, - 0x64, 0x3d, 0xe4, 0x2a, 0xf3, 0x5a, 0xe5, 0xc5, 0x78, 0xd1, 0x91, 0x23, 0x65, 0xc4, 0x4f, 0x6a, - 0x30, 0x9b, 0xaa, 0x7b, 0x0c, 0xdb, 0xea, 0xe1, 0x88, 0x5c, 0x25, 0xd3, 0xfd, 0xc8, 0x29, 0x64, - 0xba, 0x97, 0x49, 0xe7, 0x47, 0x1f, 0x72, 0xd2, 0xf9, 0xef, 0x6b, 0xc0, 0x1e, 0x23, 0x3f, 0x05, - 0xf1, 0xfb, 0xd1, 0xa4, 0xf8, 0x7d, 0xa6, 0x34, 0xef, 0x14, 0x48, 0xdd, 0xbf, 0xd4, 0x80, 0xe5, - 0xa0, 0x16, 0xa1, 0x2b, 0x4a, 0x34, 0x88, 0x56, 0x10, 0x0d, 0xf2, 0x84, 0x08, 0x26, 0x49, 0x39, - 0x42, 0x95, 0x80, 0x92, 0xb7, 0x29, 0xf1, 0x22, 0x23, 0x49, 0x51, 0x92, 0x8d, 0x19, 0x41, 0xaf, - 0xc2, 0x74, 0xb0, 0xe5, 0x79, 0x61, 0xe4, 0x92, 0x10, 0x5f, 0xaf, 0x59, 0x3e, 0x96, 0x3b, 0x1a, - 0x0b, 0x5f, 0x9d, 0x5d, 0x15, 0x39, 0x4e, 0xd2, 0xd2, 0x7f, 0x5f, 0x0c, 0xff, 0x04, 0x4b, 0xe5, - 0x14, 0x45, 0xdf, 0x5b, 0x52, 0xa2, 0xaf, 0xe8, 0xd1, 0xf5, 0xdf, 0x16, 0xa3, 0x90, 0xa9, 0xc3, - 0x07, 0x30, 0xed, 0xa8, 0xef, 0x08, 0x09, 0xc6, 0x2c, 0xf5, 0x04, 0x91, 0xcc, 0x1e, 0x98, 0x28, - 0xc6, 0x49, 0x02, 0x54, 0x3e, 0x46, 0x9d, 0xe7, 0x8f, 0x23, 0xf3, 0x17, 0x31, 0xd8, 0x17, 0x58, - 0x53, 0x01, 0x38, 0x59, 0x4f, 0xff, 0x66, 0x0d, 0x2e, 0xf1, 0xbe, 0xb3, 0x28, 0xfa, 0x36, 0x19, - 0x10, 0xd7, 0x22, 0xae, 0xb9, 0xc7, 0xf4, 0x60, 0xcb, 0xeb, 0xa1, 0xcf, 0x6a, 0x50, 0x8f, 0x4e, - 0xcc, 0xc4, 0x40, 0x3e, 0x5c, 0x21, 0xfb, 0x7a, 0x01, 0x19, 0x79, 0x60, 0xc7, 0xd3, 0xd8, 0x89, - 0x5f, 0x58, 0x52, 0x46, 0xbb, 0x30, 0x36, 0xf0, 0xbd, 0x8d, 0xc8, 0x06, 0x7c, 0xf9, 0xc1, 0x77, - 0x61, 0x8d, 0xa2, 0xe7, 0x2b, 0x8e, 0xfd, 0x8b, 0x39, 0x41, 0x1d, 0xc3, 0x93, 0xc7, 0xea, 0x3a, - 0x7a, 0x2a, 0x9d, 0xb8, 0x59, 0x3a, 0x7c, 0x32, 0x69, 0xb0, 0x6e, 0x83, 0x7e, 0x74, 0x5f, 0x4e, - 0x82, 0xf0, 0x03, 0xf0, 0x66, 0x05, 0xe1, 0xca, 0xae, 0x49, 0x82, 0xa0, 0x65, 0x0c, 0x0c, 0x93, - 0x1a, 0xc0, 0xec, 0xc6, 0x32, 0x77, 0x4e, 0x9f, 0x00, 0xe5, 0xa7, 0x6b, 0xb0, 0xa8, 0xe0, 0x4c, - 0xc4, 0x70, 0x45, 0xd2, 0xe3, 0x6b, 0x1a, 0x34, 0x0c, 0xd7, 0xf5, 0x42, 0x43, 0x3d, 0x32, 0x25, - 0x55, 0x3f, 0x4e, 0x1e, 0xad, 0xa5, 0xe5, 0x98, 0x4e, 0x2a, 0x42, 0x42, 0x81, 0x60, 0xb5, 0x3b, - 0x17, 0x5e, 0x80, 0xb9, 0x74, 0xab, 0x13, 0x59, 0xba, 0x2d, 0x38, 0xaf, 0xf4, 0x8a, 0x1d, 0xc1, - 0xb4, 0xb6, 0x88, 0xb9, 0x1d, 0x9c, 0x64, 0x1e, 0x9b, 0x54, 0xb3, 0x96, 0x48, 0x94, 0xa7, 0x0d, - 0x9e, 0x82, 0x89, 0x1d, 0x3b, 0xb0, 0xa3, 0x4c, 0x04, 0x0a, 0x8e, 0x97, 0x78, 0x31, 0x8e, 0xe0, - 0xfa, 0x8b, 0x70, 0x46, 0xc5, 0xc1, 0x84, 0xe8, 0xad, 0xee, 0x49, 0x7a, 0xb1, 0x0a, 0x4f, 0x28, - 0x18, 0x72, 0xef, 0x4f, 0x9e, 0x04, 0xdd, 0xb7, 0xea, 0x91, 0xcc, 0x13, 0xb7, 0x6f, 0xbe, 0xa7, - 0xc1, 0xa3, 0xa4, 0x88, 0xed, 0x84, 0xdc, 0xf8, 0x50, 0x55, 0xbe, 0x28, 0xe4, 0x6b, 0x91, 0xbd, - 0xab, 0x08, 0x8c, 0x8b, 0xbb, 0x86, 0xee, 0x25, 0xde, 0xf5, 0xa8, 0x55, 0xb2, 0x26, 0x73, 0xbe, - 0xf2, 0x61, 0xaf, 0x7a, 0x20, 0x1f, 0xea, 0x81, 0xf8, 0x96, 0x95, 0xae, 0x79, 0xe7, 0xf0, 0x86, - 0x08, 0x12, 0x15, 0xbf, 0xb0, 0xa4, 0x83, 0xbe, 0xa5, 0xc1, 0x59, 0x27, 0x67, 0x7d, 0x89, 0x8d, - 0xff, 0xce, 0xc3, 0x58, 0xbb, 0xdc, 0xf1, 0x9e, 0x07, 0xc1, 0xb9, 0x7d, 0x41, 0xff, 0xb0, 0xf0, - 0x42, 0xf1, 0x58, 0x85, 0x67, 0xd5, 0x8e, 0x5a, 0x00, 0x25, 0xee, 0x16, 0xff, 0x02, 0x34, 0xbc, - 0x58, 0x2c, 0x88, 0x4b, 0xe0, 0x37, 0xaa, 0xf6, 0x4e, 0x91, 0x34, 0xfc, 0x28, 0x53, 0x29, 0xc0, - 0x2a, 0x41, 0xf4, 0x15, 0x0d, 0x90, 0x95, 0xd9, 0x3e, 0xc4, 0x71, 0x2a, 0x7e, 0xf0, 0x9b, 0x24, - 0x3f, 0xbb, 0xc9, 0x96, 0xe3, 0x9c, 0x5e, 0xe8, 0xff, 0x7a, 0x82, 0x2b, 0xea, 0xcc, 0x75, 0x6e, - 0xc2, 0xf8, 0x06, 0xb3, 0x75, 0x85, 0x30, 0x28, 0x6f, 0x59, 0x73, 0x93, 0x99, 0x5b, 0xa2, 0xfc, - 0x7f, 0x2c, 0x50, 0xa3, 0x25, 0x80, 0x0d, 0xc7, 0x33, 0xb7, 0x5b, 0x9d, 0x36, 0x8e, 0x94, 0x20, - 0xb6, 0x00, 0x9b, 0xb2, 0x14, 0x2b, 0x35, 0xd0, 0x47, 0x60, 0xc4, 0x92, 0xe6, 0xd1, 0x73, 0x55, - 0x2c, 0xc3, 0x38, 0x6c, 0x9f, 0x2e, 0x37, 0x8a, 0x15, 0x79, 0x50, 0x77, 0x85, 0x2e, 0x2c, 0x16, - 0x57, 0xf9, 0x67, 0x6b, 0xa4, 0x52, 0x2d, 0x75, 0xf9, 0xa8, 0x04, 0x4b, 0x22, 0x94, 0xa0, 0x34, - 0x76, 0xc7, 0x2a, 0x12, 0x94, 0x96, 0xee, 0x61, 0x7e, 0x88, 0x35, 0xd5, 0x6e, 0x1d, 0x3f, 0xbe, - 0xdd, 0x3a, 0x5d, 0x68, 0xb3, 0x6e, 0xc2, 0x78, 0xc8, 0x9f, 0xce, 0x9f, 0xa8, 0x10, 0x7d, 0x45, - 0x07, 0xc0, 0xde, 0xd6, 0x8f, 0x75, 0x76, 0xf1, 0xf0, 0xbe, 0xc0, 0x4e, 0xb9, 0x71, 0x87, 0xbd, - 0x2a, 0x26, 0x52, 0x0b, 0x96, 0xe7, 0x46, 0xfe, 0x38, 0x19, 0xe7, 0x46, 0xfe, 0x3f, 0x16, 0xa8, - 0xd1, 0x36, 0xb5, 0xc4, 0xf8, 0xfe, 0x28, 0x12, 0x21, 0x2c, 0x57, 0x5d, 0x91, 0x41, 0x14, 0xfc, - 0xcf, 0x7f, 0x61, 0x49, 0x00, 0x99, 0x30, 0x21, 0x5c, 0x1f, 0x22, 0x3f, 0xf6, 0x73, 0x55, 0xde, - 0x28, 0x88, 0xde, 0xdc, 0xe3, 0x57, 0x92, 0x23, 0xcc, 0xfa, 0x7f, 0x1a, 0xe5, 0x5e, 0xab, 0x9f, - 0x62, 0xbc, 0x5c, 0x0f, 0xea, 0x11, 0xb2, 0x4a, 0x6e, 0xc0, 0xe8, 0xa9, 0x17, 0x3e, 0xa1, 0xf2, - 0xe1, 0x17, 0x89, 0x1c, 0xb5, 0xf2, 0xae, 0x1a, 0x29, 0xe9, 0xd7, 0x8e, 0x75, 0xcd, 0x28, 0x3f, - 0xb0, 0x64, 0xb4, 0x54, 0x60, 0xc9, 0xf3, 0x30, 0x1b, 0xc5, 0xde, 0x59, 0x84, 0x1d, 0x6d, 0x89, - 0xe8, 0x74, 0x76, 0xc5, 0xb6, 0x95, 0x04, 0xe1, 0x74, 0x5d, 0xf4, 0x6d, 0x0d, 0xde, 0xcc, 0x23, - 0xe3, 0x5b, 0x74, 0x2b, 0x63, 0xef, 0xae, 0x91, 0xf8, 0xa1, 0xb7, 0x38, 0xe8, 0x62, 0xfc, 0xc4, - 0x41, 0x17, 0x97, 0x0f, 0xf6, 0x17, 0xdf, 0xdc, 0x3a, 0x06, 0x6e, 0x7c, 0xac, 0x1e, 0xe8, 0x37, - 0x60, 0x52, 0x2e, 0x61, 0x74, 0x49, 0x51, 0xd8, 0x63, 0x29, 0x7b, 0x83, 0xec, 0x71, 0xed, 0x7d, - 0x31, 0xa1, 0xbd, 0x73, 0xfb, 0xed, 0x25, 0x5a, 0x20, 0x14, 0x79, 0xfd, 0xbf, 0x6a, 0x9c, 0x67, - 0xc5, 0x1b, 0x85, 0x06, 0x34, 0xfa, 0x3c, 0xf3, 0x1c, 0xbb, 0x18, 0xa8, 0x95, 0xbf, 0x92, 0xb8, - 0x1a, 0xa3, 0xc1, 0x2a, 0x4e, 0xb4, 0x9b, 0x7d, 0x48, 0xf3, 0x5a, 0x45, 0xf9, 0x72, 0xec, 0xf7, - 0x34, 0x51, 0xb6, 0x8d, 0xfa, 0x02, 0xa1, 0x76, 0xf8, 0x0b, 0x84, 0x47, 0xbf, 0x20, 0xa5, 0x7f, - 0x6f, 0x04, 0x72, 0x5f, 0x0f, 0x40, 0x3a, 0x8c, 0xf3, 0x3b, 0x0e, 0xea, 0x13, 0xa3, 0xfc, 0x02, - 0x04, 0x16, 0x10, 0xe4, 0xc3, 0x59, 0x71, 0x81, 0xe0, 0x06, 0xd9, 0x8b, 0x9f, 0xb6, 0x14, 0x0b, - 0xf9, 0xf8, 0x61, 0xc4, 0x2c, 0x25, 0x55, 0x37, 0x85, 0x09, 0xe7, 0xe2, 0x46, 0xb7, 0xf9, 0x8d, - 0x1e, 0xd7, 0x62, 0x49, 0x5b, 0x62, 0x76, 0x13, 0x77, 0x14, 0x1f, 0x8d, 0x6e, 0xf4, 0x64, 0x2a, - 0xe0, 0xfc, 0x76, 0x68, 0x07, 0x50, 0xdf, 0xd8, 0x4d, 0x63, 0xab, 0x90, 0xb4, 0x7c, 0x35, 0x83, - 0x0d, 0xe7, 0x50, 0xa0, 0xeb, 0xdf, 0x30, 0x4d, 0x32, 0x08, 0x89, 0xc5, 0xa7, 0x35, 0xba, 0x24, - 0xcf, 0xd6, 0xff, 0x72, 0x12, 0x84, 0xd3, 0x75, 0x59, 0x28, 0x3f, 0xb3, 0x07, 0x5e, 0x27, 0x41, - 0x26, 0xac, 0xaf, 0x0f, 0x39, 0x94, 0x9f, 0xd3, 0x38, 0xfc, 0xa4, 0xe6, 0x43, 0x70, 0x9e, 0x55, - 0x5b, 0xb6, 0x98, 0x09, 0x10, 0x10, 0x6b, 0xd9, 0xb2, 0xd8, 0xf5, 0xba, 0xaa, 0x4f, 0x83, 0xea, - 0xff, 0xb2, 0x06, 0xb3, 0x0c, 0x77, 0x6b, 0x19, 0x0b, 0x2f, 0x05, 0x6a, 0x47, 0xe1, 0x83, 0x1c, - 0xeb, 0x52, 0x3a, 0x7c, 0xf0, 0x12, 0x6f, 0xe0, 0x13, 0x26, 0xd7, 0x0d, 0x27, 0x88, 0x5a, 0x26, - 0xe2, 0x09, 0x7d, 0x40, 0x8e, 0x11, 0x84, 0xfc, 0xa5, 0xa6, 0x48, 0xb8, 0x96, 0x08, 0x27, 0x64, - 0xfc, 0x79, 0x33, 0x83, 0x09, 0xe7, 0x60, 0x8f, 0x68, 0xb6, 0xbc, 0xfe, 0xc0, 0x21, 0x92, 0x66, - 0xad, 0x3c, 0xcd, 0x24, 0x26, 0x9c, 0x83, 0x5d, 0xff, 0x92, 0x06, 0x73, 0xe9, 0x09, 0x41, 0x77, - 0xa1, 0xee, 0x8b, 0x49, 0x11, 0xfc, 0xbd, 0x5a, 0x9e, 0x3b, 0x72, 0x66, 0x5a, 0x3c, 0x17, 0x22, - 0x7e, 0x61, 0x49, 0x4c, 0xff, 0x9d, 0x51, 0x58, 0x28, 0x6a, 0x84, 0x7e, 0x4d, 0x83, 0xf3, 0x66, - 0xbc, 0xef, 0x2d, 0x0f, 0xc3, 0x2d, 0xcf, 0xb7, 0x43, 0x9b, 0x44, 0x0f, 0x11, 0xb7, 0x2b, 0x74, - 0x52, 0xf2, 0x0f, 0x4f, 0xde, 0xd1, 0xca, 0xa5, 0x83, 0x0b, 0xe8, 0xa3, 0x4f, 0x02, 0x6c, 0xc7, - 0x09, 0xb1, 0x6a, 0x15, 0xde, 0x36, 0x65, 0xbd, 0x51, 0xb2, 0x66, 0x45, 0xbd, 0x62, 0x46, 0x98, - 0x52, 0xae, 0xd0, 0x63, 0x2f, 0xab, 0x06, 0x5b, 0x37, 0xc8, 0xde, 0xc0, 0xb0, 0xfd, 0x4a, 0x2f, - 0xab, 0xf2, 0xe5, 0xdc, 0xbd, 0x2e, 0x70, 0x25, 0xa9, 0x2b, 0xe5, 0x0a, 0x3d, 0xf4, 0xcb, 0x1a, - 0x4c, 0x73, 0x65, 0x4b, 0x44, 0xe9, 0x08, 0x49, 0x7e, 0xbb, 0x7c, 0x0f, 0x6e, 0xab, 0xe8, 0x64, - 0x27, 0x98, 0x33, 0x3e, 0x09, 0x4a, 0x12, 0xd6, 0x7f, 0xb1, 0x06, 0x8f, 0x14, 0x4c, 0x60, 0xc1, - 0x82, 0xd6, 0xfe, 0xca, 0x2d, 0xe8, 0x1f, 0x68, 0x30, 0xc9, 0xe6, 0xe0, 0xf5, 0x12, 0x3c, 0xc8, - 0x3a, 0x5b, 0x70, 0xbc, 0xf7, 0x07, 0x1a, 0xcc, 0x67, 0xf2, 0x1b, 0x1d, 0x63, 0xdb, 0x38, 0xc5, - 0x43, 0xae, 0x27, 0xd3, 0x0f, 0x82, 0x36, 0x72, 0x13, 0x9f, 0xbd, 0x0c, 0xd3, 0x89, 0xc3, 0x3d, - 0x79, 0xa9, 0x5d, 0xcb, 0xbd, 0xd4, 0xae, 0xde, 0x59, 0xaf, 0x1d, 0x7e, 0x67, 0xbd, 0x06, 0x17, - 0x8a, 0x17, 0xcd, 0x5f, 0x1b, 0xb6, 0x97, 0x4b, 0x3f, 0x2b, 0xbd, 0xfe, 0xda, 0xcc, 0xc1, 0xbf, - 0x98, 0x11, 0x4b, 0x9f, 0xf9, 0x0b, 0x3f, 0x06, 0xe3, 0x2c, 0xc7, 0x40, 0xb4, 0x3b, 0xbe, 0xb7, - 0x7c, 0xf2, 0x82, 0x80, 0xdb, 0x22, 0xfc, 0x7f, 0x2c, 0xd0, 0xa2, 0x36, 0xcc, 0x99, 0x8e, 0x37, - 0xb4, 0xd6, 0x7c, 0x6f, 0xd3, 0x76, 0xc8, 0xad, 0xd8, 0xec, 0x91, 0xb9, 0x92, 0x5a, 0x29, 0x38, - 0xce, 0xb4, 0x40, 0x5d, 0xd5, 0x83, 0xf8, 0x9e, 0xb2, 0x31, 0x0f, 0x3c, 0xfd, 0xad, 0xf4, 0x1c, - 0xfa, 0x00, 0x24, 0x5a, 0xc5, 0x51, 0xe8, 0xf9, 0x0b, 0x25, 0xf3, 0x40, 0x49, 0x61, 0x10, 0x29, - 0xec, 0xb2, 0x28, 0xc0, 0x0a, 0x15, 0x14, 0x40, 0x63, 0x2b, 0x7e, 0xd4, 0x55, 0xf8, 0x0f, 0x5f, - 0xac, 0xfa, 0xa2, 0x2c, 0xb7, 0x94, 0x95, 0x02, 0xac, 0x52, 0x41, 0x01, 0x57, 0x3c, 0xb8, 0xcf, - 0xa4, 0xd2, 0x0b, 0x80, 0xb1, 0x37, 0x26, 0x1e, 0x69, 0x5c, 0x86, 0x15, 0x32, 0x94, 0xa8, 0x2b, - 0x53, 0x85, 0x08, 0x57, 0x79, 0x39, 0xa2, 0x71, 0xc6, 0x91, 0x98, 0x68, 0x5c, 0x86, 0x15, 0x32, - 0x74, 0x7a, 0xfb, 0x71, 0x82, 0x18, 0xe1, 0x75, 0x7c, 0xb1, 0x6a, 0xa6, 0x1e, 0xe1, 0x88, 0x88, - 0x0b, 0xb0, 0x4a, 0x05, 0x79, 0x00, 0x7d, 0x99, 0x38, 0x46, 0xb8, 0x20, 0xcb, 0x8d, 0x34, 0xce, - 0x3f, 0xc3, 0x95, 0xa9, 0xf8, 0x37, 0x56, 0x48, 0xa0, 0x6d, 0xc5, 0x03, 0x0d, 0x15, 0x9c, 0x73, - 0xc7, 0xf2, 0x3e, 0xbf, 0x2b, 0x76, 0x6b, 0x34, 0xd8, 0xba, 0x7d, 0x4c, 0x71, 0x69, 0xdc, 0xdf, - 0x5f, 0x9c, 0x62, 0xc2, 0x24, 0xe3, 0xe2, 0x88, 0xc3, 0x3a, 0xa6, 0x0e, 0x0b, 0xeb, 0x40, 0xd7, - 0x60, 0x3e, 0x50, 0x23, 0x22, 0x99, 0x80, 0x98, 0x66, 0x4d, 0x64, 0xaa, 0xa1, 0x6e, 0xba, 0x02, - 0xce, 0xb6, 0xe1, 0x9b, 0x21, 0xb1, 0x58, 0xfb, 0x19, 0x75, 0x33, 0xe4, 0x65, 0x58, 0x42, 0x33, - 0x8f, 0xdd, 0xcf, 0x9e, 0xd6, 0x63, 0xf7, 0x9f, 0x54, 0x5f, 0x37, 0x9f, 0xab, 0x70, 0x1b, 0xa1, - 0xcc, 0xf3, 0xe6, 0xe9, 0xa7, 0xf6, 0xe7, 0x4f, 0xe9, 0xa9, 0x7d, 0xd4, 0x82, 0x79, 0xb2, 0x3b, - 0xf0, 0x82, 0xa1, 0x4f, 0x58, 0xba, 0x32, 0xf6, 0x85, 0x50, 0xec, 0xe1, 0x5d, 0x49, 0x03, 0x71, - 0xb6, 0x3e, 0xfa, 0x82, 0x06, 0x73, 0xfc, 0x85, 0x15, 0xba, 0x9d, 0x79, 0x2e, 0x71, 0xc3, 0x60, - 0xe1, 0x4c, 0x85, 0xd4, 0x7d, 0xdd, 0x14, 0x32, 0xe1, 0xec, 0x4a, 0x95, 0xe2, 0x0c, 0x51, 0xfd, - 0xdf, 0x6a, 0x00, 0xd2, 0xa1, 0x41, 0x4e, 0xc1, 0xcb, 0x43, 0x12, 0x5e, 0x9e, 0x56, 0x35, 0x0f, - 0x0c, 0x29, 0xbc, 0x4f, 0xf4, 0xc7, 0x1a, 0xcc, 0xc4, 0xd5, 0x4e, 0xc1, 0x2e, 0xb0, 0x92, 0x76, - 0xc1, 0xfb, 0x2a, 0x0e, 0xac, 0xc0, 0x38, 0xf8, 0x7f, 0x35, 0x75, 0x58, 0x4c, 0xe7, 0xb9, 0xab, - 0x9c, 0x6d, 0xf0, 0xd3, 0x94, 0xce, 0x03, 0x7b, 0xc6, 0x3e, 0x1e, 0x71, 0xce, 0x59, 0xc7, 0xa7, - 0x12, 0x0a, 0x47, 0x95, 0xeb, 0x48, 0x52, 0xbb, 0x88, 0x68, 0xf3, 0x29, 0x38, 0x4a, 0xfb, 0xf0, - 0x55, 0x01, 0xc4, 0x6f, 0x08, 0x2c, 0x97, 0xbc, 0x02, 0xa3, 0x0c, 0xf9, 0x50, 0xb1, 0xa3, 0x7f, - 0x63, 0x0a, 0x1a, 0x8a, 0x03, 0xf0, 0xa7, 0x72, 0x9a, 0x35, 0x84, 0x86, 0xe9, 0xb9, 0x41, 0xe8, - 0x1b, 0x4a, 0xce, 0x8b, 0xaa, 0x44, 0xa5, 0xe4, 0x6b, 0xc5, 0xa8, 0xb1, 0x4a, 0x87, 0xee, 0xd3, - 0x92, 0xd1, 0x46, 0x1e, 0xc4, 0x21, 0xda, 0x61, 0xcc, 0xf5, 0x4e, 0x80, 0x48, 0xe7, 0x23, 0xfc, - 0x79, 0x88, 0x7a, 0x9c, 0xab, 0xbc, 0x13, 0x5c, 0x97, 0x30, 0xac, 0xd4, 0x43, 0xaf, 0xc2, 0xb4, - 0xa3, 0x66, 0x29, 0x16, 0x1a, 0x69, 0xb9, 0xc0, 0xd4, 0x44, 0xbe, 0x63, 0xee, 0x89, 0x49, 0x14, - 0xe1, 0x24, 0x2d, 0xb4, 0x0d, 0x93, 0x4e, 0x94, 0x5a, 0x5b, 0xa8, 0xa5, 0x2f, 0x94, 0x26, 0xcc, - 0xb0, 0xf0, 0x33, 0x6f, 0xf9, 0x13, 0xc7, 0xf8, 0x29, 0xdf, 0xc9, 0x1f, 0xd5, 0xce, 0xbd, 0x63, - 0x6a, 0x92, 0xef, 0x64, 0x51, 0x80, 0x15, 0x2a, 0x05, 0xe7, 0x92, 0xf5, 0x52, 0xe7, 0x92, 0x43, - 0x38, 0xe3, 0x93, 0xd0, 0xdf, 0x6b, 0xed, 0x99, 0x2c, 0x3f, 0xbe, 0x1f, 0x32, 0x63, 0x71, 0xb2, - 0xdc, 0xdd, 0x75, 0x9c, 0x45, 0x85, 0xf3, 0xf0, 0xa3, 0x8b, 0x30, 0x4a, 0x75, 0x18, 0x91, 0x3a, - 0x8a, 0x79, 0x20, 0xa8, 0x86, 0x83, 0x59, 0x29, 0x7a, 0x17, 0x34, 0x42, 0x62, 0x6e, 0xb9, 0xb6, - 0x69, 0x38, 0x9d, 0xb6, 0x50, 0x10, 0x63, 0x95, 0x20, 0x06, 0x61, 0xb5, 0x1e, 0x6a, 0xc2, 0xc8, - 0xd0, 0xb6, 0x84, 0x66, 0xf8, 0xb3, 0xd2, 0x61, 0xdf, 0x69, 0xdf, 0xdf, 0x5f, 0x7c, 0x63, 0x7c, - 0x39, 0x52, 0x8e, 0xe4, 0xca, 0x60, 0xbb, 0x77, 0x25, 0xdc, 0x1b, 0x90, 0x60, 0x69, 0xbd, 0xd3, - 0xc6, 0xb4, 0x71, 0xde, 0x39, 0xed, 0xf4, 0x09, 0xce, 0x69, 0xbf, 0xa2, 0xc1, 0x19, 0x23, 0x7d, - 0xd6, 0x40, 0x82, 0x85, 0x99, 0x0a, 0x52, 0x39, 0xff, 0x00, 0x23, 0xce, 0x73, 0xb9, 0x9c, 0xa5, - 0x87, 0xf3, 0x3a, 0x81, 0x7c, 0x40, 0x7d, 0xbb, 0x27, 0x13, 0x8e, 0x8b, 0x4f, 0x3d, 0x5b, 0xce, - 0x2f, 0xb0, 0x9a, 0xc1, 0x84, 0x73, 0xb0, 0xa3, 0x5d, 0x68, 0x98, 0xb1, 0x3f, 0x9d, 0x3d, 0x50, - 0x57, 0x5a, 0xb7, 0x4a, 0x39, 0xe7, 0x45, 0x7a, 0x1b, 0xc5, 0x5b, 0xaf, 0x92, 0xd2, 0xef, 0x42, - 0x46, 0xef, 0x42, 0x26, 0x4c, 0x50, 0x9c, 0xed, 0x5b, 0x5d, 0xa1, 0x79, 0x3c, 0x57, 0x52, 0x5a, - 0x33, 0x1c, 0xdc, 0xdd, 0x26, 0x7e, 0xe0, 0x08, 0xb3, 0x7e, 0x13, 0x20, 0xd6, 0x5a, 0x2b, 0x9f, - 0x80, 0xff, 0x97, 0x31, 0x38, 0x57, 0x35, 0xe2, 0x93, 0x65, 0x19, 0x67, 0x2f, 0x4f, 0x2e, 0x6f, - 0x86, 0xc4, 0xbf, 0x7d, 0x7b, 0x55, 0xbe, 0xca, 0x57, 0x32, 0xcd, 0x79, 0xfc, 0x76, 0x69, 0x06, - 0x23, 0x2e, 0xa0, 0xc4, 0x34, 0x76, 0xf1, 0xbe, 0x17, 0xa6, 0x6a, 0xc5, 0xd0, 0x0f, 0x42, 0x71, - 0x87, 0x92, 0x6b, 0xec, 0x69, 0x20, 0xce, 0xd6, 0x4f, 0x23, 0xe1, 0xaf, 0x60, 0xd2, 0x6d, 0x49, - 0xcb, 0x22, 0xe1, 0x4f, 0x61, 0x66, 0xeb, 0xab, 0x48, 0xf8, 0x97, 0xa2, 0x56, 0xfd, 0x58, 0x16, - 0x89, 0x04, 0xe2, 0x6c, 0x7d, 0x64, 0xc1, 0x45, 0x9f, 0x98, 0x5e, 0xbf, 0x4f, 0x5c, 0x8b, 0xbf, - 0x50, 0x61, 0xf8, 0x3d, 0xdb, 0xbd, 0xea, 0x1b, 0xac, 0x22, 0xdb, 0x79, 0xb4, 0xe6, 0x13, 0x07, - 0xfb, 0x8b, 0x17, 0xf1, 0x21, 0xf5, 0xf0, 0xa1, 0x58, 0x50, 0x1f, 0x66, 0x87, 0x2c, 0x7b, 0xae, - 0xdf, 0x71, 0x43, 0xe2, 0xef, 0x18, 0x4e, 0xc9, 0xe7, 0x5d, 0x99, 0xfc, 0x5a, 0x4f, 0xa2, 0xc2, - 0x69, 0xdc, 0x68, 0x8f, 0x6e, 0x07, 0xa2, 0x3b, 0x0a, 0xc9, 0x7a, 0xf9, 0x3c, 0xfc, 0x38, 0x8b, - 0x0e, 0xe7, 0xd1, 0xd0, 0xff, 0x81, 0x06, 0x22, 0x06, 0x8b, 0xee, 0x0e, 0x8a, 0x93, 0xbd, 0x9e, - 0x72, 0xb0, 0x5f, 0x14, 0xf7, 0x4c, 0x6a, 0x31, 0x54, 0xb9, 0x63, 0xf2, 0x16, 0xe5, 0x72, 0xee, - 0x64, 0xbc, 0x95, 0x72, 0xcc, 0x4a, 0x06, 0xea, 0xbf, 0x01, 0x13, 0x03, 0xdf, 0xee, 0x1b, 0xfe, - 0x9e, 0xd0, 0x6a, 0xa6, 0x79, 0xa6, 0x31, 0xd3, 0xdf, 0x1b, 0x50, 0x75, 0x26, 0x82, 0xea, 0x3f, - 0xd4, 0x40, 0xb4, 0x66, 0x69, 0xcf, 0x8f, 0x95, 0x33, 0xfb, 0xc8, 0x48, 0x0c, 0x25, 0x6b, 0xf7, - 0x48, 0x51, 0xd6, 0xee, 0x87, 0x95, 0x02, 0xfb, 0x7b, 0x1a, 0xcc, 0x26, 0x6f, 0x4a, 0x07, 0xe8, - 0x49, 0x98, 0x10, 0xd9, 0x4c, 0x44, 0x3e, 0x04, 0x7e, 0x4d, 0x8c, 0x17, 0xe1, 0x08, 0x96, 0x74, - 0x35, 0x54, 0xb1, 0x34, 0xf2, 0x6f, 0x6c, 0x1f, 0xa1, 0xf3, 0xef, 0xcf, 0xc0, 0x38, 0x4f, 0xbf, - 0x81, 0x7e, 0x29, 0xf7, 0xee, 0xc2, 0xcd, 0x0a, 0x19, 0x3e, 0x4a, 0x5c, 0x51, 0x48, 0x64, 0x67, - 0xad, 0x1d, 0x9a, 0x9d, 0xb5, 0xcb, 0xb3, 0xf2, 0x57, 0xf1, 0x34, 0xb7, 0x70, 0x47, 0xbc, 0x3c, - 0x27, 0x32, 0xf2, 0xa3, 0x61, 0xc2, 0x01, 0x3b, 0x5a, 0x61, 0x6b, 0xe5, 0x53, 0xa0, 0xb8, 0x61, - 0x67, 0x0e, 0x71, 0xc1, 0xc6, 0xe9, 0x0e, 0xc6, 0x2a, 0x84, 0x47, 0x89, 0x59, 0x3f, 0x46, 0xba, - 0x03, 0xb9, 0x9a, 0xc6, 0x0b, 0x57, 0x53, 0x0f, 0x26, 0xc4, 0x7a, 0x10, 0xd2, 0xf1, 0xb9, 0x2a, - 0x39, 0xf7, 0x95, 0x34, 0x59, 0xbc, 0x00, 0x47, 0xd8, 0xe9, 0x9e, 0xdb, 0x37, 0x76, 0xed, 0xfe, - 0xb0, 0xcf, 0x64, 0xe2, 0x98, 0x5a, 0x95, 0x15, 0xe3, 0x08, 0xce, 0xaa, 0xf2, 0xb8, 0x32, 0xa6, - 0x4d, 0xab, 0x55, 0xc5, 0xe3, 0xa9, 0x11, 0x1c, 0x7d, 0x18, 0xea, 0x7d, 0x63, 0xb7, 0x3b, 0xf4, - 0x7b, 0x44, 0x78, 0x5e, 0x8b, 0xbd, 0x3d, 0xc3, 0xd0, 0x76, 0x96, 0xa8, 0x1d, 0x18, 0xfa, 0x4b, - 0x1d, 0x37, 0xbc, 0xed, 0x77, 0x43, 0x5f, 0x26, 0x02, 0x5f, 0x15, 0x58, 0xb0, 0xc4, 0x87, 0x1c, - 0x98, 0xe9, 0x1b, 0xbb, 0xeb, 0xae, 0x21, 0xdf, 0x78, 0x6c, 0x94, 0xa4, 0xc0, 0x4e, 0x24, 0x57, - 0x13, 0xb8, 0x70, 0x0a, 0x77, 0xce, 0xe1, 0xe7, 0xd4, 0xc3, 0x3a, 0xfc, 0x5c, 0x96, 0xd1, 0xc6, - 0xd3, 0x8c, 0x0d, 0x1f, 0xcd, 0x0b, 0x40, 0x3b, 0x3c, 0x90, 0xf8, 0x63, 0x32, 0x90, 0x78, 0xa6, - 0xc2, 0x31, 0xd5, 0x21, 0x41, 0xc4, 0x3b, 0xd0, 0xb0, 0x8c, 0xd0, 0xe0, 0xa5, 0xc1, 0xc2, 0x6c, - 0x05, 0x97, 0x54, 0x5b, 0xe2, 0x51, 0x9e, 0x45, 0x8a, 0x71, 0x63, 0x95, 0x10, 0xba, 0xcd, 0xdf, - 0x00, 0x74, 0x48, 0x18, 0x57, 0x61, 0x0e, 0xd2, 0x39, 0xee, 0x02, 0x8f, 0x5e, 0xec, 0xcb, 0x54, - 0xc0, 0xf9, 0xed, 0xa8, 0x9a, 0xca, 0xef, 0x07, 0xcf, 0xc7, 0x09, 0xfa, 0x12, 0x39, 0x50, 0xfe, - 0x76, 0x9e, 0x27, 0x15, 0x55, 0xb8, 0x51, 0xc1, 0xe5, 0x43, 0x59, 0x7f, 0x2a, 0xfa, 0xa7, 0x1a, - 0x2c, 0xf4, 0x0b, 0x5e, 0x1d, 0x12, 0x1e, 0xde, 0xf5, 0x2a, 0x32, 0xa2, 0xf0, 0x29, 0x23, 0xfe, - 0x8e, 0xfe, 0x51, 0xb5, 0x70, 0x61, 0xe7, 0xaa, 0xde, 0x7b, 0xab, 0x92, 0x1c, 0xe6, 0x37, 0x34, - 0x98, 0x4b, 0x6f, 0x05, 0xea, 0xab, 0x85, 0xda, 0x43, 0x7e, 0xb5, 0x50, 0x89, 0x67, 0xa8, 0x1d, - 0x12, 0xcf, 0xf0, 0x3c, 0x9c, 0xcf, 0xe7, 0x0e, 0xaa, 0x9c, 0xb1, 0xb7, 0x42, 0x85, 0x41, 0x14, - 0xe7, 0xbd, 0xa7, 0x85, 0x98, 0xc3, 0x9a, 0x4b, 0xdf, 0xff, 0xc9, 0xe3, 0x6f, 0xf8, 0xa3, 0x9f, - 0x3c, 0xfe, 0x86, 0x1f, 0xfd, 0xe4, 0xf1, 0x37, 0x7c, 0xfa, 0xe0, 0x71, 0xed, 0xfb, 0x07, 0x8f, - 0x6b, 0x7f, 0x74, 0xf0, 0xb8, 0xf6, 0xa3, 0x83, 0xc7, 0xb5, 0xff, 0x70, 0xf0, 0xb8, 0xf6, 0x77, - 0xff, 0xe3, 0xe3, 0x6f, 0xf8, 0x70, 0x3d, 0xea, 0xf9, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xe9, - 0xf3, 0x59, 0xd0, 0x9d, 0xcb, 0x00, 0x00, + // 10650 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, 0xdf, 0x90, 0xdc, 0x65, 0xed, 0xc7, 0xf1, 0xf6, 0x6e, 0x97, + 0xa7, 0xd6, 0x9d, 0x7e, 0x77, 0x3f, 0xc9, 0x5c, 0x9f, 0x4e, 0xb2, 0x74, 0xa7, 0xbb, 0xd3, 0x71, + 0x66, 0xb8, 0xbb, 0xa3, 0x5d, 0xee, 0x52, 0x35, 0xcb, 0x3b, 0x9d, 0x64, 0x48, 0x6a, 0x76, 0x17, + 0x87, 0x2d, 0xf6, 0x74, 0xcf, 0x75, 0xf7, 0x70, 0xc9, 0x3d, 0xc5, 0x92, 0x65, 0x7d, 0xd8, 0x12, + 0x12, 0x24, 0x30, 0x02, 0x19, 0x92, 0x20, 0xcb, 0x82, 0x11, 0x28, 0x80, 0x0d, 0x19, 0x02, 0xac, + 0x20, 0x5f, 0x0e, 0x60, 0xff, 0x61, 0x41, 0x0e, 0x14, 0x23, 0x70, 0x0c, 0xc5, 0x70, 0xa8, 0x88, + 0xf9, 0xb0, 0xf3, 0x85, 0x7c, 0x21, 0xff, 0x2c, 0x9c, 0x20, 0xa8, 0x8f, 0xae, 0xae, 0xfe, 0x1a, + 0x92, 0xdd, 0xbb, 0x94, 0x2e, 0xf6, 0x5f, 0xe4, 0xd4, 0xab, 0x7a, 0xaf, 0xaa, 0xba, 0xea, 0xd5, + 0x7b, 0xaf, 0x5e, 0xbd, 0x07, 0xad, 0x9e, 0x1d, 0x6e, 0x0d, 0x37, 0x96, 0x4c, 0xaf, 0x7f, 0xb9, + 0x67, 0xf8, 0x16, 0x71, 0x89, 0x1f, 0xff, 0x33, 0xd8, 0xee, 0x5d, 0x36, 0x06, 0x76, 0x70, 0xd9, + 0xf4, 0x7c, 0x72, 0x79, 0xe7, 0x69, 0xc3, 0x19, 0x6c, 0x19, 0x4f, 0x5f, 0xee, 0x51, 0xa0, 0x11, + 0x12, 0x6b, 0x69, 0xe0, 0x7b, 0xa1, 0x87, 0x9e, 0x89, 0x91, 0x2c, 0x45, 0x6d, 0xe3, 0x7f, 0x06, + 0xdb, 0xbd, 0x25, 0x8a, 0x64, 0x89, 0x22, 0x59, 0x8a, 0x90, 0x5c, 0x68, 0x1e, 0x8b, 0xf2, 0x06, + 0x09, 0xb3, 0x84, 0x2f, 0xfc, 0x94, 0x8a, 0xc3, 0xeb, 0x79, 0x97, 0x59, 0xf1, 0xc6, 0x70, 0x93, + 0xfd, 0x62, 0x3f, 0xd8, 0x7f, 0xa2, 0xfa, 0x53, 0xdb, 0xef, 0x09, 0x96, 0x6c, 0x8f, 0x22, 0xbe, + 0x6c, 0x0c, 0x43, 0x2f, 0x30, 0x0d, 0xc7, 0x76, 0x7b, 0x97, 0x77, 0xb2, 0x98, 0x75, 0xa5, 0xaa, + 0xe8, 0xc2, 0xc8, 0x3a, 0xfe, 0x86, 0x61, 0xe6, 0xd5, 0x79, 0x67, 0x5c, 0xa7, 0x6f, 0x98, 0x5b, + 0xb6, 0x4b, 0xfc, 0xbd, 0x68, 0x70, 0x97, 0x7d, 0x12, 0x78, 0x43, 0xdf, 0x24, 0xc7, 0x6a, 0x15, + 0x5c, 0xee, 0x93, 0xd0, 0xc8, 0xa3, 0x75, 0xb9, 0xa8, 0x95, 0x3f, 0x74, 0x43, 0xbb, 0x9f, 0x25, + 0xf3, 0x33, 0x87, 0x35, 0x08, 0xcc, 0x2d, 0xd2, 0x37, 0x32, 0xed, 0x9e, 0x29, 0x6a, 0x37, 0x0c, + 0x6d, 0xe7, 0xb2, 0xed, 0x86, 0x41, 0xe8, 0xa7, 0x1b, 0xe9, 0xef, 0x80, 0x89, 0x65, 0xcb, 0xf2, + 0x5c, 0xf4, 0x14, 0x4c, 0x11, 0xd7, 0xd8, 0x70, 0x88, 0xb5, 0xa0, 0x3d, 0xa6, 0x3d, 0x59, 0x6f, + 0x9e, 0xfa, 0xee, 0xfe, 0xe2, 0x9b, 0x0e, 0xf6, 0x17, 0xa7, 0x56, 0x78, 0x31, 0x8e, 0xe0, 0xfa, + 0x97, 0x6a, 0x30, 0xc9, 0x1a, 0x05, 0xe8, 0x97, 0x35, 0x38, 0xb3, 0x3d, 0xdc, 0x20, 0xbe, 0x4b, + 0x42, 0x12, 0xb4, 0x8d, 0x60, 0x6b, 0xc3, 0x33, 0x7c, 0x8e, 0xa2, 0xf1, 0x8e, 0x6b, 0x4b, 0x25, + 0x96, 0xe0, 0xd2, 0xf5, 0x2c, 0xbe, 0xe6, 0x43, 0x07, 0xfb, 0x8b, 0x67, 0x72, 0x00, 0x38, 0x8f, + 0x3a, 0xba, 0x03, 0x33, 0x6e, 0xcf, 0x76, 0x77, 0x3b, 0x6e, 0xcf, 0x27, 0x41, 0xb0, 0x50, 0x63, + 0xbd, 0x59, 0x2e, 0xd5, 0x9b, 0x9b, 0x0a, 0xa2, 0xe6, 0xe9, 0x83, 0xfd, 0xc5, 0x19, 0xb5, 0x04, + 0x27, 0x08, 0xe9, 0x9f, 0xd3, 0xe0, 0xd4, 0xb2, 0xd5, 0xb7, 0x83, 0xc0, 0xf6, 0xdc, 0x35, 0x67, + 0xd8, 0xb3, 0x5d, 0xf4, 0x18, 0x8c, 0xbb, 0x46, 0x9f, 0xb0, 0x29, 0x99, 0x6e, 0xce, 0x88, 0x59, + 0x1d, 0xbf, 0x69, 0xf4, 0x09, 0x66, 0x10, 0xf4, 0x01, 0x98, 0x34, 0x3d, 0x77, 0xd3, 0xee, 0x89, + 0x8e, 0xfe, 0xd4, 0x12, 0xff, 0x92, 0x4b, 0xea, 0x97, 0x64, 0xfd, 0x13, 0x2b, 0x60, 0x09, 0x1b, + 0x77, 0x56, 0x76, 0x43, 0xe2, 0x52, 0x32, 0x4d, 0x38, 0xd8, 0x5f, 0x9c, 0x6c, 0x31, 0x04, 0x58, + 0x20, 0xd2, 0xaf, 0x40, 0x7d, 0xd9, 0x21, 0x7e, 0x68, 0xbb, 0x3d, 0xf4, 0x1c, 0xcc, 0x91, 0xbe, + 0x61, 0x3b, 0x98, 0x98, 0xc4, 0xde, 0x21, 0x7e, 0xb0, 0xa0, 0x3d, 0x36, 0xf6, 0xe4, 0x74, 0x13, + 0x1d, 0xec, 0x2f, 0xce, 0xad, 0x24, 0x20, 0x38, 0x55, 0x53, 0xff, 0xb4, 0x06, 0x8d, 0xe5, 0xa1, + 0x65, 0x87, 0x1c, 0x3f, 0x0a, 0xa0, 0x61, 0xd0, 0x9f, 0x6b, 0x9e, 0x63, 0x9b, 0x7b, 0xe2, 0x33, + 0xbf, 0x54, 0x6a, 0x62, 0x97, 0x63, 0x3c, 0xcd, 0x53, 0x07, 0xfb, 0x8b, 0x0d, 0xa5, 0x00, 0xab, + 0x54, 0xf4, 0x2d, 0x50, 0x61, 0xe8, 0x55, 0x98, 0xe1, 0xa3, 0x5c, 0x35, 0x06, 0x98, 0x6c, 0x8a, + 0x4e, 0xbc, 0x45, 0x99, 0xb4, 0x88, 0xd2, 0xd2, 0xad, 0x8d, 0x8f, 0x13, 0x33, 0xc4, 0x64, 0x93, + 0xf8, 0xc4, 0x35, 0x09, 0xff, 0x7e, 0x2d, 0xa5, 0x31, 0x4e, 0xa0, 0xd2, 0x7f, 0xa8, 0xc1, 0xe9, + 0xe5, 0x1d, 0xc3, 0x76, 0x8c, 0x0d, 0xdb, 0xb1, 0xc3, 0xbd, 0x0f, 0x79, 0x2e, 0x39, 0xc2, 0x07, + 0x5c, 0x87, 0x87, 0x86, 0xae, 0xc1, 0xdb, 0x39, 0x64, 0x95, 0x7f, 0xb2, 0xdb, 0x7b, 0x03, 0x42, + 0x97, 0x1e, 0x9d, 0xea, 0x47, 0x0e, 0xf6, 0x17, 0x1f, 0x5a, 0xcf, 0xaf, 0x82, 0x8b, 0xda, 0x22, + 0x0c, 0xe7, 0x15, 0xd0, 0xcb, 0x9e, 0x33, 0xec, 0x0b, 0xac, 0x63, 0x0c, 0xeb, 0x85, 0x83, 0xfd, + 0xc5, 0xf3, 0xeb, 0xb9, 0x35, 0x70, 0x41, 0x4b, 0xfd, 0x7b, 0x35, 0x98, 0x69, 0x1a, 0xe6, 0xf6, + 0x70, 0xd0, 0x1c, 0x9a, 0xdb, 0x24, 0x44, 0x1f, 0x83, 0x3a, 0xe5, 0x5c, 0x96, 0x11, 0x1a, 0x62, + 0x26, 0x7f, 0xba, 0x70, 0xf9, 0xb1, 0xaf, 0x48, 0x6b, 0xc7, 0x73, 0xbb, 0x4a, 0x42, 0xa3, 0x89, + 0xc4, 0x9c, 0x40, 0x5c, 0x86, 0x25, 0x56, 0xd4, 0x83, 0xf1, 0x60, 0x40, 0x4c, 0xb1, 0xb8, 0x57, + 0x4a, 0x2d, 0x16, 0xb5, 0xcb, 0xdd, 0x01, 0x31, 0xe3, 0xcf, 0x40, 0x7f, 0x61, 0x46, 0x00, 0x79, + 0x30, 0x19, 0x84, 0x46, 0x38, 0xa4, 0xf3, 0x43, 0x49, 0x5d, 0xad, 0x4e, 0x8a, 0xa1, 0x6b, 0xce, + 0x09, 0x62, 0x93, 0xfc, 0x37, 0x16, 0x64, 0xf4, 0x1f, 0x68, 0x70, 0x5a, 0xad, 0x7e, 0xc3, 0x0e, + 0x42, 0xf4, 0xb3, 0x99, 0x09, 0x5d, 0x3a, 0xda, 0x84, 0xd2, 0xd6, 0x6c, 0x3a, 0x4f, 0x0b, 0x72, + 0xf5, 0xa8, 0x44, 0x99, 0xcc, 0x4d, 0x98, 0xb0, 0x43, 0xd2, 0xe7, 0x0b, 0xab, 0x2c, 0x4f, 0x53, + 0xfb, 0xdc, 0x9c, 0x15, 0xd4, 0x26, 0x3a, 0x14, 0x2f, 0xe6, 0xe8, 0xf5, 0x8f, 0xc1, 0x59, 0xb5, + 0xd6, 0x9a, 0xef, 0xed, 0xd8, 0x16, 0xf1, 0xe9, 0x66, 0x08, 0xf7, 0x06, 0x99, 0xcd, 0x40, 0x17, + 0x17, 0x66, 0x10, 0xf4, 0x56, 0x98, 0xf4, 0x49, 0xcf, 0xf6, 0x5c, 0xf6, 0xc1, 0xa7, 0xe3, 0xc9, + 0xc3, 0xac, 0x14, 0x0b, 0xa8, 0xfe, 0x1f, 0x6b, 0xc9, 0xc9, 0xa3, 0x1f, 0x12, 0xdd, 0x81, 0xfa, + 0x40, 0x90, 0x12, 0x93, 0xd7, 0xa9, 0x3c, 0xc2, 0xa8, 0xef, 0xf1, 0xbc, 0x46, 0x25, 0x58, 0x12, + 0x43, 0x36, 0xcc, 0x45, 0xff, 0xb7, 0x2a, 0xf0, 0x62, 0xc6, 0x53, 0xd7, 0x12, 0x88, 0x70, 0x0a, + 0x31, 0xba, 0x0d, 0xd3, 0x01, 0x31, 0x7d, 0x42, 0xf9, 0x92, 0x58, 0xa9, 0xb9, 0xcc, 0xab, 0x1b, + 0x55, 0x12, 0xcc, 0x6b, 0x5e, 0x74, 0x7f, 0x5a, 0x02, 0x70, 0x8c, 0x08, 0x3d, 0x0a, 0xe3, 0x01, + 0x21, 0xd6, 0xc2, 0x38, 0x9b, 0xf4, 0x3a, 0xdb, 0x1a, 0x84, 0x58, 0x98, 0x95, 0xea, 0xdf, 0x18, + 0x07, 0x94, 0x5d, 0xd8, 0xea, 0xa8, 0x79, 0x89, 0x98, 0xf4, 0x2a, 0xa3, 0x16, 0x7b, 0x24, 0x85, + 0x18, 0xbd, 0x0e, 0xb3, 0x8e, 0x11, 0x84, 0xb7, 0x06, 0x54, 0xfc, 0x88, 0x56, 0x47, 0xe3, 0x1d, + 0xcd, 0x52, 0x9f, 0xf7, 0x86, 0x8a, 0xa9, 0x39, 0x7f, 0xb0, 0xbf, 0x38, 0x9b, 0x28, 0xc2, 0x49, + 0x5a, 0x68, 0x1b, 0xa6, 0x69, 0xc1, 0x8a, 0xef, 0x7b, 0xbe, 0x98, 0xf2, 0x17, 0x4b, 0x13, 0x66, + 0x58, 0x9a, 0xb3, 0xf4, 0x4b, 0xc8, 0x9f, 0x38, 0xc6, 0x8f, 0xde, 0x0f, 0xc8, 0xdb, 0x08, 0x88, + 0xbf, 0x43, 0xac, 0xab, 0x5c, 0xda, 0xa2, 0xc3, 0xa5, 0xdf, 0x65, 0xac, 0x79, 0x41, 0x7c, 0x43, + 0x74, 0x2b, 0x53, 0x03, 0xe7, 0xb4, 0x42, 0xdb, 0x80, 0xa4, 0xc4, 0x26, 0x3f, 0xfb, 0xc2, 0xc4, + 0xd1, 0x17, 0xcd, 0x79, 0x4a, 0xec, 0x6a, 0x06, 0x05, 0xce, 0x41, 0xab, 0xff, 0x7e, 0x0d, 0x1a, + 0x7c, 0x91, 0xac, 0xb8, 0xa1, 0xbf, 0x77, 0x02, 0x47, 0xc3, 0x66, 0xe2, 0x68, 0x68, 0x57, 0xd8, + 0xea, 0xac, 0xc7, 0x85, 0x27, 0x83, 0x9b, 0x3a, 0x19, 0xae, 0x54, 0xa6, 0x34, 0xfa, 0x60, 0xf8, + 0x63, 0x0d, 0x4e, 0x29, 0xb5, 0x4f, 0xe0, 0x5c, 0x20, 0xc9, 0x73, 0xe1, 0xa5, 0xaa, 0x03, 0x2c, + 0x38, 0x16, 0xcc, 0xc4, 0xb8, 0x18, 0xcb, 0x7e, 0x07, 0xc0, 0x06, 0xe3, 0x29, 0x37, 0x63, 0x21, + 0x49, 0x7e, 0xf5, 0xa6, 0x84, 0x60, 0xa5, 0x96, 0x64, 0x56, 0xb5, 0x5c, 0x66, 0xf5, 0x67, 0x63, + 0x30, 0x9f, 0x99, 0xeb, 0x2c, 0x03, 0xd1, 0x7e, 0x5c, 0x0c, 0xa4, 0xf6, 0x63, 0x61, 0x20, 0x63, + 0xa5, 0x18, 0xc8, 0x93, 0x50, 0xa7, 0x73, 0xca, 0xbe, 0x0d, 0x3f, 0x1a, 0x66, 0xe8, 0x0a, 0xea, + 0x8a, 0x32, 0x2c, 0xa1, 0xc8, 0x07, 0xd4, 0xb7, 0x7b, 0xbc, 0x59, 0x37, 0x34, 0xfc, 0xf0, 0xb6, + 0xdd, 0x27, 0x82, 0xd5, 0xfc, 0xff, 0x47, 0x5b, 0xa9, 0xb4, 0x05, 0xe7, 0x38, 0xab, 0x19, 0x4c, + 0x38, 0x07, 0xbb, 0xfe, 0x7b, 0x1a, 0x8c, 0xb5, 0x70, 0x07, 0xbd, 0x2d, 0x21, 0x62, 0x3f, 0xa4, + 0x8a, 0xd8, 0xf7, 0xf6, 0x17, 0xa7, 0x5a, 0xb8, 0xa3, 0x48, 0xdb, 0x7f, 0x43, 0x83, 0x79, 0xd3, + 0x73, 0x43, 0x83, 0xf6, 0x02, 0xf3, 0xf3, 0x28, 0x5a, 0xf7, 0xe5, 0xa4, 0xcb, 0x56, 0x0a, 0x5b, + 0xf3, 0x61, 0xd1, 0x83, 0xf9, 0x34, 0x24, 0xc0, 0x59, 0xd2, 0xfa, 0x3a, 0x4c, 0xb7, 0x1c, 0x6f, + 0x68, 0x75, 0xdc, 0x4d, 0xef, 0x3e, 0x0a, 0x48, 0xff, 0x52, 0x83, 0x19, 0x86, 0x77, 0xcd, 0xf7, + 0x36, 0x6d, 0x87, 0xbc, 0x41, 0x44, 0x75, 0xb5, 0xcb, 0x45, 0x0c, 0x99, 0x49, 0xce, 0x6a, 0xc5, + 0x37, 0x8a, 0xe4, 0xac, 0xf6, 0xb9, 0x80, 0x45, 0x7e, 0x65, 0x2a, 0x39, 0x34, 0xc6, 0x24, 0x9f, + 0x84, 0xba, 0x69, 0x34, 0x87, 0xae, 0xe5, 0xc8, 0x95, 0x41, 0xbb, 0xd9, 0x5a, 0xe6, 0x65, 0x58, + 0x42, 0xd1, 0xeb, 0x00, 0xb1, 0x49, 0x43, 0x7c, 0x88, 0xab, 0x15, 0xed, 0x28, 0x5d, 0x12, 0x86, + 0xb6, 0xdb, 0x0b, 0xe2, 0xaf, 0x1f, 0xc3, 0xb0, 0x42, 0x0e, 0xfd, 0x1c, 0xcc, 0x8a, 0x69, 0xee, + 0xf4, 0x8d, 0x9e, 0x50, 0x34, 0xcb, 0xce, 0xd5, 0xaa, 0x82, 0xa9, 0x79, 0x4e, 0x50, 0x9e, 0x55, + 0x4b, 0x03, 0x9c, 0x24, 0x87, 0xee, 0xc2, 0x4c, 0x5f, 0xd5, 0x9e, 0xc7, 0x2b, 0x1c, 0x66, 0x8a, + 0x2a, 0xdd, 0x3c, 0x2b, 0xa8, 0xcf, 0x24, 0x14, 0xef, 0x04, 0xad, 0x1c, 0x0d, 0x60, 0xe2, 0x41, + 0x69, 0x00, 0x9b, 0x30, 0xc5, 0xf7, 0x78, 0xb0, 0x30, 0xc9, 0x46, 0xf8, 0xde, 0x52, 0x23, 0xe4, + 0xfc, 0x22, 0x36, 0xd4, 0xf1, 0xdf, 0x01, 0x8e, 0x90, 0xa3, 0x3b, 0x30, 0x43, 0xd9, 0x7b, 0x97, + 0x38, 0xc4, 0x0c, 0x3d, 0x7f, 0x61, 0xaa, 0x82, 0x1d, 0xac, 0xab, 0x20, 0xe2, 0x76, 0x14, 0xb5, + 0x04, 0x27, 0x08, 0x49, 0x26, 0x58, 0x2f, 0x64, 0x82, 0x3b, 0xd0, 0xd8, 0x51, 0x0c, 0x1a, 0xd3, + 0x6c, 0x1a, 0xde, 0x57, 0xaa, 0x67, 0xb1, 0x79, 0xa3, 0x79, 0x46, 0x50, 0x6a, 0xa8, 0xa6, 0x10, + 0x95, 0x90, 0xbe, 0x5f, 0x87, 0xf9, 0x96, 0x33, 0x0c, 0x42, 0xe2, 0x2f, 0x0b, 0x5b, 0x33, 0xf1, + 0xd1, 0xa7, 0x35, 0x38, 0xcf, 0xfe, 0x6d, 0x7b, 0x77, 0xdc, 0x36, 0x71, 0x8c, 0xbd, 0xe5, 0x4d, + 0x5a, 0xc3, 0xb2, 0x8e, 0xc7, 0x88, 0xda, 0x43, 0x21, 0x51, 0x30, 0xd3, 0x4c, 0x37, 0x17, 0x23, + 0x2e, 0xa0, 0x84, 0xbe, 0xa8, 0xc1, 0xc3, 0x39, 0xa0, 0x36, 0x71, 0x48, 0x48, 0x04, 0x27, 0x38, + 0x6e, 0x3f, 0x2e, 0x1e, 0xec, 0x2f, 0x3e, 0xdc, 0x2d, 0x42, 0x8a, 0x8b, 0xe9, 0xd1, 0x53, 0xf6, + 0x42, 0x0e, 0xf4, 0x8a, 0x61, 0x3b, 0x43, 0x9f, 0x08, 0x39, 0xfa, 0xb8, 0xdd, 0xb9, 0x74, 0xb0, + 0xbf, 0x78, 0xa1, 0x5b, 0x88, 0x15, 0x8f, 0xa0, 0x88, 0x3e, 0x09, 0xe7, 0x24, 0x74, 0xdd, 0x75, + 0x09, 0xb1, 0x88, 0xc5, 0x44, 0x94, 0xf1, 0x52, 0x5d, 0x79, 0xf8, 0x60, 0x7f, 0xf1, 0x5c, 0x37, + 0x0f, 0x21, 0xce, 0xa7, 0x83, 0x7a, 0x70, 0x31, 0x06, 0x84, 0xb6, 0x63, 0xdf, 0x65, 0x98, 0x6e, + 0x6f, 0xf9, 0x24, 0xd8, 0xf2, 0x1c, 0x8b, 0xf1, 0x0b, 0xad, 0xf9, 0xe6, 0x83, 0xfd, 0xc5, 0x8b, + 0xdd, 0x51, 0x15, 0xf1, 0x68, 0x3c, 0xc8, 0x82, 0x99, 0xc0, 0x34, 0xdc, 0x8e, 0x1b, 0x12, 0x7f, + 0xc7, 0x70, 0x16, 0x26, 0x4b, 0x0d, 0x90, 0xef, 0x51, 0x05, 0x0f, 0x4e, 0x60, 0x45, 0xef, 0x81, + 0x3a, 0xd9, 0x1d, 0x18, 0xae, 0x45, 0x38, 0x63, 0x98, 0x6e, 0x3e, 0x4a, 0x8f, 0xa4, 0x15, 0x51, + 0x76, 0x6f, 0x7f, 0x71, 0x26, 0xfa, 0x7f, 0xd5, 0xb3, 0x08, 0x96, 0xb5, 0xd1, 0x27, 0xe0, 0x6c, + 0xdf, 0xd8, 0xbd, 0xe9, 0x59, 0x84, 0xf1, 0x39, 0xca, 0xf6, 0xd8, 0x87, 0xa8, 0x97, 0xea, 0xe7, + 0xc2, 0xc1, 0xfe, 0xe2, 0xd9, 0xd5, 0x1c, 0x7c, 0x38, 0x97, 0x0a, 0xfd, 0x0c, 0x7d, 0x63, 0xf7, + 0xaa, 0x6f, 0x98, 0x64, 0x73, 0xe8, 0xdc, 0x26, 0x7e, 0xdf, 0x76, 0xb9, 0x58, 0x49, 0x4c, 0xcf, + 0xb5, 0x28, 0x2f, 0xd1, 0x9e, 0x9c, 0xe0, 0x9f, 0x61, 0x75, 0x54, 0x45, 0x3c, 0x1a, 0x0f, 0x7a, + 0x27, 0xcc, 0xd8, 0x3d, 0xd7, 0xf3, 0xc9, 0x6d, 0xc3, 0x76, 0xc3, 0x60, 0x01, 0x98, 0xd1, 0x95, + 0x4d, 0x6b, 0x47, 0x29, 0xc7, 0x89, 0x5a, 0xfa, 0x7f, 0xd2, 0xa0, 0x21, 0x18, 0x0c, 0x93, 0x07, + 0x4d, 0x98, 0x30, 0xa9, 0x34, 0x20, 0x18, 0xc9, 0x8b, 0xe5, 0xc5, 0x0e, 0x8a, 0x2e, 0x96, 0x39, + 0x58, 0x11, 0xe6, 0xb8, 0xd1, 0x9d, 0x1c, 0xa1, 0xa1, 0x55, 0x51, 0x68, 0x60, 0xe4, 0x0e, 0x11, + 0x18, 0xf4, 0xfd, 0x31, 0x98, 0x6e, 0x79, 0xae, 0x65, 0x33, 0x65, 0xe3, 0xe9, 0x84, 0xec, 0x7b, + 0x51, 0x65, 0xfb, 0xf7, 0xf6, 0x17, 0x67, 0x65, 0x45, 0xe5, 0x1c, 0x78, 0x56, 0x6a, 0xe6, 0x5c, + 0x18, 0x7e, 0x73, 0x52, 0xa3, 0xbe, 0xb7, 0xbf, 0x78, 0x4a, 0x36, 0x4b, 0x2a, 0xd9, 0x68, 0x07, + 0x10, 0xd5, 0x99, 0x6e, 0xfb, 0x86, 0x1b, 0x70, 0xb4, 0x74, 0x11, 0x8e, 0x1d, 0x5b, 0x61, 0x91, + 0x2a, 0xd5, 0x8d, 0x0c, 0x36, 0x9c, 0x43, 0x01, 0x7d, 0x1c, 0xe6, 0x68, 0xe9, 0xfa, 0xc0, 0x32, + 0x42, 0xa2, 0x70, 0xa0, 0x63, 0x29, 0x49, 0x82, 0xe6, 0xdc, 0x8d, 0x04, 0x26, 0x9c, 0xc2, 0xcc, + 0x75, 0x05, 0x23, 0xf0, 0x5c, 0xc6, 0x5c, 0x12, 0xba, 0x02, 0x2d, 0xc5, 0x02, 0x8a, 0x9e, 0x82, + 0xa9, 0x3e, 0x09, 0x02, 0xa3, 0x47, 0x18, 0xb7, 0x98, 0x8e, 0x85, 0x82, 0x55, 0x5e, 0x8c, 0x23, + 0x38, 0x7a, 0x3b, 0x4c, 0x98, 0x9e, 0x45, 0x82, 0x85, 0x29, 0xb6, 0x9e, 0xcf, 0xb3, 0xc5, 0x44, + 0x0b, 0xee, 0xed, 0x2f, 0x4e, 0x33, 0x05, 0x94, 0xfe, 0xc2, 0xbc, 0x92, 0xfe, 0xab, 0x54, 0x50, + 0x4f, 0x69, 0x3c, 0x45, 0x37, 0x22, 0xfc, 0xb3, 0x32, 0x1d, 0xed, 0xe4, 0xcc, 0xa9, 0xfa, 0x2f, + 0xd5, 0xe0, 0x2c, 0xed, 0xa1, 0xef, 0x39, 0x0e, 0x3d, 0xbd, 0x06, 0x8e, 0xb7, 0xd7, 0x27, 0xee, + 0x49, 0xdc, 0x6c, 0x44, 0x62, 0x4e, 0xad, 0x50, 0xcc, 0xe9, 0x67, 0xe6, 0x61, 0xac, 0xcc, 0x3c, + 0xc8, 0xe5, 0x72, 0xc8, 0x5c, 0xfc, 0xb9, 0x06, 0x0b, 0x79, 0x73, 0x71, 0x02, 0xea, 0x95, 0x9b, + 0x54, 0xaf, 0x3a, 0xa5, 0x15, 0xf1, 0x74, 0xdf, 0x0b, 0xd4, 0xac, 0x3f, 0xaf, 0xc1, 0xf9, 0xb8, + 0x7a, 0xc7, 0x0d, 0x42, 0xc3, 0x71, 0xb8, 0xcd, 0xe3, 0xc1, 0x7f, 0xf8, 0xd7, 0x12, 0x7a, 0xf2, + 0xad, 0x8a, 0x63, 0x55, 0x3b, 0x5f, 0x68, 0xc2, 0xdc, 0x4b, 0x99, 0x30, 0x3f, 0x70, 0x3f, 0x89, + 0x8e, 0xb6, 0x66, 0xfe, 0x67, 0x0d, 0x2e, 0xe4, 0x37, 0x3c, 0x81, 0x75, 0x35, 0x48, 0xae, 0xab, + 0xeb, 0xf7, 0x71, 0xd8, 0x05, 0x2b, 0xeb, 0xdb, 0xb5, 0xa2, 0xe1, 0x32, 0x55, 0x7e, 0x13, 0x4e, + 0x51, 0xfd, 0x2a, 0x08, 0x85, 0xd5, 0xed, 0x78, 0x37, 0xd0, 0x91, 0x6d, 0xeb, 0x14, 0x4e, 0xe2, + 0xc0, 0x69, 0xa4, 0xe8, 0x26, 0x4c, 0x51, 0x9d, 0x8a, 0xe2, 0xaf, 0x1d, 0x1d, 0xbf, 0xe4, 0xfb, + 0x5d, 0xde, 0x16, 0x47, 0x48, 0xd0, 0xcf, 0xc2, 0xac, 0x25, 0x37, 0xd5, 0x21, 0x57, 0x4f, 0x69, + 0xac, 0xcc, 0x40, 0xda, 0x56, 0x5b, 0xe3, 0x24, 0x32, 0xfd, 0x7f, 0x6b, 0xf0, 0xe8, 0xa8, 0xc5, + 0x85, 0x7c, 0x00, 0x33, 0x3a, 0xc8, 0xb9, 0x07, 0x42, 0x69, 0x61, 0x28, 0x42, 0x13, 0x6f, 0x52, + 0x59, 0x14, 0x60, 0x85, 0x4a, 0xce, 0xf5, 0x56, 0xed, 0x01, 0x5d, 0x6f, 0xe9, 0xff, 0x45, 0x53, + 0xd9, 0x91, 0xfa, 0x71, 0xdf, 0x70, 0xec, 0x48, 0xed, 0x7c, 0xa1, 0x01, 0xef, 0x8f, 0x6a, 0xf0, + 0x58, 0x7e, 0x13, 0xe5, 0x04, 0x7e, 0x09, 0x26, 0x07, 0xdc, 0x51, 0x64, 0x8c, 0x9d, 0x90, 0x4f, + 0x52, 0xe6, 0xc2, 0xbd, 0x38, 0xee, 0xed, 0x2f, 0x5e, 0xc8, 0xe3, 0xf6, 0xc2, 0xff, 0x43, 0xb4, + 0x43, 0x76, 0xca, 0x82, 0xc1, 0x25, 0xad, 0x67, 0x8e, 0xc8, 0x5f, 0x8c, 0x0d, 0xe2, 0x1c, 0xd9, + 0x66, 0xf1, 0x69, 0x0d, 0xe6, 0x12, 0x6b, 0x3a, 0x58, 0x98, 0x60, 0xab, 0xb4, 0xdc, 0x0d, 0x43, + 0x62, 0xb7, 0xc4, 0x07, 0x78, 0xa2, 0x38, 0xc0, 0x29, 0x8a, 0x29, 0x56, 0xab, 0x4e, 0xeb, 0x1b, + 0x8f, 0xd5, 0xaa, 0xbd, 0x2f, 0x60, 0xb5, 0x5f, 0xab, 0x15, 0x0d, 0x97, 0xb1, 0xda, 0x5d, 0x98, + 0x8e, 0x9c, 0xf1, 0x22, 0x96, 0x71, 0xb5, 0x72, 0xa7, 0x38, 0xbe, 0xf8, 0x36, 0x3d, 0x2a, 0x09, + 0x70, 0x4c, 0x0c, 0x7d, 0x56, 0x03, 0x88, 0x3f, 0x8d, 0xd8, 0x58, 0xeb, 0xf7, 0x71, 0x42, 0x14, + 0xf9, 0x66, 0x8e, 0xee, 0x6b, 0x65, 0x5d, 0x28, 0x84, 0xf5, 0xdf, 0xaa, 0x01, 0xca, 0x76, 0x9e, + 0x0a, 0x9e, 0xdb, 0xb6, 0x6b, 0xa5, 0x05, 0xf0, 0xeb, 0xb6, 0x6b, 0x61, 0x06, 0x39, 0x82, 0x68, + 0xfa, 0x02, 0x9c, 0xea, 0x39, 0xde, 0x86, 0xe1, 0x38, 0x7b, 0xc2, 0xc3, 0x8f, 0xed, 0xd2, 0x7a, + 0xf3, 0x0c, 0x3d, 0x9e, 0xae, 0x26, 0x41, 0x38, 0x5d, 0x17, 0x0d, 0xe0, 0xb4, 0x4f, 0x15, 0x65, + 0xd3, 0x76, 0x98, 0xaa, 0xe2, 0x0d, 0xc3, 0x92, 0x96, 0x98, 0xb3, 0x07, 0xfb, 0x8b, 0xa7, 0x71, + 0x0a, 0x17, 0xce, 0x60, 0x47, 0x4f, 0xc0, 0xd4, 0xc0, 0xb7, 0xfb, 0x86, 0xbf, 0xc7, 0x94, 0xa1, + 0x7a, 0xb3, 0x41, 0xcf, 0xb9, 0x35, 0x5e, 0x84, 0x23, 0x98, 0xfe, 0x59, 0x0d, 0xa6, 0x5a, 0x9e, + 0x4f, 0xda, 0x37, 0xbb, 0xe8, 0x2e, 0x34, 0x14, 0x8f, 0x52, 0xb1, 0x65, 0xca, 0x2e, 0x21, 0x86, + 0x72, 0x39, 0x46, 0x17, 0x79, 0xad, 0xc9, 0x02, 0xac, 0x12, 0xd3, 0xd7, 0xe8, 0x97, 0x4b, 0xb7, + 0x41, 0xcf, 0xc1, 0x78, 0xdf, 0xb3, 0x22, 0xd5, 0xe9, 0xad, 0xd1, 0x77, 0x59, 0xf5, 0x2c, 0xaa, + 0x22, 0x9f, 0xcf, 0xb6, 0x60, 0xb6, 0x17, 0xd6, 0x46, 0xff, 0xaa, 0x06, 0x63, 0x74, 0x54, 0x3a, + 0x4c, 0x5a, 0x5e, 0xdf, 0xb0, 0x5d, 0x81, 0x85, 0x39, 0x00, 0xb6, 0x59, 0x09, 0x16, 0x10, 0xf4, + 0x1a, 0x4c, 0x47, 0x27, 0x54, 0xb5, 0x3b, 0xe1, 0xf6, 0xcd, 0xae, 0x74, 0xa0, 0x91, 0x7b, 0x26, + 0x2a, 0x09, 0x70, 0x4c, 0x45, 0x37, 0x60, 0xbe, 0x7d, 0xb3, 0xdb, 0x71, 0x4d, 0x67, 0x68, 0x91, + 0x95, 0x5d, 0xf6, 0x87, 0x7e, 0x34, 0x9b, 0x97, 0x08, 0xaf, 0x43, 0xf6, 0xd1, 0x44, 0x25, 0x1c, + 0xc1, 0x68, 0x35, 0xc2, 0x5b, 0x08, 0x8f, 0x39, 0x56, 0x4d, 0x20, 0xc1, 0x11, 0x4c, 0xff, 0x93, + 0x1a, 0x34, 0x94, 0x0e, 0xa1, 0x3e, 0x4c, 0xf1, 0xf1, 0x46, 0x8e, 0x2b, 0x57, 0xca, 0x8e, 0x31, + 0xd9, 0x6d, 0x4e, 0x9e, 0x4f, 0x69, 0x80, 0x23, 0x1a, 0xea, 0x0a, 0xac, 0x15, 0xaf, 0x40, 0xb4, + 0x04, 0xc0, 0xfd, 0x72, 0xd8, 0xad, 0x2b, 0x3f, 0xfa, 0xd8, 0x26, 0xef, 0xca, 0x52, 0xac, 0xd4, + 0x40, 0x8f, 0x8a, 0xbd, 0xaa, 0xb8, 0xee, 0x28, 0xfb, 0xb4, 0x07, 0x13, 0x77, 0x3d, 0x97, 0x04, + 0xe2, 0x3a, 0xe2, 0x7e, 0x8d, 0x70, 0x9a, 0x32, 0xe3, 0x0f, 0x51, 0xc4, 0x98, 0xe3, 0xd7, 0x7f, + 0x4d, 0x03, 0x68, 0x1b, 0xa1, 0xc1, 0x6d, 0xe7, 0x47, 0x70, 0x7b, 0x7c, 0x34, 0xc1, 0x63, 0xea, + 0x99, 0x6b, 0xce, 0xf1, 0xc0, 0xbe, 0x1b, 0x8d, 0x5f, 0x0a, 0x30, 0x1c, 0x7b, 0xd7, 0xbe, 0x4b, + 0x30, 0x83, 0xa3, 0xb7, 0xc1, 0x34, 0x71, 0x4d, 0x7f, 0x6f, 0x10, 0x0a, 0xef, 0xa5, 0x3a, 0xbf, + 0x1a, 0x5f, 0x89, 0x0a, 0x71, 0x0c, 0xd7, 0x9f, 0x86, 0xa4, 0x18, 0x7a, 0x78, 0x2f, 0xf5, 0x1d, + 0xa8, 0xaf, 0xb8, 0xd6, 0xc0, 0xb3, 0xdd, 0xf0, 0x08, 0x63, 0xba, 0x08, 0x63, 0x43, 0xdf, 0x11, + 0x43, 0x6a, 0x88, 0x0a, 0x63, 0xeb, 0xf8, 0x06, 0xa6, 0xe5, 0xe8, 0x29, 0x98, 0x1a, 0x0c, 0xfd, + 0x81, 0x17, 0x44, 0xe3, 0x92, 0xf2, 0xf6, 0x1a, 0x2f, 0xc6, 0x11, 0x5c, 0xbf, 0xa7, 0xc1, 0xe9, + 0x95, 0xdd, 0x81, 0xed, 0x33, 0x17, 0x4c, 0xe2, 0x53, 0x51, 0x92, 0xb6, 0xdf, 0xe1, 0xff, 0x8a, + 0x3e, 0xc8, 0xf6, 0xa2, 0x06, 0x8e, 0xe0, 0x68, 0x13, 0xe6, 0x08, 0x6b, 0xce, 0x8e, 0x0b, 0x43, + 0x5e, 0x01, 0x1c, 0xc7, 0xcc, 0xc4, 0x5d, 0x7c, 0x13, 0x58, 0x70, 0x0a, 0x2b, 0xea, 0xc2, 0x9c, + 0xe9, 0x18, 0x41, 0x60, 0x6f, 0xda, 0x66, 0xec, 0x69, 0x30, 0xdd, 0x7c, 0x1b, 0x6d, 0xdb, 0x4a, + 0x40, 0xee, 0xed, 0x2f, 0x9e, 0x13, 0xfd, 0x4c, 0x02, 0x70, 0x0a, 0x85, 0xfe, 0xe5, 0x1a, 0xcc, + 0xae, 0xec, 0x0e, 0xbc, 0x60, 0xe8, 0x13, 0x56, 0xf5, 0x04, 0xa4, 0xe0, 0xa7, 0x60, 0x6a, 0xcb, + 0x70, 0x2d, 0x87, 0xf8, 0xe2, 0xf3, 0xc9, 0xb9, 0xbd, 0xc6, 0x8b, 0x71, 0x04, 0x47, 0x9f, 0x00, + 0x08, 0xcc, 0x2d, 0x62, 0x0d, 0xd9, 0xb1, 0xc0, 0x15, 0xa1, 0x1b, 0xa5, 0x36, 0x56, 0x62, 0x90, + 0x5d, 0x89, 0x53, 0xec, 0x77, 0xf9, 0x1b, 0x2b, 0xf4, 0xf4, 0x3f, 0xd1, 0x60, 0x3e, 0xd1, 0xee, + 0x04, 0x64, 0xbb, 0x5e, 0x52, 0xb6, 0x6b, 0x56, 0x1f, 0x6c, 0x81, 0x48, 0xf7, 0x85, 0x1a, 0x3c, + 0x54, 0x30, 0x29, 0x99, 0xfb, 0x48, 0xed, 0xa4, 0xee, 0x23, 0x77, 0xa0, 0x11, 0x7a, 0x8e, 0xf0, + 0x89, 0x89, 0xe6, 0xa0, 0xdc, 0x6d, 0xe3, 0x6d, 0x89, 0x27, 0xbe, 0x6d, 0x8c, 0xcb, 0x02, 0xac, + 0x12, 0xd2, 0x7f, 0x57, 0x83, 0x69, 0xa9, 0x47, 0x1e, 0xc1, 0x35, 0xe4, 0x04, 0xbd, 0x50, 0x9f, + 0x84, 0xba, 0x65, 0x07, 0xaa, 0xdc, 0xc7, 0x3c, 0x12, 0xda, 0xa2, 0x0c, 0x4b, 0xa8, 0xfe, 0x4f, + 0x6b, 0x70, 0x5e, 0xe2, 0x8e, 0x44, 0x50, 0xaa, 0xf6, 0x1e, 0x45, 0x0e, 0x7d, 0x54, 0x70, 0x5c, + 0xe5, 0x8c, 0x50, 0xb8, 0xed, 0x13, 0x69, 0x76, 0xda, 0xc8, 0x63, 0xa5, 0xe8, 0x26, 0x4c, 0x04, + 0x94, 0x9e, 0x10, 0x30, 0x8f, 0x39, 0x1b, 0xec, 0xa4, 0x63, 0xfd, 0xc5, 0x1c, 0x0d, 0x7a, 0x5d, + 0xd5, 0x2b, 0xb8, 0x92, 0xf7, 0xfe, 0xe3, 0x2d, 0x06, 0xf6, 0xf0, 0x69, 0x89, 0x8e, 0xc4, 0x8a, + 0x66, 0x24, 0xc7, 0x51, 0x37, 0x4f, 0xb5, 0xd0, 0x03, 0xa8, 0x5f, 0x15, 0x68, 0xd1, 0x05, 0xa8, + 0xd9, 0xd1, 0xec, 0x81, 0x68, 0x55, 0xeb, 0xb4, 0x71, 0xcd, 0xb6, 0xe4, 0x59, 0x55, 0x2b, 0x3c, + 0xab, 0x94, 0xc3, 0x64, 0x6c, 0xf4, 0x61, 0xa2, 0xff, 0xbb, 0x1a, 0x9c, 0x8d, 0xa8, 0x46, 0xbd, + 0x6a, 0x0b, 0x13, 0xf6, 0x21, 0x27, 0xe2, 0xe1, 0x9a, 0xc4, 0x2d, 0x18, 0x67, 0x5c, 0xab, 0x94, + 0x69, 0x5b, 0x22, 0xa4, 0xdd, 0xc1, 0x0c, 0x11, 0xfa, 0x6b, 0x30, 0xe9, 0x50, 0xdd, 0x3d, 0x72, + 0x00, 0x29, 0xa7, 0x78, 0xe5, 0x8d, 0x97, 0xdb, 0x04, 0x02, 0xee, 0xe2, 0x28, 0xed, 0x9d, 0xbc, + 0x10, 0x0b, 0xa2, 0x17, 0x9e, 0x85, 0x86, 0x52, 0x0d, 0x9d, 0x86, 0xb1, 0x6d, 0xc2, 0xdf, 0xba, + 0x4c, 0x63, 0xfa, 0x2f, 0x3a, 0x0b, 0x13, 0x3b, 0x86, 0x33, 0x14, 0x73, 0x82, 0xf9, 0x8f, 0xe7, + 0x6a, 0xef, 0xd1, 0xf4, 0x6f, 0x69, 0xd0, 0xb8, 0x66, 0x6f, 0x10, 0x9f, 0x5f, 0x25, 0x32, 0xb9, + 0x36, 0xf1, 0xaa, 0xaa, 0x91, 0xf7, 0xa2, 0x0a, 0xed, 0xc1, 0xb4, 0x38, 0x1f, 0xa4, 0x27, 0x5b, + 0xb9, 0xb7, 0x53, 0x0a, 0x6d, 0xc1, 0x77, 0x55, 0xbf, 0xf1, 0x88, 0x04, 0x8e, 0xa9, 0xe9, 0xaf, + 0xc3, 0x99, 0x9c, 0x46, 0x68, 0x91, 0x6d, 0x39, 0x3f, 0x14, 0x0b, 0x23, 0xda, 0x43, 0x7e, 0x88, + 0x79, 0x39, 0x7a, 0x18, 0xc6, 0x88, 0x1b, 0x79, 0x70, 0x4e, 0x51, 0x21, 0x69, 0xc5, 0xb5, 0x30, + 0x2d, 0xa3, 0xac, 0xc5, 0xf1, 0x12, 0xb2, 0x04, 0x63, 0x2d, 0x37, 0x44, 0x19, 0x96, 0x50, 0xfd, + 0x1f, 0x8c, 0xc3, 0xc5, 0x6b, 0x9e, 0x6f, 0xdf, 0xf5, 0xdc, 0xd0, 0x70, 0xd6, 0x3c, 0x2b, 0xf6, + 0xc9, 0x10, 0x6c, 0xea, 0xb3, 0x1a, 0x3c, 0x64, 0x0e, 0x86, 0x1d, 0xd7, 0x0e, 0x6d, 0x23, 0xba, + 0x2a, 0x5f, 0x23, 0xbe, 0xed, 0x95, 0x75, 0xcd, 0x60, 0x6f, 0x71, 0x5a, 0x6b, 0xeb, 0x79, 0x28, + 0x71, 0x11, 0x2d, 0xe6, 0x21, 0x62, 0x79, 0x77, 0x5c, 0xd6, 0xb9, 0x6e, 0xc8, 0xde, 0x07, 0xdd, + 0x8d, 0x87, 0x58, 0xd2, 0x43, 0xa4, 0x9d, 0x8b, 0x11, 0x17, 0x50, 0x42, 0x9f, 0x84, 0x73, 0x36, + 0xef, 0x1c, 0x26, 0x86, 0x65, 0xbb, 0x24, 0x08, 0x98, 0x9f, 0x44, 0x15, 0x17, 0x88, 0x4e, 0x1e, + 0x42, 0x9c, 0x4f, 0x07, 0x7d, 0x04, 0x20, 0xd8, 0x73, 0x4d, 0x31, 0xff, 0x13, 0xa5, 0xa8, 0x72, + 0xc9, 0x48, 0x62, 0xc1, 0x0a, 0x46, 0xaa, 0x0b, 0xf0, 0xe3, 0xd3, 0x35, 0xf9, 0x45, 0xa6, 0xc6, + 0x75, 0x81, 0xdb, 0x51, 0x21, 0x8e, 0xe1, 0xfa, 0x6f, 0x6a, 0x30, 0x25, 0x1e, 0xde, 0xa1, 0xb7, + 0xa6, 0x54, 0x62, 0xb9, 0xb5, 0x53, 0x6a, 0xf1, 0x5d, 0x66, 0x85, 0x16, 0xe6, 0x14, 0x71, 0xb8, + 0x96, 0xd3, 0xa8, 0x04, 0xe5, 0xd8, 0x38, 0x93, 0xb0, 0x46, 0x47, 0x06, 0x1b, 0x85, 0x9a, 0xfe, + 0x75, 0x0d, 0xe6, 0x33, 0xad, 0x8e, 0x70, 0x84, 0x9e, 0xe0, 0x5d, 0xea, 0x0f, 0x1b, 0xc0, 0x5e, + 0x59, 0x2e, 0xaf, 0x75, 0xba, 0xc4, 0xdf, 0x91, 0xbb, 0xf0, 0x8b, 0x1a, 0x9c, 0x8e, 0x6f, 0xfd, + 0x45, 0x2f, 0xb4, 0x0a, 0x4e, 0xa2, 0xd7, 0x53, 0xc8, 0x9a, 0x0b, 0x62, 0xe0, 0xa7, 0xd3, 0x10, + 0x9c, 0x21, 0x8c, 0xbe, 0xa0, 0xc1, 0x69, 0x23, 0xf9, 0xca, 0x32, 0xe2, 0x9a, 0xe5, 0x9e, 0x10, + 0xa4, 0x9e, 0x6c, 0xc6, 0x9d, 0x49, 0x01, 0x02, 0x9c, 0xa1, 0x8b, 0xde, 0x09, 0x33, 0xc6, 0xc0, + 0x5e, 0x1e, 0x5a, 0x36, 0x3d, 0xfb, 0xa3, 0xa7, 0x79, 0x4c, 0x20, 0x5d, 0x5e, 0xeb, 0xc8, 0x72, + 0x9c, 0xa8, 0x25, 0xdf, 0x51, 0x8a, 0xa9, 0x1c, 0xaf, 0xfa, 0x8e, 0x52, 0xcc, 0x62, 0xfc, 0x8e, + 0x52, 0x4c, 0x9e, 0x4a, 0x05, 0x7d, 0x18, 0x1e, 0xe6, 0x07, 0x4e, 0xd3, 0x08, 0x6c, 0x73, 0x79, + 0x18, 0x6e, 0x11, 0x37, 0x8c, 0x94, 0x3e, 0x6e, 0x52, 0x63, 0xfe, 0x62, 0x2b, 0x45, 0x95, 0x70, + 0x71, 0x7b, 0xe4, 0x01, 0x78, 0xb6, 0x65, 0x8a, 0x01, 0x71, 0x97, 0xa5, 0x72, 0x12, 0xf6, 0xad, + 0x4e, 0xbb, 0x25, 0xc6, 0xc3, 0x78, 0x45, 0xfc, 0x1b, 0x2b, 0x24, 0xd0, 0xaf, 0x68, 0x30, 0x2b, + 0x16, 0xba, 0x20, 0x3a, 0xc5, 0x96, 0xc0, 0x87, 0x4b, 0x2f, 0xc8, 0xd4, 0xaa, 0x5f, 0xc2, 0x2a, + 0x76, 0x2e, 0x32, 0x48, 0x37, 0xd6, 0x04, 0x0c, 0x27, 0x3b, 0x82, 0xbe, 0xa4, 0xc1, 0xd9, 0x80, + 0xf8, 0x3b, 0xb6, 0x49, 0x96, 0x4d, 0xd3, 0x1b, 0xba, 0xd1, 0x77, 0xae, 0x57, 0x78, 0xd2, 0xd6, + 0xcd, 0x41, 0xc8, 0x9d, 0xa7, 0xf2, 0x20, 0x38, 0xb7, 0x03, 0xe8, 0x17, 0x34, 0x38, 0x75, 0xc7, + 0x08, 0xcd, 0xad, 0x96, 0x61, 0x6e, 0x31, 0x2b, 0x0c, 0xf7, 0x97, 0x2a, 0xbb, 0x73, 0x5e, 0x49, + 0xe2, 0xe2, 0xb6, 0xe3, 0x54, 0x21, 0x4e, 0x53, 0x44, 0x21, 0xd4, 0x7d, 0xf2, 0xda, 0x90, 0x04, + 0xcc, 0xab, 0x4a, 0x3b, 0xbe, 0xf8, 0x9d, 0xf7, 0xd1, 0xb0, 0xc0, 0xc8, 0x85, 0x8d, 0xe8, 0x17, + 0x96, 0x94, 0x50, 0x0f, 0x2e, 0xf2, 0xe5, 0xbb, 0xec, 0x7a, 0xee, 0x5e, 0xdf, 0x1b, 0x06, 0xa9, + 0x2d, 0xd0, 0x60, 0x5b, 0x80, 0x39, 0x8e, 0xad, 0x8c, 0xaa, 0x88, 0x47, 0xe3, 0x41, 0x1f, 0x84, + 0x3a, 0xd9, 0x21, 0x6e, 0x78, 0xfb, 0xf6, 0x8d, 0x85, 0x99, 0x52, 0x67, 0x24, 0x1b, 0xc2, 0x8a, + 0xc0, 0x81, 0x25, 0xb6, 0x0b, 0x2f, 0x01, 0xca, 0x2e, 0xca, 0xc3, 0x04, 0xd4, 0xba, 0x2a, 0xa0, + 0x7e, 0x47, 0x83, 0x73, 0xb9, 0xd3, 0x86, 0x30, 0x9c, 0x67, 0xfe, 0x76, 0xee, 0xea, 0x30, 0x34, + 0x42, 0xdb, 0xed, 0x75, 0xdc, 0x4d, 0xc7, 0xee, 0x6d, 0x71, 0x11, 0x70, 0x82, 0x0b, 0x2c, 0xab, + 0xb9, 0x35, 0x70, 0x41, 0x4b, 0xd4, 0x81, 0x33, 0x7d, 0x63, 0x37, 0x83, 0xb0, 0xc6, 0x10, 0xb2, + 0x37, 0xfd, 0xab, 0x59, 0x30, 0xce, 0x6b, 0xa3, 0x7f, 0x75, 0x02, 0x1e, 0xa1, 0x1d, 0x8f, 0x8f, + 0xce, 0x55, 0xc3, 0x35, 0x7a, 0x3f, 0xa1, 0x47, 0xd4, 0xb7, 0x34, 0x78, 0x68, 0x2b, 0x5f, 0xb0, + 0x15, 0xa7, 0x37, 0x2e, 0x27, 0xdf, 0x8f, 0x12, 0x96, 0xf9, 0xd2, 0x1d, 0x59, 0x05, 0x17, 0xf5, + 0x0a, 0xbd, 0x04, 0xa7, 0x5d, 0xcf, 0x22, 0xad, 0x4e, 0x1b, 0xaf, 0x1a, 0xc1, 0x76, 0x37, 0x32, + 0xdd, 0x4e, 0xf0, 0xfb, 0x99, 0x9b, 0x29, 0x18, 0xce, 0xd4, 0x46, 0x3b, 0x80, 0x06, 0x9e, 0xb5, + 0xb2, 0x63, 0x9b, 0x91, 0xab, 0x5c, 0xf9, 0x3b, 0x21, 0xf6, 0x88, 0x68, 0x2d, 0x83, 0x0d, 0xe7, + 0x50, 0x60, 0xa2, 0x39, 0xed, 0xcc, 0xaa, 0xe7, 0xda, 0xa1, 0xe7, 0x33, 0x8f, 0xce, 0x4a, 0x12, + 0x2a, 0x5b, 0xe9, 0x37, 0x73, 0x31, 0xe2, 0x02, 0x4a, 0xfa, 0x7f, 0xd7, 0xe0, 0x14, 0x5d, 0x17, + 0x6b, 0xbe, 0xb7, 0xbb, 0xf7, 0x13, 0xb9, 0x24, 0x9f, 0x12, 0x37, 0x4f, 0x5c, 0x63, 0x3b, 0xa7, + 0xdc, 0x3a, 0x4d, 0xb3, 0x4e, 0xc7, 0x17, 0x4d, 0xaa, 0xd6, 0x3a, 0x56, 0xac, 0xb5, 0xea, 0x7f, + 0xaa, 0x71, 0x69, 0x31, 0x52, 0x1a, 0x7f, 0x32, 0xb7, 0xe2, 0xbb, 0x61, 0x96, 0x96, 0xad, 0x1a, + 0xbb, 0x6b, 0xed, 0x97, 0x3d, 0x27, 0x72, 0x34, 0x65, 0x2e, 0x2d, 0xd7, 0x55, 0x00, 0x4e, 0xd6, + 0xd3, 0xbf, 0x75, 0x0a, 0x58, 0x05, 0x87, 0x84, 0x3f, 0x91, 0x03, 0x7b, 0x1a, 0x1a, 0xe6, 0x60, + 0xd8, 0xba, 0xd2, 0xfd, 0xc0, 0xd0, 0x0b, 0x0d, 0x71, 0x23, 0xc5, 0x24, 0xc0, 0xd6, 0xda, 0x7a, + 0x54, 0x8c, 0xd5, 0x3a, 0x74, 0x93, 0x9b, 0x83, 0xa1, 0x60, 0x9c, 0x6b, 0xaa, 0x6b, 0x06, 0xdb, + 0xe4, 0xad, 0xb5, 0xf5, 0x04, 0x0c, 0x67, 0x6a, 0xa3, 0x4f, 0x69, 0x30, 0x43, 0xc4, 0x06, 0xbc, + 0x66, 0xf8, 0x96, 0xd8, 0xdf, 0xe5, 0xcf, 0x6f, 0x39, 0xbb, 0xd1, 0xb6, 0xe6, 0xb2, 0xf3, 0x8a, + 0x42, 0x03, 0x27, 0x28, 0x32, 0x31, 0x56, 0xfc, 0xa6, 0x1f, 0xcb, 0xb3, 0xd2, 0x3b, 0x7e, 0x42, + 0x88, 0xb1, 0x45, 0x95, 0x70, 0x71, 0x7b, 0xf4, 0x1b, 0x1a, 0x9c, 0x97, 0x50, 0xdb, 0xb5, 0xfb, + 0xc3, 0x3e, 0x26, 0xa6, 0x63, 0xd8, 0x7d, 0x21, 0xd3, 0x7e, 0xf0, 0xfe, 0x8d, 0x34, 0x89, 0x9f, + 0xb3, 0x9d, 0x7c, 0x18, 0x2e, 0xe8, 0x13, 0xfa, 0xba, 0x06, 0x8f, 0x45, 0xa0, 0x35, 0xaa, 0x59, + 0x0e, 0x7d, 0x12, 0xbb, 0x2b, 0x8b, 0x39, 0x99, 0x2a, 0xc5, 0x05, 0x1f, 0x3f, 0xd8, 0x5f, 0x7c, + 0x6c, 0xe5, 0x10, 0xdc, 0xf8, 0x50, 0xea, 0x89, 0x15, 0xd3, 0xf5, 0x36, 0x43, 0x21, 0x04, 0x3f, + 0xb0, 0x15, 0x43, 0x69, 0xe0, 0x04, 0x45, 0xf4, 0x5b, 0x1a, 0x3c, 0xa4, 0x16, 0xa8, 0x0b, 0x86, + 0x4b, 0xbf, 0xaf, 0xde, 0xbf, 0xde, 0xa4, 0x08, 0x70, 0x7b, 0x53, 0x01, 0x10, 0x17, 0x75, 0x8b, + 0xb2, 0xe0, 0x3e, 0x5b, 0x9c, 0x5c, 0x42, 0x9e, 0xe0, 0x2c, 0x98, 0xaf, 0xd7, 0x00, 0x47, 0x30, + 0xaa, 0x7d, 0x0e, 0x3c, 0x6b, 0xcd, 0xb6, 0x82, 0x1b, 0x76, 0xdf, 0x0e, 0x99, 0x08, 0x3b, 0xc6, + 0xe7, 0x63, 0xcd, 0xb3, 0xd6, 0x3a, 0x6d, 0x5e, 0x8e, 0x13, 0xb5, 0xd8, 0x4b, 0x23, 0xbb, 0x6f, + 0xf4, 0xc8, 0xda, 0xd0, 0x71, 0xd6, 0x7c, 0x8f, 0xd9, 0x24, 0xda, 0xc4, 0xb0, 0x1c, 0xdb, 0x25, + 0x25, 0x45, 0x56, 0xb6, 0xe5, 0x3a, 0x45, 0x48, 0x71, 0x31, 0x3d, 0xb4, 0x04, 0xb0, 0x69, 0xd8, + 0x4e, 0xf7, 0x8e, 0x31, 0xb8, 0xe5, 0x2e, 0xcc, 0x32, 0x36, 0xc6, 0x14, 0xbf, 0x2b, 0xb2, 0x14, + 0x2b, 0x35, 0xd8, 0x82, 0xa2, 0xcc, 0x10, 0x13, 0xfe, 0xda, 0x79, 0x61, 0xee, 0x7e, 0x2d, 0xa8, + 0x08, 0x23, 0x9f, 0xc0, 0xeb, 0x0a, 0x0d, 0x9c, 0xa0, 0x88, 0x3e, 0xa7, 0xc1, 0x5c, 0xb0, 0x17, + 0x84, 0xa4, 0x2f, 0x3b, 0x71, 0xea, 0xbe, 0x77, 0x82, 0x19, 0x6c, 0xba, 0x09, 0x2a, 0x38, 0x45, + 0x15, 0x19, 0xf0, 0x08, 0x9b, 0xd8, 0xab, 0xad, 0x6b, 0x76, 0x6f, 0x4b, 0x3e, 0x21, 0x5a, 0x23, + 0xbe, 0x49, 0xdc, 0x70, 0xe1, 0x34, 0x5b, 0x3a, 0x8b, 0x07, 0xfb, 0x8b, 0x8f, 0x74, 0x8a, 0xab, + 0xe1, 0x51, 0x38, 0xd0, 0x47, 0xe0, 0x82, 0x00, 0xdf, 0xf0, 0xee, 0x64, 0x28, 0xcc, 0x33, 0x0a, + 0xec, 0x5d, 0x57, 0xa7, 0xb0, 0x16, 0x1e, 0x81, 0x81, 0xea, 0x08, 0x01, 0xf1, 0x99, 0xc1, 0x95, + 0xc8, 0xf5, 0x13, 0x2c, 0x20, 0xb6, 0x0e, 0x98, 0x8e, 0xd0, 0xcd, 0x82, 0x71, 0x5e, 0x1b, 0x7d, + 0xbf, 0xc6, 0x95, 0x9b, 0xcc, 0x9e, 0x44, 0x2f, 0xc0, 0xa9, 0x3e, 0xe9, 0x7b, 0xfe, 0xde, 0x72, + 0x14, 0x14, 0x49, 0x18, 0xdc, 0x98, 0xc2, 0xba, 0x9a, 0x04, 0xe1, 0x74, 0x5d, 0x7a, 0x6e, 0xb2, + 0x11, 0x5c, 0xe9, 0xc6, 0xed, 0x6b, 0xf1, 0xb9, 0xd9, 0x49, 0xc1, 0x70, 0xa6, 0x36, 0x6a, 0xc1, + 0xbc, 0x28, 0xeb, 0x50, 0x09, 0x32, 0xb8, 0xe2, 0x93, 0xe8, 0xce, 0x8b, 0x8a, 0x62, 0xf3, 0x9d, + 0x34, 0x10, 0x67, 0xeb, 0xd3, 0x51, 0xd0, 0x1f, 0x6a, 0x2f, 0xc6, 0xe3, 0x51, 0xdc, 0x4c, 0x82, + 0x70, 0xba, 0x6e, 0x24, 0xe2, 0x27, 0xba, 0x30, 0x11, 0x8f, 0xe2, 0x66, 0x0a, 0x86, 0x33, 0xb5, + 0xf5, 0x3f, 0x1d, 0x87, 0xb7, 0x1c, 0xe1, 0x28, 0x43, 0xfd, 0xfc, 0xe9, 0x3e, 0x84, 0xab, 0x2c, + 0x45, 0x97, 0x64, 0x4b, 0x1f, 0x18, 0x1a, 0x6e, 0x68, 0x87, 0x7b, 0x47, 0xfc, 0x3c, 0x83, 0x82, + 0xcf, 0x73, 0x7c, 0x7a, 0x47, 0xfd, 0x9c, 0x41, 0xd1, 0xe7, 0x3c, 0x3e, 0xc9, 0xa3, 0x7f, 0xfe, + 0x7e, 0xfe, 0xe7, 0x2f, 0x39, 0xab, 0x87, 0x2e, 0x97, 0x41, 0xc1, 0x72, 0x29, 0x39, 0xab, 0x47, + 0x58, 0x5e, 0xff, 0x6a, 0x1c, 0x1e, 0x3f, 0xca, 0x99, 0x5a, 0x72, 0x7d, 0xe5, 0x9c, 0x5a, 0x0f, + 0x74, 0x7d, 0x15, 0xf9, 0x3a, 0x3e, 0xc0, 0xf5, 0x95, 0x43, 0xf2, 0x41, 0xaf, 0xaf, 0xa2, 0x59, + 0x7d, 0x50, 0xeb, 0xab, 0x68, 0x56, 0x8f, 0xb0, 0xbe, 0xfe, 0x67, 0xfa, 0x7c, 0x90, 0xe7, 0x68, + 0x07, 0xc6, 0xcc, 0xc1, 0xb0, 0x24, 0x93, 0x62, 0xb7, 0x9f, 0xad, 0xb5, 0x75, 0x4c, 0x71, 0x20, + 0x0c, 0x93, 0x7c, 0xfd, 0x94, 0x64, 0x41, 0xcc, 0x9b, 0x93, 0x2f, 0x49, 0x2c, 0x30, 0xd1, 0xa9, + 0x22, 0x83, 0x2d, 0xd2, 0x27, 0xbe, 0xe1, 0x74, 0x43, 0xcf, 0x37, 0x7a, 0x65, 0xb9, 0x0d, 0x9b, + 0xaa, 0x95, 0x14, 0x2e, 0x9c, 0xc1, 0x4e, 0x27, 0x64, 0x60, 0x5b, 0x25, 0xf9, 0x0b, 0x9b, 0x90, + 0xb5, 0x4e, 0x1b, 0x53, 0x1c, 0xfa, 0x6f, 0x4e, 0x83, 0xf2, 0x7c, 0x94, 0xaa, 0x6f, 0x86, 0xe3, + 0x78, 0x77, 0xd6, 0x7c, 0x7b, 0xc7, 0x76, 0x48, 0x8f, 0x58, 0xf2, 0x7d, 0x61, 0x20, 0x2e, 0xc9, + 0x99, 0x2c, 0xb9, 0x5c, 0x54, 0x09, 0x17, 0xb7, 0xa7, 0x92, 0xed, 0xbc, 0x99, 0x7e, 0xde, 0x5f, + 0xe9, 0x9e, 0x2f, 0x13, 0x2c, 0x80, 0x6f, 0xa8, 0x4c, 0x31, 0xce, 0xd2, 0x45, 0x3f, 0xaf, 0x71, + 0xdb, 0x83, 0x34, 0xb6, 0x8a, 0x8f, 0x76, 0xed, 0x7e, 0x5d, 0x51, 0xc4, 0x56, 0x8c, 0xd8, 0x9e, + 0x9b, 0xa4, 0x88, 0x7e, 0x4d, 0x83, 0x73, 0xdb, 0x79, 0x76, 0x53, 0xf1, 0x6d, 0xd7, 0x4a, 0xf7, + 0xa5, 0xc0, 0x12, 0xcb, 0xaf, 0x95, 0x73, 0x2b, 0xe0, 0xfc, 0x9e, 0xc8, 0x79, 0x92, 0x86, 0x24, + 0xc1, 0x07, 0xca, 0xcf, 0x53, 0xca, 0x24, 0x15, 0xcf, 0x93, 0x04, 0xe0, 0x24, 0x45, 0xf4, 0x1a, + 0x4c, 0x6f, 0x47, 0xf6, 0x3b, 0xa1, 0xea, 0xb7, 0x4b, 0x93, 0x57, 0xac, 0x80, 0xfc, 0x02, 0x5b, + 0x16, 0xe2, 0x98, 0x0a, 0xb2, 0x61, 0x6a, 0x9b, 0x73, 0x23, 0xa1, 0xa2, 0x37, 0xab, 0x6b, 0x0f, + 0x5c, 0x4f, 0x14, 0x45, 0x38, 0xc2, 0xaf, 0xba, 0x0a, 0xd5, 0x0f, 0xf1, 0x3b, 0xfd, 0x8a, 0x06, + 0xe7, 0x76, 0x88, 0x1f, 0xda, 0x66, 0xda, 0x70, 0x3d, 0x5d, 0x41, 0xc5, 0x79, 0x39, 0x0f, 0x23, + 0x5f, 0x2a, 0xb9, 0x20, 0x9c, 0xdf, 0x07, 0xaa, 0xf0, 0x70, 0xf3, 0x63, 0x37, 0x34, 0x42, 0xdb, + 0xbc, 0xed, 0x6d, 0x13, 0x97, 0x8e, 0x56, 0x04, 0xd0, 0x05, 0xc6, 0x3f, 0x98, 0xc2, 0xb3, 0x52, + 0x5c, 0x0d, 0x8f, 0xc2, 0xa1, 0xff, 0x99, 0x06, 0x19, 0xf3, 0x1b, 0xfa, 0x5b, 0x1a, 0xcc, 0x6c, + 0x12, 0x23, 0x1c, 0xfa, 0xe4, 0xaa, 0x11, 0xca, 0xe7, 0x28, 0xaf, 0xdc, 0x17, 0xb3, 0xdf, 0xd2, + 0x15, 0x05, 0x33, 0xbf, 0x68, 0x94, 0x11, 0x6b, 0x54, 0x10, 0x4e, 0x74, 0xe1, 0xc2, 0xfb, 0x60, + 0x3e, 0xd3, 0xf0, 0x58, 0x97, 0x41, 0xbf, 0x23, 0x0c, 0xb8, 0xe9, 0xf8, 0xc9, 0x1f, 0x85, 0x09, + 0xc3, 0xb2, 0x64, 0x8c, 0xc6, 0xe7, 0x4a, 0x5e, 0xaa, 0x5b, 0xea, 0xbb, 0x1f, 0xf6, 0x13, 0x73, + 0xbc, 0xe8, 0x0a, 0x20, 0x23, 0x71, 0x67, 0xb6, 0x1a, 0xbf, 0x89, 0x60, 0xa6, 0xff, 0xe5, 0x0c, + 0x14, 0xe7, 0xb4, 0xd0, 0xdf, 0x0b, 0x73, 0xc9, 0x80, 0x05, 0xc7, 0x70, 0xb0, 0xd6, 0x7f, 0x49, + 0x03, 0x94, 0x8d, 0x91, 0x84, 0x02, 0xa8, 0x8b, 0x1a, 0xd1, 0x47, 0x5e, 0x29, 0xeb, 0x2c, 0x9b, + 0xf0, 0xfd, 0x8e, 0xdd, 0x73, 0x45, 0x41, 0x80, 0x25, 0x21, 0xfd, 0x2f, 0x34, 0x88, 0x63, 0xc1, + 0xa1, 0x77, 0x41, 0xc3, 0x22, 0x81, 0xe9, 0xdb, 0x83, 0x30, 0x1e, 0x88, 0xf4, 0x36, 0x6d, 0xc7, + 0x20, 0xac, 0xd6, 0x43, 0x3a, 0x4c, 0x86, 0x46, 0xb0, 0xdd, 0x69, 0x0b, 0xdd, 0x94, 0x49, 0x12, + 0xb7, 0x59, 0x09, 0x16, 0x90, 0xf8, 0xf5, 0xff, 0xd8, 0x11, 0x5e, 0xff, 0xa3, 0xcd, 0xfb, 0x10, + 0xea, 0x00, 0x1d, 0x1e, 0xe6, 0x40, 0xff, 0xe7, 0x35, 0x48, 0xc6, 0xdf, 0x2b, 0x3b, 0x05, 0xd9, + 0xd8, 0x0c, 0xb5, 0x07, 0x16, 0x9b, 0xe1, 0xed, 0x2c, 0x56, 0x2d, 0x8f, 0x30, 0xce, 0x6f, 0xca, + 0xd4, 0x00, 0xb3, 0x3c, 0x3c, 0xb8, 0xac, 0x81, 0x9e, 0x55, 0x7d, 0x58, 0xa7, 0x9b, 0x6f, 0x89, + 0xf6, 0x05, 0x73, 0x4c, 0xbd, 0x27, 0xa2, 0x4f, 0xc8, 0xf1, 0x27, 0xdc, 0x55, 0xdf, 0x25, 0x3c, + 0x30, 0x27, 0x12, 0x11, 0x32, 0xa2, 0xb0, 0x1a, 0xf3, 0x89, 0x86, 0xb1, 0x5b, 0xa6, 0xfe, 0x3d, + 0x0d, 0xa6, 0x44, 0xbc, 0xab, 0x23, 0xb8, 0x1e, 0xf7, 0x60, 0x82, 0x69, 0x04, 0x95, 0x84, 0xa5, + 0xee, 0x96, 0xe7, 0x85, 0x89, 0xb8, 0x5f, 0xcc, 0x71, 0x90, 0xfd, 0x8b, 0x39, 0x7e, 0xe6, 0x30, + 0xe3, 0x9b, 0x5b, 0x76, 0x48, 0xcc, 0x30, 0x8a, 0x24, 0x14, 0x39, 0xcc, 0x28, 0xe5, 0x38, 0x51, + 0x4b, 0xff, 0xca, 0x38, 0x3c, 0x26, 0x10, 0x67, 0xe4, 0x07, 0xb9, 0x75, 0xf7, 0xe0, 0x8c, 0xf8, + 0xb8, 0x6d, 0xdf, 0xb0, 0xe5, 0x15, 0x64, 0x39, 0xd5, 0x50, 0x5c, 0x4f, 0x67, 0xd0, 0xe1, 0x3c, + 0x1a, 0x3c, 0x26, 0x0e, 0x2b, 0xbe, 0x46, 0x0c, 0x27, 0xdc, 0x8a, 0x68, 0xd7, 0xaa, 0xc4, 0xc4, + 0xc9, 0xe2, 0xc3, 0xb9, 0x54, 0xd8, 0x15, 0xa8, 0x00, 0xb4, 0x7c, 0x62, 0xa8, 0xf7, 0xaf, 0x15, + 0xbc, 0x13, 0x57, 0x73, 0x31, 0xe2, 0x02, 0x4a, 0xcc, 0xc6, 0x66, 0xec, 0x32, 0x95, 0x1d, 0x93, + 0xd0, 0xb7, 0x59, 0xfc, 0x36, 0xba, 0x2d, 0xb8, 0x92, 0x9d, 0x04, 0xe1, 0x74, 0x5d, 0xf4, 0x1c, + 0xcc, 0xb1, 0x2b, 0xe5, 0xf8, 0x91, 0xf8, 0x44, 0x1c, 0xa6, 0xfe, 0x66, 0x02, 0x82, 0x53, 0x35, + 0xf5, 0x6f, 0x6a, 0x30, 0xa3, 0x2e, 0xbb, 0x23, 0xb8, 0x35, 0xef, 0x28, 0x6c, 0xbe, 0x8a, 0xc7, + 0xad, 0x4a, 0xf6, 0x28, 0x9c, 0xfe, 0xb7, 0x6b, 0x70, 0x26, 0xa7, 0x0d, 0xbb, 0x5b, 0x24, 0xa9, + 0x23, 0xa3, 0xd2, 0xdd, 0x62, 0xe6, 0xfc, 0x91, 0x77, 0x8b, 0x69, 0x08, 0xce, 0x10, 0x46, 0xaf, + 0xc0, 0x98, 0xe9, 0xdb, 0x62, 0x62, 0xde, 0x53, 0x4e, 0x71, 0xc2, 0x9d, 0xf8, 0x01, 0x55, 0x0b, + 0x77, 0x30, 0xc5, 0x88, 0xde, 0x0d, 0xb3, 0xea, 0xbe, 0x8e, 0xce, 0x21, 0x26, 0x9f, 0xab, 0xdb, + 0x3f, 0xc0, 0xc9, 0x7a, 0xfa, 0x7f, 0x1d, 0x83, 0x86, 0x12, 0xbd, 0x0f, 0xad, 0x56, 0xd1, 0xd8, + 0xe3, 0x7e, 0x45, 0x5a, 0xfb, 0x2a, 0x8c, 0xf5, 0x06, 0xc3, 0x92, 0x2a, 0xbb, 0x44, 0x77, 0x95, + 0xa2, 0xeb, 0x0d, 0x86, 0xe8, 0x65, 0x69, 0x04, 0x28, 0xa7, 0xa6, 0x4b, 0xff, 0xd5, 0x94, 0x21, + 0x20, 0x5a, 0xd7, 0xe3, 0x85, 0xeb, 0xda, 0x85, 0xa9, 0x40, 0x58, 0x08, 0x26, 0x2a, 0x3c, 0x77, + 0x55, 0xa6, 0x5a, 0x98, 0x04, 0xb8, 0x66, 0x11, 0x59, 0x0c, 0x22, 0x22, 0x54, 0xe8, 0x18, 0xb2, + 0x87, 0x22, 0x4c, 0x69, 0xaa, 0x73, 0xa1, 0x63, 0x9d, 0x95, 0x60, 0x01, 0xc9, 0xb0, 0xfc, 0xa9, + 0x23, 0xb1, 0xfc, 0xcf, 0xd7, 0x00, 0x65, 0xbb, 0x81, 0xde, 0x02, 0x13, 0xec, 0xb1, 0x99, 0xd8, + 0xdb, 0x4a, 0x40, 0x2c, 0x23, 0x08, 0x30, 0x87, 0xa1, 0xae, 0x78, 0x7c, 0x58, 0xee, 0x7b, 0xb2, + 0x4b, 0x74, 0x41, 0x4f, 0x79, 0xa9, 0x18, 0x1d, 0xa2, 0x63, 0x85, 0x87, 0xe8, 0x3a, 0x4c, 0xf5, + 0x6d, 0x97, 0xf9, 0xce, 0x94, 0xb3, 0x9c, 0xf0, 0x5b, 0x3e, 0x8e, 0x02, 0x47, 0xb8, 0xf4, 0x1f, + 0xd6, 0xe8, 0xda, 0xb7, 0xdd, 0x90, 0xb8, 0x86, 0x6b, 0x12, 0x74, 0x17, 0xc0, 0x18, 0x86, 0x1e, + 0x97, 0x45, 0xc4, 0x16, 0x78, 0x7f, 0xc9, 0xcf, 0x2c, 0xb1, 0x2e, 0x4b, 0x8c, 0xfc, 0xf6, 0x2d, + 0xfe, 0x8d, 0x15, 0x6a, 0x94, 0x76, 0x68, 0xf7, 0xc9, 0x2b, 0xb6, 0x6b, 0x79, 0x77, 0xc4, 0xfc, + 0x56, 0xa6, 0x7d, 0x5b, 0x62, 0xe4, 0xb4, 0xe3, 0xdf, 0x58, 0xa1, 0x86, 0x3e, 0x08, 0x0b, 0x4c, + 0x47, 0x73, 0x59, 0x50, 0x55, 0xd1, 0x39, 0xcf, 0x71, 0xa2, 0x73, 0xae, 0xce, 0x42, 0xd8, 0x2d, + 0xb4, 0x0a, 0xea, 0xe0, 0xc2, 0xd6, 0xfa, 0xb7, 0x34, 0x38, 0x97, 0x3b, 0x17, 0xe8, 0x2a, 0xcc, + 0xc7, 0x9e, 0x17, 0x2a, 0x5f, 0xae, 0xc7, 0x51, 0x82, 0xaf, 0xa7, 0x2b, 0xe0, 0x6c, 0x1b, 0xb4, + 0x2a, 0x85, 0x13, 0x95, 0xef, 0x0b, 0xb7, 0x8d, 0x47, 0x04, 0xaa, 0xbc, 0xa3, 0x01, 0xe7, 0xb5, + 0xd3, 0x3f, 0x9c, 0xe8, 0x70, 0x3c, 0x61, 0x74, 0x7f, 0x6c, 0x90, 0x9e, 0xf4, 0x84, 0x97, 0xfb, + 0xa3, 0x49, 0x0b, 0x31, 0x87, 0xa1, 0x8b, 0xea, 0xeb, 0x0d, 0xc9, 0xbe, 0xa2, 0x17, 0x1c, 0xfa, + 0x10, 0x40, 0xf8, 0x38, 0xd9, 0x6e, 0x0f, 0xf5, 0xa0, 0x6e, 0x88, 0x64, 0x32, 0x62, 0xb1, 0xbd, + 0x50, 0x4e, 0x23, 0x14, 0x48, 0xb8, 0x7b, 0x63, 0xf4, 0x0b, 0x4b, 0xe4, 0xfa, 0xdf, 0xd5, 0xe0, + 0x7c, 0xfe, 0x9b, 0xaa, 0x23, 0x1c, 0xe8, 0x7d, 0x68, 0xf8, 0x71, 0x33, 0xb1, 0x32, 0x7f, 0x46, + 0x8d, 0x6e, 0xa3, 0xbc, 0xce, 0xa7, 0xc2, 0x4e, 0xcb, 0xf7, 0x82, 0xe8, 0xeb, 0xa4, 0x03, 0xde, + 0x48, 0x4d, 0x43, 0xe9, 0x09, 0x56, 0xf1, 0xeb, 0x9f, 0xae, 0x01, 0xdc, 0x24, 0xe1, 0x1d, 0xcf, + 0xdf, 0xa6, 0x73, 0xf4, 0x13, 0xf5, 0xb6, 0xef, 0x51, 0x18, 0x1f, 0x78, 0x56, 0x20, 0x18, 0x15, + 0x7b, 0x74, 0xc7, 0xdc, 0x06, 0x58, 0x29, 0x5a, 0x84, 0x09, 0x66, 0x12, 0x17, 0x87, 0x08, 0x93, + 0xd0, 0xa9, 0x7c, 0x15, 0x60, 0x5e, 0xce, 0x63, 0x86, 0x33, 0xe7, 0xe1, 0x40, 0xe8, 0x1c, 0x22, + 0x66, 0x38, 0x2f, 0xc3, 0x12, 0xaa, 0x7f, 0x66, 0x1c, 0x12, 0xe9, 0x90, 0x62, 0xcb, 0xc1, 0xf8, + 0x03, 0xb2, 0x1c, 0x7c, 0x10, 0x16, 0x1c, 0xcf, 0xb0, 0x9a, 0x86, 0x43, 0x97, 0xbd, 0xdf, 0xe5, + 0xdf, 0xc3, 0x70, 0x7b, 0x24, 0x4a, 0x6b, 0xc4, 0x58, 0xc0, 0x8d, 0x82, 0x3a, 0xb8, 0xb0, 0x35, + 0x1a, 0x2a, 0x59, 0x98, 0xa8, 0xd4, 0xb3, 0x5a, 0x39, 0x5d, 0xd4, 0x92, 0xea, 0x39, 0x2e, 0x4f, + 0xf4, 0x64, 0xa6, 0x26, 0xf4, 0x39, 0x0d, 0xce, 0x91, 0xdd, 0x90, 0xf8, 0xae, 0xe1, 0xdc, 0xf6, + 0x8d, 0xcd, 0x4d, 0xdb, 0x4c, 0x38, 0x66, 0xad, 0x1d, 0xec, 0x2f, 0x9e, 0x5b, 0xc9, 0xab, 0x70, + 0x6f, 0x7f, 0xf1, 0x99, 0x6c, 0x3e, 0xb4, 0xc8, 0x4f, 0x3c, 0xb7, 0x09, 0x5b, 0x8e, 0xf9, 0xe4, + 0x2e, 0x3c, 0x0b, 0x8d, 0x63, 0x38, 0x15, 0x27, 0x5e, 0xbd, 0xfd, 0x40, 0x83, 0x19, 0xba, 0x82, + 0x6e, 0x78, 0xa6, 0xe1, 0xb4, 0x6f, 0x76, 0x8f, 0x91, 0x4c, 0x0c, 0xdd, 0x80, 0xb3, 0x9b, 0x9e, + 0x6f, 0x92, 0xdb, 0xad, 0xb5, 0xdb, 0x9e, 0xb0, 0xaa, 0xb7, 0x6f, 0x76, 0x05, 0x5f, 0x64, 0x8a, + 0xd0, 0x95, 0x1c, 0x38, 0xce, 0x6d, 0x85, 0x6e, 0xc1, 0xb9, 0xb8, 0x7c, 0x7d, 0x10, 0x84, 0x3e, + 0x31, 0xfa, 0x14, 0x1d, 0x3f, 0x1e, 0x98, 0xbd, 0xf1, 0x4a, 0x5e, 0x05, 0x9c, 0xdf, 0x4e, 0xff, + 0xda, 0x24, 0x28, 0x0f, 0x10, 0x8e, 0x11, 0xc7, 0xfb, 0xd7, 0x35, 0x38, 0x6b, 0x3a, 0x36, 0x71, + 0xc3, 0x94, 0x97, 0x39, 0xdf, 0xf5, 0x2f, 0x97, 0x7b, 0x1a, 0x31, 0x20, 0x6e, 0xa7, 0xdd, 0xf2, + 0x5c, 0x97, 0x98, 0x61, 0x2b, 0x07, 0x3b, 0x9f, 0xb0, 0x3c, 0x08, 0xce, 0xed, 0x0d, 0x1b, 0x10, + 0x2b, 0xef, 0xb4, 0xd5, 0xb7, 0x7a, 0x2d, 0x51, 0x86, 0x25, 0x14, 0x3d, 0x0d, 0x8d, 0x9e, 0xef, + 0x0d, 0x07, 0x41, 0x8b, 0x79, 0xc3, 0x71, 0xe6, 0xc1, 0x24, 0xa5, 0xab, 0x71, 0x31, 0x56, 0xeb, + 0x50, 0xb9, 0x8f, 0xff, 0x5c, 0xf3, 0xc9, 0xa6, 0xbd, 0x2b, 0x98, 0x09, 0x93, 0xfb, 0xae, 0x2a, + 0xe5, 0x38, 0x51, 0x0b, 0xbd, 0x0d, 0xa6, 0xed, 0x20, 0x18, 0x12, 0x7f, 0x1d, 0xdf, 0x10, 0xd1, + 0x2c, 0x99, 0x0d, 0xbd, 0x13, 0x15, 0xe2, 0x18, 0x8e, 0x7e, 0x59, 0x83, 0x39, 0x9f, 0xbc, 0x36, + 0xb4, 0x7d, 0x62, 0x31, 0xa2, 0x81, 0x78, 0x06, 0xd2, 0xad, 0xf8, 0xf6, 0x64, 0x09, 0x27, 0xb0, + 0xf2, 0x4d, 0x2c, 0x4d, 0x43, 0x49, 0x20, 0x4e, 0x75, 0x81, 0xce, 0x55, 0x60, 0xf7, 0x5c, 0xdb, + 0xed, 0x2d, 0x3b, 0xbd, 0x60, 0xa1, 0xce, 0x18, 0x13, 0x97, 0x2a, 0xe3, 0x62, 0xac, 0xd6, 0xa1, + 0x8a, 0xd1, 0x30, 0xa0, 0xdb, 0xb2, 0x4f, 0xf8, 0x04, 0x4f, 0xc7, 0x6e, 0xaa, 0xeb, 0x2a, 0x00, + 0x27, 0xeb, 0x51, 0xbd, 0x39, 0x2a, 0x10, 0xd3, 0x0c, 0x3c, 0xe2, 0x06, 0xed, 0xe7, 0x7a, 0x02, + 0x82, 0x53, 0x35, 0x2f, 0x2c, 0xc3, 0x99, 0x9c, 0x61, 0x1e, 0x6b, 0xef, 0x7f, 0xb3, 0x06, 0x6f, + 0x3e, 0x74, 0x59, 0xa2, 0xaf, 0x69, 0xd0, 0x20, 0xbb, 0xa1, 0x6f, 0x48, 0xa7, 0x59, 0xfa, 0x8d, + 0x7a, 0x0f, 0x66, 0x13, 0x2c, 0xad, 0xc4, 0x94, 0xf8, 0x77, 0x93, 0xc7, 0xb9, 0x02, 0xc1, 0x6a, + 0x87, 0xa8, 0x1a, 0xc3, 0x23, 0xb2, 0xa8, 0xb6, 0x53, 0x91, 0x1a, 0x47, 0x40, 0x2e, 0xbc, 0x08, + 0xa7, 0xd3, 0x98, 0x8f, 0x35, 0x55, 0xbf, 0x5d, 0x83, 0x89, 0x35, 0xc7, 0x38, 0x91, 0xd0, 0xa4, + 0x1f, 0x4b, 0x84, 0x84, 0x2b, 0x17, 0x68, 0x8f, 0xf5, 0xb5, 0x30, 0x20, 0xe5, 0x56, 0x2a, 0x20, + 0xe5, 0x4b, 0x15, 0x68, 0x8c, 0x8e, 0x3f, 0xf9, 0x3d, 0x0d, 0xa6, 0x59, 0xbd, 0x13, 0x88, 0x93, + 0xf1, 0xd1, 0x64, 0x9c, 0x8c, 0xe7, 0xca, 0x0f, 0xaa, 0x20, 0x3e, 0xc6, 0x1f, 0x47, 0x83, 0x61, + 0x11, 0xce, 0x5e, 0x55, 0x73, 0x81, 0xf1, 0xd1, 0x3c, 0x99, 0x17, 0x90, 0x91, 0x9d, 0xac, 0x99, + 0xa8, 0x8c, 0x23, 0x13, 0x82, 0xb9, 0x30, 0x4d, 0x44, 0xdc, 0x9b, 0x68, 0x34, 0xe5, 0xc4, 0xf6, + 0x28, 0x7a, 0x4e, 0x4c, 0x2f, 0x2a, 0x09, 0x70, 0x4c, 0x42, 0xff, 0x9d, 0x1a, 0x34, 0x94, 0xaf, + 0xf9, 0x63, 0x09, 0xf8, 0x78, 0x25, 0x37, 0x73, 0x4e, 0x8d, 0x39, 0xc5, 0x9e, 0x3f, 0x46, 0xd6, + 0x9c, 0x00, 0x1a, 0x66, 0x1c, 0xc3, 0xbb, 0xd2, 0x02, 0x57, 0x62, 0x81, 0x0b, 0xe7, 0xfc, 0xb8, + 0x00, 0xab, 0x54, 0xf4, 0x7f, 0x58, 0x83, 0xa9, 0x35, 0xdf, 0xa3, 0xdf, 0xf8, 0x04, 0x18, 0xc4, + 0x46, 0x82, 0x41, 0x94, 0xdc, 0xbc, 0xbc, 0xb7, 0x85, 0x2c, 0xe2, 0xe3, 0x29, 0x16, 0xd1, 0xac, + 0x44, 0x65, 0x34, 0x93, 0xf8, 0xbe, 0x06, 0x0d, 0x51, 0xf3, 0x04, 0xd8, 0x84, 0x91, 0x64, 0x13, + 0xcf, 0x57, 0x19, 0x58, 0x01, 0xa3, 0xf8, 0xb2, 0x06, 0xb3, 0xa2, 0xc6, 0x2a, 0xe9, 0x6f, 0x10, + 0x1f, 0x5d, 0x81, 0xa9, 0x60, 0xc8, 0xbe, 0xa5, 0x18, 0xd1, 0x23, 0x2a, 0xab, 0xf0, 0x37, 0x0c, + 0x93, 0x65, 0x80, 0xe3, 0x55, 0x94, 0x48, 0xb0, 0xbc, 0x00, 0x47, 0x8d, 0xa9, 0xae, 0xea, 0x7b, + 0x4e, 0x26, 0xa2, 0x07, 0xf6, 0x1c, 0x82, 0x19, 0x84, 0xaa, 0x88, 0xf4, 0x6f, 0x64, 0x9d, 0x65, + 0x2a, 0x22, 0x05, 0x07, 0x98, 0x97, 0xeb, 0x9f, 0x1f, 0x97, 0xb3, 0xcd, 0xf8, 0xd8, 0x35, 0x98, + 0x36, 0x7d, 0x62, 0x84, 0xc4, 0x6a, 0xee, 0x1d, 0xa5, 0x73, 0x4c, 0xa0, 0x6b, 0x45, 0x2d, 0x70, + 0xdc, 0x98, 0x8a, 0x4e, 0xea, 0xc5, 0x5f, 0x2d, 0x16, 0x33, 0x0b, 0x2f, 0xfd, 0x9e, 0x87, 0x09, + 0xef, 0x8e, 0x2b, 0xbd, 0x6b, 0x46, 0x12, 0x66, 0x43, 0xb9, 0x45, 0x6b, 0x63, 0xde, 0x48, 0x8d, + 0x41, 0x33, 0x3e, 0x22, 0x06, 0x4d, 0x1f, 0xa6, 0xfa, 0xec, 0x33, 0x54, 0x0b, 0x0b, 0x9a, 0xf8, + 0xa2, 0x6a, 0x94, 0x76, 0x86, 0x1a, 0x47, 0x34, 0xa8, 0x10, 0x4c, 0xe5, 0xb4, 0x60, 0x60, 0x98, + 0x44, 0x15, 0x82, 0x6f, 0x46, 0x85, 0x38, 0x86, 0xa3, 0xbb, 0xc9, 0xf0, 0x46, 0x53, 0x15, 0xec, + 0xbe, 0xa2, 0x7f, 0x4a, 0x44, 0x23, 0x3e, 0xf9, 0x85, 0x21, 0x8e, 0xbe, 0x38, 0x2e, 0x97, 0xa9, + 0x60, 0xfc, 0xf9, 0xe9, 0xcb, 0xb4, 0x52, 0xe9, 0xcb, 0x9e, 0x81, 0x89, 0xc1, 0x96, 0x11, 0x44, + 0x6b, 0x35, 0x4a, 0x29, 0x30, 0xb1, 0x46, 0x0b, 0xef, 0xed, 0x2f, 0xce, 0x08, 0xd2, 0xec, 0x37, + 0xe6, 0x75, 0xd1, 0x10, 0xce, 0x04, 0xa1, 0xe1, 0x90, 0xae, 0x2d, 0x2c, 0x63, 0x41, 0x68, 0xf4, + 0x07, 0x25, 0x32, 0x03, 0x70, 0xef, 0xf3, 0x2c, 0x2a, 0x9c, 0x87, 0x1f, 0x7d, 0x46, 0x83, 0x05, + 0x56, 0xbe, 0x3c, 0x0c, 0x3d, 0x9e, 0x45, 0x25, 0x26, 0x7e, 0xfc, 0x7b, 0x73, 0x66, 0xc7, 0xe8, + 0x16, 0xe0, 0xc3, 0x85, 0x94, 0xd0, 0xeb, 0x70, 0xce, 0x31, 0x82, 0x70, 0xd9, 0x0c, 0xed, 0x1d, + 0x3b, 0xdc, 0x8b, 0xbb, 0x70, 0xfc, 0x54, 0x6e, 0x4c, 0x5d, 0xbe, 0x91, 0x87, 0x0c, 0xe7, 0xd3, + 0xd0, 0xff, 0x97, 0x06, 0x28, 0xbb, 0x84, 0x50, 0x1f, 0xea, 0x16, 0xd9, 0x34, 0x86, 0x4e, 0x18, + 0x49, 0x02, 0x95, 0x83, 0x6f, 0x49, 0xee, 0xdc, 0x16, 0x88, 0xb1, 0x24, 0x81, 0x06, 0x30, 0x7d, + 0x67, 0xcb, 0x0e, 0x89, 0x63, 0x07, 0xe1, 0xfd, 0x0a, 0xf6, 0x25, 0x85, 0x9f, 0x57, 0x22, 0xcc, + 0x38, 0x26, 0xa2, 0xff, 0xe2, 0x18, 0xd4, 0x8f, 0x91, 0x23, 0x77, 0x08, 0x48, 0x04, 0x06, 0xa1, + 0x12, 0x13, 0xa9, 0x62, 0x0f, 0x64, 0x62, 0x4d, 0x2b, 0x83, 0x0c, 0xe7, 0x10, 0x40, 0xaf, 0xc3, + 0x59, 0xdb, 0xdd, 0xf4, 0x8d, 0x20, 0xf4, 0x87, 0xec, 0x8e, 0xa5, 0x4a, 0x4e, 0x02, 0x66, 0x69, + 0xe8, 0xe4, 0xa0, 0xc3, 0xb9, 0x44, 0xd0, 0x26, 0x4c, 0xdd, 0xf1, 0xfc, 0x6d, 0xca, 0x40, 0xc7, + 0x2b, 0x24, 0xbd, 0x7a, 0x85, 0xe1, 0x88, 0x39, 0x27, 0xff, 0x1d, 0xe0, 0x08, 0xb9, 0xfe, 0x07, + 0x1a, 0x4c, 0xf0, 0xd7, 0x8e, 0x6f, 0x0c, 0x2d, 0x8b, 0xf5, 0xb5, 0x30, 0xce, 0x36, 0xd5, 0x7d, + 0x58, 0x8d, 0x37, 0x8a, 0xee, 0xc3, 0x3a, 0x5b, 0x20, 0xd2, 0xfc, 0xc1, 0x98, 0x18, 0x0c, 0x93, + 0x19, 0x3a, 0x70, 0x46, 0x88, 0xbf, 0x37, 0xec, 0x4d, 0x42, 0x17, 0x58, 0xdb, 0xd8, 0x0b, 0x44, + 0xb4, 0x01, 0xc6, 0x7a, 0x5b, 0x59, 0x30, 0xce, 0x6b, 0x83, 0xfe, 0x91, 0x46, 0x4f, 0xe7, 0xd0, + 0xb7, 0xcd, 0x6a, 0xc1, 0xab, 0x65, 0xe7, 0x96, 0x56, 0x39, 0x36, 0x6e, 0x3e, 0x58, 0x8f, 0x8f, + 0x69, 0x56, 0x7a, 0x6f, 0x7f, 0x71, 0x31, 0xc7, 0xf2, 0x1a, 0xdd, 0x15, 0xd0, 0xa9, 0xfd, 0xf4, + 0x0f, 0x47, 0x56, 0x61, 0xf7, 0x16, 0x51, 0x97, 0xd1, 0x35, 0x98, 0x08, 0x4c, 0x6f, 0x40, 0x8e, + 0x13, 0x92, 0x5f, 0xce, 0x70, 0x97, 0xb6, 0xc4, 0x1c, 0xc1, 0x85, 0x8f, 0xc3, 0x8c, 0xda, 0xf3, + 0x1c, 0xf3, 0x44, 0x5b, 0x35, 0x4f, 0x1c, 0xfb, 0x82, 0x52, 0x35, 0x67, 0xfc, 0x6e, 0x0d, 0x44, + 0xca, 0xca, 0x23, 0xdc, 0xce, 0x7c, 0x3c, 0x8a, 0x62, 0x5b, 0x25, 0x4f, 0x67, 0x3a, 0x35, 0x7f, + 0x3c, 0x09, 0x6a, 0x20, 0x5b, 0xe4, 0xc9, 0xf0, 0x71, 0x63, 0x15, 0x62, 0x86, 0xf3, 0xa1, 0x3d, + 0xe8, 0x80, 0x71, 0xdf, 0xd7, 0x60, 0x26, 0x11, 0x90, 0xaf, 0x0f, 0x63, 0xbe, 0xb4, 0x05, 0x94, + 0xbd, 0xbe, 0x8a, 0xbc, 0xcb, 0x1e, 0x19, 0x51, 0x09, 0x53, 0x3a, 0x32, 0x76, 0x5f, 0xed, 0x3e, + 0xc5, 0xee, 0xd3, 0xbf, 0xa4, 0xc1, 0xf9, 0x68, 0x40, 0xc9, 0x40, 0x30, 0xe8, 0x49, 0xa8, 0x1b, + 0x03, 0x9b, 0x59, 0x7e, 0x55, 0xe3, 0xf9, 0xf2, 0x5a, 0x87, 0x95, 0x61, 0x09, 0x45, 0x6f, 0x87, + 0x7a, 0xb4, 0xf4, 0x84, 0xe4, 0x27, 0xf9, 0x96, 0xbc, 0x90, 0x93, 0x35, 0xd0, 0x13, 0x4a, 0xa4, + 0xe1, 0x89, 0xf8, 0xa0, 0x96, 0x84, 0xf9, 0xf5, 0xbd, 0xfe, 0x85, 0x31, 0x98, 0xe5, 0x96, 0x92, + 0xa6, 0xed, 0x5a, 0xb6, 0xdb, 0x3b, 0x81, 0x03, 0x22, 0x91, 0xeb, 0xbd, 0x76, 0xbf, 0x72, 0xbd, + 0x5f, 0x87, 0xc9, 0xd7, 0x28, 0xa7, 0x8a, 0x16, 0xf8, 0x91, 0x18, 0x86, 0x5c, 0xbc, 0x8c, 0xc9, + 0x05, 0x58, 0xa0, 0x40, 0xa1, 0x92, 0x72, 0xbf, 0xca, 0x63, 0xfe, 0xc4, 0xd4, 0xca, 0x90, 0xe1, + 0x33, 0xf9, 0xf9, 0xf6, 0x59, 0x0c, 0xdc, 0x44, 0x8b, 0x37, 0x4a, 0x0c, 0xdc, 0x44, 0xa7, 0x0b, + 0xce, 0xb9, 0x67, 0xe1, 0x5c, 0xee, 0x6c, 0x1c, 0x2e, 0x19, 0xea, 0xdf, 0xae, 0x01, 0x4b, 0x85, + 0x7d, 0x02, 0x6b, 0xf3, 0xa3, 0x09, 0xe1, 0xe5, 0x85, 0xf2, 0x51, 0x78, 0x8b, 0xcc, 0x3f, 0xbd, + 0x94, 0xf9, 0xe7, 0x7d, 0xe5, 0x49, 0x8c, 0xb6, 0xfd, 0xfc, 0x6a, 0x0d, 0x80, 0x56, 0xe3, 0x49, + 0xc3, 0x85, 0x63, 0x2e, 0x5f, 0xd1, 0x5a, 0x92, 0x7b, 0x64, 0x57, 0xe2, 0x49, 0xde, 0xcb, 0xeb, + 0x32, 0xf3, 0xf3, 0x58, 0x7c, 0xc9, 0x90, 0xcc, 0xfa, 0x9c, 0xe4, 0x18, 0xe3, 0xf7, 0x89, 0x63, + 0xe8, 0xdf, 0xd6, 0x80, 0x65, 0x04, 0x6a, 0xdf, 0xec, 0xa2, 0x77, 0xc3, 0xac, 0xcd, 0x2f, 0xa8, + 0xdb, 0x6a, 0xc8, 0x44, 0x76, 0xd3, 0xd4, 0x51, 0x01, 0x38, 0x59, 0x0f, 0xb9, 0xca, 0xbc, 0x56, + 0xc9, 0xd8, 0x2f, 0x3a, 0x72, 0x28, 0x8f, 0xf8, 0x51, 0x0d, 0x4e, 0xa5, 0xea, 0x1e, 0x41, 0xb7, + 0x7a, 0x30, 0x2c, 0x57, 0xc9, 0x34, 0x30, 0x76, 0x02, 0x99, 0x06, 0x64, 0xd0, 0xff, 0xf1, 0x07, + 0x1c, 0xf4, 0xff, 0xbb, 0x1a, 0xb0, 0x64, 0xf0, 0x27, 0xc0, 0x7e, 0x3f, 0x92, 0x64, 0xbf, 0xcf, + 0x96, 0x5e, 0x3b, 0x05, 0x5c, 0xf7, 0x2f, 0x34, 0x60, 0x31, 0xc0, 0x85, 0x57, 0x8e, 0xe2, 0xe8, + 0xa2, 0x15, 0x38, 0xba, 0x3c, 0x26, 0xfc, 0x64, 0x52, 0x86, 0x50, 0xc5, 0x57, 0xe6, 0xed, 0x8a, + 0x2b, 0xcc, 0x58, 0x92, 0x95, 0x64, 0xdd, 0x61, 0xd0, 0xeb, 0x30, 0x1b, 0x6c, 0x79, 0x5e, 0x18, + 0x99, 0x24, 0xc4, 0xd7, 0x6b, 0x96, 0xf7, 0xa5, 0x8f, 0xc6, 0xc2, 0x77, 0x67, 0x57, 0x45, 0x8e, + 0x93, 0xb4, 0xf4, 0xdf, 0x13, 0xc3, 0x3f, 0xc6, 0x56, 0x39, 0x41, 0xd6, 0xf7, 0xd6, 0x14, 0xeb, + 0x2b, 0x4a, 0x7a, 0xff, 0xf7, 0xc5, 0x28, 0x64, 0xe8, 0xf6, 0x01, 0xcc, 0x3a, 0x6a, 0x1e, 0x27, + 0xb1, 0x30, 0x4b, 0xa5, 0x80, 0x92, 0xd1, 0x1b, 0x13, 0xc5, 0x38, 0x49, 0x80, 0xf2, 0xc7, 0xa8, + 0xf3, 0x3c, 0x39, 0x75, 0x2d, 0x76, 0x51, 0x5e, 0x53, 0x01, 0x38, 0x59, 0x4f, 0xff, 0x7a, 0x0d, + 0x2e, 0xf2, 0xbe, 0xb3, 0xf7, 0x08, 0x6d, 0x32, 0x20, 0xae, 0x45, 0x5c, 0x73, 0x8f, 0xc9, 0xc1, + 0x96, 0xd7, 0x43, 0x9f, 0xd1, 0xa0, 0x1e, 0xdd, 0x98, 0x89, 0x81, 0x7c, 0xa8, 0x42, 0xf4, 0xfb, + 0x02, 0x32, 0xf2, 0xc2, 0x8e, 0x87, 0x11, 0x14, 0xbf, 0xb0, 0xa4, 0x8c, 0x76, 0x61, 0x62, 0xe0, + 0x7b, 0x1b, 0x91, 0x0e, 0xf8, 0xca, 0xfd, 0xef, 0xc2, 0x1a, 0x45, 0xcf, 0x77, 0x1c, 0xfb, 0x17, + 0x73, 0x82, 0x3a, 0x86, 0x27, 0x8e, 0xd4, 0xf5, 0x63, 0x78, 0x10, 0xe9, 0xb7, 0x40, 0x3f, 0xbc, + 0x2f, 0xc7, 0x41, 0xf8, 0x01, 0x78, 0x5c, 0x41, 0xb8, 0xb2, 0x6b, 0x92, 0x20, 0x68, 0x19, 0x03, + 0xc3, 0xa4, 0x0a, 0x30, 0x7b, 0x31, 0xce, 0x8d, 0xd3, 0xc7, 0x40, 0xf9, 0xa9, 0x1a, 0x2c, 0x2a, + 0x38, 0x13, 0xee, 0x69, 0x11, 0xf7, 0xf8, 0xaa, 0x06, 0x0d, 0xc3, 0x75, 0xbd, 0xd0, 0x50, 0xaf, + 0x4c, 0x49, 0xd5, 0x8f, 0x93, 0x47, 0x6b, 0x69, 0x39, 0xa6, 0x93, 0xf2, 0x90, 0x50, 0x20, 0x58, + 0xed, 0xce, 0x85, 0x17, 0xe1, 0x74, 0xba, 0xd5, 0xb1, 0x34, 0xdd, 0x16, 0x9c, 0x57, 0x7a, 0xc5, + 0xae, 0x60, 0x5a, 0x5b, 0xc4, 0xdc, 0x0e, 0x8e, 0x33, 0x8f, 0x4d, 0x2a, 0x59, 0x4b, 0x24, 0x4a, + 0x6a, 0x89, 0xa7, 0x60, 0x6a, 0xc7, 0x0e, 0xec, 0x28, 0x12, 0x84, 0x82, 0xe3, 0x65, 0x5e, 0x8c, + 0x23, 0xb8, 0xfe, 0x12, 0x9c, 0x51, 0x71, 0x30, 0x26, 0x7a, 0x2c, 0x9f, 0x35, 0x7d, 0x15, 0x1e, + 0x53, 0x30, 0xe4, 0xbe, 0x5f, 0x3d, 0x0e, 0xba, 0x6f, 0xd4, 0x23, 0x9e, 0x27, 0xde, 0x31, 0x7d, + 0x47, 0x83, 0x87, 0x49, 0xd1, 0xb2, 0x13, 0x7c, 0xe3, 0xd5, 0xaa, 0xeb, 0xa2, 0x70, 0x5d, 0x8b, + 0xe8, 0x69, 0x45, 0x60, 0x5c, 0xdc, 0x35, 0x74, 0x37, 0x91, 0x57, 0xa5, 0x56, 0x49, 0x9b, 0xcc, + 0xf9, 0xca, 0xa3, 0xb2, 0xaa, 0x20, 0x1f, 0xea, 0x81, 0xf8, 0x96, 0x95, 0x9e, 0xd9, 0xe7, 0xac, + 0x0d, 0xe1, 0xff, 0x2a, 0x7e, 0x61, 0x49, 0x07, 0x7d, 0x43, 0x83, 0xb3, 0x4e, 0xce, 0xfe, 0x12, + 0x07, 0xff, 0xed, 0x07, 0xb1, 0x77, 0xb9, 0xe1, 0x3d, 0x0f, 0x82, 0x73, 0xfb, 0x82, 0xfe, 0x4e, + 0xe1, 0x83, 0xee, 0x89, 0x0a, 0x69, 0xed, 0x0e, 0xdb, 0x00, 0x25, 0xde, 0x76, 0xff, 0x1c, 0x34, + 0xbc, 0x98, 0x2d, 0x88, 0x47, 0xf8, 0xd7, 0xab, 0xf6, 0x4e, 0xe1, 0x34, 0xfc, 0x2a, 0x53, 0x29, + 0xc0, 0x2a, 0x41, 0xf4, 0x65, 0x0d, 0x90, 0x95, 0x39, 0x3e, 0xc4, 0x75, 0x2a, 0xbe, 0xff, 0x87, + 0x24, 0xbf, 0xbb, 0xc9, 0x96, 0xe3, 0x9c, 0x5e, 0xe8, 0xff, 0x6c, 0x8a, 0x0b, 0xea, 0xcc, 0x74, + 0x6e, 0xc2, 0xe4, 0x06, 0xd3, 0x75, 0x05, 0x33, 0x28, 0xaf, 0x59, 0x73, 0x95, 0x99, 0x6b, 0xa2, + 0xfc, 0x7f, 0x2c, 0x50, 0xa3, 0x25, 0x80, 0x0d, 0xc7, 0x33, 0xb7, 0x5b, 0x9d, 0x36, 0x8e, 0x84, + 0x20, 0xb6, 0x01, 0x9b, 0xb2, 0x14, 0x2b, 0x35, 0xd0, 0x87, 0x61, 0xcc, 0x92, 0xea, 0xd1, 0xf3, + 0x55, 0x34, 0xc3, 0xf8, 0x45, 0x02, 0xdd, 0x6e, 0x14, 0x2b, 0xf2, 0xa0, 0xee, 0x0a, 0x59, 0x58, + 0x6c, 0xae, 0xf2, 0x69, 0x83, 0xa4, 0x50, 0x2d, 0x65, 0xf9, 0xa8, 0x04, 0x4b, 0x22, 0x94, 0xa0, + 0x54, 0x76, 0x27, 0x2a, 0x12, 0x94, 0x9a, 0xee, 0x28, 0x3b, 0xc4, 0x9a, 0xaa, 0xb7, 0x4e, 0x1e, + 0x5d, 0x6f, 0x9d, 0x2d, 0xd4, 0x59, 0x37, 0x61, 0x32, 0x34, 0x98, 0xfb, 0xd7, 0x54, 0x05, 0xef, + 0x2b, 0x3a, 0x80, 0xdb, 0x14, 0x4d, 0x2c, 0xb3, 0xb3, 0x9f, 0x01, 0x16, 0xd8, 0xe9, 0x6a, 0xdc, + 0x61, 0x59, 0xdd, 0x44, 0x68, 0xc7, 0xf2, 0xab, 0x91, 0x27, 0x87, 0xe3, 0xab, 0x91, 0xff, 0x8f, + 0x05, 0x6a, 0xb4, 0x4d, 0x35, 0x31, 0x7e, 0x3e, 0x8a, 0x40, 0x14, 0xcb, 0x55, 0x77, 0x64, 0x10, + 0xbd, 0x6b, 0xe0, 0xbf, 0xb0, 0x24, 0x80, 0x4c, 0x98, 0x12, 0xa6, 0x0f, 0x11, 0x9f, 0xfc, 0xf9, + 0x2a, 0x39, 0x22, 0xa2, 0x9c, 0x87, 0xfc, 0x49, 0x78, 0x84, 0x59, 0xff, 0xb7, 0xe3, 0xdc, 0x6a, + 0xf5, 0x63, 0xf4, 0x97, 0xeb, 0x41, 0x3d, 0x42, 0x56, 0xc9, 0x0c, 0x18, 0xa5, 0xda, 0xe1, 0x13, + 0x2a, 0x13, 0xef, 0x48, 0xe4, 0xa8, 0x95, 0xf7, 0x8a, 0x4a, 0x09, 0x7f, 0x77, 0xa4, 0x17, 0x54, + 0xf9, 0x8e, 0x25, 0xe3, 0xa5, 0x1c, 0x4b, 0x5e, 0x80, 0x53, 0x91, 0xef, 0x9d, 0x45, 0xd8, 0xd5, + 0x96, 0xf0, 0x4e, 0x67, 0x8f, 0x95, 0x5b, 0x49, 0x10, 0x4e, 0xd7, 0x45, 0xdf, 0xd4, 0xe0, 0x71, + 0xee, 0x19, 0xdf, 0xa2, 0x47, 0x19, 0xcb, 0x7b, 0x47, 0xe2, 0x44, 0x7b, 0xb1, 0xd3, 0xc5, 0xe4, + 0xb1, 0x9d, 0x2e, 0x9e, 0x3c, 0xd8, 0x5f, 0x7c, 0xbc, 0x75, 0x04, 0xdc, 0xf8, 0x48, 0x3d, 0xd0, + 0xaf, 0xc3, 0xb4, 0xdc, 0xc2, 0xe8, 0xa2, 0x22, 0xb0, 0xc7, 0x5c, 0xf6, 0x3a, 0xd9, 0xe3, 0xd2, + 0xfb, 0x62, 0x42, 0x7a, 0xe7, 0xfa, 0xdb, 0xcb, 0xb4, 0x40, 0x08, 0xf2, 0xfa, 0x7f, 0xd0, 0xf8, + 0x9a, 0x15, 0x39, 0x22, 0x0d, 0x68, 0xf4, 0x79, 0xe4, 0x3f, 0xf6, 0xe6, 0x51, 0x2b, 0xff, 0xda, + 0x72, 0x35, 0x46, 0x83, 0x55, 0x9c, 0x68, 0x37, 0x9b, 0xc8, 0xf4, 0x6a, 0x45, 0xfe, 0x72, 0xe4, + 0x7c, 0xa6, 0x28, 0xdb, 0x46, 0xcd, 0x00, 0xa9, 0x8d, 0xce, 0x00, 0x79, 0x78, 0x06, 0x2f, 0xfd, + 0x3b, 0x63, 0x90, 0x9b, 0xbd, 0x01, 0xe9, 0x30, 0xc9, 0xdf, 0x38, 0xa8, 0x29, 0x5e, 0xf9, 0x03, + 0x08, 0x2c, 0x20, 0xc8, 0x87, 0xb3, 0xe2, 0x01, 0xc1, 0x75, 0xb2, 0x17, 0xa7, 0x16, 0x15, 0x1b, + 0xf9, 0xe8, 0x6e, 0xc4, 0x2c, 0x24, 0x58, 0x37, 0x85, 0x09, 0xe7, 0xe2, 0x46, 0xb7, 0xf8, 0x63, + 0x25, 0xd7, 0x62, 0x41, 0x73, 0xe2, 0xe5, 0xa6, 0xbe, 0xaf, 0x59, 0xc9, 0xab, 0x80, 0xf3, 0xdb, + 0xa1, 0x1d, 0x40, 0x7d, 0x63, 0x37, 0x8d, 0xad, 0x42, 0xd0, 0xf8, 0xd5, 0x0c, 0x36, 0x9c, 0x43, + 0x81, 0xee, 0x7f, 0xc3, 0x34, 0xc9, 0x20, 0x24, 0x16, 0x9f, 0xd6, 0x28, 0xdc, 0x00, 0xdb, 0xff, + 0xcb, 0x49, 0x10, 0x4e, 0xd7, 0x65, 0xae, 0xfc, 0x4c, 0x1f, 0x78, 0x83, 0x38, 0x99, 0xb0, 0xbe, + 0x3e, 0x60, 0x57, 0x7e, 0x4e, 0x63, 0xf4, 0x4d, 0xcd, 0xab, 0x70, 0x9e, 0x55, 0x5b, 0xb6, 0x98, + 0x0a, 0x10, 0x10, 0x6b, 0xd9, 0xb2, 0xd8, 0xcb, 0xc1, 0xaa, 0xa9, 0x59, 0xf5, 0x7f, 0x52, 0x83, + 0x53, 0x0c, 0x77, 0x6b, 0x19, 0x0b, 0x2b, 0x05, 0x6a, 0x47, 0xee, 0x83, 0x1c, 0xeb, 0x52, 0xda, + 0x7d, 0xf0, 0x22, 0x6f, 0xe0, 0x13, 0xc6, 0xd7, 0x0d, 0x27, 0x88, 0x5a, 0x26, 0xfc, 0x09, 0x7d, + 0x40, 0x8e, 0x11, 0x84, 0x3c, 0x53, 0x56, 0xc4, 0x5c, 0x4b, 0xb8, 0x13, 0xb2, 0xf5, 0x79, 0x23, + 0x83, 0x09, 0xe7, 0x60, 0x8f, 0x68, 0xb6, 0xbc, 0xfe, 0xc0, 0x21, 0x92, 0x66, 0xad, 0x3c, 0xcd, + 0x24, 0x26, 0x9c, 0x83, 0x5d, 0xff, 0xa2, 0x06, 0xa7, 0xd3, 0x13, 0x82, 0xee, 0x40, 0xdd, 0x17, + 0x93, 0x22, 0xd6, 0xf7, 0x6a, 0xf9, 0xd5, 0x91, 0x33, 0xd3, 0x22, 0x5d, 0x8b, 0xf8, 0x85, 0x25, + 0x31, 0xfd, 0x7f, 0x4c, 0xc2, 0x42, 0x51, 0x23, 0xf4, 0x2b, 0x1a, 0x9c, 0x37, 0xe3, 0x73, 0x6f, + 0x79, 0x18, 0x6e, 0x79, 0xbe, 0x1d, 0xda, 0x24, 0x4a, 0x04, 0xdd, 0xae, 0xd0, 0x49, 0xb9, 0x7e, + 0x78, 0x18, 0x94, 0x56, 0x2e, 0x1d, 0x5c, 0x40, 0x1f, 0x7d, 0x02, 0x60, 0x3b, 0x0e, 0x48, 0x56, + 0xab, 0x90, 0x5b, 0x96, 0xf5, 0x46, 0x89, 0x5a, 0x16, 0xf5, 0x8a, 0x29, 0x61, 0x4a, 0xb9, 0x42, + 0x8f, 0x65, 0xb6, 0x0d, 0xb6, 0xae, 0x93, 0xbd, 0x81, 0x61, 0xfb, 0x95, 0x32, 0xdb, 0xf2, 0xed, + 0xdc, 0xbd, 0x26, 0x70, 0x25, 0xa9, 0x2b, 0xe5, 0x0a, 0x3d, 0xf4, 0x8b, 0x1a, 0xcc, 0x72, 0x61, + 0x4b, 0x78, 0xe9, 0x08, 0x4e, 0x7e, 0xab, 0x7c, 0x0f, 0x6e, 0xa9, 0xe8, 0x64, 0x27, 0x98, 0x31, + 0x3e, 0x09, 0x4a, 0x12, 0xa6, 0x2b, 0x64, 0x3e, 0x99, 0x02, 0xe9, 0x3a, 0xd9, 0x13, 0x9a, 0x5c, + 0xb7, 0xc2, 0x84, 0xa4, 0x51, 0xca, 0x2e, 0x31, 0x39, 0x36, 0x0b, 0xce, 0x76, 0x82, 0x75, 0x8d, + 0x84, 0xa6, 0x25, 0x32, 0x5c, 0xdb, 0x9e, 0x4b, 0xbb, 0x36, 0x59, 0xb5, 0x6b, 0x2b, 0xb7, 0x5b, + 0xed, 0x04, 0xca, 0x64, 0xd7, 0xb2, 0xe0, 0x6c, 0x27, 0xf4, 0xef, 0xd7, 0xe0, 0xd2, 0x68, 0x64, + 0x7f, 0xc5, 0x53, 0x8f, 0xc5, 0x53, 0x7f, 0xbe, 0x06, 0x0f, 0x15, 0xec, 0xe3, 0x82, 0x39, 0xd0, + 0xfe, 0x9f, 0x9b, 0x83, 0xef, 0x69, 0x30, 0xcd, 0xe6, 0xe0, 0x8d, 0xe2, 0xc3, 0xca, 0x3a, 0x5b, + 0x70, 0xcb, 0xfc, 0xfb, 0x1a, 0xcc, 0x67, 0xc2, 0x9c, 0x1d, 0x41, 0x7a, 0x39, 0xc1, 0xbb, 0xd6, + 0x27, 0xd2, 0x79, 0x81, 0x1b, 0xb9, 0xf1, 0x0f, 0x5f, 0x81, 0xd9, 0xc4, 0x1d, 0xb3, 0x0c, 0x1b, + 0xa1, 0xe5, 0x86, 0x8d, 0x50, 0xa3, 0x42, 0xd4, 0x46, 0x47, 0x85, 0xa8, 0xc1, 0x85, 0x62, 0xde, + 0xfd, 0x97, 0x66, 0xd9, 0xcb, 0xad, 0x9f, 0x3d, 0x44, 0xff, 0xd2, 0xcc, 0x81, 0x3c, 0x4f, 0x0a, + 0xcf, 0xcd, 0xbf, 0x3a, 0x4f, 0x8e, 0x35, 0xa1, 0xff, 0x78, 0x4e, 0xf0, 0x52, 0x76, 0x0f, 0xf0, + 0x51, 0x98, 0x64, 0x61, 0x51, 0x22, 0xa9, 0xf7, 0xbd, 0xe5, 0xe3, 0xad, 0x04, 0xdc, 0xc6, 0xc0, + 0xff, 0xc7, 0x02, 0x2d, 0x6a, 0xc3, 0x69, 0xd3, 0xf1, 0x86, 0xd6, 0x9a, 0xef, 0x6d, 0xda, 0x0e, + 0xb9, 0x19, 0x9b, 0x33, 0x64, 0x34, 0xb9, 0x56, 0x0a, 0x8e, 0x33, 0x2d, 0x50, 0x57, 0xbd, 0x19, + 0x78, 0x4f, 0x59, 0x5f, 0x26, 0x1e, 0x56, 0x5c, 0xde, 0x08, 0xf8, 0x00, 0x24, 0x62, 0x8b, 0xd1, + 0x93, 0x92, 0x17, 0x4b, 0x46, 0xca, 0x93, 0xdc, 0x35, 0x52, 0xc4, 0x65, 0x51, 0x80, 0x15, 0x2a, + 0x28, 0x80, 0xc6, 0x56, 0x9c, 0x2c, 0x5b, 0x48, 0x93, 0x2f, 0x55, 0xcd, 0xd4, 0xcd, 0x2d, 0x60, + 0x4a, 0x01, 0x56, 0xa9, 0xa0, 0x80, 0x2b, 0x14, 0xdc, 0x16, 0x5a, 0x29, 0xb3, 0x6a, 0x6c, 0x65, + 0x8d, 0x47, 0x1a, 0x97, 0x61, 0x85, 0x0c, 0x25, 0xea, 0xca, 0xe8, 0x46, 0xe2, 0x0a, 0xac, 0x1c, + 0xd1, 0x38, 0x48, 0x52, 0x4c, 0x34, 0x2e, 0xc3, 0x0a, 0x19, 0x3a, 0xbd, 0xfd, 0x38, 0xa6, 0x95, + 0xb8, 0x4d, 0x78, 0xa9, 0x6a, 0x70, 0x31, 0x61, 0x60, 0x8c, 0x0b, 0xb0, 0x4a, 0x05, 0x79, 0x00, + 0x7d, 0x19, 0xeb, 0x4a, 0x5c, 0x2d, 0x94, 0x1b, 0x69, 0x1c, 0x32, 0x8b, 0x2b, 0x49, 0xf1, 0x6f, + 0xac, 0x90, 0x40, 0xdb, 0xca, 0xcd, 0x12, 0x54, 0x30, 0xba, 0x1f, 0xe9, 0x56, 0xe9, 0x5d, 0xb1, + 0xb9, 0xb2, 0xc1, 0xf6, 0xed, 0x23, 0x8a, 0xa9, 0xf2, 0xde, 0xfe, 0xe2, 0x0c, 0x63, 0x26, 0x19, + 0xd3, 0x65, 0xec, 0xae, 0x35, 0x33, 0xca, 0x5d, 0x0b, 0x5d, 0xa5, 0x4a, 0x96, 0xe2, 0xe9, 0xcc, + 0x18, 0xc4, 0x2c, 0x6b, 0x22, 0xa3, 0xa3, 0x75, 0xd3, 0x15, 0x70, 0xb6, 0x0d, 0x97, 0x2e, 0x88, + 0xc5, 0xda, 0xcf, 0xa9, 0xd2, 0x05, 0x2f, 0xc3, 0x12, 0x8a, 0xee, 0xc0, 0x4c, 0xa0, 0x38, 0x88, + 0x89, 0xc4, 0x4b, 0x55, 0x2e, 0x83, 0x84, 0x77, 0x18, 0x8b, 0x4b, 0xa3, 0x96, 0xe0, 0x04, 0x21, + 0xf4, 0x09, 0x98, 0x8e, 0x8c, 0xd7, 0xc1, 0xc2, 0xe9, 0x0a, 0xaf, 0x8c, 0xf2, 0x43, 0x9c, 0xc5, + 0xd6, 0xe8, 0x08, 0x14, 0xe0, 0x98, 0x20, 0xda, 0x49, 0xbe, 0xf1, 0x9d, 0xbf, 0x3f, 0xaf, 0x1a, + 0xa5, 0xdb, 0x4f, 0xd1, 0xfb, 0x5e, 0xd4, 0x82, 0x79, 0xb2, 0x3b, 0xf0, 0x82, 0xa1, 0x4f, 0x58, + 0x84, 0x45, 0xf6, 0x85, 0x50, 0x7c, 0x73, 0xb3, 0x92, 0x06, 0xe2, 0x6c, 0x7d, 0xf4, 0x79, 0x0d, + 0x4e, 0xf3, 0xcc, 0x55, 0xf4, 0x38, 0xf3, 0x5c, 0xe2, 0x86, 0xc1, 0xc2, 0x99, 0x0a, 0xc1, 0x4d, + 0xbb, 0x29, 0x64, 0xc2, 0x88, 0x9d, 0x2a, 0xc5, 0x19, 0xa2, 0xfa, 0xbf, 0xd0, 0x00, 0xa4, 0xa1, + 0x92, 0x9c, 0x80, 0xf5, 0x96, 0x24, 0xac, 0xb7, 0xad, 0x6a, 0x96, 0x55, 0x52, 0xf8, 0x4e, 0xf0, + 0x8f, 0x34, 0x98, 0x8b, 0xab, 0x9d, 0x80, 0xa2, 0x65, 0x25, 0x15, 0xad, 0xf7, 0x55, 0x1c, 0x58, + 0x81, 0xb6, 0xf5, 0x7f, 0x6a, 0xea, 0xb0, 0x98, 0xcc, 0x73, 0x47, 0xb9, 0xb3, 0xe4, 0xb7, 0xa4, + 0x9d, 0x4a, 0x77, 0x96, 0xea, 0xeb, 0xab, 0x78, 0xc4, 0x39, 0x77, 0x98, 0x9f, 0x4c, 0x08, 0x1c, + 0x55, 0x9e, 0x19, 0x4a, 0xe9, 0x22, 0xa2, 0xcd, 0xa7, 0xe0, 0x30, 0xe9, 0xc3, 0x57, 0x19, 0x10, + 0x7f, 0xf9, 0xb3, 0x5c, 0xf2, 0x69, 0x9b, 0x32, 0xe4, 0x91, 0x6c, 0x47, 0xff, 0x8d, 0x59, 0x68, + 0x28, 0x86, 0xfd, 0x1f, 0xcb, 0x2d, 0xf5, 0x10, 0x1a, 0xa6, 0xe7, 0x06, 0xa1, 0x6f, 0x28, 0xb1, + 0x6c, 0xaa, 0x12, 0x95, 0x9c, 0xaf, 0x15, 0xa3, 0xc6, 0x2a, 0x1d, 0x7a, 0x4e, 0xcb, 0x85, 0x36, + 0x76, 0x3f, 0x2e, 0xc7, 0x47, 0x2d, 0xae, 0x77, 0x02, 0x44, 0x32, 0x1f, 0xe1, 0x69, 0x77, 0xea, + 0x71, 0x0e, 0x88, 0x4e, 0x70, 0x4d, 0xc2, 0xb0, 0x52, 0x0f, 0xbd, 0x0e, 0xb3, 0x8e, 0x1a, 0xfd, + 0x5d, 0x48, 0xa4, 0xe5, 0x1c, 0xce, 0x13, 0x71, 0xe4, 0xb9, 0x85, 0x35, 0x51, 0x84, 0x93, 0xb4, + 0xd0, 0x36, 0x4c, 0x3b, 0x51, 0xca, 0x02, 0x21, 0x96, 0xbe, 0x58, 0x9a, 0x30, 0xc3, 0xc2, 0x7d, + 0x59, 0xe4, 0x4f, 0x1c, 0xe3, 0xa7, 0xeb, 0x4e, 0xfe, 0xa8, 0xe6, 0xcf, 0x12, 0x53, 0x93, 0xeb, + 0x4e, 0x16, 0x05, 0x58, 0xa1, 0x52, 0xe0, 0x6f, 0x50, 0x2f, 0xe5, 0x6f, 0x30, 0x84, 0x33, 0x3e, + 0x09, 0xfd, 0xbd, 0xd6, 0x9e, 0xc9, 0xf2, 0x8e, 0xf8, 0x21, 0x53, 0x16, 0xa7, 0xcb, 0xc5, 0xa4, + 0xc0, 0x59, 0x54, 0x38, 0x0f, 0x3f, 0x7a, 0x14, 0xc6, 0xa9, 0x0c, 0x23, 0x42, 0xc2, 0x31, 0x93, + 0x0e, 0x95, 0x70, 0x30, 0x2b, 0x45, 0xef, 0x82, 0x46, 0x48, 0xcc, 0x2d, 0xd7, 0x36, 0x0d, 0xa7, + 0xd3, 0x16, 0x02, 0x62, 0x2c, 0x12, 0xc4, 0x20, 0xac, 0xd6, 0x43, 0x4d, 0x18, 0x1b, 0xda, 0x96, + 0x90, 0x0c, 0x7f, 0x5a, 0x5e, 0xc4, 0x75, 0xda, 0xf7, 0xf6, 0x17, 0xdf, 0x1c, 0x3f, 0x7a, 0x96, + 0x23, 0xb9, 0x3c, 0xd8, 0xee, 0x5d, 0x0e, 0xf7, 0x06, 0x24, 0x58, 0x5a, 0xef, 0xb4, 0x31, 0x6d, + 0x9c, 0xe7, 0x7f, 0x31, 0x7b, 0x0c, 0xff, 0x8b, 0x2f, 0x6b, 0x70, 0xc6, 0x48, 0xdf, 0x21, 0x92, + 0x60, 0x61, 0xae, 0x02, 0x57, 0xce, 0xbf, 0x98, 0x8c, 0x43, 0xf3, 0x2e, 0x67, 0xe9, 0xe1, 0xbc, + 0x4e, 0x20, 0x1f, 0x50, 0xdf, 0xee, 0xc9, 0x44, 0x0e, 0xe2, 0x53, 0x9f, 0x2a, 0x67, 0x17, 0x58, + 0xcd, 0x60, 0xc2, 0x39, 0xd8, 0xd1, 0x2e, 0x34, 0xcc, 0xd8, 0x44, 0xc2, 0x12, 0x7f, 0x96, 0x96, + 0xad, 0x52, 0xf6, 0x16, 0x11, 0xb6, 0x4a, 0x31, 0xc0, 0xa8, 0xa4, 0xd0, 0x17, 0x34, 0xb8, 0x40, + 0x37, 0x8d, 0xa2, 0xbf, 0xde, 0xf6, 0xed, 0x5e, 0x8f, 0xf8, 0x6c, 0xd8, 0xf3, 0xc7, 0x1e, 0x36, + 0x4b, 0x26, 0x7a, 0xa3, 0x10, 0x23, 0x1e, 0x41, 0x4d, 0xff, 0x6f, 0x1a, 0x64, 0xa4, 0x40, 0x64, + 0xc2, 0x14, 0x1d, 0x61, 0xfb, 0x66, 0x57, 0xc8, 0x41, 0xcf, 0x97, 0x3c, 0x3b, 0x18, 0x0e, 0x6e, + 0x4d, 0x15, 0x3f, 0x70, 0x84, 0x99, 0xaa, 0x25, 0xae, 0x12, 0x02, 0x55, 0xc8, 0x7b, 0xe5, 0xce, + 0x67, 0x35, 0x96, 0x2a, 0x57, 0x4b, 0xd4, 0x12, 0x9c, 0x20, 0xa4, 0xdf, 0x00, 0x88, 0x85, 0xf7, + 0xca, 0x0e, 0x3e, 0xff, 0x7e, 0x02, 0xce, 0x55, 0x75, 0x68, 0x67, 0xe9, 0x28, 0x58, 0x62, 0xe3, + 0xe5, 0xcd, 0x90, 0xf8, 0xb7, 0x6e, 0xad, 0xca, 0xa4, 0xaf, 0x25, 0xf3, 0x61, 0xc4, 0xa9, 0xb1, + 0x33, 0x18, 0x71, 0x01, 0x25, 0xa6, 0xb8, 0x88, 0xf4, 0x91, 0x98, 0x4a, 0x57, 0x43, 0x3f, 0x08, + 0xc5, 0x13, 0x71, 0xae, 0xb8, 0xa4, 0x81, 0x38, 0x5b, 0x3f, 0x8d, 0x84, 0x27, 0x59, 0xa6, 0xa7, + 0xb3, 0x96, 0x45, 0xc2, 0x33, 0x2d, 0x67, 0xeb, 0xab, 0x48, 0xf8, 0x97, 0x72, 0x4d, 0x1e, 0x9c, + 0x3f, 0x85, 0x44, 0x02, 0x71, 0xb6, 0x3e, 0xb2, 0xe0, 0x51, 0x9f, 0x98, 0x5e, 0xbf, 0x4f, 0x5c, + 0x8b, 0x27, 0x40, 0x32, 0xfc, 0x9e, 0xed, 0x5e, 0xf1, 0x0d, 0x56, 0x91, 0x1d, 0xc0, 0x5a, 0xf3, + 0xb1, 0x83, 0xfd, 0xc5, 0x47, 0xf1, 0x88, 0x7a, 0x78, 0x24, 0x16, 0xd4, 0x87, 0x53, 0x43, 0x16, + 0xf7, 0xdc, 0xef, 0xb8, 0x21, 0xf1, 0x77, 0x0c, 0xa7, 0x64, 0xf6, 0x70, 0xc6, 0xc6, 0xd7, 0x93, + 0xa8, 0x70, 0x1a, 0x37, 0xda, 0xa3, 0xa7, 0xa2, 0xe8, 0x8e, 0x42, 0xb2, 0x5e, 0x3e, 0x61, 0x0b, + 0xce, 0xa2, 0xc3, 0x79, 0x34, 0xf4, 0xbf, 0xad, 0x81, 0x70, 0x31, 0xa5, 0x87, 0xa4, 0x72, 0x79, + 0x53, 0x4f, 0x5d, 0xdc, 0x3c, 0x2a, 0x9e, 0xd1, 0xd5, 0x62, 0xa8, 0xf2, 0x84, 0xee, 0xad, 0x4a, + 0xec, 0x81, 0xe9, 0x58, 0xa2, 0xe0, 0x98, 0x95, 0xdc, 0x01, 0xff, 0x1f, 0x4c, 0x0d, 0x7c, 0xbb, + 0x6f, 0xf8, 0x7b, 0x42, 0xb8, 0x9b, 0xe5, 0x81, 0x14, 0xd9, 0x0d, 0x2b, 0xdd, 0x3b, 0x02, 0xaa, + 0x7f, 0x5f, 0x03, 0xd1, 0x9a, 0xa5, 0xb9, 0x38, 0x52, 0xb6, 0x83, 0x43, 0x1d, 0xcd, 0x94, 0x2c, + 0x0d, 0x63, 0x85, 0x59, 0x1a, 0x1e, 0x50, 0xf2, 0x82, 0xef, 0x68, 0x70, 0x2a, 0x19, 0x08, 0x22, + 0x40, 0x4f, 0xc0, 0x94, 0x08, 0xd6, 0x24, 0xc2, 0xbd, 0xf0, 0x57, 0xb0, 0xbc, 0x08, 0x47, 0xb0, + 0xa4, 0xc5, 0xa5, 0x8a, 0xc2, 0x95, 0x1f, 0x90, 0xe2, 0x10, 0xd5, 0x67, 0x7f, 0x0e, 0x26, 0x79, + 0x74, 0x21, 0xf4, 0x0b, 0xb9, 0x4f, 0xb3, 0x6e, 0x54, 0x08, 0x60, 0x54, 0xe2, 0x05, 0x56, 0x22, + 0xf8, 0x74, 0x6d, 0x64, 0xf0, 0xe9, 0x2e, 0x4f, 0xdf, 0x52, 0xc5, 0xe0, 0xde, 0xc2, 0x1d, 0x91, + 0xd8, 0x34, 0x4a, 0xdd, 0x32, 0x4c, 0xd8, 0xa1, 0xc7, 0x2b, 0x48, 0x18, 0x7c, 0x0a, 0x14, 0x6b, + 0xf4, 0xdc, 0x08, 0x4b, 0x74, 0x1c, 0xcd, 0x65, 0xa2, 0x82, 0xf7, 0xa7, 0x98, 0xf5, 0x23, 0x44, + 0x73, 0x91, 0xbb, 0x69, 0xb2, 0x70, 0x37, 0xf5, 0x60, 0x4a, 0xec, 0x07, 0xc1, 0x1d, 0x9f, 0xaf, + 0x92, 0x63, 0x45, 0x89, 0x02, 0xc8, 0x0b, 0x70, 0x84, 0x9d, 0x9e, 0xb9, 0x7d, 0x63, 0xd7, 0xee, + 0x0f, 0xfb, 0x8c, 0x27, 0x4e, 0xa8, 0x55, 0x59, 0x31, 0x8e, 0xe0, 0xac, 0x2a, 0x77, 0x9b, 0x65, + 0x4a, 0x85, 0x5a, 0x55, 0xe4, 0xe6, 0x8e, 0xe0, 0xe8, 0x43, 0x50, 0xef, 0x1b, 0xbb, 0xdd, 0xa1, + 0xdf, 0x23, 0xc2, 0x00, 0x5d, 0x6c, 0xf4, 0x1a, 0x86, 0xb6, 0xb3, 0x44, 0xd5, 0xe1, 0xd0, 0x5f, + 0xea, 0xb8, 0xe1, 0x2d, 0xbf, 0x1b, 0xfa, 0x32, 0x85, 0xc3, 0xaa, 0xc0, 0x82, 0x25, 0x3e, 0xe4, + 0xc0, 0x5c, 0xdf, 0xd8, 0x5d, 0x77, 0x0d, 0x99, 0x42, 0xb8, 0x51, 0x92, 0x02, 0xbb, 0xe9, 0x5e, + 0x4d, 0xe0, 0xc2, 0x29, 0xdc, 0x39, 0x97, 0xea, 0x33, 0x0f, 0xea, 0x52, 0x7d, 0x59, 0x3e, 0xa6, + 0x98, 0x65, 0xcb, 0xf0, 0xe1, 0x3c, 0xff, 0xda, 0xd1, 0xef, 0x24, 0x3e, 0x2a, 0xdf, 0x49, 0xcc, + 0x55, 0xb8, 0xad, 0x1b, 0xf1, 0x46, 0x62, 0x07, 0x1a, 0x96, 0x11, 0x1a, 0xbc, 0x34, 0x58, 0x38, + 0x55, 0xc1, 0x32, 0xd7, 0x96, 0x78, 0x94, 0xac, 0x7b, 0x31, 0x6e, 0xac, 0x12, 0x42, 0xb7, 0x78, + 0x8a, 0x59, 0x87, 0x84, 0x71, 0x15, 0x66, 0x27, 0x3e, 0xcd, 0x6f, 0x02, 0xa2, 0x84, 0xb0, 0x99, + 0x0a, 0x38, 0xbf, 0x1d, 0x15, 0x53, 0x79, 0xf8, 0x83, 0xf9, 0x38, 0xfe, 0x68, 0x22, 0xc4, 0xd3, + 0x5f, 0xcf, 0x33, 0x28, 0xa3, 0x0a, 0x0f, 0xc6, 0x38, 0x7f, 0x28, 0x6b, 0x56, 0x46, 0x7f, 0x4f, + 0x83, 0x85, 0x7e, 0x41, 0x7a, 0x3a, 0x61, 0xe8, 0x5e, 0xaf, 0xc2, 0x23, 0x0a, 0x73, 0xde, 0x35, + 0x1f, 0x3f, 0xd8, 0x5f, 0x3c, 0x34, 0x33, 0x1e, 0x2e, 0xec, 0x5c, 0xd5, 0x67, 0xbd, 0x55, 0x62, + 0x5f, 0xfd, 0xba, 0x06, 0xa7, 0xd3, 0x47, 0x81, 0x9a, 0x14, 0x57, 0x7b, 0xc0, 0x49, 0x71, 0x15, + 0x3f, 0x99, 0xda, 0x08, 0x3f, 0x99, 0x17, 0xe0, 0x7c, 0xfe, 0xea, 0xa0, 0xc2, 0x19, 0x4b, 0x45, + 0x2d, 0x14, 0xa2, 0x38, 0x63, 0x09, 0x2d, 0xc4, 0x1c, 0xd6, 0x7c, 0xf5, 0xbb, 0x3f, 0xba, 0xf4, + 0xa6, 0x3f, 0xfc, 0xd1, 0xa5, 0x37, 0xfd, 0xe0, 0x47, 0x97, 0xde, 0xf4, 0xa9, 0x83, 0x4b, 0xda, + 0x77, 0x0f, 0x2e, 0x69, 0x7f, 0x78, 0x70, 0x49, 0xfb, 0xc1, 0xc1, 0x25, 0xed, 0x5f, 0x1f, 0x5c, + 0xd2, 0xfe, 0xe6, 0xbf, 0xb9, 0xf4, 0xa6, 0x0f, 0x3d, 0x13, 0x0f, 0xf2, 0x72, 0x34, 0xb6, 0xf8, + 0x9f, 0xc1, 0x76, 0xef, 0x32, 0x1d, 0x64, 0x14, 0x47, 0x8e, 0x0f, 0xf2, 0xff, 0x06, 0x00, 0x00, + 0xff, 0xff, 0x90, 0xf5, 0xe0, 0xce, 0x27, 0xd2, 0x00, 0x00, } func (m *Addon) Marshal() (dAtA []byte, err error) { @@ -9447,6 +9552,13 @@ func (m *Machine) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Architecture != nil { + i -= len(*m.Architecture) + copy(dAtA[i:], *m.Architecture) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Architecture))) + i-- + dAtA[i] = 0x1a + } if m.Image != nil { { size, err := m.Image.MarshalToSizedBuffer(dAtA[:i]) @@ -9602,6 +9714,15 @@ func (m *MachineImageVersion) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Architectures) > 0 { + for iNdEx := len(m.Architectures) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Architectures[iNdEx]) + copy(dAtA[i:], m.Architectures[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Architectures[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } if len(m.CRI) > 0 { for iNdEx := len(m.CRI) - 1; iNdEx >= 0; iNdEx-- { { @@ -9649,6 +9770,13 @@ func (m *MachineType) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Architecture != nil { + i -= len(*m.Architecture) + copy(dAtA[i:], *m.Architecture) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Architecture))) + i-- + dAtA[i] = 0x3a + } if m.Usable != nil { i-- if *m.Usable { @@ -10102,6 +10230,57 @@ func (m *NginxIngress) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *NodeLocalDNS) 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 *NodeLocalDNS) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *NodeLocalDNS) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ForceTCPToUpstreamDNS != nil { + i-- + if *m.ForceTCPToUpstreamDNS { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if m.ForceTCPToClusterDNS != nil { + i-- + if *m.ForceTCPToClusterDNS { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *OIDCConfig) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12762,6 +12941,30 @@ func (m *ShootCredentialsRotation) MarshalToSizedBuffer(dAtA []byte) (int, error _ = i var l int _ = l + if m.ETCDEncryptionKey != nil { + { + size, err := m.ETCDEncryptionKey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.ServiceAccountKey != nil { + { + size, err := m.ServiceAccountKey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } if m.Observability != nil { { size, err := m.Observability.MarshalToSizedBuffer(dAtA[:i]) @@ -12813,6 +13016,58 @@ func (m *ShootCredentialsRotation) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } +func (m *ShootETCDEncryptionKeyRotation) 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 *ShootETCDEncryptionKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ShootETCDEncryptionKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ShootKubeconfigRotation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13085,6 +13340,58 @@ func (m *ShootSSHKeypairRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *ShootServiceAccountKeyRotation) 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 *ShootServiceAccountKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ShootServiceAccountKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ShootSpec) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -13483,6 +13790,20 @@ func (m *ShootStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.LastHibernationTriggerTime != nil { + { + size, err := m.LastHibernationTriggerTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x8a + } if m.Credentials != nil { { size, err := m.Credentials.MarshalToSizedBuffer(dAtA[:i]) @@ -13669,6 +13990,18 @@ func (m *SystemComponents) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.NodeLocalDNS != nil { + { + size, err := m.NodeLocalDNS.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } if m.CoreDNS != nil { { size, err := m.CoreDNS.MarshalToSizedBuffer(dAtA[:i]) @@ -15834,6 +16167,10 @@ func (m *Machine) Size() (n int) { l = m.Image.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.Architecture != nil { + l = len(*m.Architecture) + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -15898,6 +16235,12 @@ func (m *MachineImageVersion) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) } } + if len(m.Architectures) > 0 { + for _, s := range m.Architectures { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } return n } @@ -15922,6 +16265,10 @@ func (m *MachineType) Size() (n int) { if m.Usable != nil { n += 2 } + if m.Architecture != nil { + l = len(*m.Architecture) + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -16072,6 +16419,22 @@ func (m *NginxIngress) Size() (n int) { return n } +func (m *NodeLocalDNS) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + if m.ForceTCPToClusterDNS != nil { + n += 2 + } + if m.ForceTCPToUpstreamDNS != nil { + n += 2 + } + return n +} + func (m *OIDCConfig) Size() (n int) { if m == nil { return 0 @@ -17062,6 +17425,33 @@ func (m *ShootCredentialsRotation) Size() (n int) { l = m.Observability.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.ServiceAccountKey != nil { + l = m.ServiceAccountKey.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ETCDEncryptionKey != nil { + l = m.ETCDEncryptionKey.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ShootETCDEncryptionKeyRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if m.LastCompletionTime != nil { + l = m.LastCompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationTime != nil { + l = m.LastInitiationTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -17169,6 +17559,25 @@ func (m *ShootSSHKeypairRotation) Size() (n int) { return n } +func (m *ShootServiceAccountKeyRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if m.LastCompletionTime != nil { + l = m.LastCompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationTime != nil { + l = m.LastInitiationTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *ShootSpec) Size() (n int) { if m == nil { return 0 @@ -17371,6 +17780,10 @@ func (m *ShootStatus) Size() (n int) { l = m.Credentials.Size() n += 2 + l + sovGenerated(uint64(l)) } + if m.LastHibernationTriggerTime != nil { + l = m.LastHibernationTriggerTime.Size() + n += 2 + l + sovGenerated(uint64(l)) + } return n } @@ -17384,6 +17797,10 @@ func (m *SystemComponents) Size() (n int) { l = m.CoreDNS.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.NodeLocalDNS != nil { + l = m.NodeLocalDNS.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -18675,6 +19092,7 @@ func (this *Machine) String() string { s := strings.Join([]string{`&Machine{`, `Type:` + fmt.Sprintf("%v", this.Type) + `,`, `Image:` + strings.Replace(this.Image.String(), "ShootMachineImage", "ShootMachineImage", 1) + `,`, + `Architecture:` + valueToStringGenerated(this.Architecture) + `,`, `}`, }, "") return s @@ -18721,6 +19139,7 @@ func (this *MachineImageVersion) String() string { s := strings.Join([]string{`&MachineImageVersion{`, `ExpirableVersion:` + strings.Replace(strings.Replace(this.ExpirableVersion.String(), "ExpirableVersion", "ExpirableVersion", 1), `&`, ``, 1) + `,`, `CRI:` + repeatedStringForCRI + `,`, + `Architectures:` + fmt.Sprintf("%v", this.Architectures) + `,`, `}`, }, "") return s @@ -18736,6 +19155,7 @@ func (this *MachineType) String() string { `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `Storage:` + strings.Replace(this.Storage.String(), "MachineTypeStorage", "MachineTypeStorage", 1) + `,`, `Usable:` + valueToStringGenerated(this.Usable) + `,`, + `Architecture:` + valueToStringGenerated(this.Architecture) + `,`, `}`, }, "") return s @@ -18845,6 +19265,18 @@ func (this *NginxIngress) String() string { }, "") return s } +func (this *NodeLocalDNS) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeLocalDNS{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `ForceTCPToClusterDNS:` + valueToStringGenerated(this.ForceTCPToClusterDNS) + `,`, + `ForceTCPToUpstreamDNS:` + valueToStringGenerated(this.ForceTCPToUpstreamDNS) + `,`, + `}`, + }, "") + return s +} func (this *OIDCConfig) String() string { if this == nil { return "nil" @@ -19581,6 +20013,20 @@ func (this *ShootCredentialsRotation) String() string { `Kubeconfig:` + strings.Replace(this.Kubeconfig.String(), "ShootKubeconfigRotation", "ShootKubeconfigRotation", 1) + `,`, `SSHKeypair:` + strings.Replace(this.SSHKeypair.String(), "ShootSSHKeypairRotation", "ShootSSHKeypairRotation", 1) + `,`, `Observability:` + strings.Replace(this.Observability.String(), "ShootObservabilityRotation", "ShootObservabilityRotation", 1) + `,`, + `ServiceAccountKey:` + strings.Replace(this.ServiceAccountKey.String(), "ShootServiceAccountKeyRotation", "ShootServiceAccountKeyRotation", 1) + `,`, + `ETCDEncryptionKey:` + strings.Replace(this.ETCDEncryptionKey.String(), "ShootETCDEncryptionKeyRotation", "ShootETCDEncryptionKeyRotation", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ShootETCDEncryptionKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ShootETCDEncryptionKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, `}`, }, "") return s @@ -19657,6 +20103,18 @@ func (this *ShootSSHKeypairRotation) String() string { }, "") return s } +func (this *ShootServiceAccountKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ShootServiceAccountKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, + `}`, + }, "") + return s +} func (this *ShootSpec) String() string { if this == nil { return "nil" @@ -19795,6 +20253,7 @@ func (this *ShootStatus) String() string { `AdvertisedAddresses:` + repeatedStringForAdvertisedAddresses + `,`, `MigrationStartTime:` + strings.Replace(fmt.Sprintf("%v", this.MigrationStartTime), "Time", "v11.Time", 1) + `,`, `Credentials:` + strings.Replace(this.Credentials.String(), "ShootCredentials", "ShootCredentials", 1) + `,`, + `LastHibernationTriggerTime:` + strings.Replace(fmt.Sprintf("%v", this.LastHibernationTriggerTime), "Time", "v11.Time", 1) + `,`, `}`, }, "") return s @@ -19805,6 +20264,7 @@ func (this *SystemComponents) String() string { } s := strings.Join([]string{`&SystemComponents{`, `CoreDNS:` + strings.Replace(this.CoreDNS.String(), "CoreDNS", "CoreDNS", 1) + `,`, + `NodeLocalDNS:` + strings.Replace(this.NodeLocalDNS.String(), "NodeLocalDNS", "NodeLocalDNS", 1) + `,`, `}`, }, "") return s @@ -31944,63 +32404,95 @@ func (m *LastOperation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Type = LastOperationType(dAtA[iNdEx:postIndex]) + m.Type = LastOperationType(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 *Machine) 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: Machine: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Machine: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", 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.Type = 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 *Machine) 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: Machine: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Machine: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -32010,29 +32502,33 @@ func (m *Machine) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Type = string(dAtA[iNdEx:postIndex]) + if m.Image == nil { + m.Image = &ShootMachineImage{} + } + if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 2: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Architecture", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -32042,27 +32538,24 @@ func (m *Machine) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Image == nil { - m.Image = &ShootMachineImage{} - } - if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + s := string(dAtA[iNdEx:postIndex]) + m.Architecture = &s iNdEx = postIndex default: iNdEx = preIndex @@ -32507,6 +33000,38 @@ func (m *MachineImageVersion) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Architectures", 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.Architectures = append(m.Architectures, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -32745,6 +33270,39 @@ func (m *MachineType) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.Usable = &b + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Architecture", 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.Architecture = &s + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -33992,6 +34550,118 @@ func (m *NginxIngress) Unmarshal(dAtA []byte) error { } return nil } +func (m *NodeLocalDNS) 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: NodeLocalDNS: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeLocalDNS: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ForceTCPToClusterDNS", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ForceTCPToClusterDNS = &b + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ForceTCPToUpstreamDNS", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ForceTCPToUpstreamDNS = &b + 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 *OIDCConfig) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -41274,17 +41944,280 @@ func (m *Shoot) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Shoot: wiretype end group for non-group") + return fmt.Errorf("proto: Shoot: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Shoot: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", 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.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", 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.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", 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.Status.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 *ShootAdvertisedAddress) 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: ShootAdvertisedAddress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ShootAdvertisedAddress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", 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.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field URL", 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.URL = 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 *ShootCARotation) 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: ShootCARotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Shoot: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootCARotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -41294,28 +42227,27 @@ func (m *Shoot) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Phase = ShootCredentialsRotationPhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -41342,13 +42274,16 @@ func (m *Shoot) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} + } + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -41375,7 +42310,10 @@ func (m *Shoot) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -41400,7 +42338,7 @@ func (m *Shoot) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { +func (m *ShootCredentials) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41423,17 +42361,17 @@ func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootAdvertisedAddress: wiretype end group for non-group") + return fmt.Errorf("proto: ShootCredentials: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootAdvertisedAddress: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootCredentials: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Rotation", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -41443,55 +42381,27 @@ func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field URL", 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 m.Rotation == nil { + m.Rotation = &ShootCredentialsRotation{} } - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.Rotation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.URL = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -41514,7 +42424,7 @@ func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootCARotation) Unmarshal(dAtA []byte) error { +func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41537,17 +42447,17 @@ func (m *ShootCARotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootCARotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootCredentialsRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootCARotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootCredentialsRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CertificateAuthorities", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -41557,27 +42467,31 @@ func (m *ShootCARotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Phase = ShootCredentialsRotationPhase(dAtA[iNdEx:postIndex]) + if m.CertificateAuthorities == nil { + m.CertificateAuthorities = &ShootCARotation{} + } + if err := m.CertificateAuthorities.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Kubeconfig", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -41604,16 +42518,16 @@ func (m *ShootCARotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} + if m.Kubeconfig == nil { + m.Kubeconfig = &ShootKubeconfigRotation{} } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Kubeconfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SSHKeypair", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -41640,66 +42554,88 @@ func (m *ShootCARotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} + if m.SSHKeypair == nil { + m.SSHKeypair = &ShootSSHKeypairRotation{} } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Observability", wireType) } - if (skippy < 0) || (iNdEx+skippy) < 0 { + 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 } - if (iNdEx + skippy) > l { + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ShootCredentials) 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 m.Observability == nil { + m.Observability = &ShootObservabilityRotation{} } - if iNdEx >= l { + if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountKey", 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 } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if m.ServiceAccountKey == nil { + m.ServiceAccountKey = &ShootServiceAccountKeyRotation{} } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ShootCredentials: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootCredentials: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + if err := m.ServiceAccountKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Rotation", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ETCDEncryptionKey", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -41726,10 +42662,10 @@ func (m *ShootCredentials) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Rotation == nil { - m.Rotation = &ShootCredentialsRotation{} + if m.ETCDEncryptionKey == nil { + m.ETCDEncryptionKey = &ShootETCDEncryptionKeyRotation{} } - if err := m.Rotation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ETCDEncryptionKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -41754,7 +42690,7 @@ func (m *ShootCredentials) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { +func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -41777,17 +42713,17 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootCredentialsRotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootETCDEncryptionKeyRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootCredentialsRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootETCDEncryptionKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CertificateAuthorities", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -41797,31 +42733,27 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.CertificateAuthorities == nil { - m.CertificateAuthorities = &ShootCARotation{} - } - if err := m.CertificateAuthorities.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Phase = ShootCredentialsRotationPhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kubeconfig", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -41848,16 +42780,16 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Kubeconfig == nil { - m.Kubeconfig = &ShootKubeconfigRotation{} + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} } - if err := m.Kubeconfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SSHKeypair", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -41884,46 +42816,10 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.SSHKeypair == nil { - m.SSHKeypair = &ShootSSHKeypairRotation{} - } - if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Observability", 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.Observability == nil { - m.Observability = &ShootObservabilityRotation{} + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} } - if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -42698,6 +43594,160 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { } return nil } +func (m *ShootServiceAccountKeyRotation) 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: ShootServiceAccountKeyRotation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ShootServiceAccountKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", 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.Phase = ShootCredentialsRotationPhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", 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.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} + } + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", 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.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.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 *ShootSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -44328,6 +45378,42 @@ func (m *ShootStatus) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastHibernationTriggerTime", 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.LastHibernationTriggerTime == nil { + m.LastHibernationTriggerTime = &v11.Time{} + } + if err := m.LastHibernationTriggerTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -44414,6 +45500,42 @@ func (m *SystemComponents) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeLocalDNS", 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.NodeLocalDNS == nil { + m.NodeLocalDNS = &NodeLocalDNS{} + } + if err := m.NodeLocalDNS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 96822bbd..176347f3 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 @@ -31,7 +31,7 @@ import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". -option go_package = "v1alpha1"; +option go_package = "github.com/gardener/gardener/pkg/apis/core/v1alpha1"; // Addon allows enabling or disabling a specific addon and is used to derive from. message Addon { @@ -552,6 +552,7 @@ message ControllerResource { // CoreDNS contains the settings of the Core DNS components running in the data plane of the Shoot cluster. message CoreDNS { // Autoscaling contains the settings related to autoscaling of the Core DNS components running in the data plane of the Shoot cluster. + // +optional optional CoreDNSAutoscaling autoscaling = 1; } @@ -1276,6 +1277,10 @@ message Machine { // latest version of the first image stated in the referenced CloudProfile if no value has been provided. // +optional optional ShootMachineImage image = 2; + + // Architecture is the CPU architecture of the machines in this worker pool. + // +optional + optional string architecture = 3; } // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. @@ -1319,6 +1324,10 @@ message MachineImageVersion { // CRI list of supported container runtime and interfaces supported by this version // +optional repeated CRI cri = 2; + + // Architectures is the list of CPU architectures of the machine image in this version. + // +optional + repeated string architectures = 3; } // MachineType contains certain properties of a machine type. @@ -1342,6 +1351,10 @@ message MachineType { // Usable defines if the machine type can be used for shoot clusters. // +optional optional bool usable = 6; + + // Architecture is the CPU architecture of this machine type. + // +optional + optional string architecture = 7; } // MachineTypeStorage is the amount of storage associated with the root volume of this machine type. @@ -1457,6 +1470,22 @@ message NginxIngress { optional string externalTrafficPolicy = 3; } +// NodeLocalDNS contains the settings of the node local DNS components running in the data plane of the Shoot cluster. +message NodeLocalDNS { + // Enabled indicates whether node local DNS is enabled or not. + optional bool enabled = 1; + + // ForceTCPToClusterDNS indicates whether the connection from the node local DNS to the cluster DNS (Core DNS) will be forced to TCP or not. + // Default, if unspecified, is to enforce TCP. + // +optional + optional bool forceTCPToClusterDNS = 2; + + // ForceTCPToUpstreamDNS indicates whether the connection from the node local DNS to the upstream DNS (infrastructure DNS) will be forced to TCP or not. + // Default, if unspecified, is to enforce TCP. + // +optional + optional bool forceTCPToUpstreamDNS = 3; +} + // OIDCConfig contains configuration settings for the OIDC provider. // Note: Descriptions were taken from the Kubernetes documentation. message OIDCConfig { @@ -2020,6 +2049,7 @@ message SeedSettings { optional SeedSettingScheduling scheduling = 2; // ShootDNS controls the shoot DNS settings for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Do not use it. // +optional optional SeedSettingShootDNS shootDNS = 3; @@ -2158,6 +2188,7 @@ message ServiceAccountConfig { // SigningKeySecret is a reference to a secret that contains an optional private key of the // service account token issuer. The issuer will sign issued ID tokens with this private key. // Only useful if service account tokens are also issued by another external system. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Do not use it. // +optional optional k8s.io.api.core.v1.LocalObjectReference signingKeySecretName = 2; @@ -2248,6 +2279,29 @@ message ShootCredentialsRotation { // Observability contains information about the observability credential rotation. // +optional optional ShootObservabilityRotation observability = 4; + + // ServiceAccountKey contains information about the service account key credential rotation. + // +optional + optional ShootServiceAccountKeyRotation serviceAccountKey = 5; + + // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. + // +optional + optional ShootETCDEncryptionKeyRotation etcdEncryptionKey = 6; +} + +// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +message ShootETCDEncryptionKeyRotation { + // Phase describes the phase of the ETCD encryption key credential rotation. + optional string phase = 1; + + // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; } // ShootKubeconfigRotation contains information about the kubeconfig credential rotation. @@ -2320,6 +2374,21 @@ message ShootSSHKeypairRotation { optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; } +// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. +message ShootServiceAccountKeyRotation { + // Phase describes the phase of the service account key credential rotation. + optional string phase = 1; + + // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastCompletionTime is the most recent time when the service account key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; +} + // ShootSpec is the specification of a Shoot. message ShootSpec { // Addons contains information about enabled/disabled addons and their configuration. @@ -2510,6 +2579,11 @@ message ShootStatus { // Credentials contains information about the shoot credentials. // +optional optional ShootCredentials credentials = 16; + + // LastHibernationTriggerTime indicates the last time when the hibernation controller + // managed to change the hibernation settings of the cluster + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHibernationTriggerTime = 17; } // SystemComponents contains the settings of system components in the control or data plane of the Shoot cluster. @@ -2517,6 +2591,10 @@ message SystemComponents { // CoreDNS contains the settings of the Core DNS components running in the data plane of the Shoot cluster. // +optional optional CoreDNS coreDNS = 1; + + // NodeLocalDNS contains the settings of the node local DNS components running in the data plane of the Shoot cluster. + // +optional + optional NodeLocalDNS nodeLocalDNS = 2; } // Toleration is a toleration for a seed taint. 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 30689a56..5434e940 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 @@ -121,6 +121,9 @@ type MachineImageVersion struct { // CRI list of supported container runtime and interfaces supported by this version // +optional CRI []CRI `json:"cri,omitempty" protobuf:"bytes,2,rep,name=cri"` + // Architectures is the list of CPU architectures of the machine image in this version. + // +optional + Architectures []string `json:"architectures,omitempty" protobuf:"bytes,3,opt,name=architectures"` } // ExpirableVersion contains a version and an expiration date. @@ -151,6 +154,9 @@ type MachineType struct { // Usable defines if the machine type can be used for shoot clusters. // +optional Usable *bool `json:"usable,omitempty" protobuf:"varint,6,opt,name=usable"` + // Architecture is the CPU architecture of this machine type. + // +optional + Architecture *string `json:"architecture,omitempty" protobuf:"bytes,7,opt,name=architecture"` } // MachineTypeStorage is the amount of storage associated with the root volume of this machine type. 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 0a5d75bd..df2526ab 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 @@ -150,6 +150,8 @@ const ( ProjectMemberViewer = "viewer" // ProjectMemberUserAccessManager is a const for a role that provides permissions to manage human user(s, (groups)). ProjectMemberUserAccessManager = "uam" + // ProjectMemberServiceAccountManager is a const for a role that provides permissions to manage service accounts and request tokens for them. + ProjectMemberServiceAccountManager = "serviceaccountmanager" // ProjectMemberExtensionPrefix is a prefix for custom roles that are not known by Gardener. ProjectMemberExtensionPrefix = "extension:" ) 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 cee75c86..b602643a 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 @@ -213,6 +213,7 @@ type SeedSettings struct { // +optional Scheduling *SeedSettingScheduling `json:"scheduling,omitempty" protobuf:"bytes,2,opt,name=scheduling"` // ShootDNS controls the shoot DNS settings for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Do not use it. // +optional ShootDNS *SeedSettingShootDNS `json:"shootDNS,omitempty" protobuf:"bytes,3,opt,name=shootDNS"` // LoadBalancerServices controls certain settings for services of type load balancer that are created in the seed. 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 3ba04316..d62ae35b 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 @@ -28,6 +28,7 @@ import ( // +genclient // +genclient:method=CreateAdminKubeconfigRequest,verb=create,subresource=adminkubeconfig,input=github.com/gardener/gardener/pkg/apis/authentication/v1alpha1.AdminKubeconfigRequest,result=github.com/gardener/gardener/pkg/apis/authentication/v1alpha1.AdminKubeconfigRequest +// +genclient:method=UpdateBinding,verb=update,subresource=binding // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // Shoot represents a Shoot cluster created and managed by Gardener. @@ -116,7 +117,7 @@ type ShootSpec struct { ExposureClassName *string `json:"exposureClassName,omitempty" protobuf:"bytes,18,opt,name=exposureClassName"` // SystemComponents contains the settings of system components in the control or data plane of the Shoot cluster. // +optional - SystemComponents *SystemComponents `json:"systemComponents" protobuf:"bytes,19,opt,name=systemComponents"` + SystemComponents *SystemComponents `json:"systemComponents,omitempty" protobuf:"bytes,19,opt,name=systemComponents"` } // ShootStatus holds the most recently observed status of the Shoot cluster. @@ -176,6 +177,10 @@ type ShootStatus struct { // Credentials contains information about the shoot credentials. // +optional Credentials *ShootCredentials `json:"credentials,omitempty" protobuf:"bytes,16,opt,name=credentials"` + // LastHibernationTriggerTime indicates the last time when the hibernation controller + // managed to change the hibernation settings of the cluster + // +optional + LastHibernationTriggerTime *metav1.Time `json:"lastHibernationTriggerTime,omitempty" protobuf:"bytes,17,opt,name=lastHibernationTriggerTime"` } // ShootCredentials contains information about the shoot credentials. @@ -199,6 +204,12 @@ type ShootCredentialsRotation struct { // Observability contains information about the observability credential rotation. // +optional Observability *ShootObservabilityRotation `json:"observability,omitempty" protobuf:"bytes,4,opt,name=observability"` + // ServiceAccountKey contains information about the service account key credential rotation. + // +optional + ServiceAccountKey *ShootServiceAccountKeyRotation `json:"serviceAccountKey,omitempty" protobuf:"bytes,5,opt,name=serviceAccountKey"` + // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. + // +optional + ETCDEncryptionKey *ShootETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty" protobuf:"bytes,6,opt,name=etcdEncryptionKey"` } // ShootCARotation contains information about the certificate authority credential rotation. @@ -244,6 +255,32 @@ type ShootObservabilityRotation struct { LastCompletionTime *metav1.Time `json:"lastCompletionTime,omitempty" protobuf:"bytes,2,opt,name=lastCompletionTime"` } +// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. +type ShootServiceAccountKeyRotation struct { + // Phase describes the phase of the service account key credential rotation. + Phase ShootCredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` + // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. + // +optional + LastInitiationTime *metav1.Time `json:"lastInitiationTime,omitempty" protobuf:"bytes,3,opt,name=lastInitiationTime"` + // LastCompletionTime is the most recent time when the service account key credential rotation was successfully + // completed. + // +optional + LastCompletionTime *metav1.Time `json:"lastCompletionTime,omitempty" protobuf:"bytes,2,opt,name=lastCompletionTime"` +} + +// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +type ShootETCDEncryptionKeyRotation struct { + // Phase describes the phase of the ETCD encryption key credential rotation. + Phase ShootCredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` + // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. + // +optional + LastInitiationTime *metav1.Time `json:"lastInitiationTime,omitempty" protobuf:"bytes,3,opt,name=lastInitiationTime"` + // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully + // completed. + // +optional + LastCompletionTime *metav1.Time `json:"lastCompletionTime,omitempty" protobuf:"bytes,2,opt,name=lastCompletionTime"` +} + // ShootCredentialsRotationPhase is a string alias. type ShootCredentialsRotationPhase string @@ -656,6 +693,7 @@ type ServiceAccountConfig struct { // SigningKeySecret is a reference to a secret that contains an optional private key of the // service account token issuer. The issuer will sign issued ID tokens with this private key. // Only useful if service account tokens are also issued by another external system. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Do not use it. // +optional SigningKeySecret *corev1.LocalObjectReference `json:"signingKeySecretName,omitempty" protobuf:"bytes,2,opt,name=signingKeySecretName"` // ExtendTokenExpiration turns on projected service account expiration extension during token generation, which @@ -1245,6 +1283,9 @@ type Machine struct { // latest version of the first image stated in the referenced CloudProfile if no value has been provided. // +optional Image *ShootMachineImage `json:"image,omitempty" protobuf:"bytes,2,opt,name=image"` + // Architecture is the CPU architecture of the machines in this worker pool. + // +optional + Architecture *string `json:"architecture,omitempty" protobuf:"bytes,3,opt,name=architecture"` } // ShootMachineImage defines the name and the version of the shoot's machine image in any environment. Has to be @@ -1335,13 +1376,17 @@ var ( type SystemComponents struct { // CoreDNS contains the settings of the Core DNS components running in the data plane of the Shoot cluster. // +optional - CoreDNS *CoreDNS `json:"coreDNS" protobuf:"bytes,1,opt,name=coreDNS"` + CoreDNS *CoreDNS `json:"coreDNS,omitempty" protobuf:"bytes,1,opt,name=coreDNS"` + // NodeLocalDNS contains the settings of the node local DNS components running in the data plane of the Shoot cluster. + // +optional + NodeLocalDNS *NodeLocalDNS `json:"nodeLocalDNS,omitempty" protobuf:"bytes,2,opt,name=nodeLocalDNS"` } // CoreDNS contains the settings of the Core DNS components running in the data plane of the Shoot cluster. type CoreDNS struct { // Autoscaling contains the settings related to autoscaling of the Core DNS components running in the data plane of the Shoot cluster. - Autoscaling *CoreDNSAutoscaling `json:"autoscaling" protobuf:"bytes,1,opt,name=autoscaling"` + // +optional + Autoscaling *CoreDNSAutoscaling `json:"autoscaling,omitempty" protobuf:"bytes,1,opt,name=autoscaling"` } // CoreDNSAutoscaling contains the settings related to autoscaling of the Core DNS components running in the data plane of the Shoot cluster. @@ -1361,6 +1406,20 @@ const ( CoreDNSAutoscalingModeClusterProportional CoreDNSAutoscalingMode = "cluster-proportional" ) +// NodeLocalDNS contains the settings of the node local DNS components running in the data plane of the Shoot cluster. +type NodeLocalDNS struct { + // Enabled indicates whether node local DNS is enabled or not. + Enabled bool `json:"enabled" protobuf:"varint,1,opt,name=enabled"` + // ForceTCPToClusterDNS indicates whether the connection from the node local DNS to the cluster DNS (Core DNS) will be forced to TCP or not. + // Default, if unspecified, is to enforce TCP. + // +optional + ForceTCPToClusterDNS *bool `json:"forceTCPToClusterDNS,omitempty" protobuf:"varint,2,opt,name=forceTCPToClusterDNS"` + // ForceTCPToUpstreamDNS indicates whether the connection from the node local DNS to the upstream DNS (infrastructure DNS) will be forced to TCP or not. + // Default, if unspecified, is to enforce TCP. + // +optional + ForceTCPToUpstreamDNS *bool `json:"forceTCPToUpstreamDNS,omitempty" protobuf:"varint,3,opt,name=forceTCPToUpstreamDNS"` +} + ////////////////////////////////////////////////////////////////////////////////////////////////// // Other/miscellaneous constants and types // ////////////////////////////////////////////////////////////////////////////////////////////////// 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 4455bc24..5be61dd2 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 @@ -873,6 +873,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*NodeLocalDNS)(nil), (*core.NodeLocalDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_NodeLocalDNS_To_core_NodeLocalDNS(a.(*NodeLocalDNS), b.(*core.NodeLocalDNS), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.NodeLocalDNS)(nil), (*NodeLocalDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_NodeLocalDNS_To_v1alpha1_NodeLocalDNS(a.(*core.NodeLocalDNS), b.(*NodeLocalDNS), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*OIDCConfig)(nil), (*core.OIDCConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_OIDCConfig_To_core_OIDCConfig(a.(*OIDCConfig), b.(*core.OIDCConfig), scope) }); err != nil { @@ -1328,6 +1338,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ShootETCDEncryptionKeyRotation)(nil), (*core.ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(a.(*ShootETCDEncryptionKeyRotation), b.(*core.ShootETCDEncryptionKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ShootETCDEncryptionKeyRotation)(nil), (*ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(a.(*core.ShootETCDEncryptionKeyRotation), b.(*ShootETCDEncryptionKeyRotation), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*ShootKubeconfigRotation)(nil), (*core.ShootKubeconfigRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(a.(*ShootKubeconfigRotation), b.(*core.ShootKubeconfigRotation), scope) }); err != nil { @@ -1388,6 +1408,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ShootServiceAccountKeyRotation)(nil), (*core.ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(a.(*ShootServiceAccountKeyRotation), b.(*core.ShootServiceAccountKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ShootServiceAccountKeyRotation)(nil), (*ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(a.(*core.ShootServiceAccountKeyRotation), b.(*ShootServiceAccountKeyRotation), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*ShootSpec)(nil), (*core.ShootSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ShootSpec_To_core_ShootSpec(a.(*ShootSpec), b.(*core.ShootSpec), scope) }); err != nil { @@ -3567,6 +3597,7 @@ func autoConvert_v1alpha1_Machine_To_core_Machine(in *Machine, out *core.Machine } else { out.Image = nil } + out.Architecture = (*string)(unsafe.Pointer(in.Architecture)) return nil } @@ -3586,6 +3617,7 @@ func autoConvert_core_Machine_To_v1alpha1_Machine(in *core.Machine, out *Machine } else { out.Image = nil } + out.Architecture = (*string)(unsafe.Pointer(in.Architecture)) return nil } @@ -3649,6 +3681,7 @@ func autoConvert_v1alpha1_MachineImageVersion_To_core_MachineImageVersion(in *Ma return err } out.CRI = *(*[]core.CRI)(unsafe.Pointer(&in.CRI)) + out.Architectures = *(*[]string)(unsafe.Pointer(&in.Architectures)) return nil } @@ -3662,6 +3695,7 @@ func autoConvert_core_MachineImageVersion_To_v1alpha1_MachineImageVersion(in *co return err } out.CRI = *(*[]CRI)(unsafe.Pointer(&in.CRI)) + out.Architectures = *(*[]string)(unsafe.Pointer(&in.Architectures)) return nil } @@ -3677,6 +3711,7 @@ func autoConvert_v1alpha1_MachineType_To_core_MachineType(in *MachineType, out * out.Name = in.Name out.Storage = (*core.MachineTypeStorage)(unsafe.Pointer(in.Storage)) out.Usable = (*bool)(unsafe.Pointer(in.Usable)) + out.Architecture = (*string)(unsafe.Pointer(in.Architecture)) return nil } @@ -3692,6 +3727,7 @@ func autoConvert_core_MachineType_To_v1alpha1_MachineType(in *core.MachineType, out.Name = in.Name out.Storage = (*MachineTypeStorage)(unsafe.Pointer(in.Storage)) out.Usable = (*bool)(unsafe.Pointer(in.Usable)) + out.Architecture = (*string)(unsafe.Pointer(in.Architecture)) return nil } @@ -3894,6 +3930,30 @@ func Convert_core_NginxIngress_To_v1alpha1_NginxIngress(in *core.NginxIngress, o return autoConvert_core_NginxIngress_To_v1alpha1_NginxIngress(in, out, s) } +func autoConvert_v1alpha1_NodeLocalDNS_To_core_NodeLocalDNS(in *NodeLocalDNS, out *core.NodeLocalDNS, s conversion.Scope) error { + out.Enabled = in.Enabled + out.ForceTCPToClusterDNS = (*bool)(unsafe.Pointer(in.ForceTCPToClusterDNS)) + out.ForceTCPToUpstreamDNS = (*bool)(unsafe.Pointer(in.ForceTCPToUpstreamDNS)) + return nil +} + +// Convert_v1alpha1_NodeLocalDNS_To_core_NodeLocalDNS is an autogenerated conversion function. +func Convert_v1alpha1_NodeLocalDNS_To_core_NodeLocalDNS(in *NodeLocalDNS, out *core.NodeLocalDNS, s conversion.Scope) error { + return autoConvert_v1alpha1_NodeLocalDNS_To_core_NodeLocalDNS(in, out, s) +} + +func autoConvert_core_NodeLocalDNS_To_v1alpha1_NodeLocalDNS(in *core.NodeLocalDNS, out *NodeLocalDNS, s conversion.Scope) error { + out.Enabled = in.Enabled + out.ForceTCPToClusterDNS = (*bool)(unsafe.Pointer(in.ForceTCPToClusterDNS)) + out.ForceTCPToUpstreamDNS = (*bool)(unsafe.Pointer(in.ForceTCPToUpstreamDNS)) + return nil +} + +// Convert_core_NodeLocalDNS_To_v1alpha1_NodeLocalDNS is an autogenerated conversion function. +func Convert_core_NodeLocalDNS_To_v1alpha1_NodeLocalDNS(in *core.NodeLocalDNS, out *NodeLocalDNS, s conversion.Scope) error { + return autoConvert_core_NodeLocalDNS_To_v1alpha1_NodeLocalDNS(in, out, s) +} + func autoConvert_v1alpha1_OIDCConfig_To_core_OIDCConfig(in *OIDCConfig, out *core.OIDCConfig, s conversion.Scope) error { out.CABundle = (*string)(unsafe.Pointer(in.CABundle)) out.ClientAuthentication = (*core.OpenIDConnectClientAuthentication)(unsafe.Pointer(in.ClientAuthentication)) @@ -5167,6 +5227,8 @@ func autoConvert_v1alpha1_ShootCredentialsRotation_To_core_ShootCredentialsRotat out.Kubeconfig = (*core.ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*core.ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*core.ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) + out.ServiceAccountKey = (*core.ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*core.ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5180,6 +5242,8 @@ func autoConvert_core_ShootCredentialsRotation_To_v1alpha1_ShootCredentialsRotat out.Kubeconfig = (*ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) + out.ServiceAccountKey = (*ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5188,6 +5252,30 @@ func Convert_core_ShootCredentialsRotation_To_v1alpha1_ShootCredentialsRotation( return autoConvert_core_ShootCredentialsRotation_To_v1alpha1_ShootCredentialsRotation(in, out, s) } +func autoConvert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = core.ShootCredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + return nil +} + +// Convert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_v1alpha1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in, out, s) +} + +func autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = ShootCredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + return nil +} + +// Convert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1alpha1_ShootETCDEncryptionKeyRotation(in, out, s) +} + func autoConvert_v1alpha1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(in *ShootKubeconfigRotation, out *core.ShootKubeconfigRotation, s conversion.Scope) error { out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) @@ -5346,6 +5434,30 @@ func Convert_core_ShootSSHKeypairRotation_To_v1alpha1_ShootSSHKeypairRotation(in return autoConvert_core_ShootSSHKeypairRotation_To_v1alpha1_ShootSSHKeypairRotation(in, out, s) } +func autoConvert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = core.ShootCredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + return nil +} + +// Convert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_v1alpha1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in, out, s) +} + +func autoConvert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = ShootCredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + return nil +} + +// Convert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_core_ShootServiceAccountKeyRotation_To_v1alpha1_ShootServiceAccountKeyRotation(in, out, s) +} + func autoConvert_v1alpha1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.ShootSpec, s conversion.Scope) error { out.Addons = (*core.Addons)(unsafe.Pointer(in.Addons)) out.CloudProfileName = in.CloudProfileName @@ -5505,6 +5617,7 @@ func autoConvert_v1alpha1_ShootStatus_To_core_ShootStatus(in *ShootStatus, out * out.AdvertisedAddresses = *(*[]core.ShootAdvertisedAddress)(unsafe.Pointer(&in.AdvertisedAddresses)) out.MigrationStartTime = (*metav1.Time)(unsafe.Pointer(in.MigrationStartTime)) out.Credentials = (*core.ShootCredentials)(unsafe.Pointer(in.Credentials)) + out.LastHibernationTriggerTime = (*metav1.Time)(unsafe.Pointer(in.LastHibernationTriggerTime)) return nil } @@ -5515,6 +5628,7 @@ func autoConvert_core_ShootStatus_To_v1alpha1_ShootStatus(in *core.ShootStatus, return err } out.IsHibernated = in.IsHibernated + out.LastHibernationTriggerTime = (*metav1.Time)(unsafe.Pointer(in.LastHibernationTriggerTime)) out.LastOperation = (*LastOperation)(unsafe.Pointer(in.LastOperation)) out.LastErrors = *(*[]LastError)(unsafe.Pointer(&in.LastErrors)) out.ObservedGeneration = in.ObservedGeneration @@ -5531,6 +5645,7 @@ func autoConvert_core_ShootStatus_To_v1alpha1_ShootStatus(in *core.ShootStatus, func autoConvert_v1alpha1_SystemComponents_To_core_SystemComponents(in *SystemComponents, out *core.SystemComponents, s conversion.Scope) error { out.CoreDNS = (*core.CoreDNS)(unsafe.Pointer(in.CoreDNS)) + out.NodeLocalDNS = (*core.NodeLocalDNS)(unsafe.Pointer(in.NodeLocalDNS)) return nil } @@ -5541,6 +5656,7 @@ func Convert_v1alpha1_SystemComponents_To_core_SystemComponents(in *SystemCompon func autoConvert_core_SystemComponents_To_v1alpha1_SystemComponents(in *core.SystemComponents, out *SystemComponents, s conversion.Scope) error { out.CoreDNS = (*CoreDNS)(unsafe.Pointer(in.CoreDNS)) + out.NodeLocalDNS = (*NodeLocalDNS)(unsafe.Pointer(in.NodeLocalDNS)) 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 e719726c..1aa10a0e 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 @@ -2245,6 +2245,11 @@ func (in *Machine) DeepCopyInto(out *Machine) { *out = new(ShootMachineImage) (*in).DeepCopyInto(*out) } + if in.Architecture != nil { + in, out := &in.Architecture, &out.Architecture + *out = new(string) + **out = **in + } return } @@ -2333,6 +2338,11 @@ func (in *MachineImageVersion) DeepCopyInto(out *MachineImageVersion) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Architectures != nil { + in, out := &in.Architectures, &out.Architectures + *out = make([]string, len(*in)) + copy(*out, *in) + } return } @@ -2362,6 +2372,11 @@ func (in *MachineType) DeepCopyInto(out *MachineType) { *out = new(bool) **out = **in } + if in.Architecture != nil { + in, out := &in.Architecture, &out.Architecture + *out = new(string) + **out = **in + } return } @@ -2572,6 +2587,32 @@ func (in *NginxIngress) DeepCopy() *NginxIngress { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeLocalDNS) DeepCopyInto(out *NodeLocalDNS) { + *out = *in + if in.ForceTCPToClusterDNS != nil { + in, out := &in.ForceTCPToClusterDNS, &out.ForceTCPToClusterDNS + *out = new(bool) + **out = **in + } + if in.ForceTCPToUpstreamDNS != nil { + in, out := &in.ForceTCPToUpstreamDNS, &out.ForceTCPToUpstreamDNS + *out = new(bool) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeLocalDNS. +func (in *NodeLocalDNS) DeepCopy() *NodeLocalDNS { + if in == nil { + return nil + } + out := new(NodeLocalDNS) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *OIDCConfig) DeepCopyInto(out *OIDCConfig) { *out = *in @@ -3991,6 +4032,16 @@ func (in *ShootCredentialsRotation) DeepCopyInto(out *ShootCredentialsRotation) *out = new(ShootObservabilityRotation) (*in).DeepCopyInto(*out) } + if in.ServiceAccountKey != nil { + in, out := &in.ServiceAccountKey, &out.ServiceAccountKey + *out = new(ShootServiceAccountKeyRotation) + (*in).DeepCopyInto(*out) + } + if in.ETCDEncryptionKey != nil { + in, out := &in.ETCDEncryptionKey, &out.ETCDEncryptionKey + *out = new(ShootETCDEncryptionKeyRotation) + (*in).DeepCopyInto(*out) + } return } @@ -4004,6 +4055,30 @@ func (in *ShootCredentialsRotation) DeepCopy() *ShootCredentialsRotation { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShootETCDEncryptionKeyRotation) DeepCopyInto(out *ShootETCDEncryptionKeyRotation) { + *out = *in + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootETCDEncryptionKeyRotation. +func (in *ShootETCDEncryptionKeyRotation) DeepCopy() *ShootETCDEncryptionKeyRotation { + if in == nil { + return nil + } + out := new(ShootETCDEncryptionKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootKubeconfigRotation) DeepCopyInto(out *ShootKubeconfigRotation) { *out = *in @@ -4161,6 +4236,30 @@ func (in *ShootSSHKeypairRotation) DeepCopy() *ShootSSHKeypairRotation { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShootServiceAccountKeyRotation) DeepCopyInto(out *ShootServiceAccountKeyRotation) { + *out = *in + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootServiceAccountKeyRotation. +func (in *ShootServiceAccountKeyRotation) DeepCopy() *ShootServiceAccountKeyRotation { + if in == nil { + return nil + } + out := new(ShootServiceAccountKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = *in @@ -4409,6 +4508,10 @@ func (in *ShootStatus) DeepCopyInto(out *ShootStatus) { *out = new(ShootCredentials) (*in).DeepCopyInto(*out) } + if in.LastHibernationTriggerTime != nil { + in, out := &in.LastHibernationTriggerTime, &out.LastHibernationTriggerTime + *out = (*in).DeepCopy() + } return } @@ -4430,6 +4533,11 @@ func (in *SystemComponents) DeepCopyInto(out *SystemComponents) { *out = new(CoreDNS) (*in).DeepCopyInto(*out) } + if in.NodeLocalDNS != nil { + in, out := &in.NodeLocalDNS, &out.NodeLocalDNS + *out = new(NodeLocalDNS) + (*in).DeepCopyInto(*out) + } return } 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 4d54b23a..0fae1a35 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 @@ -29,6 +29,9 @@ const ( // SecretNameCAETCD is a constant for the name of a Kubernetes secret object that contains the CA // certificate of the etcd of a shoot cluster. SecretNameCAETCD = "ca-etcd" + // SecretNameCAETCDPeer is a constant for the name of a Kubernetes secret object that contains the CA + // certificate of the etcd peer network of a shoot cluster. + SecretNameCAETCDPeer = "ca-etcd-peer" // SecretNameCAFrontProxy is a constant for the name of a Kubernetes secret object that contains the CA // certificate of the kube-aggregator a shoot cluster. SecretNameCAFrontProxy = "ca-front-proxy" @@ -57,9 +60,15 @@ const ( // SecretNameObservabilityIngress is a constant for the name of a Kubernetes secret object that contains the ingress // credentials for observability components. SecretNameObservabilityIngress = "observability-ingress" - // SecretNameObservabilityIngressUsers is a constant for the name of a Kubernetes secret object that contains the user's ingress - // credentials for observability components. + // SecretNameObservabilityIngressUsers is a constant for the name of a Kubernetes secret object that contains the + // user's ingress credentials for observability components. SecretNameObservabilityIngressUsers = "observability-ingress-users" + // SecretNameETCDEncryptionKey is a constant for the name of a Kubernetes secret object that contains the key + // for encryption data in ETCD. + SecretNameETCDEncryptionKey = "kube-apiserver-etcd-encryption-key" + // SecretNamePrefixETCDEncryptionConfiguration is a constant for the name prefix of a Kubernetes secret object that + // contains the configuration for encryption data in ETCD. + SecretNamePrefixETCDEncryptionConfiguration = "kube-apiserver-etcd-encryption-configuration" // SecretNameGardener is a constant for the name of a Kubernetes secret object that contains the client // certificate and a kubeconfig for a shoot cluster. It is used by Gardener and can be used by extension @@ -132,6 +141,10 @@ const ( // the machine-controller-manager pod. DeploymentNameMachineControllerManager = "machine-controller-manager" + // ConfigMapNameShootInfo is the name of a ConfigMap in the kube-system namespace of shoot clusters which contains + // information about the shoot cluster. + ConfigMapNameShootInfo = "shoot-info" + // StatefulSetNameAlertManager is a constant for the name of a Kubernetes stateful set object that contains // the alertmanager pod. StatefulSetNameAlertManager = "alertmanager" @@ -154,12 +167,17 @@ const ( GardenerPurpose = "gardener.cloud/purpose" // GardenerDescription is a constant for a key in an annotation describing what the resource is used for. GardenerDescription = "gardener.cloud/description" + // GardenerWarning is a constant for a key in an annotation containing a warning message. + GardenerWarning = "gardener.cloud/warning" // GardenCreatedBy is the key for an annotation of a Shoot cluster whose value indicates contains the username // of the user that created the resource. GardenCreatedBy = "gardener.cloud/created-by" // GardenerOperation is a constant for an annotation on a resource that describes a desired operation. GardenerOperation = "gardener.cloud/operation" + // GardenerMaintenanceOperation is a constant for an annotation on a Shoot that describes a desired operation which + // will be performed during maintenance. + GardenerMaintenanceOperation = "maintenance.gardener.cloud/operation" // GardenerOperationReconcile is a constant for the value of the operation annotation describing a reconcile // operation. GardenerOperationReconcile = "reconcile" @@ -178,6 +196,8 @@ const ( // GardenerOperationKeepalive is a constant for the value of the operation annotation describing an // operation that extends the lifetime of the object having the operation annotation. GardenerOperationKeepalive = "keepalive" + // GardenerOperationRenewKubeconfig is a constant for the value of the operation annotation to renew the gardenlet's kubeconfig secret. + GardenerOperationRenewKubeconfig = "renew-kubeconfig" // DeprecatedGardenRole is the key for an annotation on a Kubernetes object indicating what it is used for. // @@ -230,6 +250,8 @@ const ( // GardenRoleControlPlaneWildcardCert is the value of the GardenRole key indicating type 'controlplane-cert'. // It refers to a wildcard tls certificate which can be used for services exposed under the corresponding domain. GardenRoleControlPlaneWildcardCert = "controlplane-cert" + // GardenRoleExposureClassHandler is the value of the GardenRole key indicating type 'exposureclass-handler'. + GardenRoleExposureClassHandler = "exposureclass-handler" // ShootUID is an annotation key for the shoot namespace in the seed cluster, // which value will be the value of `shoot.status.uid` @@ -259,6 +281,24 @@ const ( // Note that this annotation is alpha and can be removed anytime without further notice. Only use it if you know // what you do. ShootAlphaControlPlaneScaleDownDisabled = "alpha.control-plane.scaling.shoot.gardener.cloud/scale-down-disabled" + // ShootAlphaControlPlaneHighAvailability is a constant for an annotation on the Shoot resource stating that the + // high availability setup for the control plane should be enabled. + // Note that this annotation is alpha and can be removed anytime without further notice. Only use it if you know + // what you do. + ShootAlphaControlPlaneHighAvailability = "alpha.control-plane.shoot.gardener.cloud/high-availability" + // ShootAlphaControlPlaneHighAvailabilitySingleZone is a specific value that can be set for the shoot control + // plane high availability annotation, that allows gardener to spread the shoot control plane across + // multiple nodes within a single availability zone if it is possible. + // This enables shoot clusters having a control plane with a higher failure tolerance as well as zero downtime maintenance, + // especially for infrastructure providers that provide less than three zones in a region and thus a multi-zone setup + // is not possible there. + ShootAlphaControlPlaneHighAvailabilitySingleZone = "single-zone" + // ShootAlphaControlPlaneHighAvailabilityMultiZone is a specific value that can be set for the shoot control + // plane high availability annotation, that allows gardener to spread the shoot control plane across + // multiple availability zones if it is possible. + ShootAlphaControlPlaneHighAvailabilityMultiZone = "multi-zone" + // LabelSeedMultiZonal is used to identify whether the seed supports multi-zonal control planes for shoots. + LabelSeedMultiZonal = "seed.gardener.cloud/multi-zonal" // ShootExpirationTimestamp is an annotation on a Shoot resource whose value represents the time when the Shoot lifetime // is expired. The lifetime can be extended, but at most by the minimal value of the 'clusterLifetimeDays' property // of referenced quotas. @@ -267,6 +307,10 @@ const ( ShootStatus = "shoot.gardener.cloud/status" // FailedShootNeedsRetryOperation is a constant for an annotation on a Shoot in a failed state indicating that a retry operation should be triggered during the next maintenance time window. FailedShootNeedsRetryOperation = "maintenance.shoot.gardener.cloud/needs-retry-operation" + // LabelExcludeWebhookFromRemediation is a constant for a label on a webhook in the shoot which makes it being + // excluded from automatic remediation. + LabelExcludeWebhookFromRemediation = "remediation.webhook.shoot.gardener.cloud/exclude" + // ShootTasks is a constant for an annotation on a Shoot which states that certain tasks should be done. ShootTasks = "shoot.gardener.cloud/tasks" // ShootTaskDeployInfrastructure is a name for a Shoot's infrastructure deployment task. It indicates that the @@ -291,6 +335,13 @@ const ( // ShootOperationRetry is a constant for an annotation on a Shoot indicating that a failed Shoot reconciliation shall be // retried. ShootOperationRetry = "retry" + // ShootOperationRotateCredentialsStart is a constant for an annotation on a Shoot indicating that the rotation of + // all credentials shall be started. This includes CAs, certificates, kubeconfigs, SSH keypairs, observability + // credentials, and ServiceAccount signing key. + ShootOperationRotateCredentialsStart = "rotate-credentials-start" + // ShootOperationRotateCredentialsComplete is a constant for an annotation on a Shoot indicating that the rotation + // of the credentials shall be completed. + ShootOperationRotateCredentialsComplete = "rotate-credentials-complete" // ShootOperationRotateKubeconfigCredentials is a constant for an annotation on a Shoot indicating that the credentials // contained in the kubeconfig that is handed out to the user shall be rotated. ShootOperationRotateKubeconfigCredentials = "rotate-kubeconfig-credentials" @@ -307,6 +358,18 @@ const ( // for the observability stack secret shall be rotated. Note that this only affects the user credentials // since the operator credentials are rotated automatically each `30d`. ShootOperationRotateObservabilityCredentials = "rotate-observability-credentials" + // ShootOperationRotateServiceAccountKeyStart is a constant for an annotation on a Shoot indicating that the + // rotation of the service account signing key shall be started. + ShootOperationRotateServiceAccountKeyStart = "rotate-serviceaccount-key-start" + // ShootOperationRotateServiceAccountKeyComplete is a constant for an annotation on a Shoot indicating that the + // rotation of the service account signing key shall be completed. + ShootOperationRotateServiceAccountKeyComplete = "rotate-serviceaccount-key-complete" + // ShootOperationRotateETCDEncryptionKeyStart is a constant for an annotation on a Shoot indicating that the + // rotation of the ETCD encryption key shall be started. + ShootOperationRotateETCDEncryptionKeyStart = "rotate-etcd-encryption-key-start" + // ShootOperationRotateETCDEncryptionKeyComplete is a constant for an annotation on a Shoot indicating that the + // rotation of the ETCD encryption key shall be completed. + ShootOperationRotateETCDEncryptionKeyComplete = "rotate-etcd-encryption-key-complete" // SeedResourceManagerClass is the resource-class managed by the Gardener-Resource-Manager // instance in the garden namespace on the seeds. @@ -418,6 +481,12 @@ const ( // LabelAPIServerExposureGardenerManaged is a constant for label value which gardener sets on the label key // "core.gardener.cloud/apiserver-exposure" to indicate that it's responsible for apiserver exposure (via SNI). LabelAPIServerExposureGardenerManaged = "gardener-managed" + // LabelExposureClassHandlerName is the label key for exposure class handler names. + LabelExposureClassHandlerName = "handler.exposureclass.gardener.cloud/name" + + // LabelNodeLocalDNS is a constant for a label key, which the provider extensions set on the nodes. + // The value can be true or false. + LabelNodeLocalDNS = "networking.gardener.cloud/node-local-dns-enabled" // GardenNamespace is the namespace in which the configuration and secrets for // the Gardener controller manager will be stored (e.g., secrets for the Seed clusters). @@ -458,6 +527,15 @@ const ( // Gardener will wait for the specified time after the Infrastructure extension object has been deleted to allow // controllers to gracefully cleanup everything (default behaviour is 300s). AnnotationShootInfrastructureCleanupWaitPeriodSeconds = "shoot.gardener.cloud/infrastructure-cleanup-wait-period-seconds" + // AnnotationShootCloudConfigExecutionMaxDelaySeconds is a key for an annotation on a Shoot resource that declares + // the maximum delay in seconds when potentially updated cloud-config user data is executed on the worker nodes. + // Concretely, the cloud-config-downloader systemd service running on all worker nodes will wait for a random + // duration based on the configured value before executing the user data (default value is 300) plus an additional + // offset of 30s. If set to 0 then no random delay will be applied and the minimum delay (30s) applies. Any value + // above 1800 is ignored (in this case the default value is used). + // Note that changing this value only applies to new nodes. Existing nodes which already computed their individual + // delays will not recompute it. + AnnotationShootCloudConfigExecutionMaxDelaySeconds = "shoot.gardener.cloud/cloud-config-execution-max-delay-seconds" // AnnotationShootForceRestore is a key for an annotation on a Shoot or BackupEntry resource to trigger a forceful restoration to a different seed. AnnotationShootForceRestore = "shoot.gardener.cloud/force-restore" // AnnotationReversedVPN moves the vpn-server to the seed. @@ -525,9 +603,6 @@ const ( // being referenced by at least one other resource (e.g. a SecretBinding is still referenced by a Shoot) EventResourceReferenced = "ResourceReferenced" - // PriorityClassNameShootControlPlane is the name of a priority class for critical pods of a shoot control plane. - PriorityClassNameShootControlPlane = "gardener-shoot-controlplane" - // ReferencedResourcesPrefix is the prefix used when copying referenced resources to the Shoot namespace in the Seed, // to avoid naming collisions with resources managed by Gardener. ReferencedResourcesPrefix = "ref-" @@ -585,11 +660,78 @@ const ( DNSRecordExternalName = "external" // DNSRecordOwnerName is a constant for DNSRecord objects used for the owner domain name. DNSRecordOwnerName = "owner" + + // ArchitectureAMD64 is a constant for the 'amd64' architecture. + ArchitectureAMD64 = "amd64" + // ArchitectureARM64 is a constant for the 'arm64' architecture. + ArchitectureARM64 = "arm64" +) + +var ( + // ControlPlaneSecretRoles contains all role values used for control plane secrets synced to the Garden cluster. + ControlPlaneSecretRoles = []string{ + GardenRoleKubeconfig, + GardenRoleSSHKeyPair, + GardenRoleMonitoring, + } + + // ValidArchitectures contains all CPU architectures which are supported by the Shoot. + ValidArchitectures = []string{ + ArchitectureAMD64, + ArchitectureARM64, + } ) -// ControlPlaneSecretRoles contains all role values used for control plane secrets synced to the Garden cluster. -var ControlPlaneSecretRoles = []string{ - GardenRoleKubeconfig, - GardenRoleSSHKeyPair, - GardenRoleMonitoring, -} +// constants for well-known PriorityClass names +const ( + // PriorityClassNameShootSystem900 is the name of a PriorityClass for Shoot system components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameShootSystem900 = "gardener-shoot-system-900" + // PriorityClassNameShootSystem800 is the name of a PriorityClass for Shoot system components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameShootSystem800 = "gardener-shoot-system-800" + // PriorityClassNameShootSystem700 is the name of a PriorityClass for Shoot system components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameShootSystem700 = "gardener-shoot-system-700" + // PriorityClassNameShootSystem600 is the name of a PriorityClass for Shoot system components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameShootSystem600 = "gardener-shoot-system-600" + + // PriorityClassNameSeedSystemCritical is the name of a PriorityClass for Seed system components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameSeedSystemCritical = "gardener-system-critical" + // PriorityClassNameSeedSystem900 is the name of a PriorityClass for Seed system components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameSeedSystem900 = "gardener-system-900" + // PriorityClassNameSeedSystem800 is the name of a PriorityClass for Seed system components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameSeedSystem800 = "gardener-system-800" + // PriorityClassNameSeedSystem700 is the name of a PriorityClass for Seed system components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameSeedSystem700 = "gardener-system-700" + // PriorityClassNameSeedSystem600 is the name of a PriorityClass for Seed system components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameSeedSystem600 = "gardener-system-600" + // PriorityClassNameReserveExcessCapacity is the name of a PriorityClass for reserving excess capacity on a Seed cluster. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameReserveExcessCapacity = "gardener-reserve-excess-capacity" + + // PriorityClassNameShootControlPlane500 is the name of a PriorityClass for Shoot control plane components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameShootControlPlane500 = "gardener-system-500" + // PriorityClassNameShootControlPlane400 is the name of a PriorityClass for Shoot control plane components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameShootControlPlane400 = "gardener-system-400" + // PriorityClassNameShootControlPlane300 is the name of a PriorityClass for Shoot control plane components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameShootControlPlane300 = "gardener-system-300" + // PriorityClassNameShootControlPlane200 is the name of a PriorityClass for Shoot control plane components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameShootControlPlane200 = "gardener-system-200" + // PriorityClassNameShootControlPlane100 is the name of a PriorityClass for Shoot control plane components. + // Please consider the documentation in https://github.com/gardener/gardener/blob/master/docs/development/priority-classes.md + PriorityClassNameShootControlPlane100 = "gardener-system-100" + // PriorityClassNameShootControlPlane is the name of a PriorityClass for Shoot control plane components. + // Deprecated: this PriorityClass will be removed in a future version, use the fine-granular PriorityClasses above instead. + PriorityClassNameShootControlPlane = "gardener-shoot-controlplane" +) 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 cc7bce46..6c37bde9 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 @@ -83,9 +83,12 @@ func defaultSubject(obj *rbacv1.Subject) { // SetDefaults_MachineType sets default values for MachineType objects. func SetDefaults_MachineType(obj *MachineType) { + if obj.Architecture == nil { + obj.Architecture = pointer.String(v1beta1constants.ArchitectureAMD64) + } + if obj.Usable == nil { - trueVar := true - obj.Usable = &trueVar + obj.Usable = pointer.Bool(true) } } @@ -270,6 +273,10 @@ func SetDefaults_Shoot(obj *Shoot) { kubernetesVersion = *worker.Kubernetes.Version } + if worker.Machine.Architecture == nil { + obj.Spec.Provider.Workers[i].Machine.Architecture = pointer.String(v1beta1constants.ArchitectureAMD64) + } + if k8sVersionGreaterOrEqualThan122, _ := versionutils.CompareVersions(kubernetesVersion, ">=", "1.22"); !k8sVersionGreaterOrEqualThan122 { // Error is ignored here because we cannot do anything meaningful with it. // k8sVersionLessThan116 and k8sVersionGreaterOrEqualThan122 will default to `false`. @@ -417,6 +424,13 @@ func SetDefaults_ControllerRegistrationDeployment(obj *ControllerRegistrationDep } } +// SetDefaults_MachineImageVersion sets default values for MachineImageVersion objects. +func SetDefaults_MachineImageVersion(obj *MachineImageVersion) { + if len(obj.Architectures) == 0 { + obj.Architectures = []string{v1beta1constants.ArchitectureAMD64} + } +} + // Helper functions func calculateDefaultNodeCIDRMaskSize(kubelet *KubeletConfig, workers []Worker) *int32 { 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 aaa3e5b5..d2054e40 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 @@ -2349,10 +2349,38 @@ func (m *NginxIngress) XXX_DiscardUnknown() { var xxx_messageInfo_NginxIngress proto.InternalMessageInfo +func (m *NodeLocalDNS) Reset() { *m = NodeLocalDNS{} } +func (*NodeLocalDNS) ProtoMessage() {} +func (*NodeLocalDNS) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{82} +} +func (m *NodeLocalDNS) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *NodeLocalDNS) 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 *NodeLocalDNS) XXX_Merge(src proto.Message) { + xxx_messageInfo_NodeLocalDNS.Merge(m, src) +} +func (m *NodeLocalDNS) XXX_Size() int { + return m.Size() +} +func (m *NodeLocalDNS) XXX_DiscardUnknown() { + xxx_messageInfo_NodeLocalDNS.DiscardUnknown(m) +} + +var xxx_messageInfo_NodeLocalDNS proto.InternalMessageInfo + func (m *OIDCConfig) Reset() { *m = OIDCConfig{} } func (*OIDCConfig) ProtoMessage() {} func (*OIDCConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{82} + return fileDescriptor_ca37af0df9a5bbd2, []int{83} } func (m *OIDCConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2380,7 +2408,7 @@ var xxx_messageInfo_OIDCConfig proto.InternalMessageInfo func (m *OpenIDConnectClientAuthentication) Reset() { *m = OpenIDConnectClientAuthentication{} } func (*OpenIDConnectClientAuthentication) ProtoMessage() {} func (*OpenIDConnectClientAuthentication) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{83} + return fileDescriptor_ca37af0df9a5bbd2, []int{84} } func (m *OpenIDConnectClientAuthentication) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2408,7 +2436,7 @@ var xxx_messageInfo_OpenIDConnectClientAuthentication proto.InternalMessageInfo func (m *Plant) Reset() { *m = Plant{} } func (*Plant) ProtoMessage() {} func (*Plant) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{84} + return fileDescriptor_ca37af0df9a5bbd2, []int{85} } func (m *Plant) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2436,7 +2464,7 @@ var xxx_messageInfo_Plant proto.InternalMessageInfo func (m *PlantList) Reset() { *m = PlantList{} } func (*PlantList) ProtoMessage() {} func (*PlantList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{85} + return fileDescriptor_ca37af0df9a5bbd2, []int{86} } func (m *PlantList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2464,7 +2492,7 @@ var xxx_messageInfo_PlantList proto.InternalMessageInfo func (m *PlantSpec) Reset() { *m = PlantSpec{} } func (*PlantSpec) ProtoMessage() {} func (*PlantSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{86} + return fileDescriptor_ca37af0df9a5bbd2, []int{87} } func (m *PlantSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2492,7 +2520,7 @@ var xxx_messageInfo_PlantSpec proto.InternalMessageInfo func (m *PlantStatus) Reset() { *m = PlantStatus{} } func (*PlantStatus) ProtoMessage() {} func (*PlantStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{87} + return fileDescriptor_ca37af0df9a5bbd2, []int{88} } func (m *PlantStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2520,7 +2548,7 @@ var xxx_messageInfo_PlantStatus proto.InternalMessageInfo func (m *Project) Reset() { *m = Project{} } func (*Project) ProtoMessage() {} func (*Project) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{88} + return fileDescriptor_ca37af0df9a5bbd2, []int{89} } func (m *Project) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2548,7 +2576,7 @@ var xxx_messageInfo_Project proto.InternalMessageInfo func (m *ProjectList) Reset() { *m = ProjectList{} } func (*ProjectList) ProtoMessage() {} func (*ProjectList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{89} + return fileDescriptor_ca37af0df9a5bbd2, []int{90} } func (m *ProjectList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2576,7 +2604,7 @@ var xxx_messageInfo_ProjectList proto.InternalMessageInfo func (m *ProjectMember) Reset() { *m = ProjectMember{} } func (*ProjectMember) ProtoMessage() {} func (*ProjectMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{90} + return fileDescriptor_ca37af0df9a5bbd2, []int{91} } func (m *ProjectMember) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2604,7 +2632,7 @@ var xxx_messageInfo_ProjectMember proto.InternalMessageInfo func (m *ProjectSpec) Reset() { *m = ProjectSpec{} } func (*ProjectSpec) ProtoMessage() {} func (*ProjectSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{91} + return fileDescriptor_ca37af0df9a5bbd2, []int{92} } func (m *ProjectSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2632,7 +2660,7 @@ var xxx_messageInfo_ProjectSpec proto.InternalMessageInfo func (m *ProjectStatus) Reset() { *m = ProjectStatus{} } func (*ProjectStatus) ProtoMessage() {} func (*ProjectStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{92} + return fileDescriptor_ca37af0df9a5bbd2, []int{93} } func (m *ProjectStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2660,7 +2688,7 @@ var xxx_messageInfo_ProjectStatus proto.InternalMessageInfo func (m *ProjectTolerations) Reset() { *m = ProjectTolerations{} } func (*ProjectTolerations) ProtoMessage() {} func (*ProjectTolerations) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{93} + return fileDescriptor_ca37af0df9a5bbd2, []int{94} } func (m *ProjectTolerations) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2688,7 +2716,7 @@ var xxx_messageInfo_ProjectTolerations proto.InternalMessageInfo func (m *Provider) Reset() { *m = Provider{} } func (*Provider) ProtoMessage() {} func (*Provider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{94} + return fileDescriptor_ca37af0df9a5bbd2, []int{95} } func (m *Provider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2716,7 +2744,7 @@ var xxx_messageInfo_Provider proto.InternalMessageInfo func (m *Quota) Reset() { *m = Quota{} } func (*Quota) ProtoMessage() {} func (*Quota) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{95} + return fileDescriptor_ca37af0df9a5bbd2, []int{96} } func (m *Quota) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2744,7 +2772,7 @@ var xxx_messageInfo_Quota proto.InternalMessageInfo func (m *QuotaList) Reset() { *m = QuotaList{} } func (*QuotaList) ProtoMessage() {} func (*QuotaList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{96} + return fileDescriptor_ca37af0df9a5bbd2, []int{97} } func (m *QuotaList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2772,7 +2800,7 @@ var xxx_messageInfo_QuotaList proto.InternalMessageInfo func (m *QuotaSpec) Reset() { *m = QuotaSpec{} } func (*QuotaSpec) ProtoMessage() {} func (*QuotaSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{97} + return fileDescriptor_ca37af0df9a5bbd2, []int{98} } func (m *QuotaSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2800,7 +2828,7 @@ var xxx_messageInfo_QuotaSpec proto.InternalMessageInfo func (m *Region) Reset() { *m = Region{} } func (*Region) ProtoMessage() {} func (*Region) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{98} + return fileDescriptor_ca37af0df9a5bbd2, []int{99} } func (m *Region) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2828,7 +2856,7 @@ var xxx_messageInfo_Region proto.InternalMessageInfo func (m *ResourceWatchCacheSize) Reset() { *m = ResourceWatchCacheSize{} } func (*ResourceWatchCacheSize) ProtoMessage() {} func (*ResourceWatchCacheSize) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{99} + return fileDescriptor_ca37af0df9a5bbd2, []int{100} } func (m *ResourceWatchCacheSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2856,7 +2884,7 @@ var xxx_messageInfo_ResourceWatchCacheSize proto.InternalMessageInfo func (m *SecretBinding) Reset() { *m = SecretBinding{} } func (*SecretBinding) ProtoMessage() {} func (*SecretBinding) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{100} + return fileDescriptor_ca37af0df9a5bbd2, []int{101} } func (m *SecretBinding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2884,7 +2912,7 @@ var xxx_messageInfo_SecretBinding proto.InternalMessageInfo func (m *SecretBindingList) Reset() { *m = SecretBindingList{} } func (*SecretBindingList) ProtoMessage() {} func (*SecretBindingList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{101} + return fileDescriptor_ca37af0df9a5bbd2, []int{102} } func (m *SecretBindingList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2912,7 +2940,7 @@ var xxx_messageInfo_SecretBindingList proto.InternalMessageInfo func (m *SecretBindingProvider) Reset() { *m = SecretBindingProvider{} } func (*SecretBindingProvider) ProtoMessage() {} func (*SecretBindingProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{102} + return fileDescriptor_ca37af0df9a5bbd2, []int{103} } func (m *SecretBindingProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2940,7 +2968,7 @@ var xxx_messageInfo_SecretBindingProvider proto.InternalMessageInfo func (m *Seed) Reset() { *m = Seed{} } func (*Seed) ProtoMessage() {} func (*Seed) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{103} + return fileDescriptor_ca37af0df9a5bbd2, []int{104} } func (m *Seed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2968,7 +2996,7 @@ var xxx_messageInfo_Seed proto.InternalMessageInfo func (m *SeedBackup) Reset() { *m = SeedBackup{} } func (*SeedBackup) ProtoMessage() {} func (*SeedBackup) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{104} + return fileDescriptor_ca37af0df9a5bbd2, []int{105} } func (m *SeedBackup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2996,7 +3024,7 @@ var xxx_messageInfo_SeedBackup proto.InternalMessageInfo func (m *SeedDNS) Reset() { *m = SeedDNS{} } func (*SeedDNS) ProtoMessage() {} func (*SeedDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{105} + return fileDescriptor_ca37af0df9a5bbd2, []int{106} } func (m *SeedDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3024,7 +3052,7 @@ var xxx_messageInfo_SeedDNS proto.InternalMessageInfo func (m *SeedDNSProvider) Reset() { *m = SeedDNSProvider{} } func (*SeedDNSProvider) ProtoMessage() {} func (*SeedDNSProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{106} + return fileDescriptor_ca37af0df9a5bbd2, []int{107} } func (m *SeedDNSProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3052,7 +3080,7 @@ var xxx_messageInfo_SeedDNSProvider proto.InternalMessageInfo func (m *SeedList) Reset() { *m = SeedList{} } func (*SeedList) ProtoMessage() {} func (*SeedList) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{107} + return fileDescriptor_ca37af0df9a5bbd2, []int{108} } func (m *SeedList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3080,7 +3108,7 @@ var xxx_messageInfo_SeedList proto.InternalMessageInfo func (m *SeedNetworks) Reset() { *m = SeedNetworks{} } func (*SeedNetworks) ProtoMessage() {} func (*SeedNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{108} + return fileDescriptor_ca37af0df9a5bbd2, []int{109} } func (m *SeedNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3108,7 +3136,7 @@ var xxx_messageInfo_SeedNetworks proto.InternalMessageInfo func (m *SeedProvider) Reset() { *m = SeedProvider{} } func (*SeedProvider) ProtoMessage() {} func (*SeedProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{109} + return fileDescriptor_ca37af0df9a5bbd2, []int{110} } func (m *SeedProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3136,7 +3164,7 @@ var xxx_messageInfo_SeedProvider proto.InternalMessageInfo func (m *SeedSelector) Reset() { *m = SeedSelector{} } func (*SeedSelector) ProtoMessage() {} func (*SeedSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{110} + return fileDescriptor_ca37af0df9a5bbd2, []int{111} } func (m *SeedSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3164,7 +3192,7 @@ var xxx_messageInfo_SeedSelector proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdog) Reset() { *m = SeedSettingDependencyWatchdog{} } func (*SeedSettingDependencyWatchdog) ProtoMessage() {} func (*SeedSettingDependencyWatchdog) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{111} + return fileDescriptor_ca37af0df9a5bbd2, []int{112} } func (m *SeedSettingDependencyWatchdog) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3192,7 +3220,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdog proto.InternalMessageInfo func (m *SeedSettingDependencyWatchdogEndpoint) Reset() { *m = SeedSettingDependencyWatchdogEndpoint{} } func (*SeedSettingDependencyWatchdogEndpoint) ProtoMessage() {} func (*SeedSettingDependencyWatchdogEndpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{112} + return fileDescriptor_ca37af0df9a5bbd2, []int{113} } func (m *SeedSettingDependencyWatchdogEndpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3220,7 +3248,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogEndpoint proto.InternalMessageI func (m *SeedSettingDependencyWatchdogProbe) Reset() { *m = SeedSettingDependencyWatchdogProbe{} } func (*SeedSettingDependencyWatchdogProbe) ProtoMessage() {} func (*SeedSettingDependencyWatchdogProbe) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{113} + return fileDescriptor_ca37af0df9a5bbd2, []int{114} } func (m *SeedSettingDependencyWatchdogProbe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3248,7 +3276,7 @@ var xxx_messageInfo_SeedSettingDependencyWatchdogProbe proto.InternalMessageInfo func (m *SeedSettingExcessCapacityReservation) Reset() { *m = SeedSettingExcessCapacityReservation{} } func (*SeedSettingExcessCapacityReservation) ProtoMessage() {} func (*SeedSettingExcessCapacityReservation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{114} + return fileDescriptor_ca37af0df9a5bbd2, []int{115} } func (m *SeedSettingExcessCapacityReservation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3276,7 +3304,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{115} + return fileDescriptor_ca37af0df9a5bbd2, []int{116} } func (m *SeedSettingLoadBalancerServices) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3304,7 +3332,7 @@ var xxx_messageInfo_SeedSettingLoadBalancerServices proto.InternalMessageInfo func (m *SeedSettingOwnerChecks) Reset() { *m = SeedSettingOwnerChecks{} } func (*SeedSettingOwnerChecks) ProtoMessage() {} func (*SeedSettingOwnerChecks) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{116} + return fileDescriptor_ca37af0df9a5bbd2, []int{117} } func (m *SeedSettingOwnerChecks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3332,7 +3360,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{117} + return fileDescriptor_ca37af0df9a5bbd2, []int{118} } func (m *SeedSettingScheduling) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3360,7 +3388,7 @@ var xxx_messageInfo_SeedSettingScheduling proto.InternalMessageInfo func (m *SeedSettingShootDNS) Reset() { *m = SeedSettingShootDNS{} } func (*SeedSettingShootDNS) ProtoMessage() {} func (*SeedSettingShootDNS) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{118} + return fileDescriptor_ca37af0df9a5bbd2, []int{119} } func (m *SeedSettingShootDNS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3388,7 +3416,7 @@ var xxx_messageInfo_SeedSettingShootDNS proto.InternalMessageInfo func (m *SeedSettingVerticalPodAutoscaler) Reset() { *m = SeedSettingVerticalPodAutoscaler{} } func (*SeedSettingVerticalPodAutoscaler) ProtoMessage() {} func (*SeedSettingVerticalPodAutoscaler) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{119} + return fileDescriptor_ca37af0df9a5bbd2, []int{120} } func (m *SeedSettingVerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3416,7 +3444,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{120} + return fileDescriptor_ca37af0df9a5bbd2, []int{121} } func (m *SeedSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3444,7 +3472,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{121} + return fileDescriptor_ca37af0df9a5bbd2, []int{122} } func (m *SeedSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3472,7 +3500,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{122} + return fileDescriptor_ca37af0df9a5bbd2, []int{123} } func (m *SeedStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3500,7 +3528,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{123} + return fileDescriptor_ca37af0df9a5bbd2, []int{124} } func (m *SeedTaint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3528,7 +3556,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{124} + return fileDescriptor_ca37af0df9a5bbd2, []int{125} } func (m *SeedTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3556,7 +3584,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{125} + return fileDescriptor_ca37af0df9a5bbd2, []int{126} } func (m *SeedVolume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3584,7 +3612,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{126} + return fileDescriptor_ca37af0df9a5bbd2, []int{127} } func (m *SeedVolumeProvider) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3612,7 +3640,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{127} + return fileDescriptor_ca37af0df9a5bbd2, []int{128} } func (m *ServiceAccountConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3640,7 +3668,7 @@ var xxx_messageInfo_ServiceAccountConfig proto.InternalMessageInfo func (m *Shoot) Reset() { *m = Shoot{} } func (*Shoot) ProtoMessage() {} func (*Shoot) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{128} + return fileDescriptor_ca37af0df9a5bbd2, []int{129} } func (m *Shoot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3668,7 +3696,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{129} + return fileDescriptor_ca37af0df9a5bbd2, []int{130} } func (m *ShootAdvertisedAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3696,7 +3724,7 @@ var xxx_messageInfo_ShootAdvertisedAddress proto.InternalMessageInfo func (m *ShootCARotation) Reset() { *m = ShootCARotation{} } func (*ShootCARotation) ProtoMessage() {} func (*ShootCARotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{130} + return fileDescriptor_ca37af0df9a5bbd2, []int{131} } func (m *ShootCARotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3724,7 +3752,7 @@ var xxx_messageInfo_ShootCARotation proto.InternalMessageInfo func (m *ShootCredentials) Reset() { *m = ShootCredentials{} } func (*ShootCredentials) ProtoMessage() {} func (*ShootCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{131} + return fileDescriptor_ca37af0df9a5bbd2, []int{132} } func (m *ShootCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3752,7 +3780,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{132} + return fileDescriptor_ca37af0df9a5bbd2, []int{133} } func (m *ShootCredentialsRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3777,10 +3805,38 @@ func (m *ShootCredentialsRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootCredentialsRotation proto.InternalMessageInfo +func (m *ShootETCDEncryptionKeyRotation) Reset() { *m = ShootETCDEncryptionKeyRotation{} } +func (*ShootETCDEncryptionKeyRotation) ProtoMessage() {} +func (*ShootETCDEncryptionKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{134} +} +func (m *ShootETCDEncryptionKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ShootETCDEncryptionKeyRotation) 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 *ShootETCDEncryptionKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ShootETCDEncryptionKeyRotation.Merge(m, src) +} +func (m *ShootETCDEncryptionKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ShootETCDEncryptionKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ShootETCDEncryptionKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ShootETCDEncryptionKeyRotation proto.InternalMessageInfo + func (m *ShootKubeconfigRotation) Reset() { *m = ShootKubeconfigRotation{} } func (*ShootKubeconfigRotation) ProtoMessage() {} func (*ShootKubeconfigRotation) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{133} + return fileDescriptor_ca37af0df9a5bbd2, []int{135} } func (m *ShootKubeconfigRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3808,7 +3864,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{134} + return fileDescriptor_ca37af0df9a5bbd2, []int{136} } func (m *ShootList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3836,7 +3892,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{135} + return fileDescriptor_ca37af0df9a5bbd2, []int{137} } func (m *ShootMachineImage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3864,7 +3920,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{136} + return fileDescriptor_ca37af0df9a5bbd2, []int{138} } func (m *ShootNetworks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3892,7 +3948,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{137} + return fileDescriptor_ca37af0df9a5bbd2, []int{139} } func (m *ShootObservabilityRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3920,7 +3976,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{138} + return fileDescriptor_ca37af0df9a5bbd2, []int{140} } func (m *ShootSSHKeypairRotation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3945,10 +4001,38 @@ func (m *ShootSSHKeypairRotation) XXX_DiscardUnknown() { var xxx_messageInfo_ShootSSHKeypairRotation proto.InternalMessageInfo +func (m *ShootServiceAccountKeyRotation) Reset() { *m = ShootServiceAccountKeyRotation{} } +func (*ShootServiceAccountKeyRotation) ProtoMessage() {} +func (*ShootServiceAccountKeyRotation) Descriptor() ([]byte, []int) { + return fileDescriptor_ca37af0df9a5bbd2, []int{141} +} +func (m *ShootServiceAccountKeyRotation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ShootServiceAccountKeyRotation) 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 *ShootServiceAccountKeyRotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_ShootServiceAccountKeyRotation.Merge(m, src) +} +func (m *ShootServiceAccountKeyRotation) XXX_Size() int { + return m.Size() +} +func (m *ShootServiceAccountKeyRotation) XXX_DiscardUnknown() { + xxx_messageInfo_ShootServiceAccountKeyRotation.DiscardUnknown(m) +} + +var xxx_messageInfo_ShootServiceAccountKeyRotation proto.InternalMessageInfo + func (m *ShootSpec) Reset() { *m = ShootSpec{} } func (*ShootSpec) ProtoMessage() {} func (*ShootSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{139} + return fileDescriptor_ca37af0df9a5bbd2, []int{142} } func (m *ShootSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3976,7 +4060,7 @@ var xxx_messageInfo_ShootSpec proto.InternalMessageInfo func (m *ShootStatus) Reset() { *m = ShootStatus{} } func (*ShootStatus) ProtoMessage() {} func (*ShootStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_ca37af0df9a5bbd2, []int{140} + return fileDescriptor_ca37af0df9a5bbd2, []int{143} } func (m *ShootStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4004,7 +4088,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{141} + return fileDescriptor_ca37af0df9a5bbd2, []int{144} } func (m *ShootTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4032,7 +4116,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{142} + return fileDescriptor_ca37af0df9a5bbd2, []int{145} } func (m *SystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4060,7 +4144,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{143} + return fileDescriptor_ca37af0df9a5bbd2, []int{146} } func (m *Toleration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4088,7 +4172,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{144} + return fileDescriptor_ca37af0df9a5bbd2, []int{147} } func (m *VerticalPodAutoscaler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4116,7 +4200,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{145} + return fileDescriptor_ca37af0df9a5bbd2, []int{148} } func (m *Volume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4144,7 +4228,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{146} + return fileDescriptor_ca37af0df9a5bbd2, []int{149} } func (m *VolumeType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4172,7 +4256,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{147} + return fileDescriptor_ca37af0df9a5bbd2, []int{150} } func (m *WatchCacheSizes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4200,7 +4284,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{148} + return fileDescriptor_ca37af0df9a5bbd2, []int{151} } func (m *Worker) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4228,7 +4312,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{149} + return fileDescriptor_ca37af0df9a5bbd2, []int{152} } func (m *WorkerKubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4256,7 +4340,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{150} + return fileDescriptor_ca37af0df9a5bbd2, []int{153} } func (m *WorkerSystemComponents) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4367,6 +4451,7 @@ func init() { proto.RegisterType((*Networking)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.Networking") proto.RegisterType((*NginxIngress)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.NginxIngress") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.NginxIngress.ConfigEntry") + proto.RegisterType((*NodeLocalDNS)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.NodeLocalDNS") proto.RegisterType((*OIDCConfig)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.OIDCConfig") proto.RegisterMapType((map[string]string)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.OIDCConfig.RequiredClaimsEntry") proto.RegisterType((*OpenIDConnectClientAuthentication)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.OpenIDConnectClientAuthentication") @@ -4425,12 +4510,14 @@ func init() { proto.RegisterType((*ShootCARotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootCARotation") proto.RegisterType((*ShootCredentials)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootCredentials") proto.RegisterType((*ShootCredentialsRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootCredentialsRotation") + proto.RegisterType((*ShootETCDEncryptionKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootETCDEncryptionKeyRotation") proto.RegisterType((*ShootKubeconfigRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootKubeconfigRotation") proto.RegisterType((*ShootList)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootList") proto.RegisterType((*ShootMachineImage)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootMachineImage") proto.RegisterType((*ShootNetworks)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootNetworks") proto.RegisterType((*ShootObservabilityRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootObservabilityRotation") proto.RegisterType((*ShootSSHKeypairRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootSSHKeypairRotation") + proto.RegisterType((*ShootServiceAccountKeyRotation)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootServiceAccountKeyRotation") proto.RegisterType((*ShootSpec)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootSpec") proto.RegisterType((*ShootStatus)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootStatus") proto.RegisterType((*ShootTemplate)(nil), "github.com.gardener.gardener.pkg.apis.core.v1beta1.ShootTemplate") @@ -4452,640 +4539,655 @@ func init() { } var fileDescriptor_ca37af0df9a5bbd2 = []byte{ - // 10119 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0xbd, 0x7d, 0x6c, 0x24, 0xc9, - 0x75, 0x18, 0xae, 0x1e, 0x72, 0xc8, 0xe1, 0x1b, 0x92, 0x4b, 0xd6, 0x7e, 0x1c, 0x8f, 0x77, 0xbb, - 0x5c, 0xb5, 0xee, 0x0e, 0x7b, 0xbf, 0x93, 0xb8, 0xbe, 0xd3, 0xc9, 0xa7, 0xbb, 0xd3, 0xe9, 0x6e, - 0x3e, 0xb8, 0xbb, 0xa3, 0x5d, 0x72, 0xe7, 0x6a, 0x96, 0x7b, 0x1f, 0xf6, 0xef, 0xa2, 0x66, 0x77, - 0x71, 0xd8, 0xc7, 0x9e, 0xee, 0xb9, 0xee, 0x1e, 0x2e, 0xb9, 0x17, 0x43, 0x96, 0xa2, 0x8f, 0xc8, - 0x4e, 0x02, 0xc3, 0x81, 0x23, 0x48, 0x72, 0x62, 0x19, 0x86, 0xe3, 0x04, 0x0e, 0x6c, 0x25, 0x81, - 0x15, 0x3b, 0x1f, 0x88, 0xe1, 0x20, 0xb0, 0x6c, 0x24, 0x81, 0xe2, 0x40, 0xb0, 0x82, 0xc4, 0x54, - 0xc4, 0x20, 0x4a, 0x82, 0xe4, 0x8f, 0x00, 0x46, 0xfe, 0x59, 0x18, 0x48, 0x50, 0x1f, 0xdd, 0x5d, - 0xfd, 0xc5, 0x1d, 0xf6, 0x90, 0xab, 0xbb, 0xf8, 0x2f, 0x72, 0xea, 0x55, 0xbd, 0x57, 0x5d, 0xf5, - 0xea, 0xd5, 0x7b, 0xaf, 0x5e, 0xbd, 0x82, 0x7a, 0xd7, 0xf4, 0xb7, 0x06, 0x1b, 0xcb, 0xba, 0xd3, - 0xbb, 0xdc, 0xd5, 0x5c, 0x83, 0xd8, 0xc4, 0x8d, 0xfe, 0xe9, 0x6f, 0x77, 0x2f, 0x6b, 0x7d, 0xd3, - 0xbb, 0xac, 0x3b, 0x2e, 0xb9, 0xbc, 0xf3, 0xf4, 0x06, 0xf1, 0xb5, 0xa7, 0x2f, 0x77, 0x29, 0x4c, - 0xf3, 0x89, 0xb1, 0xdc, 0x77, 0x1d, 0xdf, 0x41, 0xcf, 0x44, 0x38, 0x96, 0x83, 0xa6, 0xd1, 0x3f, - 0xfd, 0xed, 0xee, 0x32, 0xc5, 0xb1, 0x4c, 0x71, 0x2c, 0x0b, 0x1c, 0x8b, 0x1f, 0x91, 0xe9, 0x3a, - 0x5d, 0xe7, 0x32, 0x43, 0xb5, 0x31, 0xd8, 0x64, 0xbf, 0xd8, 0x0f, 0xf6, 0x1f, 0x27, 0xb1, 0xf8, - 0xe4, 0xf6, 0xc7, 0xbd, 0x65, 0xd3, 0xa1, 0x9d, 0xb9, 0xac, 0x0d, 0x7c, 0xc7, 0xd3, 0x35, 0xcb, - 0xb4, 0xbb, 0x97, 0x77, 0x52, 0xbd, 0x59, 0x54, 0xa5, 0xaa, 0xa2, 0xdb, 0x87, 0xd6, 0x71, 0x37, - 0x34, 0x3d, 0xab, 0xce, 0xb3, 0x51, 0x9d, 0x9e, 0xa6, 0x6f, 0x99, 0x36, 0x71, 0xf7, 0x82, 0x01, - 0xb9, 0xec, 0x12, 0xcf, 0x19, 0xb8, 0x3a, 0x39, 0x52, 0x2b, 0xef, 0x72, 0x8f, 0xf8, 0x5a, 0x16, - 0xad, 0xcb, 0x79, 0xad, 0xdc, 0x81, 0xed, 0x9b, 0xbd, 0x34, 0x99, 0x1f, 0xbf, 0x5f, 0x03, 0x4f, - 0xdf, 0x22, 0x3d, 0x2d, 0xd5, 0xee, 0xa3, 0x79, 0xed, 0x06, 0xbe, 0x69, 0x5d, 0x36, 0x6d, 0xdf, - 0xf3, 0xdd, 0x64, 0x23, 0xf5, 0x19, 0x28, 0xd7, 0x0c, 0xc3, 0xb1, 0xd1, 0x93, 0x30, 0x49, 0x6c, - 0x6d, 0xc3, 0x22, 0xc6, 0x82, 0x72, 0x51, 0xb9, 0x54, 0xa9, 0x9f, 0xfa, 0xf6, 0xfe, 0xd2, 0x07, - 0x0e, 0xf6, 0x97, 0x26, 0x57, 0x78, 0x31, 0x0e, 0xe0, 0xea, 0x2f, 0x94, 0x60, 0x82, 0x35, 0xf2, - 0xd0, 0xcf, 0x2b, 0x70, 0x7a, 0x7b, 0xb0, 0x41, 0x5c, 0x9b, 0xf8, 0xc4, 0x6b, 0x6a, 0xde, 0xd6, - 0x86, 0xa3, 0xb9, 0x1c, 0x45, 0xf5, 0x99, 0xab, 0xcb, 0x47, 0xe7, 0x9e, 0xe5, 0xeb, 0x69, 0x74, - 0xf5, 0x87, 0x0e, 0xf6, 0x97, 0x4e, 0x67, 0x00, 0x70, 0x16, 0x71, 0xb4, 0x03, 0xd3, 0x76, 0xd7, - 0xb4, 0x77, 0x5b, 0x76, 0xd7, 0x25, 0x9e, 0xb7, 0x50, 0x62, 0x9d, 0x79, 0xa5, 0x48, 0x67, 0xd6, - 0x24, 0x3c, 0xf5, 0xb9, 0x83, 0xfd, 0xa5, 0x69, 0xb9, 0x04, 0xc7, 0xe8, 0xa8, 0x5f, 0x54, 0xe0, - 0x54, 0xcd, 0xe8, 0x99, 0x9e, 0x67, 0x3a, 0x76, 0xdb, 0x1a, 0x74, 0x4d, 0x1b, 0x5d, 0x84, 0x71, - 0x5b, 0xeb, 0x11, 0x36, 0x20, 0x53, 0xf5, 0x69, 0x31, 0xa6, 0xe3, 0x6b, 0x5a, 0x8f, 0x60, 0x06, - 0x41, 0xaf, 0xc2, 0x84, 0xee, 0xd8, 0x9b, 0x66, 0x57, 0xf4, 0xf3, 0x23, 0xcb, 0x7c, 0x1e, 0x97, - 0xe5, 0x79, 0x64, 0xdd, 0x13, 0xf3, 0xbf, 0x8c, 0xb5, 0x3b, 0x2b, 0xbb, 0x3e, 0xb1, 0x29, 0x99, - 0x3a, 0x1c, 0xec, 0x2f, 0x4d, 0x34, 0x18, 0x02, 0x2c, 0x10, 0xa9, 0x57, 0xa0, 0x52, 0xb3, 0x88, - 0xeb, 0x9b, 0x76, 0x17, 0xbd, 0x00, 0xb3, 0xa4, 0xa7, 0x99, 0x16, 0x26, 0x3a, 0x31, 0x77, 0x88, - 0xeb, 0x2d, 0x28, 0x17, 0xc7, 0x2e, 0x4d, 0xd5, 0xd1, 0xc1, 0xfe, 0xd2, 0xec, 0x4a, 0x0c, 0x82, - 0x13, 0x35, 0xd5, 0xcf, 0x2a, 0x50, 0xad, 0x0d, 0x0c, 0xd3, 0xe7, 0xf8, 0x91, 0x0b, 0x55, 0x8d, - 0xfe, 0x6c, 0x3b, 0x96, 0xa9, 0xef, 0x89, 0x49, 0x7e, 0xb9, 0xc8, 0xb8, 0xd6, 0x22, 0x34, 0xf5, - 0x53, 0x07, 0xfb, 0x4b, 0x55, 0xa9, 0x00, 0xcb, 0x44, 0xd4, 0x2d, 0x90, 0x61, 0xe8, 0x0d, 0x98, - 0xe6, 0x1f, 0xb9, 0xaa, 0xf5, 0x31, 0xd9, 0x14, 0x7d, 0xf8, 0x90, 0x34, 0x66, 0x01, 0xa1, 0xe5, - 0x9b, 0x1b, 0x6f, 0x13, 0xdd, 0xc7, 0x64, 0x93, 0xb8, 0xc4, 0xd6, 0x09, 0x9f, 0xbe, 0x86, 0xd4, - 0x18, 0xc7, 0x50, 0xa9, 0xdf, 0x57, 0x60, 0xae, 0xb6, 0xa3, 0x99, 0x96, 0xb6, 0x61, 0x5a, 0xa6, - 0xbf, 0xf7, 0xa6, 0x63, 0x93, 0x21, 0xe6, 0x6f, 0x1d, 0x1e, 0x1a, 0xd8, 0x1a, 0x6f, 0x67, 0x91, - 0x55, 0x3e, 0x63, 0xb7, 0xf6, 0xfa, 0x84, 0x32, 0x1e, 0x1d, 0xe9, 0x47, 0x0e, 0xf6, 0x97, 0x1e, - 0x5a, 0xcf, 0xae, 0x82, 0xf3, 0xda, 0x22, 0x0c, 0xe7, 0x24, 0xd0, 0x6d, 0xc7, 0x1a, 0xf4, 0x04, - 0xd6, 0x31, 0x86, 0x75, 0xf1, 0x60, 0x7f, 0xe9, 0xdc, 0x7a, 0x66, 0x0d, 0x9c, 0xd3, 0x52, 0xfd, - 0x76, 0x09, 0xa6, 0xeb, 0x9a, 0xbe, 0x3d, 0xe8, 0xd7, 0x07, 0xfa, 0x36, 0xf1, 0xd1, 0xa7, 0xa1, - 0x42, 0xc5, 0x96, 0xa1, 0xf9, 0x9a, 0x18, 0xc9, 0x1f, 0xcb, 0xe5, 0x3e, 0x36, 0x89, 0xb4, 0x76, - 0x34, 0xb6, 0xab, 0xc4, 0xd7, 0xea, 0x48, 0x8c, 0x09, 0x44, 0x65, 0x38, 0xc4, 0x8a, 0x36, 0x61, - 0xdc, 0xeb, 0x13, 0x5d, 0xf0, 0x76, 0xb3, 0x08, 0xaf, 0xc8, 0x3d, 0xee, 0xf4, 0x89, 0x1e, 0xcd, - 0x02, 0xfd, 0x85, 0x19, 0x7e, 0x64, 0xc3, 0x84, 0xe7, 0x6b, 0xfe, 0x80, 0x0e, 0x0f, 0xa5, 0x74, - 0x65, 0x64, 0x4a, 0x0c, 0x5b, 0x7d, 0x56, 0xd0, 0x9a, 0xe0, 0xbf, 0xb1, 0xa0, 0xa2, 0xfe, 0xb1, - 0x02, 0x73, 0x72, 0xf5, 0x1b, 0xa6, 0xe7, 0xa3, 0x9f, 0x4c, 0x0d, 0xe7, 0xf2, 0x70, 0xc3, 0x49, - 0x5b, 0xb3, 0xc1, 0x9c, 0x13, 0xe4, 0x2a, 0x41, 0x89, 0x34, 0x94, 0x04, 0xca, 0xa6, 0x4f, 0x7a, - 0x9c, 0xad, 0x0a, 0xca, 0x33, 0xb9, 0xcb, 0xf5, 0x19, 0x41, 0xac, 0xdc, 0xa2, 0x68, 0x31, 0xc7, - 0xae, 0x7e, 0x1a, 0xce, 0xc8, 0xb5, 0xda, 0xae, 0xb3, 0x63, 0x1a, 0xc4, 0xa5, 0x2b, 0xc1, 0xdf, - 0xeb, 0xa7, 0x56, 0x02, 0xe5, 0x2c, 0xcc, 0x20, 0xe8, 0x09, 0x98, 0x70, 0x49, 0xd7, 0x74, 0x6c, - 0x36, 0xdb, 0x53, 0xd1, 0xd8, 0x61, 0x56, 0x8a, 0x05, 0x54, 0xfd, 0xdf, 0xa5, 0xf8, 0xd8, 0xd1, - 0x69, 0x44, 0x3b, 0x50, 0xe9, 0x0b, 0x52, 0x62, 0xec, 0xae, 0x8d, 0xfa, 0x81, 0x41, 0xd7, 0xa3, - 0x51, 0x0d, 0x4a, 0x70, 0x48, 0x0b, 0x99, 0x30, 0x1b, 0xfc, 0xdf, 0x18, 0x41, 0x0c, 0x33, 0x71, - 0xda, 0x8e, 0x21, 0xc2, 0x09, 0xc4, 0xe8, 0x16, 0x4c, 0x79, 0x44, 0x77, 0x09, 0x95, 0x49, 0x82, - 0x4d, 0x33, 0x05, 0x57, 0x27, 0xa8, 0x24, 0x04, 0xd7, 0xbc, 0xe8, 0xfe, 0x54, 0x08, 0xc0, 0x11, - 0x22, 0x74, 0x09, 0x2a, 0x1e, 0x21, 0x06, 0x95, 0x48, 0x0b, 0xe3, 0x7c, 0x6e, 0xe8, 0xa7, 0x76, - 0x44, 0x19, 0x0e, 0xa1, 0xea, 0x37, 0xc6, 0x01, 0xa5, 0x59, 0x5c, 0x1e, 0x01, 0x5e, 0x22, 0xc6, - 0x7f, 0x94, 0x11, 0x10, 0xab, 0x25, 0x81, 0x18, 0xdd, 0x85, 0x19, 0x4b, 0xf3, 0xfc, 0x9b, 0x7d, - 0xaa, 0x83, 0x04, 0x8c, 0x52, 0x7d, 0xa6, 0x56, 0x64, 0xa6, 0x6f, 0xc8, 0x88, 0xea, 0xf3, 0x07, - 0xfb, 0x4b, 0x33, 0xb1, 0x22, 0x1c, 0x27, 0x85, 0xde, 0x86, 0x29, 0x5a, 0xb0, 0xe2, 0xba, 0x8e, - 0x2b, 0x46, 0xff, 0xa5, 0xa2, 0x74, 0x19, 0x92, 0xfa, 0x0c, 0x9d, 0x93, 0xf0, 0x27, 0x8e, 0xd0, - 0xa3, 0x4f, 0x01, 0x72, 0x36, 0x3c, 0xe2, 0xee, 0x10, 0xe3, 0x2a, 0x57, 0xb8, 0xe8, 0xc7, 0xd2, - 0xd9, 0x19, 0xab, 0x2f, 0x8a, 0xd9, 0x44, 0x37, 0x53, 0x35, 0x70, 0x46, 0x2b, 0xb4, 0x0d, 0x28, - 0x54, 0xda, 0x42, 0x06, 0x58, 0x28, 0x0f, 0xcf, 0x3e, 0xe7, 0x28, 0xb1, 0xab, 0x29, 0x14, 0x38, - 0x03, 0xad, 0xfa, 0x2f, 0x4b, 0x50, 0xe5, 0x2c, 0xb2, 0x62, 0xfb, 0xee, 0xde, 0x03, 0xd8, 0x20, - 0x48, 0x6c, 0x83, 0x68, 0x14, 0x5f, 0xf3, 0xac, 0xc3, 0xb9, 0xfb, 0x43, 0x2f, 0xb1, 0x3f, 0xac, - 0x8c, 0x4a, 0xe8, 0xf0, 0xed, 0xe1, 0xbb, 0x0a, 0x9c, 0x92, 0x6a, 0x3f, 0x80, 0xdd, 0xc1, 0x88, - 0xef, 0x0e, 0x2f, 0x8f, 0xf8, 0x7d, 0x39, 0x9b, 0x83, 0x13, 0xfb, 0x2c, 0x26, 0xb8, 0x9f, 0x01, - 0xd8, 0x60, 0xe2, 0x64, 0x2d, 0xd2, 0x93, 0xc2, 0x29, 0xaf, 0x87, 0x10, 0x2c, 0xd5, 0x8a, 0xc9, - 0xac, 0xd2, 0xa1, 0x32, 0xeb, 0xbf, 0x8c, 0xc1, 0x7c, 0x6a, 0xd8, 0xd3, 0x72, 0x44, 0xf9, 0x11, - 0xc9, 0x91, 0xd2, 0x8f, 0x42, 0x8e, 0x8c, 0x15, 0x92, 0x23, 0x43, 0xef, 0x13, 0xc8, 0x05, 0xd4, - 0x33, 0xbb, 0xbc, 0x59, 0xc7, 0xd7, 0x5c, 0xff, 0x96, 0xd9, 0x23, 0x42, 0xe2, 0xfc, 0x7f, 0xc3, - 0xb1, 0x2c, 0x6d, 0xc1, 0x05, 0xcf, 0x6a, 0x0a, 0x13, 0xce, 0xc0, 0xae, 0xfe, 0x9e, 0x02, 0x63, - 0x0d, 0xdc, 0x42, 0x4f, 0xc5, 0xf4, 0xed, 0x87, 0x64, 0x7d, 0xfb, 0xde, 0xfe, 0xd2, 0x64, 0x03, - 0xb7, 0x24, 0xd5, 0xfb, 0xaf, 0x2a, 0x30, 0xaf, 0x3b, 0xb6, 0xaf, 0xd1, 0x5e, 0x60, 0xbe, 0x29, - 0x05, 0x0b, 0xa0, 0x90, 0xaa, 0xd9, 0x48, 0x20, 0xab, 0x3f, 0x2c, 0x3a, 0x30, 0x9f, 0x84, 0x78, - 0x38, 0x4d, 0x59, 0x5d, 0x87, 0xa9, 0x86, 0xe5, 0x0c, 0x8c, 0x96, 0xbd, 0xe9, 0x1c, 0xa3, 0xbe, - 0xf4, 0x3d, 0x05, 0xa6, 0x19, 0xde, 0xb6, 0xeb, 0x6c, 0x9a, 0x16, 0x79, 0x7f, 0xa8, 0xed, 0x72, - 0x8f, 0xf3, 0xc4, 0x32, 0x53, 0xa3, 0xe5, 0x8a, 0xef, 0x13, 0x35, 0x5a, 0xee, 0x72, 0x8e, 0xa4, - 0xfc, 0x85, 0xc9, 0xf8, 0x97, 0x31, 0x59, 0x79, 0x09, 0x2a, 0xba, 0x56, 0x1f, 0xd8, 0x86, 0x15, - 0xf2, 0x05, 0xed, 0x65, 0xa3, 0xc6, 0xcb, 0x70, 0x08, 0x45, 0x77, 0x01, 0x22, 0xd7, 0x86, 0x98, - 0x86, 0x2b, 0xa3, 0xb9, 0x53, 0x3a, 0xc4, 0xf7, 0x4d, 0xbb, 0xeb, 0x45, 0x53, 0x1f, 0xc1, 0xb0, - 0x44, 0x0d, 0xfd, 0x14, 0xcc, 0x88, 0x41, 0x6e, 0xf5, 0xb4, 0xae, 0xb0, 0x38, 0x0b, 0x8e, 0xd4, - 0xaa, 0x84, 0xa8, 0x7e, 0x56, 0x10, 0x9e, 0x91, 0x4b, 0x3d, 0x1c, 0xa7, 0x86, 0xf6, 0x60, 0xba, - 0x27, 0x5b, 0xd1, 0xe3, 0xc5, 0x37, 0x34, 0xc9, 0xa2, 0xae, 0x9f, 0x11, 0xc4, 0xa7, 0x63, 0xf6, - 0x77, 0x8c, 0x54, 0x86, 0x31, 0x50, 0x3e, 0x29, 0x63, 0x80, 0xc0, 0x24, 0x5f, 0xde, 0xde, 0xc2, - 0x04, 0xfb, 0xc0, 0x17, 0x8a, 0x7c, 0x20, 0x97, 0x14, 0x91, 0xaf, 0x8e, 0xff, 0xf6, 0x70, 0x80, - 0x1b, 0xed, 0xc0, 0x34, 0x95, 0xeb, 0x1d, 0x62, 0x11, 0xdd, 0x77, 0xdc, 0x85, 0xc9, 0xe2, 0xbe, - 0xb0, 0x8e, 0x84, 0x87, 0x3b, 0x53, 0xe4, 0x12, 0x1c, 0xa3, 0x13, 0x4a, 0xbf, 0x4a, 0xae, 0xf4, - 0x1b, 0x40, 0x75, 0x47, 0xf2, 0x6a, 0x4c, 0xb1, 0x41, 0xf8, 0x64, 0x91, 0x8e, 0x45, 0x2e, 0x8e, - 0xfa, 0x69, 0x41, 0xa8, 0x2a, 0xbb, 0x43, 0x64, 0x3a, 0xea, 0x7e, 0x05, 0xe6, 0x1b, 0xd6, 0xc0, - 0xf3, 0x89, 0x5b, 0x13, 0xce, 0x66, 0xe2, 0xa2, 0xcf, 0x29, 0x70, 0x8e, 0xfd, 0xdb, 0x74, 0xee, - 0xd8, 0x4d, 0x62, 0x69, 0x7b, 0xb5, 0x4d, 0x5a, 0xc3, 0x30, 0x8e, 0x26, 0x81, 0x9a, 0x03, 0xa1, - 0x47, 0x30, 0xf7, 0x4c, 0x27, 0x13, 0x23, 0xce, 0xa1, 0x84, 0x7e, 0x56, 0x81, 0x87, 0x33, 0x40, - 0x4d, 0x62, 0x11, 0x9f, 0x08, 0x19, 0x70, 0xd4, 0x7e, 0x9c, 0x3f, 0xd8, 0x5f, 0x7a, 0xb8, 0x93, - 0x87, 0x14, 0xe7, 0xd3, 0x43, 0x7f, 0x4d, 0x81, 0xc5, 0x0c, 0xe8, 0x15, 0xcd, 0xb4, 0x06, 0x2e, - 0x11, 0x6a, 0xf4, 0x51, 0xbb, 0x73, 0xe1, 0x60, 0x7f, 0x69, 0xb1, 0x93, 0x8b, 0x15, 0x1f, 0x42, - 0x11, 0x7d, 0x06, 0xce, 0x86, 0xd0, 0x75, 0xdb, 0x26, 0xc4, 0x20, 0x06, 0xd3, 0x4c, 0xc6, 0x0b, - 0x75, 0xe5, 0xe1, 0x83, 0xfd, 0xa5, 0xb3, 0x9d, 0x2c, 0x84, 0x38, 0x9b, 0x0e, 0xea, 0xc2, 0xf9, - 0x08, 0xe0, 0x9b, 0x96, 0x79, 0x97, 0x61, 0xba, 0xb5, 0xe5, 0x12, 0x6f, 0xcb, 0xb1, 0x0c, 0x26, - 0x2c, 0x94, 0xfa, 0x07, 0x0f, 0xf6, 0x97, 0xce, 0x77, 0x0e, 0xab, 0x88, 0x0f, 0xc7, 0x83, 0x0c, - 0x98, 0xf6, 0x74, 0xcd, 0x6e, 0xd9, 0x3e, 0x71, 0x77, 0x34, 0x6b, 0x61, 0xa2, 0xd0, 0x07, 0xf2, - 0x25, 0x2a, 0xe1, 0xc1, 0x31, 0xac, 0xe8, 0xe3, 0x50, 0x21, 0xbb, 0x7d, 0xcd, 0x36, 0x08, 0x17, - 0x0b, 0x53, 0xf5, 0x47, 0xe9, 0x66, 0xb4, 0x22, 0xca, 0xee, 0xed, 0x2f, 0x4d, 0x07, 0xff, 0xaf, - 0x3a, 0x06, 0xc1, 0x61, 0x6d, 0xf4, 0x17, 0xe1, 0x4c, 0x4f, 0xdb, 0x5d, 0x73, 0x0c, 0xc2, 0x84, - 0x1c, 0x95, 0x79, 0x6c, 0x22, 0x2a, 0x85, 0xfa, 0xb9, 0x70, 0xb0, 0xbf, 0x74, 0x66, 0x35, 0x03, - 0x1f, 0xce, 0xa4, 0x42, 0xa7, 0xa1, 0xa7, 0xed, 0x5e, 0x75, 0x35, 0x9d, 0x6c, 0x0e, 0xac, 0x5b, - 0xc4, 0xed, 0x99, 0x36, 0xd7, 0x26, 0x89, 0xee, 0xd8, 0x06, 0x15, 0x25, 0xca, 0xa5, 0x32, 0x9f, - 0x86, 0xd5, 0xc3, 0x2a, 0xe2, 0xc3, 0xf1, 0xa0, 0x67, 0x61, 0xda, 0xec, 0xda, 0x8e, 0x4b, 0x6e, - 0x69, 0xa6, 0xed, 0x7b, 0x0b, 0xc0, 0x1c, 0xaf, 0x6c, 0x58, 0x5b, 0x52, 0x39, 0x8e, 0xd5, 0x52, - 0xff, 0xbb, 0x02, 0x55, 0x21, 0x60, 0x98, 0x1e, 0xb8, 0x01, 0x65, 0x9d, 0xea, 0x01, 0x42, 0x90, - 0xbc, 0x54, 0x58, 0xdf, 0xa0, 0xd8, 0x22, 0x65, 0x83, 0x15, 0x61, 0x8e, 0x1a, 0xed, 0x64, 0x68, - 0x0b, 0xf5, 0xd1, 0xb4, 0x05, 0x46, 0xed, 0x3e, 0x9a, 0x82, 0xba, 0x3f, 0x06, 0x53, 0x0d, 0xc7, - 0x36, 0x4c, 0x66, 0x61, 0x3c, 0x1d, 0xd3, 0x78, 0xcf, 0xcb, 0x32, 0xff, 0xde, 0xfe, 0xd2, 0x4c, - 0x58, 0x51, 0xda, 0x04, 0x9e, 0x0f, 0xcd, 0x72, 0xae, 0x02, 0x7f, 0x30, 0x6e, 0x4f, 0xdf, 0xdb, - 0x5f, 0x3a, 0x15, 0x36, 0x8b, 0x9b, 0xd8, 0x68, 0x07, 0x10, 0x35, 0x94, 0x6e, 0xb9, 0x9a, 0xed, - 0x71, 0xb4, 0x94, 0x05, 0xc7, 0x8e, 0x6c, 0xa5, 0x84, 0x76, 0xd4, 0x8d, 0x14, 0x36, 0x9c, 0x41, - 0x01, 0xbd, 0x0d, 0xb3, 0xb4, 0x74, 0xbd, 0x6f, 0x68, 0x3e, 0x91, 0xe4, 0xcf, 0x91, 0x2c, 0x23, - 0x41, 0x73, 0xf6, 0x46, 0x0c, 0x13, 0x4e, 0x60, 0xe6, 0x16, 0x82, 0xe6, 0x39, 0x36, 0x13, 0x2d, - 0x31, 0x0b, 0x81, 0x96, 0x62, 0x01, 0x45, 0x4f, 0xc2, 0x64, 0x8f, 0x78, 0x9e, 0xd6, 0x25, 0x4c, - 0x56, 0x4c, 0x45, 0x0a, 0xc1, 0x2a, 0x2f, 0xc6, 0x01, 0x1c, 0x7d, 0x18, 0xca, 0xba, 0x63, 0x10, - 0x6f, 0x61, 0x92, 0x71, 0xf3, 0x39, 0xc6, 0x4b, 0xb4, 0xe0, 0xde, 0xfe, 0xd2, 0x14, 0xb3, 0x3a, - 0xe9, 0x2f, 0xcc, 0x2b, 0xa9, 0xbf, 0x44, 0xf5, 0xf3, 0x84, 0x9d, 0x33, 0x84, 0x65, 0xf3, 0xe0, - 0x9c, 0xaa, 0xea, 0x97, 0x4b, 0x70, 0x86, 0xf6, 0xd0, 0x75, 0x2c, 0x8b, 0xee, 0x5d, 0x7d, 0xcb, - 0xd9, 0xeb, 0x11, 0xfb, 0x41, 0x9c, 0x6d, 0x04, 0xe3, 0x50, 0xca, 0x1d, 0x87, 0x5e, 0x6a, 0x1c, - 0xc6, 0x8a, 0x8c, 0x43, 0xc8, 0x2e, 0xf7, 0x19, 0x8b, 0xff, 0xaa, 0xc0, 0x42, 0xd6, 0x58, 0x3c, - 0x00, 0xab, 0xaa, 0x17, 0xb7, 0xaa, 0xae, 0x15, 0xb5, 0xbe, 0x93, 0x5d, 0xcf, 0xb1, 0xae, 0x7e, - 0x58, 0x82, 0x73, 0x51, 0xf5, 0x96, 0xed, 0xf9, 0x9a, 0x65, 0x71, 0x3f, 0xc7, 0xc9, 0xcf, 0x7b, - 0x3f, 0x66, 0x1c, 0xaf, 0x8d, 0xf6, 0xa9, 0x72, 0xdf, 0x73, 0xbd, 0x97, 0xbb, 0x09, 0xef, 0x65, - 0xfb, 0x18, 0x69, 0x1e, 0xee, 0xc8, 0xfc, 0x1f, 0x0a, 0x2c, 0x66, 0x37, 0x7c, 0x00, 0x4c, 0xe5, - 0xc4, 0x99, 0xea, 0x53, 0xc7, 0xf7, 0xd5, 0x39, 0x6c, 0xf5, 0x0f, 0x4a, 0x79, 0x5f, 0xcb, 0xcc, - 0xf7, 0x4d, 0x38, 0x45, 0xed, 0x2a, 0xcf, 0x17, 0x6e, 0xb6, 0xa3, 0x9d, 0x3f, 0x07, 0xce, 0xac, - 0x53, 0x38, 0x8e, 0x03, 0x27, 0x91, 0xa2, 0x35, 0x98, 0xa4, 0xc6, 0x14, 0xc5, 0x5f, 0x1a, 0x1e, - 0x7f, 0x28, 0xf3, 0x3b, 0xbc, 0x2d, 0x0e, 0x90, 0xa0, 0x9f, 0x84, 0x19, 0x23, 0x5c, 0x51, 0xf7, - 0x39, 0x7c, 0x4a, 0x62, 0x65, 0x0e, 0xd1, 0xa6, 0xdc, 0x1a, 0xc7, 0x91, 0xa9, 0x7f, 0xa6, 0xc0, - 0xa3, 0x87, 0xf1, 0x16, 0x7a, 0x07, 0x40, 0x0f, 0x36, 0x71, 0x1e, 0x7e, 0x50, 0x54, 0x0d, 0x0a, - 0xb0, 0x44, 0x0b, 0x34, 0x2c, 0xf2, 0xb0, 0x44, 0x24, 0xe3, 0x4c, 0xab, 0x74, 0x42, 0x67, 0x5a, - 0xea, 0xff, 0x54, 0x64, 0x51, 0x24, 0xcf, 0xed, 0xfb, 0x4d, 0x14, 0xc9, 0x7d, 0xcf, 0xf5, 0xd8, - 0xfd, 0xbb, 0x12, 0x5c, 0xcc, 0x6e, 0x22, 0xed, 0xbd, 0xaf, 0xc0, 0x44, 0x9f, 0xc7, 0x88, 0x8c, - 0xb1, 0xbd, 0xf1, 0x12, 0x95, 0x2c, 0x3c, 0x82, 0xe3, 0xde, 0xfe, 0xd2, 0x62, 0x96, 0xa0, 0x17, - 0xb1, 0x1f, 0xa2, 0x1d, 0x32, 0x13, 0x7e, 0x0b, 0xae, 0x63, 0x7d, 0x74, 0x48, 0xe1, 0xa2, 0x6d, - 0x10, 0x6b, 0x68, 0x57, 0xc5, 0x67, 0x15, 0x98, 0x8d, 0x71, 0xb4, 0xb7, 0x50, 0x66, 0x3c, 0x5a, - 0xe8, 0x38, 0x21, 0xb6, 0x54, 0xa2, 0x9d, 0x3b, 0x56, 0xec, 0xe1, 0x04, 0xc1, 0x84, 0x98, 0x95, - 0x47, 0xf5, 0x7d, 0x27, 0x66, 0xe5, 0xce, 0xe7, 0x88, 0xd9, 0x5f, 0x2c, 0xe5, 0x7d, 0x2d, 0x13, - 0xb3, 0x77, 0x60, 0x2a, 0x88, 0xc1, 0x0b, 0xc4, 0xc5, 0x95, 0x51, 0xfb, 0xc4, 0xd1, 0x45, 0x47, - 0xe9, 0x41, 0x89, 0x87, 0x23, 0x5a, 0xe8, 0xf3, 0x0a, 0x40, 0x34, 0x31, 0x62, 0x51, 0xdd, 0x3a, - 0xbe, 0xe1, 0x90, 0xd4, 0x9a, 0x59, 0xba, 0xa4, 0x25, 0xa6, 0x90, 0xe8, 0xaa, 0xdf, 0x2c, 0x01, - 0x4a, 0xf7, 0x9d, 0xaa, 0x9b, 0xdb, 0xa6, 0x6d, 0x24, 0xd5, 0xee, 0xeb, 0xa6, 0x6d, 0x60, 0x06, - 0x19, 0x42, 0x21, 0x7d, 0x09, 0x4e, 0x75, 0x2d, 0x67, 0x43, 0xb3, 0xac, 0x3d, 0x11, 0xd6, 0xc7, - 0x56, 0x68, 0xa5, 0x7e, 0x9a, 0x6e, 0x4c, 0x57, 0xe3, 0x20, 0x9c, 0xac, 0x8b, 0xfa, 0x30, 0xe7, - 0x52, 0xe3, 0x58, 0x37, 0x2d, 0x66, 0xa0, 0x38, 0x03, 0xbf, 0xa0, 0xf7, 0xe5, 0xcc, 0xc1, 0xfe, - 0xd2, 0x1c, 0x4e, 0xe0, 0xc2, 0x29, 0xec, 0xe8, 0x71, 0x98, 0xec, 0xbb, 0x66, 0x4f, 0x73, 0xf7, - 0x98, 0x09, 0x54, 0xa9, 0x57, 0xe9, 0x0e, 0xd7, 0xe6, 0x45, 0x38, 0x80, 0xa9, 0x9f, 0x57, 0x60, - 0xb2, 0xe1, 0xb8, 0xa4, 0xb9, 0xd6, 0x41, 0x7b, 0x50, 0x95, 0xc2, 0x48, 0xc5, 0x7a, 0x29, 0xc8, - 0x40, 0x0c, 0x63, 0x2d, 0xc2, 0x16, 0x04, 0xab, 0x85, 0x05, 0x58, 0xa6, 0xa5, 0xb6, 0xe9, 0xc4, - 0x25, 0xdb, 0xa0, 0x17, 0x60, 0xbc, 0xe7, 0x18, 0x81, 0xbd, 0xf4, 0x44, 0x30, 0x2d, 0xab, 0x8e, - 0x41, 0xed, 0xe2, 0x73, 0xe9, 0x16, 0xcc, 0xdd, 0xc2, 0xda, 0xa8, 0x5f, 0x57, 0x60, 0x8c, 0x7e, - 0x94, 0x0a, 0x13, 0x86, 0xd3, 0xd3, 0x4c, 0x5b, 0x60, 0x61, 0x61, 0x7f, 0x4d, 0x56, 0x82, 0x05, - 0x04, 0xf5, 0x61, 0x2a, 0xd8, 0x9b, 0x46, 0x3a, 0x06, 0x6e, 0xae, 0x75, 0xc2, 0xd0, 0x99, 0x70, - 0xc1, 0x04, 0x25, 0x1e, 0x8e, 0x88, 0xa8, 0x1a, 0xcc, 0x37, 0xd7, 0x3a, 0x2d, 0x5b, 0xb7, 0x06, - 0x06, 0x59, 0xd9, 0x65, 0x7f, 0xe8, 0x94, 0x99, 0xbc, 0x44, 0x84, 0x1a, 0xb2, 0x29, 0x13, 0x95, - 0x70, 0x00, 0xa3, 0xd5, 0x08, 0x6f, 0x21, 0xe2, 0xe4, 0x58, 0x35, 0x81, 0x04, 0x07, 0x30, 0xf5, - 0x7b, 0x25, 0xa8, 0x4a, 0x1d, 0x42, 0x16, 0x4c, 0xf2, 0xcf, 0x0d, 0xc2, 0x54, 0x56, 0x0a, 0x7e, - 0x62, 0xbc, 0xd7, 0x9c, 0x3a, 0x1f, 0x50, 0x0f, 0x07, 0x24, 0x64, 0xf6, 0x2b, 0xe5, 0xb3, 0x1f, - 0x5a, 0x06, 0xe0, 0x01, 0x39, 0xec, 0x74, 0x95, 0xef, 0x79, 0x6c, 0x85, 0x77, 0xc2, 0x52, 0x2c, - 0xd5, 0x40, 0x8f, 0x8a, 0x85, 0xca, 0xcf, 0x61, 0x2b, 0x89, 0x45, 0xba, 0x09, 0xe5, 0xbb, 0x8e, - 0x4d, 0x3c, 0x71, 0xf8, 0x70, 0x4c, 0x1f, 0x38, 0x45, 0xc5, 0xf0, 0x9b, 0x14, 0x2f, 0xe6, 0xe8, - 0xd5, 0x5f, 0x56, 0x00, 0x9a, 0x9a, 0xaf, 0x71, 0x5f, 0xf9, 0x10, 0xa1, 0x8e, 0x8f, 0xc6, 0xe4, - 0x4b, 0x25, 0x75, 0x9c, 0x39, 0xee, 0x99, 0x77, 0x83, 0xcf, 0x0f, 0xf5, 0x16, 0x8e, 0xbd, 0x63, - 0xde, 0x25, 0x98, 0xc1, 0xd1, 0x53, 0x30, 0x45, 0x6c, 0xdd, 0xdd, 0xeb, 0xfb, 0xc4, 0x60, 0x23, - 0x50, 0xe1, 0x27, 0xe0, 0x2b, 0x41, 0x21, 0x8e, 0xe0, 0xea, 0xd3, 0x10, 0x57, 0x3e, 0xef, 0xdf, - 0x4b, 0x75, 0x07, 0x2a, 0x2b, 0xb6, 0xd1, 0x77, 0x4c, 0xdb, 0x1f, 0xe2, 0x9b, 0xce, 0xc3, 0xd8, - 0xc0, 0xb5, 0xc4, 0x27, 0x55, 0x45, 0x85, 0xb1, 0x75, 0x7c, 0x03, 0xd3, 0x72, 0xf4, 0x24, 0x4c, - 0xf6, 0x07, 0x6e, 0xdf, 0xf1, 0x82, 0xef, 0x0a, 0xb5, 0xec, 0x36, 0x2f, 0xc6, 0x01, 0x5c, 0xbd, - 0xa7, 0xc0, 0xdc, 0xca, 0x6e, 0xdf, 0x74, 0x59, 0xd8, 0x25, 0x71, 0xa9, 0x06, 0x49, 0xdb, 0xef, - 0xf0, 0x7f, 0x45, 0x1f, 0xc2, 0xf6, 0xa2, 0x06, 0x0e, 0xe0, 0x68, 0x13, 0x66, 0x09, 0x6b, 0xce, - 0xb6, 0x0a, 0x2d, 0x74, 0xf9, 0x1f, 0xc5, 0xb1, 0xc4, 0xa3, 0x7a, 0x63, 0x58, 0x70, 0x02, 0x2b, - 0xea, 0xc0, 0xac, 0x6e, 0x69, 0x9e, 0x67, 0x6e, 0x9a, 0x7a, 0x14, 0x50, 0x30, 0x55, 0x7f, 0x8a, - 0xb6, 0x6d, 0xc4, 0x20, 0xf7, 0xf6, 0x97, 0xce, 0x8a, 0x7e, 0xc6, 0x01, 0x38, 0x81, 0x42, 0xfd, - 0x3d, 0x05, 0xa6, 0x42, 0xbd, 0xf9, 0x3d, 0xe5, 0x21, 0x42, 0x97, 0xa0, 0x62, 0x98, 0x9e, 0xbc, - 0xd9, 0xb1, 0x43, 0xd7, 0xa6, 0x28, 0xc3, 0x21, 0x54, 0xf5, 0xa0, 0x72, 0x55, 0x2c, 0x2b, 0xb4, - 0x08, 0x25, 0x33, 0xd8, 0x6b, 0x41, 0x7c, 0x40, 0xa9, 0xd5, 0xc4, 0x25, 0xd3, 0x08, 0xb9, 0xaa, - 0x94, 0xcb, 0x55, 0xd2, 0xb4, 0x8f, 0x1d, 0x3e, 0xed, 0xea, 0x6f, 0x28, 0x50, 0xbd, 0x66, 0x6e, - 0x10, 0x97, 0x3b, 0x9f, 0x99, 0x5c, 0x8c, 0x05, 0xe2, 0x57, 0xb3, 0x82, 0xf0, 0xd1, 0x2e, 0x4c, - 0x79, 0xfa, 0x16, 0x31, 0x06, 0x56, 0x18, 0xf2, 0x50, 0x28, 0xdc, 0x5e, 0x22, 0xdd, 0x11, 0xf8, - 0xa4, 0x80, 0xc3, 0x80, 0x02, 0x8e, 0x88, 0xa9, 0xef, 0xc2, 0xe9, 0x8c, 0x46, 0x68, 0x09, 0xca, - 0x9e, 0xaf, 0xb9, 0xbe, 0x18, 0x33, 0x26, 0x6e, 0x58, 0x7c, 0x07, 0xe6, 0xe5, 0xe8, 0x61, 0x18, - 0x23, 0xb6, 0x21, 0x06, 0x6d, 0x92, 0xae, 0xb2, 0x15, 0xdb, 0xc0, 0xb4, 0x8c, 0x4e, 0x91, 0xe5, - 0xc4, 0x98, 0x91, 0x4d, 0xd1, 0x0d, 0x51, 0x86, 0x43, 0xa8, 0xfa, 0x8f, 0xc7, 0xe1, 0xfc, 0x35, - 0xc7, 0x35, 0xef, 0x3a, 0xb6, 0xaf, 0x59, 0x6d, 0xc7, 0x88, 0x0e, 0xf1, 0xc4, 0x74, 0x7f, 0x41, - 0x81, 0x87, 0xf4, 0xfe, 0xa0, 0x65, 0x9b, 0xbe, 0xa9, 0x05, 0x67, 0x2b, 0x6d, 0xe2, 0x9a, 0x4e, - 0xd1, 0xb3, 0x3c, 0x16, 0xc0, 0xdd, 0x68, 0xaf, 0x67, 0xa1, 0xc4, 0x79, 0xb4, 0xd8, 0x91, 0xa2, - 0xe1, 0xdc, 0xb1, 0x59, 0xe7, 0x3a, 0x3e, 0x0b, 0x2a, 0xbf, 0x1b, 0x7d, 0x62, 0xc1, 0x23, 0xc5, - 0x66, 0x26, 0x46, 0x9c, 0x43, 0x09, 0x7d, 0x06, 0xce, 0x9a, 0xbc, 0x73, 0x98, 0x68, 0x86, 0x69, - 0x13, 0xcf, 0x63, 0x07, 0x6b, 0xa3, 0x9c, 0x99, 0xb5, 0xb2, 0x10, 0xe2, 0x6c, 0x3a, 0xe8, 0x2d, - 0x00, 0x6f, 0xcf, 0xd6, 0xc5, 0xf8, 0x97, 0x0b, 0x51, 0xe5, 0x3b, 0x69, 0x88, 0x05, 0x4b, 0x18, - 0xe9, 0x66, 0xe2, 0x3b, 0x16, 0x71, 0x35, 0x5b, 0xe7, 0xbe, 0x6f, 0x85, 0x6f, 0x26, 0xb7, 0x82, - 0x42, 0x1c, 0xc1, 0xd5, 0xbf, 0xa7, 0xc0, 0xa4, 0xb8, 0xac, 0x81, 0x9e, 0x48, 0x28, 0x54, 0xa1, - 0x03, 0x2c, 0xa1, 0x54, 0xed, 0x31, 0xe7, 0x85, 0xd0, 0xc5, 0x85, 0x90, 0x2a, 0xb4, 0x23, 0x0b, - 0xc2, 0x91, 0x62, 0x1f, 0x73, 0x62, 0x04, 0xca, 0xbe, 0x44, 0x4c, 0xfd, 0x86, 0x02, 0xf3, 0xa9, - 0x56, 0x43, 0x98, 0x01, 0x0f, 0xd0, 0xfb, 0xfe, 0xc7, 0x55, 0x60, 0xf7, 0x72, 0x6a, 0xed, 0x56, - 0x87, 0xb8, 0x3b, 0xe1, 0x22, 0xfc, 0x19, 0x05, 0xe6, 0xa2, 0x73, 0x22, 0xd1, 0x0b, 0xa5, 0x78, - 0x30, 0xd1, 0xf5, 0x04, 0xae, 0xfa, 0x82, 0xf8, 0xee, 0xb9, 0x24, 0x04, 0xa7, 0xe8, 0xa2, 0x2f, - 0x2b, 0x30, 0xa7, 0xc5, 0xef, 0xe5, 0x04, 0x22, 0xb3, 0x50, 0xbc, 0x69, 0xe2, 0x8e, 0x4f, 0xd4, - 0x97, 0x04, 0xc0, 0xc3, 0x29, 0xb2, 0xe8, 0x59, 0x98, 0xd6, 0xfa, 0x66, 0x6d, 0x60, 0x98, 0xc4, - 0xd6, 0xc3, 0xcb, 0x1c, 0xcc, 0x45, 0x51, 0x6b, 0xb7, 0xc2, 0x72, 0x1c, 0xab, 0x15, 0x5e, 0xbc, - 0x11, 0x03, 0x39, 0x3e, 0xe2, 0xc5, 0x1b, 0x31, 0x86, 0xd1, 0xc5, 0x1b, 0x31, 0x74, 0x32, 0x11, - 0xf4, 0x13, 0xf0, 0x30, 0xdf, 0x6b, 0xea, 0x9a, 0x67, 0xea, 0xb5, 0x81, 0xbf, 0x45, 0x6c, 0x3f, - 0xd0, 0x18, 0xb8, 0x2d, 0xc6, 0x82, 0x0b, 0x56, 0xf2, 0x2a, 0xe1, 0xfc, 0xf6, 0xc8, 0x06, 0x70, - 0x4c, 0x43, 0x17, 0xdf, 0xc3, 0xcf, 0xb7, 0x0b, 0xc5, 0x7e, 0xdc, 0x6c, 0x35, 0x1b, 0xe2, 0x73, - 0x98, 0x98, 0x88, 0x7e, 0x63, 0x89, 0x02, 0xfa, 0x8a, 0x02, 0x33, 0x82, 0xc9, 0x05, 0xcd, 0x49, - 0x36, 0xff, 0x6f, 0x16, 0x65, 0xc6, 0x04, 0xc3, 0x2f, 0x63, 0x19, 0x39, 0x8f, 0xa0, 0x0d, 0xa3, - 0x9d, 0x62, 0x30, 0x1c, 0xef, 0x07, 0xfa, 0x1b, 0x0a, 0x9c, 0xf1, 0x88, 0xbb, 0x63, 0xea, 0xa4, - 0xa6, 0xeb, 0xce, 0xc0, 0x0e, 0x26, 0xb9, 0x52, 0xfc, 0x12, 0x44, 0x27, 0x03, 0x1f, 0x3f, 0x66, - 0xcf, 0x82, 0xe0, 0x4c, 0xfa, 0x74, 0xff, 0x3a, 0x75, 0x47, 0xf3, 0xf5, 0xad, 0x86, 0xa6, 0x6f, - 0x31, 0xfd, 0x9d, 0x9f, 0xac, 0x17, 0x5c, 0x34, 0xaf, 0xc5, 0x51, 0x71, 0x87, 0x43, 0xa2, 0x10, - 0x27, 0x09, 0x22, 0x0f, 0x2a, 0x2e, 0x79, 0x67, 0x40, 0x3c, 0x76, 0xfc, 0x4e, 0x89, 0xb7, 0x46, - 0x9e, 0x31, 0x2c, 0x10, 0x72, 0x1d, 0x23, 0xf8, 0x85, 0x43, 0x42, 0xa8, 0x0b, 0xe7, 0x39, 0xe7, - 0xd6, 0x6c, 0xc7, 0xde, 0xeb, 0x39, 0x03, 0x2f, 0xc1, 0xfd, 0x55, 0xc6, 0xfd, 0x2c, 0xc0, 0x60, - 0xe5, 0xb0, 0x8a, 0xf8, 0x70, 0x3c, 0xe8, 0x75, 0xa8, 0x90, 0x1d, 0x62, 0xfb, 0xb7, 0x6e, 0xdd, - 0x58, 0x98, 0x2e, 0xb4, 0x35, 0xb2, 0x4f, 0x58, 0x11, 0x38, 0x70, 0x88, 0x6d, 0xf1, 0x15, 0x40, - 0x69, 0x8e, 0x44, 0x73, 0x30, 0xb6, 0x4d, 0xf8, 0xbd, 0xbd, 0x29, 0x4c, 0xff, 0x45, 0x67, 0xa0, - 0xbc, 0xa3, 0x59, 0x03, 0xae, 0xca, 0x56, 0x30, 0xff, 0xf1, 0x42, 0xe9, 0xe3, 0x8a, 0xfa, 0x2d, - 0x05, 0xce, 0x66, 0x0e, 0x1b, 0xc2, 0x70, 0x8e, 0xc5, 0x65, 0xd8, 0xab, 0x03, 0x5f, 0xf3, 0x4d, - 0xbb, 0xdb, 0xb2, 0x37, 0x2d, 0xb3, 0xbb, 0xc5, 0x35, 0xbf, 0x32, 0xd7, 0x53, 0x56, 0x33, 0x6b, - 0xe0, 0x9c, 0x96, 0xa8, 0x05, 0xa7, 0x7b, 0xda, 0x6e, 0x0a, 0x61, 0x89, 0x21, 0x64, 0xb7, 0x3f, - 0x57, 0xd3, 0x60, 0x9c, 0xd5, 0x46, 0xfd, 0x5a, 0x19, 0x1e, 0xa1, 0x1d, 0x8f, 0xb6, 0xcc, 0x55, - 0xcd, 0xd6, 0xba, 0xef, 0xcd, 0xad, 0xe9, 0x37, 0x14, 0x78, 0x68, 0x2b, 0x5b, 0x9d, 0x15, 0x9b, - 0xf6, 0xab, 0x85, 0x94, 0xfa, 0xc3, 0x34, 0x64, 0xce, 0xb8, 0x87, 0x56, 0xc1, 0x79, 0x9d, 0x42, - 0xaf, 0xc0, 0x9c, 0xed, 0x18, 0xa4, 0xd1, 0x6a, 0xe2, 0x55, 0xcd, 0xdb, 0xee, 0x04, 0x06, 0x7f, - 0x99, 0x7b, 0xf4, 0xd6, 0x12, 0x30, 0x9c, 0xaa, 0x8d, 0x76, 0x00, 0xf5, 0x1d, 0x63, 0x65, 0xc7, - 0xd4, 0x83, 0x90, 0x8a, 0xe2, 0x5e, 0x44, 0x16, 0x61, 0xde, 0x4e, 0x61, 0xc3, 0x19, 0x14, 0x98, - 0x3e, 0x4e, 0x3b, 0xb3, 0xea, 0xd8, 0xa6, 0xef, 0xb8, 0x2c, 0xee, 0x67, 0x24, 0xb5, 0x94, 0xf1, - 0xf9, 0x5a, 0x26, 0x46, 0x9c, 0x43, 0x49, 0xfd, 0x5f, 0x0a, 0x9c, 0xa2, 0x6c, 0xd1, 0x76, 0x9d, - 0xdd, 0xbd, 0xf7, 0x22, 0x43, 0x3e, 0x29, 0x7c, 0x95, 0xdc, 0x4a, 0x3b, 0x2b, 0xf9, 0x29, 0xa7, - 0x58, 0x9f, 0x23, 0xd7, 0xa4, 0x6c, 0xa8, 0x8e, 0xe5, 0x1b, 0xaa, 0xea, 0x7f, 0x50, 0xb8, 0x8a, - 0x18, 0x18, 0x8a, 0xef, 0xc9, 0x75, 0xf8, 0x1c, 0xcc, 0xd0, 0xb2, 0x55, 0x6d, 0xb7, 0xdd, 0xbc, - 0xed, 0x58, 0x41, 0x38, 0x12, 0x3b, 0xfc, 0xbc, 0x2e, 0x03, 0x70, 0xbc, 0x9e, 0xfa, 0xab, 0xa7, - 0x80, 0x55, 0xb0, 0x88, 0xff, 0x5e, 0xfc, 0xae, 0xa7, 0xa1, 0xaa, 0xf7, 0x07, 0x8d, 0x2b, 0x9d, - 0x57, 0x07, 0x8e, 0xaf, 0x09, 0x1f, 0x26, 0xd3, 0xfb, 0x1a, 0xed, 0xf5, 0xa0, 0x18, 0xcb, 0x75, - 0xe8, 0x0a, 0xd7, 0xfb, 0x03, 0x21, 0x33, 0xdb, 0xf2, 0x29, 0x1e, 0x5b, 0xe1, 0x8d, 0xf6, 0x7a, - 0x0c, 0x86, 0x53, 0xb5, 0xd1, 0x67, 0x60, 0x9a, 0x88, 0xc5, 0x77, 0x4d, 0x73, 0x0d, 0xb1, 0xb6, - 0x0b, 0x6f, 0xdc, 0xe1, 0xd0, 0x06, 0x2b, 0x9a, 0xab, 0xcb, 0x2b, 0x12, 0x09, 0x1c, 0x23, 0xc8, - 0x54, 0x57, 0xf1, 0x9b, 0xce, 0x94, 0x63, 0x24, 0x17, 0x7b, 0x59, 0xa8, 0xae, 0x79, 0x95, 0x70, - 0x7e, 0x7b, 0xf4, 0xeb, 0x0a, 0x9c, 0x0b, 0xa1, 0xa6, 0x6d, 0xf6, 0x06, 0x3d, 0x4c, 0x74, 0x4b, - 0x33, 0x7b, 0x42, 0x8f, 0x7d, 0xed, 0xd8, 0x3e, 0x34, 0x8e, 0x9e, 0x0b, 0x9c, 0x6c, 0x18, 0xce, - 0xe9, 0x12, 0xfa, 0x86, 0x02, 0x17, 0x03, 0x50, 0x9b, 0x5a, 0x92, 0x03, 0x97, 0x44, 0x01, 0x6d, - 0x62, 0x48, 0x26, 0x0b, 0xc9, 0xbf, 0xc7, 0x0e, 0xf6, 0x97, 0x2e, 0xae, 0xdc, 0x07, 0x37, 0xbe, - 0x2f, 0x75, 0x99, 0x5d, 0x3a, 0xce, 0xa6, 0x2f, 0x14, 0xdf, 0x93, 0x62, 0x17, 0x4a, 0x02, 0xc7, - 0x08, 0xa2, 0xdf, 0x54, 0xe0, 0x21, 0xb9, 0x40, 0xe6, 0x16, 0xae, 0xf1, 0xbe, 0x7e, 0x6c, 0x9d, - 0x49, 0xe0, 0xe7, 0xbe, 0xa5, 0x1c, 0x20, 0xce, 0xeb, 0x15, 0x15, 0xbd, 0x3d, 0xc6, 0x98, 0x5c, - 0x2b, 0x2e, 0x73, 0xd1, 0xcb, 0x79, 0xd5, 0xc3, 0x01, 0x8c, 0x1a, 0x9b, 0x7d, 0xc7, 0x68, 0x9b, - 0x86, 0x77, 0xc3, 0xec, 0x99, 0x3e, 0xd3, 0x5b, 0xc7, 0xf8, 0x70, 0xb4, 0x1d, 0xa3, 0xdd, 0x6a, - 0xf2, 0x72, 0x1c, 0xab, 0xc5, 0xc2, 0xd0, 0xcd, 0x9e, 0xd6, 0x25, 0xed, 0x81, 0x65, 0xb5, 0x5d, - 0x87, 0x39, 0x20, 0x9a, 0x44, 0x33, 0x2c, 0xd3, 0x26, 0x05, 0xf5, 0x54, 0xb6, 0xdc, 0x5a, 0x79, - 0x48, 0x71, 0x3e, 0x3d, 0xb4, 0x0c, 0xb0, 0xa9, 0x99, 0x56, 0xe7, 0x8e, 0xd6, 0xbf, 0x69, 0x2f, - 0xcc, 0x30, 0x01, 0xc6, 0x2c, 0xbd, 0x2b, 0x61, 0x29, 0x96, 0x6a, 0x50, 0x6e, 0xa2, 0x52, 0x10, - 0x13, 0x7e, 0x01, 0x6e, 0x61, 0xf6, 0x98, 0xb8, 0x29, 0x40, 0xc8, 0x87, 0xef, 0xba, 0x44, 0x02, - 0xc7, 0x08, 0xa2, 0x2f, 0x28, 0x30, 0xeb, 0xed, 0x79, 0x3e, 0xe9, 0x85, 0x7d, 0x38, 0x75, 0xdc, - 0x7d, 0x60, 0xae, 0x99, 0x4e, 0x8c, 0x08, 0x4e, 0x10, 0x45, 0x1a, 0x3c, 0xc2, 0x46, 0xf5, 0x6a, - 0xe3, 0x9a, 0xd9, 0xdd, 0x0a, 0x83, 0xcb, 0xdb, 0xc4, 0xd5, 0x89, 0xed, 0x2f, 0xcc, 0x31, 0xbe, - 0x59, 0x3a, 0xd8, 0x5f, 0x7a, 0xa4, 0x95, 0x5f, 0x0d, 0x1f, 0x86, 0x03, 0xbd, 0x05, 0x8b, 0x02, - 0x7c, 0xc3, 0xb9, 0x93, 0xa2, 0x30, 0xcf, 0x28, 0xb0, 0x88, 0xff, 0x56, 0x6e, 0x2d, 0x7c, 0x08, - 0x06, 0x6a, 0x15, 0x78, 0xc4, 0x65, 0x9e, 0x55, 0x12, 0x32, 0x8f, 0xb7, 0x80, 0x18, 0x13, 0x30, - 0xab, 0xa0, 0x93, 0x06, 0xe3, 0xac, 0x36, 0xea, 0x7e, 0x89, 0x9b, 0x33, 0xa9, 0x05, 0x89, 0x5e, - 0x82, 0x53, 0x3d, 0xd2, 0x73, 0xdc, 0xbd, 0x5a, 0x90, 0x32, 0x43, 0xb8, 0xd6, 0x98, 0x85, 0xba, - 0x1a, 0x07, 0xe1, 0x64, 0x5d, 0xba, 0x5d, 0xb2, 0x2f, 0xb8, 0xd2, 0x89, 0xda, 0x97, 0xa2, 0xed, - 0xb2, 0x95, 0x80, 0xe1, 0x54, 0x6d, 0xd4, 0x80, 0x79, 0x51, 0xd6, 0xa2, 0x5a, 0xa3, 0x77, 0xc5, - 0x25, 0xc1, 0x61, 0x13, 0xd5, 0xbf, 0xe6, 0x5b, 0x49, 0x20, 0x4e, 0xd7, 0xa7, 0x5f, 0x41, 0x7f, - 0xc8, 0xbd, 0x18, 0x8f, 0xbe, 0x62, 0x2d, 0x0e, 0xc2, 0xc9, 0xba, 0x81, 0x5a, 0x1f, 0xeb, 0x42, - 0x39, 0xfa, 0x8a, 0xb5, 0x04, 0x0c, 0xa7, 0x6a, 0xab, 0xff, 0x71, 0x1c, 0x3e, 0x34, 0xc4, 0x26, - 0x86, 0x7a, 0xd9, 0xc3, 0x7d, 0x1f, 0x91, 0xb2, 0x1c, 0x04, 0x69, 0x2c, 0xbf, 0x3a, 0xd0, 0x6c, - 0xdf, 0xf4, 0xf7, 0x86, 0x9c, 0x9e, 0x7e, 0xce, 0xf4, 0x1c, 0x9d, 0xde, 0xb0, 0xd3, 0xe9, 0xe5, - 0x4d, 0xe7, 0xd1, 0x49, 0x0e, 0x3f, 0xfd, 0xbd, 0xec, 0xe9, 0x2f, 0x38, 0xaa, 0xf7, 0x65, 0x97, - 0x7e, 0x0e, 0xbb, 0x14, 0x1c, 0xd5, 0x21, 0xd8, 0xeb, 0x4f, 0xc6, 0xe1, 0xb1, 0x61, 0x36, 0xd4, - 0x82, 0xfc, 0x95, 0xb1, 0x65, 0x9d, 0x28, 0x7f, 0xe5, 0x45, 0xc4, 0x9c, 0x20, 0x7f, 0x65, 0x90, - 0x3c, 0x69, 0xfe, 0xca, 0x1b, 0xd5, 0x93, 0xe2, 0xaf, 0xbc, 0x51, 0x1d, 0x82, 0xbf, 0xfe, 0x34, - 0xb9, 0x3f, 0x84, 0xfb, 0x68, 0x0b, 0xc6, 0xf4, 0xfe, 0xa0, 0xa0, 0x90, 0x62, 0xc7, 0x9c, 0x8d, - 0xf6, 0x3a, 0xa6, 0x38, 0x10, 0x86, 0x09, 0xce, 0x3f, 0x05, 0x45, 0x10, 0x0b, 0xfa, 0xe1, 0x2c, - 0x89, 0x05, 0x26, 0x3a, 0x54, 0xa4, 0xbf, 0x45, 0x7a, 0xc4, 0xd5, 0xac, 0x8e, 0xef, 0xb8, 0x5a, - 0xb7, 0xa8, 0xb4, 0x61, 0x43, 0xb5, 0x92, 0xc0, 0x85, 0x53, 0xd8, 0xe9, 0x80, 0xf4, 0x4d, 0xa3, - 0xa0, 0x7c, 0x61, 0x03, 0xd2, 0x6e, 0x35, 0x31, 0xc5, 0xa1, 0xfe, 0xed, 0x29, 0x90, 0xae, 0x16, - 0x51, 0xbb, 0x4d, 0xb3, 0x2c, 0xe7, 0x4e, 0xdb, 0x35, 0x77, 0x4c, 0x8b, 0x74, 0x89, 0x11, 0xde, - 0x3d, 0xf1, 0xc4, 0x61, 0x38, 0x53, 0x24, 0x6b, 0x79, 0x95, 0x70, 0x7e, 0x7b, 0x6a, 0x97, 0xcf, - 0xeb, 0xc9, 0x8b, 0x9f, 0xa3, 0x1c, 0xe8, 0xa5, 0x6e, 0x91, 0xf2, 0xf5, 0x94, 0x2a, 0xc6, 0x69, - 0xb2, 0xe8, 0xa7, 0x15, 0xee, 0x70, 0x08, 0xbd, 0xab, 0x62, 0xce, 0xae, 0x1e, 0xd3, 0x79, 0x44, - 0xe4, 0xb9, 0x88, 0xfc, 0xb7, 0x71, 0x82, 0xd4, 0x32, 0x3c, 0xbb, 0x9d, 0xe5, 0x27, 0x15, 0x33, - 0x7b, 0xb3, 0x68, 0x57, 0x72, 0x1c, 0xaf, 0xfc, 0xf0, 0x38, 0xb3, 0x02, 0xce, 0xee, 0x48, 0x38, - 0x4a, 0xa1, 0xeb, 0x48, 0x08, 0x81, 0xc2, 0xa3, 0x94, 0xf0, 0x41, 0x45, 0xa3, 0x14, 0x02, 0x70, - 0x9c, 0x20, 0xea, 0xc3, 0xd4, 0x76, 0xe0, 0xaf, 0x13, 0xf6, 0x7d, 0xa3, 0x28, 0x75, 0xc9, 0xe9, - 0xc7, 0x0f, 0xa9, 0xc3, 0x42, 0x1c, 0x11, 0x41, 0x5b, 0x30, 0xb9, 0xcd, 0x05, 0x91, 0xb0, 0xcb, - 0x6b, 0x23, 0xdb, 0x0d, 0xdc, 0x3c, 0x14, 0x45, 0x38, 0x40, 0x2f, 0x07, 0xa9, 0x54, 0xee, 0x13, - 0x9b, 0xf4, 0x35, 0x05, 0xce, 0xee, 0x10, 0xd7, 0x37, 0xf5, 0xa4, 0x97, 0x7a, 0xaa, 0xb8, 0x6d, - 0x73, 0x3b, 0x0b, 0x21, 0x67, 0x93, 0x4c, 0x10, 0xce, 0xee, 0x02, 0xb5, 0x74, 0xb8, 0xb3, 0xb1, - 0xe3, 0x6b, 0xbe, 0xa9, 0xdf, 0x72, 0xb6, 0x89, 0x4d, 0x3f, 0x56, 0xa4, 0x55, 0x04, 0x26, 0x38, - 0x98, 0xa5, 0xb3, 0x92, 0x5f, 0x0d, 0x1f, 0x86, 0x43, 0xfd, 0xa1, 0x02, 0x29, 0x77, 0x1b, 0xfa, - 0x39, 0x05, 0xa6, 0x37, 0x89, 0xe6, 0x0f, 0x5c, 0x72, 0x55, 0xf3, 0xc3, 0x58, 0xe5, 0xdb, 0xc7, - 0xe1, 0xe5, 0x5b, 0xbe, 0x22, 0x21, 0xe6, 0xe7, 0x89, 0x61, 0x02, 0x03, 0x19, 0x84, 0x63, 0x3d, - 0x58, 0x7c, 0x19, 0xe6, 0x53, 0x0d, 0x8f, 0x74, 0xec, 0xf3, 0xcf, 0x84, 0xb7, 0x36, 0x99, 0x53, - 0xf3, 0x2d, 0x28, 0x6b, 0x86, 0x11, 0x66, 0xec, 0x7a, 0xbe, 0xd8, 0xb9, 0xb9, 0x21, 0x87, 0x84, - 0xb3, 0x9f, 0x98, 0xa3, 0x45, 0x57, 0x00, 0x69, 0xb1, 0xc3, 0xb1, 0xd5, 0x28, 0x62, 0x96, 0x79, - 0xf9, 0x6b, 0x29, 0x28, 0xce, 0x68, 0xa1, 0xbe, 0x08, 0xb3, 0xf1, 0x3b, 0xac, 0x47, 0x88, 0xc0, - 0x53, 0xff, 0xb2, 0x02, 0x28, 0x9d, 0x2f, 0x03, 0xb9, 0x50, 0x11, 0x35, 0x82, 0x29, 0x2e, 0xe4, - 0xc8, 0x4d, 0xc6, 0x06, 0x46, 0x31, 0xf9, 0xa2, 0xc0, 0xc3, 0x21, 0x1d, 0xf5, 0xcf, 0x14, 0x88, - 0x52, 0x02, 0xa1, 0x8f, 0x41, 0xd5, 0x20, 0x9e, 0xee, 0x9a, 0x7d, 0x3f, 0xfa, 0x8e, 0x30, 0xd7, - 0x41, 0x33, 0x02, 0x61, 0xb9, 0x1e, 0x52, 0x61, 0xc2, 0xd7, 0xbc, 0xed, 0x56, 0x53, 0x58, 0xa4, - 0x4c, 0x7f, 0xb8, 0xc5, 0x4a, 0xb0, 0x80, 0x44, 0xf7, 0x41, 0xc7, 0x86, 0xb8, 0x0f, 0x8a, 0x36, - 0x8f, 0xe1, 0xf2, 0x2b, 0xba, 0xff, 0xc5, 0x57, 0xf5, 0x8f, 0x4a, 0x10, 0xcf, 0xc2, 0x54, 0x74, - 0x08, 0xd2, 0xb7, 0x75, 0x4b, 0x27, 0x76, 0x5b, 0xf7, 0xc3, 0x2c, 0x85, 0x21, 0xcf, 0x39, 0xcb, - 0xcf, 0xc4, 0xe4, 0xc4, 0x83, 0x3c, 0x63, 0x6c, 0x58, 0x03, 0x3d, 0xcf, 0xe2, 0xe5, 0xfc, 0xc0, - 0x4e, 0xff, 0x50, 0xb0, 0x2c, 0xa8, 0x00, 0x22, 0xf7, 0xc4, 0x7d, 0xe4, 0xf0, 0xfb, 0x59, 0x29, - 0xe6, 0x2d, 0xd0, 0xc7, 0x44, 0x78, 0x65, 0x39, 0x76, 0x67, 0x3a, 0xb8, 0x68, 0x3d, 0x1f, 0x6b, - 0x18, 0xc5, 0x5c, 0xaa, 0x7f, 0x5d, 0x81, 0x49, 0x91, 0xfc, 0x64, 0x88, 0x08, 0xcd, 0x4d, 0x28, - 0x33, 0x3b, 0x60, 0x14, 0x15, 0xa9, 0xb3, 0xe5, 0x38, 0x7e, 0x2c, 0x05, 0x0c, 0x0b, 0x0b, 0x64, - 0xff, 0x62, 0x8e, 0x5e, 0xfd, 0xfa, 0x38, 0x5c, 0x14, 0x55, 0x52, 0x1a, 0x40, 0xb8, 0x04, 0xf7, - 0xe0, 0xb4, 0x98, 0xa5, 0xa6, 0xab, 0x99, 0xe1, 0xa9, 0x61, 0x31, 0xcb, 0x4e, 0x9c, 0x27, 0xa7, - 0xd0, 0xe1, 0x2c, 0x1a, 0x3c, 0xd9, 0x01, 0x2b, 0xbe, 0x46, 0x34, 0xcb, 0xdf, 0x0a, 0x68, 0x97, - 0x46, 0x49, 0x76, 0x90, 0xc6, 0x87, 0x33, 0xa9, 0xb0, 0x53, 0x4b, 0x01, 0x68, 0xb8, 0x44, 0x93, - 0x8f, 0x4c, 0x47, 0x88, 0x22, 0x5c, 0xcd, 0xc4, 0x88, 0x73, 0x28, 0x31, 0x17, 0x99, 0xb6, 0xcb, - 0x2c, 0x6e, 0x4c, 0x7c, 0xd7, 0x64, 0x49, 0x79, 0x28, 0x7f, 0x73, 0x1b, 0x39, 0x0e, 0xc2, 0xc9, - 0xba, 0xe8, 0x05, 0x98, 0x65, 0xa7, 0xc0, 0xd1, 0x1d, 0xc0, 0x72, 0x94, 0x82, 0x78, 0x2d, 0x06, - 0xc1, 0x89, 0x9a, 0xea, 0xaf, 0x29, 0x30, 0x2d, 0x33, 0xd0, 0x10, 0x11, 0xdd, 0x03, 0x49, 0x5c, - 0x8f, 0x10, 0x18, 0x2b, 0x53, 0x1d, 0x46, 0x62, 0xdf, 0x53, 0xe0, 0x74, 0x46, 0x1b, 0x76, 0x1e, - 0x48, 0x12, 0xa2, 0x7f, 0x94, 0xf3, 0xc0, 0xd4, 0x36, 0x12, 0x9e, 0x07, 0x26, 0x21, 0x38, 0x45, - 0x17, 0xdd, 0x86, 0x31, 0xdd, 0x35, 0xc5, 0xb0, 0x3c, 0x57, 0xc8, 0xea, 0xc1, 0xad, 0x28, 0x4c, - 0xbe, 0x81, 0x5b, 0x98, 0x22, 0x54, 0x7f, 0x7b, 0x0c, 0xaa, 0x52, 0x5e, 0x25, 0xb4, 0x3a, 0x8a, - 0xd1, 0x1c, 0xa1, 0x0f, 0x0c, 0xe7, 0x55, 0x18, 0xeb, 0xf6, 0x07, 0x05, 0xad, 0xe6, 0x10, 0xdd, - 0x55, 0x8a, 0xae, 0xdb, 0x1f, 0xa0, 0xdb, 0xa1, 0x1d, 0x5e, 0xcc, 0x52, 0x0e, 0x63, 0x45, 0x13, - 0xb6, 0x78, 0xc0, 0x9b, 0xe3, 0xb9, 0xbc, 0xd9, 0x83, 0x49, 0x4f, 0x18, 0xe9, 0xe5, 0xe2, 0xf7, - 0x92, 0xa4, 0x91, 0x16, 0x46, 0x39, 0xd7, 0xf0, 0x03, 0x9b, 0x3d, 0xa0, 0x41, 0x15, 0x80, 0x01, - 0x8b, 0x6d, 0x67, 0xa6, 0x4b, 0x85, 0x2b, 0x00, 0xeb, 0xac, 0x04, 0x0b, 0x88, 0xfa, 0xa5, 0x12, - 0xa0, 0x34, 0x42, 0xf4, 0x21, 0x28, 0xb3, 0x10, 0x7f, 0xb1, 0xd0, 0xa4, 0xbc, 0x23, 0x9a, 0xe7, - 0x61, 0x0e, 0x43, 0x1d, 0x71, 0xe5, 0xa3, 0xd8, 0xc4, 0xb0, 0x73, 0x68, 0x41, 0x4f, 0xba, 0x1f, - 0x12, 0x6c, 0x4d, 0x63, 0xb9, 0x5b, 0xd3, 0x3a, 0x4c, 0xf6, 0x4c, 0x9b, 0xc5, 0x9e, 0x14, 0xf3, - 0x42, 0xf0, 0xe3, 0x32, 0x8e, 0x02, 0x07, 0xb8, 0xd4, 0x3f, 0x29, 0x51, 0x26, 0x36, 0x6d, 0x9f, - 0xd8, 0x9a, 0xad, 0x13, 0xb4, 0x07, 0xa0, 0x0d, 0x7c, 0x87, 0xef, 0xf0, 0x82, 0x97, 0x5b, 0xc5, - 0xe6, 0x2b, 0x44, 0x5a, 0x0b, 0x11, 0xf2, 0x53, 0xac, 0xe8, 0x37, 0x96, 0x88, 0x51, 0xd2, 0xbe, - 0xd9, 0x23, 0xaf, 0x99, 0xb6, 0xe1, 0xdc, 0x11, 0xc3, 0x3b, 0x2a, 0xe9, 0x5b, 0x21, 0x42, 0x4e, - 0x3a, 0xfa, 0x8d, 0x25, 0x62, 0xe8, 0x75, 0x58, 0x60, 0x46, 0x8f, 0xcd, 0x52, 0xd6, 0x89, 0xbe, - 0x39, 0x96, 0x15, 0x6c, 0x39, 0x15, 0x96, 0x26, 0x68, 0xa1, 0x91, 0x53, 0x07, 0xe7, 0xb6, 0x56, - 0x7f, 0x53, 0x81, 0xb3, 0x99, 0x43, 0x81, 0xae, 0xc2, 0x7c, 0x14, 0xba, 0x20, 0xcb, 0xc8, 0x4a, - 0x94, 0x81, 0xf1, 0x7a, 0xb2, 0x02, 0x4e, 0xb7, 0x41, 0xab, 0xa1, 0x9e, 0x20, 0xcb, 0x60, 0x11, - 0xf7, 0xf0, 0x88, 0x40, 0x95, 0x25, 0xa6, 0x71, 0x56, 0x3b, 0xf5, 0x27, 0x62, 0x1d, 0x8e, 0x06, - 0x8c, 0xae, 0x8e, 0x0d, 0xd2, 0x0d, 0x83, 0xc7, 0xc3, 0xd5, 0x51, 0xa7, 0x85, 0x98, 0xc3, 0xd0, - 0x79, 0xf9, 0xc2, 0x43, 0x28, 0x85, 0x82, 0x4b, 0x0f, 0xaa, 0x0f, 0x20, 0x22, 0x84, 0x4c, 0xbb, - 0x8b, 0x36, 0xa1, 0xa2, 0x89, 0x9c, 0xfd, 0x82, 0xd5, 0x3e, 0x51, 0xc8, 0xc6, 0x12, 0x38, 0x78, - 0x64, 0x60, 0xf0, 0x0b, 0x87, 0xb8, 0xd5, 0xbf, 0xab, 0xc0, 0x39, 0x2a, 0x90, 0x8c, 0xe0, 0x5e, - 0x69, 0x78, 0xd5, 0x7f, 0x88, 0xad, 0xb5, 0x07, 0x55, 0x37, 0x6a, 0x26, 0xf8, 0xf2, 0xc7, 0xe5, - 0x34, 0x02, 0xd2, 0x6d, 0x48, 0xaa, 0x76, 0x34, 0x5c, 0xc7, 0x0b, 0x26, 0x27, 0x99, 0x59, 0x20, - 0x54, 0xde, 0xa5, 0x9e, 0x60, 0x19, 0xbf, 0xfa, 0xb9, 0x12, 0xc0, 0x1a, 0xf1, 0xef, 0x38, 0xee, - 0x36, 0x1d, 0xa2, 0xf7, 0xd4, 0xad, 0xa2, 0x47, 0x61, 0xbc, 0xef, 0x18, 0x9e, 0x90, 0x52, 0xec, - 0x2e, 0x1c, 0x3b, 0x7c, 0x67, 0xa5, 0x68, 0x09, 0xca, 0xcc, 0xb7, 0x2c, 0xb6, 0x02, 0xa6, 0xf5, - 0x52, 0x4d, 0xc7, 0xc3, 0xbc, 0x9c, 0x67, 0x63, 0x65, 0x51, 0xb7, 0x9e, 0x50, 0xe3, 0x45, 0x36, - 0x56, 0x5e, 0x86, 0x43, 0xa8, 0xfa, 0xb9, 0x71, 0x88, 0x3d, 0x3a, 0x11, 0x99, 0xe2, 0xca, 0xc9, - 0x98, 0xe2, 0xaf, 0xc3, 0x82, 0xe5, 0x68, 0x46, 0x5d, 0xb3, 0x28, 0xd3, 0xbb, 0x1d, 0x3e, 0x1d, - 0x9a, 0xdd, 0x0d, 0x5f, 0x34, 0x60, 0x02, 0xe0, 0x46, 0x4e, 0x1d, 0x9c, 0xdb, 0x1a, 0xf9, 0xe1, - 0x53, 0x17, 0x3c, 0xa3, 0xe4, 0x8d, 0x51, 0x9f, 0xe4, 0x58, 0x96, 0xe3, 0xad, 0xc3, 0x5d, 0x39, - 0xfe, 0x1a, 0x06, 0xfa, 0xa2, 0x02, 0x67, 0xc9, 0xae, 0x4f, 0x5c, 0x5b, 0xb3, 0x6e, 0xb9, 0xda, - 0xe6, 0xa6, 0xa9, 0x8b, 0xb0, 0x26, 0x3e, 0x39, 0xed, 0x83, 0xfd, 0xa5, 0xb3, 0x2b, 0x59, 0x15, - 0xee, 0xed, 0x2f, 0x7d, 0x34, 0xfd, 0xe2, 0x4c, 0x10, 0x5e, 0x9d, 0xd9, 0x84, 0x31, 0x63, 0x36, - 0xb9, 0xc5, 0xe7, 0xa1, 0x7a, 0x84, 0x68, 0xdc, 0x29, 0xd9, 0x2d, 0xf3, 0x8b, 0x13, 0x20, 0x85, - 0xb6, 0x1f, 0x21, 0x8f, 0xe8, 0xaf, 0x28, 0x70, 0x46, 0xb7, 0x4c, 0x62, 0xfb, 0x89, 0x18, 0x66, - 0xbe, 0x30, 0xd6, 0x0b, 0xc5, 0xdc, 0xf7, 0x89, 0xdd, 0x6a, 0x36, 0x1c, 0xdb, 0x26, 0xba, 0xdf, - 0xc8, 0x40, 0xce, 0xad, 0x9c, 0x2c, 0x08, 0xce, 0xec, 0x0c, 0xfb, 0x1e, 0x56, 0xde, 0x6a, 0xca, - 0xf7, 0xbf, 0x1a, 0xa2, 0x0c, 0x87, 0x50, 0xf4, 0x34, 0x54, 0xbb, 0xae, 0x33, 0xe8, 0x7b, 0x0d, - 0x16, 0x71, 0xc5, 0x67, 0x90, 0x29, 0x12, 0x57, 0xa3, 0x62, 0x2c, 0xd7, 0x41, 0xcf, 0xc2, 0x34, - 0xff, 0xd9, 0x76, 0xc9, 0xa6, 0xb9, 0x2b, 0x96, 0x1b, 0x0b, 0xe3, 0xb8, 0x2a, 0x95, 0xe3, 0x58, - 0x2d, 0xf4, 0x14, 0x4c, 0x99, 0x9e, 0x37, 0x20, 0xee, 0x3a, 0xbe, 0x21, 0x92, 0x6a, 0x31, 0x9f, - 0x6d, 0x2b, 0x28, 0xc4, 0x11, 0x1c, 0xfd, 0xbc, 0x02, 0xb3, 0x2e, 0x79, 0x67, 0x60, 0xba, 0xc4, - 0x60, 0x44, 0x3d, 0x71, 0xbf, 0x00, 0x8f, 0x76, 0xa7, 0x61, 0x19, 0xc7, 0x90, 0x72, 0x3e, 0x0f, - 0xdd, 0x11, 0x71, 0x20, 0x4e, 0xf4, 0x80, 0x0e, 0x95, 0x67, 0x76, 0x6d, 0xd3, 0xee, 0xd6, 0xac, - 0xae, 0xb7, 0x50, 0x61, 0x4b, 0x97, 0xeb, 0x5c, 0x51, 0x31, 0x96, 0xeb, 0xa0, 0xe7, 0x60, 0x66, - 0xe0, 0x51, 0xce, 0xed, 0x11, 0x3e, 0xbe, 0x53, 0x51, 0x18, 0xe4, 0xba, 0x0c, 0xc0, 0xf1, 0x7a, - 0xd4, 0xc4, 0x0b, 0x0a, 0xc4, 0x28, 0x03, 0xbf, 0x05, 0x4c, 0xfb, 0xb9, 0x1e, 0x83, 0xe0, 0x44, - 0xcd, 0xc5, 0x1a, 0x9c, 0xce, 0xf8, 0xcc, 0x23, 0x2d, 0x8f, 0x5f, 0x2b, 0xc1, 0x07, 0xef, 0xcb, - 0x95, 0xe8, 0x6f, 0x2a, 0x50, 0x25, 0xbb, 0xbe, 0xab, 0x85, 0x41, 0x99, 0x74, 0x8a, 0x36, 0x4f, - 0x64, 0x09, 0x2c, 0xaf, 0x44, 0x84, 0xf8, 0xb4, 0x85, 0xdb, 0x9d, 0x04, 0xc1, 0x72, 0x7f, 0xa8, - 0xb6, 0xce, 0xef, 0x88, 0xcb, 0xee, 0x3a, 0x91, 0x9b, 0x5f, 0x40, 0x16, 0x3f, 0x09, 0x73, 0x49, - 0xcc, 0x47, 0x1a, 0xa9, 0x7f, 0x58, 0x82, 0x72, 0xdb, 0xd2, 0x1e, 0x48, 0x7e, 0xb4, 0xbf, 0x10, - 0x4b, 0x4e, 0x53, 0x28, 0xe3, 0x0f, 0xeb, 0x6a, 0x6e, 0x5a, 0xac, 0x6e, 0x22, 0x2d, 0xd6, 0xcb, - 0xc5, 0x49, 0x1c, 0x9e, 0x05, 0xeb, 0x0f, 0x14, 0x98, 0x62, 0xf5, 0x1e, 0x40, 0x36, 0x96, 0xb7, - 0xe2, 0xd9, 0x58, 0x9e, 0x2f, 0xfc, 0x4d, 0x39, 0xc9, 0x57, 0xbe, 0x1b, 0x7c, 0x0b, 0xcb, 0xb5, - 0xf2, 0x86, 0xfc, 0x26, 0x09, 0xff, 0x98, 0x4b, 0x59, 0x69, 0xa1, 0x6e, 0x38, 0xba, 0x66, 0xa5, - 0x72, 0x43, 0x1d, 0xfa, 0x30, 0x49, 0x0f, 0xa6, 0x88, 0xb8, 0x87, 0x1f, 0x7c, 0x4c, 0x21, 0x95, - 0x36, 0xb8, 0xcc, 0x1f, 0x91, 0x0b, 0x4a, 0x3c, 0x1c, 0x51, 0x50, 0xff, 0x69, 0x09, 0xaa, 0xd2, - 0x5c, 0xfe, 0x28, 0xb2, 0x4e, 0x5d, 0xc9, 0x4c, 0xd7, 0x5f, 0x62, 0x51, 0x97, 0xe7, 0x8e, 0x90, - 0xaa, 0xdf, 0x85, 0xaa, 0x1e, 0x65, 0x10, 0x1d, 0x85, 0xb9, 0xa5, 0x44, 0xa4, 0x22, 0xec, 0x3b, - 0x2a, 0xc0, 0x32, 0x11, 0xf5, 0x77, 0x4a, 0x30, 0xd9, 0x76, 0x1d, 0x3a, 0xc1, 0x0f, 0x40, 0x34, - 0x68, 0x31, 0xd1, 0x50, 0x6c, 0xdd, 0xf2, 0xce, 0xe6, 0x0a, 0x07, 0x33, 0x21, 0x1c, 0x6a, 0xa3, - 0x10, 0x39, 0x5c, 0x3c, 0xfc, 0x6b, 0x05, 0xaa, 0xa2, 0xe6, 0x03, 0x10, 0x10, 0x9f, 0x8e, 0x0b, - 0x88, 0x17, 0x47, 0xf8, 0xae, 0x1c, 0x11, 0xf1, 0x35, 0x05, 0x66, 0x44, 0x8d, 0x55, 0xd2, 0xdb, - 0x20, 0x2e, 0xba, 0x02, 0x93, 0xde, 0x80, 0x4d, 0xa4, 0xf8, 0xa0, 0x47, 0x64, 0x21, 0xe1, 0x6e, - 0x68, 0x3a, 0x7b, 0x79, 0x86, 0x57, 0x91, 0x32, 0xd1, 0xf1, 0x02, 0x1c, 0x34, 0xa6, 0x26, 0x9c, - 0xeb, 0x58, 0xa9, 0xcc, 0x09, 0xd8, 0xb1, 0x08, 0x66, 0x10, 0x6a, 0x39, 0xd1, 0xbf, 0xc1, 0x79, - 0x14, 0xb3, 0x9c, 0x28, 0xd8, 0xc3, 0xbc, 0x5c, 0xfd, 0xc2, 0x78, 0x38, 0xd8, 0x4c, 0x82, 0x5d, - 0x83, 0x29, 0xdd, 0x25, 0x9a, 0x4f, 0x8c, 0xfa, 0xde, 0x30, 0x9d, 0x63, 0x5a, 0x5c, 0x23, 0x68, - 0x81, 0xa3, 0xc6, 0x54, 0x61, 0x92, 0x8f, 0x98, 0x4a, 0x91, 0x6e, 0x99, 0x7b, 0xbc, 0xf4, 0x09, - 0x28, 0x3b, 0x77, 0xec, 0x30, 0x7c, 0xe3, 0x50, 0xc2, 0xec, 0x53, 0x6e, 0xd2, 0xda, 0x98, 0x37, - 0x62, 0xd9, 0x65, 0x44, 0x72, 0x11, 0xae, 0xc8, 0x56, 0xb3, 0x12, 0x8b, 0x20, 0x0b, 0x26, 0x7b, - 0x6c, 0x1a, 0x46, 0x4a, 0x4c, 0x16, 0x9b, 0x50, 0x39, 0x41, 0x2c, 0xc3, 0x8c, 0x03, 0x12, 0x54, - 0xf1, 0xa5, 0xca, 0x99, 0xd7, 0xd7, 0x74, 0x22, 0x2b, 0xbe, 0x6b, 0x41, 0x21, 0x8e, 0xe0, 0x68, - 0x0f, 0xaa, 0xfc, 0x7a, 0x3d, 0x97, 0xb2, 0x93, 0xc5, 0x7d, 0x9a, 0xa2, 0x7b, 0xb7, 0x22, 0x6c, - 0x7c, 0xe8, 0xa5, 0x02, 0x2c, 0xd3, 0x52, 0x7f, 0x76, 0x3c, 0x64, 0x52, 0x21, 0xf1, 0xb3, 0x5f, - 0x4b, 0x51, 0x0a, 0xbd, 0x96, 0xf2, 0x51, 0x28, 0xf7, 0xb7, 0x34, 0x2f, 0xe0, 0xd4, 0x20, 0x99, - 0x71, 0xb9, 0x4d, 0x0b, 0xef, 0xed, 0x2f, 0x4d, 0x0b, 0xd2, 0xec, 0x37, 0xe6, 0x75, 0xd1, 0x00, - 0x4e, 0x7b, 0xbe, 0x66, 0x91, 0x8e, 0x29, 0xbc, 0x45, 0x9e, 0xaf, 0xf5, 0xfa, 0x05, 0x72, 0x12, - 0xf3, 0xd8, 0xe6, 0x34, 0x2a, 0x9c, 0x85, 0x1f, 0x7d, 0x5e, 0x81, 0x05, 0x56, 0x5e, 0x1b, 0xf8, - 0x0e, 0xcf, 0xde, 0x1e, 0x11, 0x3f, 0xfa, 0xf9, 0x2c, 0xb3, 0xee, 0x3b, 0x39, 0xf8, 0x70, 0x2e, - 0x25, 0xf4, 0x2e, 0x9c, 0xb5, 0x34, 0xcf, 0xaf, 0xe9, 0xbe, 0xb9, 0x63, 0xfa, 0x7b, 0x51, 0x17, - 0x8e, 0xfe, 0x72, 0x0c, 0x8b, 0x01, 0xb9, 0x91, 0x85, 0x0c, 0x67, 0xd3, 0x50, 0xff, 0x54, 0x01, - 0x94, 0x66, 0x21, 0x64, 0x41, 0xc5, 0x20, 0x9b, 0xda, 0xc0, 0xf2, 0x03, 0x15, 0xa0, 0xd0, 0x2d, - 0xf3, 0x08, 0x65, 0x24, 0x99, 0x9b, 0x02, 0x2f, 0x0e, 0x29, 0x20, 0x07, 0xa6, 0xee, 0x6c, 0x99, - 0x3e, 0xb1, 0x4c, 0xcf, 0x17, 0xd2, 0x79, 0x54, 0x72, 0xa1, 0xce, 0xf3, 0x5a, 0x80, 0x18, 0x47, - 0x34, 0xd4, 0x2f, 0x8d, 0x41, 0xe5, 0x08, 0x0f, 0xf4, 0x0d, 0x00, 0x89, 0xf4, 0x12, 0x54, 0x51, - 0x22, 0xa3, 0xb8, 0xc8, 0x98, 0x3a, 0xd3, 0x48, 0x21, 0xc3, 0x19, 0x04, 0xd0, 0xbb, 0x70, 0xc6, - 0xb4, 0x37, 0x5d, 0xcd, 0xf3, 0xdd, 0x81, 0xee, 0x0f, 0x5c, 0x32, 0x4a, 0x2e, 0x64, 0xe6, 0x5a, - 0x68, 0x65, 0xa0, 0xc3, 0x99, 0x44, 0x10, 0x81, 0xc9, 0x3b, 0x8e, 0xbb, 0x4d, 0x85, 0xe7, 0x78, - 0xf1, 0x77, 0x36, 0x5e, 0x63, 0x28, 0x22, 0xa9, 0xc9, 0x7f, 0x7b, 0x38, 0xc0, 0xad, 0xfe, 0xa1, - 0x02, 0x65, 0x7e, 0x7f, 0xee, 0x7d, 0x61, 0x57, 0xb1, 0xae, 0xe6, 0xe6, 0xf8, 0xa4, 0xe6, 0x0e, - 0xab, 0xf1, 0x3e, 0x31, 0x77, 0x58, 0x5f, 0x73, 0x74, 0x99, 0x3f, 0x1c, 0x13, 0xdf, 0xc2, 0x94, - 0x85, 0x16, 0x9c, 0x16, 0x4a, 0xef, 0x0d, 0x73, 0x93, 0x50, 0xee, 0x6a, 0x6a, 0x7b, 0x9e, 0xb8, - 0xb8, 0xce, 0xa4, 0x6e, 0x23, 0x0d, 0xc6, 0x59, 0x6d, 0xd0, 0x3f, 0x51, 0xe8, 0xb6, 0xec, 0xbb, - 0xa6, 0x3e, 0x52, 0xe2, 0xcc, 0xb0, 0x6f, 0xcb, 0xab, 0x1c, 0x19, 0xf7, 0x16, 0xac, 0x47, 0xfb, - 0x33, 0x2b, 0xbd, 0xb7, 0xbf, 0xb4, 0x94, 0xe1, 0x8a, 0x0c, 0x5c, 0xe7, 0x74, 0x60, 0x3f, 0xf7, - 0xfd, 0x43, 0xab, 0x30, 0x37, 0x7e, 0xd0, 0x63, 0x74, 0x0d, 0xca, 0x9e, 0xee, 0xf4, 0xc9, 0x51, - 0x52, 0x01, 0x87, 0x03, 0xdc, 0xa1, 0x2d, 0x31, 0x47, 0xb0, 0xf8, 0x36, 0x4c, 0xcb, 0x3d, 0xcf, - 0xf0, 0x46, 0x34, 0x65, 0x6f, 0xc4, 0x91, 0x0f, 0xeb, 0x64, 0xef, 0xc5, 0xef, 0x96, 0x40, 0x3c, - 0x8e, 0x35, 0xc4, 0x61, 0x85, 0x19, 0xa4, 0xd1, 0x1b, 0xe1, 0x41, 0xb0, 0xe4, 0x7b, 0xc0, 0xd1, - 0x18, 0xc8, 0x99, 0xf4, 0x90, 0x0d, 0x13, 0x96, 0xb6, 0x41, 0xac, 0xe0, 0xa9, 0xa4, 0x2b, 0xc5, - 0xdf, 0xf2, 0xe1, 0xc9, 0x6b, 0xbd, 0x84, 0x4b, 0x9b, 0x17, 0x62, 0x41, 0x65, 0xf1, 0x79, 0xa8, - 0x4a, 0xd5, 0x8e, 0xe4, 0x00, 0xfa, 0x8a, 0x02, 0xe7, 0x02, 0x96, 0x88, 0xa7, 0xdf, 0x40, 0x97, - 0xa0, 0xa2, 0xf5, 0x4d, 0xe6, 0x13, 0x95, 0xbd, 0xca, 0xb5, 0x76, 0x8b, 0x95, 0xe1, 0x10, 0x8a, - 0x3e, 0x0c, 0x95, 0x60, 0x9e, 0x84, 0x82, 0x14, 0x2e, 0xf1, 0xf0, 0x30, 0x27, 0xac, 0x81, 0x1e, - 0x97, 0x12, 0x03, 0x96, 0xa3, 0x1d, 0x2d, 0x24, 0xcc, 0xcf, 0x7d, 0xd5, 0x2f, 0x8f, 0xc1, 0x0c, - 0x77, 0x24, 0xd4, 0x4d, 0xdb, 0x30, 0xed, 0xee, 0x03, 0x10, 0xa5, 0xb1, 0x27, 0x59, 0x4b, 0xc7, - 0xf5, 0x24, 0xeb, 0x75, 0x98, 0x78, 0x87, 0x2e, 0xeb, 0x80, 0x1d, 0x86, 0x5a, 0x5d, 0xe1, 0x5c, - 0x33, 0x89, 0xe0, 0x61, 0x81, 0x02, 0x79, 0xd2, 0xc3, 0xb8, 0x23, 0xdc, 0xa4, 0x8e, 0x8d, 0x6c, - 0x98, 0xde, 0x73, 0x3a, 0xfb, 0x55, 0x5c, 0xf5, 0xdf, 0x2b, 0x30, 0x1f, 0x6b, 0xf1, 0x00, 0x76, - 0x82, 0xcd, 0xf8, 0x4e, 0x50, 0x1b, 0xf9, 0x2b, 0x73, 0x76, 0x84, 0xe7, 0xe1, 0x6c, 0xe6, 0x60, - 0xdc, 0x5f, 0x81, 0x52, 0xbf, 0x59, 0x82, 0xf1, 0x0e, 0x21, 0xc6, 0x03, 0xe0, 0xcc, 0xb7, 0x62, - 0x9b, 0xfc, 0x27, 0x0a, 0x3f, 0xd8, 0x95, 0xe7, 0x1e, 0xd9, 0x4c, 0xb8, 0x47, 0x3e, 0x59, 0x98, - 0xc2, 0xe1, 0xbe, 0x91, 0x5f, 0x2a, 0x01, 0xd0, 0x6a, 0xfc, 0x11, 0x4f, 0x11, 0x23, 0x19, 0x3d, - 0xf3, 0x3c, 0xf5, 0x5e, 0x79, 0x9c, 0x59, 0x0d, 0x1f, 0x63, 0x1c, 0x8b, 0x9c, 0xef, 0xf1, 0x87, - 0x18, 0xe3, 0xd2, 0x62, 0xfc, 0x98, 0xa4, 0x85, 0xfa, 0xf7, 0x15, 0x60, 0x29, 0xfb, 0x9b, 0x6b, - 0x1d, 0xf4, 0x1c, 0xcc, 0x98, 0xfc, 0x68, 0xb3, 0x29, 0x27, 0xa7, 0x63, 0x07, 0x30, 0x2d, 0x19, - 0x80, 0xe3, 0xf5, 0x50, 0x4f, 0x1a, 0xd7, 0x11, 0x9e, 0xd2, 0x15, 0xfd, 0xb8, 0xaf, 0x7c, 0xf8, - 0x7e, 0x09, 0x4e, 0x25, 0xea, 0x0e, 0x61, 0x7f, 0x9c, 0x8c, 0xb4, 0x95, 0x32, 0x02, 0x8f, 0x9d, - 0x7c, 0x46, 0xe0, 0x30, 0x39, 0xef, 0xf8, 0xc9, 0x26, 0xe7, 0xfd, 0x7d, 0x05, 0xd8, 0xdb, 0xac, - 0x0f, 0x40, 0xf0, 0xfe, 0xff, 0x71, 0xc1, 0xfb, 0xf1, 0xa2, 0x8c, 0x93, 0x23, 0x6f, 0x7f, 0xbd, - 0x04, 0x2c, 0xfd, 0xbe, 0x88, 0xe4, 0x90, 0x82, 0x23, 0x94, 0x9c, 0xe0, 0x88, 0x8b, 0x22, 0xb6, - 0x22, 0xe1, 0x25, 0x94, 0xe2, 0x2b, 0x3e, 0x2c, 0x85, 0x4f, 0x8c, 0xc5, 0xc5, 0x48, 0x3a, 0x84, - 0x02, 0xdd, 0x85, 0x19, 0x6f, 0xcb, 0x71, 0xfc, 0xc0, 0x64, 0x17, 0x73, 0x57, 0x2b, 0x1c, 0xd2, - 0x1c, 0x7c, 0x0a, 0x5f, 0x98, 0x1d, 0x19, 0x37, 0x8e, 0x93, 0x42, 0xcb, 0x00, 0x1b, 0x96, 0xa3, - 0x6f, 0x37, 0x5a, 0x4d, 0x1c, 0x04, 0xbe, 0xb2, 0xf0, 0xab, 0x7a, 0x58, 0x8a, 0xa5, 0x1a, 0xea, - 0xbf, 0x50, 0xf8, 0x68, 0x1d, 0x61, 0x59, 0x3d, 0x40, 0x29, 0xf9, 0x44, 0x42, 0x4a, 0xe6, 0x3d, - 0x59, 0xfb, 0x3b, 0xe2, 0x2b, 0xc2, 0x47, 0x16, 0xfa, 0x30, 0x63, 0xc9, 0xaf, 0x32, 0x08, 0x36, - 0x2e, 0xf4, 0xa0, 0x43, 0x98, 0x58, 0x2f, 0x56, 0x8c, 0xe3, 0x04, 0xa8, 0x28, 0x0d, 0x3a, 0xcf, - 0x5f, 0x98, 0xe4, 0xb1, 0x2b, 0x6c, 0xc6, 0xda, 0x32, 0x00, 0xc7, 0xeb, 0xa9, 0x7f, 0xab, 0x04, - 0xe7, 0x79, 0xdf, 0x59, 0xf0, 0x79, 0x93, 0xf4, 0x89, 0x6d, 0x10, 0x5b, 0xdf, 0x63, 0xea, 0xb2, - 0xe1, 0x74, 0xd1, 0x5f, 0x52, 0xa0, 0x12, 0x1c, 0x3c, 0x89, 0x0f, 0x79, 0xa3, 0xf8, 0x8b, 0x9a, - 0x39, 0x54, 0xc2, 0x63, 0x2f, 0x9e, 0xe3, 0x4d, 0xfc, 0xc2, 0x21, 0x61, 0x74, 0x07, 0xca, 0x7d, - 0xd7, 0xd9, 0x08, 0xcc, 0xaa, 0xdb, 0xc7, 0xde, 0x83, 0x36, 0xc5, 0xce, 0x97, 0x27, 0xfb, 0x17, - 0x73, 0x7a, 0x2a, 0x86, 0xc7, 0x87, 0xea, 0x39, 0x7a, 0x32, 0x99, 0xca, 0x38, 0xf4, 0x9f, 0xa4, - 0xb2, 0x44, 0xdd, 0x04, 0xf5, 0xfe, 0x7d, 0x39, 0x0a, 0xc2, 0x57, 0xe1, 0x31, 0x09, 0xe1, 0xca, - 0xae, 0x4e, 0x3c, 0xaf, 0xa1, 0xf5, 0x35, 0x9d, 0x9a, 0x94, 0xec, 0x6e, 0x2f, 0x77, 0xf4, 0x1e, - 0x01, 0xe5, 0xff, 0x51, 0x60, 0x49, 0xc2, 0x19, 0x0b, 0x80, 0x0a, 0x44, 0xcd, 0xd7, 0x15, 0xa8, - 0x6a, 0xb6, 0xed, 0xf8, 0x9a, 0x7c, 0xee, 0x68, 0x8c, 0x38, 0x37, 0x59, 0xa4, 0x96, 0x6b, 0x11, - 0x99, 0x44, 0x84, 0x81, 0x04, 0xc1, 0x72, 0x6f, 0x16, 0x3f, 0x09, 0x73, 0xc9, 0x56, 0x47, 0x32, - 0x1e, 0x1b, 0x70, 0x4e, 0xea, 0x15, 0x3b, 0xcb, 0x68, 0x6c, 0x11, 0x7d, 0xdb, 0x3b, 0xca, 0x30, - 0xd6, 0xa9, 0xfe, 0x1d, 0x22, 0x11, 0x57, 0x2d, 0xa9, 0xb9, 0xf7, 0x24, 0x4c, 0xee, 0x98, 0x9e, - 0x19, 0x5c, 0xd9, 0x97, 0x70, 0xdc, 0xe6, 0xc5, 0x38, 0x80, 0xab, 0xaf, 0xc0, 0x69, 0x19, 0x07, - 0x93, 0xb8, 0x6b, 0x9d, 0xa3, 0xf4, 0x62, 0x15, 0x2e, 0x4a, 0x18, 0x32, 0xef, 0x1b, 0x1e, 0x05, - 0xdd, 0xd7, 0x2b, 0x81, 0xc0, 0x13, 0x37, 0x56, 0x7e, 0x4b, 0x81, 0x87, 0x49, 0x1e, 0xd7, 0x09, - 0xa1, 0xf1, 0xfa, 0x88, 0x6c, 0x91, 0xcb, 0xd5, 0x22, 0xbd, 0x55, 0x1e, 0x18, 0xe7, 0xf7, 0x0c, - 0xed, 0x01, 0x78, 0xe1, 0x94, 0x8c, 0x12, 0x79, 0x9c, 0x39, 0xc7, 0x22, 0x97, 0x73, 0xf8, 0x1b, - 0x4b, 0xc4, 0xd0, 0x3b, 0x50, 0xf1, 0xc4, 0x4c, 0x8e, 0x72, 0x1d, 0x3a, 0x83, 0x31, 0x44, 0x70, - 0xa5, 0xf8, 0x85, 0x43, 0x32, 0xe8, 0x97, 0x15, 0x38, 0x63, 0x65, 0x2c, 0x2e, 0xa1, 0x21, 0x74, - 0x4e, 0x60, 0xdd, 0x72, 0x0f, 0x76, 0x16, 0x04, 0x67, 0x76, 0x05, 0xfd, 0x6a, 0xee, 0xdd, 0xdb, - 0x72, 0xf1, 0x07, 0x6a, 0xee, 0xc7, 0xfb, 0x05, 0xae, 0xe1, 0xfe, 0x14, 0x54, 0x9d, 0x48, 0x22, - 0x88, 0xcb, 0xd2, 0x9f, 0x1a, 0xb1, 0x73, 0x92, 0x8c, 0xe1, 0xe7, 0x81, 0x52, 0x01, 0x96, 0xe9, - 0xa1, 0xaf, 0x2a, 0x80, 0x8c, 0xd4, 0xbe, 0x21, 0x8e, 0x24, 0x5f, 0x3d, 0xf6, 0xcd, 0x91, 0x9f, - 0x80, 0xa4, 0xcb, 0x71, 0x46, 0x27, 0xd4, 0xaf, 0x4c, 0x72, 0x65, 0x9e, 0xf9, 0xa0, 0x37, 0x60, - 0x62, 0x83, 0x19, 0xc3, 0x42, 0x0a, 0x14, 0xb6, 0xbc, 0xb9, 0x49, 0xcd, 0x2d, 0x55, 0xfe, 0x3f, - 0x16, 0x98, 0xd1, 0x9b, 0x30, 0x66, 0xd8, 0xc1, 0xa3, 0x67, 0x2f, 0x8e, 0x60, 0x09, 0x46, 0x71, - 0xeb, 0x74, 0xe1, 0x50, 0xa4, 0xc8, 0x86, 0x8a, 0x2d, 0xf4, 0x5f, 0xb1, 0x4c, 0x0b, 0x3f, 0x27, - 0x1e, 0xea, 0xd1, 0xa1, 0xf6, 0x1e, 0x94, 0xe0, 0x90, 0x06, 0xa5, 0x97, 0x70, 0x80, 0x15, 0xa6, - 0x17, 0xda, 0xb5, 0x87, 0x39, 0x1d, 0xda, 0xb2, 0x95, 0x5a, 0x1e, 0xde, 0x4a, 0x9d, 0xc9, 0xb5, - 0x50, 0x09, 0x4c, 0xf8, 0xfc, 0x09, 0xe1, 0x89, 0xe2, 0x61, 0x48, 0xb4, 0xff, 0xec, 0x89, 0xe1, - 0x48, 0xe9, 0x16, 0xef, 0x0f, 0x0b, 0xe4, 0x94, 0xb1, 0xf8, 0x4b, 0xe7, 0x82, 0xe9, 0x0b, 0x33, - 0x16, 0x7f, 0xb2, 0x85, 0x33, 0x16, 0xff, 0x1f, 0x0b, 0xcc, 0xe8, 0x6d, 0x6a, 0x78, 0xf1, 0x2d, - 0x4e, 0x24, 0xea, 0x7b, 0x65, 0xc4, 0xa5, 0xe5, 0x05, 0x91, 0xef, 0xfc, 0x17, 0x0e, 0xf1, 0xa3, - 0x0d, 0x98, 0x14, 0x4e, 0x0e, 0x91, 0x65, 0xe0, 0xc5, 0x11, 0xf2, 0xee, 0x07, 0xaf, 0x10, 0xf1, - 0x6b, 0xb8, 0x01, 0x62, 0xf5, 0xdf, 0x4e, 0x71, 0xf7, 0x94, 0x08, 0x21, 0xd8, 0x84, 0x4a, 0x80, - 0x6e, 0x94, 0x5b, 0x18, 0xc1, 0x2b, 0x22, 0xfc, 0xd3, 0x82, 0x5f, 0x38, 0xc4, 0x8d, 0x1a, 0x59, - 0x17, 0x5e, 0xa2, 0x9c, 0xab, 0xc3, 0x5d, 0x76, 0x89, 0x47, 0xb8, 0x8d, 0x3d, 0x88, 0x08, 0xb7, - 0xec, 0x10, 0x8b, 0xf1, 0x42, 0x21, 0x16, 0x2f, 0xc1, 0xa9, 0x20, 0x00, 0xcd, 0x20, 0xec, 0xa8, - 0x47, 0x84, 0x66, 0xb3, 0x5b, 0xa5, 0x8d, 0x38, 0x08, 0x27, 0xeb, 0xa2, 0xdf, 0x55, 0xa0, 0xa2, - 0x0b, 0x05, 0x46, 0xac, 0xab, 0x1b, 0xa3, 0xf9, 0x30, 0x97, 0x03, 0x7d, 0x88, 0xab, 0xd3, 0xb7, - 0x03, 0x19, 0x11, 0x14, 0x1f, 0xd3, 0x19, 0x5c, 0xd8, 0x6b, 0xf4, 0xaf, 0xa8, 0xb1, 0x60, 0xb1, - 0xb7, 0x4d, 0xd8, 0x25, 0x3d, 0x1e, 0x33, 0x7e, 0x73, 0xc4, 0xaf, 0xa8, 0x45, 0x18, 0xf9, 0x87, - 0xbc, 0x11, 0xda, 0x05, 0x11, 0xe4, 0x98, 0xbe, 0x45, 0xee, 0x3e, 0xfa, 0x3b, 0x0a, 0x3c, 0xc6, - 0x03, 0xf5, 0x1b, 0x54, 0x41, 0x60, 0x6f, 0x03, 0x91, 0xe8, 0x31, 0xa2, 0x28, 0x20, 0xa4, 0x72, - 0xe4, 0x80, 0x90, 0x4b, 0x07, 0xfb, 0x4b, 0x8f, 0x35, 0x86, 0xc0, 0x8d, 0x87, 0xea, 0xc1, 0xe2, - 0x36, 0xcc, 0xc4, 0x26, 0xfb, 0x24, 0x4f, 0x2d, 0x17, 0x6d, 0x98, 0x4b, 0xce, 0xc9, 0x89, 0x9e, - 0x92, 0x5e, 0x87, 0xa9, 0x70, 0xb3, 0x40, 0xe7, 0x25, 0x42, 0xd1, 0x66, 0x7e, 0x9d, 0xec, 0x71, - 0xaa, 0x4b, 0x31, 0x5b, 0x8f, 0x1b, 0xfb, 0xb7, 0x69, 0x81, 0x40, 0xa8, 0x7e, 0x47, 0x78, 0x72, - 0x6e, 0x91, 0x5e, 0xdf, 0xd2, 0x7c, 0xf2, 0xfe, 0x3f, 0xfa, 0x50, 0xff, 0x9b, 0xc2, 0x65, 0xbe, - 0x78, 0xf7, 0x4c, 0x83, 0x6a, 0x8f, 0xe7, 0x28, 0x64, 0x37, 0x4a, 0x95, 0xe2, 0x77, 0x59, 0x57, - 0x23, 0x34, 0x58, 0xc6, 0x89, 0xee, 0xa4, 0x5f, 0xe6, 0xbb, 0x32, 0xda, 0xe6, 0x3c, 0xf4, 0x03, - 0x7d, 0x28, 0xdd, 0x46, 0x7e, 0xd4, 0x4c, 0x39, 0xfc, 0x51, 0xb3, 0xfb, 0x3f, 0x75, 0xa5, 0x7e, - 0x6b, 0x0c, 0x32, 0x9f, 0x95, 0x40, 0x2a, 0x4c, 0xf0, 0x1b, 0x32, 0xf2, 0x93, 0x85, 0xfc, 0xfa, - 0x0c, 0x16, 0x10, 0xe4, 0xc2, 0x19, 0x71, 0xff, 0xe4, 0x3a, 0xd9, 0x8b, 0x1e, 0xcb, 0x13, 0x53, - 0x3f, 0x7c, 0x24, 0x3a, 0xcb, 0x5d, 0xd6, 0x49, 0x60, 0xc2, 0x99, 0xb8, 0xd1, 0x4d, 0x7e, 0x1d, - 0xcc, 0x36, 0x58, 0x92, 0x9f, 0x48, 0x3a, 0x88, 0xdb, 0xad, 0x0f, 0x07, 0xd7, 0xc1, 0x52, 0x15, - 0x70, 0x76, 0x3b, 0xb4, 0x03, 0xa8, 0xa7, 0xed, 0x26, 0xb1, 0x8d, 0x90, 0xd1, 0x7e, 0x35, 0x85, - 0x0d, 0x67, 0x50, 0xa0, 0x1b, 0xa8, 0xa6, 0xeb, 0xa4, 0xef, 0x13, 0x83, 0x0f, 0x6b, 0xe0, 0x5f, - 0x66, 0x1b, 0x68, 0x2d, 0x0e, 0xc2, 0xc9, 0xba, 0xec, 0x2a, 0x08, 0x33, 0x89, 0xdf, 0x1f, 0x21, - 0x4b, 0xac, 0xab, 0x27, 0x7b, 0x15, 0x84, 0x93, 0x38, 0xfc, 0x3c, 0xf3, 0x0d, 0x38, 0xc7, 0xaa, - 0xd5, 0x0c, 0x66, 0x05, 0x7b, 0xc4, 0xa8, 0x19, 0x06, 0xbb, 0x97, 0x39, 0xea, 0x5b, 0x83, 0xea, - 0x3f, 0x2f, 0xc1, 0x29, 0x86, 0xbb, 0x51, 0xc3, 0xc2, 0x47, 0x47, 0x77, 0x05, 0x1e, 0x87, 0xca, - 0xb1, 0x2e, 0x27, 0xe3, 0x50, 0xcf, 0xf3, 0x06, 0x2e, 0x61, 0x6a, 0x91, 0x66, 0x79, 0x41, 0xcb, - 0x58, 0x60, 0xaa, 0x0b, 0xc8, 0xd2, 0x3c, 0x9f, 0xbf, 0xdc, 0x15, 0xec, 0x84, 0x05, 0xe2, 0x52, - 0x19, 0x77, 0xde, 0x48, 0x61, 0xc2, 0x19, 0xd8, 0x03, 0x9a, 0x0d, 0xa7, 0xd7, 0xb7, 0x48, 0x48, - 0xb3, 0x54, 0x9c, 0x66, 0x1c, 0x13, 0xce, 0xc0, 0xae, 0xfe, 0x8c, 0x02, 0x73, 0xc9, 0x01, 0x41, - 0x3b, 0x50, 0x71, 0xc5, 0xa0, 0x08, 0xee, 0xbe, 0x51, 0x98, 0x39, 0x32, 0x06, 0x5a, 0x3c, 0x23, - 0x23, 0x7e, 0xe1, 0x90, 0x96, 0xfa, 0xdb, 0xe3, 0xb0, 0x90, 0xd7, 0x08, 0x7d, 0x45, 0x81, 0x73, - 0x7a, 0xa4, 0xa3, 0xd4, 0x06, 0xfe, 0x96, 0xe3, 0x9a, 0xbe, 0x49, 0x82, 0x67, 0x4d, 0x1b, 0xc5, - 0xfb, 0x18, 0x72, 0x0f, 0x4f, 0xf6, 0xd2, 0xc8, 0x24, 0x83, 0x73, 0xc8, 0xa3, 0x77, 0x01, 0xb6, - 0xa3, 0xe4, 0x69, 0x7c, 0xbe, 0xae, 0x17, 0xee, 0x8c, 0x94, 0x60, 0x2d, 0xe8, 0x14, 0x73, 0x01, - 0x4a, 0xe5, 0x12, 0x39, 0x4a, 0xdc, 0xf3, 0xb6, 0xae, 0x93, 0xbd, 0xbe, 0x66, 0x06, 0x41, 0xf5, - 0xc5, 0x89, 0x77, 0x3a, 0xd7, 0x04, 0xaa, 0x38, 0x71, 0xa9, 0x5c, 0x22, 0x87, 0xbe, 0xa4, 0xc0, - 0x0c, 0xb7, 0x53, 0x44, 0xc4, 0x97, 0x90, 0xe1, 0x6b, 0x85, 0x3b, 0x70, 0x53, 0xc6, 0x16, 0xf6, - 0x81, 0x1d, 0x41, 0xc5, 0x41, 0x71, 0xba, 0xea, 0x67, 0x4b, 0xf0, 0x50, 0xce, 0xf0, 0xe5, 0xac, - 0x65, 0xe5, 0xff, 0xb9, 0xb5, 0xfc, 0x07, 0x0a, 0x4c, 0xb1, 0x31, 0x78, 0x9f, 0x04, 0xa1, 0xb2, - 0xbe, 0xe6, 0x1c, 0x81, 0xff, 0xbe, 0x02, 0xf3, 0xa9, 0x5c, 0x58, 0x43, 0x85, 0x30, 0x3e, 0xb0, - 0x93, 0xdd, 0xc7, 0x93, 0x2f, 0x96, 0x56, 0x33, 0x53, 0xe4, 0xbd, 0x06, 0x33, 0xb1, 0x13, 0xf0, - 0x30, 0x0f, 0x82, 0x92, 0x99, 0x07, 0x41, 0x4e, 0x73, 0x50, 0x3a, 0x34, 0xcd, 0xc1, 0xe7, 0x4b, - 0xb0, 0x98, 0xbf, 0x66, 0xfe, 0xdc, 0x70, 0x7d, 0xb8, 0xf2, 0xd3, 0xb2, 0xeb, 0xcf, 0xcd, 0x18, - 0x7c, 0x73, 0x56, 0xac, 0x7c, 0xe6, 0x2e, 0x7f, 0x0b, 0x26, 0x58, 0x5e, 0x8a, 0x60, 0x63, 0x7c, - 0xa1, 0x70, 0xbe, 0x0b, 0x8f, 0x9b, 0x20, 0xfc, 0x7f, 0x2c, 0xb0, 0xa2, 0x26, 0xcc, 0xe9, 0x96, - 0x33, 0x30, 0xda, 0xae, 0xb3, 0x69, 0x5a, 0x64, 0x2d, 0xb2, 0x76, 0xc2, 0xc4, 0x5a, 0x8d, 0x04, - 0x1c, 0xa7, 0x5a, 0x20, 0xcc, 0x1d, 0xee, 0x7c, 0xc7, 0x7a, 0xae, 0x60, 0x50, 0x10, 0xcf, 0x8e, - 0x1c, 0x3a, 0xda, 0xdf, 0x01, 0x20, 0xc1, 0x1a, 0x0e, 0x6e, 0x2f, 0xbc, 0x54, 0x2c, 0x65, 0x58, - 0x28, 0x09, 0x02, 0x2d, 0x3d, 0x2c, 0xf2, 0xb0, 0x44, 0x04, 0xb9, 0x50, 0xdd, 0x8a, 0xde, 0xf6, - 0x15, 0xde, 0xef, 0x97, 0x47, 0x7c, 0x57, 0x98, 0x1b, 0xc7, 0x52, 0x01, 0x96, 0x89, 0x20, 0x97, - 0x2b, 0x1c, 0xdc, 0xb7, 0x39, 0xca, 0x5b, 0x90, 0x91, 0xd3, 0x34, 0xfa, 0xce, 0xa8, 0x0c, 0x4b, - 0x54, 0x28, 0x4d, 0x3b, 0x4c, 0x2c, 0x33, 0x8a, 0xbb, 0x3c, 0x4a, 0x4f, 0x13, 0xd1, 0x8c, 0xca, - 0xb0, 0x44, 0x85, 0x8e, 0x6d, 0x2f, 0x4a, 0x26, 0x24, 0x9c, 0x60, 0x2f, 0x8f, 0x98, 0xd4, 0x49, - 0x38, 0x1e, 0xa2, 0x02, 0x2c, 0x13, 0x41, 0x36, 0x40, 0x2f, 0xcc, 0x31, 0x24, 0xbc, 0xe8, 0x85, - 0xbe, 0x33, 0xca, 0x54, 0xc4, 0x55, 0xa8, 0xe8, 0x37, 0x96, 0x28, 0xa0, 0xb7, 0xa5, 0xb3, 0x1a, - 0x28, 0xee, 0xbe, 0x19, 0xea, 0x9c, 0xe6, 0x63, 0x91, 0x17, 0xa3, 0xca, 0xd6, 0xeb, 0x23, 0x92, - 0x07, 0xe3, 0xde, 0xfe, 0xd2, 0x34, 0x93, 0x21, 0x29, 0x8f, 0x46, 0x14, 0xc2, 0x34, 0x7d, 0x58, - 0x08, 0x13, 0xba, 0x0a, 0xf3, 0x9e, 0x1c, 0x26, 0xcc, 0x04, 0xc3, 0x0c, 0x6b, 0x12, 0xe6, 0xa4, - 0xea, 0x24, 0x2b, 0xe0, 0x74, 0x1b, 0xbe, 0x07, 0x12, 0x83, 0xb5, 0x9f, 0x95, 0xf7, 0x40, 0x5e, - 0x86, 0x43, 0x28, 0xda, 0x81, 0x69, 0x4f, 0x0a, 0x9a, 0x12, 0xef, 0xc6, 0x8c, 0x70, 0xc0, 0x22, - 0x02, 0xa6, 0x58, 0xae, 0x13, 0xb9, 0x04, 0xc7, 0xe8, 0xa0, 0x77, 0x61, 0x2a, 0xf0, 0x68, 0x79, - 0x0b, 0x73, 0xc5, 0xef, 0xb2, 0x64, 0xe7, 0x95, 0x8a, 0x5c, 0x54, 0x01, 0xc8, 0xc3, 0x11, 0x3d, - 0x34, 0x88, 0x5f, 0x21, 0x9d, 0x3f, 0x96, 0x6b, 0x73, 0x61, 0x28, 0x4c, 0xde, 0xf5, 0x51, 0xd4, - 0x80, 0x79, 0xb2, 0xdb, 0x77, 0xbc, 0x81, 0x4b, 0x58, 0x4a, 0x3b, 0x36, 0x3d, 0x28, 0x3a, 0x81, - 0x59, 0x49, 0x02, 0x71, 0xba, 0x3e, 0xfa, 0xa2, 0x02, 0x73, 0xfc, 0xd9, 0x1d, 0xba, 0x85, 0x39, - 0x36, 0xb1, 0x7d, 0x6f, 0xe1, 0x74, 0xf1, 0xdc, 0x8e, 0x9d, 0x04, 0x2e, 0xe1, 0xd7, 0x4a, 0x94, - 0xe2, 0x14, 0x4d, 0xf5, 0x1f, 0x55, 0xa1, 0x2a, 0x79, 0x2f, 0x7e, 0x14, 0xc9, 0x0f, 0x7c, 0xa8, - 0xea, 0x8e, 0xed, 0xf9, 0xae, 0x26, 0x25, 0x7c, 0x18, 0x91, 0x66, 0x38, 0x8d, 0x8d, 0x08, 0x33, - 0x96, 0xc9, 0x50, 0x81, 0x13, 0x1e, 0xd8, 0x8d, 0x1d, 0xc3, 0x81, 0x5d, 0x28, 0x70, 0x32, 0x0e, - 0xed, 0x9e, 0x05, 0x08, 0xf6, 0x2d, 0xc2, 0xdf, 0x3f, 0xa8, 0x44, 0x49, 0xb9, 0x5b, 0xde, 0xb5, - 0x10, 0x86, 0xa5, 0x7a, 0xe8, 0x2e, 0xcc, 0x58, 0x72, 0x42, 0x5e, 0xb1, 0xa9, 0x16, 0x0a, 0x3e, - 0x8d, 0x65, 0xf6, 0xe5, 0x76, 0x64, 0xac, 0x08, 0xc7, 0x49, 0x51, 0x36, 0xb0, 0x82, 0x24, 0xd2, - 0x23, 0x1d, 0x3e, 0x87, 0xa9, 0xa8, 0x23, 0x36, 0x08, 0x8b, 0x3c, 0x2c, 0x11, 0xc9, 0x39, 0x21, - 0x9c, 0x2c, 0x74, 0x42, 0x38, 0x80, 0xd3, 0x2e, 0xf1, 0xdd, 0xbd, 0xc6, 0x9e, 0xce, 0x12, 0xb3, - 0xbb, 0x3e, 0xd3, 0x3e, 0x2b, 0xc5, 0xee, 0x53, 0xe3, 0x34, 0x2a, 0x9c, 0x85, 0x3f, 0x26, 0xb0, - 0xa7, 0x0e, 0x15, 0xd8, 0x1f, 0x83, 0xaa, 0x4f, 0xf4, 0x2d, 0xdb, 0xd4, 0x35, 0xab, 0xd5, 0x14, - 0x39, 0x8f, 0x22, 0xd9, 0x13, 0x81, 0xb0, 0x5c, 0x0f, 0xd5, 0x61, 0x6c, 0x60, 0x1a, 0x62, 0xd7, - 0xfa, 0xb1, 0xd0, 0x0f, 0xd8, 0x6a, 0xde, 0xdb, 0x5f, 0xfa, 0x60, 0x74, 0xe4, 0x16, 0x7e, 0xd5, - 0xe5, 0xfe, 0x76, 0xf7, 0xb2, 0xbf, 0xd7, 0x27, 0xde, 0xf2, 0x7a, 0xab, 0x89, 0x69, 0xe3, 0xac, - 0xd3, 0xd3, 0xe9, 0x23, 0x9c, 0x9e, 0x7e, 0x55, 0x81, 0xd3, 0x5a, 0xd2, 0x85, 0x49, 0xbc, 0x85, - 0x99, 0xe2, 0xd2, 0x3f, 0xdb, 0x2d, 0x1a, 0x65, 0x5d, 0xac, 0xa5, 0xc9, 0xe1, 0xac, 0x3e, 0x50, - 0x9b, 0xa3, 0x67, 0x76, 0xc3, 0xbc, 0xd7, 0x62, 0xd6, 0x67, 0x8b, 0xd9, 0x1c, 0xab, 0x29, 0x4c, - 0x38, 0x03, 0x3b, 0xba, 0x03, 0x55, 0x3d, 0x72, 0xd3, 0x89, 0x9d, 0xb7, 0x79, 0x1c, 0x7e, 0x42, - 0x91, 0x77, 0x45, 0xf2, 0x01, 0xca, 0x94, 0xd4, 0x3f, 0x52, 0x84, 0x45, 0xfd, 0x00, 0x0f, 0xd8, - 0x4e, 0xda, 0x1b, 0xaf, 0xee, 0x40, 0x6a, 0xd3, 0x42, 0x1b, 0x30, 0x49, 0x31, 0x34, 0xd7, 0x3a, - 0xe2, 0xab, 0x5e, 0x2c, 0xb6, 0x37, 0x30, 0x14, 0xdc, 0x3b, 0x21, 0x7e, 0xe0, 0x00, 0xb1, 0x7a, - 0x03, 0x20, 0xda, 0xf0, 0x47, 0x3e, 0xfa, 0xfc, 0x61, 0x19, 0xce, 0x8e, 0x1a, 0x18, 0xca, 0x12, - 0x78, 0xb3, 0x67, 0x1c, 0x6b, 0x9b, 0x3e, 0x71, 0x6f, 0xde, 0x5c, 0x0d, 0x5f, 0xb9, 0x2b, 0x98, - 0x41, 0x3c, 0x7a, 0x05, 0x34, 0x85, 0x11, 0xe7, 0x50, 0x62, 0xca, 0x8e, 0x78, 0x2f, 0x0b, 0x6b, - 0x3e, 0xa9, 0x0f, 0x5c, 0xcf, 0x17, 0xd7, 0x31, 0xb9, 0xb2, 0x93, 0x04, 0xe2, 0x74, 0xfd, 0x24, - 0x12, 0xfe, 0xa4, 0x24, 0xdd, 0x05, 0x95, 0x34, 0x12, 0xfe, 0xae, 0x64, 0xba, 0xbe, 0x8c, 0x84, - 0xcf, 0x14, 0x35, 0x85, 0xca, 0x69, 0x24, 0x21, 0x10, 0xa7, 0xeb, 0x23, 0x03, 0x1e, 0x75, 0x89, - 0xee, 0xf4, 0x7a, 0xc4, 0x36, 0xf8, 0xd3, 0x0f, 0x9a, 0xdb, 0x35, 0xed, 0x2b, 0xae, 0xc6, 0x2a, - 0x32, 0x1b, 0x52, 0xa9, 0x5f, 0x3c, 0xd8, 0x5f, 0x7a, 0x14, 0x1f, 0x52, 0x0f, 0x1f, 0x8a, 0x05, - 0xf5, 0xe0, 0xd4, 0x80, 0xa5, 0xa7, 0x75, 0x5b, 0xb6, 0x4f, 0xdc, 0x1d, 0xcd, 0x2a, 0xf8, 0x50, - 0x2a, 0x93, 0xc8, 0xeb, 0x71, 0x54, 0x38, 0x89, 0x1b, 0xed, 0xd1, 0xcd, 0x4e, 0x74, 0x47, 0x22, - 0x59, 0x29, 0x9e, 0xe2, 0x1e, 0xa7, 0xd1, 0xe1, 0x2c, 0x1a, 0xea, 0x57, 0x15, 0x10, 0x71, 0x5e, - 0xe8, 0xd1, 0x98, 0x4f, 0xb2, 0x92, 0xf0, 0x47, 0x3e, 0x2a, 0xee, 0xa2, 0x94, 0x22, 0xa8, 0x74, - 0x0f, 0xe5, 0x09, 0xe9, 0x9e, 0xef, 0x54, 0x24, 0x82, 0x38, 0x66, 0x29, 0xc1, 0xf3, 0x53, 0x30, - 0x45, 0x6c, 0xdd, 0xdd, 0xeb, 0x47, 0x6a, 0xd4, 0x0c, 0x4f, 0xeb, 0x25, 0x0a, 0x71, 0x04, 0x57, - 0xff, 0x8d, 0x02, 0x02, 0x03, 0x4b, 0x2c, 0x3e, 0x54, 0x5a, 0xea, 0xfb, 0x1e, 0x5a, 0x4b, 0x89, - 0xb1, 0xc7, 0xf2, 0x12, 0x63, 0x9f, 0x54, 0x96, 0xe9, 0xdf, 0x52, 0xe0, 0x54, 0xfc, 0xe2, 0xb5, - 0x87, 0x1e, 0x87, 0x49, 0x91, 0x44, 0x44, 0xa4, 0x22, 0xe0, 0x77, 0xcf, 0x78, 0x11, 0x0e, 0x60, - 0x71, 0x3b, 0x6d, 0x84, 0x9c, 0x03, 0xd9, 0xf7, 0xbf, 0x0f, 0xb7, 0xd3, 0xd4, 0xef, 0xce, 0xc2, - 0x04, 0x4f, 0x7b, 0x41, 0x65, 0x5a, 0xc6, 0x25, 0x87, 0xeb, 0xc5, 0x13, 0x6b, 0x14, 0xb8, 0xcb, - 0x10, 0xcb, 0x81, 0x5a, 0x3a, 0x34, 0x07, 0x2a, 0xe6, 0x49, 0xef, 0x47, 0xf0, 0xcd, 0x35, 0x70, - 0x4b, 0x3c, 0xe5, 0x26, 0x12, 0xde, 0x23, 0x3f, 0xe6, 0xb4, 0x1a, 0x2f, 0xae, 0x2e, 0xf0, 0x01, - 0x90, 0x5c, 0x57, 0xb3, 0x87, 0xb8, 0xad, 0xa2, 0x3c, 0x03, 0xe5, 0xe2, 0x41, 0x24, 0x62, 0xc8, - 0x87, 0xc8, 0x33, 0x10, 0x2e, 0xa4, 0x89, 0xdc, 0x85, 0xb4, 0x09, 0x93, 0x62, 0x29, 0x08, 0xe1, - 0xf8, 0xe2, 0x08, 0x09, 0xed, 0xa5, 0xac, 0x54, 0xbc, 0x00, 0x07, 0xc8, 0xe9, 0x8e, 0xdb, 0xd3, - 0x76, 0xcd, 0xde, 0xa0, 0xc7, 0x24, 0x62, 0x59, 0xae, 0xca, 0x8a, 0x71, 0x00, 0x67, 0x55, 0x79, - 0xec, 0x0d, 0xd3, 0xde, 0xe5, 0xaa, 0xe2, 0x29, 0xd2, 0x00, 0x8e, 0xde, 0x84, 0x4a, 0x4f, 0xdb, - 0xed, 0x0c, 0xdc, 0x2e, 0x11, 0xee, 0xaa, 0x7c, 0x55, 0x6b, 0xe0, 0x9b, 0xd6, 0x32, 0xb5, 0x39, - 0x7d, 0x77, 0xb9, 0x65, 0xfb, 0x37, 0xdd, 0x8e, 0xef, 0x86, 0x89, 0xb6, 0x57, 0x05, 0x16, 0x1c, - 0xe2, 0x43, 0x16, 0xcc, 0xf6, 0xb4, 0xdd, 0x75, 0x5b, 0x0b, 0x5f, 0x4c, 0xac, 0x16, 0xa4, 0xc0, - 0x8e, 0x6f, 0x56, 0x63, 0xb8, 0x70, 0x02, 0x77, 0xc6, 0x49, 0xd1, 0xf4, 0x49, 0x9d, 0x14, 0xd5, - 0xc2, 0x68, 0x66, 0x6e, 0x2c, 0x3c, 0x9c, 0x15, 0xa5, 0x73, 0x78, 0xa4, 0xf2, 0x5b, 0x61, 0xa4, - 0xf2, 0x6c, 0x71, 0x9f, 0xfe, 0x21, 0x51, 0xca, 0x03, 0xa8, 0x52, 0x45, 0x97, 0x97, 0x52, 0x6d, - 0xbe, 0xb0, 0x4f, 0xa9, 0x19, 0xa2, 0x91, 0x1e, 0x1b, 0x8a, 0x50, 0x63, 0x99, 0x0e, 0xba, 0xc9, - 0x5f, 0xd4, 0xb3, 0x88, 0x1f, 0x55, 0x61, 0x56, 0xe4, 0x1c, 0x77, 0x1b, 0x06, 0x0f, 0xe0, 0xa5, - 0x2a, 0xe0, 0xec, 0x76, 0x54, 0x45, 0xe5, 0x97, 0x8d, 0xe7, 0xa3, 0x64, 0x78, 0xb1, 0xc4, 0x23, - 0x7f, 0x25, 0xcb, 0x01, 0x85, 0x8a, 0xdf, 0xbc, 0xe0, 0xb2, 0xa1, 0xa8, 0x1b, 0x0a, 0x7d, 0x4b, - 0x81, 0x85, 0x5e, 0xce, 0x5b, 0x3e, 0xc2, 0x2f, 0x76, 0x6b, 0x04, 0xf9, 0x90, 0xfb, 0x3e, 0x10, - 0x7f, 0x8b, 0xfe, 0x7e, 0xb5, 0x70, 0x6e, 0xdf, 0x46, 0xbd, 0x18, 0x37, 0x4a, 0x42, 0x96, 0x5f, - 0x51, 0x60, 0x2e, 0xb9, 0x09, 0xc8, 0x8f, 0x00, 0x2a, 0x27, 0xfb, 0x08, 0xa0, 0x74, 0xee, 0x5b, - 0x3a, 0xe4, 0xdc, 0xf7, 0x25, 0x38, 0x97, 0xcd, 0x1b, 0x54, 0x23, 0x63, 0x8f, 0x6e, 0x0a, 0x4b, - 0x28, 0xca, 0x29, 0x4f, 0x0b, 0x31, 0x87, 0xd5, 0x3f, 0xf2, 0xed, 0x1f, 0x5c, 0xf8, 0xc0, 0x77, - 0x7e, 0x70, 0xe1, 0x03, 0xdf, 0xfb, 0xc1, 0x85, 0x0f, 0xfc, 0xf4, 0xc1, 0x05, 0xe5, 0xdb, 0x07, - 0x17, 0x94, 0xef, 0x1c, 0x5c, 0x50, 0xbe, 0x77, 0x70, 0x41, 0xf9, 0x4f, 0x07, 0x17, 0x94, 0x9f, - 0xfb, 0xcf, 0x17, 0x3e, 0xf0, 0xe6, 0xa4, 0xe8, 0xf8, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x43, - 0x55, 0x78, 0x35, 0xba, 0xc4, 0x00, 0x00, + // 10362 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, 0x43, 0x72, 0xc9, 0xda, 0x8f, 0xe3, 0xf1, 0x6e, 0x97, 0xa7, + 0xd6, 0x49, 0xb8, 0x8b, 0x64, 0xae, 0xef, 0x24, 0x59, 0xba, 0x3b, 0x9d, 0xee, 0xe6, 0x83, 0xbb, + 0x3b, 0x5a, 0x92, 0x3b, 0x57, 0x43, 0xee, 0x9d, 0xce, 0xce, 0x45, 0xcd, 0xee, 0xe2, 0xb0, 0x8f, + 0x3d, 0xdd, 0x73, 0xdd, 0x3d, 0x5c, 0x72, 0x15, 0x43, 0x96, 0xa2, 0x8f, 0x48, 0x4e, 0x02, 0xc3, + 0x80, 0x23, 0x48, 0x72, 0x62, 0x19, 0x86, 0xe3, 0x04, 0x0e, 0x6c, 0x25, 0x86, 0x05, 0x38, 0x1f, + 0x88, 0xe1, 0x24, 0xb0, 0x64, 0x24, 0x86, 0xe2, 0x40, 0xf0, 0x05, 0x89, 0xa9, 0x88, 0x41, 0x94, + 0x04, 0x31, 0x8c, 0x00, 0x46, 0xfe, 0x2c, 0x0c, 0x24, 0xa8, 0x8f, 0xee, 0xae, 0xfe, 0x9a, 0x1d, + 0xf6, 0x90, 0xab, 0x3b, 0xdb, 0xbf, 0xc8, 0xa9, 0x57, 0xf5, 0x5e, 0x75, 0x7d, 0xbc, 0x7a, 0xef, + 0xd5, 0xab, 0xf7, 0xa0, 0xd6, 0x31, 0xfd, 0xdd, 0xfe, 0xf6, 0x8a, 0xee, 0x74, 0xaf, 0x76, 0x34, + 0xd7, 0x20, 0x36, 0x71, 0xa3, 0x7f, 0x7a, 0x7b, 0x9d, 0xab, 0x5a, 0xcf, 0xf4, 0xae, 0xea, 0x8e, + 0x4b, 0xae, 0xee, 0x3f, 0xb5, 0x4d, 0x7c, 0xed, 0xa9, 0xab, 0x1d, 0x0a, 0xd3, 0x7c, 0x62, 0xac, + 0xf4, 0x5c, 0xc7, 0x77, 0xd0, 0xd3, 0x11, 0x8e, 0x95, 0xa0, 0x69, 0xf4, 0x4f, 0x6f, 0xaf, 0xb3, + 0x42, 0x71, 0xac, 0x50, 0x1c, 0x2b, 0x02, 0xc7, 0xd2, 0x8f, 0xc8, 0x74, 0x9d, 0x8e, 0x73, 0x95, + 0xa1, 0xda, 0xee, 0xef, 0xb0, 0x5f, 0xec, 0x07, 0xfb, 0x8f, 0x93, 0x58, 0x7a, 0x72, 0xef, 0xc3, + 0xde, 0x8a, 0xe9, 0xd0, 0xce, 0x5c, 0xd5, 0xfa, 0xbe, 0xe3, 0xe9, 0x9a, 0x65, 0xda, 0x9d, 0xab, + 0xfb, 0xa9, 0xde, 0x2c, 0xa9, 0x52, 0x55, 0xd1, 0xed, 0x81, 0x75, 0xdc, 0x6d, 0x4d, 0xcf, 0xaa, + 0xf3, 0x81, 0xa8, 0x4e, 0x57, 0xd3, 0x77, 0x4d, 0x9b, 0xb8, 0x87, 0xc1, 0x80, 0x5c, 0x75, 0x89, + 0xe7, 0xf4, 0x5d, 0x9d, 0x9c, 0xa8, 0x95, 0x77, 0xb5, 0x4b, 0x7c, 0x2d, 0x8b, 0xd6, 0xd5, 0xbc, + 0x56, 0x6e, 0xdf, 0xf6, 0xcd, 0x6e, 0x9a, 0xcc, 0x8f, 0xdd, 0xaf, 0x81, 0xa7, 0xef, 0x92, 0xae, + 0x96, 0x6a, 0xf7, 0xfe, 0xbc, 0x76, 0x7d, 0xdf, 0xb4, 0xae, 0x9a, 0xb6, 0xef, 0xf9, 0x6e, 0xb2, + 0x91, 0xfa, 0x34, 0x4c, 0x54, 0x0d, 0xc3, 0xb1, 0xd1, 0x93, 0x30, 0x45, 0x6c, 0x6d, 0xdb, 0x22, + 0xc6, 0xa2, 0xf2, 0x98, 0xf2, 0x44, 0xb9, 0x76, 0xee, 0x5b, 0x47, 0xcb, 0xef, 0x38, 0x3e, 0x5a, + 0x9e, 0x5a, 0xe5, 0xc5, 0x38, 0x80, 0xab, 0x3f, 0x57, 0x82, 0x49, 0xd6, 0xc8, 0x43, 0x3f, 0xab, + 0xc0, 0xf9, 0xbd, 0xfe, 0x36, 0x71, 0x6d, 0xe2, 0x13, 0xaf, 0xa1, 0x79, 0xbb, 0xdb, 0x8e, 0xe6, + 0x72, 0x14, 0x95, 0xa7, 0xaf, 0xaf, 0x9c, 0x7c, 0xf5, 0xac, 0xdc, 0x4c, 0xa3, 0xab, 0x3d, 0x74, + 0x7c, 0xb4, 0x7c, 0x3e, 0x03, 0x80, 0xb3, 0x88, 0xa3, 0x7d, 0x98, 0xb1, 0x3b, 0xa6, 0x7d, 0xd0, + 0xb4, 0x3b, 0x2e, 0xf1, 0xbc, 0xc5, 0x12, 0xeb, 0xcc, 0x8b, 0x45, 0x3a, 0xb3, 0x21, 0xe1, 0xa9, + 0xcd, 0x1f, 0x1f, 0x2d, 0xcf, 0xc8, 0x25, 0x38, 0x46, 0x47, 0xfd, 0xbc, 0x02, 0xe7, 0xaa, 0x46, + 0xd7, 0xf4, 0x3c, 0xd3, 0xb1, 0x5b, 0x56, 0xbf, 0x63, 0xda, 0xe8, 0x31, 0x18, 0xb7, 0xb5, 0x2e, + 0x61, 0x03, 0x32, 0x5d, 0x9b, 0x11, 0x63, 0x3a, 0xbe, 0xa1, 0x75, 0x09, 0x66, 0x10, 0xf4, 0x12, + 0x4c, 0xea, 0x8e, 0xbd, 0x63, 0x76, 0x44, 0x3f, 0x7f, 0x64, 0x85, 0xcf, 0xe3, 0x8a, 0x3c, 0x8f, + 0xac, 0x7b, 0x62, 0xfe, 0x57, 0xb0, 0x76, 0x67, 0xf5, 0xc0, 0x27, 0x36, 0x25, 0x53, 0x83, 0xe3, + 0xa3, 0xe5, 0xc9, 0x3a, 0x43, 0x80, 0x05, 0x22, 0xf5, 0x1a, 0x94, 0xab, 0x16, 0x71, 0x7d, 0xd3, + 0xee, 0xa0, 0x67, 0x61, 0x8e, 0x74, 0x35, 0xd3, 0xc2, 0x44, 0x27, 0xe6, 0x3e, 0x71, 0xbd, 0x45, + 0xe5, 0xb1, 0xb1, 0x27, 0xa6, 0x6b, 0xe8, 0xf8, 0x68, 0x79, 0x6e, 0x35, 0x06, 0xc1, 0x89, 0x9a, + 0xea, 0xa7, 0x15, 0xa8, 0x54, 0xfb, 0x86, 0xe9, 0x73, 0xfc, 0xc8, 0x85, 0x8a, 0x46, 0x7f, 0xb6, + 0x1c, 0xcb, 0xd4, 0x0f, 0xc5, 0x24, 0xbf, 0x50, 0x64, 0x5c, 0xab, 0x11, 0x9a, 0xda, 0xb9, 0xe3, + 0xa3, 0xe5, 0x8a, 0x54, 0x80, 0x65, 0x22, 0xea, 0x2e, 0xc8, 0x30, 0xf4, 0x71, 0x98, 0xe1, 0x1f, + 0xb9, 0xae, 0xf5, 0x30, 0xd9, 0x11, 0x7d, 0x78, 0x97, 0x34, 0x66, 0x01, 0xa1, 0x95, 0x5b, 0xdb, + 0xaf, 0x13, 0xdd, 0xc7, 0x64, 0x87, 0xb8, 0xc4, 0xd6, 0x09, 0x9f, 0xbe, 0xba, 0xd4, 0x18, 0xc7, + 0x50, 0xa9, 0xdf, 0x53, 0x60, 0xbe, 0xba, 0xaf, 0x99, 0x96, 0xb6, 0x6d, 0x5a, 0xa6, 0x7f, 0xf8, + 0xaa, 0x63, 0x93, 0x21, 0xe6, 0x6f, 0x0b, 0x1e, 0xea, 0xdb, 0x1a, 0x6f, 0x67, 0x91, 0x75, 0x3e, + 0x63, 0x9b, 0x87, 0x3d, 0x42, 0x17, 0x1e, 0x1d, 0xe9, 0x47, 0x8e, 0x8f, 0x96, 0x1f, 0xda, 0xca, + 0xae, 0x82, 0xf3, 0xda, 0x22, 0x0c, 0x97, 0x24, 0xd0, 0x6d, 0xc7, 0xea, 0x77, 0x05, 0xd6, 0x31, + 0x86, 0x75, 0xe9, 0xf8, 0x68, 0xf9, 0xd2, 0x56, 0x66, 0x0d, 0x9c, 0xd3, 0x52, 0xfd, 0x56, 0x09, + 0x66, 0x6a, 0x9a, 0xbe, 0xd7, 0xef, 0xd5, 0xfa, 0xfa, 0x1e, 0xf1, 0xd1, 0x27, 0xa0, 0x4c, 0xd9, + 0x96, 0xa1, 0xf9, 0x9a, 0x18, 0xc9, 0x1f, 0xcd, 0x5d, 0x7d, 0x6c, 0x12, 0x69, 0xed, 0x68, 0x6c, + 0xd7, 0x89, 0xaf, 0xd5, 0x90, 0x18, 0x13, 0x88, 0xca, 0x70, 0x88, 0x15, 0xed, 0xc0, 0xb8, 0xd7, + 0x23, 0xba, 0x58, 0xdb, 0x8d, 0x22, 0x6b, 0x45, 0xee, 0x71, 0xbb, 0x47, 0xf4, 0x68, 0x16, 0xe8, + 0x2f, 0xcc, 0xf0, 0x23, 0x1b, 0x26, 0x3d, 0x5f, 0xf3, 0xfb, 0x74, 0x78, 0x28, 0xa5, 0x6b, 0x23, + 0x53, 0x62, 0xd8, 0x6a, 0x73, 0x82, 0xd6, 0x24, 0xff, 0x8d, 0x05, 0x15, 0xf5, 0x0f, 0x15, 0x98, + 0x97, 0xab, 0xaf, 0x99, 0x9e, 0x8f, 0x7e, 0x22, 0x35, 0x9c, 0x2b, 0xc3, 0x0d, 0x27, 0x6d, 0xcd, + 0x06, 0x73, 0x5e, 0x90, 0x2b, 0x07, 0x25, 0xd2, 0x50, 0x12, 0x98, 0x30, 0x7d, 0xd2, 0xe5, 0xcb, + 0xaa, 0x20, 0x3f, 0x93, 0xbb, 0x5c, 0x9b, 0x15, 0xc4, 0x26, 0x9a, 0x14, 0x2d, 0xe6, 0xd8, 0xd5, + 0x4f, 0xc0, 0x05, 0xb9, 0x56, 0xcb, 0x75, 0xf6, 0x4d, 0x83, 0xb8, 0x74, 0x27, 0xf8, 0x87, 0xbd, + 0xd4, 0x4e, 0xa0, 0x2b, 0x0b, 0x33, 0x08, 0x7a, 0x0f, 0x4c, 0xba, 0xa4, 0x63, 0x3a, 0x36, 0x9b, + 0xed, 0xe9, 0x68, 0xec, 0x30, 0x2b, 0xc5, 0x02, 0xaa, 0xfe, 0xdf, 0x52, 0x7c, 0xec, 0xe8, 0x34, + 0xa2, 0x7d, 0x28, 0xf7, 0x04, 0x29, 0x31, 0x76, 0x37, 0x46, 0xfd, 0xc0, 0xa0, 0xeb, 0xd1, 0xa8, + 0x06, 0x25, 0x38, 0xa4, 0x85, 0x4c, 0x98, 0x0b, 0xfe, 0xaf, 0x8f, 0xc0, 0x86, 0x19, 0x3b, 0x6d, + 0xc5, 0x10, 0xe1, 0x04, 0x62, 0xb4, 0x09, 0xd3, 0x1e, 0xd1, 0x5d, 0x42, 0x79, 0x92, 0x58, 0xa6, + 0x99, 0x8c, 0xab, 0x1d, 0x54, 0x12, 0x8c, 0x6b, 0x41, 0x74, 0x7f, 0x3a, 0x04, 0xe0, 0x08, 0x11, + 0x7a, 0x02, 0xca, 0x1e, 0x21, 0x06, 0xe5, 0x48, 0x8b, 0xe3, 0x7c, 0x6e, 0xe8, 0xa7, 0xb6, 0x45, + 0x19, 0x0e, 0xa1, 0xea, 0xd7, 0xc7, 0x01, 0xa5, 0x97, 0xb8, 0x3c, 0x02, 0xbc, 0x44, 0x8c, 0xff, + 0x28, 0x23, 0x20, 0x76, 0x4b, 0x02, 0x31, 0xba, 0x0b, 0xb3, 0x96, 0xe6, 0xf9, 0xb7, 0x7a, 0x54, + 0x06, 0x09, 0x16, 0x4a, 0xe5, 0xe9, 0x6a, 0x91, 0x99, 0x5e, 0x93, 0x11, 0xd5, 0x16, 0x8e, 0x8f, + 0x96, 0x67, 0x63, 0x45, 0x38, 0x4e, 0x0a, 0xbd, 0x0e, 0xd3, 0xb4, 0x60, 0xd5, 0x75, 0x1d, 0x57, + 0x8c, 0xfe, 0xf3, 0x45, 0xe9, 0x32, 0x24, 0xb5, 0x59, 0x3a, 0x27, 0xe1, 0x4f, 0x1c, 0xa1, 0x47, + 0x1f, 0x03, 0xe4, 0x6c, 0x7b, 0xc4, 0xdd, 0x27, 0xc6, 0x75, 0x2e, 0x70, 0xd1, 0x8f, 0xa5, 0xb3, + 0x33, 0x56, 0x5b, 0x12, 0xb3, 0x89, 0x6e, 0xa5, 0x6a, 0xe0, 0x8c, 0x56, 0x68, 0x0f, 0x50, 0x28, + 0xb4, 0x85, 0x0b, 0x60, 0x71, 0x62, 0xf8, 0xe5, 0x73, 0x89, 0x12, 0xbb, 0x9e, 0x42, 0x81, 0x33, + 0xd0, 0xaa, 0xff, 0xb6, 0x04, 0x15, 0xbe, 0x44, 0x56, 0x6d, 0xdf, 0x3d, 0x7c, 0x00, 0x07, 0x04, + 0x89, 0x1d, 0x10, 0xf5, 0xe2, 0x7b, 0x9e, 0x75, 0x38, 0xf7, 0x7c, 0xe8, 0x26, 0xce, 0x87, 0xd5, + 0x51, 0x09, 0x0d, 0x3e, 0x1e, 0xbe, 0xab, 0xc0, 0x39, 0xa9, 0xf6, 0x03, 0x38, 0x1d, 0x8c, 0xf8, + 0xe9, 0xf0, 0xc2, 0x88, 0xdf, 0x97, 0x73, 0x38, 0x38, 0xb1, 0xcf, 0x62, 0x8c, 0xfb, 0x69, 0x80, + 0x6d, 0xc6, 0x4e, 0x36, 0x22, 0x39, 0x29, 0x9c, 0xf2, 0x5a, 0x08, 0xc1, 0x52, 0xad, 0x18, 0xcf, + 0x2a, 0x0d, 0xe4, 0x59, 0xff, 0x7d, 0x0c, 0x16, 0x52, 0xc3, 0x9e, 0xe6, 0x23, 0xca, 0x0f, 0x89, + 0x8f, 0x94, 0x7e, 0x18, 0x7c, 0x64, 0xac, 0x10, 0x1f, 0x19, 0xfa, 0x9c, 0x40, 0x2e, 0xa0, 0xae, + 0xd9, 0xe1, 0xcd, 0xda, 0xbe, 0xe6, 0xfa, 0x9b, 0x66, 0x97, 0x08, 0x8e, 0xf3, 0x57, 0x86, 0x5b, + 0xb2, 0xb4, 0x05, 0x67, 0x3c, 0xeb, 0x29, 0x4c, 0x38, 0x03, 0xbb, 0xfa, 0x3b, 0x0a, 0x8c, 0xd5, + 0x71, 0x13, 0xbd, 0x37, 0x26, 0x6f, 0x3f, 0x24, 0xcb, 0xdb, 0xf7, 0x8e, 0x96, 0xa7, 0xea, 0xb8, + 0x29, 0x89, 0xde, 0x7f, 0x5b, 0x81, 0x05, 0xdd, 0xb1, 0x7d, 0x8d, 0xf6, 0x02, 0xf3, 0x43, 0x29, + 0xd8, 0x00, 0x85, 0x44, 0xcd, 0x7a, 0x02, 0x59, 0xed, 0x61, 0xd1, 0x81, 0x85, 0x24, 0xc4, 0xc3, + 0x69, 0xca, 0xea, 0x16, 0x4c, 0xd7, 0x2d, 0xa7, 0x6f, 0x34, 0xed, 0x1d, 0xe7, 0x14, 0xe5, 0xa5, + 0x37, 0x15, 0x98, 0x61, 0x78, 0x5b, 0xae, 0xb3, 0x63, 0x5a, 0xe4, 0xed, 0x21, 0xb6, 0xcb, 0x3d, + 0xce, 0x63, 0xcb, 0x4c, 0x8c, 0x96, 0x2b, 0xbe, 0x4d, 0xc4, 0x68, 0xb9, 0xcb, 0x39, 0x9c, 0xf2, + 0xe7, 0xa6, 0xe2, 0x5f, 0xc6, 0x78, 0xe5, 0x13, 0x50, 0xd6, 0xb5, 0x5a, 0xdf, 0x36, 0xac, 0x70, + 0x5d, 0xd0, 0x5e, 0xd6, 0xab, 0xbc, 0x0c, 0x87, 0x50, 0x74, 0x17, 0x20, 0x32, 0x6d, 0x88, 0x69, + 0xb8, 0x36, 0x9a, 0x39, 0xa5, 0x4d, 0x7c, 0xdf, 0xb4, 0x3b, 0x5e, 0x34, 0xf5, 0x11, 0x0c, 0x4b, + 0xd4, 0xd0, 0x4f, 0xc2, 0xac, 0x18, 0xe4, 0x66, 0x57, 0xeb, 0x08, 0x8d, 0xb3, 0xe0, 0x48, 0xad, + 0x4b, 0x88, 0x6a, 0x17, 0x05, 0xe1, 0x59, 0xb9, 0xd4, 0xc3, 0x71, 0x6a, 0xe8, 0x10, 0x66, 0xba, + 0xb2, 0x16, 0x3d, 0x5e, 0xfc, 0x40, 0x93, 0x34, 0xea, 0xda, 0x05, 0x41, 0x7c, 0x26, 0xa6, 0x7f, + 0xc7, 0x48, 0x65, 0x28, 0x03, 0x13, 0x67, 0xa5, 0x0c, 0x10, 0x98, 0xe2, 0xdb, 0xdb, 0x5b, 0x9c, + 0x64, 0x1f, 0xf8, 0x6c, 0x91, 0x0f, 0xe4, 0x9c, 0x22, 0xb2, 0xd5, 0xf1, 0xdf, 0x1e, 0x0e, 0x70, + 0xa3, 0x7d, 0x98, 0xa1, 0x7c, 0xbd, 0x4d, 0x2c, 0xa2, 0xfb, 0x8e, 0xbb, 0x38, 0x55, 0xdc, 0x16, + 0xd6, 0x96, 0xf0, 0x70, 0x63, 0x8a, 0x5c, 0x82, 0x63, 0x74, 0x42, 0xee, 0x57, 0xce, 0xe5, 0x7e, + 0x7d, 0xa8, 0xec, 0x4b, 0x56, 0x8d, 0x69, 0x36, 0x08, 0x1f, 0x2d, 0xd2, 0xb1, 0xc8, 0xc4, 0x51, + 0x3b, 0x2f, 0x08, 0x55, 0x64, 0x73, 0x88, 0x4c, 0x47, 0x3d, 0x2a, 0xc3, 0x42, 0xdd, 0xea, 0x7b, + 0x3e, 0x71, 0xab, 0xc2, 0xd8, 0x4c, 0x5c, 0xf4, 0x19, 0x05, 0x2e, 0xb1, 0x7f, 0x1b, 0xce, 0x1d, + 0xbb, 0x41, 0x2c, 0xed, 0xb0, 0xba, 0x43, 0x6b, 0x18, 0xc6, 0xc9, 0x38, 0x50, 0xa3, 0x2f, 0xe4, + 0x08, 0x66, 0x9e, 0x69, 0x67, 0x62, 0xc4, 0x39, 0x94, 0xd0, 0x4f, 0x2b, 0xf0, 0x70, 0x06, 0xa8, + 0x41, 0x2c, 0xe2, 0x13, 0xc1, 0x03, 0x4e, 0xda, 0x8f, 0xcb, 0xc7, 0x47, 0xcb, 0x0f, 0xb7, 0xf3, + 0x90, 0xe2, 0x7c, 0x7a, 0xe8, 0xef, 0x28, 0xb0, 0x94, 0x01, 0xbd, 0xa6, 0x99, 0x56, 0xdf, 0x25, + 0x42, 0x8c, 0x3e, 0x69, 0x77, 0xae, 0x1c, 0x1f, 0x2d, 0x2f, 0xb5, 0x73, 0xb1, 0xe2, 0x01, 0x14, + 0xd1, 0xa7, 0xe0, 0x62, 0x08, 0xdd, 0xb2, 0x6d, 0x42, 0x0c, 0x62, 0x30, 0xc9, 0x64, 0xbc, 0x50, + 0x57, 0x1e, 0x3e, 0x3e, 0x5a, 0xbe, 0xd8, 0xce, 0x42, 0x88, 0xb3, 0xe9, 0xa0, 0x0e, 0x5c, 0x8e, + 0x00, 0xbe, 0x69, 0x99, 0x77, 0x19, 0xa6, 0xcd, 0x5d, 0x97, 0x78, 0xbb, 0x8e, 0x65, 0x30, 0x66, + 0xa1, 0xd4, 0xde, 0x79, 0x7c, 0xb4, 0x7c, 0xb9, 0x3d, 0xa8, 0x22, 0x1e, 0x8c, 0x07, 0x19, 0x30, + 0xe3, 0xe9, 0x9a, 0xdd, 0xb4, 0x7d, 0xe2, 0xee, 0x6b, 0xd6, 0xe2, 0x64, 0xa1, 0x0f, 0xe4, 0x5b, + 0x54, 0xc2, 0x83, 0x63, 0x58, 0xd1, 0x87, 0xa1, 0x4c, 0x0e, 0x7a, 0x9a, 0x6d, 0x10, 0xce, 0x16, + 0xa6, 0x6b, 0x8f, 0xd2, 0xc3, 0x68, 0x55, 0x94, 0xdd, 0x3b, 0x5a, 0x9e, 0x09, 0xfe, 0x5f, 0x77, + 0x0c, 0x82, 0xc3, 0xda, 0xe8, 0xaf, 0xc3, 0x85, 0xae, 0x76, 0xb0, 0xe1, 0x18, 0x84, 0x31, 0x39, + 0xca, 0xf3, 0xd8, 0x44, 0x94, 0x0b, 0xf5, 0x73, 0xf1, 0xf8, 0x68, 0xf9, 0xc2, 0x7a, 0x06, 0x3e, + 0x9c, 0x49, 0x85, 0x4e, 0x43, 0x57, 0x3b, 0xb8, 0xee, 0x6a, 0x3a, 0xd9, 0xe9, 0x5b, 0x9b, 0xc4, + 0xed, 0x9a, 0x36, 0x97, 0x26, 0x89, 0xee, 0xd8, 0x06, 0x65, 0x25, 0xca, 0x13, 0x13, 0x7c, 0x1a, + 0xd6, 0x07, 0x55, 0xc4, 0x83, 0xf1, 0xa0, 0x0f, 0xc0, 0x8c, 0xd9, 0xb1, 0x1d, 0x97, 0x6c, 0x6a, + 0xa6, 0xed, 0x7b, 0x8b, 0xc0, 0x0c, 0xaf, 0x6c, 0x58, 0x9b, 0x52, 0x39, 0x8e, 0xd5, 0x52, 0xff, + 0x97, 0x02, 0x15, 0xc1, 0x60, 0x98, 0x1c, 0xb8, 0x0d, 0x13, 0x3a, 0x95, 0x03, 0x04, 0x23, 0x79, + 0xbe, 0xb0, 0xbc, 0x41, 0xb1, 0x45, 0xc2, 0x06, 0x2b, 0xc2, 0x1c, 0x35, 0xda, 0xcf, 0x90, 0x16, + 0x6a, 0xa3, 0x49, 0x0b, 0x8c, 0xda, 0x7d, 0x24, 0x05, 0xf5, 0x68, 0x0c, 0xa6, 0xeb, 0x8e, 0x6d, + 0x98, 0x4c, 0xc3, 0x78, 0x2a, 0x26, 0xf1, 0x5e, 0x96, 0x79, 0xfe, 0xbd, 0xa3, 0xe5, 0xd9, 0xb0, + 0xa2, 0x74, 0x08, 0x3c, 0x13, 0xaa, 0xe5, 0x5c, 0x04, 0x7e, 0x67, 0x5c, 0x9f, 0xbe, 0x77, 0xb4, + 0x7c, 0x2e, 0x6c, 0x16, 0x57, 0xb1, 0xd1, 0x3e, 0x20, 0xaa, 0x28, 0x6d, 0xba, 0x9a, 0xed, 0x71, + 0xb4, 0x74, 0x09, 0x8e, 0x9d, 0x58, 0x4b, 0x09, 0xf5, 0xa8, 0xb5, 0x14, 0x36, 0x9c, 0x41, 0x01, + 0xbd, 0x0e, 0x73, 0xb4, 0x74, 0xab, 0x67, 0x68, 0x3e, 0x91, 0xf8, 0xcf, 0x89, 0x34, 0x23, 0x41, + 0x73, 0x6e, 0x2d, 0x86, 0x09, 0x27, 0x30, 0x73, 0x0d, 0x41, 0xf3, 0x1c, 0x9b, 0xb1, 0x96, 0x98, + 0x86, 0x40, 0x4b, 0xb1, 0x80, 0xa2, 0x27, 0x61, 0xaa, 0x4b, 0x3c, 0x4f, 0xeb, 0x10, 0xc6, 0x2b, + 0xa6, 0x23, 0x81, 0x60, 0x9d, 0x17, 0xe3, 0x00, 0x8e, 0xde, 0x07, 0x13, 0xba, 0x63, 0x10, 0x6f, + 0x71, 0x8a, 0xad, 0xe6, 0x4b, 0x6c, 0x2d, 0xd1, 0x82, 0x7b, 0x47, 0xcb, 0xd3, 0x4c, 0xeb, 0xa4, + 0xbf, 0x30, 0xaf, 0xa4, 0xfe, 0x02, 0x95, 0xcf, 0x13, 0x7a, 0xce, 0x10, 0x9a, 0xcd, 0x83, 0x33, + 0xaa, 0xaa, 0x5f, 0x2c, 0xc1, 0x05, 0xda, 0x43, 0xd7, 0xb1, 0x2c, 0x7a, 0x76, 0xf5, 0x2c, 0xe7, + 0xb0, 0x4b, 0xec, 0x07, 0x71, 0xb7, 0x11, 0x8c, 0x43, 0x29, 0x77, 0x1c, 0xba, 0xa9, 0x71, 0x18, + 0x2b, 0x32, 0x0e, 0xe1, 0x72, 0xb9, 0xcf, 0x58, 0xfc, 0x0f, 0x05, 0x16, 0xb3, 0xc6, 0xe2, 0x01, + 0x68, 0x55, 0xdd, 0xb8, 0x56, 0x75, 0xa3, 0xa8, 0xf6, 0x9d, 0xec, 0x7a, 0x8e, 0x76, 0xf5, 0x83, + 0x12, 0x5c, 0x8a, 0xaa, 0x37, 0x6d, 0xcf, 0xd7, 0x2c, 0x8b, 0xdb, 0x39, 0xce, 0x7e, 0xde, 0x7b, + 0x31, 0xe5, 0x78, 0x63, 0xb4, 0x4f, 0x95, 0xfb, 0x9e, 0x6b, 0xbd, 0x3c, 0x48, 0x58, 0x2f, 0x5b, + 0xa7, 0x48, 0x73, 0xb0, 0x21, 0xf3, 0x7f, 0x2b, 0xb0, 0x94, 0xdd, 0xf0, 0x01, 0x2c, 0x2a, 0x27, + 0xbe, 0xa8, 0x3e, 0x76, 0x7a, 0x5f, 0x9d, 0xb3, 0xac, 0xfe, 0x69, 0x29, 0xef, 0x6b, 0x99, 0xfa, + 0xbe, 0x03, 0xe7, 0xa8, 0x5e, 0xe5, 0xf9, 0xc2, 0xcc, 0x76, 0xb2, 0xfb, 0xe7, 0xc0, 0x98, 0x75, + 0x0e, 0xc7, 0x71, 0xe0, 0x24, 0x52, 0xb4, 0x01, 0x53, 0x54, 0x99, 0xa2, 0xf8, 0x4b, 0xc3, 0xe3, + 0x0f, 0x79, 0x7e, 0x9b, 0xb7, 0xc5, 0x01, 0x12, 0xf4, 0x13, 0x30, 0x6b, 0x84, 0x3b, 0xea, 0x3e, + 0x97, 0x4f, 0x49, 0xac, 0xcc, 0x20, 0xda, 0x90, 0x5b, 0xe3, 0x38, 0x32, 0xf5, 0xcf, 0x14, 0x78, + 0x74, 0xd0, 0xda, 0x42, 0x6f, 0x00, 0xe8, 0xc1, 0x21, 0xce, 0xdd, 0x0f, 0x8a, 0x8a, 0x41, 0x01, + 0x96, 0x68, 0x83, 0x86, 0x45, 0x1e, 0x96, 0x88, 0x64, 0xdc, 0x69, 0x95, 0xce, 0xe8, 0x4e, 0x4b, + 0xfd, 0x63, 0x45, 0x66, 0x45, 0xf2, 0xdc, 0xbe, 0xdd, 0x58, 0x91, 0xdc, 0xf7, 0x5c, 0x8b, 0xdd, + 0x7f, 0x2c, 0xc1, 0x63, 0xd9, 0x4d, 0xa4, 0xb3, 0xf7, 0x45, 0x98, 0xec, 0x71, 0x1f, 0x91, 0x31, + 0x76, 0x36, 0x3e, 0x41, 0x39, 0x0b, 0xf7, 0xe0, 0xb8, 0x77, 0xb4, 0xbc, 0x94, 0xc5, 0xe8, 0x85, + 0xef, 0x87, 0x68, 0x87, 0xcc, 0x84, 0xdd, 0x82, 0xcb, 0x58, 0xef, 0x1f, 0x92, 0xb9, 0x68, 0xdb, + 0xc4, 0x1a, 0xda, 0x54, 0xf1, 0x69, 0x05, 0xe6, 0x62, 0x2b, 0xda, 0x5b, 0x9c, 0x60, 0x6b, 0xb4, + 0xd0, 0x75, 0x42, 0x6c, 0xab, 0x44, 0x27, 0x77, 0xac, 0xd8, 0xc3, 0x09, 0x82, 0x09, 0x36, 0x2b, + 0x8f, 0xea, 0xdb, 0x8e, 0xcd, 0xca, 0x9d, 0xcf, 0x61, 0xb3, 0x3f, 0x5f, 0xca, 0xfb, 0x5a, 0xc6, + 0x66, 0xef, 0xc0, 0x74, 0xe0, 0x83, 0x17, 0xb0, 0x8b, 0x6b, 0xa3, 0xf6, 0x89, 0xa3, 0x8b, 0xae, + 0xd2, 0x83, 0x12, 0x0f, 0x47, 0xb4, 0xd0, 0x67, 0x15, 0x80, 0x68, 0x62, 0xc4, 0xa6, 0xda, 0x3c, + 0xbd, 0xe1, 0x90, 0xc4, 0x9a, 0x39, 0xba, 0xa5, 0xa5, 0x45, 0x21, 0xd1, 0x55, 0xbf, 0x51, 0x02, + 0x94, 0xee, 0x3b, 0x15, 0x37, 0xf7, 0x4c, 0xdb, 0x48, 0x8a, 0xdd, 0x37, 0x4d, 0xdb, 0xc0, 0x0c, + 0x32, 0x84, 0x40, 0xfa, 0x3c, 0x9c, 0xeb, 0x58, 0xce, 0xb6, 0x66, 0x59, 0x87, 0xc2, 0xad, 0x8f, + 0xed, 0xd0, 0x72, 0xed, 0x3c, 0x3d, 0x98, 0xae, 0xc7, 0x41, 0x38, 0x59, 0x17, 0xf5, 0x60, 0xde, + 0xa5, 0xca, 0xb1, 0x6e, 0x5a, 0x4c, 0x41, 0x71, 0xfa, 0x7e, 0x41, 0xeb, 0xcb, 0x85, 0xe3, 0xa3, + 0xe5, 0x79, 0x9c, 0xc0, 0x85, 0x53, 0xd8, 0xd1, 0xbb, 0x61, 0xaa, 0xe7, 0x9a, 0x5d, 0xcd, 0x3d, + 0x64, 0x2a, 0x50, 0xb9, 0x56, 0xa1, 0x27, 0x5c, 0x8b, 0x17, 0xe1, 0x00, 0xa6, 0x7e, 0x56, 0x81, + 0xa9, 0xba, 0xe3, 0x92, 0xc6, 0x46, 0x1b, 0x1d, 0x42, 0x45, 0x72, 0x23, 0x15, 0xfb, 0xa5, 0xe0, + 0x02, 0x62, 0x18, 0xab, 0x11, 0xb6, 0xc0, 0x59, 0x2d, 0x2c, 0xc0, 0x32, 0x2d, 0xb5, 0x45, 0x27, + 0x2e, 0xd9, 0x06, 0x3d, 0x0b, 0xe3, 0x5d, 0xc7, 0x08, 0xf4, 0xa5, 0xf7, 0x04, 0xd3, 0xb2, 0xee, + 0x18, 0x54, 0x2f, 0xbe, 0x94, 0x6e, 0xc1, 0xcc, 0x2d, 0xac, 0x8d, 0xfa, 0x35, 0x05, 0xc6, 0xe8, + 0x47, 0xa9, 0x30, 0x69, 0x38, 0x5d, 0xcd, 0xb4, 0x05, 0x16, 0xe6, 0xf6, 0xd7, 0x60, 0x25, 0x58, + 0x40, 0x50, 0x0f, 0xa6, 0x83, 0xb3, 0x69, 0xa4, 0x6b, 0xe0, 0xc6, 0x46, 0x3b, 0x74, 0x9d, 0x09, + 0x37, 0x4c, 0x50, 0xe2, 0xe1, 0x88, 0x88, 0xaa, 0xc1, 0x42, 0x63, 0xa3, 0xdd, 0xb4, 0x75, 0xab, + 0x6f, 0x90, 0xd5, 0x03, 0xf6, 0x87, 0x4e, 0x99, 0xc9, 0x4b, 0x84, 0xab, 0x21, 0x9b, 0x32, 0x51, + 0x09, 0x07, 0x30, 0x5a, 0x8d, 0xf0, 0x16, 0xc2, 0x4f, 0x8e, 0x55, 0x13, 0x48, 0x70, 0x00, 0x53, + 0xdf, 0x2c, 0x41, 0x45, 0xea, 0x10, 0xb2, 0x60, 0x8a, 0x7f, 0x6e, 0xe0, 0xa6, 0xb2, 0x5a, 0xf0, + 0x13, 0xe3, 0xbd, 0xe6, 0xd4, 0xf9, 0x80, 0x7a, 0x38, 0x20, 0x21, 0x2f, 0xbf, 0x52, 0xfe, 0xf2, + 0x43, 0x2b, 0x00, 0xdc, 0x21, 0x87, 0xdd, 0xae, 0xf2, 0x33, 0x8f, 0xed, 0xf0, 0x76, 0x58, 0x8a, + 0xa5, 0x1a, 0xe8, 0x51, 0xb1, 0x51, 0xf9, 0x3d, 0x6c, 0x39, 0xb1, 0x49, 0x77, 0x60, 0xe2, 0xae, + 0x63, 0x13, 0x4f, 0x5c, 0x3e, 0x9c, 0xd2, 0x07, 0x4e, 0x53, 0x36, 0xfc, 0x2a, 0xc5, 0x8b, 0x39, + 0x7a, 0xf5, 0x17, 0x15, 0x80, 0x86, 0xe6, 0x6b, 0xdc, 0x56, 0x3e, 0x84, 0xab, 0xe3, 0xa3, 0x31, + 0xfe, 0x52, 0x4e, 0x5d, 0x67, 0x8e, 0x7b, 0xe6, 0xdd, 0xe0, 0xf3, 0x43, 0xb9, 0x85, 0x63, 0x6f, + 0x9b, 0x77, 0x09, 0x66, 0x70, 0xf4, 0x5e, 0x98, 0x26, 0xb6, 0xee, 0x1e, 0xf6, 0x7c, 0x62, 0xb0, + 0x11, 0x28, 0xf3, 0x1b, 0xf0, 0xd5, 0xa0, 0x10, 0x47, 0x70, 0xf5, 0x29, 0x88, 0x0b, 0x9f, 0xf7, + 0xef, 0xa5, 0xba, 0x0f, 0xe5, 0x55, 0xdb, 0xe8, 0x39, 0xa6, 0xed, 0x0f, 0xf1, 0x4d, 0x97, 0x61, + 0xac, 0xef, 0x5a, 0xe2, 0x93, 0x2a, 0xa2, 0xc2, 0xd8, 0x16, 0x5e, 0xc3, 0xb4, 0x1c, 0x3d, 0x09, + 0x53, 0xbd, 0xbe, 0xdb, 0x73, 0xbc, 0xe0, 0xbb, 0x42, 0x29, 0xbb, 0xc5, 0x8b, 0x71, 0x00, 0x57, + 0xef, 0x29, 0x30, 0xbf, 0x7a, 0xd0, 0x33, 0x5d, 0xe6, 0x76, 0x49, 0x5c, 0x2a, 0x41, 0xd2, 0xf6, + 0xfb, 0xfc, 0x5f, 0xd1, 0x87, 0xb0, 0xbd, 0xa8, 0x81, 0x03, 0x38, 0xda, 0x81, 0x39, 0xc2, 0x9a, + 0xb3, 0xa3, 0x42, 0x0b, 0x4d, 0xfe, 0x27, 0x31, 0x2c, 0x71, 0xaf, 0xde, 0x18, 0x16, 0x9c, 0xc0, + 0x8a, 0xda, 0x30, 0xa7, 0x5b, 0x9a, 0xe7, 0x99, 0x3b, 0xa6, 0x1e, 0x39, 0x14, 0x4c, 0xd7, 0xde, + 0x4b, 0xdb, 0xd6, 0x63, 0x90, 0x7b, 0x47, 0xcb, 0x17, 0x45, 0x3f, 0xe3, 0x00, 0x9c, 0x40, 0xa1, + 0xfe, 0x8e, 0x02, 0xd3, 0xa1, 0xdc, 0xfc, 0x96, 0xb2, 0x10, 0xa1, 0x27, 0xa0, 0x6c, 0x98, 0x9e, + 0x7c, 0xd8, 0xb1, 0x4b, 0xd7, 0x86, 0x28, 0xc3, 0x21, 0x54, 0xf5, 0xa0, 0x7c, 0x5d, 0x6c, 0x2b, + 0xb4, 0x04, 0x25, 0x33, 0x38, 0x6b, 0x41, 0x7c, 0x40, 0xa9, 0xd9, 0xc0, 0x25, 0xd3, 0x08, 0x57, + 0x55, 0x29, 0x77, 0x55, 0x49, 0xd3, 0x3e, 0x36, 0x78, 0xda, 0xd5, 0x5f, 0x53, 0xa0, 0x72, 0xc3, + 0xdc, 0x26, 0x2e, 0x37, 0x3e, 0x33, 0xbe, 0x18, 0x73, 0xc4, 0xaf, 0x64, 0x39, 0xe1, 0xa3, 0x03, + 0x98, 0xf6, 0xf4, 0x5d, 0x62, 0xf4, 0xad, 0xd0, 0xe5, 0xa1, 0x90, 0xbb, 0xbd, 0x44, 0xba, 0x2d, + 0xf0, 0x49, 0x0e, 0x87, 0x01, 0x05, 0x1c, 0x11, 0x53, 0x3f, 0x09, 0xe7, 0x33, 0x1a, 0xa1, 0x65, + 0x98, 0xf0, 0x7c, 0xcd, 0xf5, 0xc5, 0x98, 0x31, 0x76, 0xc3, 0xfc, 0x3b, 0x30, 0x2f, 0x47, 0x0f, + 0xc3, 0x18, 0xb1, 0x0d, 0x31, 0x68, 0x53, 0x74, 0x97, 0xad, 0xda, 0x06, 0xa6, 0x65, 0x74, 0x8a, + 0x2c, 0x27, 0xb6, 0x18, 0xd9, 0x14, 0xad, 0x89, 0x32, 0x1c, 0x42, 0xd5, 0x7f, 0x36, 0x0e, 0x97, + 0x6f, 0x38, 0xae, 0x79, 0xd7, 0xb1, 0x7d, 0xcd, 0x6a, 0x39, 0x46, 0x74, 0x89, 0x27, 0xa6, 0xfb, + 0x73, 0x0a, 0x3c, 0xa4, 0xf7, 0xfa, 0x4d, 0xdb, 0xf4, 0x4d, 0x2d, 0xb8, 0x5b, 0x69, 0x11, 0xd7, + 0x74, 0x8a, 0xde, 0xe5, 0x31, 0x07, 0xee, 0x7a, 0x6b, 0x2b, 0x0b, 0x25, 0xce, 0xa3, 0xc5, 0xae, + 0x14, 0x0d, 0xe7, 0x8e, 0xcd, 0x3a, 0xd7, 0xf6, 0x99, 0x53, 0xf9, 0xdd, 0xe8, 0x13, 0x0b, 0x5e, + 0x29, 0x36, 0x32, 0x31, 0xe2, 0x1c, 0x4a, 0xe8, 0x53, 0x70, 0xd1, 0xe4, 0x9d, 0xc3, 0x44, 0x33, + 0x4c, 0x9b, 0x78, 0x1e, 0xbb, 0x58, 0x1b, 0xe5, 0xce, 0xac, 0x99, 0x85, 0x10, 0x67, 0xd3, 0x41, + 0xaf, 0x01, 0x78, 0x87, 0xb6, 0x2e, 0xc6, 0x7f, 0xa2, 0x10, 0x55, 0x7e, 0x92, 0x86, 0x58, 0xb0, + 0x84, 0x91, 0x1e, 0x26, 0xbe, 0x63, 0x11, 0x57, 0xb3, 0x75, 0x6e, 0xfb, 0x56, 0xf8, 0x61, 0xb2, + 0x19, 0x14, 0xe2, 0x08, 0xae, 0xfe, 0x63, 0x05, 0xa6, 0xc4, 0x63, 0x0d, 0xf4, 0x9e, 0x84, 0x40, + 0x15, 0x1a, 0xc0, 0x12, 0x42, 0xd5, 0x21, 0x33, 0x5e, 0x08, 0x59, 0x5c, 0x30, 0xa9, 0x42, 0x27, + 0xb2, 0x20, 0x1c, 0x09, 0xf6, 0x31, 0x23, 0x46, 0x20, 0xec, 0x4b, 0xc4, 0xd4, 0xaf, 0x2b, 0xb0, + 0x90, 0x6a, 0x35, 0x84, 0x1a, 0xf0, 0x00, 0xad, 0xef, 0x7f, 0x58, 0x01, 0xf6, 0x2e, 0xa7, 0xda, + 0x6a, 0xb6, 0x89, 0xbb, 0x1f, 0x6e, 0xc2, 0x2f, 0x29, 0x30, 0x1f, 0xdd, 0x13, 0x89, 0x5e, 0x28, + 0xc5, 0x9d, 0x89, 0x6e, 0x26, 0x70, 0xd5, 0x16, 0xc5, 0x77, 0xcf, 0x27, 0x21, 0x38, 0x45, 0x17, + 0x7d, 0x51, 0x81, 0x79, 0x2d, 0xfe, 0x2e, 0x27, 0x60, 0x99, 0x85, 0xfc, 0x4d, 0x13, 0x6f, 0x7c, + 0xa2, 0xbe, 0x24, 0x00, 0x1e, 0x4e, 0x91, 0x45, 0x1f, 0x80, 0x19, 0xad, 0x67, 0x56, 0xfb, 0x86, + 0x49, 0x6c, 0x3d, 0x7c, 0xcc, 0xc1, 0x4c, 0x14, 0xd5, 0x56, 0x33, 0x2c, 0xc7, 0xb1, 0x5a, 0xe1, + 0xc3, 0x1b, 0x31, 0x90, 0xe3, 0x23, 0x3e, 0xbc, 0x11, 0x63, 0x18, 0x3d, 0xbc, 0x11, 0x43, 0x27, + 0x13, 0x41, 0x3f, 0x0e, 0x0f, 0xf3, 0xb3, 0xa6, 0xa6, 0x79, 0xa6, 0x5e, 0xed, 0xfb, 0xbb, 0xc4, + 0xf6, 0x03, 0x89, 0x81, 0xeb, 0x62, 0xcc, 0xb9, 0x60, 0x35, 0xaf, 0x12, 0xce, 0x6f, 0x8f, 0x6c, + 0x00, 0xc7, 0x34, 0x74, 0xf1, 0x3d, 0xfc, 0x7e, 0xbb, 0x90, 0xef, 0xc7, 0xad, 0x66, 0xa3, 0x2e, + 0x3e, 0x87, 0xb1, 0x89, 0xe8, 0x37, 0x96, 0x28, 0xa0, 0x2f, 0x2b, 0x30, 0x2b, 0x16, 0xb9, 0xa0, + 0x39, 0xc5, 0xe6, 0xff, 0xd5, 0xa2, 0x8b, 0x31, 0xb1, 0xe0, 0x57, 0xb0, 0x8c, 0x9c, 0x7b, 0xd0, + 0x86, 0xde, 0x4e, 0x31, 0x18, 0x8e, 0xf7, 0x03, 0xfd, 0x5d, 0x05, 0x2e, 0x78, 0xc4, 0xdd, 0x37, + 0x75, 0x52, 0xd5, 0x75, 0xa7, 0x6f, 0x07, 0x93, 0x5c, 0x2e, 0xfe, 0x08, 0xa2, 0x9d, 0x81, 0x8f, + 0x5f, 0xb3, 0x67, 0x41, 0x70, 0x26, 0x7d, 0x7a, 0x7e, 0x9d, 0xbb, 0xa3, 0xf9, 0xfa, 0x6e, 0x5d, + 0xd3, 0x77, 0x99, 0xfc, 0xce, 0x6f, 0xd6, 0x0b, 0x6e, 0x9a, 0x97, 0xe3, 0xa8, 0xb8, 0xc1, 0x21, + 0x51, 0x88, 0x93, 0x04, 0x91, 0x07, 0x65, 0x97, 0xbc, 0xd1, 0x27, 0x1e, 0xbb, 0x7e, 0xa7, 0xc4, + 0x9b, 0x23, 0xcf, 0x18, 0x16, 0x08, 0xb9, 0x8c, 0x11, 0xfc, 0xc2, 0x21, 0x21, 0xd4, 0x81, 0xcb, + 0x7c, 0xe5, 0x56, 0x6d, 0xc7, 0x3e, 0xec, 0x3a, 0x7d, 0x2f, 0xb1, 0xfa, 0x2b, 0x6c, 0xf5, 0x33, + 0x07, 0x83, 0xd5, 0x41, 0x15, 0xf1, 0x60, 0x3c, 0xe8, 0x15, 0x28, 0x93, 0x7d, 0x62, 0xfb, 0x9b, + 0x9b, 0x6b, 0x8b, 0x33, 0x85, 0x8e, 0x46, 0xf6, 0x09, 0xab, 0x02, 0x07, 0x0e, 0xb1, 0x2d, 0xbd, + 0x08, 0x28, 0xbd, 0x22, 0xd1, 0x3c, 0x8c, 0xed, 0x11, 0xfe, 0x6e, 0x6f, 0x1a, 0xd3, 0x7f, 0xd1, + 0x05, 0x98, 0xd8, 0xd7, 0xac, 0x3e, 0x17, 0x65, 0xcb, 0x98, 0xff, 0x78, 0xb6, 0xf4, 0x61, 0x45, + 0xfd, 0xa6, 0x02, 0x17, 0x33, 0x87, 0x0d, 0x61, 0xb8, 0xc4, 0xfc, 0x32, 0xec, 0xf5, 0xbe, 0xaf, + 0xf9, 0xa6, 0xdd, 0x69, 0xda, 0x3b, 0x96, 0xd9, 0xd9, 0xe5, 0x92, 0xdf, 0x04, 0x97, 0x53, 0xd6, + 0x33, 0x6b, 0xe0, 0x9c, 0x96, 0xa8, 0x09, 0xe7, 0xbb, 0xda, 0x41, 0x0a, 0x61, 0x89, 0x21, 0x64, + 0xaf, 0x3f, 0xd7, 0xd3, 0x60, 0x9c, 0xd5, 0x46, 0xfd, 0xea, 0x04, 0x3c, 0x42, 0x3b, 0x1e, 0x1d, + 0x99, 0xeb, 0x9a, 0xad, 0x75, 0xde, 0x9a, 0x47, 0xd3, 0xaf, 0x29, 0xf0, 0xd0, 0x6e, 0xb6, 0x38, + 0x2b, 0x0e, 0xed, 0x97, 0x0a, 0x09, 0xf5, 0x83, 0x24, 0x64, 0xbe, 0x70, 0x07, 0x56, 0xc1, 0x79, + 0x9d, 0x42, 0x2f, 0xc2, 0xbc, 0xed, 0x18, 0xa4, 0xde, 0x6c, 0xe0, 0x75, 0xcd, 0xdb, 0x6b, 0x07, + 0x0a, 0xff, 0x04, 0xb7, 0xe8, 0x6d, 0x24, 0x60, 0x38, 0x55, 0x1b, 0xed, 0x03, 0xea, 0x39, 0xc6, + 0xea, 0xbe, 0xa9, 0x07, 0x2e, 0x15, 0xc5, 0xad, 0x88, 0xcc, 0xc3, 0xbc, 0x95, 0xc2, 0x86, 0x33, + 0x28, 0x30, 0x79, 0x9c, 0x76, 0x66, 0xdd, 0xb1, 0x4d, 0xdf, 0x71, 0x99, 0xdf, 0xcf, 0x48, 0x62, + 0x29, 0x5b, 0xe7, 0x1b, 0x99, 0x18, 0x71, 0x0e, 0x25, 0xf5, 0xff, 0x28, 0x70, 0x8e, 0x2e, 0x8b, + 0x96, 0xeb, 0x1c, 0x1c, 0xbe, 0x15, 0x17, 0xe4, 0x93, 0xc2, 0x56, 0xc9, 0xb5, 0xb4, 0x8b, 0x92, + 0x9d, 0x72, 0x9a, 0xf5, 0x39, 0x32, 0x4d, 0xca, 0x8a, 0xea, 0x58, 0xbe, 0xa2, 0xaa, 0xfe, 0x67, + 0x85, 0x8b, 0x88, 0x81, 0xa2, 0xf8, 0x96, 0xdc, 0x87, 0x1f, 0x82, 0x59, 0x5a, 0xb6, 0xae, 0x1d, + 0xb4, 0x1a, 0xb7, 0x1d, 0x2b, 0x70, 0x47, 0x62, 0x97, 0x9f, 0x37, 0x65, 0x00, 0x8e, 0xd7, 0x53, + 0x7f, 0xf9, 0x1c, 0xb0, 0x0a, 0x16, 0xf1, 0xdf, 0x8a, 0xdf, 0xf5, 0x14, 0x54, 0xf4, 0x5e, 0xbf, + 0x7e, 0xad, 0xfd, 0x52, 0xdf, 0xf1, 0x35, 0x61, 0xc3, 0x64, 0x72, 0x5f, 0xbd, 0xb5, 0x15, 0x14, + 0x63, 0xb9, 0x0e, 0xdd, 0xe1, 0x7a, 0xaf, 0x2f, 0x78, 0x66, 0x4b, 0xbe, 0xc5, 0x63, 0x3b, 0xbc, + 0xde, 0xda, 0x8a, 0xc1, 0x70, 0xaa, 0x36, 0xfa, 0x14, 0xcc, 0x10, 0xb1, 0xf9, 0x6e, 0x68, 0xae, + 0x21, 0xf6, 0x76, 0xe1, 0x83, 0x3b, 0x1c, 0xda, 0x60, 0x47, 0x73, 0x71, 0x79, 0x55, 0x22, 0x81, + 0x63, 0x04, 0x99, 0xe8, 0x2a, 0x7e, 0xd3, 0x99, 0x72, 0x8c, 0xe4, 0x66, 0x9f, 0x10, 0xa2, 0x6b, + 0x5e, 0x25, 0x9c, 0xdf, 0x1e, 0xfd, 0xaa, 0x02, 0x97, 0x42, 0xa8, 0x69, 0x9b, 0xdd, 0x7e, 0x17, + 0x13, 0xdd, 0xd2, 0xcc, 0xae, 0x90, 0x63, 0x5f, 0x3e, 0xb5, 0x0f, 0x8d, 0xa3, 0xe7, 0x0c, 0x27, + 0x1b, 0x86, 0x73, 0xba, 0x84, 0xbe, 0xae, 0xc0, 0x63, 0x01, 0xa8, 0x45, 0x35, 0xc9, 0xbe, 0x4b, + 0x22, 0x87, 0x36, 0x31, 0x24, 0x53, 0x85, 0xf8, 0xdf, 0xe3, 0xc7, 0x47, 0xcb, 0x8f, 0xad, 0xde, + 0x07, 0x37, 0xbe, 0x2f, 0x75, 0x79, 0xb9, 0xb4, 0x9d, 0x1d, 0x5f, 0x08, 0xbe, 0x67, 0xb5, 0x5c, + 0x28, 0x09, 0x1c, 0x23, 0x88, 0x7e, 0x5d, 0x81, 0x87, 0xe4, 0x02, 0x79, 0xb5, 0x70, 0x89, 0xf7, + 0x95, 0x53, 0xeb, 0x4c, 0x02, 0x3f, 0xb7, 0x2d, 0xe5, 0x00, 0x71, 0x5e, 0xaf, 0x28, 0xeb, 0xed, + 0xb2, 0x85, 0xc9, 0xa5, 0xe2, 0x09, 0xce, 0x7a, 0xf9, 0x5a, 0xf5, 0x70, 0x00, 0xa3, 0xca, 0x66, + 0xcf, 0x31, 0x5a, 0xa6, 0xe1, 0xad, 0x99, 0x5d, 0xd3, 0x67, 0x72, 0xeb, 0x18, 0x1f, 0x8e, 0x96, + 0x63, 0xb4, 0x9a, 0x0d, 0x5e, 0x8e, 0x63, 0xb5, 0x98, 0x1b, 0xba, 0xd9, 0xd5, 0x3a, 0xa4, 0xd5, + 0xb7, 0xac, 0x96, 0xeb, 0x30, 0x03, 0x44, 0x83, 0x68, 0x86, 0x65, 0xda, 0xa4, 0xa0, 0x9c, 0xca, + 0xb6, 0x5b, 0x33, 0x0f, 0x29, 0xce, 0xa7, 0x87, 0x56, 0x00, 0x76, 0x34, 0xd3, 0x6a, 0xdf, 0xd1, + 0x7a, 0xb7, 0xec, 0xc5, 0x59, 0xc6, 0xc0, 0x98, 0xa6, 0x77, 0x2d, 0x2c, 0xc5, 0x52, 0x0d, 0xba, + 0x9a, 0x28, 0x17, 0xc4, 0x84, 0x3f, 0x80, 0x5b, 0x9c, 0x3b, 0xa5, 0xd5, 0x14, 0x20, 0xe4, 0xc3, + 0x77, 0x53, 0x22, 0x81, 0x63, 0x04, 0xd1, 0xe7, 0x14, 0x98, 0xf3, 0x0e, 0x3d, 0x9f, 0x74, 0xc3, + 0x3e, 0x9c, 0x3b, 0xed, 0x3e, 0x30, 0xd3, 0x4c, 0x3b, 0x46, 0x04, 0x27, 0x88, 0x22, 0x0d, 0x1e, + 0x61, 0xa3, 0x7a, 0xbd, 0x7e, 0xc3, 0xec, 0xec, 0x86, 0xce, 0xe5, 0x2d, 0xe2, 0xea, 0xc4, 0xf6, + 0x17, 0xe7, 0xd9, 0xba, 0x59, 0x3e, 0x3e, 0x5a, 0x7e, 0xa4, 0x99, 0x5f, 0x0d, 0x0f, 0xc2, 0x81, + 0x5e, 0x83, 0x25, 0x01, 0x5e, 0x73, 0xee, 0xa4, 0x28, 0x2c, 0x30, 0x0a, 0xcc, 0xe3, 0xbf, 0x99, + 0x5b, 0x0b, 0x0f, 0xc0, 0x40, 0xb5, 0x02, 0x8f, 0xb8, 0xcc, 0xb2, 0x4a, 0xc2, 0xc5, 0xe3, 0x2d, + 0x22, 0xb6, 0x08, 0x98, 0x56, 0xd0, 0x4e, 0x83, 0x71, 0x56, 0x1b, 0xf5, 0xa8, 0xc4, 0xd5, 0x99, + 0xd4, 0x86, 0x44, 0xcf, 0xc3, 0xb9, 0x2e, 0xe9, 0x3a, 0xee, 0x61, 0x35, 0x08, 0x99, 0x21, 0x4c, + 0x6b, 0x4c, 0x43, 0x5d, 0x8f, 0x83, 0x70, 0xb2, 0x2e, 0x3d, 0x2e, 0xd9, 0x17, 0x5c, 0x6b, 0x47, + 0xed, 0x4b, 0xd1, 0x71, 0xd9, 0x4c, 0xc0, 0x70, 0xaa, 0x36, 0xaa, 0xc3, 0x82, 0x28, 0x6b, 0x52, + 0xa9, 0xd1, 0xbb, 0xe6, 0x92, 0xe0, 0xb2, 0x89, 0xca, 0x5f, 0x0b, 0xcd, 0x24, 0x10, 0xa7, 0xeb, + 0xd3, 0xaf, 0xa0, 0x3f, 0xe4, 0x5e, 0x8c, 0x47, 0x5f, 0xb1, 0x11, 0x07, 0xe1, 0x64, 0xdd, 0x40, + 0xac, 0x8f, 0x75, 0x61, 0x22, 0xfa, 0x8a, 0x8d, 0x04, 0x0c, 0xa7, 0x6a, 0xab, 0xff, 0x65, 0x1c, + 0xde, 0x35, 0xc4, 0x21, 0x86, 0xba, 0xd9, 0xc3, 0x7d, 0x1f, 0x96, 0xb2, 0x12, 0x38, 0x69, 0xac, + 0xbc, 0xd4, 0xd7, 0x6c, 0xdf, 0xf4, 0x0f, 0x87, 0x9c, 0x9e, 0x5e, 0xce, 0xf4, 0x9c, 0x9c, 0xde, + 0xb0, 0xd3, 0xe9, 0xe5, 0x4d, 0xe7, 0xc9, 0x49, 0x0e, 0x3f, 0xfd, 0xdd, 0xec, 0xe9, 0x2f, 0x38, + 0xaa, 0xf7, 0x5d, 0x2e, 0xbd, 0x9c, 0xe5, 0x52, 0x70, 0x54, 0x87, 0x58, 0x5e, 0x7f, 0x34, 0x0e, + 0x8f, 0x0f, 0x73, 0xa0, 0x16, 0x5c, 0x5f, 0x19, 0x47, 0xd6, 0x99, 0xae, 0xaf, 0x3c, 0x8f, 0x98, + 0x33, 0x5c, 0x5f, 0x19, 0x24, 0xcf, 0x7a, 0x7d, 0xe5, 0x8d, 0xea, 0x59, 0xad, 0xaf, 0xbc, 0x51, + 0x1d, 0x62, 0x7d, 0xfd, 0x69, 0xf2, 0x7c, 0x08, 0xcf, 0xd1, 0x26, 0x8c, 0xe9, 0xbd, 0x7e, 0x41, + 0x26, 0xc5, 0xae, 0x39, 0xeb, 0xad, 0x2d, 0x4c, 0x71, 0x20, 0x0c, 0x93, 0x7c, 0xfd, 0x14, 0x64, + 0x41, 0xcc, 0xe9, 0x87, 0x2f, 0x49, 0x2c, 0x30, 0xd1, 0xa1, 0x22, 0xbd, 0x5d, 0xd2, 0x25, 0xae, + 0x66, 0xb5, 0x7d, 0xc7, 0xd5, 0x3a, 0x45, 0xb9, 0x0d, 0x1b, 0xaa, 0xd5, 0x04, 0x2e, 0x9c, 0xc2, + 0x4e, 0x07, 0xa4, 0x67, 0x1a, 0x05, 0xf9, 0x0b, 0x1b, 0x90, 0x56, 0xb3, 0x81, 0x29, 0x0e, 0xf5, + 0x1f, 0x4c, 0x83, 0xf4, 0xb4, 0x88, 0xea, 0x6d, 0x9a, 0x65, 0x39, 0x77, 0x5a, 0xae, 0xb9, 0x6f, + 0x5a, 0xa4, 0x43, 0x8c, 0xf0, 0xed, 0x89, 0x27, 0x2e, 0xc3, 0x99, 0x20, 0x59, 0xcd, 0xab, 0x84, + 0xf3, 0xdb, 0x53, 0xbd, 0x7c, 0x41, 0x4f, 0x3e, 0xfc, 0x1c, 0xe5, 0x42, 0x2f, 0xf5, 0x8a, 0x94, + 0xef, 0xa7, 0x54, 0x31, 0x4e, 0x93, 0x45, 0x3f, 0xa5, 0x70, 0x83, 0x43, 0x68, 0x5d, 0x15, 0x73, + 0x76, 0xfd, 0x94, 0xee, 0x23, 0x22, 0xcb, 0x45, 0x64, 0xbf, 0x8d, 0x13, 0xa4, 0x9a, 0xe1, 0xc5, + 0xbd, 0x2c, 0x3b, 0xa9, 0x98, 0xd9, 0x5b, 0x45, 0xbb, 0x92, 0x63, 0x78, 0xe5, 0x97, 0xc7, 0x99, + 0x15, 0x70, 0x76, 0x47, 0xc2, 0x51, 0x0a, 0x4d, 0x47, 0x82, 0x09, 0x14, 0x1e, 0xa5, 0x84, 0x0d, + 0x2a, 0x1a, 0xa5, 0x10, 0x80, 0xe3, 0x04, 0x51, 0x0f, 0xa6, 0xf7, 0x02, 0x7b, 0x9d, 0xd0, 0xef, + 0xeb, 0x45, 0xa9, 0x4b, 0x46, 0x3f, 0x7e, 0x49, 0x1d, 0x16, 0xe2, 0x88, 0x08, 0xda, 0x85, 0xa9, + 0x3d, 0xce, 0x88, 0x84, 0x5e, 0x5e, 0x1d, 0x59, 0x6f, 0xe0, 0xea, 0xa1, 0x28, 0xc2, 0x01, 0x7a, + 0xd9, 0x49, 0xa5, 0x7c, 0x1f, 0xdf, 0xa4, 0xaf, 0x2a, 0x70, 0x71, 0x9f, 0xb8, 0xbe, 0xa9, 0x27, + 0xad, 0xd4, 0xd3, 0xc5, 0x75, 0x9b, 0xdb, 0x59, 0x08, 0xf9, 0x32, 0xc9, 0x04, 0xe1, 0xec, 0x2e, + 0x50, 0x4d, 0x87, 0x1b, 0x1b, 0xdb, 0xbe, 0xe6, 0x9b, 0xfa, 0xa6, 0xb3, 0x47, 0x6c, 0xfa, 0xb1, + 0x22, 0xac, 0x22, 0x30, 0xc6, 0xc1, 0x34, 0x9d, 0xd5, 0xfc, 0x6a, 0x78, 0x10, 0x0e, 0xf5, 0x07, + 0x0a, 0xa4, 0xcc, 0x6d, 0xe8, 0x67, 0x14, 0x98, 0xd9, 0x21, 0x9a, 0xdf, 0x77, 0xc9, 0x75, 0xcd, + 0x0f, 0x7d, 0x95, 0x6f, 0x9f, 0x86, 0x95, 0x6f, 0xe5, 0x9a, 0x84, 0x98, 0xdf, 0x27, 0x86, 0x01, + 0x0c, 0x64, 0x10, 0x8e, 0xf5, 0x60, 0xe9, 0x05, 0x58, 0x48, 0x35, 0x3c, 0xd1, 0xb5, 0xcf, 0xbf, + 0x14, 0xd6, 0xda, 0x64, 0x4c, 0xcd, 0xd7, 0x60, 0x42, 0x33, 0x8c, 0x30, 0x62, 0xd7, 0x33, 0xc5, + 0xee, 0xcd, 0x0d, 0xd9, 0x25, 0x9c, 0xfd, 0xc4, 0x1c, 0x2d, 0xba, 0x06, 0x48, 0x8b, 0x5d, 0x8e, + 0xad, 0x47, 0x1e, 0xb3, 0xcc, 0xca, 0x5f, 0x4d, 0x41, 0x71, 0x46, 0x0b, 0xf5, 0x39, 0x98, 0x8b, + 0xbf, 0x61, 0x3d, 0x81, 0x07, 0x9e, 0xfa, 0x37, 0x15, 0x40, 0xe9, 0x78, 0x19, 0xc8, 0x85, 0xb2, + 0xa8, 0x11, 0x4c, 0x71, 0x21, 0x43, 0x6e, 0xd2, 0x37, 0x30, 0xf2, 0xc9, 0x17, 0x05, 0x1e, 0x0e, + 0xe9, 0xa8, 0x7f, 0xa6, 0x40, 0x14, 0x12, 0x08, 0x7d, 0x10, 0x2a, 0x06, 0xf1, 0x74, 0xd7, 0xec, + 0xf9, 0xd1, 0x77, 0x84, 0xb1, 0x0e, 0x1a, 0x11, 0x08, 0xcb, 0xf5, 0x90, 0x0a, 0x93, 0xbe, 0xe6, + 0xed, 0x35, 0x1b, 0x42, 0x23, 0x65, 0xf2, 0xc3, 0x26, 0x2b, 0xc1, 0x02, 0x12, 0xbd, 0x07, 0x1d, + 0x1b, 0xe2, 0x3d, 0x28, 0xda, 0x39, 0x85, 0xc7, 0xaf, 0xe8, 0xfe, 0x0f, 0x5f, 0xd5, 0x3f, 0x28, + 0x41, 0x3c, 0x0a, 0x53, 0xd1, 0x21, 0x48, 0xbf, 0xd6, 0x2d, 0x9d, 0xd9, 0x6b, 0xdd, 0xf7, 0xb1, + 0x10, 0x86, 0x3c, 0xe6, 0x2c, 0xbf, 0x13, 0x93, 0x03, 0x0f, 0xf2, 0x88, 0xb1, 0x61, 0x0d, 0xf4, + 0x0c, 0xf3, 0x97, 0xf3, 0x03, 0x3d, 0xfd, 0x5d, 0xc1, 0xb6, 0xa0, 0x0c, 0x88, 0xdc, 0x13, 0xef, + 0x91, 0xc3, 0xef, 0x67, 0xa5, 0x98, 0xb7, 0x40, 0x1f, 0x14, 0xee, 0x95, 0x13, 0xb1, 0x37, 0xd3, + 0xc1, 0x43, 0xeb, 0x85, 0x58, 0xc3, 0xc8, 0xe7, 0x52, 0xfd, 0xb6, 0x02, 0x53, 0x22, 0xf8, 0xc9, + 0x10, 0x1e, 0x9a, 0x3b, 0x30, 0xc1, 0xf4, 0x80, 0x51, 0x44, 0xa4, 0xf6, 0xae, 0xe3, 0xf8, 0xb1, + 0x10, 0x30, 0xcc, 0x2d, 0x90, 0xfd, 0x8b, 0x39, 0x7a, 0xe6, 0x11, 0xe3, 0xea, 0xbb, 0xa6, 0x4f, + 0x74, 0x3f, 0x08, 0x2c, 0x11, 0x78, 0xc4, 0x48, 0xe5, 0x38, 0x56, 0x4b, 0xfd, 0xda, 0x38, 0x3c, + 0x26, 0x10, 0xa7, 0xe4, 0x86, 0x70, 0xe3, 0x1e, 0xc2, 0x79, 0x31, 0xb7, 0x0d, 0x57, 0x33, 0xc3, + 0xbb, 0xc6, 0x62, 0xfa, 0xa0, 0xb8, 0x85, 0x4e, 0xa1, 0xc3, 0x59, 0x34, 0x78, 0x88, 0x04, 0x56, + 0x7c, 0x83, 0x68, 0x96, 0xbf, 0x1b, 0xd0, 0x2e, 0x8d, 0x12, 0x22, 0x21, 0x8d, 0x0f, 0x67, 0x52, + 0x61, 0x77, 0x9d, 0x02, 0x50, 0x77, 0x89, 0x26, 0x5f, 0xb4, 0x8e, 0xe0, 0x7b, 0xb8, 0x9e, 0x89, + 0x11, 0xe7, 0x50, 0x62, 0x86, 0x35, 0xed, 0x80, 0xe9, 0xe9, 0x98, 0xf8, 0xae, 0xc9, 0x42, 0xf9, + 0xd0, 0x5d, 0xc1, 0x35, 0xeb, 0x38, 0x08, 0x27, 0xeb, 0xa2, 0x67, 0x61, 0x8e, 0xdd, 0x1d, 0x47, + 0x2f, 0x07, 0x27, 0xa2, 0xc0, 0xc5, 0x1b, 0x31, 0x08, 0x4e, 0xd4, 0x54, 0x7f, 0x45, 0x81, 0x19, + 0x79, 0xd9, 0x0d, 0xe1, 0x07, 0xde, 0x97, 0x98, 0xfc, 0x08, 0xee, 0xb4, 0x32, 0xd5, 0x61, 0xf8, + 0xfc, 0x6f, 0x94, 0xe0, 0x7c, 0x46, 0x1b, 0x76, 0x8b, 0x48, 0x12, 0x07, 0xc6, 0x28, 0xb7, 0x88, + 0xa9, 0xc3, 0x27, 0xbc, 0x45, 0x4c, 0x42, 0x70, 0x8a, 0x2e, 0xba, 0x0d, 0x63, 0xba, 0x6b, 0x8a, + 0x61, 0xf9, 0x50, 0x21, 0x5d, 0x09, 0x37, 0x23, 0xe7, 0xfa, 0x3a, 0x6e, 0x62, 0x8a, 0x10, 0x7d, + 0x08, 0x66, 0xe5, 0x4d, 0x1d, 0x9c, 0x41, 0x4c, 0x2a, 0x97, 0xf7, 0xbe, 0x87, 0xe3, 0xf5, 0xd4, + 0x3f, 0x19, 0x83, 0x8a, 0x14, 0xc6, 0x09, 0xad, 0x8f, 0xa2, 0xa3, 0x47, 0xfd, 0x0a, 0xf4, 0xf4, + 0x75, 0x18, 0xeb, 0xf4, 0xfa, 0x05, 0x95, 0xf4, 0x10, 0xdd, 0x75, 0x8a, 0xae, 0xd3, 0xeb, 0xa3, + 0xdb, 0xa1, 0xda, 0x5f, 0x4c, 0x31, 0x0f, 0x5d, 0x53, 0x13, 0xaa, 0x7f, 0xb0, 0xa8, 0xc7, 0x73, + 0x17, 0x75, 0x17, 0xa6, 0x3c, 0x61, 0x13, 0x98, 0x28, 0xfe, 0x0c, 0x4a, 0x1a, 0x69, 0x61, 0x03, + 0xe0, 0x0a, 0x45, 0x60, 0x22, 0x08, 0x68, 0x50, 0x79, 0xa3, 0xcf, 0x5c, 0xe9, 0x99, 0xa6, 0x54, + 0xe6, 0xf2, 0xc6, 0x16, 0x2b, 0xc1, 0x02, 0x92, 0x62, 0xf7, 0x53, 0x43, 0xb1, 0xfb, 0x2f, 0x94, + 0x00, 0xa5, 0xbb, 0x81, 0xde, 0x05, 0x13, 0xec, 0x1d, 0x82, 0xd8, 0xd7, 0x52, 0x70, 0x14, 0xcd, + 0xf3, 0x30, 0x87, 0xa1, 0xb6, 0x78, 0x97, 0x52, 0x6c, 0x3a, 0xd9, 0x65, 0xb9, 0xa0, 0x27, 0x3d, + 0x62, 0x09, 0xce, 0xcf, 0xb1, 0xdc, 0xf3, 0x73, 0x0b, 0xa6, 0xba, 0xa6, 0xcd, 0x1c, 0x64, 0x8a, + 0x99, 0x4a, 0xf8, 0x9d, 0x1e, 0x47, 0x81, 0x03, 0x5c, 0xea, 0x1f, 0x95, 0xe8, 0xd2, 0x37, 0x6d, + 0x9f, 0xd8, 0x9a, 0xad, 0x13, 0x74, 0x08, 0xa0, 0xf5, 0x7d, 0x87, 0x8b, 0x21, 0x62, 0x07, 0x34, + 0x8b, 0xcd, 0x72, 0x88, 0xb4, 0x1a, 0x22, 0xe4, 0x57, 0x6d, 0xd1, 0x6f, 0x2c, 0x11, 0xa3, 0xa4, + 0x7d, 0xb3, 0x4b, 0x5e, 0x36, 0x6d, 0xc3, 0xb9, 0x23, 0x86, 0x77, 0x54, 0xd2, 0x9b, 0x21, 0x42, + 0x4e, 0x3a, 0xfa, 0x8d, 0x25, 0x62, 0xe8, 0x15, 0x58, 0x64, 0x9a, 0x99, 0xcd, 0xe2, 0xea, 0x89, + 0xbe, 0x39, 0x96, 0x15, 0x9c, 0x70, 0x65, 0x16, 0xcb, 0x68, 0xb1, 0x9e, 0x53, 0x07, 0xe7, 0xb6, + 0x56, 0x7f, 0x5d, 0x81, 0x8b, 0x99, 0x43, 0x81, 0xae, 0xc3, 0x42, 0xe4, 0x5f, 0x21, 0xb3, 0xe4, + 0x72, 0x14, 0x26, 0xf2, 0x66, 0xb2, 0x02, 0x4e, 0xb7, 0x41, 0xeb, 0xa1, 0x58, 0x22, 0xb3, 0x7c, + 0xe1, 0x9c, 0xf1, 0x88, 0x40, 0x95, 0x75, 0x2a, 0xe0, 0xac, 0x76, 0xea, 0x8f, 0xc7, 0x3a, 0x1c, + 0x0d, 0x18, 0xdd, 0x1d, 0xdb, 0xa4, 0x13, 0x7a, 0xb8, 0x87, 0xbb, 0xa3, 0x46, 0x0b, 0x31, 0x87, + 0xa1, 0xcb, 0xf2, 0xab, 0x8c, 0x90, 0x77, 0x05, 0x2f, 0x33, 0x54, 0x1f, 0x40, 0xb8, 0x31, 0x99, + 0x76, 0x07, 0xed, 0x40, 0x59, 0x13, 0x89, 0x05, 0xc4, 0x52, 0xfb, 0x48, 0x21, 0x45, 0x50, 0xe0, + 0xe0, 0xee, 0x8b, 0xc1, 0x2f, 0x1c, 0xe2, 0x56, 0xff, 0x91, 0x02, 0x97, 0x28, 0x1b, 0x33, 0x82, + 0xc7, 0xaf, 0x61, 0x3c, 0x82, 0x21, 0x4e, 0xf2, 0x2e, 0x54, 0xdc, 0xa8, 0x99, 0x58, 0x97, 0x3f, + 0x26, 0xc7, 0x3a, 0x90, 0x9e, 0x6c, 0x52, 0x29, 0xa7, 0xee, 0x3a, 0x5e, 0x30, 0x39, 0xc9, 0xf0, + 0x07, 0xa1, 0x86, 0x21, 0xf5, 0x04, 0xcb, 0xf8, 0xd5, 0xcf, 0x94, 0x00, 0x36, 0x88, 0x7f, 0xc7, + 0x71, 0xf7, 0xe8, 0x10, 0xbd, 0xa5, 0x9e, 0x3e, 0x3d, 0x0a, 0xe3, 0x3d, 0xc7, 0xf0, 0x04, 0x97, + 0x62, 0x0f, 0xf6, 0x98, 0x87, 0x00, 0x2b, 0x45, 0xcb, 0x30, 0xc1, 0x0c, 0xe0, 0xe2, 0x00, 0x61, + 0xa2, 0x39, 0x15, 0xac, 0x3c, 0xcc, 0xcb, 0x79, 0xc8, 0x58, 0xe6, 0x1a, 0xec, 0x09, 0x5d, 0x43, + 0x84, 0x8c, 0xe5, 0x65, 0x38, 0x84, 0xaa, 0x9f, 0x19, 0x87, 0x58, 0x66, 0x8c, 0xc8, 0x5e, 0xa0, + 0x9c, 0x8d, 0xbd, 0xe0, 0x15, 0x58, 0xb4, 0x1c, 0xcd, 0xa8, 0x69, 0x16, 0x5d, 0xf4, 0x6e, 0x9b, + 0x4f, 0x87, 0x66, 0x77, 0xc2, 0xb4, 0x0b, 0x8c, 0x01, 0xac, 0xe5, 0xd4, 0xc1, 0xb9, 0xad, 0x91, + 0x1f, 0xe6, 0xe3, 0xe0, 0x61, 0x2f, 0xd7, 0x46, 0xcd, 0x1b, 0xb2, 0x22, 0x3b, 0x85, 0x87, 0x67, + 0x79, 0x3c, 0x65, 0x07, 0xfa, 0xbc, 0x02, 0x17, 0xc9, 0x81, 0x4f, 0x5c, 0x5b, 0xb3, 0x36, 0x5d, + 0x6d, 0x67, 0xc7, 0xd4, 0x85, 0xef, 0x15, 0x9f, 0x9c, 0xd6, 0xf1, 0xd1, 0xf2, 0xc5, 0xd5, 0xac, + 0x0a, 0xf7, 0x8e, 0x96, 0xdf, 0x9f, 0x4e, 0x8b, 0x13, 0xf8, 0x80, 0x67, 0x36, 0x61, 0x8b, 0x31, + 0x9b, 0xdc, 0xd2, 0x33, 0x50, 0x39, 0x81, 0xcb, 0xf0, 0xb4, 0x6c, 0x3b, 0x7a, 0x53, 0x81, 0x19, + 0xba, 0x7e, 0xd6, 0x1c, 0x5d, 0xb3, 0x1a, 0x1b, 0xed, 0x13, 0xe4, 0x94, 0x41, 0x6b, 0x70, 0x61, + 0xc7, 0x71, 0x75, 0xb2, 0x59, 0x6f, 0x6d, 0x3a, 0xc2, 0x84, 0xde, 0xd8, 0x68, 0x0b, 0xa6, 0xc8, + 0xf4, 0x9f, 0x6b, 0x19, 0x70, 0x9c, 0xd9, 0x0a, 0xdd, 0x82, 0x8b, 0x51, 0xf9, 0x56, 0xcf, 0xf3, + 0x5d, 0xa2, 0x75, 0x29, 0x3a, 0x7e, 0x36, 0x30, 0x13, 0xe3, 0xb5, 0xac, 0x0a, 0x38, 0xbb, 0x9d, + 0xfa, 0xf3, 0x93, 0x20, 0x3d, 0x2d, 0x38, 0x41, 0x1c, 0xd7, 0x5f, 0x52, 0xe0, 0x82, 0x6e, 0x99, + 0xc4, 0xf6, 0x13, 0x3e, 0xe4, 0x7c, 0xcf, 0x6f, 0x15, 0x7a, 0xf3, 0xd0, 0x23, 0x76, 0xb3, 0x51, + 0x77, 0x6c, 0x9b, 0xe8, 0x7e, 0x3d, 0x03, 0x39, 0x1f, 0xaf, 0x2c, 0x08, 0xce, 0xec, 0x0c, 0xfb, + 0x1e, 0x56, 0xde, 0x6c, 0xc8, 0xef, 0xef, 0xea, 0xa2, 0x0c, 0x87, 0x50, 0xf4, 0x14, 0x54, 0x3a, + 0xae, 0xd3, 0xef, 0x79, 0x75, 0xe6, 0xf1, 0xc6, 0x17, 0x27, 0x93, 0x91, 0xae, 0x47, 0xc5, 0x58, + 0xae, 0x43, 0x25, 0x3e, 0xfe, 0xb3, 0xe5, 0x92, 0x1d, 0xf3, 0x40, 0x70, 0x12, 0x26, 0xf1, 0x5d, + 0x97, 0xca, 0x71, 0xac, 0x16, 0x7a, 0x2f, 0x4c, 0x9b, 0x9e, 0xd7, 0x27, 0xee, 0x16, 0x5e, 0x13, + 0x41, 0xcd, 0x98, 0xcd, 0xbc, 0x19, 0x14, 0xe2, 0x08, 0x8e, 0x7e, 0x56, 0x81, 0x39, 0x97, 0xbc, + 0xd1, 0x37, 0x5d, 0x62, 0x30, 0xa2, 0x9e, 0x78, 0xdf, 0x81, 0x47, 0x7b, 0x53, 0xb2, 0x82, 0x63, + 0x48, 0xf9, 0x16, 0x0e, 0xcd, 0x41, 0x71, 0x20, 0x4e, 0xf4, 0x80, 0x0e, 0x95, 0x67, 0x76, 0x6c, + 0xd3, 0xee, 0x54, 0xad, 0x8e, 0xb7, 0x58, 0x66, 0x5c, 0x89, 0x8b, 0x93, 0x51, 0x31, 0x96, 0xeb, + 0x50, 0x85, 0xa8, 0xef, 0xd1, 0x4d, 0xd9, 0x25, 0x7c, 0x7c, 0xa7, 0x23, 0x37, 0xd4, 0x2d, 0x19, + 0x80, 0xe3, 0xf5, 0xa8, 0xb2, 0x1c, 0x14, 0x88, 0x51, 0x06, 0xfe, 0x0a, 0x9b, 0xf6, 0x73, 0x2b, + 0x06, 0xc1, 0x89, 0x9a, 0x4b, 0x55, 0x38, 0x9f, 0xf1, 0x99, 0x27, 0xda, 0xf9, 0xbf, 0x52, 0x82, + 0x77, 0xde, 0x77, 0x55, 0xa2, 0xbf, 0xa7, 0x40, 0x85, 0x1c, 0xf8, 0xae, 0x16, 0x3a, 0xc5, 0xd2, + 0x29, 0xda, 0x39, 0x93, 0x2d, 0xb0, 0xb2, 0x1a, 0x11, 0xe2, 0xd3, 0x16, 0x9e, 0xe4, 0x12, 0x04, + 0xcb, 0xfd, 0xa1, 0xea, 0x0b, 0x7f, 0xa3, 0x2f, 0x9b, 0x4b, 0x45, 0x6e, 0x04, 0x01, 0x59, 0xfa, + 0x28, 0xcc, 0x27, 0x31, 0x9f, 0x68, 0xa4, 0x7e, 0xa3, 0x04, 0x13, 0x2d, 0x4b, 0x7b, 0x20, 0xf1, + 0xe9, 0xfe, 0x5a, 0x2c, 0x38, 0x50, 0xa1, 0x88, 0x4b, 0xac, 0xab, 0xb9, 0x61, 0xc9, 0x3a, 0x89, + 0xb0, 0x64, 0x2f, 0x14, 0x27, 0x31, 0x38, 0x0a, 0xd9, 0xb7, 0x15, 0x98, 0x66, 0xf5, 0x1e, 0x40, + 0x34, 0x9c, 0xd7, 0xe2, 0xd1, 0x70, 0x9e, 0x29, 0xfc, 0x4d, 0x39, 0xc1, 0x6f, 0xbe, 0x1b, 0x7c, + 0x0b, 0x8b, 0x75, 0xf3, 0x71, 0x39, 0x27, 0x0c, 0xff, 0x98, 0x27, 0xb2, 0xc2, 0x72, 0xb1, 0x33, + 0x35, 0x15, 0x9b, 0x6b, 0x60, 0x62, 0x98, 0x2e, 0x4c, 0x13, 0x11, 0x07, 0x21, 0xf8, 0x98, 0x42, + 0xd2, 0x7a, 0x10, 0x4c, 0x21, 0x22, 0x17, 0x94, 0x78, 0x38, 0xa2, 0xa0, 0xfe, 0x8b, 0x12, 0x54, + 0xa4, 0xb9, 0xfc, 0x61, 0x44, 0xfd, 0xba, 0x96, 0x99, 0x2e, 0xa1, 0xc4, 0xbc, 0x5e, 0x2f, 0x9d, + 0x20, 0x55, 0x82, 0x0b, 0x15, 0x3d, 0x8a, 0xe0, 0x3a, 0xca, 0xe2, 0x96, 0x02, 0xc1, 0x0a, 0xb7, + 0xfb, 0xa8, 0x00, 0xcb, 0x44, 0xd4, 0xdf, 0x2a, 0xc1, 0x54, 0xcb, 0x75, 0xe8, 0x04, 0x3f, 0x00, + 0xd6, 0xa0, 0xc5, 0x58, 0x43, 0xb1, 0x7d, 0xcb, 0x3b, 0x9b, 0xcb, 0x1c, 0xcc, 0x04, 0x73, 0xa8, + 0x8e, 0x42, 0x64, 0x30, 0x7b, 0xf8, 0xf7, 0x0a, 0x54, 0x44, 0xcd, 0x07, 0xc0, 0x20, 0x3e, 0x11, + 0x67, 0x10, 0xcf, 0x8d, 0xf0, 0x5d, 0x39, 0x2c, 0xe2, 0xab, 0x0a, 0xcc, 0x8a, 0x1a, 0xeb, 0xa4, + 0xbb, 0x4d, 0x5c, 0x74, 0x0d, 0xa6, 0xbc, 0x3e, 0x9b, 0x48, 0xf1, 0x41, 0x8f, 0xc8, 0x4c, 0xc2, + 0xdd, 0xd6, 0x74, 0x96, 0xf9, 0x87, 0x57, 0x91, 0x22, 0x01, 0xf2, 0x02, 0x1c, 0x34, 0xa6, 0xda, + 0xa9, 0xeb, 0x58, 0xa9, 0xc8, 0x15, 0xd8, 0xb1, 0x08, 0x66, 0x10, 0xaa, 0x14, 0xd2, 0xbf, 0x81, + 0x2d, 0x96, 0x29, 0x85, 0x14, 0xec, 0x61, 0x5e, 0xae, 0x7e, 0x6e, 0x3c, 0x1c, 0x6c, 0xc6, 0xc1, + 0x6e, 0xc0, 0xb4, 0xee, 0x12, 0xcd, 0x27, 0x46, 0xed, 0x70, 0x98, 0xce, 0x31, 0x29, 0xae, 0x1e, + 0xb4, 0xc0, 0x51, 0x63, 0x2a, 0x30, 0xc9, 0x57, 0x7c, 0xa5, 0x48, 0xb6, 0xcc, 0xbd, 0xde, 0xfb, + 0x08, 0x4c, 0x38, 0x77, 0xec, 0xd0, 0x7d, 0x66, 0x20, 0x61, 0xf6, 0x29, 0xb7, 0x68, 0x6d, 0xcc, + 0x1b, 0xb1, 0xe8, 0x3e, 0x22, 0xb8, 0x0b, 0x17, 0x64, 0x2b, 0x59, 0x81, 0x5d, 0x90, 0x05, 0x53, + 0x5d, 0x36, 0x0d, 0x23, 0x05, 0x86, 0x8b, 0x4d, 0xa8, 0x1c, 0xa0, 0x97, 0x61, 0xc6, 0x01, 0x09, + 0x2a, 0xf8, 0x52, 0xe1, 0xcc, 0xeb, 0x69, 0x3a, 0x91, 0x05, 0xdf, 0x8d, 0xa0, 0x10, 0x47, 0x70, + 0x74, 0x08, 0x15, 0x1e, 0xde, 0x80, 0x73, 0xd9, 0xa9, 0xe2, 0x46, 0x5e, 0xd1, 0xbd, 0xcd, 0x08, + 0x1b, 0x1f, 0x7a, 0xa9, 0x00, 0xcb, 0xb4, 0xd4, 0x9f, 0x1e, 0x0f, 0x17, 0xa9, 0xe0, 0xf8, 0xd9, + 0xd9, 0x6a, 0x94, 0x42, 0xd9, 0x6a, 0xde, 0x0f, 0x13, 0xbd, 0x5d, 0xcd, 0x0b, 0x56, 0x6a, 0x10, + 0x4c, 0x7a, 0xa2, 0x45, 0x0b, 0xef, 0x1d, 0x2d, 0xcf, 0x08, 0xd2, 0xec, 0x37, 0xe6, 0x75, 0x51, + 0x1f, 0xce, 0x7b, 0xbe, 0x66, 0x91, 0xb6, 0x29, 0x0c, 0x61, 0x9e, 0xaf, 0x75, 0x7b, 0x05, 0x62, + 0x42, 0x73, 0xdf, 0xf2, 0x34, 0x2a, 0x9c, 0x85, 0x1f, 0x7d, 0x56, 0x81, 0x45, 0x56, 0x5e, 0xed, + 0xfb, 0x0e, 0x8f, 0x9e, 0x1f, 0x11, 0x3f, 0xf9, 0xfd, 0x38, 0x33, 0x5c, 0xb4, 0x73, 0xf0, 0xe1, + 0x5c, 0x4a, 0xe8, 0x93, 0x70, 0xd1, 0xd2, 0x3c, 0xbf, 0xaa, 0xfb, 0xe6, 0xbe, 0xe9, 0x1f, 0x46, + 0x5d, 0x38, 0x79, 0xe6, 0x1e, 0xa6, 0x20, 0xaf, 0x65, 0x21, 0xc3, 0xd9, 0x34, 0xd4, 0x3f, 0x55, + 0x00, 0xa5, 0x97, 0x10, 0xb2, 0xa0, 0x6c, 0x90, 0x1d, 0xad, 0x6f, 0xf9, 0x81, 0x08, 0x50, 0xe8, + 0x95, 0x7f, 0x84, 0x32, 0xe2, 0xcc, 0x0d, 0x81, 0x17, 0x87, 0x14, 0x90, 0x03, 0xd3, 0x77, 0x76, + 0x4d, 0x9f, 0x58, 0xa6, 0xe7, 0x0b, 0xee, 0x3c, 0x2a, 0xb9, 0x50, 0xe6, 0x79, 0x39, 0x40, 0x8c, + 0x23, 0x1a, 0xea, 0x17, 0xc6, 0xa0, 0x7c, 0x82, 0x04, 0x89, 0x7d, 0x40, 0x22, 0xbc, 0x07, 0x15, + 0x94, 0xc8, 0x28, 0xd6, 0x3f, 0x26, 0xce, 0xd4, 0x53, 0xc8, 0x70, 0x06, 0x01, 0xf4, 0x49, 0xb8, + 0x60, 0xda, 0x3b, 0xae, 0xe6, 0xf9, 0x6e, 0x9f, 0x5d, 0xa7, 0x8c, 0x12, 0x8b, 0x9a, 0x99, 0x16, + 0x9a, 0x19, 0xe8, 0x70, 0x26, 0x11, 0x44, 0x60, 0xea, 0x8e, 0xe3, 0xee, 0x51, 0xe6, 0x39, 0x5e, + 0x3c, 0xcf, 0xc9, 0xcb, 0x0c, 0x45, 0xc4, 0x35, 0xf9, 0x6f, 0x0f, 0x07, 0xb8, 0xd5, 0xdf, 0x53, + 0x60, 0x82, 0xbf, 0x5f, 0x7c, 0x5b, 0xe8, 0x55, 0xac, 0xab, 0xb9, 0x31, 0x56, 0xa9, 0xba, 0xc3, + 0x6a, 0xbc, 0x4d, 0xd4, 0x1d, 0xd6, 0xd7, 0x1c, 0x59, 0xe6, 0xf7, 0xc6, 0xc4, 0xb7, 0x30, 0x61, + 0xa1, 0x09, 0xe7, 0x85, 0xd0, 0xbb, 0x66, 0xee, 0x10, 0xba, 0xba, 0x1a, 0xda, 0xa1, 0x27, 0x02, + 0x07, 0x30, 0xae, 0x5b, 0x4f, 0x83, 0x71, 0x56, 0x1b, 0xf4, 0xcf, 0x15, 0x7a, 0x2c, 0xfb, 0xae, + 0xa9, 0x8f, 0x14, 0xb8, 0x34, 0xec, 0xdb, 0xca, 0x3a, 0x47, 0xc6, 0xad, 0x05, 0x5b, 0xd1, 0xf9, + 0xcc, 0x4a, 0xef, 0x1d, 0x2d, 0x2f, 0x67, 0x58, 0x59, 0x83, 0x5b, 0x01, 0x3a, 0xb0, 0x9f, 0xf9, + 0xde, 0xc0, 0x2a, 0xec, 0x86, 0x22, 0xe8, 0x31, 0xba, 0x01, 0x13, 0x9e, 0xee, 0xf4, 0xc8, 0x49, + 0x42, 0x31, 0x87, 0x03, 0xdc, 0xa6, 0x2d, 0x31, 0x47, 0xb0, 0xf4, 0x3a, 0xcc, 0xc8, 0x3d, 0xcf, + 0xb0, 0x46, 0x34, 0x64, 0x6b, 0xc4, 0x89, 0xef, 0x21, 0x65, 0xeb, 0xc5, 0x6f, 0x97, 0x40, 0x24, + 0x27, 0x1b, 0xe2, 0x1e, 0xc6, 0x0c, 0xc2, 0x18, 0x8e, 0x90, 0x90, 0x2d, 0x99, 0x8f, 0x39, 0x1a, + 0x03, 0x39, 0x92, 0x21, 0xb2, 0x61, 0xd2, 0xd2, 0xb6, 0x89, 0x15, 0xa4, 0xaa, 0xba, 0x56, 0x3c, + 0x97, 0x12, 0x0f, 0x1e, 0xec, 0x25, 0xac, 0xf5, 0xbc, 0x10, 0x0b, 0x2a, 0x4b, 0xcf, 0x40, 0x45, + 0xaa, 0x76, 0x22, 0x03, 0xd0, 0x97, 0x15, 0xb8, 0x14, 0x2c, 0x89, 0x78, 0xf8, 0x13, 0xf4, 0x04, + 0x94, 0xb5, 0x9e, 0xc9, 0x6c, 0xa2, 0xb2, 0x55, 0xb9, 0xda, 0x6a, 0xb2, 0x32, 0x1c, 0x42, 0xd1, + 0xfb, 0xa0, 0x1c, 0xcc, 0x93, 0x10, 0x90, 0xc2, 0x2d, 0x1e, 0xde, 0x53, 0x85, 0x35, 0xd0, 0xbb, + 0xa5, 0xc0, 0x8c, 0x13, 0xd1, 0x89, 0x16, 0x12, 0xe6, 0x57, 0xda, 0xea, 0x17, 0xc7, 0x60, 0x96, + 0x1b, 0x12, 0x6a, 0xa6, 0x6d, 0x98, 0x76, 0xe7, 0x01, 0xb0, 0xd2, 0x58, 0x4a, 0xdc, 0xd2, 0x69, + 0xa5, 0xc4, 0xbd, 0x09, 0x93, 0x6f, 0xd0, 0x6d, 0x1d, 0x2c, 0x87, 0xa1, 0x76, 0x57, 0x38, 0xd7, + 0x8c, 0x23, 0x78, 0x58, 0xa0, 0x40, 0x9e, 0x94, 0x98, 0x78, 0x84, 0x97, 0xec, 0xb1, 0x91, 0x0d, + 0xc3, 0xab, 0xce, 0x64, 0x67, 0x25, 0x56, 0xff, 0x93, 0x02, 0x0b, 0xb1, 0x16, 0x0f, 0xe0, 0x24, + 0xd8, 0x89, 0x9f, 0x04, 0xd5, 0x91, 0xbf, 0x32, 0xe7, 0x44, 0x78, 0x06, 0x2e, 0x66, 0x0e, 0xc6, + 0xfd, 0x05, 0x28, 0xf5, 0x1b, 0x25, 0x18, 0x6f, 0x13, 0x62, 0x3c, 0x80, 0x95, 0xf9, 0x5a, 0xec, + 0x90, 0xff, 0x48, 0xe1, 0x84, 0x69, 0x79, 0xe6, 0x91, 0x9d, 0x84, 0x79, 0xe4, 0xa3, 0x85, 0x29, + 0x0c, 0xb6, 0x8d, 0xfc, 0x42, 0x09, 0x80, 0x56, 0xe3, 0x49, 0x54, 0x85, 0x8f, 0x6a, 0x94, 0x66, + 0x7b, 0xfa, 0xad, 0x92, 0x1c, 0x5b, 0x0d, 0x93, 0x61, 0x8e, 0x45, 0xc6, 0xf7, 0x78, 0x22, 0xcc, + 0x38, 0xb7, 0x18, 0x3f, 0x25, 0x6e, 0xa1, 0xfe, 0x13, 0x05, 0x58, 0xca, 0x84, 0xc6, 0x46, 0x1b, + 0x7d, 0x08, 0x66, 0x4d, 0x7e, 0x6b, 0xdb, 0x90, 0x83, 0x03, 0xb2, 0x0b, 0x98, 0xa6, 0x0c, 0xc0, + 0xf1, 0x7a, 0xa8, 0x2b, 0x8d, 0xeb, 0x08, 0xa9, 0x8c, 0x45, 0x3f, 0xee, 0xcb, 0x1f, 0xbe, 0x57, + 0x82, 0x73, 0x89, 0xba, 0x43, 0xe8, 0x1f, 0x67, 0xc3, 0x6d, 0xa5, 0x88, 0xcc, 0x63, 0x67, 0x1f, + 0x91, 0x39, 0x0c, 0x8e, 0x3c, 0x7e, 0xb6, 0xc1, 0x91, 0x7f, 0x57, 0x01, 0x96, 0x1b, 0xf7, 0x01, + 0x30, 0xde, 0xbf, 0x1a, 0x67, 0xbc, 0x1f, 0x2e, 0xba, 0x70, 0x72, 0xf8, 0xed, 0xaf, 0x96, 0x80, + 0xa5, 0x3f, 0x10, 0x4e, 0x2a, 0x92, 0xdf, 0x87, 0x92, 0xe3, 0xf7, 0xf1, 0x98, 0x70, 0x1b, 0x49, + 0x58, 0x09, 0x25, 0xd7, 0x91, 0xf7, 0x49, 0x9e, 0x21, 0x63, 0x71, 0x36, 0x92, 0xf6, 0x0e, 0x41, + 0x77, 0x61, 0xd6, 0xdb, 0x75, 0x1c, 0x3f, 0x50, 0xd9, 0xc5, 0xdc, 0x55, 0x0b, 0xbb, 0x94, 0x07, + 0x9f, 0xc2, 0x37, 0x66, 0x5b, 0xc6, 0x8d, 0xe3, 0xa4, 0xd0, 0x0a, 0xc0, 0xb6, 0xe5, 0xe8, 0x7b, + 0xf5, 0x66, 0x03, 0x07, 0x2e, 0xc4, 0xcc, 0xb3, 0xac, 0x16, 0x96, 0x62, 0xa9, 0x86, 0xfa, 0xaf, + 0x15, 0x3e, 0x5a, 0x27, 0xd8, 0x56, 0x0f, 0x90, 0x4b, 0xbe, 0x27, 0xc1, 0x25, 0xf3, 0x52, 0x06, + 0xff, 0x96, 0xf8, 0x8a, 0x30, 0xc9, 0x45, 0x0f, 0x66, 0x2d, 0x39, 0x2b, 0x86, 0x58, 0xc6, 0x85, + 0x12, 0x6a, 0x84, 0x81, 0x0d, 0x63, 0xc5, 0x38, 0x4e, 0x80, 0xb2, 0xd2, 0xa0, 0xf3, 0x3c, 0xc3, + 0x67, 0x29, 0x72, 0xee, 0x6d, 0xc9, 0x00, 0x1c, 0xaf, 0xa7, 0xfe, 0xfd, 0x12, 0x5c, 0xe6, 0x7d, + 0x67, 0x6e, 0xfc, 0x0d, 0xd2, 0x23, 0xb6, 0x41, 0x6c, 0xfd, 0x90, 0x89, 0xcb, 0x86, 0xd3, 0x41, + 0x7f, 0x43, 0x81, 0x72, 0x70, 0xf1, 0x24, 0x3e, 0xe4, 0xe3, 0xc5, 0x33, 0x9a, 0xe6, 0x50, 0x09, + 0xaf, 0xbd, 0x78, 0x8c, 0x3d, 0xf1, 0x0b, 0x87, 0x84, 0xd1, 0x1d, 0x98, 0xe8, 0xb9, 0xce, 0x76, + 0xa0, 0x56, 0xdd, 0x3e, 0xf5, 0x1e, 0xb4, 0x28, 0x76, 0xbe, 0x3d, 0xd9, 0xbf, 0x98, 0xd3, 0x53, + 0x31, 0xbc, 0x7b, 0xa8, 0x9e, 0x9f, 0xc0, 0xff, 0x46, 0xbd, 0x05, 0xea, 0xfd, 0xfb, 0x72, 0x12, + 0x84, 0x2f, 0xc1, 0xe3, 0x12, 0xc2, 0xd5, 0x03, 0x9d, 0x78, 0x5e, 0x5d, 0xeb, 0x69, 0x3a, 0x55, + 0x29, 0xd9, 0xdb, 0x6a, 0x6e, 0xe8, 0x3d, 0x01, 0xca, 0xff, 0xa7, 0xc0, 0xb2, 0x84, 0x33, 0xe6, + 0xdb, 0x15, 0xb0, 0x9a, 0xaf, 0x29, 0x50, 0xd1, 0x6c, 0xdb, 0xf1, 0x35, 0xf9, 0xde, 0xd1, 0x18, + 0x71, 0x6e, 0xb2, 0x48, 0xad, 0x54, 0x23, 0x32, 0x09, 0x0f, 0x03, 0x09, 0x82, 0xe5, 0xde, 0x2c, + 0x7d, 0x14, 0xe6, 0x93, 0xad, 0x4e, 0xa4, 0x3c, 0xd6, 0xe1, 0x92, 0xd4, 0x2b, 0x76, 0x97, 0x51, + 0xdf, 0x25, 0xfa, 0x9e, 0x77, 0x92, 0x61, 0xac, 0x51, 0xf9, 0x3b, 0x44, 0x22, 0x9e, 0xba, 0x52, + 0x75, 0xef, 0x49, 0x98, 0xda, 0x37, 0x3d, 0x33, 0x08, 0x99, 0x20, 0xe1, 0xb8, 0xcd, 0x8b, 0x71, + 0x00, 0x57, 0x5f, 0x84, 0xf3, 0x32, 0x0e, 0xc6, 0x71, 0x4f, 0xe4, 0xf0, 0xa5, 0xae, 0xc3, 0x63, + 0x12, 0x86, 0xcc, 0xf7, 0x9e, 0x27, 0x41, 0xf7, 0xb5, 0x72, 0xc0, 0xf0, 0xc4, 0xdb, 0x9f, 0xdf, + 0x54, 0xe0, 0x61, 0x92, 0xb7, 0xea, 0x04, 0xd3, 0x78, 0x65, 0xc4, 0x65, 0x91, 0xbb, 0xaa, 0x45, + 0x78, 0xb1, 0x3c, 0x30, 0xce, 0xef, 0x19, 0x3a, 0x04, 0xf0, 0xc2, 0x29, 0x19, 0xc5, 0xa9, 0x3a, + 0x73, 0x8e, 0x45, 0x2c, 0xed, 0xf0, 0x37, 0x96, 0x88, 0xa1, 0x37, 0xa0, 0xec, 0x89, 0x99, 0x1c, + 0xe5, 0x39, 0x7a, 0xc6, 0xc2, 0x10, 0x7e, 0xa3, 0xe2, 0x17, 0x0e, 0xc9, 0xa0, 0x5f, 0x54, 0xe0, + 0x82, 0x95, 0xb1, 0xb9, 0x84, 0x84, 0xd0, 0x3e, 0x83, 0x7d, 0xcb, 0x2d, 0xd8, 0x59, 0x10, 0x9c, + 0xd9, 0x15, 0xf4, 0xcb, 0xb9, 0x6f, 0x9f, 0x27, 0x8a, 0x27, 0x08, 0xba, 0xdf, 0xda, 0x2f, 0xf0, + 0x0c, 0xfa, 0x27, 0xa1, 0xe2, 0x44, 0x1c, 0x41, 0x3c, 0x56, 0xff, 0xd8, 0x88, 0x9d, 0x93, 0x78, + 0x0c, 0xbf, 0x0f, 0x94, 0x0a, 0xb0, 0x4c, 0x0f, 0x7d, 0x45, 0x01, 0x64, 0xa4, 0xce, 0x0d, 0x71, + 0x25, 0xf9, 0xd2, 0xa9, 0x1f, 0x8e, 0xfc, 0x06, 0x24, 0x5d, 0x8e, 0x33, 0x3a, 0xa1, 0x7e, 0x79, + 0x8a, 0x0b, 0xf3, 0xcc, 0x06, 0xbd, 0x0d, 0x93, 0xdb, 0x4c, 0x19, 0x16, 0x5c, 0xa0, 0xb0, 0xe6, + 0xcd, 0x55, 0x6a, 0xae, 0xa9, 0xf2, 0xff, 0xb1, 0xc0, 0x8c, 0x5e, 0x85, 0x31, 0xc3, 0x0e, 0x92, + 0xce, 0x3d, 0x37, 0x82, 0x26, 0x18, 0xb9, 0xe4, 0xd3, 0x8d, 0x43, 0x91, 0x22, 0x1b, 0xca, 0xb6, + 0x90, 0x7f, 0xc5, 0x36, 0x2d, 0x9c, 0xce, 0x3d, 0x94, 0xa3, 0x43, 0xe9, 0x3d, 0x28, 0xc1, 0x21, + 0x0d, 0x4a, 0x2f, 0x61, 0x00, 0x2b, 0x4c, 0x2f, 0xd4, 0x6b, 0x07, 0x19, 0x1d, 0x5a, 0xb2, 0x96, + 0x3a, 0x31, 0xbc, 0x96, 0x3a, 0x9b, 0xab, 0xa1, 0x12, 0x98, 0xf4, 0x79, 0x0a, 0xe7, 0xc9, 0xe2, + 0x6e, 0x48, 0xb4, 0xff, 0x2c, 0xc5, 0x73, 0x24, 0x74, 0x8b, 0xfc, 0xcf, 0x02, 0x39, 0x5d, 0x58, + 0x3c, 0xd3, 0xbc, 0x58, 0xf4, 0x85, 0x17, 0x16, 0x4f, 0x99, 0xc3, 0x17, 0x16, 0xff, 0x1f, 0x0b, + 0xcc, 0xe8, 0x75, 0xaa, 0x78, 0xf1, 0x23, 0x4e, 0x04, 0x4a, 0x7c, 0x71, 0xc4, 0xad, 0xe5, 0x05, + 0x4e, 0xfd, 0xfc, 0x17, 0x0e, 0xf1, 0xa3, 0x6d, 0x98, 0x12, 0x46, 0x0e, 0x11, 0xe5, 0xe1, 0xb9, + 0x11, 0xf2, 0x1e, 0x04, 0x59, 0xa0, 0xf8, 0x33, 0xe8, 0x00, 0xb1, 0xfa, 0x1f, 0xa6, 0xb9, 0x79, + 0x4a, 0xb8, 0x10, 0xec, 0x40, 0x39, 0x40, 0x37, 0xca, 0x03, 0x93, 0x20, 0x8b, 0x0b, 0xff, 0xb4, + 0xe0, 0x17, 0x0e, 0x71, 0xa3, 0x7a, 0xd6, 0x5b, 0x9e, 0x28, 0xe6, 0xed, 0x70, 0xef, 0x78, 0xe2, + 0x1e, 0x6e, 0x63, 0x0f, 0xc2, 0xc3, 0x2d, 0xdb, 0xc5, 0x62, 0xbc, 0x90, 0x8b, 0xc5, 0xf3, 0x70, + 0x2e, 0x70, 0x40, 0x33, 0x08, 0xbb, 0xea, 0x11, 0xae, 0xd9, 0xec, 0x7d, 0x6e, 0x3d, 0x0e, 0xc2, + 0xc9, 0xba, 0xe8, 0xb7, 0x15, 0x28, 0xeb, 0x42, 0x80, 0x11, 0xfb, 0x6a, 0x6d, 0x34, 0x1b, 0xe6, + 0x4a, 0x20, 0x0f, 0x71, 0x71, 0xfa, 0x76, 0xc0, 0x23, 0x82, 0xe2, 0x53, 0xba, 0x83, 0x0b, 0x7b, + 0x8d, 0xfe, 0x1d, 0x55, 0x16, 0x2c, 0x96, 0x5b, 0x86, 0xbd, 0x5a, 0xe4, 0x3e, 0xe3, 0xb7, 0x46, + 0xfc, 0x8a, 0x6a, 0x84, 0x91, 0x7f, 0xc8, 0xc7, 0x43, 0xbd, 0x20, 0x82, 0x9c, 0xd2, 0xb7, 0xc8, + 0xdd, 0x47, 0xff, 0x50, 0x81, 0xc7, 0xb9, 0xa3, 0x7e, 0x9d, 0x0a, 0x08, 0x2c, 0x37, 0x13, 0x89, + 0x92, 0x41, 0x45, 0x0e, 0x21, 0xe5, 0x13, 0x3b, 0x84, 0x3c, 0x71, 0x7c, 0xb4, 0xfc, 0x78, 0x7d, + 0x08, 0xdc, 0x78, 0xa8, 0x1e, 0x2c, 0xed, 0xc1, 0x6c, 0x6c, 0xb2, 0xcf, 0xf2, 0xd6, 0x72, 0xc9, + 0x86, 0xf9, 0xe4, 0x9c, 0x9c, 0xe9, 0x2d, 0xe9, 0x4d, 0x98, 0x0e, 0x0f, 0x0b, 0x74, 0x59, 0x22, + 0x14, 0x1d, 0xe6, 0x37, 0xc9, 0x21, 0xa7, 0xba, 0x1c, 0xd3, 0xf5, 0xb8, 0xb2, 0x7f, 0x9b, 0x16, + 0x08, 0x84, 0xea, 0x77, 0x84, 0x25, 0x67, 0x93, 0x74, 0x7b, 0x96, 0xe6, 0x93, 0xb7, 0xff, 0xd5, + 0x87, 0xfa, 0x3f, 0x15, 0xce, 0xf3, 0x45, 0xde, 0x39, 0x0d, 0x2a, 0x5d, 0x1e, 0x23, 0x92, 0x3d, + 0x96, 0x55, 0x8a, 0x3f, 0xd3, 0x5d, 0x8f, 0xd0, 0x60, 0x19, 0x27, 0xba, 0x93, 0xce, 0x8c, 0x78, + 0x6d, 0xb4, 0xc3, 0x79, 0xe8, 0x04, 0x89, 0x28, 0xdd, 0x46, 0x4e, 0x2a, 0xa7, 0x0c, 0x4e, 0x2a, + 0x77, 0xff, 0x54, 0x63, 0xea, 0x37, 0xc7, 0x20, 0x33, 0xad, 0x07, 0x52, 0x61, 0x92, 0xbf, 0x90, + 0x91, 0x53, 0x46, 0xf2, 0xe7, 0x33, 0x58, 0x40, 0x90, 0x0b, 0x17, 0xc4, 0xfb, 0x93, 0x9b, 0xe4, + 0x30, 0x4a, 0x56, 0x28, 0xa6, 0x7e, 0x78, 0x4f, 0x74, 0x16, 0x3b, 0xae, 0x9d, 0xc0, 0x84, 0x33, + 0x71, 0xa3, 0x5b, 0xfc, 0xa5, 0x9b, 0x6d, 0xb0, 0x20, 0x4b, 0x11, 0x77, 0x90, 0x1f, 0x67, 0xad, + 0x66, 0x55, 0xc0, 0xd9, 0xed, 0xd0, 0x3e, 0xa0, 0xae, 0x76, 0x90, 0xc4, 0x36, 0x42, 0x46, 0x81, + 0xf5, 0x14, 0x36, 0x9c, 0x41, 0x81, 0x1e, 0xa0, 0x9a, 0xae, 0x93, 0x9e, 0x4f, 0x0c, 0x3e, 0xac, + 0x81, 0x7d, 0x99, 0x1d, 0xa0, 0xd5, 0x38, 0x08, 0x27, 0xeb, 0xb2, 0xa7, 0x20, 0x4c, 0x25, 0x7e, + 0x7b, 0xb8, 0x2c, 0xb1, 0xae, 0x9e, 0xed, 0x53, 0x10, 0x4e, 0x62, 0xf0, 0x7d, 0xe6, 0xc7, 0xe1, + 0x12, 0xab, 0x56, 0x35, 0x98, 0x16, 0xec, 0x11, 0xa3, 0x6a, 0x18, 0xec, 0xc9, 0xe9, 0xa8, 0xb9, + 0x1e, 0xd5, 0x7f, 0x55, 0x82, 0x73, 0x0c, 0x77, 0xbd, 0x8a, 0x85, 0x8d, 0x8e, 0x9e, 0x0a, 0xdc, + 0x0f, 0x95, 0x63, 0x5d, 0x49, 0xfa, 0xa1, 0x5e, 0xe6, 0x0d, 0x5c, 0xc2, 0xc4, 0x22, 0xcd, 0xf2, + 0x82, 0x96, 0x31, 0xc7, 0x54, 0x17, 0x90, 0xa5, 0x79, 0x3e, 0xcf, 0x9c, 0x16, 0x9c, 0x84, 0x05, + 0xfc, 0x52, 0xd9, 0xea, 0x5c, 0x4b, 0x61, 0xc2, 0x19, 0xd8, 0x03, 0x9a, 0x75, 0xa7, 0xdb, 0xb3, + 0x48, 0x48, 0xb3, 0x54, 0x9c, 0x66, 0x1c, 0x13, 0xce, 0xc0, 0xae, 0x7e, 0x49, 0x81, 0xf9, 0xe4, + 0x80, 0xa0, 0x7d, 0x28, 0xbb, 0x62, 0x50, 0xc4, 0xea, 0x5e, 0x2b, 0xbc, 0x38, 0x32, 0x06, 0x5a, + 0xa4, 0xf1, 0x11, 0xbf, 0x70, 0x48, 0x4b, 0xfd, 0xe3, 0x49, 0x58, 0xcc, 0x6b, 0x84, 0xbe, 0xac, + 0xc0, 0x25, 0x3d, 0x92, 0x51, 0xaa, 0x7d, 0x7f, 0xd7, 0x71, 0x4d, 0xdf, 0x24, 0x41, 0x5a, 0xd9, + 0x7a, 0xf1, 0x3e, 0x86, 0xab, 0x87, 0x87, 0xcd, 0xa9, 0x67, 0x92, 0xc1, 0x39, 0xe4, 0xd1, 0x27, + 0x01, 0xf6, 0xa2, 0xe0, 0x75, 0x7c, 0xbe, 0x6e, 0x16, 0xee, 0x8c, 0x14, 0xe0, 0x2e, 0xe8, 0x14, + 0x33, 0x01, 0x4a, 0xe5, 0x12, 0x39, 0x4a, 0xdc, 0xf3, 0x76, 0x6f, 0x92, 0xc3, 0x9e, 0x66, 0x06, + 0x4e, 0xf5, 0xc5, 0x89, 0xb7, 0xdb, 0x37, 0x04, 0xaa, 0x38, 0x71, 0xa9, 0x5c, 0x22, 0x87, 0xbe, + 0xa0, 0xc0, 0x2c, 0xd7, 0x53, 0x84, 0xc7, 0x97, 0xe0, 0xe1, 0x1b, 0x85, 0x3b, 0x70, 0x4b, 0xc6, + 0x16, 0xf6, 0x81, 0x5d, 0x41, 0xc5, 0x41, 0x71, 0xba, 0x74, 0x75, 0x2c, 0xc4, 0x93, 0x62, 0xdd, + 0x24, 0x87, 0xc2, 0x16, 0x81, 0x8b, 0x0f, 0x47, 0x12, 0x63, 0xd8, 0x23, 0xa6, 0x73, 0xa6, 0xc1, + 0xe9, 0x3e, 0xb0, 0x9e, 0x11, 0x5f, 0x37, 0x44, 0xb2, 0x5c, 0xd3, 0xb1, 0x69, 0xcf, 0x26, 0x47, + 0xec, 0xd9, 0xea, 0x66, 0xbd, 0x11, 0xc3, 0x18, 0xef, 0x59, 0x1a, 0x9c, 0xee, 0x83, 0xfa, 0xfb, + 0x25, 0xb8, 0x32, 0x18, 0xd9, 0x5f, 0x32, 0xd3, 0x13, 0x31, 0xd3, 0x4f, 0x97, 0xe0, 0xa1, 0x9c, + 0x3d, 0x9c, 0x33, 0x06, 0xca, 0x9f, 0xbb, 0x31, 0xf8, 0xb6, 0x02, 0xd3, 0x6c, 0x0c, 0xde, 0x26, + 0x9e, 0xd0, 0xac, 0xaf, 0x39, 0x7e, 0x18, 0xbf, 0xab, 0xc0, 0x42, 0x2a, 0x20, 0xde, 0x50, 0x7e, + 0xb4, 0x0f, 0xcc, 0xbd, 0xe0, 0xdd, 0xc9, 0xb4, 0xc5, 0x95, 0xcc, 0x38, 0x99, 0x2f, 0xc3, 0x6c, + 0xcc, 0x0d, 0x23, 0x8c, 0x33, 0xa2, 0x64, 0xc6, 0x19, 0x91, 0xc3, 0x88, 0x94, 0x06, 0x86, 0x11, + 0xf9, 0x6c, 0x09, 0x96, 0xf2, 0x19, 0xf7, 0x5f, 0x98, 0x55, 0x1f, 0xee, 0xfc, 0xf4, 0x01, 0xfa, + 0x17, 0x66, 0x0c, 0xc2, 0xe3, 0x24, 0xf7, 0xd4, 0xfc, 0xcb, 0xe3, 0xe4, 0x44, 0x03, 0xfa, 0x8d, + 0x39, 0xc1, 0x4a, 0xd9, 0x25, 0xd8, 0x6b, 0x30, 0xc9, 0x02, 0xe9, 0x04, 0xe2, 0xee, 0xb3, 0x85, + 0x03, 0xf4, 0x78, 0xdc, 0xb0, 0xc0, 0xff, 0xc7, 0x02, 0x2b, 0x6a, 0xc0, 0xbc, 0x6e, 0x39, 0x7d, + 0xa3, 0xe5, 0x3a, 0x3b, 0xa6, 0x45, 0x36, 0x22, 0x1b, 0x46, 0x18, 0x78, 0xb0, 0x9e, 0x80, 0xe3, + 0x54, 0x0b, 0x84, 0xf9, 0x35, 0x1a, 0x9f, 0x8c, 0x0f, 0x15, 0x74, 0xf5, 0xe3, 0x31, 0xe7, 0xc3, + 0xeb, 0xb3, 0x37, 0x00, 0x48, 0xc0, 0x14, 0x83, 0x37, 0x49, 0xcf, 0x17, 0x0b, 0xa9, 0x18, 0xb2, + 0xd6, 0x40, 0xf7, 0x0e, 0x8b, 0x3c, 0x2c, 0x11, 0x41, 0x2e, 0x54, 0x76, 0xa3, 0x8c, 0xe9, 0x42, + 0x8e, 0x7c, 0x61, 0xc4, 0x6c, 0xed, 0xdc, 0xe4, 0x25, 0x15, 0x60, 0x99, 0x08, 0x72, 0xb9, 0x1a, + 0xc1, 0x6f, 0x2c, 0x46, 0xc9, 0xb0, 0x1b, 0x5d, 0x85, 0x44, 0xdf, 0x19, 0x95, 0x61, 0x89, 0x0a, + 0xa5, 0x69, 0x87, 0x91, 0xb0, 0x46, 0xb9, 0x04, 0x8b, 0xe2, 0x69, 0x45, 0x34, 0xa3, 0x32, 0x2c, + 0x51, 0xa1, 0x63, 0xdb, 0x8d, 0xa2, 0x9f, 0x09, 0xd3, 0xf6, 0x0b, 0x23, 0x46, 0xa1, 0x13, 0xe6, + 0xc4, 0xa8, 0x00, 0xcb, 0x44, 0x90, 0x0d, 0xd0, 0x0d, 0x83, 0xa2, 0x89, 0xbb, 0xb1, 0x42, 0xdf, + 0x19, 0x85, 0x56, 0xe3, 0x8a, 0x51, 0xf4, 0x1b, 0x4b, 0x14, 0xd0, 0xeb, 0xd2, 0x0d, 0x2c, 0x14, + 0x37, 0xca, 0x0e, 0x75, 0xfb, 0xfa, 0xc1, 0xc8, 0x36, 0x59, 0x61, 0xfb, 0xf5, 0x11, 0xc9, 0x2e, + 0x79, 0xef, 0x68, 0x79, 0x86, 0xf1, 0x90, 0x94, 0x9d, 0x32, 0x72, 0x4c, 0x9c, 0x19, 0xe4, 0x98, + 0x88, 0xae, 0x53, 0xc5, 0x4a, 0x72, 0xfe, 0x67, 0x8c, 0x61, 0x96, 0x35, 0x09, 0x83, 0xe8, 0xb5, + 0x93, 0x15, 0x70, 0xba, 0x0d, 0x17, 0x2a, 0x88, 0xc1, 0xda, 0xcf, 0xc9, 0x42, 0x05, 0x2f, 0xc3, + 0x21, 0x14, 0xed, 0xc3, 0x8c, 0x27, 0xb9, 0x42, 0x8a, 0x6c, 0x5c, 0x23, 0x5c, 0x9b, 0x0a, 0x37, + 0x48, 0x16, 0xc1, 0x48, 0x2e, 0xc1, 0x31, 0x3a, 0xe8, 0x93, 0x30, 0x1d, 0xd8, 0xa9, 0xbd, 0xc5, + 0xf9, 0xe2, 0x2f, 0xd4, 0xb2, 0x03, 0xe1, 0x45, 0x86, 0xe7, 0x00, 0xe4, 0xe1, 0x88, 0x1e, 0xea, + 0xc7, 0x1f, 0x86, 0x2f, 0x9c, 0xca, 0x63, 0xd8, 0xd0, 0xc1, 0x2d, 0xef, 0x51, 0x38, 0xaa, 0xc3, + 0x02, 0x39, 0xe8, 0x39, 0x5e, 0xdf, 0x25, 0x2c, 0x06, 0x27, 0x9b, 0x1e, 0x14, 0xdd, 0xab, 0xae, + 0x26, 0x81, 0x38, 0x5d, 0x1f, 0x7d, 0x5e, 0x81, 0x79, 0x9e, 0xcc, 0x8c, 0x1e, 0x61, 0x8e, 0x4d, + 0x6c, 0xdf, 0x5b, 0x3c, 0x5f, 0x3c, 0xf6, 0x6d, 0x3b, 0x81, 0x4b, 0x58, 0xab, 0x13, 0xa5, 0x38, + 0x45, 0x53, 0xfd, 0x37, 0x33, 0x50, 0x91, 0x6c, 0x92, 0x3f, 0x8c, 0x90, 0x26, 0x3e, 0x54, 0x74, + 0xc7, 0xf6, 0x7c, 0x57, 0x93, 0xc2, 0xb8, 0x8c, 0x48, 0x33, 0x9c, 0xc6, 0x7a, 0x84, 0x19, 0xcb, + 0x64, 0x28, 0xc3, 0x09, 0xaf, 0xe1, 0xc7, 0x4e, 0xe1, 0x1a, 0x3e, 0x64, 0x38, 0x19, 0x57, 0xf1, + 0x1f, 0x00, 0x08, 0xce, 0x2d, 0xc2, 0xb3, 0xca, 0x94, 0xa3, 0x54, 0x07, 0x4d, 0xef, 0x46, 0x08, + 0xc3, 0x52, 0x3d, 0x74, 0x17, 0x66, 0x2d, 0x39, 0xcc, 0xb9, 0x38, 0x54, 0x0b, 0xb9, 0x94, 0xc7, + 0xe2, 0xa5, 0x73, 0xeb, 0x50, 0xac, 0x08, 0xc7, 0x49, 0xd1, 0x65, 0x60, 0x05, 0xa1, 0xf9, 0x47, + 0x72, 0x29, 0x09, 0x03, 0xfc, 0x47, 0xcb, 0x20, 0x2c, 0xf2, 0xb0, 0x44, 0x24, 0xe7, 0xde, 0x7f, + 0xaa, 0xd0, 0xbd, 0x7f, 0x1f, 0xce, 0xbb, 0xc4, 0x77, 0x0f, 0xeb, 0x87, 0x3a, 0x4b, 0x77, 0xe1, + 0xfa, 0x4c, 0xfa, 0x2c, 0x17, 0x8b, 0x92, 0x80, 0xd3, 0xa8, 0x70, 0x16, 0xfe, 0x18, 0xc3, 0x9e, + 0x1e, 0xc8, 0xb0, 0x3f, 0x08, 0x15, 0x9f, 0xe8, 0xbb, 0xb6, 0xa9, 0x6b, 0x56, 0xb3, 0x21, 0x22, + 0x99, 0x45, 0xbc, 0x27, 0x02, 0x61, 0xb9, 0x1e, 0xaa, 0xc1, 0x58, 0xdf, 0x34, 0xc4, 0xa9, 0xf5, + 0xa3, 0xa1, 0x75, 0xbf, 0xd9, 0xb8, 0x77, 0xb4, 0xfc, 0xce, 0xe8, 0x22, 0x3d, 0xfc, 0xaa, 0xab, + 0xbd, 0xbd, 0xce, 0x55, 0xff, 0xb0, 0x47, 0xbc, 0x95, 0xad, 0x66, 0x03, 0xd3, 0xc6, 0x59, 0x3e, + 0x11, 0x33, 0x27, 0xf0, 0x89, 0xf8, 0x8a, 0x02, 0xe7, 0xb5, 0xe4, 0xc5, 0x04, 0xf1, 0x16, 0x67, + 0x8b, 0x73, 0xff, 0xec, 0xcb, 0x8e, 0x28, 0x4c, 0x6c, 0x35, 0x4d, 0x0e, 0x67, 0xf5, 0x81, 0xea, + 0x1c, 0x5d, 0xb3, 0x13, 0x66, 0x13, 0x10, 0xb3, 0x3e, 0x57, 0x4c, 0xe7, 0x58, 0x4f, 0x61, 0xc2, + 0x19, 0xd8, 0xd1, 0x1d, 0xa8, 0xe8, 0x91, 0xfa, 0x25, 0x4e, 0xde, 0xc6, 0x69, 0x58, 0xff, 0x45, + 0x34, 0x25, 0x49, 0xb7, 0x93, 0x29, 0xa1, 0x2f, 0x29, 0xb0, 0x44, 0xb7, 0x8f, 0x24, 0x1e, 0x6f, + 0xba, 0x66, 0xa7, 0x43, 0x5c, 0xf6, 0xd5, 0xf3, 0x27, 0xfe, 0x6a, 0x96, 0xc6, 0x72, 0x2d, 0x17, + 0x23, 0x1e, 0x40, 0x4d, 0xfd, 0x03, 0x45, 0xd8, 0x4b, 0x1e, 0xe0, 0x1d, 0xfe, 0x59, 0x5f, 0xf8, + 0xa9, 0x7f, 0xa2, 0x40, 0xea, 0x08, 0x45, 0xdb, 0x30, 0x45, 0x51, 0x34, 0x36, 0xda, 0xe2, 0xb3, + 0x9e, 0x2b, 0x76, 0x52, 0x31, 0x14, 0xdc, 0xf8, 0x24, 0x7e, 0xe0, 0x00, 0x31, 0x15, 0xe7, 0x6c, + 0x29, 0xc8, 0xa8, 0xf8, 0xc2, 0x42, 0xe2, 0x9c, 0x1c, 0xac, 0x94, 0x8b, 0x73, 0x72, 0x09, 0x8e, + 0xd1, 0x51, 0xd7, 0x00, 0x22, 0xb1, 0x67, 0x64, 0xb7, 0x8e, 0x1f, 0x4c, 0xc0, 0xc5, 0x51, 0x9d, + 0xde, 0x59, 0x9a, 0x07, 0x96, 0x22, 0xb8, 0xba, 0xe3, 0x13, 0xf7, 0xd6, 0xad, 0xf5, 0x30, 0x83, + 0x6a, 0xc1, 0x3c, 0x13, 0x51, 0x86, 0xe9, 0x14, 0x46, 0x9c, 0x43, 0x89, 0x89, 0x7c, 0x22, 0x17, + 0x23, 0xd6, 0x7c, 0x52, 0xeb, 0xbb, 0x9e, 0x2f, 0x9e, 0x9a, 0x73, 0x91, 0x2f, 0x09, 0xc4, 0xe9, + 0xfa, 0x49, 0x24, 0x3c, 0x5d, 0x31, 0x95, 0x05, 0x94, 0x34, 0x12, 0x9e, 0xb3, 0x38, 0x5d, 0x5f, + 0x46, 0xc2, 0x67, 0x8a, 0x2a, 0x84, 0x13, 0x69, 0x24, 0x21, 0x10, 0xa7, 0xeb, 0x23, 0x03, 0x1e, + 0x75, 0x89, 0xee, 0x74, 0xbb, 0xc4, 0x36, 0x78, 0x5a, 0x21, 0xcd, 0xed, 0x98, 0xf6, 0x35, 0x57, + 0x63, 0x15, 0x99, 0x26, 0xad, 0xd4, 0x1e, 0x3b, 0x3e, 0x5a, 0x7e, 0x14, 0x0f, 0xa8, 0x87, 0x07, + 0x62, 0x41, 0x5d, 0x38, 0xd7, 0x67, 0x51, 0xc5, 0xdd, 0xa6, 0xed, 0x13, 0x77, 0x5f, 0xb3, 0x0a, + 0x26, 0xe1, 0x66, 0xe7, 0xd2, 0x56, 0x1c, 0x15, 0x4e, 0xe2, 0x46, 0x87, 0xf4, 0xc8, 0x17, 0xdd, + 0x91, 0x48, 0x96, 0x8b, 0x27, 0x42, 0xc1, 0x69, 0x74, 0x38, 0x8b, 0x86, 0xfa, 0x15, 0x05, 0x84, + 0x0f, 0x2b, 0x7a, 0x34, 0x66, 0xea, 0x2e, 0x27, 0xcc, 0xdc, 0x8f, 0x8a, 0x77, 0x76, 0xa5, 0x08, + 0x2a, 0xbd, 0xb1, 0x7b, 0x8f, 0x14, 0xc3, 0x60, 0x3a, 0xe2, 0x7d, 0x1c, 0xb3, 0x14, 0x97, 0xff, + 0xbd, 0x30, 0x4d, 0xf8, 0xdd, 0x53, 0x28, 0x4c, 0xce, 0xf2, 0x90, 0x85, 0xa2, 0x10, 0x47, 0x70, + 0xf5, 0xf7, 0x15, 0x10, 0x18, 0x58, 0x16, 0x89, 0xa1, 0xb2, 0x09, 0xdc, 0xd7, 0x21, 0x47, 0xca, + 0x82, 0x30, 0x96, 0x9b, 0x05, 0xe1, 0x8c, 0x92, 0x03, 0xfc, 0xa6, 0x02, 0xe7, 0xe2, 0x41, 0x25, + 0x3c, 0xf4, 0x6e, 0x98, 0x12, 0x01, 0x92, 0x44, 0x98, 0x15, 0xfe, 0xae, 0x96, 0x17, 0xe1, 0x00, + 0x16, 0xd7, 0x56, 0x47, 0x88, 0xa7, 0x92, 0x1d, 0xdb, 0x62, 0xb0, 0xb6, 0xaa, 0x7e, 0x77, 0x0e, + 0x26, 0x79, 0x48, 0x1f, 0xca, 0xd3, 0x32, 0x1e, 0x70, 0xdd, 0x2c, 0x1e, 0x34, 0xa8, 0xc0, 0x3b, + 0xad, 0x58, 0x7c, 0xe7, 0xd2, 0xc0, 0xf8, 0xce, 0x98, 0xa7, 0x46, 0x19, 0xc1, 0x42, 0x59, 0xc7, + 0x4d, 0x91, 0x26, 0x34, 0x48, 0x8b, 0xe2, 0xc7, 0x4c, 0x77, 0xe3, 0xc5, 0x85, 0x26, 0x3e, 0x00, + 0x92, 0x01, 0x6f, 0x6e, 0x80, 0xf1, 0x2e, 0x8a, 0xa1, 0x32, 0x51, 0xdc, 0x41, 0x4e, 0x0c, 0xf9, + 0x10, 0x31, 0x54, 0xc2, 0x8d, 0x34, 0x99, 0xbb, 0x91, 0x76, 0x60, 0x4a, 0x6c, 0x05, 0xc1, 0x1c, + 0x9f, 0x1b, 0x21, 0x7b, 0x89, 0x14, 0x71, 0x8f, 0x17, 0xe0, 0x00, 0x39, 0x3d, 0x71, 0xbb, 0xda, + 0x81, 0xd9, 0xed, 0x77, 0x19, 0x47, 0x9c, 0x90, 0xab, 0xb2, 0x62, 0x1c, 0xc0, 0x59, 0x55, 0xee, + 0x57, 0xc8, 0x74, 0x18, 0xb9, 0xaa, 0x48, 0x73, 0x1d, 0xc0, 0xd1, 0xab, 0x50, 0xee, 0x6a, 0x07, + 0xed, 0xbe, 0xdb, 0x21, 0xc2, 0x68, 0x97, 0x2f, 0xe3, 0xf5, 0x7d, 0xd3, 0x5a, 0xa1, 0x9a, 0xb7, + 0xef, 0xae, 0x34, 0x6d, 0xff, 0x96, 0xdb, 0xf6, 0xdd, 0x30, 0x3f, 0xc2, 0xba, 0xc0, 0x82, 0x43, + 0x7c, 0xc8, 0x82, 0xb9, 0xae, 0x76, 0xb0, 0x65, 0x6b, 0x61, 0x36, 0xde, 0x4a, 0x41, 0x0a, 0xec, + 0x56, 0x70, 0x3d, 0x86, 0x0b, 0x27, 0x70, 0x67, 0x5c, 0x40, 0xce, 0x9c, 0xd5, 0x05, 0x64, 0x35, + 0x7c, 0xa9, 0xc1, 0x55, 0xa6, 0x87, 0xb3, 0x3c, 0x10, 0x07, 0xbf, 0xc2, 0x78, 0x2d, 0x7c, 0x85, + 0x31, 0x57, 0xfc, 0x66, 0x63, 0xc0, 0x0b, 0x8c, 0x3e, 0x54, 0xa8, 0x84, 0xcd, 0x4b, 0xa9, 0x4e, + 0x53, 0xd8, 0xb2, 0xd6, 0x08, 0xd1, 0x48, 0x89, 0xec, 0x22, 0xd4, 0x58, 0xa6, 0x83, 0x6e, 0xf1, + 0x6c, 0xad, 0x16, 0xf1, 0xa3, 0x2a, 0x4c, 0x97, 0x9e, 0xe7, 0xc6, 0xd3, 0x20, 0xb9, 0x6a, 0xaa, + 0x02, 0xce, 0x6e, 0x47, 0x45, 0x54, 0x1e, 0x48, 0x61, 0x21, 0x0a, 0xf4, 0x19, 0x0b, 0xaa, 0xf4, + 0xb7, 0xb2, 0xcc, 0x70, 0xa8, 0xf8, 0xab, 0x32, 0xce, 0x1b, 0x8a, 0x1a, 0xe3, 0xd0, 0x37, 0x15, + 0x58, 0xec, 0xe6, 0x64, 0x7c, 0x13, 0xd6, 0xc1, 0xcd, 0x11, 0xf8, 0x43, 0x6e, 0x16, 0xb9, 0xda, + 0xe3, 0xc7, 0x47, 0xcb, 0xf7, 0xcd, 0x35, 0x87, 0x73, 0xfb, 0x36, 0xea, 0xa3, 0xdf, 0x51, 0x82, + 0x4d, 0xfd, 0x92, 0x02, 0xf3, 0xc9, 0x43, 0x40, 0x4e, 0x30, 0xab, 0x9c, 0x6d, 0x82, 0x59, 0xc9, + 0x9d, 0xa0, 0x34, 0xc0, 0x9d, 0xe0, 0x79, 0xb8, 0x94, 0xbd, 0x36, 0xa8, 0x44, 0xc6, 0x12, 0x3a, + 0x0b, 0x4d, 0x28, 0x4a, 0x05, 0x42, 0x0b, 0x31, 0x87, 0xd5, 0x5e, 0xf9, 0xd6, 0xf7, 0xaf, 0xbc, + 0xe3, 0x3b, 0xdf, 0xbf, 0xf2, 0x8e, 0x37, 0xbf, 0x7f, 0xe5, 0x1d, 0x3f, 0x75, 0x7c, 0x45, 0xf9, + 0xd6, 0xf1, 0x15, 0xe5, 0x3b, 0xc7, 0x57, 0x94, 0x37, 0x8f, 0xaf, 0x28, 0xff, 0xf5, 0xf8, 0x8a, + 0xf2, 0x33, 0xff, 0xed, 0xca, 0x3b, 0x5e, 0x7d, 0x3a, 0xfa, 0xc6, 0xab, 0xc1, 0xa7, 0x45, 0xff, + 0xf4, 0xf6, 0x3a, 0x57, 0xe9, 0x37, 0x06, 0xaf, 0x2c, 0xd8, 0x37, 0xfe, 0xff, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x09, 0x8c, 0xba, 0xbb, 0x41, 0xcb, 0x00, 0x00, } func (m *Addon) Marshal() (dAtA []byte, err error) { @@ -8947,6 +9049,13 @@ func (m *Machine) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Architecture != nil { + i -= len(*m.Architecture) + copy(dAtA[i:], *m.Architecture) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Architecture))) + i-- + dAtA[i] = 0x1a + } if m.Image != nil { { size, err := m.Image.MarshalToSizedBuffer(dAtA[:i]) @@ -9102,6 +9211,15 @@ func (m *MachineImageVersion) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Architectures) > 0 { + for iNdEx := len(m.Architectures) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Architectures[iNdEx]) + copy(dAtA[i:], m.Architectures[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Architectures[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } if len(m.CRI) > 0 { for iNdEx := len(m.CRI) - 1; iNdEx >= 0; iNdEx-- { { @@ -9149,6 +9267,13 @@ func (m *MachineType) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Architecture != nil { + i -= len(*m.Architecture) + copy(dAtA[i:], *m.Architecture) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Architecture))) + i-- + dAtA[i] = 0x3a + } if m.Usable != nil { i-- if *m.Usable { @@ -9602,6 +9727,57 @@ func (m *NginxIngress) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *NodeLocalDNS) 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 *NodeLocalDNS) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *NodeLocalDNS) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ForceTCPToUpstreamDNS != nil { + i-- + if *m.ForceTCPToUpstreamDNS { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if m.ForceTCPToClusterDNS != nil { + i-- + if *m.ForceTCPToClusterDNS { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *OIDCConfig) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12320,6 +12496,30 @@ func (m *ShootCredentialsRotation) MarshalToSizedBuffer(dAtA []byte) (int, error _ = i var l int _ = l + if m.ETCDEncryptionKey != nil { + { + size, err := m.ETCDEncryptionKey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.ServiceAccountKey != nil { + { + size, err := m.ServiceAccountKey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } if m.Observability != nil { { size, err := m.Observability.MarshalToSizedBuffer(dAtA[:i]) @@ -12371,6 +12571,58 @@ func (m *ShootCredentialsRotation) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } +func (m *ShootETCDEncryptionKeyRotation) 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 *ShootETCDEncryptionKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ShootETCDEncryptionKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ShootKubeconfigRotation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12643,6 +12895,58 @@ func (m *ShootSSHKeypairRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *ShootServiceAccountKeyRotation) 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 *ShootServiceAccountKeyRotation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ShootServiceAccountKeyRotation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastInitiationTime != nil { + { + size, err := m.LastInitiationTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.LastCompletionTime != nil { + { + size, err := m.LastCompletionTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ShootSpec) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12886,6 +13190,20 @@ func (m *ShootStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.LastHibernationTriggerTime != nil { + { + size, err := m.LastHibernationTriggerTime.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } if m.Credentials != nil { { size, err := m.Credentials.MarshalToSizedBuffer(dAtA[:i]) @@ -13101,6 +13419,18 @@ func (m *SystemComponents) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.NodeLocalDNS != nil { + { + size, err := m.NodeLocalDNS.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } if m.CoreDNS != nil { { size, err := m.CoreDNS.MarshalToSizedBuffer(dAtA[:i]) @@ -15161,6 +15491,10 @@ func (m *Machine) Size() (n int) { l = m.Image.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.Architecture != nil { + l = len(*m.Architecture) + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -15225,6 +15559,12 @@ func (m *MachineImageVersion) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) } } + if len(m.Architectures) > 0 { + for _, s := range m.Architectures { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } return n } @@ -15249,6 +15589,10 @@ func (m *MachineType) Size() (n int) { if m.Usable != nil { n += 2 } + if m.Architecture != nil { + l = len(*m.Architecture) + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -15399,6 +15743,22 @@ func (m *NginxIngress) Size() (n int) { return n } +func (m *NodeLocalDNS) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + if m.ForceTCPToClusterDNS != nil { + n += 2 + } + if m.ForceTCPToUpstreamDNS != nil { + n += 2 + } + return n +} + func (m *OIDCConfig) Size() (n int) { if m == nil { return 0 @@ -16407,6 +16767,33 @@ func (m *ShootCredentialsRotation) Size() (n int) { l = m.Observability.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.ServiceAccountKey != nil { + l = m.ServiceAccountKey.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ETCDEncryptionKey != nil { + l = m.ETCDEncryptionKey.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ShootETCDEncryptionKeyRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if m.LastCompletionTime != nil { + l = m.LastCompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationTime != nil { + l = m.LastInitiationTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -16514,6 +16901,25 @@ func (m *ShootSSHKeypairRotation) Size() (n int) { return n } +func (m *ShootServiceAccountKeyRotation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if m.LastCompletionTime != nil { + l = m.LastCompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LastInitiationTime != nil { + l = m.LastInitiationTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *ShootSpec) Size() (n int) { if m == nil { return 0 @@ -16655,6 +17061,10 @@ func (m *ShootStatus) Size() (n int) { l = m.Credentials.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.LastHibernationTriggerTime != nil { + l = m.LastHibernationTriggerTime.Size() + n += 2 + l + sovGenerated(uint64(l)) + } return n } @@ -16681,6 +17091,10 @@ func (m *SystemComponents) Size() (n int) { l = m.CoreDNS.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.NodeLocalDNS != nil { + l = m.NodeLocalDNS.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -17886,6 +18300,7 @@ func (this *Machine) String() string { s := strings.Join([]string{`&Machine{`, `Type:` + fmt.Sprintf("%v", this.Type) + `,`, `Image:` + strings.Replace(this.Image.String(), "ShootMachineImage", "ShootMachineImage", 1) + `,`, + `Architecture:` + valueToStringGenerated(this.Architecture) + `,`, `}`, }, "") return s @@ -17932,6 +18347,7 @@ func (this *MachineImageVersion) String() string { s := strings.Join([]string{`&MachineImageVersion{`, `ExpirableVersion:` + strings.Replace(strings.Replace(this.ExpirableVersion.String(), "ExpirableVersion", "ExpirableVersion", 1), `&`, ``, 1) + `,`, `CRI:` + repeatedStringForCRI + `,`, + `Architectures:` + fmt.Sprintf("%v", this.Architectures) + `,`, `}`, }, "") return s @@ -17947,6 +18363,7 @@ func (this *MachineType) String() string { `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `Storage:` + strings.Replace(this.Storage.String(), "MachineTypeStorage", "MachineTypeStorage", 1) + `,`, `Usable:` + valueToStringGenerated(this.Usable) + `,`, + `Architecture:` + valueToStringGenerated(this.Architecture) + `,`, `}`, }, "") return s @@ -18056,6 +18473,18 @@ func (this *NginxIngress) String() string { }, "") return s } +func (this *NodeLocalDNS) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeLocalDNS{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `ForceTCPToClusterDNS:` + valueToStringGenerated(this.ForceTCPToClusterDNS) + `,`, + `ForceTCPToUpstreamDNS:` + valueToStringGenerated(this.ForceTCPToUpstreamDNS) + `,`, + `}`, + }, "") + return s +} func (this *OIDCConfig) String() string { if this == nil { return "nil" @@ -18814,6 +19243,20 @@ func (this *ShootCredentialsRotation) String() string { `Kubeconfig:` + strings.Replace(this.Kubeconfig.String(), "ShootKubeconfigRotation", "ShootKubeconfigRotation", 1) + `,`, `SSHKeypair:` + strings.Replace(this.SSHKeypair.String(), "ShootSSHKeypairRotation", "ShootSSHKeypairRotation", 1) + `,`, `Observability:` + strings.Replace(this.Observability.String(), "ShootObservabilityRotation", "ShootObservabilityRotation", 1) + `,`, + `ServiceAccountKey:` + strings.Replace(this.ServiceAccountKey.String(), "ShootServiceAccountKeyRotation", "ShootServiceAccountKeyRotation", 1) + `,`, + `ETCDEncryptionKey:` + strings.Replace(this.ETCDEncryptionKey.String(), "ShootETCDEncryptionKeyRotation", "ShootETCDEncryptionKeyRotation", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ShootETCDEncryptionKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ShootETCDEncryptionKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, `}`, }, "") return s @@ -18890,6 +19333,18 @@ func (this *ShootSSHKeypairRotation) String() string { }, "") return s } +func (this *ShootServiceAccountKeyRotation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ShootServiceAccountKeyRotation{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `LastCompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.LastCompletionTime), "Time", "v11.Time", 1) + `,`, + `LastInitiationTime:` + strings.Replace(fmt.Sprintf("%v", this.LastInitiationTime), "Time", "v11.Time", 1) + `,`, + `}`, + }, "") + return s +} func (this *ShootSpec) String() string { if this == nil { return "nil" @@ -18973,6 +19428,7 @@ func (this *ShootStatus) String() string { `AdvertisedAddresses:` + repeatedStringForAdvertisedAddresses + `,`, `MigrationStartTime:` + strings.Replace(fmt.Sprintf("%v", this.MigrationStartTime), "Time", "v11.Time", 1) + `,`, `Credentials:` + strings.Replace(this.Credentials.String(), "ShootCredentials", "ShootCredentials", 1) + `,`, + `LastHibernationTriggerTime:` + strings.Replace(fmt.Sprintf("%v", this.LastHibernationTriggerTime), "Time", "v11.Time", 1) + `,`, `}`, }, "") return s @@ -18994,6 +19450,7 @@ func (this *SystemComponents) String() string { } s := strings.Join([]string{`&SystemComponents{`, `CoreDNS:` + strings.Replace(this.CoreDNS.String(), "CoreDNS", "CoreDNS", 1) + `,`, + `NodeLocalDNS:` + strings.Replace(this.NodeLocalDNS.String(), "NodeLocalDNS", "NodeLocalDNS", 1) + `,`, `}`, }, "") return s @@ -30373,6 +30830,39 @@ func (m *Machine) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Architecture", 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.Architecture = &s + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -30816,6 +31306,38 @@ func (m *MachineImageVersion) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Architectures", 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.Architectures = append(m.Architectures, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -31054,6 +31576,39 @@ func (m *MachineType) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.Usable = &b + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Architecture", 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.Architecture = &s + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -32301,6 +32856,118 @@ func (m *NginxIngress) Unmarshal(dAtA []byte) error { } return nil } +func (m *NodeLocalDNS) 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: NodeLocalDNS: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeLocalDNS: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ForceTCPToClusterDNS", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ForceTCPToClusterDNS = &b + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ForceTCPToUpstreamDNS", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ForceTCPToUpstreamDNS = &b + 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 *OIDCConfig) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -39841,17 +40508,280 @@ func (m *Shoot) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Shoot: wiretype end group for non-group") + return fmt.Errorf("proto: Shoot: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Shoot: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", 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.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", 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.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", 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.Status.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 *ShootAdvertisedAddress) 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: ShootAdvertisedAddress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ShootAdvertisedAddress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", 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.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field URL", 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.URL = 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 *ShootCARotation) 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: ShootCARotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Shoot: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootCARotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -39861,28 +40791,27 @@ func (m *Shoot) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Phase = ShootCredentialsRotationPhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -39909,13 +40838,16 @@ func (m *Shoot) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} + } + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -39942,7 +40874,10 @@ func (m *Shoot) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -39967,7 +40902,7 @@ func (m *Shoot) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { +func (m *ShootCredentials) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -39990,17 +40925,17 @@ func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootAdvertisedAddress: wiretype end group for non-group") + return fmt.Errorf("proto: ShootCredentials: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootAdvertisedAddress: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootCredentials: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Rotation", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -40010,55 +40945,27 @@ func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field URL", 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 m.Rotation == nil { + m.Rotation = &ShootCredentialsRotation{} } - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.Rotation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.URL = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -40081,7 +40988,7 @@ func (m *ShootAdvertisedAddress) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootCARotation) Unmarshal(dAtA []byte) error { +func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -40104,17 +41011,17 @@ func (m *ShootCARotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootCARotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootCredentialsRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootCARotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootCredentialsRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CertificateAuthorities", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -40124,27 +41031,31 @@ func (m *ShootCARotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Phase = ShootCredentialsRotationPhase(dAtA[iNdEx:postIndex]) + if m.CertificateAuthorities == nil { + m.CertificateAuthorities = &ShootCARotation{} + } + if err := m.CertificateAuthorities.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Kubeconfig", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -40171,16 +41082,16 @@ func (m *ShootCARotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastCompletionTime == nil { - m.LastCompletionTime = &v11.Time{} + if m.Kubeconfig == nil { + m.Kubeconfig = &ShootKubeconfigRotation{} } - if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Kubeconfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SSHKeypair", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -40207,66 +41118,88 @@ func (m *ShootCARotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LastInitiationTime == nil { - m.LastInitiationTime = &v11.Time{} + if m.SSHKeypair == nil { + m.SSHKeypair = &ShootSSHKeypairRotation{} } - if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Observability", wireType) } - if (skippy < 0) || (iNdEx+skippy) < 0 { + 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 } - if (iNdEx + skippy) > l { + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ShootCredentials) 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 m.Observability == nil { + m.Observability = &ShootObservabilityRotation{} } - if iNdEx >= l { + if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountKey", 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 } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if m.ServiceAccountKey == nil { + m.ServiceAccountKey = &ShootServiceAccountKeyRotation{} } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ShootCredentials: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ShootCredentials: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + if err := m.ServiceAccountKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Rotation", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ETCDEncryptionKey", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -40293,10 +41226,10 @@ func (m *ShootCredentials) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Rotation == nil { - m.Rotation = &ShootCredentialsRotation{} + if m.ETCDEncryptionKey == nil { + m.ETCDEncryptionKey = &ShootETCDEncryptionKeyRotation{} } - if err := m.Rotation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ETCDEncryptionKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -40321,7 +41254,7 @@ func (m *ShootCredentials) Unmarshal(dAtA []byte) error { } return nil } -func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { +func (m *ShootETCDEncryptionKeyRotation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -40344,17 +41277,17 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ShootCredentialsRotation: wiretype end group for non-group") + return fmt.Errorf("proto: ShootETCDEncryptionKeyRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ShootCredentialsRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ShootETCDEncryptionKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CertificateAuthorities", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -40364,31 +41297,27 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.CertificateAuthorities == nil { - m.CertificateAuthorities = &ShootCARotation{} - } - if err := m.CertificateAuthorities.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Phase = ShootCredentialsRotationPhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kubeconfig", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -40415,16 +41344,16 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Kubeconfig == nil { - m.Kubeconfig = &ShootKubeconfigRotation{} + if m.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} } - if err := m.Kubeconfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SSHKeypair", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -40451,46 +41380,10 @@ func (m *ShootCredentialsRotation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.SSHKeypair == nil { - m.SSHKeypair = &ShootSSHKeypairRotation{} - } - if err := m.SSHKeypair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Observability", 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.Observability == nil { - m.Observability = &ShootObservabilityRotation{} + if m.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} } - if err := m.Observability.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastInitiationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -41265,6 +42158,160 @@ func (m *ShootSSHKeypairRotation) Unmarshal(dAtA []byte) error { } return nil } +func (m *ShootServiceAccountKeyRotation) 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: ShootServiceAccountKeyRotation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ShootServiceAccountKeyRotation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", 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.Phase = ShootCredentialsRotationPhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCompletionTime", 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.LastCompletionTime == nil { + m.LastCompletionTime = &v11.Time{} + } + if err := m.LastCompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastInitiationTime", 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.LastInitiationTime == nil { + m.LastInitiationTime = &v11.Time{} + } + if err := m.LastInitiationTime.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 *ShootSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -42474,6 +43521,42 @@ func (m *ShootStatus) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastHibernationTriggerTime", 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.LastHibernationTriggerTime == nil { + m.LastHibernationTriggerTime = &v11.Time{} + } + if err := m.LastHibernationTriggerTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -42676,6 +43759,42 @@ func (m *SystemComponents) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeLocalDNS", 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.NodeLocalDNS == nil { + m.NodeLocalDNS = &NodeLocalDNS{} + } + if err := m.NodeLocalDNS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 54f5564f..c8932894 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 @@ -30,7 +30,7 @@ import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". -option go_package = "v1beta1"; +option go_package = "github.com/gardener/gardener/pkg/apis/core/v1beta1"; // Addon allows enabling or disabling a specific addon and is used to derive from. message Addon { @@ -551,6 +551,7 @@ message ControllerResource { // CoreDNS contains the settings of the Core DNS components running in the data plane of the Shoot cluster. message CoreDNS { // Autoscaling contains the settings related to autoscaling of the Core DNS components running in the data plane of the Shoot cluster. + // +optional optional CoreDNSAutoscaling autoscaling = 1; } @@ -1197,6 +1198,10 @@ message Machine { // latest version of the first image stated in the referenced CloudProfile if no value has been provided. // +optional optional ShootMachineImage image = 2; + + // Architecture is CPU architecture of machines in this worker pool. + // +optional + optional string architecture = 3; } // MachineControllerManagerSettings contains configurations for different worker-pools. Eg. MachineDrainTimeout, MachineHealthTimeout. @@ -1240,6 +1245,10 @@ message MachineImageVersion { // CRI list of supported container runtime and interfaces supported by this version // +optional repeated CRI cri = 2; + + // Architectures is the list of CPU architectures of the machine image in this version. + // +optional + repeated string architectures = 3; } // MachineType contains certain properties of a machine type. @@ -1263,6 +1272,10 @@ message MachineType { // Usable defines if the machine type can be used for shoot clusters. // +optional optional bool usable = 6; + + // Architecture is the CPU architecture of this machine type. + // +optional + optional string architecture = 7; } // MachineTypeStorage is the amount of storage associated with the root volume of this machine type. @@ -1378,6 +1391,22 @@ message NginxIngress { optional string externalTrafficPolicy = 4; } +// NodeLocalDNS contains the settings of the node local DNS components running in the data plane of the Shoot cluster. +message NodeLocalDNS { + // Enabled indicates whether node local DNS is enabled or not. + optional bool enabled = 1; + + // ForceTCPToClusterDNS indicates whether the connection from the node local DNS to the cluster DNS (Core DNS) will be forced to TCP or not. + // Default, if unspecified, is to enforce TCP. + // +optional + optional bool forceTCPToClusterDNS = 2; + + // ForceTCPToUpstreamDNS indicates whether the connection from the node local DNS to the upstream DNS (infrastructure DNS) will be forced to TCP or not. + // Default, if unspecified, is to enforce TCP. + // +optional + optional bool forceTCPToUpstreamDNS = 3; +} + // OIDCConfig contains configuration settings for the OIDC provider. // Note: Descriptions were taken from the Kubernetes documentation. message OIDCConfig { @@ -1938,6 +1967,7 @@ message SeedSettings { optional SeedSettingScheduling scheduling = 2; // ShootDNS controls the shoot DNS settings for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Do not use it. // +optional optional SeedSettingShootDNS shootDNS = 3; @@ -2091,6 +2121,7 @@ message ServiceAccountConfig { // SigningKeySecret is a reference to a secret that contains an optional private key of the // service account token issuer. The issuer will sign issued ID tokens with this private key. // Only useful if service account tokens are also issued by another external system. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Do not use it. // +optional optional k8s.io.api.core.v1.LocalObjectReference signingKeySecretName = 2; @@ -2181,6 +2212,29 @@ message ShootCredentialsRotation { // Observability contains information about the observability credential rotation. // +optional optional ShootObservabilityRotation observability = 4; + + // ServiceAccountKey contains information about the service account key credential rotation. + // +optional + optional ShootServiceAccountKeyRotation serviceAccountKey = 5; + + // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. + // +optional + optional ShootETCDEncryptionKeyRotation etcdEncryptionKey = 6; +} + +// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +message ShootETCDEncryptionKeyRotation { + // Phase describes the phase of the ETCD encryption key credential rotation. + optional string phase = 1; + + // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; } // ShootKubeconfigRotation contains information about the kubeconfig credential rotation. @@ -2253,6 +2307,21 @@ message ShootSSHKeypairRotation { optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; } +// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. +message ShootServiceAccountKeyRotation { + // Phase describes the phase of the service account key credential rotation. + optional string phase = 1; + + // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastInitiationTime = 3; + + // LastCompletionTime is the most recent time when the service account key credential rotation was successfully + // completed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCompletionTime = 2; +} + // ShootSpec is the specification of a Shoot. message ShootSpec { // Addons contains information about enabled/disabled addons and their configuration. @@ -2401,6 +2470,11 @@ message ShootStatus { // Credentials contains information about the shoot credentials. // +optional optional ShootCredentials credentials = 15; + + // LastHibernationTriggerTime indicates the last time when the hibernation controller + // managed to change the hibernation settings of the cluster + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHibernationTriggerTime = 16; } // ShootTemplate is a template for creating a Shoot object. @@ -2419,6 +2493,10 @@ message SystemComponents { // CoreDNS contains the settings of the Core DNS components running in the data plane of the Shoot cluster. // +optional optional CoreDNS coreDNS = 1; + + // NodeLocalDNS contains the settings of the node local DNS components running in the data plane of the Shoot cluster. + // +optional + optional NodeLocalDNS nodeLocalDNS = 2; } // Toleration is a toleration for a seed taint. 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 b0d70853..e02232c3 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 @@ -231,7 +231,7 @@ func NewWrappedLastErrors(description string, err error) *WrappedLastErrors { lastErrors = append(lastErrors, *LastErrorWithTaskID( partError.Error(), utilerrors.GetID(partError), - DeprecatedDetermineErrorCodes(utilerrors.Unwrap(partError))...)) + DeprecatedDetermineErrorCodes(partError)...)) } return &WrappedLastErrors{ 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 f04bcca3..f635b608 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 @@ -1494,6 +1494,48 @@ func IsCoreDNSAutoscalingModeUsed(systemComponents *gardencorev1beta1.SystemComp return systemComponents.CoreDNS.Autoscaling.Mode == autoscalingMode } +// IsNodeLocalDNSEnabled indicates whether the node local DNS cache is enabled or not. +// It can be enabled via the annotation (legacy) or via the shoot specification. +func IsNodeLocalDNSEnabled(systemComponents *gardencorev1beta1.SystemComponents, annotations map[string]string) bool { + fromSpec := false + if systemComponents != nil && systemComponents.NodeLocalDNS != nil { + fromSpec = systemComponents.NodeLocalDNS.Enabled + } + fromAnnotation := false + if annotationValue, err := strconv.ParseBool(annotations[v1beta1constants.AnnotationNodeLocalDNS]); err == nil { + fromAnnotation = annotationValue + } + return fromSpec || fromAnnotation +} + +// IsTCPEnforcedForNodeLocalDNSToClusterDNS indicates whether TCP is enforced for connections from the node local DNS cache to the cluster DNS (Core DNS) or not. +// It can be disabled via the annotation (legacy) or via the shoot specification. +func IsTCPEnforcedForNodeLocalDNSToClusterDNS(systemComponents *gardencorev1beta1.SystemComponents, annotations map[string]string) bool { + fromSpec := true + if systemComponents != nil && systemComponents.NodeLocalDNS != nil && systemComponents.NodeLocalDNS.ForceTCPToClusterDNS != nil { + fromSpec = *systemComponents.NodeLocalDNS.ForceTCPToClusterDNS + } + fromAnnotation := true + if annotationValue, err := strconv.ParseBool(annotations[v1beta1constants.AnnotationNodeLocalDNSForceTcpToClusterDns]); err == nil { + fromAnnotation = annotationValue + } + return fromSpec && fromAnnotation +} + +// IsTCPEnforcedForNodeLocalDNSToUpstreamDNS indicates whether TCP is enforced for connections from the node local DNS cache to the upstream DNS (infrastructure DNS) or not. +// It can be disabled via the annotation (legacy) or via the shoot specification. +func IsTCPEnforcedForNodeLocalDNSToUpstreamDNS(systemComponents *gardencorev1beta1.SystemComponents, annotations map[string]string) bool { + fromSpec := true + if systemComponents != nil && systemComponents.NodeLocalDNS != nil && systemComponents.NodeLocalDNS.ForceTCPToUpstreamDNS != nil { + fromSpec = *systemComponents.NodeLocalDNS.DeepCopy().ForceTCPToUpstreamDNS + } + fromAnnotation := true + if annotationValue, err := strconv.ParseBool(annotations[v1beta1constants.AnnotationNodeLocalDNSForceTcpToUpstreamDns]); err == nil { + fromAnnotation = annotationValue + } + return fromSpec && fromAnnotation +} + // GetShootCARotationPhase returns the specified shoot CA rotation phase or an empty string func GetShootCARotationPhase(credentials *gardencorev1beta1.ShootCredentials) gardencorev1beta1.ShootCredentialsRotationPhase { if credentials != nil && credentials.Rotation != nil && credentials.Rotation.CertificateAuthorities != nil { @@ -1610,3 +1652,53 @@ func IsShootObservabilityRotationInitiationTimeAfterLastCompletionTime(credentia return credentials.Rotation.Observability.LastCompletionTime == nil || credentials.Rotation.Observability.LastCompletionTime.Before(credentials.Rotation.Observability.LastInitiationTime) } + +// GetShootServiceAccountKeyRotationPhase returns the specified shoot service account key rotation phase or an empty +// string. +func GetShootServiceAccountKeyRotationPhase(credentials *gardencorev1beta1.ShootCredentials) gardencorev1beta1.ShootCredentialsRotationPhase { + if credentials != nil && credentials.Rotation != nil && credentials.Rotation.ServiceAccountKey != nil { + return credentials.Rotation.ServiceAccountKey.Phase + } + return "" +} + +// MutateShootServiceAccountKeyRotation mutates the .status.credentials.rotation.serviceAccountKey field based on the +// provided mutation function. If the field is nil then it is initialized. +func MutateShootServiceAccountKeyRotation(shoot *gardencorev1beta1.Shoot, f func(*gardencorev1beta1.ShootServiceAccountKeyRotation)) { + if shoot.Status.Credentials == nil { + shoot.Status.Credentials = &gardencorev1beta1.ShootCredentials{} + } + if shoot.Status.Credentials.Rotation == nil { + shoot.Status.Credentials.Rotation = &gardencorev1beta1.ShootCredentialsRotation{} + } + if shoot.Status.Credentials.Rotation.ServiceAccountKey == nil { + shoot.Status.Credentials.Rotation.ServiceAccountKey = &gardencorev1beta1.ShootServiceAccountKeyRotation{} + } + + f(shoot.Status.Credentials.Rotation.ServiceAccountKey) +} + +// GetShootETCDEncryptionKeyRotationPhase returns the specified shoot ETCD encryption key rotation phase or an empty +// string. +func GetShootETCDEncryptionKeyRotationPhase(credentials *gardencorev1beta1.ShootCredentials) gardencorev1beta1.ShootCredentialsRotationPhase { + if credentials != nil && credentials.Rotation != nil && credentials.Rotation.ETCDEncryptionKey != nil { + return credentials.Rotation.ETCDEncryptionKey.Phase + } + return "" +} + +// MutateShootETCDEncryptionKeyRotation mutates the .status.credentials.rotation.etcdEncryptionKey field based on the +// provided mutation function. If the field is nil then it is initialized. +func MutateShootETCDEncryptionKeyRotation(shoot *gardencorev1beta1.Shoot, f func(*gardencorev1beta1.ShootETCDEncryptionKeyRotation)) { + if shoot.Status.Credentials == nil { + shoot.Status.Credentials = &gardencorev1beta1.ShootCredentials{} + } + if shoot.Status.Credentials.Rotation == nil { + shoot.Status.Credentials.Rotation = &gardencorev1beta1.ShootCredentialsRotation{} + } + if shoot.Status.Credentials.Rotation.ETCDEncryptionKey == nil { + shoot.Status.Credentials.Rotation.ETCDEncryptionKey = &gardencorev1beta1.ShootETCDEncryptionKeyRotation{} + } + + f(shoot.Status.Credentials.Rotation.ETCDEncryptionKey) +} 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 5e9bd2ba..8e30caad 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 @@ -121,6 +121,9 @@ type MachineImageVersion struct { // CRI list of supported container runtime and interfaces supported by this version // +optional CRI []CRI `json:"cri,omitempty" protobuf:"bytes,2,rep,name=cri"` + // Architectures is the list of CPU architectures of the machine image in this version. + // +optional + Architectures []string `json:"architectures,omitempty" protobuf:"bytes,3,opt,name=architectures"` } // ExpirableVersion contains a version and an expiration date. @@ -151,6 +154,9 @@ type MachineType struct { // Usable defines if the machine type can be used for shoot clusters. // +optional Usable *bool `json:"usable,omitempty" protobuf:"varint,6,opt,name=usable"` + // Architecture is the CPU architecture of this machine type. + // +optional + Architecture *string `json:"architecture,omitempty" protobuf:"bytes,7,opt,name=architecture"` } // MachineTypeStorage is the amount of storage associated with the root volume of this machine type. 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 848ac4a4..d71d19bd 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 @@ -148,6 +148,8 @@ const ( ProjectMemberOwner = "owner" // ProjectMemberUserAccessManager is a const for a role that provides permissions to manage human user(s, (groups)). ProjectMemberUserAccessManager = "uam" + // ProjectMemberServiceAccountManager is a const for a role that provides permissions to manage service accounts and request tokens for them. + ProjectMemberServiceAccountManager = "serviceaccountmanager" // ProjectMemberViewer is a const for a role that provides limited permissions to only view some resources. ProjectMemberViewer = "viewer" // ProjectMemberExtensionPrefix is a prefix for custom roles that are not known by Gardener. 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 927a141d..8294dc06 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 @@ -230,6 +230,7 @@ type SeedSettings struct { // +optional Scheduling *SeedSettingScheduling `json:"scheduling,omitempty" protobuf:"bytes,2,opt,name=scheduling"` // ShootDNS controls the shoot DNS settings for the seed. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Do not use it. // +optional ShootDNS *SeedSettingShootDNS `json:"shootDNS,omitempty" protobuf:"bytes,3,opt,name=shootDNS"` // LoadBalancerServices controls certain settings for services of type load balancer that are created in the seed. 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 c2648090..48d10e5f 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 @@ -28,6 +28,7 @@ import ( // +genclient // +genclient:method=CreateAdminKubeconfigRequest,verb=create,subresource=adminkubeconfig,input=github.com/gardener/gardener/pkg/apis/authentication/v1alpha1.AdminKubeconfigRequest,result=github.com/gardener/gardener/pkg/apis/authentication/v1alpha1.AdminKubeconfigRequest +// +genclient:method=UpdateBinding,verb=update,subresource=binding // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // Shoot represents a Shoot cluster created and managed by Gardener. @@ -126,7 +127,7 @@ type ShootSpec struct { ExposureClassName *string `json:"exposureClassName,omitempty" protobuf:"bytes,18,opt,name=exposureClassName"` // SystemComponents contains the settings of system components in the control or data plane of the Shoot cluster. // +optional - SystemComponents *SystemComponents `json:"systemComponents" protobuf:"bytes,19,opt,name=systemComponents"` + SystemComponents *SystemComponents `json:"systemComponents,omitempty" protobuf:"bytes,19,opt,name=systemComponents"` } // GetProviderType gets the type of the provider. @@ -188,6 +189,10 @@ type ShootStatus struct { // Credentials contains information about the shoot credentials. // +optional Credentials *ShootCredentials `json:"credentials,omitempty" protobuf:"bytes,15,opt,name=credentials"` + // LastHibernationTriggerTime indicates the last time when the hibernation controller + // managed to change the hibernation settings of the cluster + // +optional + LastHibernationTriggerTime *metav1.Time `json:"lastHibernationTriggerTime,omitempty" protobuf:"bytes,16,opt,name=lastHibernationTriggerTime"` } // ShootCredentials contains information about the shoot credentials. @@ -211,6 +216,12 @@ type ShootCredentialsRotation struct { // Observability contains information about the observability credential rotation. // +optional Observability *ShootObservabilityRotation `json:"observability,omitempty" protobuf:"bytes,4,opt,name=observability"` + // ServiceAccountKey contains information about the service account key credential rotation. + // +optional + ServiceAccountKey *ShootServiceAccountKeyRotation `json:"serviceAccountKey,omitempty" protobuf:"bytes,5,opt,name=serviceAccountKey"` + // ETCDEncryptionKey contains information about the ETCD encryption key credential rotation. + // +optional + ETCDEncryptionKey *ShootETCDEncryptionKeyRotation `json:"etcdEncryptionKey,omitempty" protobuf:"bytes,6,opt,name=etcdEncryptionKey"` } // ShootCARotation contains information about the certificate authority credential rotation. @@ -256,6 +267,32 @@ type ShootObservabilityRotation struct { LastCompletionTime *metav1.Time `json:"lastCompletionTime,omitempty" protobuf:"bytes,2,opt,name=lastCompletionTime"` } +// ShootServiceAccountKeyRotation contains information about the service account key credential rotation. +type ShootServiceAccountKeyRotation struct { + // Phase describes the phase of the service account key credential rotation. + Phase ShootCredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` + // LastInitiationTime is the most recent time when the service account key credential rotation was initiated. + // +optional + LastInitiationTime *metav1.Time `json:"lastInitiationTime,omitempty" protobuf:"bytes,3,opt,name=lastInitiationTime"` + // LastCompletionTime is the most recent time when the service account key credential rotation was successfully + // completed. + // +optional + LastCompletionTime *metav1.Time `json:"lastCompletionTime,omitempty" protobuf:"bytes,2,opt,name=lastCompletionTime"` +} + +// ShootETCDEncryptionKeyRotation contains information about the ETCD encryption key credential rotation. +type ShootETCDEncryptionKeyRotation struct { + // Phase describes the phase of the ETCD encryption key credential rotation. + Phase ShootCredentialsRotationPhase `json:"phase" protobuf:"bytes,1,opt,name=phase"` + // LastInitiationTime is the most recent time when the ETCD encryption key credential rotation was initiated. + // +optional + LastInitiationTime *metav1.Time `json:"lastInitiationTime,omitempty" protobuf:"bytes,3,opt,name=lastInitiationTime"` + // LastCompletionTime is the most recent time when the ETCD encryption key credential rotation was successfully + // completed. + // +optional + LastCompletionTime *metav1.Time `json:"lastCompletionTime,omitempty" protobuf:"bytes,2,opt,name=lastCompletionTime"` +} + // ShootCredentialsRotationPhase is a string alias. type ShootCredentialsRotationPhase string @@ -668,6 +705,7 @@ type ServiceAccountConfig struct { // SigningKeySecret is a reference to a secret that contains an optional private key of the // service account token issuer. The issuer will sign issued ID tokens with this private key. // Only useful if service account tokens are also issued by another external system. + // Deprecated: This field is deprecated and will be removed in a future version of Gardener. Do not use it. // +optional SigningKeySecret *corev1.LocalObjectReference `json:"signingKeySecretName,omitempty" protobuf:"bytes,2,opt,name=signingKeySecretName"` // ExtendTokenExpiration turns on projected service account expiration extension during token generation, which @@ -1257,6 +1295,9 @@ type Machine struct { // latest version of the first image stated in the referenced CloudProfile if no value has been provided. // +optional Image *ShootMachineImage `json:"image,omitempty" protobuf:"bytes,2,opt,name=image"` + // Architecture is CPU architecture of machines in this worker pool. + // +optional + Architecture *string `json:"architecture,omitempty" protobuf:"bytes,3,opt,name=architecture"` } // ShootMachineImage defines the name and the version of the shoot's machine image in any environment. Has to be @@ -1348,13 +1389,17 @@ var ( type SystemComponents struct { // CoreDNS contains the settings of the Core DNS components running in the data plane of the Shoot cluster. // +optional - CoreDNS *CoreDNS `json:"coreDNS" protobuf:"bytes,1,opt,name=coreDNS"` + CoreDNS *CoreDNS `json:"coreDNS,omitempty" protobuf:"bytes,1,opt,name=coreDNS"` + // NodeLocalDNS contains the settings of the node local DNS components running in the data plane of the Shoot cluster. + // +optional + NodeLocalDNS *NodeLocalDNS `json:"nodeLocalDNS,omitempty" protobuf:"bytes,2,opt,name=nodeLocalDNS"` } // CoreDNS contains the settings of the Core DNS components running in the data plane of the Shoot cluster. type CoreDNS struct { // Autoscaling contains the settings related to autoscaling of the Core DNS components running in the data plane of the Shoot cluster. - Autoscaling *CoreDNSAutoscaling `json:"autoscaling" protobuf:"bytes,1,opt,name=autoscaling"` + // +optional + Autoscaling *CoreDNSAutoscaling `json:"autoscaling,omitempty" protobuf:"bytes,1,opt,name=autoscaling"` } // CoreDNSAutoscaling contains the settings related to autoscaling of the Core DNS components running in the data plane of the Shoot cluster. @@ -1374,6 +1419,20 @@ const ( CoreDNSAutoscalingModeClusterProportional CoreDNSAutoscalingMode = "cluster-proportional" ) +// NodeLocalDNS contains the settings of the node local DNS components running in the data plane of the Shoot cluster. +type NodeLocalDNS struct { + // Enabled indicates whether node local DNS is enabled or not. + Enabled bool `json:"enabled" protobuf:"varint,1,opt,name=enabled"` + // ForceTCPToClusterDNS indicates whether the connection from the node local DNS to the cluster DNS (Core DNS) will be forced to TCP or not. + // Default, if unspecified, is to enforce TCP. + // +optional + ForceTCPToClusterDNS *bool `json:"forceTCPToClusterDNS,omitempty" protobuf:"varint,2,opt,name=forceTCPToClusterDNS"` + // ForceTCPToUpstreamDNS indicates whether the connection from the node local DNS to the upstream DNS (infrastructure DNS) will be forced to TCP or not. + // Default, if unspecified, is to enforce TCP. + // +optional + ForceTCPToUpstreamDNS *bool `json:"forceTCPToUpstreamDNS,omitempty" protobuf:"varint,3,opt,name=forceTCPToUpstreamDNS"` +} + ////////////////////////////////////////////////////////////////////////////////////////////////// // Other/miscellaneous constants and types // ////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1407,6 +1466,9 @@ const ( // ShootMaintenancePreconditionsSatisfied is a constant for a condition type indicating whether all preconditions // for a shoot maintenance operation are satisfied. ShootMaintenancePreconditionsSatisfied ConditionType = "MaintenancePreconditionsSatisfied" + // ShootCACertificateValiditiesAcceptable is a constant for a condition type indicating that the validities of all + // CA certificates is long enough. + ShootCACertificateValiditiesAcceptable ConditionType = "CACertificateValiditiesAcceptable" ) // ShootPurpose is a type alias for string. 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 8ef08b71..51a81163 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 @@ -862,6 +862,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*NodeLocalDNS)(nil), (*core.NodeLocalDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_NodeLocalDNS_To_core_NodeLocalDNS(a.(*NodeLocalDNS), b.(*core.NodeLocalDNS), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.NodeLocalDNS)(nil), (*NodeLocalDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_NodeLocalDNS_To_v1beta1_NodeLocalDNS(a.(*core.NodeLocalDNS), b.(*NodeLocalDNS), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*OIDCConfig)(nil), (*core.OIDCConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_OIDCConfig_To_core_OIDCConfig(a.(*OIDCConfig), b.(*core.OIDCConfig), scope) }); err != nil { @@ -1352,6 +1362,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ShootETCDEncryptionKeyRotation)(nil), (*core.ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(a.(*ShootETCDEncryptionKeyRotation), b.(*core.ShootETCDEncryptionKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ShootETCDEncryptionKeyRotation)(nil), (*ShootETCDEncryptionKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(a.(*core.ShootETCDEncryptionKeyRotation), b.(*ShootETCDEncryptionKeyRotation), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*ShootKubeconfigRotation)(nil), (*core.ShootKubeconfigRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(a.(*ShootKubeconfigRotation), b.(*core.ShootKubeconfigRotation), scope) }); err != nil { @@ -1412,6 +1432,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*ShootServiceAccountKeyRotation)(nil), (*core.ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(a.(*ShootServiceAccountKeyRotation), b.(*core.ShootServiceAccountKeyRotation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ShootServiceAccountKeyRotation)(nil), (*ShootServiceAccountKeyRotation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(a.(*core.ShootServiceAccountKeyRotation), b.(*ShootServiceAccountKeyRotation), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*ShootSpec)(nil), (*core.ShootSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_ShootSpec_To_core_ShootSpec(a.(*ShootSpec), b.(*core.ShootSpec), scope) }); err != nil { @@ -3374,6 +3404,7 @@ func autoConvert_v1beta1_Machine_To_core_Machine(in *Machine, out *core.Machine, } else { out.Image = nil } + out.Architecture = (*string)(unsafe.Pointer(in.Architecture)) return nil } @@ -3393,6 +3424,7 @@ func autoConvert_core_Machine_To_v1beta1_Machine(in *core.Machine, out *Machine, } else { out.Image = nil } + out.Architecture = (*string)(unsafe.Pointer(in.Architecture)) return nil } @@ -3456,6 +3488,7 @@ func autoConvert_v1beta1_MachineImageVersion_To_core_MachineImageVersion(in *Mac return err } out.CRI = *(*[]core.CRI)(unsafe.Pointer(&in.CRI)) + out.Architectures = *(*[]string)(unsafe.Pointer(&in.Architectures)) return nil } @@ -3469,6 +3502,7 @@ func autoConvert_core_MachineImageVersion_To_v1beta1_MachineImageVersion(in *cor return err } out.CRI = *(*[]CRI)(unsafe.Pointer(&in.CRI)) + out.Architectures = *(*[]string)(unsafe.Pointer(&in.Architectures)) return nil } @@ -3484,6 +3518,7 @@ func autoConvert_v1beta1_MachineType_To_core_MachineType(in *MachineType, out *c out.Name = in.Name out.Storage = (*core.MachineTypeStorage)(unsafe.Pointer(in.Storage)) out.Usable = (*bool)(unsafe.Pointer(in.Usable)) + out.Architecture = (*string)(unsafe.Pointer(in.Architecture)) return nil } @@ -3499,6 +3534,7 @@ func autoConvert_core_MachineType_To_v1beta1_MachineType(in *core.MachineType, o out.Name = in.Name out.Storage = (*MachineTypeStorage)(unsafe.Pointer(in.Storage)) out.Usable = (*bool)(unsafe.Pointer(in.Usable)) + out.Architecture = (*string)(unsafe.Pointer(in.Architecture)) return nil } @@ -3701,6 +3737,30 @@ func Convert_core_NginxIngress_To_v1beta1_NginxIngress(in *core.NginxIngress, ou return autoConvert_core_NginxIngress_To_v1beta1_NginxIngress(in, out, s) } +func autoConvert_v1beta1_NodeLocalDNS_To_core_NodeLocalDNS(in *NodeLocalDNS, out *core.NodeLocalDNS, s conversion.Scope) error { + out.Enabled = in.Enabled + out.ForceTCPToClusterDNS = (*bool)(unsafe.Pointer(in.ForceTCPToClusterDNS)) + out.ForceTCPToUpstreamDNS = (*bool)(unsafe.Pointer(in.ForceTCPToUpstreamDNS)) + return nil +} + +// Convert_v1beta1_NodeLocalDNS_To_core_NodeLocalDNS is an autogenerated conversion function. +func Convert_v1beta1_NodeLocalDNS_To_core_NodeLocalDNS(in *NodeLocalDNS, out *core.NodeLocalDNS, s conversion.Scope) error { + return autoConvert_v1beta1_NodeLocalDNS_To_core_NodeLocalDNS(in, out, s) +} + +func autoConvert_core_NodeLocalDNS_To_v1beta1_NodeLocalDNS(in *core.NodeLocalDNS, out *NodeLocalDNS, s conversion.Scope) error { + out.Enabled = in.Enabled + out.ForceTCPToClusterDNS = (*bool)(unsafe.Pointer(in.ForceTCPToClusterDNS)) + out.ForceTCPToUpstreamDNS = (*bool)(unsafe.Pointer(in.ForceTCPToUpstreamDNS)) + return nil +} + +// Convert_core_NodeLocalDNS_To_v1beta1_NodeLocalDNS is an autogenerated conversion function. +func Convert_core_NodeLocalDNS_To_v1beta1_NodeLocalDNS(in *core.NodeLocalDNS, out *NodeLocalDNS, s conversion.Scope) error { + return autoConvert_core_NodeLocalDNS_To_v1beta1_NodeLocalDNS(in, out, s) +} + func autoConvert_v1beta1_OIDCConfig_To_core_OIDCConfig(in *OIDCConfig, out *core.OIDCConfig, s conversion.Scope) error { out.CABundle = (*string)(unsafe.Pointer(in.CABundle)) out.ClientAuthentication = (*core.OpenIDConnectClientAuthentication)(unsafe.Pointer(in.ClientAuthentication)) @@ -5015,6 +5075,8 @@ func autoConvert_v1beta1_ShootCredentialsRotation_To_core_ShootCredentialsRotati out.Kubeconfig = (*core.ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*core.ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*core.ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) + out.ServiceAccountKey = (*core.ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*core.ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5028,6 +5090,8 @@ func autoConvert_core_ShootCredentialsRotation_To_v1beta1_ShootCredentialsRotati out.Kubeconfig = (*ShootKubeconfigRotation)(unsafe.Pointer(in.Kubeconfig)) out.SSHKeypair = (*ShootSSHKeypairRotation)(unsafe.Pointer(in.SSHKeypair)) out.Observability = (*ShootObservabilityRotation)(unsafe.Pointer(in.Observability)) + out.ServiceAccountKey = (*ShootServiceAccountKeyRotation)(unsafe.Pointer(in.ServiceAccountKey)) + out.ETCDEncryptionKey = (*ShootETCDEncryptionKeyRotation)(unsafe.Pointer(in.ETCDEncryptionKey)) return nil } @@ -5036,6 +5100,30 @@ func Convert_core_ShootCredentialsRotation_To_v1beta1_ShootCredentialsRotation(i return autoConvert_core_ShootCredentialsRotation_To_v1beta1_ShootCredentialsRotation(in, out, s) } +func autoConvert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = core.ShootCredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + return nil +} + +// Convert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in *ShootETCDEncryptionKeyRotation, out *core.ShootETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_v1beta1_ShootETCDEncryptionKeyRotation_To_core_ShootETCDEncryptionKeyRotation(in, out, s) +} + +func autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { + out.Phase = ShootCredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + return nil +} + +// Convert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation is an autogenerated conversion function. +func Convert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(in *core.ShootETCDEncryptionKeyRotation, out *ShootETCDEncryptionKeyRotation, s conversion.Scope) error { + return autoConvert_core_ShootETCDEncryptionKeyRotation_To_v1beta1_ShootETCDEncryptionKeyRotation(in, out, s) +} + func autoConvert_v1beta1_ShootKubeconfigRotation_To_core_ShootKubeconfigRotation(in *ShootKubeconfigRotation, out *core.ShootKubeconfigRotation, s conversion.Scope) error { out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) @@ -5194,6 +5282,30 @@ func Convert_core_ShootSSHKeypairRotation_To_v1beta1_ShootSSHKeypairRotation(in return autoConvert_core_ShootSSHKeypairRotation_To_v1beta1_ShootSSHKeypairRotation(in, out, s) } +func autoConvert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = core.ShootCredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + return nil +} + +// Convert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in *ShootServiceAccountKeyRotation, out *core.ShootServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_v1beta1_ShootServiceAccountKeyRotation_To_core_ShootServiceAccountKeyRotation(in, out, s) +} + +func autoConvert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { + out.Phase = ShootCredentialsRotationPhase(in.Phase) + out.LastInitiationTime = (*metav1.Time)(unsafe.Pointer(in.LastInitiationTime)) + out.LastCompletionTime = (*metav1.Time)(unsafe.Pointer(in.LastCompletionTime)) + return nil +} + +// Convert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation is an autogenerated conversion function. +func Convert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(in *core.ShootServiceAccountKeyRotation, out *ShootServiceAccountKeyRotation, s conversion.Scope) error { + return autoConvert_core_ShootServiceAccountKeyRotation_To_v1beta1_ShootServiceAccountKeyRotation(in, out, s) +} + func autoConvert_v1beta1_ShootSpec_To_core_ShootSpec(in *ShootSpec, out *core.ShootSpec, s conversion.Scope) error { out.Addons = (*core.Addons)(unsafe.Pointer(in.Addons)) out.CloudProfileName = in.CloudProfileName @@ -5280,6 +5392,7 @@ func autoConvert_v1beta1_ShootStatus_To_core_ShootStatus(in *ShootStatus, out *c out.AdvertisedAddresses = *(*[]core.ShootAdvertisedAddress)(unsafe.Pointer(&in.AdvertisedAddresses)) out.MigrationStartTime = (*metav1.Time)(unsafe.Pointer(in.MigrationStartTime)) out.Credentials = (*core.ShootCredentials)(unsafe.Pointer(in.Credentials)) + out.LastHibernationTriggerTime = (*metav1.Time)(unsafe.Pointer(in.LastHibernationTriggerTime)) return nil } @@ -5295,6 +5408,7 @@ func autoConvert_core_ShootStatus_To_v1beta1_ShootStatus(in *core.ShootStatus, o return err } out.IsHibernated = in.IsHibernated + out.LastHibernationTriggerTime = (*metav1.Time)(unsafe.Pointer(in.LastHibernationTriggerTime)) out.LastOperation = (*LastOperation)(unsafe.Pointer(in.LastOperation)) out.LastErrors = *(*[]LastError)(unsafe.Pointer(&in.LastErrors)) out.ObservedGeneration = in.ObservedGeneration @@ -5342,6 +5456,7 @@ func Convert_core_ShootTemplate_To_v1beta1_ShootTemplate(in *core.ShootTemplate, func autoConvert_v1beta1_SystemComponents_To_core_SystemComponents(in *SystemComponents, out *core.SystemComponents, s conversion.Scope) error { out.CoreDNS = (*core.CoreDNS)(unsafe.Pointer(in.CoreDNS)) + out.NodeLocalDNS = (*core.NodeLocalDNS)(unsafe.Pointer(in.NodeLocalDNS)) return nil } @@ -5352,6 +5467,7 @@ func Convert_v1beta1_SystemComponents_To_core_SystemComponents(in *SystemCompone func autoConvert_core_SystemComponents_To_v1beta1_SystemComponents(in *core.SystemComponents, out *SystemComponents, s conversion.Scope) error { out.CoreDNS = (*CoreDNS)(unsafe.Pointer(in.CoreDNS)) + out.NodeLocalDNS = (*NodeLocalDNS)(unsafe.Pointer(in.NodeLocalDNS)) 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 8f93787f..2131a4a1 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 @@ -2092,6 +2092,11 @@ func (in *Machine) DeepCopyInto(out *Machine) { *out = new(ShootMachineImage) (*in).DeepCopyInto(*out) } + if in.Architecture != nil { + in, out := &in.Architecture, &out.Architecture + *out = new(string) + **out = **in + } return } @@ -2180,6 +2185,11 @@ func (in *MachineImageVersion) DeepCopyInto(out *MachineImageVersion) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Architectures != nil { + in, out := &in.Architectures, &out.Architectures + *out = make([]string, len(*in)) + copy(*out, *in) + } return } @@ -2209,6 +2219,11 @@ func (in *MachineType) DeepCopyInto(out *MachineType) { *out = new(bool) **out = **in } + if in.Architecture != nil { + in, out := &in.Architecture, &out.Architecture + *out = new(string) + **out = **in + } return } @@ -2419,6 +2434,32 @@ func (in *NginxIngress) DeepCopy() *NginxIngress { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeLocalDNS) DeepCopyInto(out *NodeLocalDNS) { + *out = *in + if in.ForceTCPToClusterDNS != nil { + in, out := &in.ForceTCPToClusterDNS, &out.ForceTCPToClusterDNS + *out = new(bool) + **out = **in + } + if in.ForceTCPToUpstreamDNS != nil { + in, out := &in.ForceTCPToUpstreamDNS, &out.ForceTCPToUpstreamDNS + *out = new(bool) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeLocalDNS. +func (in *NodeLocalDNS) DeepCopy() *NodeLocalDNS { + if in == nil { + return nil + } + out := new(NodeLocalDNS) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *OIDCConfig) DeepCopyInto(out *OIDCConfig) { *out = *in @@ -3852,6 +3893,16 @@ func (in *ShootCredentialsRotation) DeepCopyInto(out *ShootCredentialsRotation) *out = new(ShootObservabilityRotation) (*in).DeepCopyInto(*out) } + if in.ServiceAccountKey != nil { + in, out := &in.ServiceAccountKey, &out.ServiceAccountKey + *out = new(ShootServiceAccountKeyRotation) + (*in).DeepCopyInto(*out) + } + if in.ETCDEncryptionKey != nil { + in, out := &in.ETCDEncryptionKey, &out.ETCDEncryptionKey + *out = new(ShootETCDEncryptionKeyRotation) + (*in).DeepCopyInto(*out) + } return } @@ -3865,6 +3916,30 @@ func (in *ShootCredentialsRotation) DeepCopy() *ShootCredentialsRotation { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShootETCDEncryptionKeyRotation) DeepCopyInto(out *ShootETCDEncryptionKeyRotation) { + *out = *in + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootETCDEncryptionKeyRotation. +func (in *ShootETCDEncryptionKeyRotation) DeepCopy() *ShootETCDEncryptionKeyRotation { + if in == nil { + return nil + } + out := new(ShootETCDEncryptionKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootKubeconfigRotation) DeepCopyInto(out *ShootKubeconfigRotation) { *out = *in @@ -4022,6 +4097,30 @@ func (in *ShootSSHKeypairRotation) DeepCopy() *ShootSSHKeypairRotation { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShootServiceAccountKeyRotation) DeepCopyInto(out *ShootServiceAccountKeyRotation) { + *out = *in + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootServiceAccountKeyRotation. +func (in *ShootServiceAccountKeyRotation) DeepCopy() *ShootServiceAccountKeyRotation { + if in == nil { + return nil + } + out := new(ShootServiceAccountKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = *in @@ -4168,6 +4267,10 @@ func (in *ShootStatus) DeepCopyInto(out *ShootStatus) { *out = new(ShootCredentials) (*in).DeepCopyInto(*out) } + if in.LastHibernationTriggerTime != nil { + in, out := &in.LastHibernationTriggerTime, &out.LastHibernationTriggerTime + *out = (*in).DeepCopy() + } return } @@ -4207,6 +4310,11 @@ func (in *SystemComponents) DeepCopyInto(out *SystemComponents) { *out = new(CoreDNS) (*in).DeepCopyInto(*out) } + if in.NodeLocalDNS != nil { + in, out := &in.NodeLocalDNS, &out.NodeLocalDNS + *out = new(NodeLocalDNS) + (*in).DeepCopyInto(*out) + } 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 c0681ade..97f7bbb3 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 @@ -45,6 +45,13 @@ func RegisterDefaults(scheme *runtime.Scheme) error { } func SetObjectDefaults_CloudProfile(in *CloudProfile) { + for i := range in.Spec.MachineImages { + a := &in.Spec.MachineImages[i] + for j := range a.Versions { + b := &a.Versions[j] + SetDefaults_MachineImageVersion(b) + } + } for i := range in.Spec.MachineTypes { a := &in.Spec.MachineTypes[i] SetDefaults_MachineType(a) 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 0652b5dc..f25826c2 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 @@ -2246,6 +2246,11 @@ func (in *Machine) DeepCopyInto(out *Machine) { *out = new(ShootMachineImage) (*in).DeepCopyInto(*out) } + if in.Architecture != nil { + in, out := &in.Architecture, &out.Architecture + *out = new(string) + **out = **in + } return } @@ -2334,6 +2339,11 @@ func (in *MachineImageVersion) DeepCopyInto(out *MachineImageVersion) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Architectures != nil { + in, out := &in.Architectures, &out.Architectures + *out = make([]string, len(*in)) + copy(*out, *in) + } return } @@ -2363,6 +2373,11 @@ func (in *MachineType) DeepCopyInto(out *MachineType) { *out = new(bool) **out = **in } + if in.Architecture != nil { + in, out := &in.Architecture, &out.Architecture + *out = new(string) + **out = **in + } return } @@ -2573,6 +2588,32 @@ func (in *NginxIngress) DeepCopy() *NginxIngress { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeLocalDNS) DeepCopyInto(out *NodeLocalDNS) { + *out = *in + if in.ForceTCPToClusterDNS != nil { + in, out := &in.ForceTCPToClusterDNS, &out.ForceTCPToClusterDNS + *out = new(bool) + **out = **in + } + if in.ForceTCPToUpstreamDNS != nil { + in, out := &in.ForceTCPToUpstreamDNS, &out.ForceTCPToUpstreamDNS + *out = new(bool) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeLocalDNS. +func (in *NodeLocalDNS) DeepCopy() *NodeLocalDNS { + if in == nil { + return nil + } + out := new(NodeLocalDNS) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *OIDCConfig) DeepCopyInto(out *OIDCConfig) { *out = *in @@ -4024,6 +4065,16 @@ func (in *ShootCredentialsRotation) DeepCopyInto(out *ShootCredentialsRotation) *out = new(ShootObservabilityRotation) (*in).DeepCopyInto(*out) } + if in.ServiceAccountKey != nil { + in, out := &in.ServiceAccountKey, &out.ServiceAccountKey + *out = new(ShootServiceAccountKeyRotation) + (*in).DeepCopyInto(*out) + } + if in.ETCDEncryptionKey != nil { + in, out := &in.ETCDEncryptionKey, &out.ETCDEncryptionKey + *out = new(ShootETCDEncryptionKeyRotation) + (*in).DeepCopyInto(*out) + } return } @@ -4037,6 +4088,30 @@ func (in *ShootCredentialsRotation) DeepCopy() *ShootCredentialsRotation { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShootETCDEncryptionKeyRotation) DeepCopyInto(out *ShootETCDEncryptionKeyRotation) { + *out = *in + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootETCDEncryptionKeyRotation. +func (in *ShootETCDEncryptionKeyRotation) DeepCopy() *ShootETCDEncryptionKeyRotation { + if in == nil { + return nil + } + out := new(ShootETCDEncryptionKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootKubeconfigRotation) DeepCopyInto(out *ShootKubeconfigRotation) { *out = *in @@ -4189,6 +4264,30 @@ func (in *ShootSSHKeypairRotation) DeepCopy() *ShootSSHKeypairRotation { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShootServiceAccountKeyRotation) DeepCopyInto(out *ShootServiceAccountKeyRotation) { + *out = *in + if in.LastInitiationTime != nil { + in, out := &in.LastInitiationTime, &out.LastInitiationTime + *out = (*in).DeepCopy() + } + if in.LastCompletionTime != nil { + in, out := &in.LastCompletionTime, &out.LastCompletionTime + *out = (*in).DeepCopy() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShootServiceAccountKeyRotation. +func (in *ShootServiceAccountKeyRotation) DeepCopy() *ShootServiceAccountKeyRotation { + if in == nil { + return nil + } + out := new(ShootServiceAccountKeyRotation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShootSpec) DeepCopyInto(out *ShootSpec) { *out = *in @@ -4392,6 +4491,10 @@ func (in *ShootStatus) DeepCopyInto(out *ShootStatus) { } } out.Gardener = in.Gardener + if in.LastHibernationTriggerTime != nil { + in, out := &in.LastHibernationTriggerTime, &out.LastHibernationTriggerTime + *out = (*in).DeepCopy() + } if in.LastOperation != nil { in, out := &in.LastOperation, &out.LastOperation *out = new(LastOperation) @@ -4471,6 +4574,11 @@ func (in *SystemComponents) DeepCopyInto(out *SystemComponents) { *out = new(CoreDNS) (*in).DeepCopyInto(*out) } + if in.NodeLocalDNS != nil { + in, out := &in.NodeLocalDNS, &out.NodeLocalDNS + *out = new(NodeLocalDNS) + (*in).DeepCopyInto(*out) + } return } 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 7ef73be0..fd9394df 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 @@ -151,6 +151,9 @@ type WorkerPool struct { // NodeTemplate contains resource information of the machine which is used by Cluster Autoscaler to generate nodeTemplate during scaling a nodeGroup from zero // +optional NodeTemplate *NodeTemplate `json:"nodeTemplate,omitempty"` + // Architecture is the CPU architecture of the worker pool machines and machine image. + // +optional + Architecture *string `json:"architecture,omitempty"` } // NodeTemplate contains information about the expected node properties. 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 71ab4715..176d86e7 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 @@ -1693,6 +1693,11 @@ func (in *WorkerPool) DeepCopyInto(out *WorkerPool) { *out = new(NodeTemplate) (*in).DeepCopyInto(*out) } + if in.Architecture != nil { + in, out := &in.Architecture, &out.Architecture + *out = new(string) + **out = **in + } return } 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 1e8328ca..06799b47 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 @@ -199,57 +199,57 @@ func init() { } var fileDescriptor_a8b335fad1255a79 = []byte{ - // 789 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xcf, 0x6f, 0xe3, 0x44, - 0x14, 0xc7, 0xe3, 0x36, 0xdd, 0x66, 0xa7, 0x59, 0x58, 0xcd, 0xae, 0x4a, 0xd4, 0x83, 0x53, 0x72, - 0x21, 0x42, 0x62, 0x42, 0x57, 0x2b, 0xb4, 0x5c, 0x38, 0x78, 0xc5, 0xd2, 0x88, 0xb2, 0x8d, 0x26, - 0x2b, 0x0e, 0x88, 0x03, 0x13, 0xfb, 0xd5, 0x19, 0x12, 0x7b, 0xac, 0x99, 0x49, 0x20, 0x1c, 0x10, - 0x7f, 0x02, 0xe2, 0x9f, 0xa2, 0xc7, 0x3d, 0x70, 0xd8, 0x53, 0x44, 0xcd, 0x9f, 0xc1, 0x05, 0x79, - 0x3c, 0x8e, 0x1d, 0x92, 0x8a, 0x40, 0xb9, 0x79, 0xde, 0xbc, 0xf7, 0xf9, 0xbe, 0x5f, 0x1e, 0xd4, - 0x0f, 0xb9, 0x1e, 0xcf, 0x46, 0xc4, 0x17, 0x51, 0x2f, 0x64, 0x32, 0x80, 0x18, 0x64, 0xf9, 0x91, - 0x4c, 0xc2, 0x1e, 0x4b, 0xb8, 0xea, 0x89, 0x04, 0x24, 0xd3, 0x5c, 0xc4, 0xaa, 0x37, 0x3f, 0x63, - 0xd3, 0x64, 0xcc, 0xce, 0x7a, 0x61, 0xe6, 0xc2, 0x34, 0x04, 0x24, 0x91, 0x42, 0x0b, 0xfc, 0x71, - 0x89, 0x22, 0x05, 0xa1, 0xfc, 0x48, 0x26, 0x21, 0xc9, 0x50, 0xa4, 0x44, 0x91, 0x02, 0x75, 0xf2, - 0x7c, 0xb7, 0x2c, 0x7c, 0x21, 0xe1, 0x56, 0xfd, 0x93, 0x0f, 0xaa, 0x10, 0x11, 0x8a, 0x9e, 0x31, - 0x8f, 0x66, 0x57, 0xe6, 0x64, 0x0e, 0xe6, 0xcb, 0xba, 0x77, 0x26, 0xcf, 0x14, 0xe1, 0x22, 0x23, - 0x17, 0xe0, 0x0d, 0x64, 0xb7, 0xe2, 0x13, 0x83, 0xfe, 0x4e, 0xc8, 0x09, 0x8f, 0xc3, 0x6d, 0x9e, - 0x4f, 0x4b, 0xcf, 0x88, 0xf9, 0x63, 0x1e, 0x83, 0x5c, 0x94, 0x89, 0x47, 0xa0, 0xd9, 0xb6, 0xa8, - 0xde, 0x6d, 0x51, 0x72, 0x16, 0x6b, 0x1e, 0xc1, 0x46, 0xc0, 0x47, 0xff, 0x14, 0xa0, 0xfc, 0x31, - 0x44, 0xec, 0xef, 0x71, 0x9d, 0x5f, 0xf7, 0xd0, 0xa1, 0xc7, 0x54, 0xd6, 0x76, 0xfc, 0x0d, 0x6a, - 0x64, 0xf9, 0x04, 0x4c, 0xb3, 0x96, 0x73, 0xea, 0x74, 0x8f, 0x9e, 0x7c, 0x48, 0x72, 0x2c, 0xa9, - 0x62, 0xcb, 0x89, 0x65, 0xde, 0x64, 0x7e, 0x46, 0x2e, 0x47, 0xdf, 0x82, 0xaf, 0xbf, 0x00, 0xcd, - 0x3c, 0x7c, 0xbd, 0x6c, 0xd7, 0xd2, 0x65, 0x1b, 0x95, 0x36, 0xba, 0xa2, 0xe2, 0x31, 0xaa, 0xab, - 0x04, 0xfc, 0xd6, 0x9e, 0xa1, 0xbf, 0x20, 0xff, 0x79, 0x31, 0x88, 0xcd, 0x79, 0x98, 0x80, 0xef, - 0x35, 0xad, 0x66, 0x3d, 0x3b, 0x51, 0xa3, 0x80, 0x13, 0x74, 0x4f, 0x69, 0xa6, 0x67, 0xaa, 0xb5, - 0x6f, 0xb4, 0xce, 0xff, 0x07, 0x2d, 0xc3, 0xf3, 0xde, 0xb2, 0x6a, 0xf7, 0xf2, 0x33, 0xb5, 0x3a, - 0x9d, 0x00, 0x3d, 0xb6, 0x8e, 0xfd, 0x38, 0x94, 0xa0, 0xd4, 0x40, 0x4c, 0xb9, 0xbf, 0xc0, 0x17, - 0xe8, 0x90, 0x27, 0xde, 0x54, 0xf8, 0x13, 0xdb, 0xd4, 0x77, 0x2b, 0x4d, 0x25, 0xe5, 0xf2, 0x64, - 0x8d, 0xec, 0x0f, 0x8c, 0xa3, 0xf7, 0xb6, 0xd5, 0x38, 0xb4, 0x06, 0x5a, 0x20, 0x3a, 0xbf, 0x39, - 0xe8, 0xc8, 0xca, 0x5c, 0x70, 0xa5, 0xf1, 0xd7, 0x1b, 0x33, 0x23, 0xbb, 0xcd, 0x2c, 0x8b, 0x36, - 0x13, 0x7b, 0x68, 0xb5, 0x1a, 0x85, 0xa5, 0x32, 0xaf, 0x10, 0x1d, 0x70, 0x0d, 0x91, 0x6a, 0xed, - 0x9d, 0xee, 0x77, 0x8f, 0x9e, 0x78, 0x77, 0x6f, 0xa2, 0xf7, 0xc0, 0xca, 0x1d, 0xf4, 0x33, 0x30, - 0xcd, 0xf9, 0x9d, 0x3f, 0xf7, 0x56, 0x65, 0x65, 0x43, 0xc4, 0x5f, 0xa2, 0x86, 0x1a, 0x0b, 0xa1, - 0x29, 0x5c, 0xd9, 0xb2, 0xba, 0xd5, 0xae, 0x65, 0xbf, 0xa5, 0x29, 0x42, 0xf8, 0x6c, 0x9a, 0x6f, - 0x1a, 0x85, 0x2b, 0x90, 0x10, 0xfb, 0x50, 0x16, 0x34, 0xb4, 0x04, 0xba, 0x62, 0xe1, 0x2e, 0x6a, - 0x28, 0x80, 0xe0, 0x25, 0x8b, 0xc0, 0x2c, 0xe1, 0x7d, 0xaf, 0x69, 0x3c, 0xad, 0x8d, 0xae, 0x6e, - 0xf1, 0x53, 0xd4, 0x4c, 0xa4, 0x98, 0xf3, 0x00, 0xe4, 0xab, 0x45, 0x02, 0x66, 0x8d, 0xee, 0x7b, - 0x0f, 0xd3, 0x65, 0xbb, 0x39, 0xa8, 0xd8, 0xe9, 0x9a, 0x17, 0x7e, 0x86, 0x9a, 0x4a, 0x8d, 0x07, - 0xb3, 0xd1, 0x94, 0xfb, 0x9f, 0xc3, 0xa2, 0x55, 0x37, 0x51, 0x8f, 0x6d, 0x46, 0xcd, 0xe1, 0xf0, - 0x7c, 0x75, 0x47, 0xd7, 0x3c, 0xf1, 0x0f, 0xe8, 0x90, 0xe7, 0x7b, 0xd3, 0x3a, 0x30, 0xcd, 0xbe, - 0xbc, 0x7b, 0xb3, 0xd7, 0x16, 0xb1, 0xb2, 0x54, 0xb9, 0x99, 0x16, 0x82, 0x9d, 0x5f, 0xea, 0xe8, - 0xc1, 0xda, 0x92, 0xe3, 0x97, 0x65, 0x36, 0x79, 0xfb, 0xdf, 0xdb, 0xde, 0x7e, 0x16, 0x78, 0x6c, - 0xca, 0x62, 0x1f, 0xa4, 0x85, 0x7a, 0x47, 0xdb, 0x14, 0xb0, 0x44, 0xc8, 0x17, 0x71, 0xc0, 0x4d, - 0x9e, 0x76, 0x9b, 0x3e, 0xd9, 0xb1, 0x40, 0xab, 0x66, 0x4b, 0x7b, 0x5e, 0x60, 0xca, 0xa7, 0x66, - 0x65, 0x52, 0xb4, 0xa2, 0x82, 0x7f, 0x44, 0xc7, 0x53, 0xa6, 0xf4, 0x39, 0x30, 0xa9, 0x47, 0xc0, - 0xf4, 0x2b, 0x1e, 0x81, 0xd2, 0x2c, 0x4a, 0xec, 0x93, 0xf0, 0xfe, 0x6e, 0x3f, 0x4a, 0x16, 0xe6, - 0x9d, 0xa4, 0xcb, 0xf6, 0xf1, 0xc5, 0x56, 0x1a, 0xbd, 0x45, 0x05, 0xcf, 0xd0, 0x23, 0xf8, 0x3e, - 0xe1, 0xf9, 0x70, 0x4a, 0xf1, 0xfa, 0xbf, 0x16, 0x7f, 0x27, 0x5d, 0xb6, 0x1f, 0x7d, 0xba, 0x89, - 0xa2, 0xdb, 0xf8, 0xf8, 0x05, 0xc2, 0x62, 0xa4, 0x40, 0xce, 0x21, 0xf8, 0x2c, 0x7f, 0xec, 0xb9, - 0x88, 0x5b, 0x07, 0xa7, 0x4e, 0x77, 0xdf, 0x3b, 0x4e, 0x97, 0x6d, 0x7c, 0xb9, 0x71, 0x4b, 0xb7, - 0x44, 0x78, 0xe4, 0xfa, 0xc6, 0xad, 0xbd, 0xbe, 0x71, 0x6b, 0x6f, 0x6e, 0xdc, 0xda, 0x4f, 0xa9, - 0xeb, 0x5c, 0xa7, 0xae, 0xf3, 0x3a, 0x75, 0x9d, 0x37, 0xa9, 0xeb, 0xfc, 0x9e, 0xba, 0xce, 0xcf, - 0x7f, 0xb8, 0xb5, 0xaf, 0x1a, 0xc5, 0x60, 0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x5e, 0xa9, 0x86, - 0xef, 0x31, 0x08, 0x00, 0x00, + // 793 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xcf, 0x8f, 0x22, 0x45, + 0x14, 0xc7, 0x69, 0x06, 0x16, 0xb6, 0x60, 0x75, 0x53, 0xbb, 0x19, 0xc9, 0x1c, 0x9a, 0x91, 0x8b, + 0xc4, 0xc4, 0xc6, 0xd9, 0x6c, 0xcc, 0xee, 0xc5, 0x43, 0x6f, 0x5c, 0x87, 0x38, 0xee, 0x90, 0x62, + 0xe3, 0xc1, 0x98, 0x68, 0xd1, 0xfd, 0xa6, 0x29, 0xa1, 0xbb, 0x3a, 0x55, 0x05, 0x8a, 0x07, 0xe3, + 0x9f, 0x60, 0xfc, 0xa7, 0x9c, 0xe3, 0x1e, 0x3c, 0xcc, 0x89, 0x38, 0xed, 0x9f, 0xe1, 0xc5, 0x74, + 0x75, 0x41, 0x37, 0xc2, 0x44, 0x9c, 0xd9, 0x5b, 0xd7, 0xab, 0xf7, 0x3e, 0xdf, 0xf7, 0x8b, 0x0a, + 0xa8, 0x1f, 0x30, 0x35, 0x9e, 0x8d, 0x1c, 0x8f, 0x87, 0xbd, 0x80, 0x0a, 0x1f, 0x22, 0x10, 0xf9, + 0x47, 0x3c, 0x09, 0x7a, 0x34, 0x66, 0xb2, 0xc7, 0x63, 0x10, 0x54, 0x31, 0x1e, 0xc9, 0xde, 0xfc, + 0x84, 0x4e, 0xe3, 0x31, 0x3d, 0xe9, 0x05, 0xa9, 0x0b, 0x55, 0xe0, 0x3b, 0xb1, 0xe0, 0x8a, 0xe3, + 0xe7, 0x39, 0xca, 0x59, 0x11, 0xf2, 0x8f, 0x78, 0x12, 0x38, 0x29, 0xca, 0xc9, 0x51, 0xce, 0x0a, + 0x75, 0xf4, 0x62, 0xbf, 0x2c, 0x3c, 0x2e, 0xe0, 0x46, 0xfd, 0xa3, 0x8f, 0x8a, 0x10, 0x1e, 0xf0, + 0x9e, 0x36, 0x8f, 0x66, 0x17, 0xfa, 0xa4, 0x0f, 0xfa, 0xcb, 0xb8, 0x77, 0x26, 0xcf, 0xa4, 0xc3, + 0x78, 0x4a, 0x5e, 0x81, 0xb7, 0x90, 0xdd, 0x82, 0x4f, 0x04, 0xea, 0x07, 0x2e, 0x26, 0x2c, 0x0a, + 0x76, 0x79, 0x3e, 0xcd, 0x3d, 0x43, 0xea, 0x8d, 0x59, 0x04, 0x62, 0x91, 0x27, 0x1e, 0x82, 0xa2, + 0xbb, 0xa2, 0x7a, 0x37, 0x45, 0x89, 0x59, 0xa4, 0x58, 0x08, 0x5b, 0x01, 0x9f, 0xfc, 0x57, 0x80, + 0xf4, 0xc6, 0x10, 0xd2, 0x7f, 0xc7, 0x75, 0x7e, 0x2f, 0xa3, 0x9a, 0x4b, 0x65, 0xda, 0x76, 0xfc, + 0x1d, 0xaa, 0xa7, 0xf9, 0xf8, 0x54, 0xd1, 0x96, 0x75, 0x6c, 0x75, 0x1b, 0x4f, 0x3e, 0x76, 0x32, + 0xac, 0x53, 0xc4, 0xe6, 0x13, 0x4b, 0xbd, 0x9d, 0xf9, 0x89, 0x73, 0x3e, 0xfa, 0x1e, 0x3c, 0xf5, + 0x25, 0x28, 0xea, 0xe2, 0xcb, 0x65, 0xbb, 0x94, 0x2c, 0xdb, 0x28, 0xb7, 0x91, 0x35, 0x15, 0x8f, + 0x51, 0x45, 0xc6, 0xe0, 0xb5, 0xca, 0x9a, 0xfe, 0xd2, 0xb9, 0xf5, 0x62, 0x38, 0x26, 0xe7, 0x61, + 0x0c, 0x9e, 0xdb, 0x34, 0x9a, 0x95, 0xf4, 0x44, 0xb4, 0x02, 0x8e, 0xd1, 0x3d, 0xa9, 0xa8, 0x9a, + 0xc9, 0xd6, 0x81, 0xd6, 0x3a, 0x7d, 0x0b, 0x5a, 0x9a, 0xe7, 0xbe, 0x63, 0xd4, 0xee, 0x65, 0x67, + 0x62, 0x74, 0x3a, 0x3e, 0x7a, 0x6c, 0x1c, 0xfb, 0x51, 0x20, 0x40, 0xca, 0x01, 0x9f, 0x32, 0x6f, + 0x81, 0xcf, 0x50, 0x8d, 0xc5, 0xee, 0x94, 0x7b, 0x13, 0xd3, 0xd4, 0xf7, 0x0b, 0x4d, 0x75, 0xf2, + 0xe5, 0x49, 0x1b, 0xd9, 0x1f, 0x68, 0x47, 0xf7, 0x5d, 0xa3, 0x51, 0x33, 0x06, 0xb2, 0x42, 0x74, + 0xfe, 0xb0, 0x50, 0xc3, 0xc8, 0x9c, 0x31, 0xa9, 0xf0, 0x37, 0x5b, 0x33, 0x73, 0xf6, 0x9b, 0x59, + 0x1a, 0xad, 0x27, 0xf6, 0xd0, 0x68, 0xd5, 0x57, 0x96, 0xc2, 0xbc, 0x02, 0x54, 0x65, 0x0a, 0x42, + 0xd9, 0x2a, 0x1f, 0x1f, 0x74, 0x1b, 0x4f, 0xdc, 0xbb, 0x37, 0xd1, 0x7d, 0x60, 0xe4, 0xaa, 0xfd, + 0x14, 0x4c, 0x32, 0x7e, 0xe7, 0xef, 0xf2, 0xba, 0xac, 0x74, 0x88, 0xf8, 0x2b, 0x54, 0x97, 0x63, + 0xce, 0x15, 0x81, 0x0b, 0x53, 0x56, 0xb7, 0xd8, 0xb5, 0xf4, 0x67, 0xa9, 0x8b, 0xe0, 0x1e, 0x9d, + 0x66, 0x9b, 0x46, 0xe0, 0x02, 0x04, 0x44, 0x1e, 0xe4, 0x05, 0x0d, 0x0d, 0x81, 0xac, 0x59, 0xb8, + 0x8b, 0xea, 0x12, 0xc0, 0x7f, 0x45, 0x43, 0xd0, 0x4b, 0x78, 0xdf, 0x6d, 0x6a, 0x4f, 0x63, 0x23, + 0xeb, 0x5b, 0xfc, 0x14, 0x35, 0x63, 0xc1, 0xe7, 0xcc, 0x07, 0xf1, 0x7a, 0x11, 0x83, 0x5e, 0xa3, + 0xfb, 0xee, 0xc3, 0x64, 0xd9, 0x6e, 0x0e, 0x0a, 0x76, 0xb2, 0xe1, 0x85, 0x9f, 0xa1, 0xa6, 0x94, + 0xe3, 0xc1, 0x6c, 0x34, 0x65, 0xde, 0x17, 0xb0, 0x68, 0x55, 0x74, 0xd4, 0x63, 0x93, 0x51, 0x73, + 0x38, 0x3c, 0x5d, 0xdf, 0x91, 0x0d, 0x4f, 0xfc, 0x13, 0xaa, 0xb1, 0x6c, 0x6f, 0x5a, 0x55, 0xdd, + 0xec, 0xf3, 0xbb, 0x37, 0x7b, 0x63, 0x11, 0x0b, 0x4b, 0x95, 0x99, 0xc9, 0x4a, 0xb0, 0xf3, 0x5b, + 0x05, 0x3d, 0xd8, 0x58, 0x72, 0xfc, 0x2a, 0xcf, 0x26, 0x6b, 0xff, 0x07, 0xbb, 0xdb, 0x4f, 0x7d, + 0x97, 0x4e, 0x69, 0xe4, 0x81, 0x30, 0x50, 0xb7, 0xb1, 0x4b, 0x01, 0x0b, 0x84, 0x3c, 0x1e, 0xf9, + 0x4c, 0xe7, 0x69, 0xb6, 0xe9, 0xd3, 0x3d, 0x0b, 0x34, 0x6a, 0xa6, 0xb4, 0x17, 0x2b, 0x4c, 0xfe, + 0xd4, 0xac, 0x4d, 0x92, 0x14, 0x54, 0xf0, 0xcf, 0xe8, 0x70, 0x4a, 0xa5, 0x3a, 0x05, 0x2a, 0xd4, + 0x08, 0xa8, 0x7a, 0xcd, 0x42, 0x90, 0x8a, 0x86, 0xb1, 0x79, 0x12, 0x3e, 0xdc, 0xef, 0x87, 0x92, + 0x86, 0xb9, 0x47, 0xc9, 0xb2, 0x7d, 0x78, 0xb6, 0x93, 0x46, 0x6e, 0x50, 0xc1, 0x33, 0xf4, 0x08, + 0x7e, 0x8c, 0x59, 0x36, 0x9c, 0x5c, 0xbc, 0xf2, 0xbf, 0xc5, 0xdf, 0x4b, 0x96, 0xed, 0x47, 0x9f, + 0x6d, 0xa3, 0xc8, 0x2e, 0x3e, 0x7e, 0x89, 0x30, 0x1f, 0x49, 0x10, 0x73, 0xf0, 0x3f, 0xcf, 0x1e, + 0x7b, 0xc6, 0xa3, 0x56, 0xf5, 0xd8, 0xea, 0x1e, 0xb8, 0x87, 0xc9, 0xb2, 0x8d, 0xcf, 0xb7, 0x6e, + 0xc9, 0x8e, 0x08, 0xf7, 0xdb, 0xcb, 0x6b, 0xbb, 0xf4, 0xe6, 0xda, 0x2e, 0x5d, 0x5d, 0xdb, 0xa5, + 0x5f, 0x12, 0xdb, 0xba, 0x4c, 0x6c, 0xeb, 0x4d, 0x62, 0x5b, 0x57, 0x89, 0x6d, 0xfd, 0x99, 0xd8, + 0xd6, 0xaf, 0x7f, 0xd9, 0xa5, 0xaf, 0x9f, 0xdf, 0xfa, 0x6f, 0xc2, 0x3f, 0x01, 0x00, 0x00, 0xff, + 0xff, 0xe5, 0x5b, 0xfd, 0x6a, 0x62, 0x08, 0x00, 0x00, } func (m *Bastion) Marshal() (dAtA []byte, err error) { 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 18c317c7..6f68e024 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 @@ -28,7 +28,7 @@ import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; // Package-wide variables from generator "generated". -option go_package = "v1alpha1"; +option go_package = "github.com/gardener/gardener/pkg/apis/operations/v1alpha1"; // Bastion holds details about an SSH bastion for a shoot cluster. message Bastion { 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 f41eeb54..04c5fc0b 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 @@ -521,117 +521,117 @@ func init() { } var fileDescriptor_d64c05a219673fe5 = []byte{ - // 1754 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xdd, 0x8f, 0x1b, 0x49, - 0x11, 0xdf, 0xd9, 0x5d, 0x7b, 0x3d, 0xe5, 0x5d, 0x6f, 0xb6, 0xb3, 0x17, 0x7c, 0x2b, 0x61, 0xaf, - 0x2c, 0x81, 0x96, 0x8f, 0x1b, 0x93, 0xe5, 0x84, 0xc2, 0x41, 0x4e, 0x78, 0x36, 0x21, 0x77, 0xa7, - 0x6c, 0x62, 0xda, 0xbb, 0x41, 0x42, 0x3c, 0xd0, 0x9e, 0xe9, 0x78, 0x87, 0x78, 0x3e, 0x6e, 0xba, - 0xed, 0x8b, 0x85, 0x84, 0x4e, 0xbc, 0xf1, 0x80, 0x84, 0xee, 0x5f, 0x40, 0xe2, 0x6f, 0xc9, 0xe3, - 0x09, 0xf1, 0x70, 0x02, 0xc9, 0x4a, 0x0c, 0x02, 0xc1, 0x9f, 0x90, 0x07, 0x84, 0xba, 0xa7, 0xe7, - 0xd3, 0x36, 0x59, 0xb2, 0x26, 0x0f, 0xbc, 0x4d, 0xd7, 0xc7, 0xaf, 0xaa, 0xab, 0xab, 0xab, 0xaa, - 0x07, 0x4e, 0x07, 0x0e, 0xbf, 0x18, 0xf5, 0x0d, 0xcb, 0x77, 0xdb, 0x03, 0x12, 0xda, 0xd4, 0xa3, - 0x61, 0xfa, 0x11, 0x3c, 0x19, 0xb4, 0x49, 0xe0, 0xb0, 0x36, 0xa3, 0xd4, 0x76, 0x89, 0x47, 0x06, - 0xd4, 0xa5, 0x1e, 0x6f, 0x8f, 0x6f, 0x92, 0x61, 0x70, 0x41, 0x6e, 0xb6, 0x07, 0x42, 0x8c, 0x70, - 0x6a, 0x1b, 0x41, 0xe8, 0x73, 0x1f, 0xdd, 0x4e, 0xe1, 0x8c, 0x18, 0x25, 0xfd, 0x08, 0x9e, 0x0c, - 0x0c, 0x01, 0x67, 0xe4, 0xe1, 0x8c, 0x18, 0xee, 0xc0, 0xbc, 0x9c, 0x37, 0x96, 0x1f, 0xd2, 0xf6, - 0xf8, 0x66, 0x9f, 0xf2, 0x79, 0x17, 0x0e, 0xde, 0xc9, 0x62, 0xf8, 0x03, 0xbf, 0x2d, 0xc9, 0xfd, - 0xd1, 0x63, 0xb9, 0x92, 0x0b, 0xf9, 0xa5, 0xc4, 0x5b, 0x4f, 0x6e, 0x31, 0xc3, 0xf1, 0x05, 0x70, - 0x8c, 0x3b, 0x07, 0xf9, 0x6e, 0x2a, 0xe3, 0x12, 0xeb, 0xc2, 0xf1, 0x68, 0x38, 0x49, 0xbd, 0x71, - 0x29, 0x27, 0x8b, 0xb4, 0xda, 0xcb, 0xb4, 0xc2, 0x91, 0xc7, 0x1d, 0x97, 0xce, 0x29, 0x7c, 0xe7, - 0x55, 0x0a, 0xcc, 0xba, 0xa0, 0x2e, 0x29, 0xea, 0xb5, 0x9e, 0xaf, 0x83, 0x7e, 0x4f, 0x06, 0x69, - 0x48, 0x39, 0xfa, 0x95, 0x06, 0x60, 0xd3, 0x60, 0xe8, 0x4f, 0x44, 0x6c, 0xeb, 0xda, 0xa1, 0x76, - 0x54, 0x3d, 0xc6, 0xc6, 0x95, 0x0e, 0xc6, 0x48, 0xe0, 0xef, 0x24, 0xc8, 0x66, 0x6d, 0x36, 0x6d, - 0x42, 0xba, 0xc6, 0x19, 0xab, 0xe8, 0x1c, 0xca, 0x96, 0xef, 0x3d, 0x76, 0x06, 0xf5, 0x75, 0x69, - 0xff, 0x1d, 0x23, 0xda, 0x9b, 0x91, 0xdd, 0x9b, 0x34, 0xab, 0xf6, 0x66, 0x60, 0xf2, 0xc9, 0xdd, - 0xa7, 0x9c, 0x7a, 0xcc, 0xf1, 0x3d, 0xb3, 0xf6, 0x6c, 0xda, 0x5c, 0x9b, 0x4d, 0x9b, 0xe5, 0x13, - 0x09, 0x82, 0x15, 0x18, 0xba, 0x05, 0x7a, 0xdf, 0xf7, 0x39, 0xe3, 0x21, 0x09, 0xea, 0x1b, 0x87, - 0xda, 0x91, 0x6e, 0x1e, 0xcc, 0xa6, 0x4d, 0xdd, 0x8c, 0x89, 0x2f, 0xb3, 0x0b, 0x9c, 0x0a, 0xa3, - 0xdb, 0xb0, 0xeb, 0xd2, 0x70, 0x40, 0x7f, 0xec, 0xf0, 0x8b, 0x2e, 0x09, 0x45, 0x64, 0x36, 0x0f, - 0xb5, 0xa3, 0x8a, 0x79, 0x7d, 0x36, 0x6d, 0xee, 0x9e, 0xe6, 0x59, 0xb8, 0x28, 0xdb, 0xfa, 0x4c, - 0x87, 0xeb, 0x0b, 0x62, 0x80, 0xde, 0x85, 0xed, 0x90, 0x06, 0x43, 0xc7, 0x22, 0x27, 0xfe, 0x48, - 0x45, 0xbb, 0x64, 0x5e, 0x9b, 0x4d, 0x9b, 0xdb, 0x38, 0x43, 0xc7, 0x39, 0x29, 0x74, 0x1f, 0xf6, - 0x43, 0x3a, 0x76, 0xc4, 0x56, 0x3f, 0x70, 0x18, 0xf7, 0xc3, 0xc9, 0x7d, 0xc7, 0x75, 0xb8, 0x8c, - 0x55, 0xc9, 0xac, 0xcf, 0xa6, 0xcd, 0x7d, 0xbc, 0x80, 0x8f, 0x17, 0x6a, 0xa1, 0x1f, 0x02, 0x62, - 0x34, 0x1c, 0x3b, 0x16, 0xed, 0x58, 0x96, 0xc0, 0x7f, 0x40, 0x5c, 0xaa, 0xa2, 0x73, 0x63, 0x36, - 0x6d, 0xa2, 0xde, 0x1c, 0x17, 0x2f, 0xd0, 0x40, 0x14, 0x4a, 0x8e, 0x4b, 0x06, 0x54, 0x06, 0xa6, - 0x7a, 0x7c, 0xe7, 0x8a, 0x29, 0xf3, 0xa1, 0xc0, 0x32, 0xf5, 0xd9, 0xb4, 0x59, 0x92, 0x9f, 0x38, - 0x42, 0x47, 0xe7, 0xa0, 0x87, 0x94, 0xf9, 0xa3, 0xd0, 0xa2, 0xac, 0x5e, 0x92, 0xa6, 0x8e, 0x32, - 0xd9, 0x61, 0x88, 0x4b, 0x68, 0x8c, 0x6f, 0x1a, 0x58, 0x09, 0x61, 0xfa, 0xf1, 0xc8, 0x09, 0x25, - 0x38, 0x33, 0x77, 0xc4, 0x69, 0xc7, 0x1c, 0x86, 0x53, 0x24, 0xf4, 0x99, 0x06, 0x7a, 0xe0, 0xdb, - 0xf7, 0x49, 0x9f, 0x0e, 0x59, 0xbd, 0x7c, 0xb8, 0x71, 0x54, 0x3d, 0x26, 0xab, 0xcf, 0x7a, 0xa3, - 0x1b, 0xdb, 0xb8, 0xeb, 0xf1, 0x70, 0x62, 0xee, 0xa9, 0x4c, 0xd5, 0x13, 0x3a, 0x4e, 0xdd, 0x40, - 0xbf, 0xd7, 0xa0, 0x16, 0xf8, 0x76, 0xc7, 0xf3, 0x7c, 0x4e, 0xb8, 0xe3, 0x7b, 0xac, 0xbe, 0x25, - 0x3d, 0x7b, 0xfc, 0xbf, 0xf1, 0x2c, 0x63, 0x28, 0x72, 0xef, 0x86, 0x72, 0xaf, 0x96, 0x67, 0xe2, - 0x82, 0x57, 0xc8, 0x82, 0x3d, 0x62, 0xdb, 0x8e, 0x58, 0x90, 0xe1, 0x23, 0x7f, 0x38, 0x72, 0x29, - 0xab, 0x57, 0xa4, 0xab, 0x07, 0x8b, 0x0e, 0x27, 0x12, 0x31, 0xdf, 0x56, 0xf0, 0x7b, 0x9d, 0xa2, - 0x32, 0x9e, 0xc7, 0x43, 0x9f, 0xc0, 0x8d, 0x22, 0xf1, 0x54, 0x64, 0x1f, 0xab, 0xeb, 0xd2, 0x52, - 0x73, 0xb9, 0x25, 0x29, 0x67, 0x36, 0x94, 0xb9, 0x1b, 0x9d, 0x85, 0x30, 0x78, 0x09, 0x3c, 0xfa, - 0x2e, 0x6c, 0x50, 0x6f, 0x5c, 0x87, 0xe5, 0xfb, 0xb9, 0xeb, 0x8d, 0x1f, 0x91, 0xd0, 0xac, 0x2a, - 0x03, 0x1b, 0x77, 0xbd, 0x31, 0x16, 0x3a, 0xe8, 0x6d, 0xd8, 0x18, 0x07, 0xa4, 0x5e, 0x95, 0xb5, - 0x62, 0x4b, 0xb0, 0x1e, 0x75, 0x3b, 0x58, 0xd0, 0x0e, 0xbe, 0x0f, 0xb5, 0x7c, 0x32, 0xa0, 0x6b, - 0xb0, 0xf1, 0x84, 0x4e, 0x64, 0x11, 0xd0, 0xb1, 0xf8, 0x44, 0xfb, 0x50, 0x1a, 0x93, 0xe1, 0x88, - 0xca, 0xab, 0xad, 0xe3, 0x68, 0xf1, 0xde, 0xfa, 0x2d, 0xed, 0xa0, 0x03, 0xd7, 0x17, 0x1c, 0xd8, - 0x7f, 0x03, 0xd1, 0xfa, 0x9d, 0x06, 0xd1, 0xd5, 0x42, 0x06, 0x40, 0x48, 0x03, 0x9f, 0x39, 0xa2, - 0x2a, 0x44, 0xca, 0x51, 0x79, 0xc6, 0x09, 0x15, 0x67, 0x24, 0xc4, 0xae, 0x38, 0x89, 0x6a, 0xb3, - 0x1e, 0xed, 0xea, 0x8c, 0x0c, 0xb0, 0xa0, 0xa1, 0x87, 0x00, 0xc1, 0x68, 0x38, 0xec, 0xfa, 0x43, - 0xc7, 0x9a, 0xa8, 0x2a, 0xd2, 0x16, 0x50, 0xdd, 0x84, 0xfa, 0x72, 0xda, 0xfc, 0xf2, 0x7c, 0xd7, - 0x34, 0x52, 0x01, 0x9c, 0x81, 0x68, 0xfd, 0x79, 0x1d, 0xaa, 0xa7, 0x32, 0x85, 0xed, 0x1e, 0xa5, - 0x36, 0xfa, 0x19, 0x54, 0x44, 0xc7, 0xb4, 0x09, 0x27, 0xaa, 0x39, 0x7d, 0x6b, 0x69, 0x73, 0x90, - 0x77, 0x40, 0x48, 0x8b, 0x33, 0x7a, 0xd8, 0xff, 0x39, 0xb5, 0xf8, 0x29, 0xe5, 0xc4, 0x44, 0xea, - 0x9c, 0x20, 0xa5, 0xe1, 0x04, 0x15, 0x05, 0xb0, 0xc9, 0x02, 0x6a, 0xa9, 0xd6, 0xf3, 0xe0, 0x8a, - 0x57, 0x2d, 0xe3, 0x7b, 0x2f, 0xa0, 0x96, 0xb9, 0xad, 0x6c, 0x6f, 0x8a, 0x15, 0x96, 0x96, 0xd0, - 0x53, 0x28, 0x33, 0x4e, 0xf8, 0x88, 0xc9, 0x80, 0x55, 0x8f, 0xbb, 0x2b, 0xb4, 0x29, 0x71, 0xd3, - 0x8e, 0x18, 0xad, 0xb1, 0xb2, 0xd7, 0x7a, 0xae, 0xc1, 0x6e, 0x46, 0xfa, 0xbe, 0xc3, 0x38, 0xfa, - 0xe9, 0x5c, 0x84, 0x8d, 0xcb, 0x45, 0x58, 0x68, 0xcb, 0xf8, 0x5e, 0x53, 0xd6, 0x2a, 0x31, 0x25, - 0x13, 0x5d, 0x1f, 0x4a, 0x0e, 0xa7, 0x2e, 0xab, 0xaf, 0xcb, 0xeb, 0xf4, 0xd1, 0xea, 0xb6, 0x6a, - 0xee, 0x28, 0xb3, 0xa5, 0x0f, 0x85, 0x01, 0x1c, 0xd9, 0x69, 0xfd, 0x75, 0x1d, 0x6a, 0xd9, 0x80, - 0x50, 0xfe, 0x06, 0x72, 0x88, 0xe5, 0x72, 0xe8, 0x47, 0x2b, 0x3c, 0x4f, 0xca, 0x97, 0xa6, 0xd1, - 0x2f, 0x0a, 0x69, 0xd4, 0x5b, 0xad, 0xd9, 0xff, 0x9c, 0x49, 0x7f, 0xd3, 0x00, 0xe5, 0x15, 0xde, - 0x40, 0x32, 0x85, 0xf9, 0x64, 0x3a, 0x5d, 0xe9, 0x86, 0x97, 0xe4, 0xd3, 0xbf, 0x36, 0x8b, 0x1b, - 0x15, 0x47, 0x80, 0x8e, 0xa0, 0xa2, 0x86, 0x34, 0xa6, 0xc6, 0xb8, 0x6d, 0xe1, 0xb4, 0x1a, 0xe3, - 0x18, 0x4e, 0xb8, 0x88, 0x40, 0x85, 0xd1, 0x21, 0xb5, 0xb8, 0x1f, 0xaa, 0xfc, 0xf8, 0xf6, 0x25, - 0x43, 0x22, 0x7a, 0x45, 0x4f, 0xa9, 0xa6, 0x71, 0x89, 0x29, 0x38, 0x81, 0x45, 0x9f, 0x6a, 0x50, - 0xe1, 0xd4, 0x0d, 0x86, 0x84, 0x53, 0x95, 0x0c, 0x78, 0x75, 0xb1, 0x39, 0x53, 0xc8, 0xa9, 0x0b, - 0x31, 0x05, 0x27, 0x56, 0xd1, 0x2f, 0x61, 0x87, 0x5d, 0xf8, 0x3e, 0x8f, 0x59, 0x6a, 0x2c, 0xec, - 0x5c, 0xd2, 0x0d, 0xd5, 0x59, 0xe5, 0x1b, 0xcd, 0xe8, 0x65, 0x81, 0xcc, 0xb7, 0x94, 0xd5, 0x9d, - 0x1c, 0x19, 0xe7, 0xcd, 0xa1, 0x5f, 0x6b, 0x50, 0x1b, 0x05, 0x36, 0xe1, 0xb4, 0xc7, 0xc5, 0x6b, - 0x67, 0x30, 0x51, 0xd3, 0xe2, 0x55, 0x93, 0xe4, 0x3c, 0x07, 0x6a, 0x22, 0x31, 0x1e, 0xe5, 0x69, - 0xb8, 0x60, 0x78, 0xe9, 0xc0, 0x5e, 0x7e, 0x9d, 0x81, 0xbd, 0xf5, 0xa7, 0x32, 0xec, 0x2f, 0xba, - 0x9a, 0xe8, 0x23, 0x40, 0x7e, 0x5f, 0x4c, 0xe6, 0xd4, 0xbe, 0x17, 0xbd, 0xf1, 0x1c, 0xdf, 0x93, - 0xc9, 0xb8, 0x61, 0x1e, 0xa8, 0xa0, 0xa1, 0x87, 0x73, 0x12, 0x78, 0x81, 0x16, 0xfa, 0x66, 0x26, - 0x9d, 0xa3, 0x77, 0x45, 0x72, 0xd8, 0x0b, 0x52, 0xfa, 0x7b, 0xb0, 0x13, 0x52, 0x62, 0x4f, 0x62, - 0x96, 0xcc, 0xb9, 0x52, 0x7a, 0x52, 0x38, 0xcb, 0xc4, 0x79, 0x59, 0x74, 0x0f, 0xf6, 0x3c, 0xfa, - 0x94, 0xab, 0xf5, 0x83, 0x91, 0xdb, 0xa7, 0xa1, 0xcc, 0x96, 0x52, 0x3a, 0x20, 0x3e, 0x28, 0x0a, - 0xe0, 0x79, 0x1d, 0xd4, 0x81, 0x5d, 0x6b, 0x14, 0xca, 0x17, 0x58, 0xec, 0x47, 0x49, 0xc2, 0x7c, - 0x49, 0xc1, 0xec, 0x9e, 0xe4, 0xd9, 0xb8, 0x28, 0x2f, 0x20, 0xa2, 0xb3, 0xb3, 0x13, 0x88, 0x72, - 0x1e, 0xe2, 0x3c, 0xcf, 0xc6, 0x45, 0xf9, 0x9c, 0x17, 0xd1, 0xe9, 0xd5, 0xb7, 0xe4, 0x18, 0x34, - 0xef, 0x45, 0xc4, 0xc6, 0x45, 0x79, 0xf4, 0x7e, 0x9c, 0xba, 0x09, 0x42, 0x25, 0x7a, 0x8e, 0xc5, - 0xe3, 0xf8, 0x79, 0x8e, 0x8b, 0x0b, 0xd2, 0xe8, 0x3d, 0xa8, 0x59, 0xfe, 0x70, 0x28, 0x17, 0xd1, - 0xc3, 0x52, 0x97, 0x9b, 0x90, 0xb9, 0x7a, 0x92, 0xe3, 0xe0, 0x82, 0x24, 0xfa, 0x18, 0xc0, 0xf2, - 0xbd, 0x68, 0x0e, 0x66, 0x6a, 0xe6, 0xbd, 0xfd, 0x3a, 0x97, 0xf6, 0x24, 0x46, 0x49, 0x5b, 0x65, - 0x42, 0x62, 0x38, 0x63, 0x44, 0x5e, 0xd5, 0x80, 0x7a, 0xb6, 0xe3, 0x0d, 0x54, 0x14, 0xe5, 0xc0, - 0x7c, 0xf5, 0xab, 0xda, 0xcd, 0x81, 0x46, 0xdb, 0xcf, 0xd3, 0x70, 0xc1, 0x70, 0xeb, 0xef, 0xeb, - 0xb9, 0x81, 0x48, 0x96, 0x76, 0x0a, 0x25, 0x59, 0x5b, 0x54, 0x03, 0xbb, 0xea, 0xcb, 0x56, 0x96, - 0xad, 0xe8, 0x65, 0x2b, 0x3f, 0x71, 0x84, 0x8e, 0xc6, 0xb0, 0xcd, 0x32, 0xd5, 0x55, 0xf5, 0x86, - 0x1f, 0xbc, 0x56, 0xc1, 0xcc, 0x55, 0xe9, 0xd9, 0xb4, 0xb9, 0x9d, 0xa5, 0xe0, 0x9c, 0x1d, 0x34, - 0x02, 0x7d, 0x10, 0xbf, 0x07, 0x55, 0xb3, 0xf8, 0x60, 0x55, 0xef, 0xcb, 0xe8, 0xc5, 0x9d, 0x2c, - 0x71, 0x6a, 0xa9, 0xf5, 0x07, 0x0d, 0xf6, 0xe6, 0x06, 0xd5, 0x42, 0xfa, 0x69, 0x6f, 0x22, 0xfd, - 0x16, 0x97, 0xcd, 0xf5, 0xd7, 0x29, 0x9b, 0xad, 0x7f, 0x68, 0x70, 0x7d, 0x41, 0xa7, 0xfc, 0x7f, - 0x7c, 0xb5, 0xb4, 0xfe, 0xa9, 0x41, 0xe1, 0x36, 0xa1, 0x43, 0xd8, 0xf4, 0x88, 0x4b, 0xd5, 0x13, - 0x32, 0x51, 0x92, 0xff, 0x8c, 0x24, 0x07, 0xbd, 0x0f, 0xe5, 0x90, 0x12, 0xa6, 0x02, 0xac, 0x9b, - 0x5f, 0x8d, 0xc7, 0x49, 0x2c, 0xa9, 0x2f, 0xa7, 0xcd, 0xfd, 0xc2, 0x0d, 0x95, 0x74, 0xac, 0xb4, - 0xd0, 0x43, 0x28, 0x31, 0xc7, 0xb3, 0xe2, 0xa9, 0xe6, 0xeb, 0x97, 0x8b, 0xe2, 0x99, 0xe3, 0xd2, - 0x74, 0x9c, 0xeb, 0x09, 0x00, 0x1c, 0xe1, 0xa0, 0xaf, 0xc0, 0x56, 0x48, 0x79, 0xe8, 0x50, 0xa6, - 0x7a, 0x4e, 0x75, 0x36, 0x6d, 0x6e, 0xe1, 0x88, 0x84, 0x63, 0x5e, 0xeb, 0x0e, 0xbc, 0x85, 0x45, - 0xa1, 0xf4, 0x06, 0xf9, 0x5e, 0x8f, 0xbe, 0x01, 0x7a, 0x40, 0x42, 0xee, 0x24, 0xbd, 0xb6, 0x14, - 0xe5, 0x7c, 0x37, 0x26, 0xe2, 0x94, 0xdf, 0xfa, 0x1a, 0x44, 0x57, 0xfe, 0xd5, 0x81, 0x6a, 0xfd, - 0x51, 0x83, 0xc2, 0x58, 0x81, 0x8e, 0x61, 0x93, 0x4f, 0x82, 0x58, 0xa9, 0x21, 0x14, 0xce, 0x26, - 0x01, 0x7d, 0x39, 0x6d, 0xa2, 0xbc, 0xa4, 0xa0, 0x62, 0x29, 0x8b, 0x7e, 0xa3, 0xc1, 0x4e, 0x98, - 0x75, 0x5c, 0x25, 0xc8, 0xd9, 0x15, 0x13, 0x64, 0x61, 0x30, 0xcc, 0x3d, 0xd9, 0xec, 0xb3, 0x2c, - 0x9c, 0xb7, 0x6e, 0x1a, 0xcf, 0x5e, 0x34, 0xd6, 0x3e, 0x7f, 0xd1, 0x58, 0xfb, 0xe2, 0x45, 0x63, - 0xed, 0xd3, 0x59, 0x43, 0x7b, 0x36, 0x6b, 0x68, 0x9f, 0xcf, 0x1a, 0xda, 0x17, 0xb3, 0x86, 0xf6, - 0x7c, 0xd6, 0xd0, 0x7e, 0xfb, 0x97, 0xc6, 0xda, 0x4f, 0x2a, 0xb1, 0x9d, 0x7f, 0x07, 0x00, 0x00, - 0xff, 0xff, 0x05, 0xed, 0x1a, 0x1d, 0x61, 0x18, 0x00, 0x00, + // 1756 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0xdd, 0x6f, 0x5b, 0x49, + 0x15, 0xcf, 0x4d, 0xe2, 0xc4, 0xf7, 0x38, 0x71, 0x9a, 0x69, 0xb6, 0x78, 0x23, 0x61, 0x47, 0x96, + 0x40, 0xe1, 0x63, 0xaf, 0x69, 0x58, 0xa1, 0xb2, 0xd0, 0x15, 0xbe, 0x69, 0xe9, 0xee, 0xaa, 0x69, + 0xcd, 0x38, 0x29, 0x12, 0xe2, 0x81, 0xf1, 0xbd, 0x53, 0xe7, 0x52, 0xdf, 0x8f, 0xbd, 0x33, 0xf6, + 0xd6, 0x42, 0x42, 0x2b, 0xde, 0x78, 0x40, 0x42, 0xfb, 0x2f, 0x20, 0xf1, 0xb7, 0xf4, 0x71, 0x85, + 0x78, 0x58, 0x81, 0x64, 0xb5, 0x06, 0x81, 0xe0, 0x4f, 0xe8, 0x03, 0x42, 0x33, 0x77, 0xee, 0xa7, + 0x6d, 0x1a, 0x6a, 0xd3, 0x07, 0xde, 0xee, 0x9c, 0x8f, 0xdf, 0x39, 0x73, 0xe6, 0xcc, 0x39, 0x67, + 0x6c, 0x38, 0xeb, 0x3b, 0xfc, 0x72, 0xd8, 0x33, 0x2c, 0xdf, 0x6d, 0xf5, 0x49, 0x68, 0x53, 0x8f, + 0x86, 0xe9, 0x47, 0xf0, 0xa4, 0xdf, 0x22, 0x81, 0xc3, 0x5a, 0x8c, 0x52, 0xdb, 0x25, 0x1e, 0xe9, + 0x53, 0x97, 0x7a, 0xbc, 0x35, 0xba, 0x49, 0x06, 0xc1, 0x25, 0xb9, 0xd9, 0xea, 0x0b, 0x31, 0xc2, + 0xa9, 0x6d, 0x04, 0xa1, 0xcf, 0x7d, 0x74, 0x3b, 0x85, 0x33, 0x62, 0x94, 0xf4, 0x23, 0x78, 0xd2, + 0x37, 0x04, 0x9c, 0x91, 0x87, 0x33, 0x62, 0xb8, 0x43, 0xf3, 0x6a, 0xde, 0x58, 0x7e, 0x48, 0x5b, + 0xa3, 0x9b, 0x3d, 0xca, 0x67, 0x5d, 0x38, 0x7c, 0x27, 0x8b, 0xe1, 0xf7, 0xfd, 0x96, 0x24, 0xf7, + 0x86, 0x8f, 0xe5, 0x4a, 0x2e, 0xe4, 0x97, 0x12, 0x6f, 0x3e, 0xb9, 0xc5, 0x0c, 0xc7, 0x17, 0xc0, + 0x31, 0xee, 0x0c, 0xe4, 0xbb, 0xa9, 0x8c, 0x4b, 0xac, 0x4b, 0xc7, 0xa3, 0xe1, 0x38, 0xf5, 0xc6, + 0xa5, 0x9c, 0xcc, 0xd3, 0x6a, 0x2d, 0xd2, 0x0a, 0x87, 0x1e, 0x77, 0x5c, 0x3a, 0xa3, 0xf0, 0x9d, + 0x57, 0x29, 0x30, 0xeb, 0x92, 0xba, 0xa4, 0xa8, 0xd7, 0x7c, 0xbe, 0x0e, 0xfa, 0x3d, 0x19, 0xa4, + 0x01, 0xe5, 0xe8, 0x57, 0x1a, 0x80, 0x4d, 0x83, 0x81, 0x3f, 0x16, 0xb1, 0xad, 0x69, 0x47, 0xda, + 0x71, 0xe5, 0x04, 0x1b, 0x4b, 0x1d, 0x8c, 0x91, 0xc0, 0xdf, 0x49, 0x90, 0xcd, 0xea, 0x74, 0xd2, + 0x80, 0x74, 0x8d, 0x33, 0x56, 0xd1, 0x05, 0x6c, 0x59, 0xbe, 0xf7, 0xd8, 0xe9, 0xd7, 0xd6, 0xa5, + 0xfd, 0x77, 0x8c, 0x68, 0x6f, 0x46, 0x76, 0x6f, 0xd2, 0xac, 0xda, 0x9b, 0x81, 0xc9, 0x27, 0x77, + 0x9f, 0x72, 0xea, 0x31, 0xc7, 0xf7, 0xcc, 0xea, 0xb3, 0x49, 0x63, 0x6d, 0x3a, 0x69, 0x6c, 0x9d, + 0x4a, 0x10, 0xac, 0xc0, 0xd0, 0x2d, 0xd0, 0x7b, 0xbe, 0xcf, 0x19, 0x0f, 0x49, 0x50, 0xdb, 0x38, + 0xd2, 0x8e, 0x75, 0xf3, 0x70, 0x3a, 0x69, 0xe8, 0x66, 0x4c, 0x7c, 0x99, 0x5d, 0xe0, 0x54, 0x18, + 0xdd, 0x86, 0x3d, 0x97, 0x86, 0x7d, 0xfa, 0x63, 0x87, 0x5f, 0x76, 0x48, 0x28, 0x22, 0xb3, 0x79, + 0xa4, 0x1d, 0x97, 0xcd, 0xeb, 0xd3, 0x49, 0x63, 0xef, 0x2c, 0xcf, 0xc2, 0x45, 0xd9, 0xe6, 0x67, + 0x3a, 0x5c, 0x9f, 0x13, 0x03, 0xf4, 0x2e, 0xec, 0x84, 0x34, 0x18, 0x38, 0x16, 0x39, 0xf5, 0x87, + 0x2a, 0xda, 0x25, 0xf3, 0xda, 0x74, 0xd2, 0xd8, 0xc1, 0x19, 0x3a, 0xce, 0x49, 0xa1, 0xfb, 0x70, + 0x10, 0xd2, 0x91, 0x23, 0xb6, 0xfa, 0x81, 0xc3, 0xb8, 0x1f, 0x8e, 0xef, 0x3b, 0xae, 0xc3, 0x65, + 0xac, 0x4a, 0x66, 0x6d, 0x3a, 0x69, 0x1c, 0xe0, 0x39, 0x7c, 0x3c, 0x57, 0x0b, 0xfd, 0x10, 0x10, + 0xa3, 0xe1, 0xc8, 0xb1, 0x68, 0xdb, 0xb2, 0x04, 0xfe, 0x03, 0xe2, 0x52, 0x15, 0x9d, 0x1b, 0xd3, + 0x49, 0x03, 0x75, 0x67, 0xb8, 0x78, 0x8e, 0x06, 0xa2, 0x50, 0x72, 0x5c, 0xd2, 0xa7, 0x32, 0x30, + 0x95, 0x93, 0x3b, 0x4b, 0xa6, 0xcc, 0x87, 0x02, 0xcb, 0xd4, 0xa7, 0x93, 0x46, 0x49, 0x7e, 0xe2, + 0x08, 0x1d, 0x5d, 0x80, 0x1e, 0x52, 0xe6, 0x0f, 0x43, 0x8b, 0xb2, 0x5a, 0x49, 0x9a, 0x3a, 0xce, + 0x64, 0x87, 0x21, 0x2e, 0xa1, 0x31, 0xba, 0x69, 0x60, 0x25, 0x84, 0xe9, 0xc7, 0x43, 0x27, 0x94, + 0xe0, 0xcc, 0xdc, 0x15, 0xa7, 0x1d, 0x73, 0x18, 0x4e, 0x91, 0xd0, 0x67, 0x1a, 0xe8, 0x81, 0x6f, + 0xdf, 0x27, 0x3d, 0x3a, 0x60, 0xb5, 0xad, 0xa3, 0x8d, 0xe3, 0xca, 0x09, 0x59, 0x7d, 0xd6, 0x1b, + 0x9d, 0xd8, 0xc6, 0x5d, 0x8f, 0x87, 0x63, 0x73, 0x5f, 0x65, 0xaa, 0x9e, 0xd0, 0x71, 0xea, 0x06, + 0xfa, 0xbd, 0x06, 0xd5, 0xc0, 0xb7, 0xdb, 0x9e, 0xe7, 0x73, 0xc2, 0x1d, 0xdf, 0x63, 0xb5, 0x6d, + 0xe9, 0xd9, 0xe3, 0xff, 0x8d, 0x67, 0x19, 0x43, 0x91, 0x7b, 0x37, 0x94, 0x7b, 0xd5, 0x3c, 0x13, + 0x17, 0xbc, 0x42, 0x16, 0xec, 0x13, 0xdb, 0x76, 0xc4, 0x82, 0x0c, 0x1e, 0xf9, 0x83, 0xa1, 0x4b, + 0x59, 0xad, 0x2c, 0x5d, 0x3d, 0x9c, 0x77, 0x38, 0x91, 0x88, 0xf9, 0xb6, 0x82, 0xdf, 0x6f, 0x17, + 0x95, 0xf1, 0x2c, 0x1e, 0xfa, 0x04, 0x6e, 0x14, 0x89, 0x67, 0x22, 0xfb, 0x58, 0x4d, 0x97, 0x96, + 0x1a, 0x8b, 0x2d, 0x49, 0x39, 0xb3, 0xae, 0xcc, 0xdd, 0x68, 0xcf, 0x85, 0xc1, 0x0b, 0xe0, 0xd1, + 0x77, 0x61, 0x83, 0x7a, 0xa3, 0x1a, 0x2c, 0xde, 0xcf, 0x5d, 0x6f, 0xf4, 0x88, 0x84, 0x66, 0x45, + 0x19, 0xd8, 0xb8, 0xeb, 0x8d, 0xb0, 0xd0, 0x41, 0x6f, 0xc3, 0xc6, 0x28, 0x20, 0xb5, 0x8a, 0xac, + 0x15, 0xdb, 0x82, 0xf5, 0xa8, 0xd3, 0xc6, 0x82, 0x76, 0xf8, 0x7d, 0xa8, 0xe6, 0x93, 0x01, 0x5d, + 0x83, 0x8d, 0x27, 0x74, 0x2c, 0x8b, 0x80, 0x8e, 0xc5, 0x27, 0x3a, 0x80, 0xd2, 0x88, 0x0c, 0x86, + 0x54, 0x5e, 0x6d, 0x1d, 0x47, 0x8b, 0xf7, 0xd6, 0x6f, 0x69, 0x87, 0x6d, 0xb8, 0x3e, 0xe7, 0xc0, + 0xfe, 0x1b, 0x88, 0xe6, 0xef, 0x34, 0x88, 0xae, 0x16, 0x32, 0x00, 0x42, 0x1a, 0xf8, 0xcc, 0x11, + 0x55, 0x21, 0x52, 0x8e, 0xca, 0x33, 0x4e, 0xa8, 0x38, 0x23, 0x21, 0x76, 0xc5, 0x49, 0x54, 0x9b, + 0xf5, 0x68, 0x57, 0xe7, 0xa4, 0x8f, 0x05, 0x0d, 0x3d, 0x04, 0x08, 0x86, 0x83, 0x41, 0xc7, 0x1f, + 0x38, 0xd6, 0x58, 0x55, 0x91, 0x96, 0x80, 0xea, 0x24, 0xd4, 0x97, 0x93, 0xc6, 0x97, 0x67, 0xbb, + 0xa6, 0x91, 0x0a, 0xe0, 0x0c, 0x44, 0xf3, 0xcf, 0xeb, 0x50, 0x39, 0x93, 0x29, 0x6c, 0x77, 0x29, + 0xb5, 0xd1, 0xcf, 0xa0, 0x2c, 0x3a, 0xa6, 0x4d, 0x38, 0x51, 0xcd, 0xe9, 0x5b, 0x0b, 0x9b, 0x83, + 0xbc, 0x03, 0x42, 0x5a, 0x9c, 0xd1, 0xc3, 0xde, 0xcf, 0xa9, 0xc5, 0xcf, 0x28, 0x27, 0x26, 0x52, + 0xe7, 0x04, 0x29, 0x0d, 0x27, 0xa8, 0x28, 0x80, 0x4d, 0x16, 0x50, 0x4b, 0xb5, 0x9e, 0x07, 0x4b, + 0x5e, 0xb5, 0x8c, 0xef, 0xdd, 0x80, 0x5a, 0xe6, 0x8e, 0xb2, 0xbd, 0x29, 0x56, 0x58, 0x5a, 0x42, + 0x4f, 0x61, 0x8b, 0x71, 0xc2, 0x87, 0x4c, 0x06, 0xac, 0x72, 0xd2, 0x59, 0xa1, 0x4d, 0x89, 0x9b, + 0x76, 0xc4, 0x68, 0x8d, 0x95, 0xbd, 0xe6, 0x73, 0x0d, 0xf6, 0x32, 0xd2, 0xf7, 0x1d, 0xc6, 0xd1, + 0x4f, 0x67, 0x22, 0x6c, 0x5c, 0x2d, 0xc2, 0x42, 0x5b, 0xc6, 0xf7, 0x9a, 0xb2, 0x56, 0x8e, 0x29, + 0x99, 0xe8, 0xfa, 0x50, 0x72, 0x38, 0x75, 0x59, 0x6d, 0x5d, 0x5e, 0xa7, 0x8f, 0x56, 0xb7, 0x55, + 0x73, 0x57, 0x99, 0x2d, 0x7d, 0x28, 0x0c, 0xe0, 0xc8, 0x4e, 0xf3, 0xaf, 0xeb, 0x50, 0xcd, 0x06, + 0x84, 0xf2, 0x37, 0x90, 0x43, 0x2c, 0x97, 0x43, 0x3f, 0x5a, 0xe1, 0x79, 0x52, 0xbe, 0x30, 0x8d, + 0x7e, 0x51, 0x48, 0xa3, 0xee, 0x6a, 0xcd, 0xfe, 0xe7, 0x4c, 0xfa, 0x9b, 0x06, 0x28, 0xaf, 0xf0, + 0x06, 0x92, 0x29, 0xcc, 0x27, 0xd3, 0xd9, 0x4a, 0x37, 0xbc, 0x20, 0x9f, 0xfe, 0xb5, 0x59, 0xdc, + 0xa8, 0x38, 0x02, 0x74, 0x0c, 0x65, 0x35, 0xa4, 0x31, 0x35, 0xc6, 0xed, 0x08, 0xa7, 0xd5, 0x18, + 0xc7, 0x70, 0xc2, 0x45, 0x04, 0xca, 0x8c, 0x0e, 0xa8, 0xc5, 0xfd, 0x50, 0xe5, 0xc7, 0xb7, 0xaf, + 0x18, 0x12, 0xd1, 0x2b, 0xba, 0x4a, 0x35, 0x8d, 0x4b, 0x4c, 0xc1, 0x09, 0x2c, 0xfa, 0x54, 0x83, + 0x32, 0xa7, 0x6e, 0x30, 0x20, 0x9c, 0xaa, 0x64, 0xc0, 0xab, 0x8b, 0xcd, 0xb9, 0x42, 0x4e, 0x5d, + 0x88, 0x29, 0x38, 0xb1, 0x8a, 0x7e, 0x09, 0xbb, 0xec, 0xd2, 0xf7, 0x79, 0xcc, 0x52, 0x63, 0x61, + 0xfb, 0x8a, 0x6e, 0xa8, 0xce, 0x2a, 0xdf, 0x68, 0x46, 0x37, 0x0b, 0x64, 0xbe, 0xa5, 0xac, 0xee, + 0xe6, 0xc8, 0x38, 0x6f, 0x0e, 0xfd, 0x5a, 0x83, 0xea, 0x30, 0xb0, 0x09, 0xa7, 0x5d, 0x2e, 0x5e, + 0x3b, 0xfd, 0xb1, 0x9a, 0x16, 0x97, 0x4d, 0x92, 0x8b, 0x1c, 0xa8, 0x89, 0xc4, 0x78, 0x94, 0xa7, + 0xe1, 0x82, 0xe1, 0x85, 0x03, 0xfb, 0xd6, 0xeb, 0x0c, 0xec, 0xcd, 0x3f, 0x6d, 0xc1, 0xc1, 0xbc, + 0xab, 0x89, 0x3e, 0x02, 0xe4, 0xf7, 0xc4, 0x64, 0x4e, 0xed, 0x7b, 0xd1, 0x1b, 0xcf, 0xf1, 0x3d, + 0x99, 0x8c, 0x1b, 0xe6, 0xa1, 0x0a, 0x1a, 0x7a, 0x38, 0x23, 0x81, 0xe7, 0x68, 0xa1, 0x6f, 0x66, + 0xd2, 0x39, 0x7a, 0x57, 0x24, 0x87, 0x3d, 0x27, 0xa5, 0xbf, 0x07, 0xbb, 0x21, 0x25, 0xf6, 0x38, + 0x66, 0xc9, 0x9c, 0x2b, 0xa5, 0x27, 0x85, 0xb3, 0x4c, 0x9c, 0x97, 0x45, 0xf7, 0x60, 0xdf, 0xa3, + 0x4f, 0xb9, 0x5a, 0x3f, 0x18, 0xba, 0x3d, 0x1a, 0xca, 0x6c, 0x29, 0xa5, 0x03, 0xe2, 0x83, 0xa2, + 0x00, 0x9e, 0xd5, 0x41, 0x6d, 0xd8, 0xb3, 0x86, 0xa1, 0x7c, 0x81, 0xc5, 0x7e, 0x94, 0x24, 0xcc, + 0x97, 0x14, 0xcc, 0xde, 0x69, 0x9e, 0x8d, 0x8b, 0xf2, 0x02, 0x22, 0x3a, 0x3b, 0x3b, 0x81, 0xd8, + 0xca, 0x43, 0x5c, 0xe4, 0xd9, 0xb8, 0x28, 0x9f, 0xf3, 0x22, 0x3a, 0xbd, 0xda, 0xb6, 0x1c, 0x83, + 0x66, 0xbd, 0x88, 0xd8, 0xb8, 0x28, 0x8f, 0xde, 0x8f, 0x53, 0x37, 0x41, 0x28, 0x47, 0xcf, 0xb1, + 0x78, 0x1c, 0xbf, 0xc8, 0x71, 0x71, 0x41, 0x1a, 0xbd, 0x07, 0x55, 0xcb, 0x1f, 0x0c, 0xe4, 0x22, + 0x7a, 0x58, 0xea, 0x72, 0x13, 0x32, 0x57, 0x4f, 0x73, 0x1c, 0x5c, 0x90, 0x44, 0x1f, 0x03, 0x58, + 0xbe, 0x17, 0xcd, 0xc1, 0x4c, 0xcd, 0xbc, 0xb7, 0x5f, 0xe7, 0xd2, 0x9e, 0xc6, 0x28, 0x69, 0xab, + 0x4c, 0x48, 0x0c, 0x67, 0x8c, 0xc8, 0xab, 0x1a, 0x50, 0xcf, 0x76, 0xbc, 0xbe, 0x8a, 0xa2, 0x1c, + 0x98, 0x97, 0xbf, 0xaa, 0x9d, 0x1c, 0x68, 0xb4, 0xfd, 0x3c, 0x0d, 0x17, 0x0c, 0x37, 0xff, 0xbe, + 0x9e, 0x1b, 0x88, 0x64, 0x69, 0xa7, 0x50, 0x92, 0xb5, 0x45, 0x35, 0xb0, 0x65, 0x5f, 0xb6, 0xb2, + 0x6c, 0x45, 0x2f, 0x5b, 0xf9, 0x89, 0x23, 0x74, 0x34, 0x82, 0x1d, 0x96, 0xa9, 0xae, 0xaa, 0x37, + 0xfc, 0xe0, 0xb5, 0x0a, 0x66, 0xae, 0x4a, 0x4f, 0x27, 0x8d, 0x9d, 0x2c, 0x05, 0xe7, 0xec, 0xa0, + 0x21, 0xe8, 0xfd, 0xf8, 0x3d, 0xa8, 0x9a, 0xc5, 0x07, 0xab, 0x7a, 0x5f, 0x46, 0x2f, 0xee, 0x64, + 0x89, 0x53, 0x4b, 0xcd, 0x3f, 0x68, 0xb0, 0x3f, 0x33, 0xa8, 0x16, 0xd2, 0x4f, 0x7b, 0x13, 0xe9, + 0x37, 0xbf, 0x6c, 0xae, 0xbf, 0x4e, 0xd9, 0x6c, 0xfe, 0x43, 0x83, 0xeb, 0x73, 0x3a, 0xe5, 0xff, + 0xe3, 0xab, 0xa5, 0xf9, 0x4f, 0x0d, 0x0a, 0xb7, 0x09, 0x1d, 0xc1, 0xa6, 0x47, 0x5c, 0xaa, 0x9e, + 0x90, 0x89, 0x92, 0xfc, 0xcd, 0x48, 0x72, 0xd0, 0xfb, 0xb0, 0x15, 0x52, 0xc2, 0x54, 0x80, 0x75, + 0xf3, 0xab, 0xf1, 0x38, 0x89, 0x25, 0xf5, 0xe5, 0xa4, 0x71, 0x50, 0xb8, 0xa1, 0x92, 0x8e, 0x95, + 0x16, 0x7a, 0x08, 0x25, 0xe6, 0x78, 0x56, 0x3c, 0xd5, 0x7c, 0xfd, 0x6a, 0x51, 0x3c, 0x77, 0x5c, + 0x9a, 0x8e, 0x73, 0x5d, 0x01, 0x80, 0x23, 0x1c, 0xf4, 0x15, 0xd8, 0x0e, 0x29, 0x0f, 0x1d, 0xca, + 0x54, 0xcf, 0xa9, 0x4c, 0x27, 0x8d, 0x6d, 0x1c, 0x91, 0x70, 0xcc, 0x6b, 0xde, 0x81, 0xb7, 0xb0, + 0x28, 0x94, 0x5e, 0x3f, 0xdf, 0xeb, 0xd1, 0x37, 0x40, 0x0f, 0x48, 0xc8, 0x9d, 0xa4, 0xd7, 0x96, + 0xa2, 0x9c, 0xef, 0xc4, 0x44, 0x9c, 0xf2, 0x9b, 0x5f, 0x83, 0xe8, 0xca, 0xbf, 0x3a, 0x50, 0xcd, + 0x3f, 0x6a, 0x50, 0x18, 0x2b, 0xd0, 0x09, 0x6c, 0xf2, 0x71, 0x10, 0x2b, 0xd5, 0x85, 0xc2, 0xf9, + 0x38, 0xa0, 0x2f, 0x27, 0x0d, 0x94, 0x97, 0x14, 0x54, 0x2c, 0x65, 0xd1, 0x6f, 0x34, 0xd8, 0x0d, + 0xb3, 0x8e, 0xab, 0x04, 0x39, 0x5f, 0x32, 0x41, 0xe6, 0x06, 0xc3, 0xdc, 0x97, 0xcd, 0x3e, 0xcb, + 0xc2, 0x79, 0xeb, 0xa6, 0xf5, 0xec, 0x45, 0x7d, 0xed, 0xf3, 0x17, 0xf5, 0xb5, 0x2f, 0x5e, 0xd4, + 0xd7, 0x3e, 0x9d, 0xd6, 0xb5, 0x67, 0xd3, 0xba, 0xf6, 0xf9, 0xb4, 0xae, 0x7d, 0x31, 0xad, 0x6b, + 0xcf, 0xa7, 0x75, 0xed, 0xb7, 0x7f, 0xa9, 0xaf, 0xfd, 0xe4, 0xf6, 0x52, 0x7f, 0x2b, 0xfc, 0x3b, + 0x00, 0x00, 0xff, 0xff, 0xf3, 0x63, 0x72, 0x46, 0x96, 0x18, 0x00, 0x00, } func (m *Gardenlet) Marshal() (dAtA []byte, err error) { 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 a679d8f2..17f6a636 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 @@ -27,7 +27,7 @@ import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; // Package-wide variables from generator "generated". -option go_package = "v1alpha1"; +option go_package = "github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1"; // Gardenlet specifies gardenlet deployment parameters and the GardenletConfiguration used to configure gardenlet. message Gardenlet { 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 6f0c179a..32799ca5 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 @@ -286,67 +286,67 @@ func init() { } var fileDescriptor_f0cd3f80cc90ed56 = []byte{ - // 957 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x55, 0x4f, 0x6f, 0xe3, 0xc4, - 0x1b, 0x8e, 0x93, 0x26, 0xbf, 0x64, 0xd2, 0x7f, 0xbf, 0x29, 0xa2, 0x51, 0x0e, 0x4e, 0xc9, 0x01, - 0xf5, 0x00, 0x0e, 0x5d, 0x56, 0xec, 0x6a, 0x0f, 0x48, 0x49, 0x76, 0x55, 0x45, 0x14, 0x6d, 0x34, - 0x51, 0xb5, 0xd2, 0x8a, 0x03, 0x8e, 0xf3, 0xd6, 0x19, 0xe2, 0xd8, 0xde, 0x99, 0x71, 0x68, 0x85, - 0x84, 0xf8, 0x08, 0x7c, 0x06, 0x38, 0x70, 0x60, 0x3f, 0x05, 0xa7, 0x1e, 0xf7, 0xb8, 0xa7, 0x88, - 0x9a, 0x1b, 0x7c, 0x01, 0xb8, 0x21, 0x8f, 0x27, 0xb5, 0x9d, 0x36, 0xb0, 0x54, 0xad, 0xf6, 0xe6, - 0x79, 0xff, 0x3d, 0xcf, 0xfb, 0xcc, 0xeb, 0x79, 0xd1, 0xa1, 0x4d, 0xc5, 0x38, 0x18, 0x1a, 0x96, - 0x37, 0x6d, 0xd9, 0x26, 0x1b, 0x81, 0x0b, 0x2c, 0xf9, 0xf0, 0x27, 0x76, 0xcb, 0xf4, 0x29, 0x6f, - 0x71, 0x10, 0x82, 0xba, 0x36, 0x6f, 0xcd, 0x0e, 0x4c, 0xc7, 0x1f, 0x9b, 0x07, 0x2d, 0x3b, 0x0a, - 0x30, 0x05, 0x8c, 0x0c, 0x9f, 0x79, 0xc2, 0xc3, 0x0f, 0x92, 0x42, 0xc6, 0x22, 0x3f, 0xf9, 0xf0, - 0x27, 0xb6, 0x11, 0x15, 0x32, 0x16, 0x85, 0x8c, 0x45, 0xa1, 0xfa, 0x87, 0x69, 0x06, 0x9e, 0xed, - 0xb5, 0x64, 0xbd, 0x61, 0x70, 0x22, 0x4f, 0xf2, 0x20, 0xbf, 0x62, 0x9c, 0xfa, 0xfd, 0xc9, 0x43, - 0x6e, 0x50, 0x2f, 0xa2, 0x35, 0x35, 0xad, 0x31, 0x75, 0x81, 0x9d, 0x25, 0x3c, 0xa7, 0x20, 0xcc, - 0xd6, 0xec, 0x0a, 0xbb, 0x7a, 0x6b, 0x55, 0x16, 0x0b, 0x5c, 0x41, 0xa7, 0x70, 0x25, 0xe1, 0x93, - 0x7f, 0x4b, 0xe0, 0xd6, 0x18, 0xa6, 0xe6, 0x72, 0x5e, 0xf3, 0x2f, 0x0d, 0xd5, 0xbb, 0x4e, 0xc0, - 0x05, 0xb0, 0xa7, 0x3e, 0xb8, 0xbd, 0xc7, 0x5d, 0xcf, 0x75, 0xc1, 0x12, 0x7d, 0x06, 0x1c, 0x04, - 0xfe, 0x12, 0x95, 0x23, 0x8a, 0x23, 0x53, 0x98, 0x35, 0x6d, 0x4f, 0xdb, 0xaf, 0xde, 0xfb, 0xc8, - 0x88, 0x91, 0x8c, 0x34, 0x52, 0xa2, 0x57, 0x14, 0x6d, 0xcc, 0x0e, 0x8c, 0xa7, 0xc3, 0xaf, 0xc0, - 0x12, 0x9f, 0x83, 0x30, 0x3b, 0xf8, 0x7c, 0xde, 0xc8, 0x85, 0xf3, 0x06, 0x4a, 0x6c, 0xe4, 0xb2, - 0x2a, 0x3e, 0x43, 0x6b, 0xdc, 0x07, 0xab, 0x96, 0x97, 0xd5, 0x9f, 0x19, 0x37, 0xbc, 0x16, 0x63, - 0x75, 0x13, 0x03, 0x1f, 0xac, 0xce, 0xba, 0x22, 0xb1, 0x16, 0x9d, 0x88, 0x84, 0x6c, 0xfe, 0xa9, - 0x21, 0x7d, 0x75, 0xda, 0x11, 0xe5, 0x02, 0x7f, 0x71, 0xa5, 0x7f, 0xe3, 0xcd, 0xfa, 0x8f, 0xb2, - 0x65, 0xf7, 0xdb, 0x0a, 0xb8, 0xbc, 0xb0, 0xa4, 0x7a, 0x3f, 0x45, 0x45, 0x2a, 0x60, 0xca, 0x6b, - 0xf9, 0xbd, 0xc2, 0x7e, 0xf5, 0xde, 0xe0, 0x0e, 0x9a, 0xef, 0x6c, 0x28, 0xfc, 0x62, 0x2f, 0x42, - 0x22, 0x31, 0x60, 0xf3, 0x97, 0xfc, 0x3f, 0xb5, 0x1e, 0x69, 0x84, 0x7f, 0xd6, 0xd0, 0xae, 0x77, - 0xbd, 0x4f, 0x49, 0xd1, 0xbf, 0x31, 0xdf, 0x55, 0xb7, 0xd4, 0x50, 0x64, 0x77, 0x57, 0x04, 0x90, - 0x55, 0x8c, 0x30, 0x43, 0x5b, 0x3e, 0xf3, 0xa2, 0xf9, 0x1a, 0x80, 0x03, 0x96, 0xf0, 0x98, 0x9a, - 0xa8, 0x8f, 0xdf, 0xf0, 0xbe, 0xcc, 0x21, 0x38, 0x8b, 0xd4, 0xce, 0x4e, 0x38, 0x6f, 0x6c, 0xf5, - 0xb3, 0xf5, 0xc8, 0x32, 0x40, 0xf3, 0xc7, 0x22, 0xaa, 0x7f, 0x16, 0x0c, 0xa1, 0xdd, 0xef, 0x0d, - 0x80, 0xcd, 0x96, 0xa4, 0xc4, 0xfb, 0xa8, 0x6c, 0x99, 0x9d, 0xc0, 0x1d, 0x39, 0x20, 0x05, 0xab, - 0x74, 0xd6, 0xa3, 0x39, 0xe8, 0xb6, 0x63, 0x1b, 0xb9, 0xf4, 0xe2, 0x0f, 0x50, 0xd9, 0x72, 0x28, - 0xb8, 0xa2, 0xf7, 0x58, 0xb2, 0xae, 0x24, 0x53, 0xd3, 0x55, 0x76, 0x72, 0x19, 0x81, 0x0f, 0x50, - 0xd5, 0x66, 0x5e, 0xe0, 0xf3, 0xae, 0x63, 0xd2, 0x69, 0xad, 0x20, 0x13, 0xb6, 0xc2, 0x79, 0xa3, - 0x7a, 0x98, 0x98, 0x49, 0x3a, 0x06, 0xdf, 0x47, 0xeb, 0xf1, 0xb1, 0xcf, 0xe0, 0x84, 0x9e, 0xd6, - 0xd6, 0x62, 0x90, 0x70, 0xde, 0x58, 0x3f, 0x4c, 0xd9, 0x49, 0x26, 0x0a, 0xb7, 0x50, 0x85, 0x72, - 0x1e, 0x00, 0x3b, 0x26, 0x47, 0xb5, 0xa2, 0x4c, 0xf9, 0xbf, 0xe2, 0x55, 0xe9, 0x2d, 0x1c, 0x24, - 0x89, 0xc1, 0x3f, 0x69, 0x68, 0x93, 0xc1, 0x8b, 0x80, 0x32, 0x18, 0x49, 0x60, 0x5e, 0x2b, 0xc9, - 0xc9, 0xb6, 0x6f, 0x3c, 0x29, 0xab, 0xf5, 0x35, 0x48, 0x06, 0xe9, 0x89, 0x2b, 0xd8, 0x59, 0xe7, - 0x5d, 0xc5, 0x6f, 0x33, 0xeb, 0x24, 0x4b, 0xb4, 0x22, 0x0d, 0x39, 0xb5, 0x5d, 0xea, 0xda, 0x6d, - 0xc7, 0xe6, 0xb5, 0xff, 0xed, 0x15, 0x16, 0x1a, 0x0e, 0x12, 0x33, 0x49, 0xc7, 0xe0, 0x07, 0x68, - 0x23, 0xe0, 0xc0, 0x5c, 0x73, 0x0a, 0xb1, 0xf0, 0xe5, 0x58, 0x91, 0x70, 0xde, 0xd8, 0x38, 0x4e, - 0x3b, 0x48, 0x36, 0x0e, 0x3f, 0x42, 0x9b, 0x0b, 0x83, 0x92, 0xbf, 0x22, 0x33, 0x71, 0xc4, 0xf3, - 0x38, 0xe3, 0x21, 0x4b, 0x91, 0xf5, 0x36, 0xda, 0xb9, 0xa6, 0x4d, 0xbc, 0x8d, 0x0a, 0x13, 0x38, - 0x8b, 0xa7, 0x8a, 0x44, 0x9f, 0xf8, 0x1d, 0x54, 0x9c, 0x99, 0x4e, 0x00, 0xf1, 0xfc, 0x90, 0xf8, - 0xf0, 0x28, 0xff, 0x50, 0x6b, 0xbe, 0xcc, 0xa3, 0xf7, 0x32, 0xc2, 0xc5, 0x23, 0xd5, 0x0e, 0xc4, - 0x18, 0x5c, 0x41, 0x2d, 0x53, 0x50, 0xcf, 0xc5, 0x4d, 0x54, 0xe2, 0x60, 0x31, 0x10, 0x6a, 0x54, - 0x51, 0x38, 0x6f, 0x94, 0x06, 0xd2, 0x42, 0x94, 0x07, 0xff, 0xa0, 0xa1, 0x2a, 0x9c, 0x0a, 0x66, - 0x76, 0x3d, 0xf7, 0x84, 0xda, 0xea, 0xd5, 0x9a, 0xdc, 0xce, 0x2b, 0x70, 0x1d, 0x2b, 0xe3, 0x49, - 0x82, 0x16, 0xdf, 0xef, 0x8e, 0xba, 0xdf, 0x6a, 0xca, 0x43, 0xd2, 0xa4, 0xea, 0x9f, 0xa2, 0xed, - 0xe5, 0xac, 0xff, 0x24, 0xd7, 0x1f, 0x1a, 0xda, 0x79, 0x3b, 0x9b, 0x90, 0x65, 0x36, 0xe1, 0xed, - 0x3f, 0xae, 0xd7, 0xad, 0xc0, 0xdf, 0x35, 0xb4, 0xfb, 0x76, 0x76, 0xdf, 0x8b, 0xec, 0xee, 0x3b, - 0xba, 0xcd, 0x76, 0x57, 0x2c, 0xbd, 0x97, 0x05, 0xb4, 0x6a, 0xb1, 0xe0, 0x6f, 0xa2, 0xf9, 0x8f, - 0xde, 0x18, 0xd5, 0xea, 0xe0, 0x0e, 0x5e, 0xac, 0xce, 0xa6, 0xa2, 0x55, 0x8a, 0x9d, 0x44, 0x41, - 0xe2, 0x6f, 0x51, 0x29, 0x7e, 0xdd, 0xd5, 0xdd, 0x3f, 0xbf, 0xbb, 0x5f, 0x2a, 0xfe, 0xb1, 0x63, - 0x0f, 0x51, 0xa8, 0xd8, 0x41, 0x1b, 0x7c, 0xec, 0x79, 0xc9, 0xea, 0x2c, 0xdc, 0x7c, 0x75, 0xca, - 0xf7, 0x70, 0x90, 0xae, 0x46, 0xb2, 0xc5, 0xf1, 0xfb, 0xa8, 0xf4, 0x35, 0x50, 0x7b, 0x2c, 0xe4, - 0x1a, 0x2a, 0x26, 0xaa, 0x3c, 0x93, 0x56, 0xa2, 0xbc, 0x1d, 0xe3, 0xfc, 0x42, 0xcf, 0xbd, 0xba, - 0xd0, 0x73, 0xaf, 0x2f, 0xf4, 0xdc, 0x77, 0xa1, 0xae, 0x9d, 0x87, 0xba, 0xf6, 0x2a, 0xd4, 0xb5, - 0xd7, 0xa1, 0xae, 0xfd, 0x1a, 0xea, 0xda, 0xf7, 0xbf, 0xe9, 0xb9, 0xe7, 0xe5, 0x45, 0xef, 0x7f, - 0x07, 0x00, 0x00, 0xff, 0xff, 0x68, 0xeb, 0xae, 0x3a, 0x1b, 0x0c, 0x00, 0x00, + // 958 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x4f, 0x6f, 0xe3, 0x44, + 0x14, 0x8f, 0x93, 0x26, 0x24, 0x93, 0xfe, 0x63, 0x8a, 0x68, 0x94, 0x83, 0x53, 0x72, 0x40, 0x3d, + 0x80, 0x43, 0x97, 0x15, 0x5d, 0xed, 0x01, 0x29, 0xc9, 0xae, 0xaa, 0x88, 0xa2, 0x8d, 0x26, 0xaa, + 0x56, 0x5a, 0x81, 0x84, 0xe3, 0xbc, 0x3a, 0x43, 0x1c, 0xdb, 0x3b, 0x33, 0x0e, 0xad, 0x90, 0x10, + 0x1f, 0x81, 0xcf, 0x00, 0x07, 0x0e, 0xec, 0xa7, 0xe0, 0xd4, 0xe3, 0x1e, 0xf7, 0x14, 0x51, 0x73, + 0x83, 0x2f, 0x00, 0x37, 0x64, 0x7b, 0x52, 0xdb, 0x69, 0x0d, 0x4b, 0xd4, 0x6a, 0x6f, 0x9e, 0xf7, + 0xef, 0xf7, 0x7b, 0xbf, 0x79, 0x99, 0xa7, 0xa0, 0x23, 0x93, 0x8a, 0xb1, 0x37, 0xd4, 0x0c, 0x67, + 0xda, 0x32, 0x75, 0x36, 0x02, 0x1b, 0x58, 0xfc, 0xe1, 0x4e, 0xcc, 0x96, 0xee, 0x52, 0xde, 0xe2, + 0x20, 0x04, 0xb5, 0x4d, 0xde, 0x9a, 0x1d, 0xe8, 0x96, 0x3b, 0xd6, 0x0f, 0x5a, 0x66, 0x10, 0xa0, + 0x0b, 0x18, 0x69, 0x2e, 0x73, 0x84, 0x83, 0x0f, 0xe3, 0x42, 0xda, 0x22, 0x3f, 0xfe, 0x70, 0x27, + 0xa6, 0x16, 0x14, 0xd2, 0x16, 0x85, 0xb4, 0x45, 0xa1, 0xfa, 0x87, 0x49, 0x06, 0x8e, 0xe9, 0xb4, + 0xc2, 0x7a, 0x43, 0xef, 0x34, 0x3c, 0x85, 0x87, 0xf0, 0x2b, 0xc2, 0xa9, 0xdf, 0x9f, 0x3c, 0xe0, + 0x1a, 0x75, 0x02, 0x5a, 0x53, 0xdd, 0x18, 0x53, 0x1b, 0xd8, 0x79, 0xcc, 0x73, 0x0a, 0x42, 0x6f, + 0xcd, 0xae, 0xb1, 0xab, 0xb7, 0xb2, 0xb2, 0x98, 0x67, 0x0b, 0x3a, 0x85, 0x6b, 0x09, 0x9f, 0xfc, + 0x57, 0x02, 0x37, 0xc6, 0x30, 0xd5, 0x97, 0xf3, 0x9a, 0x7f, 0x2b, 0xa8, 0xde, 0xb5, 0x3c, 0x2e, + 0x80, 0x3d, 0x71, 0xc1, 0xee, 0x3d, 0xea, 0x3a, 0xb6, 0x0d, 0x86, 0xe8, 0x33, 0xe0, 0x20, 0xf0, + 0x57, 0xa8, 0x1c, 0x50, 0x1c, 0xe9, 0x42, 0xaf, 0x29, 0x7b, 0xca, 0x7e, 0xf5, 0xde, 0x47, 0x5a, + 0x84, 0xa4, 0x25, 0x91, 0x62, 0xbd, 0x82, 0x68, 0x6d, 0x76, 0xa0, 0x3d, 0x19, 0x7e, 0x0d, 0x86, + 0xf8, 0x1c, 0x84, 0xde, 0xc1, 0x17, 0xf3, 0x46, 0xce, 0x9f, 0x37, 0x50, 0x6c, 0x23, 0x57, 0x55, + 0xf1, 0x39, 0x5a, 0xe3, 0x2e, 0x18, 0xb5, 0x7c, 0x58, 0xfd, 0xa9, 0xb6, 0xe2, 0xb5, 0x68, 0xd9, + 0x4d, 0x0c, 0x5c, 0x30, 0x3a, 0xeb, 0x92, 0xc4, 0x5a, 0x70, 0x22, 0x21, 0x64, 0xf3, 0x2f, 0x05, + 0xa9, 0xd9, 0x69, 0xc7, 0x94, 0x0b, 0xfc, 0xc5, 0xb5, 0xfe, 0xb5, 0xd7, 0xeb, 0x3f, 0xc8, 0x0e, + 0xbb, 0xdf, 0x96, 0xc0, 0xe5, 0x85, 0x25, 0xd1, 0xfb, 0x19, 0x2a, 0x52, 0x01, 0x53, 0x5e, 0xcb, + 0xef, 0x15, 0xf6, 0xab, 0xf7, 0x06, 0x77, 0xd0, 0x7c, 0x67, 0x43, 0xe2, 0x17, 0x7b, 0x01, 0x12, + 0x89, 0x00, 0x9b, 0xbf, 0xe6, 0xff, 0xad, 0xf5, 0x40, 0x23, 0xfc, 0x8b, 0x82, 0x76, 0x9d, 0x9b, + 0x7d, 0x52, 0x8a, 0xfe, 0xca, 0x7c, 0xb3, 0x6e, 0xa9, 0x21, 0xc9, 0xee, 0x66, 0x04, 0x90, 0x2c, + 0x46, 0x98, 0xa1, 0x2d, 0x97, 0x39, 0xc1, 0x7c, 0x0d, 0xc0, 0x02, 0x43, 0x38, 0x4c, 0x4e, 0xd4, + 0xc7, 0xaf, 0x79, 0x5f, 0xfa, 0x10, 0xac, 0x45, 0x6a, 0x67, 0xc7, 0x9f, 0x37, 0xb6, 0xfa, 0xe9, + 0x7a, 0x64, 0x19, 0xa0, 0xf9, 0x53, 0x11, 0xd5, 0x3f, 0xf3, 0x86, 0xd0, 0xee, 0xf7, 0x06, 0xc0, + 0x66, 0x4b, 0x52, 0xe2, 0x7d, 0x54, 0x36, 0xf4, 0x8e, 0x67, 0x8f, 0x2c, 0x08, 0x05, 0xab, 0x74, + 0xd6, 0x83, 0x39, 0xe8, 0xb6, 0x23, 0x1b, 0xb9, 0xf2, 0xe2, 0x0f, 0x50, 0xd9, 0xb0, 0x28, 0xd8, + 0xa2, 0xf7, 0x28, 0x64, 0x5d, 0x89, 0xa7, 0xa6, 0x2b, 0xed, 0xe4, 0x2a, 0x02, 0x1f, 0xa0, 0xaa, + 0xc9, 0x1c, 0xcf, 0xe5, 0x5d, 0x4b, 0xa7, 0xd3, 0x5a, 0x21, 0x4c, 0xd8, 0xf2, 0xe7, 0x8d, 0xea, + 0x51, 0x6c, 0x26, 0xc9, 0x18, 0x7c, 0x1f, 0xad, 0x47, 0xc7, 0x3e, 0x83, 0x53, 0x7a, 0x56, 0x5b, + 0x8b, 0x40, 0xfc, 0x79, 0x63, 0xfd, 0x28, 0x61, 0x27, 0xa9, 0x28, 0xdc, 0x42, 0x15, 0xca, 0xb9, + 0x07, 0xec, 0x84, 0x1c, 0xd7, 0x8a, 0x61, 0xca, 0xdb, 0x92, 0x57, 0xa5, 0xb7, 0x70, 0x90, 0x38, + 0x06, 0xff, 0xac, 0xa0, 0x4d, 0x06, 0xcf, 0x3d, 0xca, 0x60, 0x14, 0x02, 0xf3, 0x5a, 0x29, 0x9c, + 0x6c, 0x73, 0xe5, 0x49, 0xc9, 0xd6, 0x57, 0x23, 0x29, 0xa4, 0xc7, 0xb6, 0x60, 0xe7, 0x9d, 0x77, + 0x25, 0xbf, 0xcd, 0xb4, 0x93, 0x2c, 0xd1, 0x0a, 0x34, 0xe4, 0xd4, 0xb4, 0xa9, 0x6d, 0xb6, 0x2d, + 0x93, 0xd7, 0xde, 0xda, 0x2b, 0x2c, 0x34, 0x1c, 0xc4, 0x66, 0x92, 0x8c, 0xc1, 0x87, 0x68, 0xc3, + 0xe3, 0xc0, 0x6c, 0x7d, 0x0a, 0x91, 0xf0, 0xe5, 0x48, 0x11, 0x7f, 0xde, 0xd8, 0x38, 0x49, 0x3a, + 0x48, 0x3a, 0x0e, 0x3f, 0x44, 0x9b, 0x0b, 0x83, 0x94, 0xbf, 0x12, 0x66, 0xe2, 0x80, 0xe7, 0x49, + 0xca, 0x43, 0x96, 0x22, 0xeb, 0x6d, 0xb4, 0x73, 0x43, 0x9b, 0x78, 0x1b, 0x15, 0x26, 0x70, 0x1e, + 0x4d, 0x15, 0x09, 0x3e, 0xf1, 0x3b, 0xa8, 0x38, 0xd3, 0x2d, 0x0f, 0xa2, 0xf9, 0x21, 0xd1, 0xe1, + 0x61, 0xfe, 0x81, 0xd2, 0x7c, 0x91, 0x47, 0xef, 0xa5, 0x84, 0x8b, 0x46, 0xaa, 0xed, 0x89, 0x31, + 0xd8, 0x82, 0x1a, 0xba, 0xa0, 0x8e, 0x8d, 0x9b, 0xa8, 0xc4, 0xc1, 0x60, 0x20, 0xe4, 0xa8, 0x22, + 0x7f, 0xde, 0x28, 0x0d, 0x42, 0x0b, 0x91, 0x1e, 0xfc, 0xa3, 0x82, 0xaa, 0x70, 0x26, 0x98, 0xde, + 0x75, 0xec, 0x53, 0x6a, 0xca, 0x57, 0x6b, 0x72, 0x3b, 0xaf, 0xc0, 0x4d, 0xac, 0xb4, 0xc7, 0x31, + 0x5a, 0x74, 0xbf, 0x3b, 0xf2, 0x7e, 0xab, 0x09, 0x0f, 0x49, 0x92, 0xaa, 0x7f, 0x8a, 0xb6, 0x97, + 0xb3, 0xfe, 0x97, 0x5c, 0x7f, 0x2a, 0x68, 0xe7, 0xcd, 0x6c, 0x42, 0x96, 0xda, 0x84, 0xb7, 0xff, + 0xb8, 0xde, 0xb4, 0x02, 0xff, 0x50, 0xd0, 0xee, 0x9b, 0xd9, 0x7d, 0xcf, 0xd3, 0xbb, 0xef, 0xf8, + 0x36, 0xdb, 0xcd, 0x58, 0x7a, 0x2f, 0x0a, 0x28, 0x6b, 0xb1, 0xe0, 0x6f, 0x83, 0xf9, 0x0f, 0xde, + 0x18, 0xd9, 0xea, 0xe0, 0x0e, 0x5e, 0xac, 0xce, 0xa6, 0xa4, 0x55, 0x8a, 0x9c, 0x44, 0x42, 0xe2, + 0xef, 0x50, 0x29, 0x7a, 0xdd, 0xe5, 0xdd, 0x3f, 0xbb, 0xbb, 0x9f, 0x54, 0xf4, 0xc3, 0x8e, 0x3c, + 0x44, 0xa2, 0x62, 0x0b, 0x6d, 0xf0, 0xb1, 0xe3, 0xc4, 0xab, 0xb3, 0xb0, 0xfa, 0xea, 0x0c, 0xdf, + 0xc3, 0x41, 0xb2, 0x1a, 0x49, 0x17, 0xc7, 0xef, 0xa3, 0xd2, 0x37, 0x40, 0xcd, 0xb1, 0x08, 0xd7, + 0x50, 0x31, 0x56, 0xe5, 0x69, 0x68, 0x25, 0xd2, 0xdb, 0xf9, 0xf2, 0xe2, 0x52, 0xcd, 0xbd, 0xbc, + 0x54, 0x73, 0xaf, 0x2e, 0xd5, 0xdc, 0xf7, 0xbe, 0xaa, 0x5c, 0xf8, 0xaa, 0xf2, 0xd2, 0x57, 0x95, + 0x57, 0xbe, 0xaa, 0xfc, 0xe6, 0xab, 0xca, 0x0f, 0xbf, 0xab, 0xb9, 0x67, 0x87, 0x2b, 0xfe, 0x21, + 0xf8, 0x27, 0x00, 0x00, 0xff, 0xff, 0x4d, 0x4b, 0xe0, 0xb5, 0x4a, 0x0c, 0x00, 0x00, } func (m *ClusterOpenIDConnectPreset) Marshal() (dAtA []byte, err error) { 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 35196225..210958a0 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 @@ -25,7 +25,7 @@ import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; // Package-wide variables from generator "generated". -option go_package = "v1alpha1"; +option go_package = "github.com/gardener/gardener/pkg/apis/settings/v1alpha1"; // ClusterOpenIDConnectPreset is a OpenID Connect configuration that is applied // to a Shoot objects cluster-wide. diff --git a/vendor/github.com/gardener/gardener/pkg/chartrenderer/default.go b/vendor/github.com/gardener/gardener/pkg/chartrenderer/default.go index 88e6b185..945fa146 100644 --- a/vendor/github.com/gardener/gardener/pkg/chartrenderer/default.go +++ b/vendor/github.com/gardener/gardener/pkg/chartrenderer/default.go @@ -16,17 +16,20 @@ package chartrenderer import ( "bytes" + "embed" "encoding/json" "fmt" + "io/fs" "path" + "path/filepath" "strings" "k8s.io/apimachinery/pkg/version" "k8s.io/client-go/discovery" "k8s.io/client-go/rest" - "k8s.io/helm/pkg/chartutil" "k8s.io/helm/pkg/engine" + "k8s.io/helm/pkg/ignore" "k8s.io/helm/pkg/manifest" chartapi "k8s.io/helm/pkg/proto/hapi/chart" "k8s.io/helm/pkg/timeconv" @@ -79,10 +82,11 @@ func DiscoverCapabilities(disc discovery.DiscoveryInterface) (*chartutil.Capabil // Render loads the chart from the given location and calls the Render() function // to convert it into a ChartRelease object. +// Deprecated: Use RenderEmbeddedFS for new code! func (r *chartRenderer) Render(chartPath, releaseName, namespace string, values interface{}) (*RenderedChart, error) { chart, err := chartutil.Load(chartPath) if err != nil { - return nil, fmt.Errorf("can't create load chart from path %s:, %s", chartPath, err) + return nil, fmt.Errorf("can't load chart from path %s:, %s", chartPath, err) } return r.renderRelease(chart, releaseName, namespace, values) } @@ -92,7 +96,17 @@ func (r *chartRenderer) Render(chartPath, releaseName, namespace string, values func (r *chartRenderer) RenderArchive(archive []byte, releaseName, namespace string, values interface{}) (*RenderedChart, error) { chart, err := chartutil.LoadArchive(bytes.NewReader(archive)) if err != nil { - return nil, fmt.Errorf("can't create load chart from archive: %s", err) + return nil, fmt.Errorf("can't load chart from archive: %s", err) + } + return r.renderRelease(chart, releaseName, namespace, values) +} + +// RenderEmbeddedFS loads the chart from the given embed.FS and calls the Render() function +// to convert it into a ChartRelease object. +func (r *chartRenderer) RenderEmbeddedFS(embeddedFS embed.FS, chartPath, releaseName, namespace string, values interface{}) (*RenderedChart, error) { + chart, err := loadEmbeddedFS(embeddedFS, chartPath) + if err != nil { + return nil, fmt.Errorf("can't load chart %q from embedded file system: %w", chartPath, err) } return r.renderRelease(chart, releaseName, namespace, values) } @@ -195,3 +209,72 @@ func (c *RenderedChart) AsSecretData() map[string][]byte { } return data } + +// loadEmbeddedFS is a copy of chartutil.LoadDir with the difference that it uses an embed.FS. +func loadEmbeddedFS(embeddedFS embed.FS, chartPath string) (*chartapi.Chart, error) { + var ( + rules = ignore.Empty() + files []*chartutil.BufferedFile + ) + + if helmIgnore, err := embeddedFS.ReadFile(filepath.Join(chartPath, ignore.HelmIgnore)); err == nil { + r, err := ignore.Parse(bytes.NewReader(helmIgnore)) + if err != nil { + return nil, err + } + rules = r + } + + if err := fs.WalkDir(embeddedFS, chartPath, func(path string, dirEntry fs.DirEntry, err error) error { + if err != nil { + return err + } + + fileInfo, err := dirEntry.Info() + if err != nil { + return err + } + + normalizedPath := strings.TrimPrefix(strings.TrimPrefix(path, chartPath), "/") + if normalizedPath == "" { + // No need to process top level. Avoid bug with helmignore .* matching + // empty names. See issue 1779. + return nil + } + // Normalize to / since it will also work on Windows + normalizedPath = filepath.ToSlash(normalizedPath) + + if dirEntry.IsDir() { + // Directory-based ignore rules should involve skipping the entire + // contents of that directory. + if rules.Ignore(normalizedPath, fileInfo) { + return filepath.SkipDir + } + return nil + } + + // If a .helmignore file matches, skip this file. + if rules.Ignore(normalizedPath, fileInfo) { + return nil + } + + // Irregular files include devices, sockets, and other uses of files that + // are not regular files. In Go they have a file mode type bit set. + // See https://golang.org/pkg/os/#FileMode for examples. + if !fileInfo.Mode().IsRegular() { + return fmt.Errorf("cannot load irregular file %s as it has file mode type bits set", path) + } + + data, err := embeddedFS.ReadFile(path) + if err != nil { + return fmt.Errorf("error reading %s: %s", normalizedPath, err) + } + files = append(files, &chartutil.BufferedFile{Name: normalizedPath, Data: data}) + + return nil + }); err != nil { + return nil, err + } + + return chartutil.LoadFiles(files) +} diff --git a/vendor/github.com/gardener/gardener/pkg/chartrenderer/renderer.go b/vendor/github.com/gardener/gardener/pkg/chartrenderer/renderer.go index dac90c2e..d53de662 100644 --- a/vendor/github.com/gardener/gardener/pkg/chartrenderer/renderer.go +++ b/vendor/github.com/gardener/gardener/pkg/chartrenderer/renderer.go @@ -15,12 +15,16 @@ package chartrenderer import ( + "embed" + "k8s.io/helm/pkg/manifest" ) // Interface is an interface for rendering Helm Charts from path, name, namespace and values. type Interface interface { + // Deprecated: Use RenderEmbeddedFS for new code! Render(chartPath, releaseName, namespace string, values interface{}) (*RenderedChart, error) + RenderEmbeddedFS(embeddedFS embed.FS, chartPath, releaseName, namespace string, values interface{}) (*RenderedChart, error) RenderArchive(archive []byte, releaseName, namespace string, values interface{}) (*RenderedChart, error) } 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 36a33ede..a457efb2 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartapplier.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/chartapplier.go @@ -16,6 +16,7 @@ package kubernetes import ( "context" + "embed" "github.com/gardener/gardener/pkg/chartrenderer" @@ -26,8 +27,12 @@ import ( // Helm charts in Kubernetes clusters. type ChartApplier interface { chartrenderer.Interface + // Deprecated: Use ApplyFromEmbeddedFS for new code! Apply(ctx context.Context, chartPath, namespace, name string, opts ...ApplyOption) error + // Deprecated: Use DeleteFromEmbeddedFS for new code! Delete(ctx context.Context, chartPath, namespace, name string, opts ...DeleteOption) error + ApplyFromEmbeddedFS(ctx context.Context, embeddedFS embed.FS, chartPath, namespace, name string, opts ...ApplyOption) error + DeleteFromEmbeddedFS(ctx context.Context, embeddedFS embed.FS, chartPath, namespace, name string, opts ...DeleteOption) error } // chartApplier is a structure that contains a chart renderer and a manifest applier. @@ -58,7 +63,16 @@ func NewChartApplierForConfig(config *rest.Config) (ChartApplier, error) { // release's namespace and renders the template based value. // The resulting manifest will be applied to the cluster the Kubernetes client has been created for. // can be used to enchance the existing functionality. +// Deprecated: Use ApplyFromEmbeddedFS for new code! func (c *chartApplier) Apply(ctx context.Context, chartPath, namespace, name string, opts ...ApplyOption) error { + return c.apply(ctx, nil, chartPath, namespace, name, opts...) +} + +func (c *chartApplier) ApplyFromEmbeddedFS(ctx context.Context, embeddedFS embed.FS, chartPath, namespace, name string, opts ...ApplyOption) error { + return c.apply(ctx, &embeddedFS, chartPath, namespace, name, opts...) +} + +func (c *chartApplier) apply(ctx context.Context, embeddedFS *embed.FS, chartPath, namespace, name string, opts ...ApplyOption) error { applyOpts := &ApplyOptions{} for _, o := range opts { @@ -71,7 +85,7 @@ func (c *chartApplier) Apply(ctx context.Context, chartPath, namespace, name str applyOpts.MergeFuncs = DefaultMergeFuncs } - manifestReader, err := c.manifestReader(chartPath, namespace, name, applyOpts.Values) + manifestReader, err := c.newManifestReader(embeddedFS, chartPath, namespace, name, applyOpts.Values) if err != nil { return err } @@ -86,7 +100,16 @@ func (c *chartApplier) Apply(ctx context.Context, chartPath, namespace, name str // Delete takes a path to a chart , name of the release , // release's namespace and renders the template. // The resulting manifest will be deleted from the cluster the Kubernetes client has been created for. +// Deprecated: Use DeleteFromEmbeddedFS for new code! func (c *chartApplier) Delete(ctx context.Context, chartPath, namespace, name string, opts ...DeleteOption) error { + return c.delete(ctx, nil, chartPath, namespace, name, opts...) +} + +func (c *chartApplier) DeleteFromEmbeddedFS(ctx context.Context, embeddedFS embed.FS, chartPath, namespace, name string, opts ...DeleteOption) error { + return c.delete(ctx, &embeddedFS, chartPath, namespace, name, opts...) +} + +func (c *chartApplier) delete(ctx context.Context, embeddedFS *embed.FS, chartPath, namespace, name string, opts ...DeleteOption) error { deleteOpts := &DeleteOptions{} for _, o := range opts { @@ -95,7 +118,7 @@ func (c *chartApplier) Delete(ctx context.Context, chartPath, namespace, name st } } - manifestReader, err := c.manifestReader(chartPath, namespace, name, deleteOpts.Values) + manifestReader, err := c.newManifestReader(embeddedFS, chartPath, namespace, name, deleteOpts.Values) if err != nil { return err } @@ -115,10 +138,23 @@ func (c *chartApplier) Delete(ctx context.Context, chartPath, namespace, name st return c.DeleteManifest(ctx, manifestReader, deleteManifestOpts...) } -func (c *chartApplier) manifestReader(chartPath, namespace, name string, values interface{}) (UnstructuredReader, error) { - release, err := c.Render(chartPath, name, namespace, values) - if err != nil { - return nil, err +func (c *chartApplier) newManifestReader(embeddedFS *embed.FS, chartPath, namespace, name string, values interface{}) (UnstructuredReader, error) { + var ( + release *chartrenderer.RenderedChart + err error + ) + + if embeddedFS != nil { + release, err = c.RenderEmbeddedFS(*embeddedFS, chartPath, name, namespace, values) + if err != nil { + return nil, err + } + } else { + release, err = c.Render(chartPath, name, namespace, values) + if err != nil { + return nil, err + } } + return NewManifestReader(release.Manifest()), nil } 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 2f529f77..49405491 100644 --- a/vendor/github.com/gardener/gardener/pkg/client/kubernetes/client.go +++ b/vendor/github.com/gardener/gardener/pkg/client/kubernetes/client.go @@ -240,6 +240,7 @@ var supportedKubernetesVersions = []string{ "1.21", "1.22", "1.23", + "1.24", } func checkIfSupportedKubernetesVersion(gitVersion string) error { diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/finalizers.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/finalizers.go index b5043f0d..289f5d3b 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/finalizers.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/finalizers.go @@ -33,7 +33,7 @@ func PatchRemoveFinalizers(ctx context.Context, writer client.Writer, obj client return patchFinalizers(ctx, writer, obj, mergeFromWithOptimisticLock, controllerutil.RemoveFinalizer, finalizers...) } -func patchFinalizers(ctx context.Context, writer client.Writer, obj client.Object, patchFunc patchFn, mutate func(client.Object, string), finalizers ...string) error { +func patchFinalizers(ctx context.Context, writer client.Writer, obj client.Object, patchFunc patchFn, mutate func(client.Object, string) bool, finalizers ...string) error { beforePatch := obj.DeepCopyObject().(client.Object) for _, finalizer := range finalizers { mutate(obj, finalizer) @@ -74,7 +74,7 @@ func RemoveAllFinalizers(ctx context.Context, reader client.Reader, writer clien }) } -func tryPatchFinalizers(ctx context.Context, reader client.Reader, writer client.Writer, obj client.Object, mutate func(client.Object, string), finalizer string) error { +func tryPatchFinalizers(ctx context.Context, reader client.Reader, writer client.Writer, obj client.Object, mutate func(client.Object, string) bool, finalizer string) error { return retry.RetryOnConflict(retry.DefaultBackoff, func() error { // Unset finalizers array manually here, because finalizers array won't be unset in decoder, if it's empty on // the API server. This can lead to an empty patch, although we want to ensure, that the finalizer is present. diff --git a/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go b/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go index 96e99064..ccf577fe 100644 --- a/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go +++ b/vendor/github.com/gardener/gardener/pkg/controllerutils/patch.go @@ -23,18 +23,18 @@ import ( ) // patchFn returns a client.Patch with the given client.Object as the base object. -type patchFn func(client.Object) client.Patch +type patchFn func(client.Object, ...client.MergeFromOption) client.Patch -func mergeFrom(obj client.Object) client.Patch { - return client.MergeFrom(obj) +func mergeFrom(obj client.Object, opts ...client.MergeFromOption) client.Patch { + return client.MergeFromWithOptions(obj, opts...) } -func mergeFromWithOptimisticLock(obj client.Object) client.Patch { - return client.MergeFromWithOptions(obj, client.MergeFromWithOptimisticLock{}) +func mergeFromWithOptimisticLock(obj client.Object, opts ...client.MergeFromOption) client.Patch { + return client.MergeFromWithOptions(obj, append(opts, client.MergeFromWithOptimisticLock{})...) } -func strategicMergeFrom(obj client.Object) client.Patch { - return client.StrategicMergeFrom(obj) +func strategicMergeFrom(obj client.Object, opts ...client.MergeFromOption) client.Patch { + return client.StrategicMergeFrom(obj, opts...) } // GetAndCreateOrMergePatch is similar to controllerutil.CreateOrPatch, but does not care about the object's status section. @@ -44,8 +44,8 @@ func strategicMergeFrom(obj client.Object) client.Patch { // The MutateFn is called regardless of creating or updating an object. // // It returns the executed operation and an error. -func GetAndCreateOrMergePatch(ctx context.Context, c client.Client, obj client.Object, f controllerutil.MutateFn) (controllerutil.OperationResult, error) { - return getAndCreateOrPatch(ctx, c, obj, mergeFrom, f) +func GetAndCreateOrMergePatch(ctx context.Context, c client.Client, obj client.Object, f controllerutil.MutateFn, opts ...client.MergeFromOption) (controllerutil.OperationResult, error) { + return getAndCreateOrPatch(ctx, c, obj, mergeFrom, f, opts...) } // GetAndCreateOrStrategicMergePatch is similar to controllerutil.CreateOrPatch, but does not care about the object's status section. @@ -55,11 +55,11 @@ func GetAndCreateOrMergePatch(ctx context.Context, c client.Client, obj client.O // The MutateFn is called regardless of creating or updating an object. // // It returns the executed operation and an error. -func GetAndCreateOrStrategicMergePatch(ctx context.Context, c client.Client, obj client.Object, f controllerutil.MutateFn) (controllerutil.OperationResult, error) { - return getAndCreateOrPatch(ctx, c, obj, strategicMergeFrom, f) +func GetAndCreateOrStrategicMergePatch(ctx context.Context, c client.Client, obj client.Object, f controllerutil.MutateFn, opts ...client.MergeFromOption) (controllerutil.OperationResult, error) { + return getAndCreateOrPatch(ctx, c, obj, strategicMergeFrom, f, opts...) } -func getAndCreateOrPatch(ctx context.Context, c client.Client, obj client.Object, patchFunc patchFn, f controllerutil.MutateFn) (controllerutil.OperationResult, error) { +func getAndCreateOrPatch(ctx context.Context, c client.Client, obj client.Object, patchFunc patchFn, f controllerutil.MutateFn, opts ...client.MergeFromOption) (controllerutil.OperationResult, error) { key := client.ObjectKeyFromObject(obj) if err := c.Get(ctx, key, obj); err != nil { if !apierrors.IsNotFound(err) { @@ -74,7 +74,7 @@ func getAndCreateOrPatch(ctx context.Context, c client.Client, obj client.Object return controllerutil.OperationResultCreated, nil } - patch := patchFunc(obj.DeepCopyObject().(client.Object)) + patch := patchFunc(obj.DeepCopyObject().(client.Object), opts...) if err := f(); err != nil { return controllerutil.OperationResultNone, err } @@ -90,8 +90,8 @@ func getAndCreateOrPatch(ctx context.Context, c client.Client, obj client.Object // The MutateFn is called regardless of creating or patching an object. // // It returns the executed operation and an error. -func CreateOrGetAndMergePatch(ctx context.Context, c client.Client, obj client.Object, f controllerutil.MutateFn) (controllerutil.OperationResult, error) { - return createOrGetAndPatch(ctx, c, obj, mergeFrom, f) +func CreateOrGetAndMergePatch(ctx context.Context, c client.Client, obj client.Object, f controllerutil.MutateFn, opts ...client.MergeFromOption) (controllerutil.OperationResult, error) { + return createOrGetAndPatch(ctx, c, obj, mergeFrom, f, opts...) } // CreateOrGetAndStrategicMergePatch creates or gets and patches (using a strategic merge patch) the given object in the Kubernetes cluster. @@ -99,11 +99,11 @@ func CreateOrGetAndMergePatch(ctx context.Context, c client.Client, obj client.O // The MutateFn is called regardless of creating or patching an object. // // It returns the executed operation and an error. -func CreateOrGetAndStrategicMergePatch(ctx context.Context, c client.Client, obj client.Object, f controllerutil.MutateFn) (controllerutil.OperationResult, error) { - return createOrGetAndPatch(ctx, c, obj, strategicMergeFrom, f) +func CreateOrGetAndStrategicMergePatch(ctx context.Context, c client.Client, obj client.Object, f controllerutil.MutateFn, opts ...client.MergeFromOption) (controllerutil.OperationResult, error) { + return createOrGetAndPatch(ctx, c, obj, strategicMergeFrom, f, opts...) } -func createOrGetAndPatch(ctx context.Context, c client.Client, obj client.Object, patchFunc patchFn, f controllerutil.MutateFn) (controllerutil.OperationResult, error) { +func createOrGetAndPatch(ctx context.Context, c client.Client, obj client.Object, patchFunc patchFn, f controllerutil.MutateFn, opts ...client.MergeFromOption) (controllerutil.OperationResult, error) { if err := f(); err != nil { return controllerutil.OperationResultNone, err } @@ -117,7 +117,7 @@ func createOrGetAndPatch(ctx context.Context, c client.Client, obj client.Object return controllerutil.OperationResultNone, err2 } - patch := patchFunc(obj.DeepCopyObject().(client.Object)) + patch := patchFunc(obj.DeepCopyObject().(client.Object), opts...) if err2 := f(); err2 != nil { return controllerutil.OperationResultNone, err2 } 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 23ce3ed9..f7b0204a 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 @@ -270,6 +270,10 @@ type ShootCareControllerConfiguration struct { StaleExtensionHealthChecks *StaleExtensionHealthChecks // ConditionThresholds defines the condition threshold per condition type. ConditionThresholds []ConditionThreshold + // WebhookRemediatorEnabled specifies whether the remediator for webhooks not following the Kubernetes best + // practices (https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#best-practices-and-warnings) + // is enabled. + WebhookRemediatorEnabled *bool } // SeedCareControllerConfiguration defines the configuration of the SeedCare @@ -382,6 +386,14 @@ type FluentBit struct { // OutputSection defines [OUTPUT] configuration for the fluent-bit. // If it is nil, fluent-bit uses default output configuration. OutputSection *string + // NetworkPolicy defines settings for the fluent-bit NetworkPolicy. + NetworkPolicy *FluentBitNetworkPolicy +} + +// FluentBitNetworkPolicy defines settings for the fluent-bit NetworkPolicy. +type FluentBitNetworkPolicy struct { + // AdditionalEgressIPBlocks contains IP CIDRs for the egress network policy. + AdditionalEgressIPBlocks []string } // Loki contains configuration for the Loki. 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 2e0c4390..4880b0d3 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 @@ -18,7 +18,6 @@ import ( "fmt" "time" - v1alpha1constants "github.com/gardener/gardener/pkg/apis/core/v1alpha1/constants" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -109,8 +108,8 @@ func SetDefaults_GardenletConfiguration(obj *GardenletConfiguration) { } if len(obj.ExposureClassHandlers[i].SNI.Ingress.Labels) == 0 { obj.ExposureClassHandlers[i].SNI.Ingress.Labels = map[string]string{ - v1beta1constants.LabelApp: DefaultIngressGatewayAppLabelValue, - v1alpha1constants.GardenRole: v1alpha1constants.GardenRoleExposureClassHandler, + v1beta1constants.LabelApp: DefaultIngressGatewayAppLabelValue, + v1beta1constants.GardenRole: v1beta1constants.GardenRoleExposureClassHandler, } } } 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 d02fc9f9..4278da3f 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 @@ -338,6 +338,11 @@ type ShootCareControllerConfiguration struct { // ConditionThresholds defines the condition threshold per condition type. // +optional ConditionThresholds []ConditionThreshold `json:"conditionThresholds,omitempty"` + // WebhookRemediatorEnabled specifies whether the remediator for webhooks not following the Kubernetes best + // practices (https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#best-practices-and-warnings) + // is enabled. + // +optional + WebhookRemediatorEnabled *bool `json:"webhookRemediatorEnabled,omitempty"` } // SeedCareControllerConfiguration defines the configuration of the SeedCare @@ -470,6 +475,16 @@ type FluentBit struct { // If it is nil, fluent-bit uses default output configuration. // +optional OutputSection *string `json:"output,omitempty" yaml:"output,omitempty"` + // NetworkPolicy defines settings for the fluent-bit NetworkPolicy. + // +optional + NetworkPolicy *FluentBitNetworkPolicy `json:"networkPolicy,omitempty" yaml:"networkPolicy,omitempty"` +} + +// FluentBitNetworkPolicy defines settings for the fluent-bit NetworkPolicy. +type FluentBitNetworkPolicy struct { + // AdditionalEgressIPBlocks contains IP CIDRs for the egress network policy. + // +optional + AdditionalEgressIPBlocks []string `json:"additionalEgressIPBlocks,omitempty" yaml:"additionalEgressIPBlocks,omitempty"` } // Loki contains configuration for the Loki. 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 15b5089b..d53de9bb 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 @@ -194,6 +194,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*FluentBitNetworkPolicy)(nil), (*config.FluentBitNetworkPolicy)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_FluentBitNetworkPolicy_To_config_FluentBitNetworkPolicy(a.(*FluentBitNetworkPolicy), b.(*config.FluentBitNetworkPolicy), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.FluentBitNetworkPolicy)(nil), (*FluentBitNetworkPolicy)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_FluentBitNetworkPolicy_To_v1alpha1_FluentBitNetworkPolicy(a.(*config.FluentBitNetworkPolicy), b.(*FluentBitNetworkPolicy), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*GardenClientConnection)(nil), (*config.GardenClientConnection)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_GardenClientConnection_To_config_GardenClientConnection(a.(*GardenClientConnection), b.(*config.GardenClientConnection), scope) }); err != nil { @@ -837,6 +847,7 @@ func autoConvert_v1alpha1_FluentBit_To_config_FluentBit(in *FluentBit, out *conf out.ServiceSection = (*string)(unsafe.Pointer(in.ServiceSection)) out.InputSection = (*string)(unsafe.Pointer(in.InputSection)) out.OutputSection = (*string)(unsafe.Pointer(in.OutputSection)) + out.NetworkPolicy = (*config.FluentBitNetworkPolicy)(unsafe.Pointer(in.NetworkPolicy)) return nil } @@ -849,6 +860,7 @@ func autoConvert_config_FluentBit_To_v1alpha1_FluentBit(in *config.FluentBit, ou out.ServiceSection = (*string)(unsafe.Pointer(in.ServiceSection)) out.InputSection = (*string)(unsafe.Pointer(in.InputSection)) out.OutputSection = (*string)(unsafe.Pointer(in.OutputSection)) + out.NetworkPolicy = (*FluentBitNetworkPolicy)(unsafe.Pointer(in.NetworkPolicy)) return nil } @@ -857,6 +869,26 @@ func Convert_config_FluentBit_To_v1alpha1_FluentBit(in *config.FluentBit, out *F return autoConvert_config_FluentBit_To_v1alpha1_FluentBit(in, out, s) } +func autoConvert_v1alpha1_FluentBitNetworkPolicy_To_config_FluentBitNetworkPolicy(in *FluentBitNetworkPolicy, out *config.FluentBitNetworkPolicy, s conversion.Scope) error { + out.AdditionalEgressIPBlocks = *(*[]string)(unsafe.Pointer(&in.AdditionalEgressIPBlocks)) + return nil +} + +// Convert_v1alpha1_FluentBitNetworkPolicy_To_config_FluentBitNetworkPolicy is an autogenerated conversion function. +func Convert_v1alpha1_FluentBitNetworkPolicy_To_config_FluentBitNetworkPolicy(in *FluentBitNetworkPolicy, out *config.FluentBitNetworkPolicy, s conversion.Scope) error { + return autoConvert_v1alpha1_FluentBitNetworkPolicy_To_config_FluentBitNetworkPolicy(in, out, s) +} + +func autoConvert_config_FluentBitNetworkPolicy_To_v1alpha1_FluentBitNetworkPolicy(in *config.FluentBitNetworkPolicy, out *FluentBitNetworkPolicy, s conversion.Scope) error { + out.AdditionalEgressIPBlocks = *(*[]string)(unsafe.Pointer(&in.AdditionalEgressIPBlocks)) + return nil +} + +// Convert_config_FluentBitNetworkPolicy_To_v1alpha1_FluentBitNetworkPolicy is an autogenerated conversion function. +func Convert_config_FluentBitNetworkPolicy_To_v1alpha1_FluentBitNetworkPolicy(in *config.FluentBitNetworkPolicy, out *FluentBitNetworkPolicy, s conversion.Scope) error { + return autoConvert_config_FluentBitNetworkPolicy_To_v1alpha1_FluentBitNetworkPolicy(in, out, s) +} + func autoConvert_v1alpha1_GardenClientConnection_To_config_GardenClientConnection(in *GardenClientConnection, out *config.GardenClientConnection, s conversion.Scope) error { if err := configv1alpha1.Convert_v1alpha1_ClientConnectionConfiguration_To_config_ClientConnectionConfiguration(&in.ClientConnectionConfiguration, &out.ClientConnectionConfiguration, s); err != nil { return err @@ -1572,6 +1604,7 @@ func autoConvert_v1alpha1_ShootCareControllerConfiguration_To_config_ShootCareCo out.SyncPeriod = (*v1.Duration)(unsafe.Pointer(in.SyncPeriod)) out.StaleExtensionHealthChecks = (*config.StaleExtensionHealthChecks)(unsafe.Pointer(in.StaleExtensionHealthChecks)) out.ConditionThresholds = *(*[]config.ConditionThreshold)(unsafe.Pointer(&in.ConditionThresholds)) + out.WebhookRemediatorEnabled = (*bool)(unsafe.Pointer(in.WebhookRemediatorEnabled)) return nil } @@ -1585,6 +1618,7 @@ func autoConvert_config_ShootCareControllerConfiguration_To_v1alpha1_ShootCareCo out.SyncPeriod = (*v1.Duration)(unsafe.Pointer(in.SyncPeriod)) out.StaleExtensionHealthChecks = (*StaleExtensionHealthChecks)(unsafe.Pointer(in.StaleExtensionHealthChecks)) out.ConditionThresholds = *(*[]ConditionThreshold)(unsafe.Pointer(&in.ConditionThresholds)) + out.WebhookRemediatorEnabled = (*bool)(unsafe.Pointer(in.WebhookRemediatorEnabled)) return nil } 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 7d740ac8..e16e9523 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 @@ -404,6 +404,11 @@ func (in *FluentBit) DeepCopyInto(out *FluentBit) { *out = new(string) **out = **in } + if in.NetworkPolicy != nil { + in, out := &in.NetworkPolicy, &out.NetworkPolicy + *out = new(FluentBitNetworkPolicy) + (*in).DeepCopyInto(*out) + } return } @@ -417,6 +422,27 @@ func (in *FluentBit) DeepCopy() *FluentBit { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FluentBitNetworkPolicy) DeepCopyInto(out *FluentBitNetworkPolicy) { + *out = *in + if in.AdditionalEgressIPBlocks != nil { + in, out := &in.AdditionalEgressIPBlocks, &out.AdditionalEgressIPBlocks + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBitNetworkPolicy. +func (in *FluentBitNetworkPolicy) DeepCopy() *FluentBitNetworkPolicy { + if in == nil { + return nil + } + out := new(FluentBitNetworkPolicy) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GardenClientConnection) DeepCopyInto(out *GardenClientConnection) { *out = *in @@ -1152,6 +1178,11 @@ func (in *ShootCareControllerConfiguration) DeepCopyInto(out *ShootCareControlle *out = make([]ConditionThreshold, len(*in)) copy(*out, *in) } + if in.WebhookRemediatorEnabled != nil { + in, out := &in.WebhookRemediatorEnabled, &out.WebhookRemediatorEnabled + *out = new(bool) + **out = **in + } return } 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 3c370c29..10fb3f2b 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 @@ -404,6 +404,11 @@ func (in *FluentBit) DeepCopyInto(out *FluentBit) { *out = new(string) **out = **in } + if in.NetworkPolicy != nil { + in, out := &in.NetworkPolicy, &out.NetworkPolicy + *out = new(FluentBitNetworkPolicy) + (*in).DeepCopyInto(*out) + } return } @@ -417,6 +422,27 @@ func (in *FluentBit) DeepCopy() *FluentBit { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FluentBitNetworkPolicy) DeepCopyInto(out *FluentBitNetworkPolicy) { + *out = *in + if in.AdditionalEgressIPBlocks != nil { + in, out := &in.AdditionalEgressIPBlocks, &out.AdditionalEgressIPBlocks + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FluentBitNetworkPolicy. +func (in *FluentBitNetworkPolicy) DeepCopy() *FluentBitNetworkPolicy { + if in == nil { + return nil + } + out := new(FluentBitNetworkPolicy) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GardenClientConnection) DeepCopyInto(out *GardenClientConnection) { *out = *in @@ -1152,6 +1178,11 @@ func (in *ShootCareControllerConfiguration) DeepCopyInto(out *ShootCareControlle *out = make([]ConditionThreshold, len(*in)) copy(*out, *in) } + if in.WebhookRemediatorEnabled != nil { + in, out := &in.WebhookRemediatorEnabled, &out.WebhookRemediatorEnabled + *out = new(bool) + **out = **in + } return } 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 b4003eb6..0d9cbba8 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/errors/errors.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/errors/errors.go @@ -98,9 +98,13 @@ func (t *reconciliationError) ErrorID() string { return t.errorID } +func (t *reconciliationError) Unwrap() error { + return t.error +} + // Cause implements the causer interface and returns the underlying error func (t *reconciliationError) Cause() error { - return t.error + return t.Unwrap() } // GetID returns the ID of the error if possible. 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 fefb8306..a4e7249c 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 @@ -20,7 +20,7 @@ import ( "sync" "time" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" ) type progressReporterDelaying struct { 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 ce682c44..dd93b3c0 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/leaderelection.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/kubernetes/leaderelection.go @@ -28,14 +28,14 @@ import ( // ReadLeaderElectionRecord returns the leader election record for a given lock type and a namespace/name combination. func ReadLeaderElectionRecord(ctx context.Context, client client.Client, lock, namespace, name string) (*resourcelock.LeaderElectionRecord, error) { switch lock { - case resourcelock.EndpointsResourceLock: + case "endpoints": endpoint := &corev1.Endpoints{} if err := client.Get(ctx, Key(namespace, name), endpoint); err != nil { return nil, err } return leaderElectionRecordFromAnnotations(endpoint.Annotations) - case resourcelock.ConfigMapsResourceLock: + case "configmaps": configmap := &corev1.ConfigMap{} if err := client.Get(ctx, Key(namespace, name), configmap); err != nil { return nil, err diff --git a/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go b/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go index 7096abab..83a88a0f 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/miscellaneous.go @@ -120,11 +120,6 @@ func TestEmail(email string) bool { return match } -// IsTrue returns true if the passed bool pointer is not nil and true. -func IsTrue(value *bool) bool { - return value != nil && *value -} - // IDForKeyWithOptionalValue returns an identifier for the given key + optional value. func IDForKeyWithOptionalValue(key string, value *string) string { v := "" @@ -139,11 +134,6 @@ func QuantityPtr(q resource.Quantity) *resource.Quantity { return &q } -// DurationPtr returns a time.Duration pointer to its argument. -func DurationPtr(d time.Duration) *time.Duration { - return &d -} - // Indent indents the given string with the given number of spaces. func Indent(str string, spaces int) string { return strings.ReplaceAll(str, "\n", "\n"+strings.Repeat(" ", spaces)) 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 961d3e00..706ce49a 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/alias.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/alias.go @@ -21,7 +21,7 @@ import ( "github.com/gardener/gardener/pkg/utils" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" ) var ( diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/bundle.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/bundle.go new file mode 100644 index 00000000..47786394 --- /dev/null +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/bundle.go @@ -0,0 +1,79 @@ +// 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 +// +// 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 secrets + +const ( + // DataKeyCertificateBundle is the key in the data map for the certificate bundle. + DataKeyCertificateBundle = "bundle.crt" + // DataKeyPrivateKeyBundle is the key in the data map for the private key bundle. + DataKeyPrivateKeyBundle = "bundle.key" +) + +// CertificateBundleSecretConfig is configuration for certificate bundles. +type CertificateBundleSecretConfig struct { + Name string + CertificatePEMs [][]byte +} + +// GetName returns the name of the secret. +func (s *CertificateBundleSecretConfig) GetName() string { + return s.Name +} + +// Generate implements ConfigInterface. +func (s *CertificateBundleSecretConfig) Generate() (DataInterface, error) { + return newBundle(s.Name, s.CertificatePEMs, DataKeyCertificateBundle) +} + +// RSAPrivateKeyBundleSecretConfig is configuration for certificate bundles. +type RSAPrivateKeyBundleSecretConfig struct { + Name string + PrivateKeyPEMs [][]byte +} + +// GetName returns the name of the secret. +func (s *RSAPrivateKeyBundleSecretConfig) GetName() string { + return s.Name +} + +// Generate implements ConfigInterface. +func (s *RSAPrivateKeyBundleSecretConfig) Generate() (DataInterface, error) { + return newBundle(s.Name, s.PrivateKeyPEMs, DataKeyPrivateKeyBundle) +} + +func newBundle(name string, entries [][]byte, dataKeyName string) (DataInterface, error) { + var bundle []byte + for _, entry := range entries { + bundle = append(bundle, entry...) + } + + return &Bundle{ + Name: name, + Bundle: bundle, + DataKeyName: dataKeyName, + }, nil +} + +// Bundle contains the name and the generated certificate bundle. +type Bundle struct { + Name string + Bundle []byte + DataKeyName string +} + +// SecretData computes the data map which can be used in a Kubernetes secret. +func (b *Bundle) SecretData() map[string][]byte { + return map[string][]byte{b.DataKeyName: b.Bundle} +} diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificates.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate.go similarity index 98% rename from vendor/github.com/gardener/gardener/pkg/utils/secrets/certificates.go rename to vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate.go index 4954f146..7dded01f 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificates.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate.go @@ -26,8 +26,6 @@ import ( "time" "github.com/gardener/gardener/pkg/utils" - - "k8s.io/apimachinery/pkg/util/clock" ) // CertType is a string alias for certificate types. @@ -76,8 +74,6 @@ type CertificateSecretConfig struct { Validity *time.Duration SkipPublishingCACertificate bool - - Clock clock.Clock } // Certificate contains the private key, and the certificate. It does also contain the CA certificate @@ -207,13 +203,8 @@ func LoadCertificate(name string, privateKeyPEM, certificatePEM []byte) (*Certif // or both, depending on the value. If is true, then a CA certificate is being created. // The certificates a valid for 10 years. func (s *CertificateSecretConfig) generateCertificateTemplate() *x509.Certificate { - var clock clock.Clock = clock.RealClock{} - - if s.Clock != nil { - clock = s.Clock - } + now := Clock.Now() - now := clock.Now() expiration := now.AddDate(10, 0, 0) // + 10 years if s.Validity != nil { expiration = now.Add(*s.Validity) diff --git a/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate_bundle.go b/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate_bundle.go deleted file mode 100644 index f88f2e22..00000000 --- a/vendor/github.com/gardener/gardener/pkg/utils/secrets/certificate_bundle.go +++ /dev/null @@ -1,56 +0,0 @@ -// 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 -// -// 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 secrets - -// DataKeyCertificateBundle is the key in the data map for the certificate bundle. -const DataKeyCertificateBundle = "bundle.crt" - -// CertificateBundleSecretConfig is configuration for certificate bundles. -type CertificateBundleSecretConfig struct { - Name string - CertificatePEMs [][]byte -} - -// CertificateBundle contains the name and the generated certificate bundle. -type CertificateBundle struct { - Name string - Bundle []byte -} - -// GetName returns the name of the secret. -func (s *CertificateBundleSecretConfig) GetName() string { - return s.Name -} - -// Generate implements ConfigInterface. -func (s *CertificateBundleSecretConfig) Generate() (DataInterface, error) { - return &CertificateBundle{ - Name: s.Name, - Bundle: s.generateBundle(), - }, nil -} - -func (s *CertificateBundleSecretConfig) generateBundle() []byte { - var bundle []byte - for _, pem := range s.CertificatePEMs { - bundle = append(bundle, pem...) - } - return bundle -} - -// SecretData computes the data map which can be used in a Kubernetes secret. -func (v *CertificateBundle) SecretData() map[string][]byte { - return map[string][]byte{DataKeyCertificateBundle: v.Bundle} -} 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 31dfeb6c..5cb1c5b4 100644 --- a/vendor/github.com/gardener/gardener/pkg/utils/version/version.go +++ b/vendor/github.com/gardener/gardener/pkg/utils/version/version.go @@ -55,6 +55,10 @@ var ( ConstraintK8sEqual123 *semver.Constraints // ConstraintK8sGreaterEqual123 is a version constraint for versions >= 1.23. ConstraintK8sGreaterEqual123 *semver.Constraints + // ConstraintK8sEqual124 is a version constraint for versions == 1.24. + ConstraintK8sEqual124 *semver.Constraints + // ConstraintK8sLess124 is a version constraint for versions < 1.24. + ConstraintK8sLess124 *semver.Constraints ) func init() { @@ -92,6 +96,10 @@ func init() { utilruntime.Must(err) ConstraintK8sGreaterEqual123, err = semver.NewConstraint(">= 1.23") utilruntime.Must(err) + ConstraintK8sEqual124, err = semver.NewConstraint("1.24.x") + utilruntime.Must(err) + ConstraintK8sLess124, err = semver.NewConstraint("< 1.24") + utilruntime.Must(err) } // CompareVersions returns true if the constraint compared by to diff --git a/vendor/github.com/gardener/hvpa-controller/LICENSE.md b/vendor/github.com/gardener/hvpa-controller/LICENSE.md deleted file mode 100644 index fc688548..00000000 --- a/vendor/github.com/gardener/hvpa-controller/LICENSE.md +++ /dev/null @@ -1,296 +0,0 @@ -``` - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. -``` - -## APIs - -This project may include APIs to SAP or third party products or services. The use of these APIs, -products and services may be subject to additional agreements. In no event shall the application -of the Apache Software License, v.2 to this project grant any rights in or to these APIs, products -or services that would alter, expand, be inconsistent with, or supersede any terms of these additional -agreements. API means application programming interfaces, as well as their respective specifications -and implementing code that allows other software products to communicate with or call on SAP or -third party products or services (for example, SAP Enterprise Services, BAPIs, Idocs, RFCs and -ABAP calls or other user exits) and may be made available through SAP or third party products, -SDKs, documentation or other media. - -## Subcomponents - -This project includes the following subcomponents that are subject to separate license terms. -Your use of these subcomponents is subject to the separate license terms applicable to -each subcomponent. - -API. -https://github.com/kubernetes/api/ -Copyright 2017 The Kubernetes Authors. -Apache 2 license (https://github.com/kubernetes/api/blob/master/LICENSE ). - -APIMachinery. -https://github.com/kubernetes/apimachinery -Copyright 2017 The Kubernetes Authors. -Apache 2 license (https://github.com/kubernetes/apimachinery/blob/master/LICENSE ). - -Kubernetes client-go -https://github.com/kubernetes/client-go/ -Copyright 2018 The Kubernetes Authors -Apache 2 license (https://github.com/kubernetes/client-go/blob/master/LICENSE) - -Autoscaler. -https://github.com/kubernetes/autoscaler -Copyright 2017 The Kubernetes Authors. -Apache 2 license (https://github.com/kubernetes/autoscaler/blob/master/LICENSE ). - -Code-Generator. -https://git.k8s.io/code-generator. -Copyright 2017 The Kubernetes Authors. -Apache 2 license (https://git.k8s.io/code-generator/LICENSE) - -controller-runtime -https://github.com/kubernetes-sigs/controller-runtime -Copyright 2018 The Kubernetes Authors. -Apache 2 license (https://github.com/kubernetes-sigs/controller-runtime/blob/master/LICENSE). - -controller-tools -https://github.com/kubernetes-sigs/controller-tools -Copyright 2018 The Kubernetes Authors. -Apache 2 license (https://github.com/kubernetes-sigs/controller-runtime/blob/master/LICENSE). - -Klog -https://github.com/kubernetes/klog -Copyright 2017 The Kubernetes Authors -Apache 2 license (https://github.com/kubernetes/klog/blob/master/LICENSE) - -Ginkgo. -https://github.com/onsi/ginkgo. -Copyright (c) 2013-2014 Onsi Fakhouri -MIT license (https://github.com/onsi/ginkgo/blob/master/LICENSE) - -Gomega. -https://github.com/onsi/gomega. -Copyright (c) 2013-2014 Onsi Fakhouri -MIT license (https://github.com/onsi/gomega/blob/master/LICENSE) - ------- -## MIT License - - The MIT License (MIT) - - Copyright (c) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. diff --git a/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/groupversion_info.go b/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/groupversion_info.go index bfa927dc..96063838 100644 --- a/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/groupversion_info.go +++ b/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/groupversion_info.go @@ -23,7 +23,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" - vpa_api "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1beta2" + vpa_api "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" ) var ( @@ -31,7 +31,7 @@ var ( GroupName = "autoscaling.k8s.io" // SchemeGroupVersionVpa is group version used to register these objects - SchemeGroupVersionVpa = schema.GroupVersion{Group: GroupName, Version: "v1beta2"} + SchemeGroupVersionVpa = schema.GroupVersion{Group: GroupName, Version: "v1"} // SchemeGroupVersionHvpa is group version used to register these objects SchemeGroupVersionHvpa = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} diff --git a/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/hvpa_types.go b/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/hvpa_types.go index befc7e4a..4a0f5887 100644 --- a/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/hvpa_types.go +++ b/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/hvpa_types.go @@ -19,7 +19,7 @@ package v1alpha1 import ( autoscaling "k8s.io/api/autoscaling/v2beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - vpa_api "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1beta2" + vpa_api "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" ) // EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! @@ -91,7 +91,7 @@ type WeightBasedScalingInterval struct { // VpaWeight defines the weight (in percentage) to be given to VPA's recommendationd for the interval of number of replicas provided // +kubebuilder:validation:Minimum=0 // +kubebuilder:validation:Maximum=100 - VpaWeight VpaWeight `json:"vpaWeight,omitempty"` + VpaWeight int32 `json:"vpaWeight,omitempty"` // StartReplicaCount is the number of replicas from which VpaWeight is applied to VPA scaling // If this field is not provided, it will default to minReplicas of HPA // +optional @@ -158,6 +158,7 @@ type ScaleParams struct { // VpaTemplate defines the template for VPA type VpaTemplate struct { // Metadata of the pods created from this template. + // +kubebuilder:validation:XPreserveUnknownFields // +optional metav1.ObjectMeta `json:"metadata,omitempty"` @@ -169,6 +170,7 @@ type VpaTemplate struct { // HpaTemplate defines the template for HPA type HpaTemplate struct { // Metadata of the pods created from this template. + // +kubebuilder:validation:XPreserveUnknownFields // +optional metav1.ObjectMeta `json:"metadata,omitempty"` @@ -233,14 +235,11 @@ type ChangeParams struct { Percentage *int32 `json:"percentage,omitempty"` } -// VpaWeight - weight to provide to VPA scaling -type VpaWeight int32 - const ( // VpaOnly - only vertical scaling - VpaOnly VpaWeight = 100 + VpaOnly int32 = 100 // HpaOnly - only horizontal scaling - HpaOnly VpaWeight = 0 + HpaOnly int32 = 0 ) // LastError has detailed information of the error @@ -270,8 +269,8 @@ type HvpaStatus struct { // Current VPA UpdatePolicy set in the spec VpaScaleDownUpdatePolicy *UpdatePolicy `json:"vpaScaleDownUpdatePolicy,omitempty"` - HpaWeight VpaWeight `json:"hpaWeight,omitempty"` - VpaWeight VpaWeight `json:"vpaWeight,omitempty"` + HpaWeight int32 `json:"hpaWeight,omitempty"` + VpaWeight int32 `json:"vpaWeight,omitempty"` // Override scale up stabilization window OverrideScaleUpStabilization bool `json:"overrideScaleUpStabilization,omitempty"` diff --git a/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/hvpa_webhook.go b/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/hvpa_webhook.go deleted file mode 100644 index bd1a5ae7..00000000 --- a/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/hvpa_webhook.go +++ /dev/null @@ -1,75 +0,0 @@ -/* -Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha1 - -import ( - "k8s.io/apimachinery/pkg/runtime" - ctrl "sigs.k8s.io/controller-runtime" - logf "sigs.k8s.io/controller-runtime/pkg/log" - "sigs.k8s.io/controller-runtime/pkg/webhook" -) - -// log is for logging in this package. -var hvpalog = logf.Log.WithName("hvpa-resource") - -// SetupWebhookWithManager sets up manager with a new webhook and r as the reconcile.Reconciler -func (r *Hvpa) SetupWebhookWithManager(mgr ctrl.Manager) error { - return ctrl.NewWebhookManagedBy(mgr). - For(r). - Complete() -} - -// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! - -// +kubebuilder:webhook:path=/mutate-autoscaling-k8s-io-v1alpha1-hvpa,mutating=true,failurePolicy=fail,groups=autoscaling.k8s.io,resources=hvpas,verbs=create;update,versions=v1alpha1,name=mhvpa.kb.io - -var _ webhook.Defaulter = &Hvpa{} - -// Default implements webhook.Defaulter so a webhook will be registered for the type -func (r *Hvpa) Default() { - hvpalog.Info("default", "name", r.Name) - - // TODO(user): fill in your defaulting logic. -} - -// +kubebuilder:webhook:path=/validate-autoscaling-k8s-io-v1alpha1-hvpa,mutating=false,failurePolicy=fail,groups=autoscaling.k8s.io,resources=hvpas,verbs=create;update,versions=v1alpha1,name=vhvpa.kb.io - -var _ webhook.Validator = &Hvpa{} - -// ValidateCreate implements webhook.Validator so a webhook will be registered for the type -func (r *Hvpa) ValidateCreate() error { - hvpalog.Info("validate create", "name", r.Name) - - // TODO(user): fill in your validation logic upon object creation. - return nil -} - -// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type -func (r *Hvpa) ValidateUpdate(old runtime.Object) error { - hvpalog.Info("validate update", "name", r.Name) - - // TODO(user): fill in your validation logic upon object update. - return nil -} - -// ValidateDelete implements webhook.Validator so a webhook will be registered for the type -func (r *Hvpa) ValidateDelete() error { - hvpalog.Info("validate delete", "name", r.Name) - - // TODO(user): fill in your validation logic upon object update. - return nil -} diff --git a/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/zz_generated.deepcopy.go index ed364a5b..c4de3d76 100644 --- a/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/gardener/hvpa-controller/api/v1alpha1/zz_generated.deepcopy.go @@ -1,3 +1,4 @@ +//go:build !ignore_autogenerated // +build !ignore_autogenerated /* @@ -16,15 +17,15 @@ See the License for the specific language governing permissions and limitations under the License. */ -// autogenerated by controller-gen object, do not modify manually +// Code generated by controller-gen. DO NOT EDIT. package v1alpha1 import ( "k8s.io/api/autoscaling/v2beta1" - "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1beta2" + "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -73,7 +74,7 @@ func (in *HpaSpec) DeepCopyInto(out *HpaSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) + *out = new(metav1.LabelSelector) (*in).DeepCopyInto(*out) } in.ScaleUp.DeepCopyInto(&out.ScaleUp) @@ -181,7 +182,7 @@ func (in *Hvpa) DeepCopyObject() runtime.Object { func (in *HvpaList) DeepCopyInto(out *HvpaList) { *out = *in out.TypeMeta = in.TypeMeta - out.ListMeta = in.ListMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]Hvpa, len(*in)) @@ -384,8 +385,7 @@ func (in *ScalingStatus) DeepCopyInto(out *ScalingStatus) { *out = *in if in.LastScaleTime != nil { in, out := &in.LastScaleTime, &out.LastScaleTime - *out = new(v1.Time) - (*in).DeepCopyInto(*out) + *out = (*in).DeepCopy() } out.HpaStatus = in.HpaStatus in.VpaStatus.DeepCopyInto(&out.VpaStatus) @@ -426,7 +426,7 @@ func (in *VpaSpec) DeepCopyInto(out *VpaSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) + *out = new(metav1.LabelSelector) (*in).DeepCopyInto(*out) } in.ScaleUp.DeepCopyInto(&out.ScaleUp) @@ -467,7 +467,7 @@ func (in *VpaTemplateSpec) DeepCopyInto(out *VpaTemplateSpec) { *out = *in if in.ResourcePolicy != nil { in, out := &in.ResourcePolicy, &out.ResourcePolicy - *out = new(v1beta2.PodResourcePolicy) + *out = new(v1.PodResourcePolicy) (*in).DeepCopyInto(*out) } } diff --git a/vendor/github.com/go-logr/logr/README.md b/vendor/github.com/go-logr/logr/README.md index ad825f5f..ab593118 100644 --- a/vendor/github.com/go-logr/logr/README.md +++ b/vendor/github.com/go-logr/logr/README.md @@ -105,14 +105,18 @@ with higher verbosity means more (and less important) logs will be generated. There are implementations for the following logging libraries: - **a function** (can bridge to non-structured libraries): [funcr](https://github.com/go-logr/logr/tree/master/funcr) +- **a testing.T** (for use in Go tests, with JSON-like output): [testr](https://github.com/go-logr/logr/tree/master/testr) - **github.com/google/glog**: [glogr](https://github.com/go-logr/glogr) - **k8s.io/klog** (for Kubernetes): [klogr](https://git.k8s.io/klog/klogr) +- **a testing.T** (with klog-like text output): [ktesting](https://git.k8s.io/klog/ktesting) - **go.uber.org/zap**: [zapr](https://github.com/go-logr/zapr) - **log** (the Go standard library logger): [stdr](https://github.com/go-logr/stdr) - **github.com/sirupsen/logrus**: [logrusr](https://github.com/bombsimon/logrusr) - **github.com/wojas/genericr**: [genericr](https://github.com/wojas/genericr) (makes it easy to implement your own backend) - **logfmt** (Heroku style [logging](https://www.brandur.org/logfmt)): [logfmtr](https://github.com/iand/logfmtr) - **github.com/rs/zerolog**: [zerologr](https://github.com/go-logr/zerologr) +- **github.com/go-kit/log**: [gokitlogr](https://github.com/tonglil/gokitlogr) (also compatible with github.com/go-kit/kit/log since v0.12.0) +- **bytes.Buffer** (writing to a buffer): [bufrlogr](https://github.com/tonglil/buflogr) (useful for ensuring values were logged, like during testing) ## FAQ diff --git a/vendor/github.com/go-logr/logr/logr.go b/vendor/github.com/go-logr/logr/logr.go index 44cd398c..c3b56b3d 100644 --- a/vendor/github.com/go-logr/logr/logr.go +++ b/vendor/github.com/go-logr/logr/logr.go @@ -43,7 +43,9 @@ limitations under the License. // // Info() and Error() are very similar, but they are separate methods so that // LogSink implementations can choose to do things like attach additional -// information (such as stack traces) on calls to Error(). +// information (such as stack traces) on calls to Error(). Error() messages are +// always logged, regardless of the current verbosity. If there is no error +// instance available, passing nil is valid. // // Verbosity // @@ -53,6 +55,7 @@ limitations under the License. // Log-lines with V-levels that are not enabled (as per the LogSink) will not // be written. Level V(0) is the default, and logger.V(0).Info() has the same // meaning as logger.Info(). Negative V-levels have the same meaning as V(0). +// Error messages do not have a verbosity level and are always logged. // // Where we might have written: // if flVerbose >= 2 { @@ -112,6 +115,15 @@ limitations under the License. // may be any Go value, but how the value is formatted is determined by the // LogSink implementation. // +// Logger instances are meant to be passed around by value. Code that receives +// such a value can call its methods without having to check whether the +// instance is ready for use. +// +// Calling methods with the null logger (Logger{}) as instance will crash +// because it has no LogSink. Therefore this null logger should never be passed +// around. For cases where passing a logger is optional, a pointer to Logger +// should be used. +// // Key Naming Conventions // // Keys are not strictly required to conform to any specification or regex, but @@ -253,11 +265,13 @@ func (l Logger) Info(msg string, keysAndValues ...interface{}) { // Error logs an error, with the given message and key/value pairs as context. // It functions similarly to Info, but may have unique behavior, and should be // preferred for logging errors (see the package documentations for more -// information). +// information). The log message will always be emitted, regardless of +// verbosity level. // // The msg argument should be used to add context to any underlying error, // while the err argument should be used to attach the actual error that -// triggered this log line, if present. +// 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 withHelper, ok := l.sink.(CallStackHelperLogSink); ok { withHelper.GetCallStackHelper()() diff --git a/vendor/github.com/gobuffalo/flect/camelize.go b/vendor/github.com/gobuffalo/flect/camelize.go index 8a9928e8..d8851c8f 100644 --- a/vendor/github.com/gobuffalo/flect/camelize.go +++ b/vendor/github.com/gobuffalo/flect/camelize.go @@ -22,10 +22,6 @@ func (i Ident) Camelize() Ident { for i, part := range i.Parts { var x string var capped bool - if strings.ToLower(part) == "id" { - out = append(out, "ID") - continue - } for _, c := range part { if unicode.IsLetter(c) || unicode.IsDigit(c) { if i == 0 { diff --git a/vendor/github.com/gobuffalo/flect/pascalize.go b/vendor/github.com/gobuffalo/flect/pascalize.go index 76f0c6a7..6396d0d4 100644 --- a/vendor/github.com/gobuffalo/flect/pascalize.go +++ b/vendor/github.com/gobuffalo/flect/pascalize.go @@ -1,7 +1,7 @@ package flect import ( - "unicode" + "strings" ) // Pascalize returns a string with each segment capitalized @@ -21,5 +21,12 @@ func (i Ident) Pascalize() Ident { if len(c.String()) == 0 { return c } - return New(string(unicode.ToUpper(rune(c.Original[0]))) + c.Original[1:]) + if len(i.Parts) == 0 { + return i + } + capLen := 1 + if _, ok := baseAcronyms[strings.ToUpper(i.Parts[0])]; ok { + capLen = len(i.Parts[0]) + } + return New(string(strings.ToUpper(c.Original[0:capLen])) + c.Original[capLen:]) } diff --git a/vendor/github.com/gobuffalo/flect/plural_rules.go b/vendor/github.com/gobuffalo/flect/plural_rules.go index ff679284..61d34d39 100644 --- a/vendor/github.com/gobuffalo/flect/plural_rules.go +++ b/vendor/github.com/gobuffalo/flect/plural_rules.go @@ -6,18 +6,18 @@ var pluralRules = []rule{} func AddPlural(suffix string, repl string) { pluralMoot.Lock() defer pluralMoot.Unlock() - pluralRules = append(pluralRules, rule{ + pluralRules = append([]rule{{ suffix: suffix, fn: func(s string) string { s = s[:len(s)-len(suffix)] return s + repl }, - }) + }}, pluralRules...) - pluralRules = append(pluralRules, rule{ + pluralRules = append([]rule{{ suffix: repl, fn: noop, - }) + }}, pluralRules...) } var singleToPlural = map[string]string{ @@ -224,7 +224,6 @@ var singularToPluralSuffixList = []singularToPluralSuffix{ {"oci", "ocus"}, {"ode", "odes"}, {"ofe", "oves"}, - {"oot", "eet"}, {"pfe", "pves"}, {"pse", "psis"}, {"qfe", "qves"}, @@ -281,8 +280,8 @@ var singularToPluralSuffixList = []singularToPluralSuffix{ } func init() { - for _, suffix := range singularToPluralSuffixList { - AddPlural(suffix.singular, suffix.plural) - AddSingular(suffix.plural, suffix.singular) + for i := len(singularToPluralSuffixList) - 1; i >= 0; i-- { + AddPlural(singularToPluralSuffixList[i].singular, singularToPluralSuffixList[i].plural) + AddSingular(singularToPluralSuffixList[i].plural, singularToPluralSuffixList[i].singular) } } diff --git a/vendor/github.com/gobuffalo/flect/singular_rules.go b/vendor/github.com/gobuffalo/flect/singular_rules.go index b20371b3..9b85a873 100644 --- a/vendor/github.com/gobuffalo/flect/singular_rules.go +++ b/vendor/github.com/gobuffalo/flect/singular_rules.go @@ -6,18 +6,18 @@ var singularRules = []rule{} func AddSingular(ext string, repl string) { singularMoot.Lock() defer singularMoot.Unlock() - singularRules = append(singularRules, rule{ + singularRules = append([]rule{{ suffix: ext, fn: func(s string) string { s = s[:len(s)-len(ext)] return s + repl }, - }) + }}, singularRules...) - singularRules = append(singularRules, rule{ + singularRules = append([]rule{{ suffix: repl, fn: func(s string) string { return s }, - }) + }}, singularRules...) } diff --git a/vendor/github.com/googleapis/gnostic/LICENSE b/vendor/github.com/google/gnostic/LICENSE similarity index 100% rename from vendor/github.com/googleapis/gnostic/LICENSE rename to vendor/github.com/google/gnostic/LICENSE diff --git a/vendor/github.com/googleapis/gnostic/compiler/README.md b/vendor/github.com/google/gnostic/compiler/README.md similarity index 100% rename from vendor/github.com/googleapis/gnostic/compiler/README.md rename to vendor/github.com/google/gnostic/compiler/README.md diff --git a/vendor/github.com/googleapis/gnostic/compiler/context.go b/vendor/github.com/google/gnostic/compiler/context.go similarity index 100% rename from vendor/github.com/googleapis/gnostic/compiler/context.go rename to vendor/github.com/google/gnostic/compiler/context.go diff --git a/vendor/github.com/googleapis/gnostic/compiler/error.go b/vendor/github.com/google/gnostic/compiler/error.go similarity index 100% rename from vendor/github.com/googleapis/gnostic/compiler/error.go rename to vendor/github.com/google/gnostic/compiler/error.go diff --git a/vendor/github.com/googleapis/gnostic/compiler/extensions.go b/vendor/github.com/google/gnostic/compiler/extensions.go similarity index 97% rename from vendor/github.com/googleapis/gnostic/compiler/extensions.go rename to vendor/github.com/google/gnostic/compiler/extensions.go index 20848a0a..5b5a916d 100644 --- a/vendor/github.com/googleapis/gnostic/compiler/extensions.go +++ b/vendor/github.com/google/gnostic/compiler/extensions.go @@ -22,8 +22,9 @@ import ( "github.com/golang/protobuf/proto" "github.com/golang/protobuf/ptypes/any" - extensions "github.com/googleapis/gnostic/extensions" yaml "gopkg.in/yaml.v3" + + extensions "github.com/google/gnostic/extensions" ) // ExtensionHandler describes a binary that is called by the compiler to handle specification extensions. diff --git a/vendor/github.com/googleapis/gnostic/compiler/helpers.go b/vendor/github.com/google/gnostic/compiler/helpers.go similarity index 99% rename from vendor/github.com/googleapis/gnostic/compiler/helpers.go rename to vendor/github.com/google/gnostic/compiler/helpers.go index 48f02f39..97ffaa51 100644 --- a/vendor/github.com/googleapis/gnostic/compiler/helpers.go +++ b/vendor/github.com/google/gnostic/compiler/helpers.go @@ -20,8 +20,9 @@ import ( "sort" "strconv" - "github.com/googleapis/gnostic/jsonschema" "gopkg.in/yaml.v3" + + "github.com/google/gnostic/jsonschema" ) // compiler helper functions, usually called from generated code diff --git a/vendor/github.com/googleapis/gnostic/compiler/main.go b/vendor/github.com/google/gnostic/compiler/main.go similarity index 100% rename from vendor/github.com/googleapis/gnostic/compiler/main.go rename to vendor/github.com/google/gnostic/compiler/main.go diff --git a/vendor/github.com/googleapis/gnostic/compiler/reader.go b/vendor/github.com/google/gnostic/compiler/reader.go similarity index 100% rename from vendor/github.com/googleapis/gnostic/compiler/reader.go rename to vendor/github.com/google/gnostic/compiler/reader.go diff --git a/vendor/github.com/googleapis/gnostic/extensions/README.md b/vendor/github.com/google/gnostic/extensions/README.md similarity index 100% rename from vendor/github.com/googleapis/gnostic/extensions/README.md rename to vendor/github.com/google/gnostic/extensions/README.md diff --git a/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go b/vendor/github.com/google/gnostic/extensions/extension.pb.go similarity index 99% rename from vendor/github.com/googleapis/gnostic/extensions/extension.pb.go rename to vendor/github.com/google/gnostic/extensions/extension.pb.go index 5aab58eb..a6a4ccca 100644 --- a/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go +++ b/vendor/github.com/google/gnostic/extensions/extension.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.15.5 +// protoc v3.18.1 // source: extensions/extension.proto package gnostic_extension_v1 diff --git a/vendor/github.com/googleapis/gnostic/extensions/extension.proto b/vendor/github.com/google/gnostic/extensions/extension.proto similarity index 100% rename from vendor/github.com/googleapis/gnostic/extensions/extension.proto rename to vendor/github.com/google/gnostic/extensions/extension.proto diff --git a/vendor/github.com/googleapis/gnostic/extensions/extensions.go b/vendor/github.com/google/gnostic/extensions/extensions.go similarity index 100% rename from vendor/github.com/googleapis/gnostic/extensions/extensions.go rename to vendor/github.com/google/gnostic/extensions/extensions.go diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/README.md b/vendor/github.com/google/gnostic/jsonschema/README.md similarity index 100% rename from vendor/github.com/googleapis/gnostic/jsonschema/README.md rename to vendor/github.com/google/gnostic/jsonschema/README.md diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/base.go b/vendor/github.com/google/gnostic/jsonschema/base.go similarity index 100% rename from vendor/github.com/googleapis/gnostic/jsonschema/base.go rename to vendor/github.com/google/gnostic/jsonschema/base.go diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/display.go b/vendor/github.com/google/gnostic/jsonschema/display.go similarity index 100% rename from vendor/github.com/googleapis/gnostic/jsonschema/display.go rename to vendor/github.com/google/gnostic/jsonschema/display.go diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/models.go b/vendor/github.com/google/gnostic/jsonschema/models.go similarity index 100% rename from vendor/github.com/googleapis/gnostic/jsonschema/models.go rename to vendor/github.com/google/gnostic/jsonschema/models.go diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/operations.go b/vendor/github.com/google/gnostic/jsonschema/operations.go similarity index 100% rename from vendor/github.com/googleapis/gnostic/jsonschema/operations.go rename to vendor/github.com/google/gnostic/jsonschema/operations.go diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/reader.go b/vendor/github.com/google/gnostic/jsonschema/reader.go similarity index 100% rename from vendor/github.com/googleapis/gnostic/jsonschema/reader.go rename to vendor/github.com/google/gnostic/jsonschema/reader.go diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/schema.json b/vendor/github.com/google/gnostic/jsonschema/schema.json similarity index 100% rename from vendor/github.com/googleapis/gnostic/jsonschema/schema.json rename to vendor/github.com/google/gnostic/jsonschema/schema.json diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/writer.go b/vendor/github.com/google/gnostic/jsonschema/writer.go similarity index 100% rename from vendor/github.com/googleapis/gnostic/jsonschema/writer.go rename to vendor/github.com/google/gnostic/jsonschema/writer.go diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.go b/vendor/github.com/google/gnostic/openapiv2/OpenAPIv2.go similarity index 99% rename from vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.go rename to vendor/github.com/google/gnostic/openapiv2/OpenAPIv2.go index 727d7f4a..0f179076 100644 --- a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.go +++ b/vendor/github.com/google/gnostic/openapiv2/OpenAPIv2.go @@ -18,10 +18,12 @@ package openapi_v2 import ( "fmt" - "github.com/googleapis/gnostic/compiler" - "gopkg.in/yaml.v3" "regexp" "strings" + + "gopkg.in/yaml.v3" + + "github.com/google/gnostic/compiler" ) // Version returns the package name (and OpenAPI version). diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.pb.go b/vendor/github.com/google/gnostic/openapiv2/OpenAPIv2.pb.go similarity index 99% rename from vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.pb.go rename to vendor/github.com/google/gnostic/openapiv2/OpenAPIv2.pb.go index 8a5f302f..06b60157 100644 --- a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.pb.go +++ b/vendor/github.com/google/gnostic/openapiv2/OpenAPIv2.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.15.5 +// protoc v3.18.1 // source: openapiv2/OpenAPIv2.proto package openapi_v2 diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.proto b/vendor/github.com/google/gnostic/openapiv2/OpenAPIv2.proto similarity index 100% rename from vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.proto rename to vendor/github.com/google/gnostic/openapiv2/OpenAPIv2.proto diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/README.md b/vendor/github.com/google/gnostic/openapiv2/README.md similarity index 100% rename from vendor/github.com/googleapis/gnostic/openapiv2/README.md rename to vendor/github.com/google/gnostic/openapiv2/README.md diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/document.go b/vendor/github.com/google/gnostic/openapiv2/document.go similarity index 96% rename from vendor/github.com/googleapis/gnostic/openapiv2/document.go rename to vendor/github.com/google/gnostic/openapiv2/document.go index 56e5966b..0021ae87 100644 --- a/vendor/github.com/googleapis/gnostic/openapiv2/document.go +++ b/vendor/github.com/google/gnostic/openapiv2/document.go @@ -15,8 +15,9 @@ package openapi_v2 import ( - "github.com/googleapis/gnostic/compiler" "gopkg.in/yaml.v3" + + "github.com/google/gnostic/compiler" ) // ParseDocument reads an OpenAPI v2 description from a YAML/JSON representation. diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/openapi-2.0.json b/vendor/github.com/google/gnostic/openapiv2/openapi-2.0.json similarity index 100% rename from vendor/github.com/googleapis/gnostic/openapiv2/openapi-2.0.json rename to vendor/github.com/google/gnostic/openapiv2/openapi-2.0.json diff --git a/vendor/github.com/google/gnostic/openapiv3/OpenAPIv3.go b/vendor/github.com/google/gnostic/openapiv3/OpenAPIv3.go new file mode 100644 index 00000000..5f4a7025 --- /dev/null +++ b/vendor/github.com/google/gnostic/openapiv3/OpenAPIv3.go @@ -0,0 +1,8633 @@ +// Copyright 2020 Google LLC. All Rights Reserved. +// +// 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. + +// THIS FILE IS AUTOMATICALLY GENERATED. + +package openapi_v3 + +import ( + "fmt" + "regexp" + "strings" + + "gopkg.in/yaml.v3" + + "github.com/google/gnostic/compiler" +) + +// Version returns the package name (and OpenAPI version). +func Version() string { + return "openapi_v3" +} + +// NewAdditionalPropertiesItem creates an object of type AdditionalPropertiesItem if possible, returning an error if not. +func NewAdditionalPropertiesItem(in *yaml.Node, context *compiler.Context) (*AdditionalPropertiesItem, error) { + errors := make([]error, 0) + x := &AdditionalPropertiesItem{} + matched := false + // SchemaOrReference schema_or_reference = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewSchemaOrReference(m, compiler.NewContext("schemaOrReference", m, context)) + if matchingError == nil { + x.Oneof = &AdditionalPropertiesItem_SchemaOrReference{SchemaOrReference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // bool boolean = 2; + boolValue, ok := compiler.BoolForScalarNode(in) + if ok { + x.Oneof = &AdditionalPropertiesItem_Boolean{Boolean: boolValue} + matched = true + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } else { + message := fmt.Sprintf("contains an invalid AdditionalPropertiesItem") + err := compiler.NewError(context, message) + errors = []error{err} + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewAny creates an object of type Any if possible, returning an error if not. +func NewAny(in *yaml.Node, context *compiler.Context) (*Any, error) { + errors := make([]error, 0) + x := &Any{} + bytes := compiler.Marshal(in) + x.Yaml = string(bytes) + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewAnyOrExpression creates an object of type AnyOrExpression if possible, returning an error if not. +func NewAnyOrExpression(in *yaml.Node, context *compiler.Context) (*AnyOrExpression, error) { + errors := make([]error, 0) + x := &AnyOrExpression{} + matched := false + // Any any = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewAny(m, compiler.NewContext("any", m, context)) + if matchingError == nil { + x.Oneof = &AnyOrExpression_Any{Any: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Expression expression = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewExpression(m, compiler.NewContext("expression", m, context)) + if matchingError == nil { + x.Oneof = &AnyOrExpression_Expression{Expression: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } else { + message := fmt.Sprintf("contains an invalid AnyOrExpression") + err := compiler.NewError(context, message) + errors = []error{err} + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewCallback creates an object of type Callback if possible, returning an error if not. +func NewCallback(in *yaml.Node, context *compiler.Context) (*Callback, error) { + errors := make([]error, 0) + x := &Callback{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{} + allowedPatterns := []*regexp.Regexp{pattern0, pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // repeated NamedPathItem path = 1; + // MAP: PathItem ^ + x.Path = make([]*NamedPathItem, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if true { + pair := &NamedPathItem{} + pair.Name = k + var err error + pair.Value, err = NewPathItem(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.Path = append(x.Path, pair) + } + } + } + // repeated NamedAny specification_extension = 2; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewCallbackOrReference creates an object of type CallbackOrReference if possible, returning an error if not. +func NewCallbackOrReference(in *yaml.Node, context *compiler.Context) (*CallbackOrReference, error) { + errors := make([]error, 0) + x := &CallbackOrReference{} + matched := false + // Callback callback = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewCallback(m, compiler.NewContext("callback", m, context)) + if matchingError == nil { + x.Oneof = &CallbackOrReference_Callback{Callback: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", m, context)) + if matchingError == nil { + x.Oneof = &CallbackOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } else { + message := fmt.Sprintf("contains an invalid CallbackOrReference") + err := compiler.NewError(context, message) + errors = []error{err} + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewCallbacksOrReferences creates an object of type CallbacksOrReferences if possible, returning an error if not. +func NewCallbacksOrReferences(in *yaml.Node, context *compiler.Context) (*CallbacksOrReferences, error) { + errors := make([]error, 0) + x := &CallbacksOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedCallbackOrReference additional_properties = 1; + // MAP: CallbackOrReference + x.AdditionalProperties = make([]*NamedCallbackOrReference, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedCallbackOrReference{} + pair.Name = k + var err error + pair.Value, err = NewCallbackOrReference(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewComponents creates an object of type Components if possible, returning an error if not. +func NewComponents(in *yaml.Node, context *compiler.Context) (*Components, error) { + errors := make([]error, 0) + x := &Components{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"callbacks", "examples", "headers", "links", "parameters", "requestBodies", "responses", "schemas", "securitySchemes"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // SchemasOrReferences schemas = 1; + v1 := compiler.MapValueForKey(m, "schemas") + if v1 != nil { + var err error + x.Schemas, err = NewSchemasOrReferences(v1, compiler.NewContext("schemas", v1, context)) + if err != nil { + errors = append(errors, err) + } + } + // ResponsesOrReferences responses = 2; + v2 := compiler.MapValueForKey(m, "responses") + if v2 != nil { + var err error + x.Responses, err = NewResponsesOrReferences(v2, compiler.NewContext("responses", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + // ParametersOrReferences parameters = 3; + v3 := compiler.MapValueForKey(m, "parameters") + if v3 != nil { + var err error + x.Parameters, err = NewParametersOrReferences(v3, compiler.NewContext("parameters", v3, context)) + if err != nil { + errors = append(errors, err) + } + } + // ExamplesOrReferences examples = 4; + v4 := compiler.MapValueForKey(m, "examples") + if v4 != nil { + var err error + x.Examples, err = NewExamplesOrReferences(v4, compiler.NewContext("examples", v4, context)) + if err != nil { + errors = append(errors, err) + } + } + // RequestBodiesOrReferences request_bodies = 5; + v5 := compiler.MapValueForKey(m, "requestBodies") + if v5 != nil { + var err error + x.RequestBodies, err = NewRequestBodiesOrReferences(v5, compiler.NewContext("requestBodies", v5, context)) + if err != nil { + errors = append(errors, err) + } + } + // HeadersOrReferences headers = 6; + v6 := compiler.MapValueForKey(m, "headers") + if v6 != nil { + var err error + x.Headers, err = NewHeadersOrReferences(v6, compiler.NewContext("headers", v6, context)) + if err != nil { + errors = append(errors, err) + } + } + // SecuritySchemesOrReferences security_schemes = 7; + v7 := compiler.MapValueForKey(m, "securitySchemes") + if v7 != nil { + var err error + x.SecuritySchemes, err = NewSecuritySchemesOrReferences(v7, compiler.NewContext("securitySchemes", v7, context)) + if err != nil { + errors = append(errors, err) + } + } + // LinksOrReferences links = 8; + v8 := compiler.MapValueForKey(m, "links") + if v8 != nil { + var err error + x.Links, err = NewLinksOrReferences(v8, compiler.NewContext("links", v8, context)) + if err != nil { + errors = append(errors, err) + } + } + // CallbacksOrReferences callbacks = 9; + v9 := compiler.MapValueForKey(m, "callbacks") + if v9 != nil { + var err error + x.Callbacks, err = NewCallbacksOrReferences(v9, compiler.NewContext("callbacks", v9, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 10; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewContact creates an object of type Contact if possible, returning an error if not. +func NewContact(in *yaml.Node, context *compiler.Context) (*Contact, error) { + errors := make([]error, 0) + x := &Contact{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"email", "name", "url"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string url = 2; + v2 := compiler.MapValueForKey(m, "url") + if v2 != nil { + x.Url, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for url: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string email = 3; + v3 := compiler.MapValueForKey(m, "email") + if v3 != nil { + x.Email, ok = compiler.StringForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for email: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 4; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewDefaultType creates an object of type DefaultType if possible, returning an error if not. +func NewDefaultType(in *yaml.Node, context *compiler.Context) (*DefaultType, error) { + errors := make([]error, 0) + x := &DefaultType{} + matched := false + switch in.Tag { + case "!!bool": + var v bool + v, matched = compiler.BoolForScalarNode(in) + x.Oneof = &DefaultType_Boolean{Boolean: v} + case "!!str": + var v string + v, matched = compiler.StringForScalarNode(in) + x.Oneof = &DefaultType_String_{String_: v} + case "!!float": + var v float64 + v, matched = compiler.FloatForScalarNode(in) + x.Oneof = &DefaultType_Number{Number: v} + case "!!int": + var v int64 + v, matched = compiler.IntForScalarNode(in) + x.Oneof = &DefaultType_Number{Number: float64(v)} + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewDiscriminator creates an object of type Discriminator if possible, returning an error if not. +func NewDiscriminator(in *yaml.Node, context *compiler.Context) (*Discriminator, error) { + errors := make([]error, 0) + x := &Discriminator{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"propertyName"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"mapping", "propertyName"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string property_name = 1; + v1 := compiler.MapValueForKey(m, "propertyName") + if v1 != nil { + x.PropertyName, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for propertyName: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Strings mapping = 2; + v2 := compiler.MapValueForKey(m, "mapping") + if v2 != nil { + var err error + x.Mapping, err = NewStrings(v2, compiler.NewContext("mapping", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 3; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewDocument creates an object of type Document if possible, returning an error if not. +func NewDocument(in *yaml.Node, context *compiler.Context) (*Document, error) { + errors := make([]error, 0) + x := &Document{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"info", "openapi", "paths"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"components", "externalDocs", "info", "openapi", "paths", "security", "servers", "tags"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string openapi = 1; + v1 := compiler.MapValueForKey(m, "openapi") + if v1 != nil { + x.Openapi, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for openapi: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Info info = 2; + v2 := compiler.MapValueForKey(m, "info") + if v2 != nil { + var err error + x.Info, err = NewInfo(v2, compiler.NewContext("info", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated Server servers = 3; + v3 := compiler.MapValueForKey(m, "servers") + if v3 != nil { + // repeated Server + x.Servers = make([]*Server, 0) + a, ok := compiler.SequenceNodeForNode(v3) + if ok { + for _, item := range a.Content { + y, err := NewServer(item, compiler.NewContext("servers", item, context)) + if err != nil { + errors = append(errors, err) + } + x.Servers = append(x.Servers, y) + } + } + } + // Paths paths = 4; + v4 := compiler.MapValueForKey(m, "paths") + if v4 != nil { + var err error + x.Paths, err = NewPaths(v4, compiler.NewContext("paths", v4, context)) + if err != nil { + errors = append(errors, err) + } + } + // Components components = 5; + v5 := compiler.MapValueForKey(m, "components") + if v5 != nil { + var err error + x.Components, err = NewComponents(v5, compiler.NewContext("components", v5, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated SecurityRequirement security = 6; + v6 := compiler.MapValueForKey(m, "security") + if v6 != nil { + // repeated SecurityRequirement + x.Security = make([]*SecurityRequirement, 0) + a, ok := compiler.SequenceNodeForNode(v6) + if ok { + for _, item := range a.Content { + y, err := NewSecurityRequirement(item, compiler.NewContext("security", item, context)) + if err != nil { + errors = append(errors, err) + } + x.Security = append(x.Security, y) + } + } + } + // repeated Tag tags = 7; + v7 := compiler.MapValueForKey(m, "tags") + if v7 != nil { + // repeated Tag + x.Tags = make([]*Tag, 0) + a, ok := compiler.SequenceNodeForNode(v7) + if ok { + for _, item := range a.Content { + y, err := NewTag(item, compiler.NewContext("tags", item, context)) + if err != nil { + errors = append(errors, err) + } + x.Tags = append(x.Tags, y) + } + } + } + // ExternalDocs external_docs = 8; + v8 := compiler.MapValueForKey(m, "externalDocs") + if v8 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v8, compiler.NewContext("externalDocs", v8, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 9; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewEncoding creates an object of type Encoding if possible, returning an error if not. +func NewEncoding(in *yaml.Node, context *compiler.Context) (*Encoding, error) { + errors := make([]error, 0) + x := &Encoding{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"allowReserved", "contentType", "explode", "headers", "style"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string content_type = 1; + v1 := compiler.MapValueForKey(m, "contentType") + if v1 != nil { + x.ContentType, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for contentType: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // HeadersOrReferences headers = 2; + v2 := compiler.MapValueForKey(m, "headers") + if v2 != nil { + var err error + x.Headers, err = NewHeadersOrReferences(v2, compiler.NewContext("headers", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + // string style = 3; + v3 := compiler.MapValueForKey(m, "style") + if v3 != nil { + x.Style, ok = compiler.StringForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for style: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool explode = 4; + v4 := compiler.MapValueForKey(m, "explode") + if v4 != nil { + x.Explode, ok = compiler.BoolForScalarNode(v4) + if !ok { + message := fmt.Sprintf("has unexpected value for explode: %s", compiler.Display(v4)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_reserved = 5; + v5 := compiler.MapValueForKey(m, "allowReserved") + if v5 != nil { + x.AllowReserved, ok = compiler.BoolForScalarNode(v5) + if !ok { + message := fmt.Sprintf("has unexpected value for allowReserved: %s", compiler.Display(v5)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 6; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewEncodings creates an object of type Encodings if possible, returning an error if not. +func NewEncodings(in *yaml.Node, context *compiler.Context) (*Encodings, error) { + errors := make([]error, 0) + x := &Encodings{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedEncoding additional_properties = 1; + // MAP: Encoding + x.AdditionalProperties = make([]*NamedEncoding, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedEncoding{} + pair.Name = k + var err error + pair.Value, err = NewEncoding(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExample creates an object of type Example if possible, returning an error if not. +func NewExample(in *yaml.Node, context *compiler.Context) (*Example, error) { + errors := make([]error, 0) + x := &Example{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"description", "externalValue", "summary", "value"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string summary = 1; + v1 := compiler.MapValueForKey(m, "summary") + if v1 != nil { + x.Summary, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for summary: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any value = 3; + v3 := compiler.MapValueForKey(m, "value") + if v3 != nil { + var err error + x.Value, err = NewAny(v3, compiler.NewContext("value", v3, context)) + if err != nil { + errors = append(errors, err) + } + } + // string external_value = 4; + v4 := compiler.MapValueForKey(m, "externalValue") + if v4 != nil { + x.ExternalValue, ok = compiler.StringForScalarNode(v4) + if !ok { + message := fmt.Sprintf("has unexpected value for externalValue: %s", compiler.Display(v4)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 5; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExampleOrReference creates an object of type ExampleOrReference if possible, returning an error if not. +func NewExampleOrReference(in *yaml.Node, context *compiler.Context) (*ExampleOrReference, error) { + errors := make([]error, 0) + x := &ExampleOrReference{} + matched := false + // Example example = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewExample(m, compiler.NewContext("example", m, context)) + if matchingError == nil { + x.Oneof = &ExampleOrReference_Example{Example: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", m, context)) + if matchingError == nil { + x.Oneof = &ExampleOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } else { + message := fmt.Sprintf("contains an invalid ExampleOrReference") + err := compiler.NewError(context, message) + errors = []error{err} + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExamplesOrReferences creates an object of type ExamplesOrReferences if possible, returning an error if not. +func NewExamplesOrReferences(in *yaml.Node, context *compiler.Context) (*ExamplesOrReferences, error) { + errors := make([]error, 0) + x := &ExamplesOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedExampleOrReference additional_properties = 1; + // MAP: ExampleOrReference + x.AdditionalProperties = make([]*NamedExampleOrReference, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedExampleOrReference{} + pair.Name = k + var err error + pair.Value, err = NewExampleOrReference(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExpression creates an object of type Expression if possible, returning an error if not. +func NewExpression(in *yaml.Node, context *compiler.Context) (*Expression, error) { + errors := make([]error, 0) + x := &Expression{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedAny additional_properties = 1; + // MAP: Any + x.AdditionalProperties = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExternalDocs creates an object of type ExternalDocs if possible, returning an error if not. +func NewExternalDocs(in *yaml.Node, context *compiler.Context) (*ExternalDocs, error) { + errors := make([]error, 0) + x := &ExternalDocs{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"url"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "url"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string description = 1; + v1 := compiler.MapValueForKey(m, "description") + if v1 != nil { + x.Description, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string url = 2; + v2 := compiler.MapValueForKey(m, "url") + if v2 != nil { + x.Url, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for url: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 3; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewHeader creates an object of type Header if possible, returning an error if not. +func NewHeader(in *yaml.Node, context *compiler.Context) (*Header, error) { + errors := make([]error, 0) + x := &Header{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"allowEmptyValue", "allowReserved", "content", "deprecated", "description", "example", "examples", "explode", "required", "schema", "style"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string description = 1; + v1 := compiler.MapValueForKey(m, "description") + if v1 != nil { + x.Description, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool required = 2; + v2 := compiler.MapValueForKey(m, "required") + if v2 != nil { + x.Required, ok = compiler.BoolForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for required: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool deprecated = 3; + v3 := compiler.MapValueForKey(m, "deprecated") + if v3 != nil { + x.Deprecated, ok = compiler.BoolForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for deprecated: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_empty_value = 4; + v4 := compiler.MapValueForKey(m, "allowEmptyValue") + if v4 != nil { + x.AllowEmptyValue, ok = compiler.BoolForScalarNode(v4) + if !ok { + message := fmt.Sprintf("has unexpected value for allowEmptyValue: %s", compiler.Display(v4)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string style = 5; + v5 := compiler.MapValueForKey(m, "style") + if v5 != nil { + x.Style, ok = compiler.StringForScalarNode(v5) + if !ok { + message := fmt.Sprintf("has unexpected value for style: %s", compiler.Display(v5)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool explode = 6; + v6 := compiler.MapValueForKey(m, "explode") + if v6 != nil { + x.Explode, ok = compiler.BoolForScalarNode(v6) + if !ok { + message := fmt.Sprintf("has unexpected value for explode: %s", compiler.Display(v6)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_reserved = 7; + v7 := compiler.MapValueForKey(m, "allowReserved") + if v7 != nil { + x.AllowReserved, ok = compiler.BoolForScalarNode(v7) + if !ok { + message := fmt.Sprintf("has unexpected value for allowReserved: %s", compiler.Display(v7)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // SchemaOrReference schema = 8; + v8 := compiler.MapValueForKey(m, "schema") + if v8 != nil { + var err error + x.Schema, err = NewSchemaOrReference(v8, compiler.NewContext("schema", v8, context)) + if err != nil { + errors = append(errors, err) + } + } + // Any example = 9; + v9 := compiler.MapValueForKey(m, "example") + if v9 != nil { + var err error + x.Example, err = NewAny(v9, compiler.NewContext("example", v9, context)) + if err != nil { + errors = append(errors, err) + } + } + // ExamplesOrReferences examples = 10; + v10 := compiler.MapValueForKey(m, "examples") + if v10 != nil { + var err error + x.Examples, err = NewExamplesOrReferences(v10, compiler.NewContext("examples", v10, context)) + if err != nil { + errors = append(errors, err) + } + } + // MediaTypes content = 11; + v11 := compiler.MapValueForKey(m, "content") + if v11 != nil { + var err error + x.Content, err = NewMediaTypes(v11, compiler.NewContext("content", v11, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 12; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewHeaderOrReference creates an object of type HeaderOrReference if possible, returning an error if not. +func NewHeaderOrReference(in *yaml.Node, context *compiler.Context) (*HeaderOrReference, error) { + errors := make([]error, 0) + x := &HeaderOrReference{} + matched := false + // Header header = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewHeader(m, compiler.NewContext("header", m, context)) + if matchingError == nil { + x.Oneof = &HeaderOrReference_Header{Header: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", m, context)) + if matchingError == nil { + x.Oneof = &HeaderOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } else { + message := fmt.Sprintf("contains an invalid HeaderOrReference") + err := compiler.NewError(context, message) + errors = []error{err} + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewHeadersOrReferences creates an object of type HeadersOrReferences if possible, returning an error if not. +func NewHeadersOrReferences(in *yaml.Node, context *compiler.Context) (*HeadersOrReferences, error) { + errors := make([]error, 0) + x := &HeadersOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedHeaderOrReference additional_properties = 1; + // MAP: HeaderOrReference + x.AdditionalProperties = make([]*NamedHeaderOrReference, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedHeaderOrReference{} + pair.Name = k + var err error + pair.Value, err = NewHeaderOrReference(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewInfo creates an object of type Info if possible, returning an error if not. +func NewInfo(in *yaml.Node, context *compiler.Context) (*Info, error) { + errors := make([]error, 0) + x := &Info{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"title", "version"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"contact", "description", "license", "summary", "termsOfService", "title", "version"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string title = 1; + v1 := compiler.MapValueForKey(m, "title") + if v1 != nil { + x.Title, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for title: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string terms_of_service = 3; + v3 := compiler.MapValueForKey(m, "termsOfService") + if v3 != nil { + x.TermsOfService, ok = compiler.StringForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for termsOfService: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Contact contact = 4; + v4 := compiler.MapValueForKey(m, "contact") + if v4 != nil { + var err error + x.Contact, err = NewContact(v4, compiler.NewContext("contact", v4, context)) + if err != nil { + errors = append(errors, err) + } + } + // License license = 5; + v5 := compiler.MapValueForKey(m, "license") + if v5 != nil { + var err error + x.License, err = NewLicense(v5, compiler.NewContext("license", v5, context)) + if err != nil { + errors = append(errors, err) + } + } + // string version = 6; + v6 := compiler.MapValueForKey(m, "version") + if v6 != nil { + x.Version, ok = compiler.StringForScalarNode(v6) + if !ok { + message := fmt.Sprintf("has unexpected value for version: %s", compiler.Display(v6)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string summary = 7; + v7 := compiler.MapValueForKey(m, "summary") + if v7 != nil { + x.Summary, ok = compiler.StringForScalarNode(v7) + if !ok { + message := fmt.Sprintf("has unexpected value for summary: %s", compiler.Display(v7)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 8; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewItemsItem creates an object of type ItemsItem if possible, returning an error if not. +func NewItemsItem(in *yaml.Node, context *compiler.Context) (*ItemsItem, error) { + errors := make([]error, 0) + x := &ItemsItem{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value for item array: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + x.SchemaOrReference = make([]*SchemaOrReference, 0) + y, err := NewSchemaOrReference(m, compiler.NewContext("", m, context)) + if err != nil { + return nil, err + } + x.SchemaOrReference = append(x.SchemaOrReference, y) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewLicense creates an object of type License if possible, returning an error if not. +func NewLicense(in *yaml.Node, context *compiler.Context) (*License, error) { + errors := make([]error, 0) + x := &License{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"name"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"name", "url"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string url = 2; + v2 := compiler.MapValueForKey(m, "url") + if v2 != nil { + x.Url, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for url: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 3; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewLink creates an object of type Link if possible, returning an error if not. +func NewLink(in *yaml.Node, context *compiler.Context) (*Link, error) { + errors := make([]error, 0) + x := &Link{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"description", "operationId", "operationRef", "parameters", "requestBody", "server"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string operation_ref = 1; + v1 := compiler.MapValueForKey(m, "operationRef") + if v1 != nil { + x.OperationRef, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for operationRef: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string operation_id = 2; + v2 := compiler.MapValueForKey(m, "operationId") + if v2 != nil { + x.OperationId, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for operationId: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // AnyOrExpression parameters = 3; + v3 := compiler.MapValueForKey(m, "parameters") + if v3 != nil { + var err error + x.Parameters, err = NewAnyOrExpression(v3, compiler.NewContext("parameters", v3, context)) + if err != nil { + errors = append(errors, err) + } + } + // AnyOrExpression request_body = 4; + v4 := compiler.MapValueForKey(m, "requestBody") + if v4 != nil { + var err error + x.RequestBody, err = NewAnyOrExpression(v4, compiler.NewContext("requestBody", v4, context)) + if err != nil { + errors = append(errors, err) + } + } + // string description = 5; + v5 := compiler.MapValueForKey(m, "description") + if v5 != nil { + x.Description, ok = compiler.StringForScalarNode(v5) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v5)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Server server = 6; + v6 := compiler.MapValueForKey(m, "server") + if v6 != nil { + var err error + x.Server, err = NewServer(v6, compiler.NewContext("server", v6, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 7; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewLinkOrReference creates an object of type LinkOrReference if possible, returning an error if not. +func NewLinkOrReference(in *yaml.Node, context *compiler.Context) (*LinkOrReference, error) { + errors := make([]error, 0) + x := &LinkOrReference{} + matched := false + // Link link = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewLink(m, compiler.NewContext("link", m, context)) + if matchingError == nil { + x.Oneof = &LinkOrReference_Link{Link: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", m, context)) + if matchingError == nil { + x.Oneof = &LinkOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } else { + message := fmt.Sprintf("contains an invalid LinkOrReference") + err := compiler.NewError(context, message) + errors = []error{err} + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewLinksOrReferences creates an object of type LinksOrReferences if possible, returning an error if not. +func NewLinksOrReferences(in *yaml.Node, context *compiler.Context) (*LinksOrReferences, error) { + errors := make([]error, 0) + x := &LinksOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedLinkOrReference additional_properties = 1; + // MAP: LinkOrReference + x.AdditionalProperties = make([]*NamedLinkOrReference, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedLinkOrReference{} + pair.Name = k + var err error + pair.Value, err = NewLinkOrReference(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewMediaType creates an object of type MediaType if possible, returning an error if not. +func NewMediaType(in *yaml.Node, context *compiler.Context) (*MediaType, error) { + errors := make([]error, 0) + x := &MediaType{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"encoding", "example", "examples", "schema"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // SchemaOrReference schema = 1; + v1 := compiler.MapValueForKey(m, "schema") + if v1 != nil { + var err error + x.Schema, err = NewSchemaOrReference(v1, compiler.NewContext("schema", v1, context)) + if err != nil { + errors = append(errors, err) + } + } + // Any example = 2; + v2 := compiler.MapValueForKey(m, "example") + if v2 != nil { + var err error + x.Example, err = NewAny(v2, compiler.NewContext("example", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + // ExamplesOrReferences examples = 3; + v3 := compiler.MapValueForKey(m, "examples") + if v3 != nil { + var err error + x.Examples, err = NewExamplesOrReferences(v3, compiler.NewContext("examples", v3, context)) + if err != nil { + errors = append(errors, err) + } + } + // Encodings encoding = 4; + v4 := compiler.MapValueForKey(m, "encoding") + if v4 != nil { + var err error + x.Encoding, err = NewEncodings(v4, compiler.NewContext("encoding", v4, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 5; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewMediaTypes creates an object of type MediaTypes if possible, returning an error if not. +func NewMediaTypes(in *yaml.Node, context *compiler.Context) (*MediaTypes, error) { + errors := make([]error, 0) + x := &MediaTypes{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedMediaType additional_properties = 1; + // MAP: MediaType + x.AdditionalProperties = make([]*NamedMediaType, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedMediaType{} + pair.Name = k + var err error + pair.Value, err = NewMediaType(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedAny creates an object of type NamedAny if possible, returning an error if not. +func NewNamedAny(in *yaml.Node, context *compiler.Context) (*NamedAny, error) { + errors := make([]error, 0) + x := &NamedAny{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewAny(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedCallbackOrReference creates an object of type NamedCallbackOrReference if possible, returning an error if not. +func NewNamedCallbackOrReference(in *yaml.Node, context *compiler.Context) (*NamedCallbackOrReference, error) { + errors := make([]error, 0) + x := &NamedCallbackOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // CallbackOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewCallbackOrReference(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedEncoding creates an object of type NamedEncoding if possible, returning an error if not. +func NewNamedEncoding(in *yaml.Node, context *compiler.Context) (*NamedEncoding, error) { + errors := make([]error, 0) + x := &NamedEncoding{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Encoding value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewEncoding(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedExampleOrReference creates an object of type NamedExampleOrReference if possible, returning an error if not. +func NewNamedExampleOrReference(in *yaml.Node, context *compiler.Context) (*NamedExampleOrReference, error) { + errors := make([]error, 0) + x := &NamedExampleOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ExampleOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewExampleOrReference(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedHeaderOrReference creates an object of type NamedHeaderOrReference if possible, returning an error if not. +func NewNamedHeaderOrReference(in *yaml.Node, context *compiler.Context) (*NamedHeaderOrReference, error) { + errors := make([]error, 0) + x := &NamedHeaderOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // HeaderOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewHeaderOrReference(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedLinkOrReference creates an object of type NamedLinkOrReference if possible, returning an error if not. +func NewNamedLinkOrReference(in *yaml.Node, context *compiler.Context) (*NamedLinkOrReference, error) { + errors := make([]error, 0) + x := &NamedLinkOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // LinkOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewLinkOrReference(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedMediaType creates an object of type NamedMediaType if possible, returning an error if not. +func NewNamedMediaType(in *yaml.Node, context *compiler.Context) (*NamedMediaType, error) { + errors := make([]error, 0) + x := &NamedMediaType{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // MediaType value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewMediaType(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedParameterOrReference creates an object of type NamedParameterOrReference if possible, returning an error if not. +func NewNamedParameterOrReference(in *yaml.Node, context *compiler.Context) (*NamedParameterOrReference, error) { + errors := make([]error, 0) + x := &NamedParameterOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ParameterOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewParameterOrReference(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedPathItem creates an object of type NamedPathItem if possible, returning an error if not. +func NewNamedPathItem(in *yaml.Node, context *compiler.Context) (*NamedPathItem, error) { + errors := make([]error, 0) + x := &NamedPathItem{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // PathItem value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewPathItem(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedRequestBodyOrReference creates an object of type NamedRequestBodyOrReference if possible, returning an error if not. +func NewNamedRequestBodyOrReference(in *yaml.Node, context *compiler.Context) (*NamedRequestBodyOrReference, error) { + errors := make([]error, 0) + x := &NamedRequestBodyOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // RequestBodyOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewRequestBodyOrReference(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedResponseOrReference creates an object of type NamedResponseOrReference if possible, returning an error if not. +func NewNamedResponseOrReference(in *yaml.Node, context *compiler.Context) (*NamedResponseOrReference, error) { + errors := make([]error, 0) + x := &NamedResponseOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ResponseOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewResponseOrReference(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedSchemaOrReference creates an object of type NamedSchemaOrReference if possible, returning an error if not. +func NewNamedSchemaOrReference(in *yaml.Node, context *compiler.Context) (*NamedSchemaOrReference, error) { + errors := make([]error, 0) + x := &NamedSchemaOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // SchemaOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewSchemaOrReference(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedSecuritySchemeOrReference creates an object of type NamedSecuritySchemeOrReference if possible, returning an error if not. +func NewNamedSecuritySchemeOrReference(in *yaml.Node, context *compiler.Context) (*NamedSecuritySchemeOrReference, error) { + errors := make([]error, 0) + x := &NamedSecuritySchemeOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // SecuritySchemeOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewSecuritySchemeOrReference(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedServerVariable creates an object of type NamedServerVariable if possible, returning an error if not. +func NewNamedServerVariable(in *yaml.Node, context *compiler.Context) (*NamedServerVariable, error) { + errors := make([]error, 0) + x := &NamedServerVariable{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ServerVariable value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewServerVariable(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedString creates an object of type NamedString if possible, returning an error if not. +func NewNamedString(in *yaml.Node, context *compiler.Context) (*NamedString, error) { + errors := make([]error, 0) + x := &NamedString{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + x.Value, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for value: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedStringArray creates an object of type NamedStringArray if possible, returning an error if not. +func NewNamedStringArray(in *yaml.Node, context *compiler.Context) (*NamedStringArray, error) { + errors := make([]error, 0) + x := &NamedStringArray{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // StringArray value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewStringArray(v2, compiler.NewContext("value", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOauthFlow creates an object of type OauthFlow if possible, returning an error if not. +func NewOauthFlow(in *yaml.Node, context *compiler.Context) (*OauthFlow, error) { + errors := make([]error, 0) + x := &OauthFlow{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"authorizationUrl", "refreshUrl", "scopes", "tokenUrl"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string authorization_url = 1; + v1 := compiler.MapValueForKey(m, "authorizationUrl") + if v1 != nil { + x.AuthorizationUrl, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for authorizationUrl: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string token_url = 2; + v2 := compiler.MapValueForKey(m, "tokenUrl") + if v2 != nil { + x.TokenUrl, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for tokenUrl: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string refresh_url = 3; + v3 := compiler.MapValueForKey(m, "refreshUrl") + if v3 != nil { + x.RefreshUrl, ok = compiler.StringForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for refreshUrl: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Strings scopes = 4; + v4 := compiler.MapValueForKey(m, "scopes") + if v4 != nil { + var err error + x.Scopes, err = NewStrings(v4, compiler.NewContext("scopes", v4, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 5; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOauthFlows creates an object of type OauthFlows if possible, returning an error if not. +func NewOauthFlows(in *yaml.Node, context *compiler.Context) (*OauthFlows, error) { + errors := make([]error, 0) + x := &OauthFlows{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"authorizationCode", "clientCredentials", "implicit", "password"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // OauthFlow implicit = 1; + v1 := compiler.MapValueForKey(m, "implicit") + if v1 != nil { + var err error + x.Implicit, err = NewOauthFlow(v1, compiler.NewContext("implicit", v1, context)) + if err != nil { + errors = append(errors, err) + } + } + // OauthFlow password = 2; + v2 := compiler.MapValueForKey(m, "password") + if v2 != nil { + var err error + x.Password, err = NewOauthFlow(v2, compiler.NewContext("password", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + // OauthFlow client_credentials = 3; + v3 := compiler.MapValueForKey(m, "clientCredentials") + if v3 != nil { + var err error + x.ClientCredentials, err = NewOauthFlow(v3, compiler.NewContext("clientCredentials", v3, context)) + if err != nil { + errors = append(errors, err) + } + } + // OauthFlow authorization_code = 4; + v4 := compiler.MapValueForKey(m, "authorizationCode") + if v4 != nil { + var err error + x.AuthorizationCode, err = NewOauthFlow(v4, compiler.NewContext("authorizationCode", v4, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 5; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewObject creates an object of type Object if possible, returning an error if not. +func NewObject(in *yaml.Node, context *compiler.Context) (*Object, error) { + errors := make([]error, 0) + x := &Object{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedAny additional_properties = 1; + // MAP: Any + x.AdditionalProperties = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOperation creates an object of type Operation if possible, returning an error if not. +func NewOperation(in *yaml.Node, context *compiler.Context) (*Operation, error) { + errors := make([]error, 0) + x := &Operation{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"responses"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"callbacks", "deprecated", "description", "externalDocs", "operationId", "parameters", "requestBody", "responses", "security", "servers", "summary", "tags"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // repeated string tags = 1; + v1 := compiler.MapValueForKey(m, "tags") + if v1 != nil { + v, ok := compiler.SequenceNodeForNode(v1) + if ok { + x.Tags = compiler.StringArrayForSequenceNode(v) + } else { + message := fmt.Sprintf("has unexpected value for tags: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string summary = 2; + v2 := compiler.MapValueForKey(m, "summary") + if v2 != nil { + x.Summary, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for summary: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = compiler.StringForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ExternalDocs external_docs = 4; + v4 := compiler.MapValueForKey(m, "externalDocs") + if v4 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v4, compiler.NewContext("externalDocs", v4, context)) + if err != nil { + errors = append(errors, err) + } + } + // string operation_id = 5; + v5 := compiler.MapValueForKey(m, "operationId") + if v5 != nil { + x.OperationId, ok = compiler.StringForScalarNode(v5) + if !ok { + message := fmt.Sprintf("has unexpected value for operationId: %s", compiler.Display(v5)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated ParameterOrReference parameters = 6; + v6 := compiler.MapValueForKey(m, "parameters") + if v6 != nil { + // repeated ParameterOrReference + x.Parameters = make([]*ParameterOrReference, 0) + a, ok := compiler.SequenceNodeForNode(v6) + if ok { + for _, item := range a.Content { + y, err := NewParameterOrReference(item, compiler.NewContext("parameters", item, context)) + if err != nil { + errors = append(errors, err) + } + x.Parameters = append(x.Parameters, y) + } + } + } + // RequestBodyOrReference request_body = 7; + v7 := compiler.MapValueForKey(m, "requestBody") + if v7 != nil { + var err error + x.RequestBody, err = NewRequestBodyOrReference(v7, compiler.NewContext("requestBody", v7, context)) + if err != nil { + errors = append(errors, err) + } + } + // Responses responses = 8; + v8 := compiler.MapValueForKey(m, "responses") + if v8 != nil { + var err error + x.Responses, err = NewResponses(v8, compiler.NewContext("responses", v8, context)) + if err != nil { + errors = append(errors, err) + } + } + // CallbacksOrReferences callbacks = 9; + v9 := compiler.MapValueForKey(m, "callbacks") + if v9 != nil { + var err error + x.Callbacks, err = NewCallbacksOrReferences(v9, compiler.NewContext("callbacks", v9, context)) + if err != nil { + errors = append(errors, err) + } + } + // bool deprecated = 10; + v10 := compiler.MapValueForKey(m, "deprecated") + if v10 != nil { + x.Deprecated, ok = compiler.BoolForScalarNode(v10) + if !ok { + message := fmt.Sprintf("has unexpected value for deprecated: %s", compiler.Display(v10)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated SecurityRequirement security = 11; + v11 := compiler.MapValueForKey(m, "security") + if v11 != nil { + // repeated SecurityRequirement + x.Security = make([]*SecurityRequirement, 0) + a, ok := compiler.SequenceNodeForNode(v11) + if ok { + for _, item := range a.Content { + y, err := NewSecurityRequirement(item, compiler.NewContext("security", item, context)) + if err != nil { + errors = append(errors, err) + } + x.Security = append(x.Security, y) + } + } + } + // repeated Server servers = 12; + v12 := compiler.MapValueForKey(m, "servers") + if v12 != nil { + // repeated Server + x.Servers = make([]*Server, 0) + a, ok := compiler.SequenceNodeForNode(v12) + if ok { + for _, item := range a.Content { + y, err := NewServer(item, compiler.NewContext("servers", item, context)) + if err != nil { + errors = append(errors, err) + } + x.Servers = append(x.Servers, y) + } + } + } + // repeated NamedAny specification_extension = 13; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewParameter creates an object of type Parameter if possible, returning an error if not. +func NewParameter(in *yaml.Node, context *compiler.Context) (*Parameter, error) { + errors := make([]error, 0) + x := &Parameter{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"in", "name"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"allowEmptyValue", "allowReserved", "content", "deprecated", "description", "example", "examples", "explode", "in", "name", "required", "schema", "style"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string in = 2; + v2 := compiler.MapValueForKey(m, "in") + if v2 != nil { + x.In, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = compiler.StringForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool required = 4; + v4 := compiler.MapValueForKey(m, "required") + if v4 != nil { + x.Required, ok = compiler.BoolForScalarNode(v4) + if !ok { + message := fmt.Sprintf("has unexpected value for required: %s", compiler.Display(v4)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool deprecated = 5; + v5 := compiler.MapValueForKey(m, "deprecated") + if v5 != nil { + x.Deprecated, ok = compiler.BoolForScalarNode(v5) + if !ok { + message := fmt.Sprintf("has unexpected value for deprecated: %s", compiler.Display(v5)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_empty_value = 6; + v6 := compiler.MapValueForKey(m, "allowEmptyValue") + if v6 != nil { + x.AllowEmptyValue, ok = compiler.BoolForScalarNode(v6) + if !ok { + message := fmt.Sprintf("has unexpected value for allowEmptyValue: %s", compiler.Display(v6)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string style = 7; + v7 := compiler.MapValueForKey(m, "style") + if v7 != nil { + x.Style, ok = compiler.StringForScalarNode(v7) + if !ok { + message := fmt.Sprintf("has unexpected value for style: %s", compiler.Display(v7)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool explode = 8; + v8 := compiler.MapValueForKey(m, "explode") + if v8 != nil { + x.Explode, ok = compiler.BoolForScalarNode(v8) + if !ok { + message := fmt.Sprintf("has unexpected value for explode: %s", compiler.Display(v8)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_reserved = 9; + v9 := compiler.MapValueForKey(m, "allowReserved") + if v9 != nil { + x.AllowReserved, ok = compiler.BoolForScalarNode(v9) + if !ok { + message := fmt.Sprintf("has unexpected value for allowReserved: %s", compiler.Display(v9)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // SchemaOrReference schema = 10; + v10 := compiler.MapValueForKey(m, "schema") + if v10 != nil { + var err error + x.Schema, err = NewSchemaOrReference(v10, compiler.NewContext("schema", v10, context)) + if err != nil { + errors = append(errors, err) + } + } + // Any example = 11; + v11 := compiler.MapValueForKey(m, "example") + if v11 != nil { + var err error + x.Example, err = NewAny(v11, compiler.NewContext("example", v11, context)) + if err != nil { + errors = append(errors, err) + } + } + // ExamplesOrReferences examples = 12; + v12 := compiler.MapValueForKey(m, "examples") + if v12 != nil { + var err error + x.Examples, err = NewExamplesOrReferences(v12, compiler.NewContext("examples", v12, context)) + if err != nil { + errors = append(errors, err) + } + } + // MediaTypes content = 13; + v13 := compiler.MapValueForKey(m, "content") + if v13 != nil { + var err error + x.Content, err = NewMediaTypes(v13, compiler.NewContext("content", v13, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 14; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewParameterOrReference creates an object of type ParameterOrReference if possible, returning an error if not. +func NewParameterOrReference(in *yaml.Node, context *compiler.Context) (*ParameterOrReference, error) { + errors := make([]error, 0) + x := &ParameterOrReference{} + matched := false + // Parameter parameter = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewParameter(m, compiler.NewContext("parameter", m, context)) + if matchingError == nil { + x.Oneof = &ParameterOrReference_Parameter{Parameter: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", m, context)) + if matchingError == nil { + x.Oneof = &ParameterOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } else { + message := fmt.Sprintf("contains an invalid ParameterOrReference") + err := compiler.NewError(context, message) + errors = []error{err} + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewParametersOrReferences creates an object of type ParametersOrReferences if possible, returning an error if not. +func NewParametersOrReferences(in *yaml.Node, context *compiler.Context) (*ParametersOrReferences, error) { + errors := make([]error, 0) + x := &ParametersOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedParameterOrReference additional_properties = 1; + // MAP: ParameterOrReference + x.AdditionalProperties = make([]*NamedParameterOrReference, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedParameterOrReference{} + pair.Name = k + var err error + pair.Value, err = NewParameterOrReference(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewPathItem creates an object of type PathItem if possible, returning an error if not. +func NewPathItem(in *yaml.Node, context *compiler.Context) (*PathItem, error) { + errors := make([]error, 0) + x := &PathItem{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"$ref", "delete", "description", "get", "head", "options", "parameters", "patch", "post", "put", "servers", "summary", "trace"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string _ref = 1; + v1 := compiler.MapValueForKey(m, "$ref") + if v1 != nil { + x.XRef, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for $ref: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string summary = 2; + v2 := compiler.MapValueForKey(m, "summary") + if v2 != nil { + x.Summary, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for summary: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = compiler.StringForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Operation get = 4; + v4 := compiler.MapValueForKey(m, "get") + if v4 != nil { + var err error + x.Get, err = NewOperation(v4, compiler.NewContext("get", v4, context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation put = 5; + v5 := compiler.MapValueForKey(m, "put") + if v5 != nil { + var err error + x.Put, err = NewOperation(v5, compiler.NewContext("put", v5, context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation post = 6; + v6 := compiler.MapValueForKey(m, "post") + if v6 != nil { + var err error + x.Post, err = NewOperation(v6, compiler.NewContext("post", v6, context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation delete = 7; + v7 := compiler.MapValueForKey(m, "delete") + if v7 != nil { + var err error + x.Delete, err = NewOperation(v7, compiler.NewContext("delete", v7, context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation options = 8; + v8 := compiler.MapValueForKey(m, "options") + if v8 != nil { + var err error + x.Options, err = NewOperation(v8, compiler.NewContext("options", v8, context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation head = 9; + v9 := compiler.MapValueForKey(m, "head") + if v9 != nil { + var err error + x.Head, err = NewOperation(v9, compiler.NewContext("head", v9, context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation patch = 10; + v10 := compiler.MapValueForKey(m, "patch") + if v10 != nil { + var err error + x.Patch, err = NewOperation(v10, compiler.NewContext("patch", v10, context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation trace = 11; + v11 := compiler.MapValueForKey(m, "trace") + if v11 != nil { + var err error + x.Trace, err = NewOperation(v11, compiler.NewContext("trace", v11, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated Server servers = 12; + v12 := compiler.MapValueForKey(m, "servers") + if v12 != nil { + // repeated Server + x.Servers = make([]*Server, 0) + a, ok := compiler.SequenceNodeForNode(v12) + if ok { + for _, item := range a.Content { + y, err := NewServer(item, compiler.NewContext("servers", item, context)) + if err != nil { + errors = append(errors, err) + } + x.Servers = append(x.Servers, y) + } + } + } + // repeated ParameterOrReference parameters = 13; + v13 := compiler.MapValueForKey(m, "parameters") + if v13 != nil { + // repeated ParameterOrReference + x.Parameters = make([]*ParameterOrReference, 0) + a, ok := compiler.SequenceNodeForNode(v13) + if ok { + for _, item := range a.Content { + y, err := NewParameterOrReference(item, compiler.NewContext("parameters", item, context)) + if err != nil { + errors = append(errors, err) + } + x.Parameters = append(x.Parameters, y) + } + } + } + // repeated NamedAny specification_extension = 14; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewPaths creates an object of type Paths if possible, returning an error if not. +func NewPaths(in *yaml.Node, context *compiler.Context) (*Paths, error) { + errors := make([]error, 0) + x := &Paths{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{} + allowedPatterns := []*regexp.Regexp{pattern2, pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // repeated NamedPathItem path = 1; + // MAP: PathItem ^/ + x.Path = make([]*NamedPathItem, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "/") { + pair := &NamedPathItem{} + pair.Name = k + var err error + pair.Value, err = NewPathItem(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.Path = append(x.Path, pair) + } + } + } + // repeated NamedAny specification_extension = 2; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewProperties creates an object of type Properties if possible, returning an error if not. +func NewProperties(in *yaml.Node, context *compiler.Context) (*Properties, error) { + errors := make([]error, 0) + x := &Properties{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedSchemaOrReference additional_properties = 1; + // MAP: SchemaOrReference + x.AdditionalProperties = make([]*NamedSchemaOrReference, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedSchemaOrReference{} + pair.Name = k + var err error + pair.Value, err = NewSchemaOrReference(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewReference creates an object of type Reference if possible, returning an error if not. +func NewReference(in *yaml.Node, context *compiler.Context) (*Reference, error) { + errors := make([]error, 0) + x := &Reference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"$ref"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string _ref = 1; + v1 := compiler.MapValueForKey(m, "$ref") + if v1 != nil { + x.XRef, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for $ref: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string summary = 2; + v2 := compiler.MapValueForKey(m, "summary") + if v2 != nil { + x.Summary, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for summary: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = compiler.StringForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewRequestBodiesOrReferences creates an object of type RequestBodiesOrReferences if possible, returning an error if not. +func NewRequestBodiesOrReferences(in *yaml.Node, context *compiler.Context) (*RequestBodiesOrReferences, error) { + errors := make([]error, 0) + x := &RequestBodiesOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedRequestBodyOrReference additional_properties = 1; + // MAP: RequestBodyOrReference + x.AdditionalProperties = make([]*NamedRequestBodyOrReference, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedRequestBodyOrReference{} + pair.Name = k + var err error + pair.Value, err = NewRequestBodyOrReference(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewRequestBody creates an object of type RequestBody if possible, returning an error if not. +func NewRequestBody(in *yaml.Node, context *compiler.Context) (*RequestBody, error) { + errors := make([]error, 0) + x := &RequestBody{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"content"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"content", "description", "required"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string description = 1; + v1 := compiler.MapValueForKey(m, "description") + if v1 != nil { + x.Description, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // MediaTypes content = 2; + v2 := compiler.MapValueForKey(m, "content") + if v2 != nil { + var err error + x.Content, err = NewMediaTypes(v2, compiler.NewContext("content", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + // bool required = 3; + v3 := compiler.MapValueForKey(m, "required") + if v3 != nil { + x.Required, ok = compiler.BoolForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for required: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 4; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewRequestBodyOrReference creates an object of type RequestBodyOrReference if possible, returning an error if not. +func NewRequestBodyOrReference(in *yaml.Node, context *compiler.Context) (*RequestBodyOrReference, error) { + errors := make([]error, 0) + x := &RequestBodyOrReference{} + matched := false + // RequestBody request_body = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewRequestBody(m, compiler.NewContext("requestBody", m, context)) + if matchingError == nil { + x.Oneof = &RequestBodyOrReference_RequestBody{RequestBody: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", m, context)) + if matchingError == nil { + x.Oneof = &RequestBodyOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } else { + message := fmt.Sprintf("contains an invalid RequestBodyOrReference") + err := compiler.NewError(context, message) + errors = []error{err} + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponse creates an object of type Response if possible, returning an error if not. +func NewResponse(in *yaml.Node, context *compiler.Context) (*Response, error) { + errors := make([]error, 0) + x := &Response{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"description"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"content", "description", "headers", "links"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string description = 1; + v1 := compiler.MapValueForKey(m, "description") + if v1 != nil { + x.Description, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // HeadersOrReferences headers = 2; + v2 := compiler.MapValueForKey(m, "headers") + if v2 != nil { + var err error + x.Headers, err = NewHeadersOrReferences(v2, compiler.NewContext("headers", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + // MediaTypes content = 3; + v3 := compiler.MapValueForKey(m, "content") + if v3 != nil { + var err error + x.Content, err = NewMediaTypes(v3, compiler.NewContext("content", v3, context)) + if err != nil { + errors = append(errors, err) + } + } + // LinksOrReferences links = 4; + v4 := compiler.MapValueForKey(m, "links") + if v4 != nil { + var err error + x.Links, err = NewLinksOrReferences(v4, compiler.NewContext("links", v4, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 5; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponseOrReference creates an object of type ResponseOrReference if possible, returning an error if not. +func NewResponseOrReference(in *yaml.Node, context *compiler.Context) (*ResponseOrReference, error) { + errors := make([]error, 0) + x := &ResponseOrReference{} + matched := false + // Response response = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewResponse(m, compiler.NewContext("response", m, context)) + if matchingError == nil { + x.Oneof = &ResponseOrReference_Response{Response: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", m, context)) + if matchingError == nil { + x.Oneof = &ResponseOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } else { + message := fmt.Sprintf("contains an invalid ResponseOrReference") + err := compiler.NewError(context, message) + errors = []error{err} + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponses creates an object of type Responses if possible, returning an error if not. +func NewResponses(in *yaml.Node, context *compiler.Context) (*Responses, error) { + errors := make([]error, 0) + x := &Responses{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"default"} + allowedPatterns := []*regexp.Regexp{pattern3, pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // ResponseOrReference default = 1; + v1 := compiler.MapValueForKey(m, "default") + if v1 != nil { + var err error + x.Default, err = NewResponseOrReference(v1, compiler.NewContext("default", v1, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedResponseOrReference response_or_reference = 2; + // MAP: ResponseOrReference ^([0-9X]{3})$ + x.ResponseOrReference = make([]*NamedResponseOrReference, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if pattern3.MatchString(k) { + pair := &NamedResponseOrReference{} + pair.Name = k + var err error + pair.Value, err = NewResponseOrReference(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.ResponseOrReference = append(x.ResponseOrReference, pair) + } + } + } + // repeated NamedAny specification_extension = 3; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponsesOrReferences creates an object of type ResponsesOrReferences if possible, returning an error if not. +func NewResponsesOrReferences(in *yaml.Node, context *compiler.Context) (*ResponsesOrReferences, error) { + errors := make([]error, 0) + x := &ResponsesOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedResponseOrReference additional_properties = 1; + // MAP: ResponseOrReference + x.AdditionalProperties = make([]*NamedResponseOrReference, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedResponseOrReference{} + pair.Name = k + var err error + pair.Value, err = NewResponseOrReference(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSchema creates an object of type Schema if possible, returning an error if not. +func NewSchema(in *yaml.Node, context *compiler.Context) (*Schema, error) { + errors := make([]error, 0) + x := &Schema{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"additionalProperties", "allOf", "anyOf", "default", "deprecated", "description", "discriminator", "enum", "example", "exclusiveMaximum", "exclusiveMinimum", "externalDocs", "format", "items", "maxItems", "maxLength", "maxProperties", "maximum", "minItems", "minLength", "minProperties", "minimum", "multipleOf", "not", "nullable", "oneOf", "pattern", "properties", "readOnly", "required", "title", "type", "uniqueItems", "writeOnly", "xml"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // bool nullable = 1; + v1 := compiler.MapValueForKey(m, "nullable") + if v1 != nil { + x.Nullable, ok = compiler.BoolForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for nullable: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Discriminator discriminator = 2; + v2 := compiler.MapValueForKey(m, "discriminator") + if v2 != nil { + var err error + x.Discriminator, err = NewDiscriminator(v2, compiler.NewContext("discriminator", v2, context)) + if err != nil { + errors = append(errors, err) + } + } + // bool read_only = 3; + v3 := compiler.MapValueForKey(m, "readOnly") + if v3 != nil { + x.ReadOnly, ok = compiler.BoolForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for readOnly: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool write_only = 4; + v4 := compiler.MapValueForKey(m, "writeOnly") + if v4 != nil { + x.WriteOnly, ok = compiler.BoolForScalarNode(v4) + if !ok { + message := fmt.Sprintf("has unexpected value for writeOnly: %s", compiler.Display(v4)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Xml xml = 5; + v5 := compiler.MapValueForKey(m, "xml") + if v5 != nil { + var err error + x.Xml, err = NewXml(v5, compiler.NewContext("xml", v5, context)) + if err != nil { + errors = append(errors, err) + } + } + // ExternalDocs external_docs = 6; + v6 := compiler.MapValueForKey(m, "externalDocs") + if v6 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v6, compiler.NewContext("externalDocs", v6, context)) + if err != nil { + errors = append(errors, err) + } + } + // Any example = 7; + v7 := compiler.MapValueForKey(m, "example") + if v7 != nil { + var err error + x.Example, err = NewAny(v7, compiler.NewContext("example", v7, context)) + if err != nil { + errors = append(errors, err) + } + } + // bool deprecated = 8; + v8 := compiler.MapValueForKey(m, "deprecated") + if v8 != nil { + x.Deprecated, ok = compiler.BoolForScalarNode(v8) + if !ok { + message := fmt.Sprintf("has unexpected value for deprecated: %s", compiler.Display(v8)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string title = 9; + v9 := compiler.MapValueForKey(m, "title") + if v9 != nil { + x.Title, ok = compiler.StringForScalarNode(v9) + if !ok { + message := fmt.Sprintf("has unexpected value for title: %s", compiler.Display(v9)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float multiple_of = 10; + v10 := compiler.MapValueForKey(m, "multipleOf") + if v10 != nil { + v, ok := compiler.FloatForScalarNode(v10) + if ok { + x.MultipleOf = v + } else { + message := fmt.Sprintf("has unexpected value for multipleOf: %s", compiler.Display(v10)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float maximum = 11; + v11 := compiler.MapValueForKey(m, "maximum") + if v11 != nil { + v, ok := compiler.FloatForScalarNode(v11) + if ok { + x.Maximum = v + } else { + message := fmt.Sprintf("has unexpected value for maximum: %s", compiler.Display(v11)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_maximum = 12; + v12 := compiler.MapValueForKey(m, "exclusiveMaximum") + if v12 != nil { + x.ExclusiveMaximum, ok = compiler.BoolForScalarNode(v12) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %s", compiler.Display(v12)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float minimum = 13; + v13 := compiler.MapValueForKey(m, "minimum") + if v13 != nil { + v, ok := compiler.FloatForScalarNode(v13) + if ok { + x.Minimum = v + } else { + message := fmt.Sprintf("has unexpected value for minimum: %s", compiler.Display(v13)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_minimum = 14; + v14 := compiler.MapValueForKey(m, "exclusiveMinimum") + if v14 != nil { + x.ExclusiveMinimum, ok = compiler.BoolForScalarNode(v14) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %s", compiler.Display(v14)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_length = 15; + v15 := compiler.MapValueForKey(m, "maxLength") + if v15 != nil { + t, ok := compiler.IntForScalarNode(v15) + if ok { + x.MaxLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxLength: %s", compiler.Display(v15)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_length = 16; + v16 := compiler.MapValueForKey(m, "minLength") + if v16 != nil { + t, ok := compiler.IntForScalarNode(v16) + if ok { + x.MinLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minLength: %s", compiler.Display(v16)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string pattern = 17; + v17 := compiler.MapValueForKey(m, "pattern") + if v17 != nil { + x.Pattern, ok = compiler.StringForScalarNode(v17) + if !ok { + message := fmt.Sprintf("has unexpected value for pattern: %s", compiler.Display(v17)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_items = 18; + v18 := compiler.MapValueForKey(m, "maxItems") + if v18 != nil { + t, ok := compiler.IntForScalarNode(v18) + if ok { + x.MaxItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxItems: %s", compiler.Display(v18)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_items = 19; + v19 := compiler.MapValueForKey(m, "minItems") + if v19 != nil { + t, ok := compiler.IntForScalarNode(v19) + if ok { + x.MinItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minItems: %s", compiler.Display(v19)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool unique_items = 20; + v20 := compiler.MapValueForKey(m, "uniqueItems") + if v20 != nil { + x.UniqueItems, ok = compiler.BoolForScalarNode(v20) + if !ok { + message := fmt.Sprintf("has unexpected value for uniqueItems: %s", compiler.Display(v20)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_properties = 21; + v21 := compiler.MapValueForKey(m, "maxProperties") + if v21 != nil { + t, ok := compiler.IntForScalarNode(v21) + if ok { + x.MaxProperties = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxProperties: %s", compiler.Display(v21)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_properties = 22; + v22 := compiler.MapValueForKey(m, "minProperties") + if v22 != nil { + t, ok := compiler.IntForScalarNode(v22) + if ok { + x.MinProperties = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minProperties: %s", compiler.Display(v22)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated string required = 23; + v23 := compiler.MapValueForKey(m, "required") + if v23 != nil { + v, ok := compiler.SequenceNodeForNode(v23) + if ok { + x.Required = compiler.StringArrayForSequenceNode(v) + } else { + message := fmt.Sprintf("has unexpected value for required: %s", compiler.Display(v23)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated Any enum = 24; + v24 := compiler.MapValueForKey(m, "enum") + if v24 != nil { + // repeated Any + x.Enum = make([]*Any, 0) + a, ok := compiler.SequenceNodeForNode(v24) + if ok { + for _, item := range a.Content { + y, err := NewAny(item, compiler.NewContext("enum", item, context)) + if err != nil { + errors = append(errors, err) + } + x.Enum = append(x.Enum, y) + } + } + } + // string type = 25; + v25 := compiler.MapValueForKey(m, "type") + if v25 != nil { + x.Type, ok = compiler.StringForScalarNode(v25) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v25)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated SchemaOrReference all_of = 26; + v26 := compiler.MapValueForKey(m, "allOf") + if v26 != nil { + // repeated SchemaOrReference + x.AllOf = make([]*SchemaOrReference, 0) + a, ok := compiler.SequenceNodeForNode(v26) + if ok { + for _, item := range a.Content { + y, err := NewSchemaOrReference(item, compiler.NewContext("allOf", item, context)) + if err != nil { + errors = append(errors, err) + } + x.AllOf = append(x.AllOf, y) + } + } + } + // repeated SchemaOrReference one_of = 27; + v27 := compiler.MapValueForKey(m, "oneOf") + if v27 != nil { + // repeated SchemaOrReference + x.OneOf = make([]*SchemaOrReference, 0) + a, ok := compiler.SequenceNodeForNode(v27) + if ok { + for _, item := range a.Content { + y, err := NewSchemaOrReference(item, compiler.NewContext("oneOf", item, context)) + if err != nil { + errors = append(errors, err) + } + x.OneOf = append(x.OneOf, y) + } + } + } + // repeated SchemaOrReference any_of = 28; + v28 := compiler.MapValueForKey(m, "anyOf") + if v28 != nil { + // repeated SchemaOrReference + x.AnyOf = make([]*SchemaOrReference, 0) + a, ok := compiler.SequenceNodeForNode(v28) + if ok { + for _, item := range a.Content { + y, err := NewSchemaOrReference(item, compiler.NewContext("anyOf", item, context)) + if err != nil { + errors = append(errors, err) + } + x.AnyOf = append(x.AnyOf, y) + } + } + } + // Schema not = 29; + v29 := compiler.MapValueForKey(m, "not") + if v29 != nil { + var err error + x.Not, err = NewSchema(v29, compiler.NewContext("not", v29, context)) + if err != nil { + errors = append(errors, err) + } + } + // ItemsItem items = 30; + v30 := compiler.MapValueForKey(m, "items") + if v30 != nil { + var err error + x.Items, err = NewItemsItem(v30, compiler.NewContext("items", v30, context)) + if err != nil { + errors = append(errors, err) + } + } + // Properties properties = 31; + v31 := compiler.MapValueForKey(m, "properties") + if v31 != nil { + var err error + x.Properties, err = NewProperties(v31, compiler.NewContext("properties", v31, context)) + if err != nil { + errors = append(errors, err) + } + } + // AdditionalPropertiesItem additional_properties = 32; + v32 := compiler.MapValueForKey(m, "additionalProperties") + if v32 != nil { + var err error + x.AdditionalProperties, err = NewAdditionalPropertiesItem(v32, compiler.NewContext("additionalProperties", v32, context)) + if err != nil { + errors = append(errors, err) + } + } + // DefaultType default = 33; + v33 := compiler.MapValueForKey(m, "default") + if v33 != nil { + var err error + x.Default, err = NewDefaultType(v33, compiler.NewContext("default", v33, context)) + if err != nil { + errors = append(errors, err) + } + } + // string description = 34; + v34 := compiler.MapValueForKey(m, "description") + if v34 != nil { + x.Description, ok = compiler.StringForScalarNode(v34) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v34)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string format = 35; + v35 := compiler.MapValueForKey(m, "format") + if v35 != nil { + x.Format, ok = compiler.StringForScalarNode(v35) + if !ok { + message := fmt.Sprintf("has unexpected value for format: %s", compiler.Display(v35)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 36; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSchemaOrReference creates an object of type SchemaOrReference if possible, returning an error if not. +func NewSchemaOrReference(in *yaml.Node, context *compiler.Context) (*SchemaOrReference, error) { + errors := make([]error, 0) + x := &SchemaOrReference{} + matched := false + // Schema schema = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewSchema(m, compiler.NewContext("schema", m, context)) + if matchingError == nil { + x.Oneof = &SchemaOrReference_Schema{Schema: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", m, context)) + if matchingError == nil { + x.Oneof = &SchemaOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } else { + message := fmt.Sprintf("contains an invalid SchemaOrReference") + err := compiler.NewError(context, message) + errors = []error{err} + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSchemasOrReferences creates an object of type SchemasOrReferences if possible, returning an error if not. +func NewSchemasOrReferences(in *yaml.Node, context *compiler.Context) (*SchemasOrReferences, error) { + errors := make([]error, 0) + x := &SchemasOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedSchemaOrReference additional_properties = 1; + // MAP: SchemaOrReference + x.AdditionalProperties = make([]*NamedSchemaOrReference, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedSchemaOrReference{} + pair.Name = k + var err error + pair.Value, err = NewSchemaOrReference(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSecurityRequirement creates an object of type SecurityRequirement if possible, returning an error if not. +func NewSecurityRequirement(in *yaml.Node, context *compiler.Context) (*SecurityRequirement, error) { + errors := make([]error, 0) + x := &SecurityRequirement{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedStringArray additional_properties = 1; + // MAP: StringArray + x.AdditionalProperties = make([]*NamedStringArray, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedStringArray{} + pair.Name = k + var err error + pair.Value, err = NewStringArray(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSecurityScheme creates an object of type SecurityScheme if possible, returning an error if not. +func NewSecurityScheme(in *yaml.Node, context *compiler.Context) (*SecurityScheme, error) { + errors := make([]error, 0) + x := &SecurityScheme{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"type"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"bearerFormat", "description", "flows", "in", "name", "openIdConnectUrl", "scheme", "type"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string type = 1; + v1 := compiler.MapValueForKey(m, "type") + if v1 != nil { + x.Type, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string name = 3; + v3 := compiler.MapValueForKey(m, "name") + if v3 != nil { + x.Name, ok = compiler.StringForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string in = 4; + v4 := compiler.MapValueForKey(m, "in") + if v4 != nil { + x.In, ok = compiler.StringForScalarNode(v4) + if !ok { + message := fmt.Sprintf("has unexpected value for in: %s", compiler.Display(v4)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string scheme = 5; + v5 := compiler.MapValueForKey(m, "scheme") + if v5 != nil { + x.Scheme, ok = compiler.StringForScalarNode(v5) + if !ok { + message := fmt.Sprintf("has unexpected value for scheme: %s", compiler.Display(v5)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string bearer_format = 6; + v6 := compiler.MapValueForKey(m, "bearerFormat") + if v6 != nil { + x.BearerFormat, ok = compiler.StringForScalarNode(v6) + if !ok { + message := fmt.Sprintf("has unexpected value for bearerFormat: %s", compiler.Display(v6)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // OauthFlows flows = 7; + v7 := compiler.MapValueForKey(m, "flows") + if v7 != nil { + var err error + x.Flows, err = NewOauthFlows(v7, compiler.NewContext("flows", v7, context)) + if err != nil { + errors = append(errors, err) + } + } + // string open_id_connect_url = 8; + v8 := compiler.MapValueForKey(m, "openIdConnectUrl") + if v8 != nil { + x.OpenIdConnectUrl, ok = compiler.StringForScalarNode(v8) + if !ok { + message := fmt.Sprintf("has unexpected value for openIdConnectUrl: %s", compiler.Display(v8)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 9; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSecuritySchemeOrReference creates an object of type SecuritySchemeOrReference if possible, returning an error if not. +func NewSecuritySchemeOrReference(in *yaml.Node, context *compiler.Context) (*SecuritySchemeOrReference, error) { + errors := make([]error, 0) + x := &SecuritySchemeOrReference{} + matched := false + // SecurityScheme security_scheme = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewSecurityScheme(m, compiler.NewContext("securityScheme", m, context)) + if matchingError == nil { + x.Oneof = &SecuritySchemeOrReference_SecurityScheme{SecurityScheme: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", m, context)) + if matchingError == nil { + x.Oneof = &SecuritySchemeOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } else { + message := fmt.Sprintf("contains an invalid SecuritySchemeOrReference") + err := compiler.NewError(context, message) + errors = []error{err} + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSecuritySchemesOrReferences creates an object of type SecuritySchemesOrReferences if possible, returning an error if not. +func NewSecuritySchemesOrReferences(in *yaml.Node, context *compiler.Context) (*SecuritySchemesOrReferences, error) { + errors := make([]error, 0) + x := &SecuritySchemesOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedSecuritySchemeOrReference additional_properties = 1; + // MAP: SecuritySchemeOrReference + x.AdditionalProperties = make([]*NamedSecuritySchemeOrReference, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedSecuritySchemeOrReference{} + pair.Name = k + var err error + pair.Value, err = NewSecuritySchemeOrReference(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewServer creates an object of type Server if possible, returning an error if not. +func NewServer(in *yaml.Node, context *compiler.Context) (*Server, error) { + errors := make([]error, 0) + x := &Server{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"url"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "url", "variables"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string url = 1; + v1 := compiler.MapValueForKey(m, "url") + if v1 != nil { + x.Url, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for url: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ServerVariables variables = 3; + v3 := compiler.MapValueForKey(m, "variables") + if v3 != nil { + var err error + x.Variables, err = NewServerVariables(v3, compiler.NewContext("variables", v3, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 4; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewServerVariable creates an object of type ServerVariable if possible, returning an error if not. +func NewServerVariable(in *yaml.Node, context *compiler.Context) (*ServerVariable, error) { + errors := make([]error, 0) + x := &ServerVariable{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"default"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"default", "description", "enum"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // repeated string enum = 1; + v1 := compiler.MapValueForKey(m, "enum") + if v1 != nil { + v, ok := compiler.SequenceNodeForNode(v1) + if ok { + x.Enum = compiler.StringArrayForSequenceNode(v) + } else { + message := fmt.Sprintf("has unexpected value for enum: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string default = 2; + v2 := compiler.MapValueForKey(m, "default") + if v2 != nil { + x.Default, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for default: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = compiler.StringForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 4; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewServerVariables creates an object of type ServerVariables if possible, returning an error if not. +func NewServerVariables(in *yaml.Node, context *compiler.Context) (*ServerVariables, error) { + errors := make([]error, 0) + x := &ServerVariables{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedServerVariable additional_properties = 1; + // MAP: ServerVariable + x.AdditionalProperties = make([]*NamedServerVariable, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedServerVariable{} + pair.Name = k + var err error + pair.Value, err = NewServerVariable(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSpecificationExtension creates an object of type SpecificationExtension if possible, returning an error if not. +func NewSpecificationExtension(in *yaml.Node, context *compiler.Context) (*SpecificationExtension, error) { + errors := make([]error, 0) + x := &SpecificationExtension{} + matched := false + switch in.Tag { + case "!!bool": + var v bool + v, matched = compiler.BoolForScalarNode(in) + x.Oneof = &SpecificationExtension_Boolean{Boolean: v} + case "!!str": + var v string + v, matched = compiler.StringForScalarNode(in) + x.Oneof = &SpecificationExtension_String_{String_: v} + case "!!float": + var v float64 + v, matched = compiler.FloatForScalarNode(in) + x.Oneof = &SpecificationExtension_Number{Number: v} + case "!!int": + var v int64 + v, matched = compiler.IntForScalarNode(in) + x.Oneof = &SpecificationExtension_Number{Number: float64(v)} + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewStringArray creates an object of type StringArray if possible, returning an error if not. +func NewStringArray(in *yaml.Node, context *compiler.Context) (*StringArray, error) { + errors := make([]error, 0) + x := &StringArray{} + x.Value = make([]string, 0) + for _, node := range in.Content { + s, _ := compiler.StringForScalarNode(node) + x.Value = append(x.Value, s) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewStrings creates an object of type Strings if possible, returning an error if not. +func NewStrings(in *yaml.Node, context *compiler.Context) (*Strings, error) { + errors := make([]error, 0) + x := &Strings{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedString additional_properties = 1; + // MAP: string + x.AdditionalProperties = make([]*NamedString, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + pair := &NamedString{} + pair.Name = k + pair.Value, _ = compiler.StringForScalarNode(v) + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewTag creates an object of type Tag if possible, returning an error if not. +func NewTag(in *yaml.Node, context *compiler.Context) (*Tag, error) { + errors := make([]error, 0) + x := &Tag{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"name"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "externalDocs", "name"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ExternalDocs external_docs = 3; + v3 := compiler.MapValueForKey(m, "externalDocs") + if v3 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v3, compiler.NewContext("externalDocs", v3, context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 4; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewXml creates an object of type Xml if possible, returning an error if not. +func NewXml(in *yaml.Node, context *compiler.Context) (*Xml, error) { + errors := make([]error, 0) + x := &Xml{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"attribute", "name", "namespace", "prefix", "wrapped"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = compiler.StringForScalarNode(v1) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %s", compiler.Display(v1)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string namespace = 2; + v2 := compiler.MapValueForKey(m, "namespace") + if v2 != nil { + x.Namespace, ok = compiler.StringForScalarNode(v2) + if !ok { + message := fmt.Sprintf("has unexpected value for namespace: %s", compiler.Display(v2)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string prefix = 3; + v3 := compiler.MapValueForKey(m, "prefix") + if v3 != nil { + x.Prefix, ok = compiler.StringForScalarNode(v3) + if !ok { + message := fmt.Sprintf("has unexpected value for prefix: %s", compiler.Display(v3)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool attribute = 4; + v4 := compiler.MapValueForKey(m, "attribute") + if v4 != nil { + x.Attribute, ok = compiler.BoolForScalarNode(v4) + if !ok { + message := fmt.Sprintf("has unexpected value for attribute: %s", compiler.Display(v4)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool wrapped = 5; + v5 := compiler.MapValueForKey(m, "wrapped") + if v5 != nil { + x.Wrapped, ok = compiler.BoolForScalarNode(v5) + if !ok { + message := fmt.Sprintf("has unexpected value for wrapped: %s", compiler.Display(v5)) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 6; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for i := 0; i < len(m.Content); i += 2 { + k, ok := compiler.StringForScalarNode(m.Content[i]) + if ok { + v := m.Content[i+1] + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.CallExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes := compiler.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, v, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside AdditionalPropertiesItem objects. +func (m *AdditionalPropertiesItem) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*AdditionalPropertiesItem_SchemaOrReference) + if ok { + _, err := p.SchemaOrReference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Any objects. +func (m *Any) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside AnyOrExpression objects. +func (m *AnyOrExpression) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*AnyOrExpression_Any) + if ok { + _, err := p.Any.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*AnyOrExpression_Expression) + if ok { + _, err := p.Expression.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Callback objects. +func (m *Callback) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.Path { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside CallbackOrReference objects. +func (m *CallbackOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*CallbackOrReference_Callback) + if ok { + _, err := p.Callback.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*CallbackOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside CallbacksOrReferences objects. +func (m *CallbacksOrReferences) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Components objects. +func (m *Components) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Schemas != nil { + _, err := m.Schemas.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Responses != nil { + _, err := m.Responses.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Parameters != nil { + _, err := m.Parameters.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Examples != nil { + _, err := m.Examples.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.RequestBodies != nil { + _, err := m.RequestBodies.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Headers != nil { + _, err := m.Headers.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.SecuritySchemes != nil { + _, err := m.SecuritySchemes.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Links != nil { + _, err := m.Links.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Callbacks != nil { + _, err := m.Callbacks.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Contact objects. +func (m *Contact) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside DefaultType objects. +func (m *DefaultType) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Discriminator objects. +func (m *Discriminator) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Mapping != nil { + _, err := m.Mapping.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Document objects. +func (m *Document) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Info != nil { + _, err := m.Info.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Servers { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.Paths != nil { + _, err := m.Paths.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Components != nil { + _, err := m.Components.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Security { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.Tags { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Encoding objects. +func (m *Encoding) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Headers != nil { + _, err := m.Headers.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Encodings objects. +func (m *Encodings) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Example objects. +func (m *Example) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ExampleOrReference objects. +func (m *ExampleOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*ExampleOrReference_Example) + if ok { + _, err := p.Example.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*ExampleOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ExamplesOrReferences objects. +func (m *ExamplesOrReferences) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Expression objects. +func (m *Expression) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ExternalDocs objects. +func (m *ExternalDocs) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Header objects. +func (m *Header) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Schema != nil { + _, err := m.Schema.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Example != nil { + _, err := m.Example.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Examples != nil { + _, err := m.Examples.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Content != nil { + _, err := m.Content.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside HeaderOrReference objects. +func (m *HeaderOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*HeaderOrReference_Header) + if ok { + _, err := p.Header.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*HeaderOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside HeadersOrReferences objects. +func (m *HeadersOrReferences) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Info objects. +func (m *Info) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Contact != nil { + _, err := m.Contact.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.License != nil { + _, err := m.License.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ItemsItem objects. +func (m *ItemsItem) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.SchemaOrReference { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside License objects. +func (m *License) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Link objects. +func (m *Link) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Parameters != nil { + _, err := m.Parameters.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.RequestBody != nil { + _, err := m.RequestBody.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Server != nil { + _, err := m.Server.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside LinkOrReference objects. +func (m *LinkOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*LinkOrReference_Link) + if ok { + _, err := p.Link.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*LinkOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside LinksOrReferences objects. +func (m *LinksOrReferences) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside MediaType objects. +func (m *MediaType) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Schema != nil { + _, err := m.Schema.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Example != nil { + _, err := m.Example.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Examples != nil { + _, err := m.Examples.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Encoding != nil { + _, err := m.Encoding.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside MediaTypes objects. +func (m *MediaTypes) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedAny objects. +func (m *NamedAny) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedCallbackOrReference objects. +func (m *NamedCallbackOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedEncoding objects. +func (m *NamedEncoding) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedExampleOrReference objects. +func (m *NamedExampleOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedHeaderOrReference objects. +func (m *NamedHeaderOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedLinkOrReference objects. +func (m *NamedLinkOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedMediaType objects. +func (m *NamedMediaType) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedParameterOrReference objects. +func (m *NamedParameterOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedPathItem objects. +func (m *NamedPathItem) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedRequestBodyOrReference objects. +func (m *NamedRequestBodyOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedResponseOrReference objects. +func (m *NamedResponseOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedSchemaOrReference objects. +func (m *NamedSchemaOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedSecuritySchemeOrReference objects. +func (m *NamedSecuritySchemeOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedServerVariable objects. +func (m *NamedServerVariable) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedString objects. +func (m *NamedString) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedStringArray objects. +func (m *NamedStringArray) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside OauthFlow objects. +func (m *OauthFlow) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Scopes != nil { + _, err := m.Scopes.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside OauthFlows objects. +func (m *OauthFlows) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Implicit != nil { + _, err := m.Implicit.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Password != nil { + _, err := m.Password.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.ClientCredentials != nil { + _, err := m.ClientCredentials.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.AuthorizationCode != nil { + _, err := m.AuthorizationCode.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Object objects. +func (m *Object) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Operation objects. +func (m *Operation) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Parameters { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.RequestBody != nil { + _, err := m.RequestBody.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Responses != nil { + _, err := m.Responses.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Callbacks != nil { + _, err := m.Callbacks.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Security { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.Servers { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Parameter objects. +func (m *Parameter) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Schema != nil { + _, err := m.Schema.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Example != nil { + _, err := m.Example.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Examples != nil { + _, err := m.Examples.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Content != nil { + _, err := m.Content.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ParameterOrReference objects. +func (m *ParameterOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*ParameterOrReference_Parameter) + if ok { + _, err := p.Parameter.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*ParameterOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ParametersOrReferences objects. +func (m *ParametersOrReferences) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside PathItem objects. +func (m *PathItem) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.XRef != "" { + info, err := compiler.ReadInfoForRef(root, m.XRef) + if err != nil { + return nil, err + } + if info != nil { + replacement, err := NewPathItem(info, nil) + if err == nil { + *m = *replacement + return m.ResolveReferences(root) + } + } + return info, nil + } + if m.Get != nil { + _, err := m.Get.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Put != nil { + _, err := m.Put.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Post != nil { + _, err := m.Post.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Delete != nil { + _, err := m.Delete.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Options != nil { + _, err := m.Options.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Head != nil { + _, err := m.Head.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Patch != nil { + _, err := m.Patch.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Trace != nil { + _, err := m.Trace.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Servers { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.Parameters { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Paths objects. +func (m *Paths) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.Path { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Properties objects. +func (m *Properties) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Reference objects. +func (m *Reference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.XRef != "" { + info, err := compiler.ReadInfoForRef(root, m.XRef) + if err != nil { + return nil, err + } + if info != nil { + replacement, err := NewReference(info, nil) + if err == nil { + *m = *replacement + return m.ResolveReferences(root) + } + } + return info, nil + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside RequestBodiesOrReferences objects. +func (m *RequestBodiesOrReferences) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside RequestBody objects. +func (m *RequestBody) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Content != nil { + _, err := m.Content.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside RequestBodyOrReference objects. +func (m *RequestBodyOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*RequestBodyOrReference_RequestBody) + if ok { + _, err := p.RequestBody.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*RequestBodyOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Response objects. +func (m *Response) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Headers != nil { + _, err := m.Headers.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Content != nil { + _, err := m.Content.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Links != nil { + _, err := m.Links.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ResponseOrReference objects. +func (m *ResponseOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*ResponseOrReference_Response) + if ok { + _, err := p.Response.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*ResponseOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Responses objects. +func (m *Responses) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.ResponseOrReference { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ResponsesOrReferences objects. +func (m *ResponsesOrReferences) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Schema objects. +func (m *Schema) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Discriminator != nil { + _, err := m.Discriminator.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Xml != nil { + _, err := m.Xml.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Example != nil { + _, err := m.Example.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Enum { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.AllOf { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.OneOf { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.AnyOf { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.Not != nil { + _, err := m.Not.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Items != nil { + _, err := m.Items.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Properties != nil { + _, err := m.Properties.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.AdditionalProperties != nil { + _, err := m.AdditionalProperties.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SchemaOrReference objects. +func (m *SchemaOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*SchemaOrReference_Schema) + if ok { + _, err := p.Schema.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*SchemaOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SchemasOrReferences objects. +func (m *SchemasOrReferences) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SecurityRequirement objects. +func (m *SecurityRequirement) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SecurityScheme objects. +func (m *SecurityScheme) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Flows != nil { + _, err := m.Flows.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SecuritySchemeOrReference objects. +func (m *SecuritySchemeOrReference) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*SecuritySchemeOrReference_SecurityScheme) + if ok { + _, err := p.SecurityScheme.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*SecuritySchemeOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SecuritySchemesOrReferences objects. +func (m *SecuritySchemesOrReferences) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Server objects. +func (m *Server) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.Variables != nil { + _, err := m.Variables.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ServerVariable objects. +func (m *ServerVariable) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ServerVariables objects. +func (m *ServerVariables) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SpecificationExtension objects. +func (m *SpecificationExtension) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside StringArray objects. +func (m *StringArray) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Strings objects. +func (m *Strings) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Tag objects. +func (m *Tag) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Xml objects. +func (m *Xml) ResolveReferences(root string) (*yaml.Node, error) { + errors := make([]error, 0) + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ToRawInfo returns a description of AdditionalPropertiesItem suitable for JSON or YAML export. +func (m *AdditionalPropertiesItem) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // AdditionalPropertiesItem + // {Name:schemaOrReference Type:SchemaOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetSchemaOrReference() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:boolean Type:bool StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v1, ok := m.GetOneof().(*AdditionalPropertiesItem_Boolean); ok { + return compiler.NewScalarNodeForBool(v1.Boolean) + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of Any suitable for JSON or YAML export. +func (m *Any) ToRawInfo() *yaml.Node { + var err error + var node yaml.Node + err = yaml.Unmarshal([]byte(m.Yaml), &node) + if err == nil { + if node.Kind == yaml.DocumentNode { + return node.Content[0] + } + return &node + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of AnyOrExpression suitable for JSON or YAML export. +func (m *AnyOrExpression) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // AnyOrExpression + // {Name:any Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetAny() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:expression Type:Expression StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetExpression() + if v1 != nil { + return v1.ToRawInfo() + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of Callback suitable for JSON or YAML export. +func (m *Callback) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Path != nil { + for _, item := range m.Path { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of CallbackOrReference suitable for JSON or YAML export. +func (m *CallbackOrReference) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // CallbackOrReference + // {Name:callback Type:Callback StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetCallback() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of CallbacksOrReferences suitable for JSON or YAML export. +func (m *CallbacksOrReferences) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Components suitable for JSON or YAML export. +func (m *Components) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Schemas != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("schemas")) + info.Content = append(info.Content, m.Schemas.ToRawInfo()) + } + if m.Responses != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("responses")) + info.Content = append(info.Content, m.Responses.ToRawInfo()) + } + if m.Parameters != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("parameters")) + info.Content = append(info.Content, m.Parameters.ToRawInfo()) + } + if m.Examples != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("examples")) + info.Content = append(info.Content, m.Examples.ToRawInfo()) + } + if m.RequestBodies != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("requestBodies")) + info.Content = append(info.Content, m.RequestBodies.ToRawInfo()) + } + if m.Headers != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("headers")) + info.Content = append(info.Content, m.Headers.ToRawInfo()) + } + if m.SecuritySchemes != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("securitySchemes")) + info.Content = append(info.Content, m.SecuritySchemes.ToRawInfo()) + } + if m.Links != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("links")) + info.Content = append(info.Content, m.Links.ToRawInfo()) + } + if m.Callbacks != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("callbacks")) + info.Content = append(info.Content, m.Callbacks.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Contact suitable for JSON or YAML export. +func (m *Contact) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + if m.Url != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("url")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Url)) + } + if m.Email != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("email")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Email)) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of DefaultType suitable for JSON or YAML export. +func (m *DefaultType) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // DefaultType + // {Name:number Type:float StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v0, ok := m.GetOneof().(*DefaultType_Number); ok { + return compiler.NewScalarNodeForFloat(v0.Number) + } + // {Name:boolean Type:bool StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v1, ok := m.GetOneof().(*DefaultType_Boolean); ok { + return compiler.NewScalarNodeForBool(v1.Boolean) + } + // {Name:string Type:string StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v2, ok := m.GetOneof().(*DefaultType_String_); ok { + return compiler.NewScalarNodeForString(v2.String_) + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of Discriminator suitable for JSON or YAML export. +func (m *Discriminator) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("propertyName")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.PropertyName)) + if m.Mapping != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("mapping")) + info.Content = append(info.Content, m.Mapping.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Document suitable for JSON or YAML export. +func (m *Document) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("openapi")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Openapi)) + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("info")) + info.Content = append(info.Content, m.Info.ToRawInfo()) + if len(m.Servers) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.Servers { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("servers")) + info.Content = append(info.Content, items) + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("paths")) + info.Content = append(info.Content, m.Paths.ToRawInfo()) + if m.Components != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("components")) + info.Content = append(info.Content, m.Components.ToRawInfo()) + } + if len(m.Security) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.Security { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("security")) + info.Content = append(info.Content, items) + } + if len(m.Tags) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.Tags { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("tags")) + info.Content = append(info.Content, items) + } + if m.ExternalDocs != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("externalDocs")) + info.Content = append(info.Content, m.ExternalDocs.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Encoding suitable for JSON or YAML export. +func (m *Encoding) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.ContentType != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("contentType")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.ContentType)) + } + if m.Headers != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("headers")) + info.Content = append(info.Content, m.Headers.ToRawInfo()) + } + if m.Style != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("style")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Style)) + } + if m.Explode != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("explode")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Explode)) + } + if m.AllowReserved != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("allowReserved")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.AllowReserved)) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Encodings suitable for JSON or YAML export. +func (m *Encodings) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Example suitable for JSON or YAML export. +func (m *Example) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Summary != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("summary")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Summary)) + } + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.Value != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("value")) + info.Content = append(info.Content, m.Value.ToRawInfo()) + } + if m.ExternalValue != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("externalValue")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.ExternalValue)) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of ExampleOrReference suitable for JSON or YAML export. +func (m *ExampleOrReference) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // ExampleOrReference + // {Name:example Type:Example StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetExample() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of ExamplesOrReferences suitable for JSON or YAML export. +func (m *ExamplesOrReferences) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Expression suitable for JSON or YAML export. +func (m *Expression) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of ExternalDocs suitable for JSON or YAML export. +func (m *ExternalDocs) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("url")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Url)) + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Header suitable for JSON or YAML export. +func (m *Header) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.Required != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("required")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Required)) + } + if m.Deprecated != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("deprecated")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Deprecated)) + } + if m.AllowEmptyValue != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("allowEmptyValue")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.AllowEmptyValue)) + } + if m.Style != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("style")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Style)) + } + if m.Explode != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("explode")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Explode)) + } + if m.AllowReserved != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("allowReserved")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.AllowReserved)) + } + if m.Schema != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("schema")) + info.Content = append(info.Content, m.Schema.ToRawInfo()) + } + if m.Example != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("example")) + info.Content = append(info.Content, m.Example.ToRawInfo()) + } + if m.Examples != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("examples")) + info.Content = append(info.Content, m.Examples.ToRawInfo()) + } + if m.Content != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("content")) + info.Content = append(info.Content, m.Content.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of HeaderOrReference suitable for JSON or YAML export. +func (m *HeaderOrReference) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // HeaderOrReference + // {Name:header Type:Header StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetHeader() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of HeadersOrReferences suitable for JSON or YAML export. +func (m *HeadersOrReferences) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Info suitable for JSON or YAML export. +func (m *Info) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("title")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Title)) + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.TermsOfService != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("termsOfService")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.TermsOfService)) + } + if m.Contact != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("contact")) + info.Content = append(info.Content, m.Contact.ToRawInfo()) + } + if m.License != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("license")) + info.Content = append(info.Content, m.License.ToRawInfo()) + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("version")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Version)) + if m.Summary != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("summary")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Summary)) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of ItemsItem suitable for JSON or YAML export. +func (m *ItemsItem) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if len(m.SchemaOrReference) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.SchemaOrReference { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("schemaOrReference")) + info.Content = append(info.Content, items) + } + return info +} + +// ToRawInfo returns a description of License suitable for JSON or YAML export. +func (m *License) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + if m.Url != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("url")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Url)) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Link suitable for JSON or YAML export. +func (m *Link) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.OperationRef != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("operationRef")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.OperationRef)) + } + if m.OperationId != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("operationId")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.OperationId)) + } + if m.Parameters != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("parameters")) + info.Content = append(info.Content, m.Parameters.ToRawInfo()) + } + if m.RequestBody != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("requestBody")) + info.Content = append(info.Content, m.RequestBody.ToRawInfo()) + } + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.Server != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("server")) + info.Content = append(info.Content, m.Server.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of LinkOrReference suitable for JSON or YAML export. +func (m *LinkOrReference) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // LinkOrReference + // {Name:link Type:Link StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetLink() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of LinksOrReferences suitable for JSON or YAML export. +func (m *LinksOrReferences) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of MediaType suitable for JSON or YAML export. +func (m *MediaType) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Schema != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("schema")) + info.Content = append(info.Content, m.Schema.ToRawInfo()) + } + if m.Example != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("example")) + info.Content = append(info.Content, m.Example.ToRawInfo()) + } + if m.Examples != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("examples")) + info.Content = append(info.Content, m.Examples.ToRawInfo()) + } + if m.Encoding != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("encoding")) + info.Content = append(info.Content, m.Encoding.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of MediaTypes suitable for JSON or YAML export. +func (m *MediaTypes) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of NamedAny suitable for JSON or YAML export. +func (m *NamedAny) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + if m.Value != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("value")) + info.Content = append(info.Content, m.Value.ToRawInfo()) + } + return info +} + +// ToRawInfo returns a description of NamedCallbackOrReference suitable for JSON or YAML export. +func (m *NamedCallbackOrReference) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:CallbackOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedEncoding suitable for JSON or YAML export. +func (m *NamedEncoding) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:Encoding StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedExampleOrReference suitable for JSON or YAML export. +func (m *NamedExampleOrReference) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:ExampleOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedHeaderOrReference suitable for JSON or YAML export. +func (m *NamedHeaderOrReference) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:HeaderOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedLinkOrReference suitable for JSON or YAML export. +func (m *NamedLinkOrReference) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:LinkOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedMediaType suitable for JSON or YAML export. +func (m *NamedMediaType) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:MediaType StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedParameterOrReference suitable for JSON or YAML export. +func (m *NamedParameterOrReference) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:ParameterOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedPathItem suitable for JSON or YAML export. +func (m *NamedPathItem) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:PathItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedRequestBodyOrReference suitable for JSON or YAML export. +func (m *NamedRequestBodyOrReference) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:RequestBodyOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedResponseOrReference suitable for JSON or YAML export. +func (m *NamedResponseOrReference) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:ResponseOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedSchemaOrReference suitable for JSON or YAML export. +func (m *NamedSchemaOrReference) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:SchemaOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedSecuritySchemeOrReference suitable for JSON or YAML export. +func (m *NamedSecuritySchemeOrReference) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:SecuritySchemeOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedServerVariable suitable for JSON or YAML export. +func (m *NamedServerVariable) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:ServerVariable StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedString suitable for JSON or YAML export. +func (m *NamedString) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + if m.Value != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("value")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Value)) + } + return info +} + +// ToRawInfo returns a description of NamedStringArray suitable for JSON or YAML export. +func (m *NamedStringArray) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + // &{Name:value Type:StringArray StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of OauthFlow suitable for JSON or YAML export. +func (m *OauthFlow) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AuthorizationUrl != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("authorizationUrl")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.AuthorizationUrl)) + } + if m.TokenUrl != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("tokenUrl")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.TokenUrl)) + } + if m.RefreshUrl != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("refreshUrl")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.RefreshUrl)) + } + if m.Scopes != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("scopes")) + info.Content = append(info.Content, m.Scopes.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of OauthFlows suitable for JSON or YAML export. +func (m *OauthFlows) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Implicit != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("implicit")) + info.Content = append(info.Content, m.Implicit.ToRawInfo()) + } + if m.Password != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("password")) + info.Content = append(info.Content, m.Password.ToRawInfo()) + } + if m.ClientCredentials != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("clientCredentials")) + info.Content = append(info.Content, m.ClientCredentials.ToRawInfo()) + } + if m.AuthorizationCode != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("authorizationCode")) + info.Content = append(info.Content, m.AuthorizationCode.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Object suitable for JSON or YAML export. +func (m *Object) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Operation suitable for JSON or YAML export. +func (m *Operation) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if len(m.Tags) != 0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("tags")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Tags)) + } + if m.Summary != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("summary")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Summary)) + } + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.ExternalDocs != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("externalDocs")) + info.Content = append(info.Content, m.ExternalDocs.ToRawInfo()) + } + if m.OperationId != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("operationId")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.OperationId)) + } + if len(m.Parameters) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.Parameters { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("parameters")) + info.Content = append(info.Content, items) + } + if m.RequestBody != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("requestBody")) + info.Content = append(info.Content, m.RequestBody.ToRawInfo()) + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("responses")) + info.Content = append(info.Content, m.Responses.ToRawInfo()) + if m.Callbacks != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("callbacks")) + info.Content = append(info.Content, m.Callbacks.ToRawInfo()) + } + if m.Deprecated != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("deprecated")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Deprecated)) + } + if len(m.Security) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.Security { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("security")) + info.Content = append(info.Content, items) + } + if len(m.Servers) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.Servers { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("servers")) + info.Content = append(info.Content, items) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Parameter suitable for JSON or YAML export. +func (m *Parameter) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("in")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.In)) + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.Required != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("required")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Required)) + } + if m.Deprecated != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("deprecated")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Deprecated)) + } + if m.AllowEmptyValue != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("allowEmptyValue")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.AllowEmptyValue)) + } + if m.Style != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("style")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Style)) + } + if m.Explode != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("explode")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Explode)) + } + if m.AllowReserved != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("allowReserved")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.AllowReserved)) + } + if m.Schema != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("schema")) + info.Content = append(info.Content, m.Schema.ToRawInfo()) + } + if m.Example != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("example")) + info.Content = append(info.Content, m.Example.ToRawInfo()) + } + if m.Examples != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("examples")) + info.Content = append(info.Content, m.Examples.ToRawInfo()) + } + if m.Content != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("content")) + info.Content = append(info.Content, m.Content.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of ParameterOrReference suitable for JSON or YAML export. +func (m *ParameterOrReference) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // ParameterOrReference + // {Name:parameter Type:Parameter StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetParameter() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of ParametersOrReferences suitable for JSON or YAML export. +func (m *ParametersOrReferences) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of PathItem suitable for JSON or YAML export. +func (m *PathItem) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.XRef != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("$ref")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.XRef)) + } + if m.Summary != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("summary")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Summary)) + } + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.Get != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("get")) + info.Content = append(info.Content, m.Get.ToRawInfo()) + } + if m.Put != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("put")) + info.Content = append(info.Content, m.Put.ToRawInfo()) + } + if m.Post != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("post")) + info.Content = append(info.Content, m.Post.ToRawInfo()) + } + if m.Delete != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("delete")) + info.Content = append(info.Content, m.Delete.ToRawInfo()) + } + if m.Options != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("options")) + info.Content = append(info.Content, m.Options.ToRawInfo()) + } + if m.Head != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("head")) + info.Content = append(info.Content, m.Head.ToRawInfo()) + } + if m.Patch != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("patch")) + info.Content = append(info.Content, m.Patch.ToRawInfo()) + } + if m.Trace != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("trace")) + info.Content = append(info.Content, m.Trace.ToRawInfo()) + } + if len(m.Servers) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.Servers { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("servers")) + info.Content = append(info.Content, items) + } + if len(m.Parameters) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.Parameters { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("parameters")) + info.Content = append(info.Content, items) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Paths suitable for JSON or YAML export. +func (m *Paths) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Path != nil { + for _, item := range m.Path { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Properties suitable for JSON or YAML export. +func (m *Properties) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Reference suitable for JSON or YAML export. +func (m *Reference) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("$ref")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.XRef)) + if m.Summary != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("summary")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Summary)) + } + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + return info +} + +// ToRawInfo returns a description of RequestBodiesOrReferences suitable for JSON or YAML export. +func (m *RequestBodiesOrReferences) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of RequestBody suitable for JSON or YAML export. +func (m *RequestBody) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("content")) + info.Content = append(info.Content, m.Content.ToRawInfo()) + if m.Required != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("required")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Required)) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of RequestBodyOrReference suitable for JSON or YAML export. +func (m *RequestBodyOrReference) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // RequestBodyOrReference + // {Name:requestBody Type:RequestBody StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetRequestBody() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of Response suitable for JSON or YAML export. +func (m *Response) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + if m.Headers != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("headers")) + info.Content = append(info.Content, m.Headers.ToRawInfo()) + } + if m.Content != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("content")) + info.Content = append(info.Content, m.Content.ToRawInfo()) + } + if m.Links != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("links")) + info.Content = append(info.Content, m.Links.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of ResponseOrReference suitable for JSON or YAML export. +func (m *ResponseOrReference) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // ResponseOrReference + // {Name:response Type:Response StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetResponse() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of Responses suitable for JSON or YAML export. +func (m *Responses) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Default != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("default")) + info.Content = append(info.Content, m.Default.ToRawInfo()) + } + if m.ResponseOrReference != nil { + for _, item := range m.ResponseOrReference { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of ResponsesOrReferences suitable for JSON or YAML export. +func (m *ResponsesOrReferences) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Schema suitable for JSON or YAML export. +func (m *Schema) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Nullable != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("nullable")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Nullable)) + } + if m.Discriminator != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("discriminator")) + info.Content = append(info.Content, m.Discriminator.ToRawInfo()) + } + if m.ReadOnly != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("readOnly")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ReadOnly)) + } + if m.WriteOnly != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("writeOnly")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.WriteOnly)) + } + if m.Xml != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("xml")) + info.Content = append(info.Content, m.Xml.ToRawInfo()) + } + if m.ExternalDocs != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("externalDocs")) + info.Content = append(info.Content, m.ExternalDocs.ToRawInfo()) + } + if m.Example != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("example")) + info.Content = append(info.Content, m.Example.ToRawInfo()) + } + if m.Deprecated != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("deprecated")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Deprecated)) + } + if m.Title != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("title")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Title)) + } + if m.MultipleOf != 0.0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("multipleOf")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.MultipleOf)) + } + if m.Maximum != 0.0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("maximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Maximum)) + } + if m.ExclusiveMaximum != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMaximum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMaximum)) + } + if m.Minimum != 0.0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("minimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForFloat(m.Minimum)) + } + if m.ExclusiveMinimum != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("exclusiveMinimum")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.ExclusiveMinimum)) + } + if m.MaxLength != 0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxLength)) + } + if m.MinLength != 0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("minLength")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinLength)) + } + if m.Pattern != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("pattern")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Pattern)) + } + if m.MaxItems != 0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxItems)) + } + if m.MinItems != 0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("minItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinItems)) + } + if m.UniqueItems != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("uniqueItems")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.UniqueItems)) + } + if m.MaxProperties != 0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("maxProperties")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MaxProperties)) + } + if m.MinProperties != 0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("minProperties")) + info.Content = append(info.Content, compiler.NewScalarNodeForInt(m.MinProperties)) + } + if len(m.Required) != 0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("required")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Required)) + } + if len(m.Enum) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.Enum { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("enum")) + info.Content = append(info.Content, items) + } + if m.Type != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) + } + if len(m.AllOf) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.AllOf { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("allOf")) + info.Content = append(info.Content, items) + } + if len(m.OneOf) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.OneOf { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("oneOf")) + info.Content = append(info.Content, items) + } + if len(m.AnyOf) != 0 { + items := compiler.NewSequenceNode() + for _, item := range m.AnyOf { + items.Content = append(items.Content, item.ToRawInfo()) + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("anyOf")) + info.Content = append(info.Content, items) + } + if m.Not != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("not")) + info.Content = append(info.Content, m.Not.ToRawInfo()) + } + if m.Items != nil { + items := compiler.NewSequenceNode() + for _, item := range m.Items.SchemaOrReference { + items.Content = append(items.Content, item.ToRawInfo()) + } + if len(items.Content) == 1 { + items = items.Content[0] + } + info.Content = append(info.Content, compiler.NewScalarNodeForString("items")) + info.Content = append(info.Content, items) + } + if m.Properties != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("properties")) + info.Content = append(info.Content, m.Properties.ToRawInfo()) + } + if m.AdditionalProperties != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("additionalProperties")) + info.Content = append(info.Content, m.AdditionalProperties.ToRawInfo()) + } + if m.Default != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("default")) + info.Content = append(info.Content, m.Default.ToRawInfo()) + } + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.Format != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("format")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Format)) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of SchemaOrReference suitable for JSON or YAML export. +func (m *SchemaOrReference) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // SchemaOrReference + // {Name:schema Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetSchema() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of SchemasOrReferences suitable for JSON or YAML export. +func (m *SchemasOrReferences) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of SecurityRequirement suitable for JSON or YAML export. +func (m *SecurityRequirement) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of SecurityScheme suitable for JSON or YAML export. +func (m *SecurityScheme) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("type")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Type)) + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + if m.In != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("in")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.In)) + } + if m.Scheme != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("scheme")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Scheme)) + } + if m.BearerFormat != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("bearerFormat")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.BearerFormat)) + } + if m.Flows != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("flows")) + info.Content = append(info.Content, m.Flows.ToRawInfo()) + } + if m.OpenIdConnectUrl != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("openIdConnectUrl")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.OpenIdConnectUrl)) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of SecuritySchemeOrReference suitable for JSON or YAML export. +func (m *SecuritySchemeOrReference) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // SecuritySchemeOrReference + // {Name:securityScheme Type:SecurityScheme StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetSecurityScheme() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of SecuritySchemesOrReferences suitable for JSON or YAML export. +func (m *SecuritySchemesOrReferences) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Server suitable for JSON or YAML export. +func (m *Server) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("url")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Url)) + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.Variables != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("variables")) + info.Content = append(info.Content, m.Variables.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of ServerVariable suitable for JSON or YAML export. +func (m *ServerVariable) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if len(m.Enum) != 0 { + info.Content = append(info.Content, compiler.NewScalarNodeForString("enum")) + info.Content = append(info.Content, compiler.NewSequenceNodeForStringArray(m.Enum)) + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("default")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Default)) + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of ServerVariables suitable for JSON or YAML export. +func (m *ServerVariables) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of SpecificationExtension suitable for JSON or YAML export. +func (m *SpecificationExtension) ToRawInfo() *yaml.Node { + // ONE OF WRAPPER + // SpecificationExtension + // {Name:number Type:float StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v0, ok := m.GetOneof().(*SpecificationExtension_Number); ok { + return compiler.NewScalarNodeForFloat(v0.Number) + } + // {Name:boolean Type:bool StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v1, ok := m.GetOneof().(*SpecificationExtension_Boolean); ok { + return compiler.NewScalarNodeForBool(v1.Boolean) + } + // {Name:string Type:string StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v2, ok := m.GetOneof().(*SpecificationExtension_String_); ok { + return compiler.NewScalarNodeForString(v2.String_) + } + return compiler.NewNullNode() +} + +// ToRawInfo returns a description of StringArray suitable for JSON or YAML export. +func (m *StringArray) ToRawInfo() *yaml.Node { + return compiler.NewSequenceNodeForStringArray(m.Value) +} + +// ToRawInfo returns a description of Strings suitable for JSON or YAML export. +func (m *Strings) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + // &{Name:additionalProperties Type:NamedString StringEnumValues:[] MapType:string Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Tag suitable for JSON or YAML export. +func (m *Tag) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + // always include this required field. + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + if m.Description != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("description")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Description)) + } + if m.ExternalDocs != nil { + info.Content = append(info.Content, compiler.NewScalarNodeForString("externalDocs")) + info.Content = append(info.Content, m.ExternalDocs.ToRawInfo()) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +// ToRawInfo returns a description of Xml suitable for JSON or YAML export. +func (m *Xml) ToRawInfo() *yaml.Node { + info := compiler.NewMappingNode() + if m == nil { + return info + } + if m.Name != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("name")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Name)) + } + if m.Namespace != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("namespace")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Namespace)) + } + if m.Prefix != "" { + info.Content = append(info.Content, compiler.NewScalarNodeForString("prefix")) + info.Content = append(info.Content, compiler.NewScalarNodeForString(m.Prefix)) + } + if m.Attribute != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("attribute")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Attribute)) + } + if m.Wrapped != false { + info.Content = append(info.Content, compiler.NewScalarNodeForString("wrapped")) + info.Content = append(info.Content, compiler.NewScalarNodeForBool(m.Wrapped)) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info.Content = append(info.Content, compiler.NewScalarNodeForString(item.Name)) + info.Content = append(info.Content, item.Value.ToRawInfo()) + } + } + return info +} + +var ( + pattern0 = regexp.MustCompile("^") + pattern1 = regexp.MustCompile("^x-") + pattern2 = regexp.MustCompile("^/") + pattern3 = regexp.MustCompile("^([0-9X]{3})$") +) diff --git a/vendor/github.com/google/gnostic/openapiv3/OpenAPIv3.pb.go b/vendor/github.com/google/gnostic/openapiv3/OpenAPIv3.pb.go new file mode 100644 index 00000000..499e7f93 --- /dev/null +++ b/vendor/github.com/google/gnostic/openapiv3/OpenAPIv3.pb.go @@ -0,0 +1,8053 @@ +// Copyright 2020 Google LLC. All Rights Reserved. +// +// 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. + +// THIS FILE IS AUTOMATICALLY GENERATED. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.18.1 +// source: openapiv3/OpenAPIv3.proto + +package openapi_v3 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type AdditionalPropertiesItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *AdditionalPropertiesItem_SchemaOrReference + // *AdditionalPropertiesItem_Boolean + Oneof isAdditionalPropertiesItem_Oneof `protobuf_oneof:"oneof"` +} + +func (x *AdditionalPropertiesItem) Reset() { + *x = AdditionalPropertiesItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AdditionalPropertiesItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AdditionalPropertiesItem) ProtoMessage() {} + +func (x *AdditionalPropertiesItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AdditionalPropertiesItem.ProtoReflect.Descriptor instead. +func (*AdditionalPropertiesItem) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{0} +} + +func (m *AdditionalPropertiesItem) GetOneof() isAdditionalPropertiesItem_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *AdditionalPropertiesItem) GetSchemaOrReference() *SchemaOrReference { + if x, ok := x.GetOneof().(*AdditionalPropertiesItem_SchemaOrReference); ok { + return x.SchemaOrReference + } + return nil +} + +func (x *AdditionalPropertiesItem) GetBoolean() bool { + if x, ok := x.GetOneof().(*AdditionalPropertiesItem_Boolean); ok { + return x.Boolean + } + return false +} + +type isAdditionalPropertiesItem_Oneof interface { + isAdditionalPropertiesItem_Oneof() +} + +type AdditionalPropertiesItem_SchemaOrReference struct { + SchemaOrReference *SchemaOrReference `protobuf:"bytes,1,opt,name=schema_or_reference,json=schemaOrReference,proto3,oneof"` +} + +type AdditionalPropertiesItem_Boolean struct { + Boolean bool `protobuf:"varint,2,opt,name=boolean,proto3,oneof"` +} + +func (*AdditionalPropertiesItem_SchemaOrReference) isAdditionalPropertiesItem_Oneof() {} + +func (*AdditionalPropertiesItem_Boolean) isAdditionalPropertiesItem_Oneof() {} + +type Any struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value *anypb.Any `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Yaml string `protobuf:"bytes,2,opt,name=yaml,proto3" json:"yaml,omitempty"` +} + +func (x *Any) Reset() { + *x = Any{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Any) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Any) ProtoMessage() {} + +func (x *Any) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Any.ProtoReflect.Descriptor instead. +func (*Any) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{1} +} + +func (x *Any) GetValue() *anypb.Any { + if x != nil { + return x.Value + } + return nil +} + +func (x *Any) GetYaml() string { + if x != nil { + return x.Yaml + } + return "" +} + +type AnyOrExpression struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *AnyOrExpression_Any + // *AnyOrExpression_Expression + Oneof isAnyOrExpression_Oneof `protobuf_oneof:"oneof"` +} + +func (x *AnyOrExpression) Reset() { + *x = AnyOrExpression{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnyOrExpression) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnyOrExpression) ProtoMessage() {} + +func (x *AnyOrExpression) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnyOrExpression.ProtoReflect.Descriptor instead. +func (*AnyOrExpression) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{2} +} + +func (m *AnyOrExpression) GetOneof() isAnyOrExpression_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *AnyOrExpression) GetAny() *Any { + if x, ok := x.GetOneof().(*AnyOrExpression_Any); ok { + return x.Any + } + return nil +} + +func (x *AnyOrExpression) GetExpression() *Expression { + if x, ok := x.GetOneof().(*AnyOrExpression_Expression); ok { + return x.Expression + } + return nil +} + +type isAnyOrExpression_Oneof interface { + isAnyOrExpression_Oneof() +} + +type AnyOrExpression_Any struct { + Any *Any `protobuf:"bytes,1,opt,name=any,proto3,oneof"` +} + +type AnyOrExpression_Expression struct { + Expression *Expression `protobuf:"bytes,2,opt,name=expression,proto3,oneof"` +} + +func (*AnyOrExpression_Any) isAnyOrExpression_Oneof() {} + +func (*AnyOrExpression_Expression) isAnyOrExpression_Oneof() {} + +// A map of possible out-of band callbacks related to the parent operation. Each value in the map is a Path Item Object that describes a set of requests that may be initiated by the API provider and the expected responses. The key value used to identify the callback object is an expression, evaluated at runtime, that identifies a URL to use for the callback operation. +type Callback struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path []*NamedPathItem `protobuf:"bytes,1,rep,name=path,proto3" json:"path,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,2,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Callback) Reset() { + *x = Callback{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Callback) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Callback) ProtoMessage() {} + +func (x *Callback) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Callback.ProtoReflect.Descriptor instead. +func (*Callback) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{3} +} + +func (x *Callback) GetPath() []*NamedPathItem { + if x != nil { + return x.Path + } + return nil +} + +func (x *Callback) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type CallbackOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *CallbackOrReference_Callback + // *CallbackOrReference_Reference + Oneof isCallbackOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (x *CallbackOrReference) Reset() { + *x = CallbackOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CallbackOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CallbackOrReference) ProtoMessage() {} + +func (x *CallbackOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CallbackOrReference.ProtoReflect.Descriptor instead. +func (*CallbackOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{4} +} + +func (m *CallbackOrReference) GetOneof() isCallbackOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *CallbackOrReference) GetCallback() *Callback { + if x, ok := x.GetOneof().(*CallbackOrReference_Callback); ok { + return x.Callback + } + return nil +} + +func (x *CallbackOrReference) GetReference() *Reference { + if x, ok := x.GetOneof().(*CallbackOrReference_Reference); ok { + return x.Reference + } + return nil +} + +type isCallbackOrReference_Oneof interface { + isCallbackOrReference_Oneof() +} + +type CallbackOrReference_Callback struct { + Callback *Callback `protobuf:"bytes,1,opt,name=callback,proto3,oneof"` +} + +type CallbackOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,proto3,oneof"` +} + +func (*CallbackOrReference_Callback) isCallbackOrReference_Oneof() {} + +func (*CallbackOrReference_Reference) isCallbackOrReference_Oneof() {} + +type CallbacksOrReferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedCallbackOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *CallbacksOrReferences) Reset() { + *x = CallbacksOrReferences{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CallbacksOrReferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CallbacksOrReferences) ProtoMessage() {} + +func (x *CallbacksOrReferences) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CallbacksOrReferences.ProtoReflect.Descriptor instead. +func (*CallbacksOrReferences) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{5} +} + +func (x *CallbacksOrReferences) GetAdditionalProperties() []*NamedCallbackOrReference { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// Holds a set of reusable objects for different aspects of the OAS. All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. +type Components struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Schemas *SchemasOrReferences `protobuf:"bytes,1,opt,name=schemas,proto3" json:"schemas,omitempty"` + Responses *ResponsesOrReferences `protobuf:"bytes,2,opt,name=responses,proto3" json:"responses,omitempty"` + Parameters *ParametersOrReferences `protobuf:"bytes,3,opt,name=parameters,proto3" json:"parameters,omitempty"` + Examples *ExamplesOrReferences `protobuf:"bytes,4,opt,name=examples,proto3" json:"examples,omitempty"` + RequestBodies *RequestBodiesOrReferences `protobuf:"bytes,5,opt,name=request_bodies,json=requestBodies,proto3" json:"request_bodies,omitempty"` + Headers *HeadersOrReferences `protobuf:"bytes,6,opt,name=headers,proto3" json:"headers,omitempty"` + SecuritySchemes *SecuritySchemesOrReferences `protobuf:"bytes,7,opt,name=security_schemes,json=securitySchemes,proto3" json:"security_schemes,omitempty"` + Links *LinksOrReferences `protobuf:"bytes,8,opt,name=links,proto3" json:"links,omitempty"` + Callbacks *CallbacksOrReferences `protobuf:"bytes,9,opt,name=callbacks,proto3" json:"callbacks,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,10,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Components) Reset() { + *x = Components{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Components) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Components) ProtoMessage() {} + +func (x *Components) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Components.ProtoReflect.Descriptor instead. +func (*Components) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{6} +} + +func (x *Components) GetSchemas() *SchemasOrReferences { + if x != nil { + return x.Schemas + } + return nil +} + +func (x *Components) GetResponses() *ResponsesOrReferences { + if x != nil { + return x.Responses + } + return nil +} + +func (x *Components) GetParameters() *ParametersOrReferences { + if x != nil { + return x.Parameters + } + return nil +} + +func (x *Components) GetExamples() *ExamplesOrReferences { + if x != nil { + return x.Examples + } + return nil +} + +func (x *Components) GetRequestBodies() *RequestBodiesOrReferences { + if x != nil { + return x.RequestBodies + } + return nil +} + +func (x *Components) GetHeaders() *HeadersOrReferences { + if x != nil { + return x.Headers + } + return nil +} + +func (x *Components) GetSecuritySchemes() *SecuritySchemesOrReferences { + if x != nil { + return x.SecuritySchemes + } + return nil +} + +func (x *Components) GetLinks() *LinksOrReferences { + if x != nil { + return x.Links + } + return nil +} + +func (x *Components) GetCallbacks() *CallbacksOrReferences { + if x != nil { + return x.Callbacks + } + return nil +} + +func (x *Components) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +// Contact information for the exposed API. +type Contact struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,4,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Contact) Reset() { + *x = Contact{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Contact) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Contact) ProtoMessage() {} + +func (x *Contact) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Contact.ProtoReflect.Descriptor instead. +func (*Contact) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{7} +} + +func (x *Contact) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Contact) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Contact) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *Contact) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type DefaultType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *DefaultType_Number + // *DefaultType_Boolean + // *DefaultType_String_ + Oneof isDefaultType_Oneof `protobuf_oneof:"oneof"` +} + +func (x *DefaultType) Reset() { + *x = DefaultType{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DefaultType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DefaultType) ProtoMessage() {} + +func (x *DefaultType) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DefaultType.ProtoReflect.Descriptor instead. +func (*DefaultType) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{8} +} + +func (m *DefaultType) GetOneof() isDefaultType_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *DefaultType) GetNumber() float64 { + if x, ok := x.GetOneof().(*DefaultType_Number); ok { + return x.Number + } + return 0 +} + +func (x *DefaultType) GetBoolean() bool { + if x, ok := x.GetOneof().(*DefaultType_Boolean); ok { + return x.Boolean + } + return false +} + +func (x *DefaultType) GetString_() string { + if x, ok := x.GetOneof().(*DefaultType_String_); ok { + return x.String_ + } + return "" +} + +type isDefaultType_Oneof interface { + isDefaultType_Oneof() +} + +type DefaultType_Number struct { + Number float64 `protobuf:"fixed64,1,opt,name=number,proto3,oneof"` +} + +type DefaultType_Boolean struct { + Boolean bool `protobuf:"varint,2,opt,name=boolean,proto3,oneof"` +} + +type DefaultType_String_ struct { + String_ string `protobuf:"bytes,3,opt,name=string,proto3,oneof"` +} + +func (*DefaultType_Number) isDefaultType_Oneof() {} + +func (*DefaultType_Boolean) isDefaultType_Oneof() {} + +func (*DefaultType_String_) isDefaultType_Oneof() {} + +// When request bodies or response payloads may be one of a number of different schemas, a `discriminator` object can be used to aid in serialization, deserialization, and validation. The discriminator is a specific object in a schema which is used to inform the consumer of the specification of an alternative schema based on the value associated with it. When using the discriminator, _inline_ schemas will not be considered. +type Discriminator struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PropertyName string `protobuf:"bytes,1,opt,name=property_name,json=propertyName,proto3" json:"property_name,omitempty"` + Mapping *Strings `protobuf:"bytes,2,opt,name=mapping,proto3" json:"mapping,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,3,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Discriminator) Reset() { + *x = Discriminator{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Discriminator) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Discriminator) ProtoMessage() {} + +func (x *Discriminator) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Discriminator.ProtoReflect.Descriptor instead. +func (*Discriminator) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{9} +} + +func (x *Discriminator) GetPropertyName() string { + if x != nil { + return x.PropertyName + } + return "" +} + +func (x *Discriminator) GetMapping() *Strings { + if x != nil { + return x.Mapping + } + return nil +} + +func (x *Discriminator) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type Document struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Openapi string `protobuf:"bytes,1,opt,name=openapi,proto3" json:"openapi,omitempty"` + Info *Info `protobuf:"bytes,2,opt,name=info,proto3" json:"info,omitempty"` + Servers []*Server `protobuf:"bytes,3,rep,name=servers,proto3" json:"servers,omitempty"` + Paths *Paths `protobuf:"bytes,4,opt,name=paths,proto3" json:"paths,omitempty"` + Components *Components `protobuf:"bytes,5,opt,name=components,proto3" json:"components,omitempty"` + Security []*SecurityRequirement `protobuf:"bytes,6,rep,name=security,proto3" json:"security,omitempty"` + Tags []*Tag `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,8,opt,name=external_docs,json=externalDocs,proto3" json:"external_docs,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,9,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Document) Reset() { + *x = Document{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Document) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Document) ProtoMessage() {} + +func (x *Document) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Document.ProtoReflect.Descriptor instead. +func (*Document) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{10} +} + +func (x *Document) GetOpenapi() string { + if x != nil { + return x.Openapi + } + return "" +} + +func (x *Document) GetInfo() *Info { + if x != nil { + return x.Info + } + return nil +} + +func (x *Document) GetServers() []*Server { + if x != nil { + return x.Servers + } + return nil +} + +func (x *Document) GetPaths() *Paths { + if x != nil { + return x.Paths + } + return nil +} + +func (x *Document) GetComponents() *Components { + if x != nil { + return x.Components + } + return nil +} + +func (x *Document) GetSecurity() []*SecurityRequirement { + if x != nil { + return x.Security + } + return nil +} + +func (x *Document) GetTags() []*Tag { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Document) GetExternalDocs() *ExternalDocs { + if x != nil { + return x.ExternalDocs + } + return nil +} + +func (x *Document) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +// A single encoding definition applied to a single schema property. +type Encoding struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContentType string `protobuf:"bytes,1,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"` + Headers *HeadersOrReferences `protobuf:"bytes,2,opt,name=headers,proto3" json:"headers,omitempty"` + Style string `protobuf:"bytes,3,opt,name=style,proto3" json:"style,omitempty"` + Explode bool `protobuf:"varint,4,opt,name=explode,proto3" json:"explode,omitempty"` + AllowReserved bool `protobuf:"varint,5,opt,name=allow_reserved,json=allowReserved,proto3" json:"allow_reserved,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,6,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Encoding) Reset() { + *x = Encoding{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Encoding) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Encoding) ProtoMessage() {} + +func (x *Encoding) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Encoding.ProtoReflect.Descriptor instead. +func (*Encoding) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{11} +} + +func (x *Encoding) GetContentType() string { + if x != nil { + return x.ContentType + } + return "" +} + +func (x *Encoding) GetHeaders() *HeadersOrReferences { + if x != nil { + return x.Headers + } + return nil +} + +func (x *Encoding) GetStyle() string { + if x != nil { + return x.Style + } + return "" +} + +func (x *Encoding) GetExplode() bool { + if x != nil { + return x.Explode + } + return false +} + +func (x *Encoding) GetAllowReserved() bool { + if x != nil { + return x.AllowReserved + } + return false +} + +func (x *Encoding) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type Encodings struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedEncoding `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *Encodings) Reset() { + *x = Encodings{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Encodings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Encodings) ProtoMessage() {} + +func (x *Encodings) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Encodings.ProtoReflect.Descriptor instead. +func (*Encodings) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{12} +} + +func (x *Encodings) GetAdditionalProperties() []*NamedEncoding { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +type Example struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Value *Any `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + ExternalValue string `protobuf:"bytes,4,opt,name=external_value,json=externalValue,proto3" json:"external_value,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,5,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Example) Reset() { + *x = Example{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Example) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Example) ProtoMessage() {} + +func (x *Example) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Example.ProtoReflect.Descriptor instead. +func (*Example) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{13} +} + +func (x *Example) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *Example) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Example) GetValue() *Any { + if x != nil { + return x.Value + } + return nil +} + +func (x *Example) GetExternalValue() string { + if x != nil { + return x.ExternalValue + } + return "" +} + +func (x *Example) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type ExampleOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *ExampleOrReference_Example + // *ExampleOrReference_Reference + Oneof isExampleOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (x *ExampleOrReference) Reset() { + *x = ExampleOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExampleOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExampleOrReference) ProtoMessage() {} + +func (x *ExampleOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExampleOrReference.ProtoReflect.Descriptor instead. +func (*ExampleOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{14} +} + +func (m *ExampleOrReference) GetOneof() isExampleOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *ExampleOrReference) GetExample() *Example { + if x, ok := x.GetOneof().(*ExampleOrReference_Example); ok { + return x.Example + } + return nil +} + +func (x *ExampleOrReference) GetReference() *Reference { + if x, ok := x.GetOneof().(*ExampleOrReference_Reference); ok { + return x.Reference + } + return nil +} + +type isExampleOrReference_Oneof interface { + isExampleOrReference_Oneof() +} + +type ExampleOrReference_Example struct { + Example *Example `protobuf:"bytes,1,opt,name=example,proto3,oneof"` +} + +type ExampleOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,proto3,oneof"` +} + +func (*ExampleOrReference_Example) isExampleOrReference_Oneof() {} + +func (*ExampleOrReference_Reference) isExampleOrReference_Oneof() {} + +type ExamplesOrReferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedExampleOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *ExamplesOrReferences) Reset() { + *x = ExamplesOrReferences{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExamplesOrReferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExamplesOrReferences) ProtoMessage() {} + +func (x *ExamplesOrReferences) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExamplesOrReferences.ProtoReflect.Descriptor instead. +func (*ExamplesOrReferences) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{15} +} + +func (x *ExamplesOrReferences) GetAdditionalProperties() []*NamedExampleOrReference { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +type Expression struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedAny `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *Expression) Reset() { + *x = Expression{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Expression) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Expression) ProtoMessage() {} + +func (x *Expression) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Expression.ProtoReflect.Descriptor instead. +func (*Expression) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{16} +} + +func (x *Expression) GetAdditionalProperties() []*NamedAny { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// Allows referencing an external resource for extended documentation. +type ExternalDocs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,3,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *ExternalDocs) Reset() { + *x = ExternalDocs{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExternalDocs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExternalDocs) ProtoMessage() {} + +func (x *ExternalDocs) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExternalDocs.ProtoReflect.Descriptor instead. +func (*ExternalDocs) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{17} +} + +func (x *ExternalDocs) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ExternalDocs) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *ExternalDocs) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +// The Header Object follows the structure of the Parameter Object with the following changes: 1. `name` MUST NOT be specified, it is given in the corresponding `headers` map. 1. `in` MUST NOT be specified, it is implicitly in `header`. 1. All traits that are affected by the location MUST be applicable to a location of `header` (for example, `style`). +type Header struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + Required bool `protobuf:"varint,2,opt,name=required,proto3" json:"required,omitempty"` + Deprecated bool `protobuf:"varint,3,opt,name=deprecated,proto3" json:"deprecated,omitempty"` + AllowEmptyValue bool `protobuf:"varint,4,opt,name=allow_empty_value,json=allowEmptyValue,proto3" json:"allow_empty_value,omitempty"` + Style string `protobuf:"bytes,5,opt,name=style,proto3" json:"style,omitempty"` + Explode bool `protobuf:"varint,6,opt,name=explode,proto3" json:"explode,omitempty"` + AllowReserved bool `protobuf:"varint,7,opt,name=allow_reserved,json=allowReserved,proto3" json:"allow_reserved,omitempty"` + Schema *SchemaOrReference `protobuf:"bytes,8,opt,name=schema,proto3" json:"schema,omitempty"` + Example *Any `protobuf:"bytes,9,opt,name=example,proto3" json:"example,omitempty"` + Examples *ExamplesOrReferences `protobuf:"bytes,10,opt,name=examples,proto3" json:"examples,omitempty"` + Content *MediaTypes `protobuf:"bytes,11,opt,name=content,proto3" json:"content,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,12,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Header) Reset() { + *x = Header{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Header) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Header) ProtoMessage() {} + +func (x *Header) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Header.ProtoReflect.Descriptor instead. +func (*Header) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{18} +} + +func (x *Header) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Header) GetRequired() bool { + if x != nil { + return x.Required + } + return false +} + +func (x *Header) GetDeprecated() bool { + if x != nil { + return x.Deprecated + } + return false +} + +func (x *Header) GetAllowEmptyValue() bool { + if x != nil { + return x.AllowEmptyValue + } + return false +} + +func (x *Header) GetStyle() string { + if x != nil { + return x.Style + } + return "" +} + +func (x *Header) GetExplode() bool { + if x != nil { + return x.Explode + } + return false +} + +func (x *Header) GetAllowReserved() bool { + if x != nil { + return x.AllowReserved + } + return false +} + +func (x *Header) GetSchema() *SchemaOrReference { + if x != nil { + return x.Schema + } + return nil +} + +func (x *Header) GetExample() *Any { + if x != nil { + return x.Example + } + return nil +} + +func (x *Header) GetExamples() *ExamplesOrReferences { + if x != nil { + return x.Examples + } + return nil +} + +func (x *Header) GetContent() *MediaTypes { + if x != nil { + return x.Content + } + return nil +} + +func (x *Header) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type HeaderOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *HeaderOrReference_Header + // *HeaderOrReference_Reference + Oneof isHeaderOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (x *HeaderOrReference) Reset() { + *x = HeaderOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HeaderOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeaderOrReference) ProtoMessage() {} + +func (x *HeaderOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeaderOrReference.ProtoReflect.Descriptor instead. +func (*HeaderOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{19} +} + +func (m *HeaderOrReference) GetOneof() isHeaderOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *HeaderOrReference) GetHeader() *Header { + if x, ok := x.GetOneof().(*HeaderOrReference_Header); ok { + return x.Header + } + return nil +} + +func (x *HeaderOrReference) GetReference() *Reference { + if x, ok := x.GetOneof().(*HeaderOrReference_Reference); ok { + return x.Reference + } + return nil +} + +type isHeaderOrReference_Oneof interface { + isHeaderOrReference_Oneof() +} + +type HeaderOrReference_Header struct { + Header *Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"` +} + +type HeaderOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,proto3,oneof"` +} + +func (*HeaderOrReference_Header) isHeaderOrReference_Oneof() {} + +func (*HeaderOrReference_Reference) isHeaderOrReference_Oneof() {} + +type HeadersOrReferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedHeaderOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *HeadersOrReferences) Reset() { + *x = HeadersOrReferences{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HeadersOrReferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeadersOrReferences) ProtoMessage() {} + +func (x *HeadersOrReferences) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HeadersOrReferences.ProtoReflect.Descriptor instead. +func (*HeadersOrReferences) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{20} +} + +func (x *HeadersOrReferences) GetAdditionalProperties() []*NamedHeaderOrReference { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// The object provides metadata about the API. The metadata MAY be used by the clients if needed, and MAY be presented in editing or documentation generation tools for convenience. +type Info struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + TermsOfService string `protobuf:"bytes,3,opt,name=terms_of_service,json=termsOfService,proto3" json:"terms_of_service,omitempty"` + Contact *Contact `protobuf:"bytes,4,opt,name=contact,proto3" json:"contact,omitempty"` + License *License `protobuf:"bytes,5,opt,name=license,proto3" json:"license,omitempty"` + Version string `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,7,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` + Summary string `protobuf:"bytes,8,opt,name=summary,proto3" json:"summary,omitempty"` +} + +func (x *Info) Reset() { + *x = Info{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Info) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Info) ProtoMessage() {} + +func (x *Info) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Info.ProtoReflect.Descriptor instead. +func (*Info) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{21} +} + +func (x *Info) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Info) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Info) GetTermsOfService() string { + if x != nil { + return x.TermsOfService + } + return "" +} + +func (x *Info) GetContact() *Contact { + if x != nil { + return x.Contact + } + return nil +} + +func (x *Info) GetLicense() *License { + if x != nil { + return x.License + } + return nil +} + +func (x *Info) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *Info) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +func (x *Info) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +type ItemsItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SchemaOrReference []*SchemaOrReference `protobuf:"bytes,1,rep,name=schema_or_reference,json=schemaOrReference,proto3" json:"schema_or_reference,omitempty"` +} + +func (x *ItemsItem) Reset() { + *x = ItemsItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ItemsItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ItemsItem) ProtoMessage() {} + +func (x *ItemsItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ItemsItem.ProtoReflect.Descriptor instead. +func (*ItemsItem) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{22} +} + +func (x *ItemsItem) GetSchemaOrReference() []*SchemaOrReference { + if x != nil { + return x.SchemaOrReference + } + return nil +} + +// License information for the exposed API. +type License struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,3,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *License) Reset() { + *x = License{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *License) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*License) ProtoMessage() {} + +func (x *License) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use License.ProtoReflect.Descriptor instead. +func (*License) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{23} +} + +func (x *License) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *License) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *License) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +// The `Link object` represents a possible design-time link for a response. The presence of a link does not guarantee the caller's ability to successfully invoke it, rather it provides a known relationship and traversal mechanism between responses and other operations. Unlike _dynamic_ links (i.e. links provided **in** the response payload), the OAS linking mechanism does not require link information in the runtime response. For computing links, and providing instructions to execute them, a runtime expression is used for accessing values in an operation and using them as parameters while invoking the linked operation. +type Link struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OperationRef string `protobuf:"bytes,1,opt,name=operation_ref,json=operationRef,proto3" json:"operation_ref,omitempty"` + OperationId string `protobuf:"bytes,2,opt,name=operation_id,json=operationId,proto3" json:"operation_id,omitempty"` + Parameters *AnyOrExpression `protobuf:"bytes,3,opt,name=parameters,proto3" json:"parameters,omitempty"` + RequestBody *AnyOrExpression `protobuf:"bytes,4,opt,name=request_body,json=requestBody,proto3" json:"request_body,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + Server *Server `protobuf:"bytes,6,opt,name=server,proto3" json:"server,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,7,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Link) Reset() { + *x = Link{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Link) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Link) ProtoMessage() {} + +func (x *Link) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Link.ProtoReflect.Descriptor instead. +func (*Link) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{24} +} + +func (x *Link) GetOperationRef() string { + if x != nil { + return x.OperationRef + } + return "" +} + +func (x *Link) GetOperationId() string { + if x != nil { + return x.OperationId + } + return "" +} + +func (x *Link) GetParameters() *AnyOrExpression { + if x != nil { + return x.Parameters + } + return nil +} + +func (x *Link) GetRequestBody() *AnyOrExpression { + if x != nil { + return x.RequestBody + } + return nil +} + +func (x *Link) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Link) GetServer() *Server { + if x != nil { + return x.Server + } + return nil +} + +func (x *Link) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type LinkOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *LinkOrReference_Link + // *LinkOrReference_Reference + Oneof isLinkOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (x *LinkOrReference) Reset() { + *x = LinkOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinkOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkOrReference) ProtoMessage() {} + +func (x *LinkOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinkOrReference.ProtoReflect.Descriptor instead. +func (*LinkOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{25} +} + +func (m *LinkOrReference) GetOneof() isLinkOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *LinkOrReference) GetLink() *Link { + if x, ok := x.GetOneof().(*LinkOrReference_Link); ok { + return x.Link + } + return nil +} + +func (x *LinkOrReference) GetReference() *Reference { + if x, ok := x.GetOneof().(*LinkOrReference_Reference); ok { + return x.Reference + } + return nil +} + +type isLinkOrReference_Oneof interface { + isLinkOrReference_Oneof() +} + +type LinkOrReference_Link struct { + Link *Link `protobuf:"bytes,1,opt,name=link,proto3,oneof"` +} + +type LinkOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,proto3,oneof"` +} + +func (*LinkOrReference_Link) isLinkOrReference_Oneof() {} + +func (*LinkOrReference_Reference) isLinkOrReference_Oneof() {} + +type LinksOrReferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedLinkOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *LinksOrReferences) Reset() { + *x = LinksOrReferences{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinksOrReferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinksOrReferences) ProtoMessage() {} + +func (x *LinksOrReferences) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinksOrReferences.ProtoReflect.Descriptor instead. +func (*LinksOrReferences) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{26} +} + +func (x *LinksOrReferences) GetAdditionalProperties() []*NamedLinkOrReference { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// Each Media Type Object provides schema and examples for the media type identified by its key. +type MediaType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Schema *SchemaOrReference `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"` + Example *Any `protobuf:"bytes,2,opt,name=example,proto3" json:"example,omitempty"` + Examples *ExamplesOrReferences `protobuf:"bytes,3,opt,name=examples,proto3" json:"examples,omitempty"` + Encoding *Encodings `protobuf:"bytes,4,opt,name=encoding,proto3" json:"encoding,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,5,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *MediaType) Reset() { + *x = MediaType{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MediaType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaType) ProtoMessage() {} + +func (x *MediaType) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaType.ProtoReflect.Descriptor instead. +func (*MediaType) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{27} +} + +func (x *MediaType) GetSchema() *SchemaOrReference { + if x != nil { + return x.Schema + } + return nil +} + +func (x *MediaType) GetExample() *Any { + if x != nil { + return x.Example + } + return nil +} + +func (x *MediaType) GetExamples() *ExamplesOrReferences { + if x != nil { + return x.Examples + } + return nil +} + +func (x *MediaType) GetEncoding() *Encodings { + if x != nil { + return x.Encoding + } + return nil +} + +func (x *MediaType) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type MediaTypes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedMediaType `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *MediaTypes) Reset() { + *x = MediaTypes{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MediaTypes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaTypes) ProtoMessage() {} + +func (x *MediaTypes) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaTypes.ProtoReflect.Descriptor instead. +func (*MediaTypes) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{28} +} + +func (x *MediaTypes) GetAdditionalProperties() []*NamedMediaType { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// Automatically-generated message used to represent maps of Any as ordered (name,value) pairs. +type NamedAny struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedAny) Reset() { + *x = NamedAny{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedAny) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedAny) ProtoMessage() {} + +func (x *NamedAny) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedAny.ProtoReflect.Descriptor instead. +func (*NamedAny) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{29} +} + +func (x *NamedAny) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedAny) GetValue() *Any { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of CallbackOrReference as ordered (name,value) pairs. +type NamedCallbackOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *CallbackOrReference `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedCallbackOrReference) Reset() { + *x = NamedCallbackOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedCallbackOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedCallbackOrReference) ProtoMessage() {} + +func (x *NamedCallbackOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedCallbackOrReference.ProtoReflect.Descriptor instead. +func (*NamedCallbackOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{30} +} + +func (x *NamedCallbackOrReference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedCallbackOrReference) GetValue() *CallbackOrReference { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of Encoding as ordered (name,value) pairs. +type NamedEncoding struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *Encoding `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedEncoding) Reset() { + *x = NamedEncoding{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedEncoding) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedEncoding) ProtoMessage() {} + +func (x *NamedEncoding) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedEncoding.ProtoReflect.Descriptor instead. +func (*NamedEncoding) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{31} +} + +func (x *NamedEncoding) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedEncoding) GetValue() *Encoding { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of ExampleOrReference as ordered (name,value) pairs. +type NamedExampleOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *ExampleOrReference `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedExampleOrReference) Reset() { + *x = NamedExampleOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedExampleOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedExampleOrReference) ProtoMessage() {} + +func (x *NamedExampleOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedExampleOrReference.ProtoReflect.Descriptor instead. +func (*NamedExampleOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{32} +} + +func (x *NamedExampleOrReference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedExampleOrReference) GetValue() *ExampleOrReference { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of HeaderOrReference as ordered (name,value) pairs. +type NamedHeaderOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *HeaderOrReference `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedHeaderOrReference) Reset() { + *x = NamedHeaderOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedHeaderOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedHeaderOrReference) ProtoMessage() {} + +func (x *NamedHeaderOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedHeaderOrReference.ProtoReflect.Descriptor instead. +func (*NamedHeaderOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{33} +} + +func (x *NamedHeaderOrReference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedHeaderOrReference) GetValue() *HeaderOrReference { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of LinkOrReference as ordered (name,value) pairs. +type NamedLinkOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *LinkOrReference `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedLinkOrReference) Reset() { + *x = NamedLinkOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedLinkOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedLinkOrReference) ProtoMessage() {} + +func (x *NamedLinkOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedLinkOrReference.ProtoReflect.Descriptor instead. +func (*NamedLinkOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{34} +} + +func (x *NamedLinkOrReference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedLinkOrReference) GetValue() *LinkOrReference { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of MediaType as ordered (name,value) pairs. +type NamedMediaType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *MediaType `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedMediaType) Reset() { + *x = NamedMediaType{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedMediaType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedMediaType) ProtoMessage() {} + +func (x *NamedMediaType) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedMediaType.ProtoReflect.Descriptor instead. +func (*NamedMediaType) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{35} +} + +func (x *NamedMediaType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedMediaType) GetValue() *MediaType { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of ParameterOrReference as ordered (name,value) pairs. +type NamedParameterOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *ParameterOrReference `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedParameterOrReference) Reset() { + *x = NamedParameterOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedParameterOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedParameterOrReference) ProtoMessage() {} + +func (x *NamedParameterOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedParameterOrReference.ProtoReflect.Descriptor instead. +func (*NamedParameterOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{36} +} + +func (x *NamedParameterOrReference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedParameterOrReference) GetValue() *ParameterOrReference { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of PathItem as ordered (name,value) pairs. +type NamedPathItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *PathItem `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedPathItem) Reset() { + *x = NamedPathItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedPathItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedPathItem) ProtoMessage() {} + +func (x *NamedPathItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedPathItem.ProtoReflect.Descriptor instead. +func (*NamedPathItem) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{37} +} + +func (x *NamedPathItem) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedPathItem) GetValue() *PathItem { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of RequestBodyOrReference as ordered (name,value) pairs. +type NamedRequestBodyOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *RequestBodyOrReference `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedRequestBodyOrReference) Reset() { + *x = NamedRequestBodyOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedRequestBodyOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedRequestBodyOrReference) ProtoMessage() {} + +func (x *NamedRequestBodyOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedRequestBodyOrReference.ProtoReflect.Descriptor instead. +func (*NamedRequestBodyOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{38} +} + +func (x *NamedRequestBodyOrReference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedRequestBodyOrReference) GetValue() *RequestBodyOrReference { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of ResponseOrReference as ordered (name,value) pairs. +type NamedResponseOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *ResponseOrReference `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedResponseOrReference) Reset() { + *x = NamedResponseOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedResponseOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedResponseOrReference) ProtoMessage() {} + +func (x *NamedResponseOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedResponseOrReference.ProtoReflect.Descriptor instead. +func (*NamedResponseOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{39} +} + +func (x *NamedResponseOrReference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedResponseOrReference) GetValue() *ResponseOrReference { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of SchemaOrReference as ordered (name,value) pairs. +type NamedSchemaOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *SchemaOrReference `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedSchemaOrReference) Reset() { + *x = NamedSchemaOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedSchemaOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedSchemaOrReference) ProtoMessage() {} + +func (x *NamedSchemaOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedSchemaOrReference.ProtoReflect.Descriptor instead. +func (*NamedSchemaOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{40} +} + +func (x *NamedSchemaOrReference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedSchemaOrReference) GetValue() *SchemaOrReference { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of SecuritySchemeOrReference as ordered (name,value) pairs. +type NamedSecuritySchemeOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *SecuritySchemeOrReference `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedSecuritySchemeOrReference) Reset() { + *x = NamedSecuritySchemeOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedSecuritySchemeOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedSecuritySchemeOrReference) ProtoMessage() {} + +func (x *NamedSecuritySchemeOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedSecuritySchemeOrReference.ProtoReflect.Descriptor instead. +func (*NamedSecuritySchemeOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{41} +} + +func (x *NamedSecuritySchemeOrReference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedSecuritySchemeOrReference) GetValue() *SecuritySchemeOrReference { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of ServerVariable as ordered (name,value) pairs. +type NamedServerVariable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *ServerVariable `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedServerVariable) Reset() { + *x = NamedServerVariable{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedServerVariable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedServerVariable) ProtoMessage() {} + +func (x *NamedServerVariable) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedServerVariable.ProtoReflect.Descriptor instead. +func (*NamedServerVariable) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{42} +} + +func (x *NamedServerVariable) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedServerVariable) GetValue() *ServerVariable { + if x != nil { + return x.Value + } + return nil +} + +// Automatically-generated message used to represent maps of string as ordered (name,value) pairs. +type NamedString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedString) Reset() { + *x = NamedString{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedString) ProtoMessage() {} + +func (x *NamedString) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedString.ProtoReflect.Descriptor instead. +func (*NamedString) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{43} +} + +func (x *NamedString) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedString) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +// Automatically-generated message used to represent maps of StringArray as ordered (name,value) pairs. +type NamedStringArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map key + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mapped value + Value *StringArray `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *NamedStringArray) Reset() { + *x = NamedStringArray{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedStringArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedStringArray) ProtoMessage() {} + +func (x *NamedStringArray) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedStringArray.ProtoReflect.Descriptor instead. +func (*NamedStringArray) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{44} +} + +func (x *NamedStringArray) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedStringArray) GetValue() *StringArray { + if x != nil { + return x.Value + } + return nil +} + +// Configuration details for a supported OAuth Flow +type OauthFlow struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AuthorizationUrl string `protobuf:"bytes,1,opt,name=authorization_url,json=authorizationUrl,proto3" json:"authorization_url,omitempty"` + TokenUrl string `protobuf:"bytes,2,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` + RefreshUrl string `protobuf:"bytes,3,opt,name=refresh_url,json=refreshUrl,proto3" json:"refresh_url,omitempty"` + Scopes *Strings `protobuf:"bytes,4,opt,name=scopes,proto3" json:"scopes,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,5,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *OauthFlow) Reset() { + *x = OauthFlow{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OauthFlow) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OauthFlow) ProtoMessage() {} + +func (x *OauthFlow) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OauthFlow.ProtoReflect.Descriptor instead. +func (*OauthFlow) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{45} +} + +func (x *OauthFlow) GetAuthorizationUrl() string { + if x != nil { + return x.AuthorizationUrl + } + return "" +} + +func (x *OauthFlow) GetTokenUrl() string { + if x != nil { + return x.TokenUrl + } + return "" +} + +func (x *OauthFlow) GetRefreshUrl() string { + if x != nil { + return x.RefreshUrl + } + return "" +} + +func (x *OauthFlow) GetScopes() *Strings { + if x != nil { + return x.Scopes + } + return nil +} + +func (x *OauthFlow) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +// Allows configuration of the supported OAuth Flows. +type OauthFlows struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Implicit *OauthFlow `protobuf:"bytes,1,opt,name=implicit,proto3" json:"implicit,omitempty"` + Password *OauthFlow `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + ClientCredentials *OauthFlow `protobuf:"bytes,3,opt,name=client_credentials,json=clientCredentials,proto3" json:"client_credentials,omitempty"` + AuthorizationCode *OauthFlow `protobuf:"bytes,4,opt,name=authorization_code,json=authorizationCode,proto3" json:"authorization_code,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,5,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *OauthFlows) Reset() { + *x = OauthFlows{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OauthFlows) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OauthFlows) ProtoMessage() {} + +func (x *OauthFlows) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OauthFlows.ProtoReflect.Descriptor instead. +func (*OauthFlows) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{46} +} + +func (x *OauthFlows) GetImplicit() *OauthFlow { + if x != nil { + return x.Implicit + } + return nil +} + +func (x *OauthFlows) GetPassword() *OauthFlow { + if x != nil { + return x.Password + } + return nil +} + +func (x *OauthFlows) GetClientCredentials() *OauthFlow { + if x != nil { + return x.ClientCredentials + } + return nil +} + +func (x *OauthFlows) GetAuthorizationCode() *OauthFlow { + if x != nil { + return x.AuthorizationCode + } + return nil +} + +func (x *OauthFlows) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type Object struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedAny `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *Object) Reset() { + *x = Object{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Object) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Object) ProtoMessage() {} + +func (x *Object) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Object.ProtoReflect.Descriptor instead. +func (*Object) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{47} +} + +func (x *Object) GetAdditionalProperties() []*NamedAny { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// Describes a single API operation on a path. +type Operation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tags []string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"` + Summary string `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,4,opt,name=external_docs,json=externalDocs,proto3" json:"external_docs,omitempty"` + OperationId string `protobuf:"bytes,5,opt,name=operation_id,json=operationId,proto3" json:"operation_id,omitempty"` + Parameters []*ParameterOrReference `protobuf:"bytes,6,rep,name=parameters,proto3" json:"parameters,omitempty"` + RequestBody *RequestBodyOrReference `protobuf:"bytes,7,opt,name=request_body,json=requestBody,proto3" json:"request_body,omitempty"` + Responses *Responses `protobuf:"bytes,8,opt,name=responses,proto3" json:"responses,omitempty"` + Callbacks *CallbacksOrReferences `protobuf:"bytes,9,opt,name=callbacks,proto3" json:"callbacks,omitempty"` + Deprecated bool `protobuf:"varint,10,opt,name=deprecated,proto3" json:"deprecated,omitempty"` + Security []*SecurityRequirement `protobuf:"bytes,11,rep,name=security,proto3" json:"security,omitempty"` + Servers []*Server `protobuf:"bytes,12,rep,name=servers,proto3" json:"servers,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,13,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Operation) Reset() { + *x = Operation{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Operation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Operation) ProtoMessage() {} + +func (x *Operation) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Operation.ProtoReflect.Descriptor instead. +func (*Operation) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{48} +} + +func (x *Operation) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Operation) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *Operation) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Operation) GetExternalDocs() *ExternalDocs { + if x != nil { + return x.ExternalDocs + } + return nil +} + +func (x *Operation) GetOperationId() string { + if x != nil { + return x.OperationId + } + return "" +} + +func (x *Operation) GetParameters() []*ParameterOrReference { + if x != nil { + return x.Parameters + } + return nil +} + +func (x *Operation) GetRequestBody() *RequestBodyOrReference { + if x != nil { + return x.RequestBody + } + return nil +} + +func (x *Operation) GetResponses() *Responses { + if x != nil { + return x.Responses + } + return nil +} + +func (x *Operation) GetCallbacks() *CallbacksOrReferences { + if x != nil { + return x.Callbacks + } + return nil +} + +func (x *Operation) GetDeprecated() bool { + if x != nil { + return x.Deprecated + } + return false +} + +func (x *Operation) GetSecurity() []*SecurityRequirement { + if x != nil { + return x.Security + } + return nil +} + +func (x *Operation) GetServers() []*Server { + if x != nil { + return x.Servers + } + return nil +} + +func (x *Operation) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +// Describes a single operation parameter. A unique parameter is defined by a combination of a name and location. +type Parameter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + In string `protobuf:"bytes,2,opt,name=in,proto3" json:"in,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Required bool `protobuf:"varint,4,opt,name=required,proto3" json:"required,omitempty"` + Deprecated bool `protobuf:"varint,5,opt,name=deprecated,proto3" json:"deprecated,omitempty"` + AllowEmptyValue bool `protobuf:"varint,6,opt,name=allow_empty_value,json=allowEmptyValue,proto3" json:"allow_empty_value,omitempty"` + Style string `protobuf:"bytes,7,opt,name=style,proto3" json:"style,omitempty"` + Explode bool `protobuf:"varint,8,opt,name=explode,proto3" json:"explode,omitempty"` + AllowReserved bool `protobuf:"varint,9,opt,name=allow_reserved,json=allowReserved,proto3" json:"allow_reserved,omitempty"` + Schema *SchemaOrReference `protobuf:"bytes,10,opt,name=schema,proto3" json:"schema,omitempty"` + Example *Any `protobuf:"bytes,11,opt,name=example,proto3" json:"example,omitempty"` + Examples *ExamplesOrReferences `protobuf:"bytes,12,opt,name=examples,proto3" json:"examples,omitempty"` + Content *MediaTypes `protobuf:"bytes,13,opt,name=content,proto3" json:"content,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,14,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Parameter) Reset() { + *x = Parameter{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Parameter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Parameter) ProtoMessage() {} + +func (x *Parameter) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Parameter.ProtoReflect.Descriptor instead. +func (*Parameter) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{49} +} + +func (x *Parameter) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Parameter) GetIn() string { + if x != nil { + return x.In + } + return "" +} + +func (x *Parameter) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Parameter) GetRequired() bool { + if x != nil { + return x.Required + } + return false +} + +func (x *Parameter) GetDeprecated() bool { + if x != nil { + return x.Deprecated + } + return false +} + +func (x *Parameter) GetAllowEmptyValue() bool { + if x != nil { + return x.AllowEmptyValue + } + return false +} + +func (x *Parameter) GetStyle() string { + if x != nil { + return x.Style + } + return "" +} + +func (x *Parameter) GetExplode() bool { + if x != nil { + return x.Explode + } + return false +} + +func (x *Parameter) GetAllowReserved() bool { + if x != nil { + return x.AllowReserved + } + return false +} + +func (x *Parameter) GetSchema() *SchemaOrReference { + if x != nil { + return x.Schema + } + return nil +} + +func (x *Parameter) GetExample() *Any { + if x != nil { + return x.Example + } + return nil +} + +func (x *Parameter) GetExamples() *ExamplesOrReferences { + if x != nil { + return x.Examples + } + return nil +} + +func (x *Parameter) GetContent() *MediaTypes { + if x != nil { + return x.Content + } + return nil +} + +func (x *Parameter) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type ParameterOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *ParameterOrReference_Parameter + // *ParameterOrReference_Reference + Oneof isParameterOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (x *ParameterOrReference) Reset() { + *x = ParameterOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ParameterOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParameterOrReference) ProtoMessage() {} + +func (x *ParameterOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[50] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParameterOrReference.ProtoReflect.Descriptor instead. +func (*ParameterOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{50} +} + +func (m *ParameterOrReference) GetOneof() isParameterOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *ParameterOrReference) GetParameter() *Parameter { + if x, ok := x.GetOneof().(*ParameterOrReference_Parameter); ok { + return x.Parameter + } + return nil +} + +func (x *ParameterOrReference) GetReference() *Reference { + if x, ok := x.GetOneof().(*ParameterOrReference_Reference); ok { + return x.Reference + } + return nil +} + +type isParameterOrReference_Oneof interface { + isParameterOrReference_Oneof() +} + +type ParameterOrReference_Parameter struct { + Parameter *Parameter `protobuf:"bytes,1,opt,name=parameter,proto3,oneof"` +} + +type ParameterOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,proto3,oneof"` +} + +func (*ParameterOrReference_Parameter) isParameterOrReference_Oneof() {} + +func (*ParameterOrReference_Reference) isParameterOrReference_Oneof() {} + +type ParametersOrReferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedParameterOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *ParametersOrReferences) Reset() { + *x = ParametersOrReferences{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ParametersOrReferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParametersOrReferences) ProtoMessage() {} + +func (x *ParametersOrReferences) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[51] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParametersOrReferences.ProtoReflect.Descriptor instead. +func (*ParametersOrReferences) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{51} +} + +func (x *ParametersOrReferences) GetAdditionalProperties() []*NamedParameterOrReference { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// Describes the operations available on a single path. A Path Item MAY be empty, due to ACL constraints. The path itself is still exposed to the documentation viewer but they will not know which operations and parameters are available. +type PathItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + XRef string `protobuf:"bytes,1,opt,name=_ref,json=Ref,proto3" json:"_ref,omitempty"` + Summary string `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Get *Operation `protobuf:"bytes,4,opt,name=get,proto3" json:"get,omitempty"` + Put *Operation `protobuf:"bytes,5,opt,name=put,proto3" json:"put,omitempty"` + Post *Operation `protobuf:"bytes,6,opt,name=post,proto3" json:"post,omitempty"` + Delete *Operation `protobuf:"bytes,7,opt,name=delete,proto3" json:"delete,omitempty"` + Options *Operation `protobuf:"bytes,8,opt,name=options,proto3" json:"options,omitempty"` + Head *Operation `protobuf:"bytes,9,opt,name=head,proto3" json:"head,omitempty"` + Patch *Operation `protobuf:"bytes,10,opt,name=patch,proto3" json:"patch,omitempty"` + Trace *Operation `protobuf:"bytes,11,opt,name=trace,proto3" json:"trace,omitempty"` + Servers []*Server `protobuf:"bytes,12,rep,name=servers,proto3" json:"servers,omitempty"` + Parameters []*ParameterOrReference `protobuf:"bytes,13,rep,name=parameters,proto3" json:"parameters,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,14,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *PathItem) Reset() { + *x = PathItem{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PathItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PathItem) ProtoMessage() {} + +func (x *PathItem) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[52] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PathItem.ProtoReflect.Descriptor instead. +func (*PathItem) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{52} +} + +func (x *PathItem) GetXRef() string { + if x != nil { + return x.XRef + } + return "" +} + +func (x *PathItem) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *PathItem) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *PathItem) GetGet() *Operation { + if x != nil { + return x.Get + } + return nil +} + +func (x *PathItem) GetPut() *Operation { + if x != nil { + return x.Put + } + return nil +} + +func (x *PathItem) GetPost() *Operation { + if x != nil { + return x.Post + } + return nil +} + +func (x *PathItem) GetDelete() *Operation { + if x != nil { + return x.Delete + } + return nil +} + +func (x *PathItem) GetOptions() *Operation { + if x != nil { + return x.Options + } + return nil +} + +func (x *PathItem) GetHead() *Operation { + if x != nil { + return x.Head + } + return nil +} + +func (x *PathItem) GetPatch() *Operation { + if x != nil { + return x.Patch + } + return nil +} + +func (x *PathItem) GetTrace() *Operation { + if x != nil { + return x.Trace + } + return nil +} + +func (x *PathItem) GetServers() []*Server { + if x != nil { + return x.Servers + } + return nil +} + +func (x *PathItem) GetParameters() []*ParameterOrReference { + if x != nil { + return x.Parameters + } + return nil +} + +func (x *PathItem) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +// Holds the relative paths to the individual endpoints and their operations. The path is appended to the URL from the `Server Object` in order to construct the full URL. The Paths MAY be empty, due to ACL constraints. +type Paths struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path []*NamedPathItem `protobuf:"bytes,1,rep,name=path,proto3" json:"path,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,2,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Paths) Reset() { + *x = Paths{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Paths) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Paths) ProtoMessage() {} + +func (x *Paths) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[53] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Paths.ProtoReflect.Descriptor instead. +func (*Paths) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{53} +} + +func (x *Paths) GetPath() []*NamedPathItem { + if x != nil { + return x.Path + } + return nil +} + +func (x *Paths) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type Properties struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedSchemaOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *Properties) Reset() { + *x = Properties{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Properties) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Properties) ProtoMessage() {} + +func (x *Properties) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Properties.ProtoReflect.Descriptor instead. +func (*Properties) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{54} +} + +func (x *Properties) GetAdditionalProperties() []*NamedSchemaOrReference { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// A simple object to allow referencing other components in the specification, internally and externally. The Reference Object is defined by JSON Reference and follows the same structure, behavior and rules. For this specification, reference resolution is accomplished as defined by the JSON Reference specification and not by the JSON Schema specification. +type Reference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + XRef string `protobuf:"bytes,1,opt,name=_ref,json=Ref,proto3" json:"_ref,omitempty"` + Summary string `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` +} + +func (x *Reference) Reset() { + *x = Reference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Reference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Reference) ProtoMessage() {} + +func (x *Reference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Reference.ProtoReflect.Descriptor instead. +func (*Reference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{55} +} + +func (x *Reference) GetXRef() string { + if x != nil { + return x.XRef + } + return "" +} + +func (x *Reference) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *Reference) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type RequestBodiesOrReferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedRequestBodyOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *RequestBodiesOrReferences) Reset() { + *x = RequestBodiesOrReferences{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestBodiesOrReferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestBodiesOrReferences) ProtoMessage() {} + +func (x *RequestBodiesOrReferences) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[56] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestBodiesOrReferences.ProtoReflect.Descriptor instead. +func (*RequestBodiesOrReferences) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{56} +} + +func (x *RequestBodiesOrReferences) GetAdditionalProperties() []*NamedRequestBodyOrReference { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// Describes a single request body. +type RequestBody struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + Content *MediaTypes `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` + Required bool `protobuf:"varint,3,opt,name=required,proto3" json:"required,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,4,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *RequestBody) Reset() { + *x = RequestBody{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestBody) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestBody) ProtoMessage() {} + +func (x *RequestBody) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[57] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestBody.ProtoReflect.Descriptor instead. +func (*RequestBody) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{57} +} + +func (x *RequestBody) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *RequestBody) GetContent() *MediaTypes { + if x != nil { + return x.Content + } + return nil +} + +func (x *RequestBody) GetRequired() bool { + if x != nil { + return x.Required + } + return false +} + +func (x *RequestBody) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type RequestBodyOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *RequestBodyOrReference_RequestBody + // *RequestBodyOrReference_Reference + Oneof isRequestBodyOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (x *RequestBodyOrReference) Reset() { + *x = RequestBodyOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestBodyOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestBodyOrReference) ProtoMessage() {} + +func (x *RequestBodyOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[58] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestBodyOrReference.ProtoReflect.Descriptor instead. +func (*RequestBodyOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{58} +} + +func (m *RequestBodyOrReference) GetOneof() isRequestBodyOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *RequestBodyOrReference) GetRequestBody() *RequestBody { + if x, ok := x.GetOneof().(*RequestBodyOrReference_RequestBody); ok { + return x.RequestBody + } + return nil +} + +func (x *RequestBodyOrReference) GetReference() *Reference { + if x, ok := x.GetOneof().(*RequestBodyOrReference_Reference); ok { + return x.Reference + } + return nil +} + +type isRequestBodyOrReference_Oneof interface { + isRequestBodyOrReference_Oneof() +} + +type RequestBodyOrReference_RequestBody struct { + RequestBody *RequestBody `protobuf:"bytes,1,opt,name=request_body,json=requestBody,proto3,oneof"` +} + +type RequestBodyOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,proto3,oneof"` +} + +func (*RequestBodyOrReference_RequestBody) isRequestBodyOrReference_Oneof() {} + +func (*RequestBodyOrReference_Reference) isRequestBodyOrReference_Oneof() {} + +// Describes a single response from an API Operation, including design-time, static `links` to operations based on the response. +type Response struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + Headers *HeadersOrReferences `protobuf:"bytes,2,opt,name=headers,proto3" json:"headers,omitempty"` + Content *MediaTypes `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` + Links *LinksOrReferences `protobuf:"bytes,4,opt,name=links,proto3" json:"links,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,5,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Response) Reset() { + *x = Response{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Response) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Response) ProtoMessage() {} + +func (x *Response) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[59] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Response.ProtoReflect.Descriptor instead. +func (*Response) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{59} +} + +func (x *Response) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Response) GetHeaders() *HeadersOrReferences { + if x != nil { + return x.Headers + } + return nil +} + +func (x *Response) GetContent() *MediaTypes { + if x != nil { + return x.Content + } + return nil +} + +func (x *Response) GetLinks() *LinksOrReferences { + if x != nil { + return x.Links + } + return nil +} + +func (x *Response) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type ResponseOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *ResponseOrReference_Response + // *ResponseOrReference_Reference + Oneof isResponseOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (x *ResponseOrReference) Reset() { + *x = ResponseOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResponseOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResponseOrReference) ProtoMessage() {} + +func (x *ResponseOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[60] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResponseOrReference.ProtoReflect.Descriptor instead. +func (*ResponseOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{60} +} + +func (m *ResponseOrReference) GetOneof() isResponseOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *ResponseOrReference) GetResponse() *Response { + if x, ok := x.GetOneof().(*ResponseOrReference_Response); ok { + return x.Response + } + return nil +} + +func (x *ResponseOrReference) GetReference() *Reference { + if x, ok := x.GetOneof().(*ResponseOrReference_Reference); ok { + return x.Reference + } + return nil +} + +type isResponseOrReference_Oneof interface { + isResponseOrReference_Oneof() +} + +type ResponseOrReference_Response struct { + Response *Response `protobuf:"bytes,1,opt,name=response,proto3,oneof"` +} + +type ResponseOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,proto3,oneof"` +} + +func (*ResponseOrReference_Response) isResponseOrReference_Oneof() {} + +func (*ResponseOrReference_Reference) isResponseOrReference_Oneof() {} + +// A container for the expected responses of an operation. The container maps a HTTP response code to the expected response. The documentation is not necessarily expected to cover all possible HTTP response codes because they may not be known in advance. However, documentation is expected to cover a successful operation response and any known errors. The `default` MAY be used as a default response object for all HTTP codes that are not covered individually by the specification. The `Responses Object` MUST contain at least one response code, and it SHOULD be the response for a successful operation call. +type Responses struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Default *ResponseOrReference `protobuf:"bytes,1,opt,name=default,proto3" json:"default,omitempty"` + ResponseOrReference []*NamedResponseOrReference `protobuf:"bytes,2,rep,name=response_or_reference,json=responseOrReference,proto3" json:"response_or_reference,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,3,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Responses) Reset() { + *x = Responses{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Responses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Responses) ProtoMessage() {} + +func (x *Responses) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[61] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Responses.ProtoReflect.Descriptor instead. +func (*Responses) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{61} +} + +func (x *Responses) GetDefault() *ResponseOrReference { + if x != nil { + return x.Default + } + return nil +} + +func (x *Responses) GetResponseOrReference() []*NamedResponseOrReference { + if x != nil { + return x.ResponseOrReference + } + return nil +} + +func (x *Responses) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type ResponsesOrReferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedResponseOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *ResponsesOrReferences) Reset() { + *x = ResponsesOrReferences{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResponsesOrReferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResponsesOrReferences) ProtoMessage() {} + +func (x *ResponsesOrReferences) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[62] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResponsesOrReferences.ProtoReflect.Descriptor instead. +func (*ResponsesOrReferences) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{62} +} + +func (x *ResponsesOrReferences) GetAdditionalProperties() []*NamedResponseOrReference { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// The Schema Object allows the definition of input and output data types. These types can be objects, but also primitives and arrays. This object is an extended subset of the JSON Schema Specification Wright Draft 00. For more information about the properties, see JSON Schema Core and JSON Schema Validation. Unless stated otherwise, the property definitions follow the JSON Schema. +type Schema struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Nullable bool `protobuf:"varint,1,opt,name=nullable,proto3" json:"nullable,omitempty"` + Discriminator *Discriminator `protobuf:"bytes,2,opt,name=discriminator,proto3" json:"discriminator,omitempty"` + ReadOnly bool `protobuf:"varint,3,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` + WriteOnly bool `protobuf:"varint,4,opt,name=write_only,json=writeOnly,proto3" json:"write_only,omitempty"` + Xml *Xml `protobuf:"bytes,5,opt,name=xml,proto3" json:"xml,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,6,opt,name=external_docs,json=externalDocs,proto3" json:"external_docs,omitempty"` + Example *Any `protobuf:"bytes,7,opt,name=example,proto3" json:"example,omitempty"` + Deprecated bool `protobuf:"varint,8,opt,name=deprecated,proto3" json:"deprecated,omitempty"` + Title string `protobuf:"bytes,9,opt,name=title,proto3" json:"title,omitempty"` + MultipleOf float64 `protobuf:"fixed64,10,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` + Maximum float64 `protobuf:"fixed64,11,opt,name=maximum,proto3" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,12,opt,name=exclusive_maximum,json=exclusiveMaximum,proto3" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,13,opt,name=minimum,proto3" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,14,opt,name=exclusive_minimum,json=exclusiveMinimum,proto3" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,15,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,16,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,17,opt,name=pattern,proto3" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,18,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,19,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,20,opt,name=unique_items,json=uniqueItems,proto3" json:"unique_items,omitempty"` + MaxProperties int64 `protobuf:"varint,21,opt,name=max_properties,json=maxProperties,proto3" json:"max_properties,omitempty"` + MinProperties int64 `protobuf:"varint,22,opt,name=min_properties,json=minProperties,proto3" json:"min_properties,omitempty"` + Required []string `protobuf:"bytes,23,rep,name=required,proto3" json:"required,omitempty"` + Enum []*Any `protobuf:"bytes,24,rep,name=enum,proto3" json:"enum,omitempty"` + Type string `protobuf:"bytes,25,opt,name=type,proto3" json:"type,omitempty"` + AllOf []*SchemaOrReference `protobuf:"bytes,26,rep,name=all_of,json=allOf,proto3" json:"all_of,omitempty"` + OneOf []*SchemaOrReference `protobuf:"bytes,27,rep,name=one_of,json=oneOf,proto3" json:"one_of,omitempty"` + AnyOf []*SchemaOrReference `protobuf:"bytes,28,rep,name=any_of,json=anyOf,proto3" json:"any_of,omitempty"` + Not *Schema `protobuf:"bytes,29,opt,name=not,proto3" json:"not,omitempty"` + Items *ItemsItem `protobuf:"bytes,30,opt,name=items,proto3" json:"items,omitempty"` + Properties *Properties `protobuf:"bytes,31,opt,name=properties,proto3" json:"properties,omitempty"` + AdditionalProperties *AdditionalPropertiesItem `protobuf:"bytes,32,opt,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` + Default *DefaultType `protobuf:"bytes,33,opt,name=default,proto3" json:"default,omitempty"` + Description string `protobuf:"bytes,34,opt,name=description,proto3" json:"description,omitempty"` + Format string `protobuf:"bytes,35,opt,name=format,proto3" json:"format,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,36,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Schema) Reset() { + *x = Schema{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Schema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Schema) ProtoMessage() {} + +func (x *Schema) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[63] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Schema.ProtoReflect.Descriptor instead. +func (*Schema) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{63} +} + +func (x *Schema) GetNullable() bool { + if x != nil { + return x.Nullable + } + return false +} + +func (x *Schema) GetDiscriminator() *Discriminator { + if x != nil { + return x.Discriminator + } + return nil +} + +func (x *Schema) GetReadOnly() bool { + if x != nil { + return x.ReadOnly + } + return false +} + +func (x *Schema) GetWriteOnly() bool { + if x != nil { + return x.WriteOnly + } + return false +} + +func (x *Schema) GetXml() *Xml { + if x != nil { + return x.Xml + } + return nil +} + +func (x *Schema) GetExternalDocs() *ExternalDocs { + if x != nil { + return x.ExternalDocs + } + return nil +} + +func (x *Schema) GetExample() *Any { + if x != nil { + return x.Example + } + return nil +} + +func (x *Schema) GetDeprecated() bool { + if x != nil { + return x.Deprecated + } + return false +} + +func (x *Schema) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Schema) GetMultipleOf() float64 { + if x != nil { + return x.MultipleOf + } + return 0 +} + +func (x *Schema) GetMaximum() float64 { + if x != nil { + return x.Maximum + } + return 0 +} + +func (x *Schema) GetExclusiveMaximum() bool { + if x != nil { + return x.ExclusiveMaximum + } + return false +} + +func (x *Schema) GetMinimum() float64 { + if x != nil { + return x.Minimum + } + return 0 +} + +func (x *Schema) GetExclusiveMinimum() bool { + if x != nil { + return x.ExclusiveMinimum + } + return false +} + +func (x *Schema) GetMaxLength() int64 { + if x != nil { + return x.MaxLength + } + return 0 +} + +func (x *Schema) GetMinLength() int64 { + if x != nil { + return x.MinLength + } + return 0 +} + +func (x *Schema) GetPattern() string { + if x != nil { + return x.Pattern + } + return "" +} + +func (x *Schema) GetMaxItems() int64 { + if x != nil { + return x.MaxItems + } + return 0 +} + +func (x *Schema) GetMinItems() int64 { + if x != nil { + return x.MinItems + } + return 0 +} + +func (x *Schema) GetUniqueItems() bool { + if x != nil { + return x.UniqueItems + } + return false +} + +func (x *Schema) GetMaxProperties() int64 { + if x != nil { + return x.MaxProperties + } + return 0 +} + +func (x *Schema) GetMinProperties() int64 { + if x != nil { + return x.MinProperties + } + return 0 +} + +func (x *Schema) GetRequired() []string { + if x != nil { + return x.Required + } + return nil +} + +func (x *Schema) GetEnum() []*Any { + if x != nil { + return x.Enum + } + return nil +} + +func (x *Schema) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *Schema) GetAllOf() []*SchemaOrReference { + if x != nil { + return x.AllOf + } + return nil +} + +func (x *Schema) GetOneOf() []*SchemaOrReference { + if x != nil { + return x.OneOf + } + return nil +} + +func (x *Schema) GetAnyOf() []*SchemaOrReference { + if x != nil { + return x.AnyOf + } + return nil +} + +func (x *Schema) GetNot() *Schema { + if x != nil { + return x.Not + } + return nil +} + +func (x *Schema) GetItems() *ItemsItem { + if x != nil { + return x.Items + } + return nil +} + +func (x *Schema) GetProperties() *Properties { + if x != nil { + return x.Properties + } + return nil +} + +func (x *Schema) GetAdditionalProperties() *AdditionalPropertiesItem { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +func (x *Schema) GetDefault() *DefaultType { + if x != nil { + return x.Default + } + return nil +} + +func (x *Schema) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Schema) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *Schema) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type SchemaOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *SchemaOrReference_Schema + // *SchemaOrReference_Reference + Oneof isSchemaOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (x *SchemaOrReference) Reset() { + *x = SchemaOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SchemaOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SchemaOrReference) ProtoMessage() {} + +func (x *SchemaOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[64] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SchemaOrReference.ProtoReflect.Descriptor instead. +func (*SchemaOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{64} +} + +func (m *SchemaOrReference) GetOneof() isSchemaOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *SchemaOrReference) GetSchema() *Schema { + if x, ok := x.GetOneof().(*SchemaOrReference_Schema); ok { + return x.Schema + } + return nil +} + +func (x *SchemaOrReference) GetReference() *Reference { + if x, ok := x.GetOneof().(*SchemaOrReference_Reference); ok { + return x.Reference + } + return nil +} + +type isSchemaOrReference_Oneof interface { + isSchemaOrReference_Oneof() +} + +type SchemaOrReference_Schema struct { + Schema *Schema `protobuf:"bytes,1,opt,name=schema,proto3,oneof"` +} + +type SchemaOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,proto3,oneof"` +} + +func (*SchemaOrReference_Schema) isSchemaOrReference_Oneof() {} + +func (*SchemaOrReference_Reference) isSchemaOrReference_Oneof() {} + +type SchemasOrReferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedSchemaOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *SchemasOrReferences) Reset() { + *x = SchemasOrReferences{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SchemasOrReferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SchemasOrReferences) ProtoMessage() {} + +func (x *SchemasOrReferences) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[65] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SchemasOrReferences.ProtoReflect.Descriptor instead. +func (*SchemasOrReferences) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{65} +} + +func (x *SchemasOrReferences) GetAdditionalProperties() []*NamedSchemaOrReference { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// Lists the required security schemes to execute this operation. The name used for each property MUST correspond to a security scheme declared in the Security Schemes under the Components Object. Security Requirement Objects that contain multiple schemes require that all schemes MUST be satisfied for a request to be authorized. This enables support for scenarios where multiple query parameters or HTTP headers are required to convey security information. When a list of Security Requirement Objects is defined on the OpenAPI Object or Operation Object, only one of the Security Requirement Objects in the list needs to be satisfied to authorize the request. +type SecurityRequirement struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedStringArray `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *SecurityRequirement) Reset() { + *x = SecurityRequirement{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SecurityRequirement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecurityRequirement) ProtoMessage() {} + +func (x *SecurityRequirement) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[66] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecurityRequirement.ProtoReflect.Descriptor instead. +func (*SecurityRequirement) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{66} +} + +func (x *SecurityRequirement) GetAdditionalProperties() []*NamedStringArray { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// Defines a security scheme that can be used by the operations. Supported schemes are HTTP authentication, an API key (either as a header, a cookie parameter or as a query parameter), mutual TLS (use of a client certificate), OAuth2's common flows (implicit, password, application and access code) as defined in RFC6749, and OpenID Connect. Please note that currently (2019) the implicit flow is about to be deprecated OAuth 2.0 Security Best Current Practice. Recommended for most use case is Authorization Code Grant flow with PKCE. +type SecurityScheme struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + In string `protobuf:"bytes,4,opt,name=in,proto3" json:"in,omitempty"` + Scheme string `protobuf:"bytes,5,opt,name=scheme,proto3" json:"scheme,omitempty"` + BearerFormat string `protobuf:"bytes,6,opt,name=bearer_format,json=bearerFormat,proto3" json:"bearer_format,omitempty"` + Flows *OauthFlows `protobuf:"bytes,7,opt,name=flows,proto3" json:"flows,omitempty"` + OpenIdConnectUrl string `protobuf:"bytes,8,opt,name=open_id_connect_url,json=openIdConnectUrl,proto3" json:"open_id_connect_url,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,9,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *SecurityScheme) Reset() { + *x = SecurityScheme{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SecurityScheme) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecurityScheme) ProtoMessage() {} + +func (x *SecurityScheme) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[67] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecurityScheme.ProtoReflect.Descriptor instead. +func (*SecurityScheme) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{67} +} + +func (x *SecurityScheme) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *SecurityScheme) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *SecurityScheme) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *SecurityScheme) GetIn() string { + if x != nil { + return x.In + } + return "" +} + +func (x *SecurityScheme) GetScheme() string { + if x != nil { + return x.Scheme + } + return "" +} + +func (x *SecurityScheme) GetBearerFormat() string { + if x != nil { + return x.BearerFormat + } + return "" +} + +func (x *SecurityScheme) GetFlows() *OauthFlows { + if x != nil { + return x.Flows + } + return nil +} + +func (x *SecurityScheme) GetOpenIdConnectUrl() string { + if x != nil { + return x.OpenIdConnectUrl + } + return "" +} + +func (x *SecurityScheme) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type SecuritySchemeOrReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *SecuritySchemeOrReference_SecurityScheme + // *SecuritySchemeOrReference_Reference + Oneof isSecuritySchemeOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (x *SecuritySchemeOrReference) Reset() { + *x = SecuritySchemeOrReference{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SecuritySchemeOrReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecuritySchemeOrReference) ProtoMessage() {} + +func (x *SecuritySchemeOrReference) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[68] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecuritySchemeOrReference.ProtoReflect.Descriptor instead. +func (*SecuritySchemeOrReference) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{68} +} + +func (m *SecuritySchemeOrReference) GetOneof() isSecuritySchemeOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *SecuritySchemeOrReference) GetSecurityScheme() *SecurityScheme { + if x, ok := x.GetOneof().(*SecuritySchemeOrReference_SecurityScheme); ok { + return x.SecurityScheme + } + return nil +} + +func (x *SecuritySchemeOrReference) GetReference() *Reference { + if x, ok := x.GetOneof().(*SecuritySchemeOrReference_Reference); ok { + return x.Reference + } + return nil +} + +type isSecuritySchemeOrReference_Oneof interface { + isSecuritySchemeOrReference_Oneof() +} + +type SecuritySchemeOrReference_SecurityScheme struct { + SecurityScheme *SecurityScheme `protobuf:"bytes,1,opt,name=security_scheme,json=securityScheme,proto3,oneof"` +} + +type SecuritySchemeOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,proto3,oneof"` +} + +func (*SecuritySchemeOrReference_SecurityScheme) isSecuritySchemeOrReference_Oneof() {} + +func (*SecuritySchemeOrReference_Reference) isSecuritySchemeOrReference_Oneof() {} + +type SecuritySchemesOrReferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedSecuritySchemeOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *SecuritySchemesOrReferences) Reset() { + *x = SecuritySchemesOrReferences{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SecuritySchemesOrReferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecuritySchemesOrReferences) ProtoMessage() {} + +func (x *SecuritySchemesOrReferences) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[69] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecuritySchemesOrReferences.ProtoReflect.Descriptor instead. +func (*SecuritySchemesOrReferences) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{69} +} + +func (x *SecuritySchemesOrReferences) GetAdditionalProperties() []*NamedSecuritySchemeOrReference { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// An object representing a Server. +type Server struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Variables *ServerVariables `protobuf:"bytes,3,opt,name=variables,proto3" json:"variables,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,4,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Server) Reset() { + *x = Server{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Server) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Server) ProtoMessage() {} + +func (x *Server) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[70] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Server.ProtoReflect.Descriptor instead. +func (*Server) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{70} +} + +func (x *Server) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Server) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Server) GetVariables() *ServerVariables { + if x != nil { + return x.Variables + } + return nil +} + +func (x *Server) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +// An object representing a Server Variable for server URL template substitution. +type ServerVariable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Enum []string `protobuf:"bytes,1,rep,name=enum,proto3" json:"enum,omitempty"` + Default string `protobuf:"bytes,2,opt,name=default,proto3" json:"default,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,4,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *ServerVariable) Reset() { + *x = ServerVariable{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerVariable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerVariable) ProtoMessage() {} + +func (x *ServerVariable) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[71] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerVariable.ProtoReflect.Descriptor instead. +func (*ServerVariable) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{71} +} + +func (x *ServerVariable) GetEnum() []string { + if x != nil { + return x.Enum + } + return nil +} + +func (x *ServerVariable) GetDefault() string { + if x != nil { + return x.Default + } + return "" +} + +func (x *ServerVariable) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ServerVariable) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +type ServerVariables struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedServerVariable `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *ServerVariables) Reset() { + *x = ServerVariables{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerVariables) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerVariables) ProtoMessage() {} + +func (x *ServerVariables) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[72] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerVariables.ProtoReflect.Descriptor instead. +func (*ServerVariables) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{72} +} + +func (x *ServerVariables) GetAdditionalProperties() []*NamedServerVariable { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// Any property starting with x- is valid. +type SpecificationExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Oneof: + // *SpecificationExtension_Number + // *SpecificationExtension_Boolean + // *SpecificationExtension_String_ + Oneof isSpecificationExtension_Oneof `protobuf_oneof:"oneof"` +} + +func (x *SpecificationExtension) Reset() { + *x = SpecificationExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SpecificationExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SpecificationExtension) ProtoMessage() {} + +func (x *SpecificationExtension) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[73] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SpecificationExtension.ProtoReflect.Descriptor instead. +func (*SpecificationExtension) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{73} +} + +func (m *SpecificationExtension) GetOneof() isSpecificationExtension_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (x *SpecificationExtension) GetNumber() float64 { + if x, ok := x.GetOneof().(*SpecificationExtension_Number); ok { + return x.Number + } + return 0 +} + +func (x *SpecificationExtension) GetBoolean() bool { + if x, ok := x.GetOneof().(*SpecificationExtension_Boolean); ok { + return x.Boolean + } + return false +} + +func (x *SpecificationExtension) GetString_() string { + if x, ok := x.GetOneof().(*SpecificationExtension_String_); ok { + return x.String_ + } + return "" +} + +type isSpecificationExtension_Oneof interface { + isSpecificationExtension_Oneof() +} + +type SpecificationExtension_Number struct { + Number float64 `protobuf:"fixed64,1,opt,name=number,proto3,oneof"` +} + +type SpecificationExtension_Boolean struct { + Boolean bool `protobuf:"varint,2,opt,name=boolean,proto3,oneof"` +} + +type SpecificationExtension_String_ struct { + String_ string `protobuf:"bytes,3,opt,name=string,proto3,oneof"` +} + +func (*SpecificationExtension_Number) isSpecificationExtension_Oneof() {} + +func (*SpecificationExtension_Boolean) isSpecificationExtension_Oneof() {} + +func (*SpecificationExtension_String_) isSpecificationExtension_Oneof() {} + +type StringArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value []string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` +} + +func (x *StringArray) Reset() { + *x = StringArray{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StringArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StringArray) ProtoMessage() {} + +func (x *StringArray) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[74] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StringArray.ProtoReflect.Descriptor instead. +func (*StringArray) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{74} +} + +func (x *StringArray) GetValue() []string { + if x != nil { + return x.Value + } + return nil +} + +type Strings struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProperties []*NamedString `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty"` +} + +func (x *Strings) Reset() { + *x = Strings{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Strings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Strings) ProtoMessage() {} + +func (x *Strings) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[75] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Strings.ProtoReflect.Descriptor instead. +func (*Strings) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{75} +} + +func (x *Strings) GetAdditionalProperties() []*NamedString { + if x != nil { + return x.AdditionalProperties + } + return nil +} + +// Adds metadata to a single tag that is used by the Operation Object. It is not mandatory to have a Tag Object per tag defined in the Operation Object instances. +type Tag struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,3,opt,name=external_docs,json=externalDocs,proto3" json:"external_docs,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,4,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Tag) Reset() { + *x = Tag{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tag) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tag) ProtoMessage() {} + +func (x *Tag) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[76] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tag.ProtoReflect.Descriptor instead. +func (*Tag) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{76} +} + +func (x *Tag) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Tag) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Tag) GetExternalDocs() *ExternalDocs { + if x != nil { + return x.ExternalDocs + } + return nil +} + +func (x *Tag) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +// A metadata object that allows for more fine-tuned XML model definitions. When using arrays, XML element names are *not* inferred (for singular/plural forms) and the `name` property SHOULD be used to add that information. See examples for expected behavior. +type Xml struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Prefix string `protobuf:"bytes,3,opt,name=prefix,proto3" json:"prefix,omitempty"` + Attribute bool `protobuf:"varint,4,opt,name=attribute,proto3" json:"attribute,omitempty"` + Wrapped bool `protobuf:"varint,5,opt,name=wrapped,proto3" json:"wrapped,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,6,rep,name=specification_extension,json=specificationExtension,proto3" json:"specification_extension,omitempty"` +} + +func (x *Xml) Reset() { + *x = Xml{} + if protoimpl.UnsafeEnabled { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Xml) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Xml) ProtoMessage() {} + +func (x *Xml) ProtoReflect() protoreflect.Message { + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[77] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Xml.ProtoReflect.Descriptor instead. +func (*Xml) Descriptor() ([]byte, []int) { + return file_openapiv3_OpenAPIv3_proto_rawDescGZIP(), []int{77} +} + +func (x *Xml) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Xml) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *Xml) GetPrefix() string { + if x != nil { + return x.Prefix + } + return "" +} + +func (x *Xml) GetAttribute() bool { + if x != nil { + return x.Attribute + } + return false +} + +func (x *Xml) GetWrapped() bool { + if x != nil { + return x.Wrapped + } + return false +} + +func (x *Xml) GetSpecificationExtension() []*NamedAny { + if x != nil { + return x.SpecificationExtension + } + return nil +} + +var File_openapiv3_OpenAPIv3_proto protoreflect.FileDescriptor + +var file_openapiv3_OpenAPIv3_proto_rawDesc = []byte{ + 0x0a, 0x19, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x33, 0x2f, 0x4f, 0x70, 0x65, 0x6e, + 0x41, 0x50, 0x49, 0x76, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x90, 0x01, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, + 0x4f, 0x0a, 0x13, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x11, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x12, 0x1a, 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x00, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x42, 0x07, 0x0a, 0x05, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x45, 0x0a, 0x03, 0x41, 0x6e, 0x79, 0x12, 0x2a, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, + 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x79, 0x0a, 0x0f, + 0x41, 0x6e, 0x79, 0x4f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x23, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, + 0x03, 0x61, 0x6e, 0x79, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, + 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x88, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, + 0x62, 0x61, 0x63, 0x6b, 0x12, 0x2d, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x13, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x4f, + 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x63, 0x61, + 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, + 0x63, 0x6b, 0x48, 0x00, 0x52, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x35, + 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x72, + 0x0a, 0x15, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, + 0x6b, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x61, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x22, 0xac, 0x05, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x39, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x3f, 0x0a, 0x09, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x42, 0x0a, + 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, + 0x4c, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x6f, 0x64, 0x69, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x69, + 0x65, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0d, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, + 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, + 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x10, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x4f, + 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0f, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x05, + 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x4f, 0x72, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, + 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, + 0x6b, 0x73, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, + 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x66, 0x0a, 0x0b, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x1a, 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x12, 0x18, 0x0a, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, + 0x22, 0xb2, 0x01, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, + 0x6f, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x70, 0x69, + 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, 0x6d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc9, 0x03, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x12, 0x24, 0x0a, 0x04, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, + 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, + 0x12, 0x27, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x74, + 0x68, 0x73, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x36, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, + 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x23, + 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, + 0x61, 0x67, 0x73, 0x12, 0x3d, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, + 0x64, 0x6f, 0x63, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x44, 0x6f, 0x63, 0x73, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, + 0x63, 0x73, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0x8e, 0x02, 0x0a, 0x08, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, + 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x39, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x79, + 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x09, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x4e, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, + 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, + 0xe2, 0x01, 0x0a, 0x07, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, + 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x48, 0x00, 0x52, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x09, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x70, 0x0a, 0x14, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4f, 0x72, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x57, + 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x15, + 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, + 0x79, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x4d, 0x0a, 0x17, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x04, 0x0a, 0x06, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x64, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x64, 0x65, + 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x29, + 0x0a, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x6e, 0x79, + 0x52, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x08, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x73, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, + 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2c, + 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x09, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x6e, 0x0a, 0x13, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x72, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xc9, 0x02, 0x0a, + 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, + 0x10, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x4f, 0x66, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x2d, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x6c, 0x69, + 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5a, 0x0a, 0x09, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x4d, 0x0a, 0x13, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, + 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x11, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x22, 0x7e, 0x0a, 0x07, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe8, 0x02, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x23, 0x0a, + 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x66, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x6e, 0x79, 0x4f, 0x72, 0x45, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x6f, + 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x6e, 0x79, 0x4f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, + 0x64, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x79, 0x0a, 0x0f, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, + 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x6a, 0x0a, 0x11, 0x4c, 0x69, + 0x6e, 0x6b, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, + 0x55, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, + 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xad, 0x02, 0x0a, 0x09, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x29, 0x0a, 0x07, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x4f, 0x72, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x65, + 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x5d, 0x0a, 0x0a, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, + 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x65, 0x0a, 0x18, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x4f, 0x72, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, + 0x6b, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x4f, 0x0a, 0x0d, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6f, + 0x64, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x17, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x61, 0x0a, 0x16, 0x4e, 0x61, 0x6d, + 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5d, 0x0a, 0x14, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x51, 0x0a, 0x0e, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x67, + 0x0a, 0x19, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4f, 0x0a, 0x0d, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x50, 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x6b, 0x0a, 0x1b, 0x4e, 0x61, 0x6d, 0x65, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x4f, 0x72, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, + 0x6f, 0x64, 0x79, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x65, 0x0a, 0x18, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x33, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x61, 0x0a, 0x16, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x71, 0x0a, 0x1e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, + 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x5b, 0x0a, 0x13, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x37, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x55, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, + 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0xf2, 0x01, 0x0a, 0x09, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x2b, 0x0a, + 0x11, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcd, 0x02, 0x0a, 0x0a, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x46, 0x6c, + 0x6f, 0x77, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x08, 0x69, 0x6d, + 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x44, 0x0a, 0x12, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x11, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, + 0x44, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x11, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x53, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x49, + 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x6e, 0x79, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x96, 0x05, 0x0a, 0x09, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0c, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, + 0x64, 0x79, 0x12, 0x33, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x33, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x62, + 0x61, 0x63, 0x6b, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, + 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x09, 0x63, + 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, + 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2c, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0d, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0xb1, 0x04, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x6d, 0x70, 0x74, + 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x74, 0x79, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x64, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x64, 0x65, 0x12, 0x25, + 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x29, 0x0a, 0x07, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x4f, + 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x08, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8d, 0x01, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x35, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x07, 0x0a, + 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x74, 0x0a, 0x16, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, + 0x12, 0x5a, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, + 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4f, 0x72, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xfa, 0x04, 0x0a, + 0x08, 0x50, 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x72, 0x65, + 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x52, 0x65, 0x66, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x03, 0x67, 0x65, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x67, 0x65, + 0x74, 0x12, 0x27, 0x0a, 0x03, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x70, 0x75, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x6f, + 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x68, 0x65, 0x61, 0x64, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, + 0x12, 0x2b, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2b, 0x0a, + 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, + 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, + 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x01, 0x0a, 0x05, 0x50, 0x61, + 0x74, 0x68, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0x65, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, + 0x57, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, + 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x5a, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x52, 0x65, 0x66, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x79, 0x0a, 0x19, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, + 0x6f, 0x64, 0x69, 0x65, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x12, 0x5c, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x4f, 0x72, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, + 0xcc, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, + 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x96, + 0x01, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x4f, 0x72, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x07, + 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x9d, 0x02, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4f, 0x72, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, + 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x32, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, + 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x6e, + 0x65, 0x6f, 0x66, 0x22, 0xef, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x73, 0x12, 0x39, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x58, 0x0a, 0x15, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x72, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x59, + 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xaf, 0x0b, 0x0a, 0x06, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x3f, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, + 0x6f, 0x72, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, + 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1d, + 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x21, 0x0a, + 0x03, 0x78, 0x6d, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x58, 0x6d, 0x6c, 0x52, 0x03, 0x78, 0x6d, 0x6c, + 0x12, 0x3d, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x63, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, + 0x73, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, + 0x29, 0x0a, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x6e, + 0x79, 0x52, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4f, + 0x66, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, + 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, + 0x65, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, + 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, + 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, + 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12, + 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, + 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d, 0x61, + 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6d, + 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x16, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x17, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x23, + 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, + 0x66, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x4f, 0x66, 0x12, 0x34, 0x0a, + 0x06, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, 0x66, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x6f, 0x6e, + 0x65, 0x4f, 0x66, 0x12, 0x34, 0x0a, 0x06, 0x61, 0x6e, 0x79, 0x5f, 0x6f, 0x66, 0x18, 0x1c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x05, 0x61, 0x6e, 0x79, 0x4f, 0x66, 0x12, 0x24, 0x0a, 0x03, 0x6e, 0x6f, 0x74, + 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x03, 0x6e, 0x6f, 0x74, 0x12, + 0x2b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x20, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, + 0x31, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x23, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4d, 0x0a, 0x17, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x24, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x01, 0x0a, 0x11, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, + 0x35, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, + 0x6e, 0x0a, 0x13, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x72, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, + 0x68, 0x0a, 0x13, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x51, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xd3, 0x02, 0x0a, 0x0e, 0x53, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x23, + 0x0a, 0x0d, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x4f, 0x61, 0x75, 0x74, 0x68, 0x46, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x77, + 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x55, 0x72, 0x6c, + 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0xa2, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x45, 0x0a, + 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, + 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x6f, + 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x7e, 0x0a, 0x1b, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x14, + 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x4d, + 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, + 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, + 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x67, 0x0a, 0x0f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x12, 0x54, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x71, 0x0a, 0x16, 0x53, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x01, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x07, + 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x23, 0x0a, 0x0b, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x57, 0x0a, 0x07, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4c, 0x0a, 0x15, 0x61, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x03, 0x54, 0x61, + 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xd6, 0x01, 0x0a, 0x03, 0x58, 0x6d, 0x6c, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x12, + 0x4d, 0x0a, 0x17, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x3e, + 0x0a, 0x0e, 0x6f, 0x72, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x33, + 0x42, 0x0c, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x50, 0x49, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x16, 0x2e, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x33, 0x3b, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x33, 0xa2, 0x02, 0x03, 0x4f, 0x41, 0x53, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_openapiv3_OpenAPIv3_proto_rawDescOnce sync.Once + file_openapiv3_OpenAPIv3_proto_rawDescData = file_openapiv3_OpenAPIv3_proto_rawDesc +) + +func file_openapiv3_OpenAPIv3_proto_rawDescGZIP() []byte { + file_openapiv3_OpenAPIv3_proto_rawDescOnce.Do(func() { + file_openapiv3_OpenAPIv3_proto_rawDescData = protoimpl.X.CompressGZIP(file_openapiv3_OpenAPIv3_proto_rawDescData) + }) + return file_openapiv3_OpenAPIv3_proto_rawDescData +} + +var file_openapiv3_OpenAPIv3_proto_msgTypes = make([]protoimpl.MessageInfo, 78) +var file_openapiv3_OpenAPIv3_proto_goTypes = []interface{}{ + (*AdditionalPropertiesItem)(nil), // 0: openapi.v3.AdditionalPropertiesItem + (*Any)(nil), // 1: openapi.v3.Any + (*AnyOrExpression)(nil), // 2: openapi.v3.AnyOrExpression + (*Callback)(nil), // 3: openapi.v3.Callback + (*CallbackOrReference)(nil), // 4: openapi.v3.CallbackOrReference + (*CallbacksOrReferences)(nil), // 5: openapi.v3.CallbacksOrReferences + (*Components)(nil), // 6: openapi.v3.Components + (*Contact)(nil), // 7: openapi.v3.Contact + (*DefaultType)(nil), // 8: openapi.v3.DefaultType + (*Discriminator)(nil), // 9: openapi.v3.Discriminator + (*Document)(nil), // 10: openapi.v3.Document + (*Encoding)(nil), // 11: openapi.v3.Encoding + (*Encodings)(nil), // 12: openapi.v3.Encodings + (*Example)(nil), // 13: openapi.v3.Example + (*ExampleOrReference)(nil), // 14: openapi.v3.ExampleOrReference + (*ExamplesOrReferences)(nil), // 15: openapi.v3.ExamplesOrReferences + (*Expression)(nil), // 16: openapi.v3.Expression + (*ExternalDocs)(nil), // 17: openapi.v3.ExternalDocs + (*Header)(nil), // 18: openapi.v3.Header + (*HeaderOrReference)(nil), // 19: openapi.v3.HeaderOrReference + (*HeadersOrReferences)(nil), // 20: openapi.v3.HeadersOrReferences + (*Info)(nil), // 21: openapi.v3.Info + (*ItemsItem)(nil), // 22: openapi.v3.ItemsItem + (*License)(nil), // 23: openapi.v3.License + (*Link)(nil), // 24: openapi.v3.Link + (*LinkOrReference)(nil), // 25: openapi.v3.LinkOrReference + (*LinksOrReferences)(nil), // 26: openapi.v3.LinksOrReferences + (*MediaType)(nil), // 27: openapi.v3.MediaType + (*MediaTypes)(nil), // 28: openapi.v3.MediaTypes + (*NamedAny)(nil), // 29: openapi.v3.NamedAny + (*NamedCallbackOrReference)(nil), // 30: openapi.v3.NamedCallbackOrReference + (*NamedEncoding)(nil), // 31: openapi.v3.NamedEncoding + (*NamedExampleOrReference)(nil), // 32: openapi.v3.NamedExampleOrReference + (*NamedHeaderOrReference)(nil), // 33: openapi.v3.NamedHeaderOrReference + (*NamedLinkOrReference)(nil), // 34: openapi.v3.NamedLinkOrReference + (*NamedMediaType)(nil), // 35: openapi.v3.NamedMediaType + (*NamedParameterOrReference)(nil), // 36: openapi.v3.NamedParameterOrReference + (*NamedPathItem)(nil), // 37: openapi.v3.NamedPathItem + (*NamedRequestBodyOrReference)(nil), // 38: openapi.v3.NamedRequestBodyOrReference + (*NamedResponseOrReference)(nil), // 39: openapi.v3.NamedResponseOrReference + (*NamedSchemaOrReference)(nil), // 40: openapi.v3.NamedSchemaOrReference + (*NamedSecuritySchemeOrReference)(nil), // 41: openapi.v3.NamedSecuritySchemeOrReference + (*NamedServerVariable)(nil), // 42: openapi.v3.NamedServerVariable + (*NamedString)(nil), // 43: openapi.v3.NamedString + (*NamedStringArray)(nil), // 44: openapi.v3.NamedStringArray + (*OauthFlow)(nil), // 45: openapi.v3.OauthFlow + (*OauthFlows)(nil), // 46: openapi.v3.OauthFlows + (*Object)(nil), // 47: openapi.v3.Object + (*Operation)(nil), // 48: openapi.v3.Operation + (*Parameter)(nil), // 49: openapi.v3.Parameter + (*ParameterOrReference)(nil), // 50: openapi.v3.ParameterOrReference + (*ParametersOrReferences)(nil), // 51: openapi.v3.ParametersOrReferences + (*PathItem)(nil), // 52: openapi.v3.PathItem + (*Paths)(nil), // 53: openapi.v3.Paths + (*Properties)(nil), // 54: openapi.v3.Properties + (*Reference)(nil), // 55: openapi.v3.Reference + (*RequestBodiesOrReferences)(nil), // 56: openapi.v3.RequestBodiesOrReferences + (*RequestBody)(nil), // 57: openapi.v3.RequestBody + (*RequestBodyOrReference)(nil), // 58: openapi.v3.RequestBodyOrReference + (*Response)(nil), // 59: openapi.v3.Response + (*ResponseOrReference)(nil), // 60: openapi.v3.ResponseOrReference + (*Responses)(nil), // 61: openapi.v3.Responses + (*ResponsesOrReferences)(nil), // 62: openapi.v3.ResponsesOrReferences + (*Schema)(nil), // 63: openapi.v3.Schema + (*SchemaOrReference)(nil), // 64: openapi.v3.SchemaOrReference + (*SchemasOrReferences)(nil), // 65: openapi.v3.SchemasOrReferences + (*SecurityRequirement)(nil), // 66: openapi.v3.SecurityRequirement + (*SecurityScheme)(nil), // 67: openapi.v3.SecurityScheme + (*SecuritySchemeOrReference)(nil), // 68: openapi.v3.SecuritySchemeOrReference + (*SecuritySchemesOrReferences)(nil), // 69: openapi.v3.SecuritySchemesOrReferences + (*Server)(nil), // 70: openapi.v3.Server + (*ServerVariable)(nil), // 71: openapi.v3.ServerVariable + (*ServerVariables)(nil), // 72: openapi.v3.ServerVariables + (*SpecificationExtension)(nil), // 73: openapi.v3.SpecificationExtension + (*StringArray)(nil), // 74: openapi.v3.StringArray + (*Strings)(nil), // 75: openapi.v3.Strings + (*Tag)(nil), // 76: openapi.v3.Tag + (*Xml)(nil), // 77: openapi.v3.Xml + (*anypb.Any)(nil), // 78: google.protobuf.Any +} +var file_openapiv3_OpenAPIv3_proto_depIdxs = []int32{ + 64, // 0: openapi.v3.AdditionalPropertiesItem.schema_or_reference:type_name -> openapi.v3.SchemaOrReference + 78, // 1: openapi.v3.Any.value:type_name -> google.protobuf.Any + 1, // 2: openapi.v3.AnyOrExpression.any:type_name -> openapi.v3.Any + 16, // 3: openapi.v3.AnyOrExpression.expression:type_name -> openapi.v3.Expression + 37, // 4: openapi.v3.Callback.path:type_name -> openapi.v3.NamedPathItem + 29, // 5: openapi.v3.Callback.specification_extension:type_name -> openapi.v3.NamedAny + 3, // 6: openapi.v3.CallbackOrReference.callback:type_name -> openapi.v3.Callback + 55, // 7: openapi.v3.CallbackOrReference.reference:type_name -> openapi.v3.Reference + 30, // 8: openapi.v3.CallbacksOrReferences.additional_properties:type_name -> openapi.v3.NamedCallbackOrReference + 65, // 9: openapi.v3.Components.schemas:type_name -> openapi.v3.SchemasOrReferences + 62, // 10: openapi.v3.Components.responses:type_name -> openapi.v3.ResponsesOrReferences + 51, // 11: openapi.v3.Components.parameters:type_name -> openapi.v3.ParametersOrReferences + 15, // 12: openapi.v3.Components.examples:type_name -> openapi.v3.ExamplesOrReferences + 56, // 13: openapi.v3.Components.request_bodies:type_name -> openapi.v3.RequestBodiesOrReferences + 20, // 14: openapi.v3.Components.headers:type_name -> openapi.v3.HeadersOrReferences + 69, // 15: openapi.v3.Components.security_schemes:type_name -> openapi.v3.SecuritySchemesOrReferences + 26, // 16: openapi.v3.Components.links:type_name -> openapi.v3.LinksOrReferences + 5, // 17: openapi.v3.Components.callbacks:type_name -> openapi.v3.CallbacksOrReferences + 29, // 18: openapi.v3.Components.specification_extension:type_name -> openapi.v3.NamedAny + 29, // 19: openapi.v3.Contact.specification_extension:type_name -> openapi.v3.NamedAny + 75, // 20: openapi.v3.Discriminator.mapping:type_name -> openapi.v3.Strings + 29, // 21: openapi.v3.Discriminator.specification_extension:type_name -> openapi.v3.NamedAny + 21, // 22: openapi.v3.Document.info:type_name -> openapi.v3.Info + 70, // 23: openapi.v3.Document.servers:type_name -> openapi.v3.Server + 53, // 24: openapi.v3.Document.paths:type_name -> openapi.v3.Paths + 6, // 25: openapi.v3.Document.components:type_name -> openapi.v3.Components + 66, // 26: openapi.v3.Document.security:type_name -> openapi.v3.SecurityRequirement + 76, // 27: openapi.v3.Document.tags:type_name -> openapi.v3.Tag + 17, // 28: openapi.v3.Document.external_docs:type_name -> openapi.v3.ExternalDocs + 29, // 29: openapi.v3.Document.specification_extension:type_name -> openapi.v3.NamedAny + 20, // 30: openapi.v3.Encoding.headers:type_name -> openapi.v3.HeadersOrReferences + 29, // 31: openapi.v3.Encoding.specification_extension:type_name -> openapi.v3.NamedAny + 31, // 32: openapi.v3.Encodings.additional_properties:type_name -> openapi.v3.NamedEncoding + 1, // 33: openapi.v3.Example.value:type_name -> openapi.v3.Any + 29, // 34: openapi.v3.Example.specification_extension:type_name -> openapi.v3.NamedAny + 13, // 35: openapi.v3.ExampleOrReference.example:type_name -> openapi.v3.Example + 55, // 36: openapi.v3.ExampleOrReference.reference:type_name -> openapi.v3.Reference + 32, // 37: openapi.v3.ExamplesOrReferences.additional_properties:type_name -> openapi.v3.NamedExampleOrReference + 29, // 38: openapi.v3.Expression.additional_properties:type_name -> openapi.v3.NamedAny + 29, // 39: openapi.v3.ExternalDocs.specification_extension:type_name -> openapi.v3.NamedAny + 64, // 40: openapi.v3.Header.schema:type_name -> openapi.v3.SchemaOrReference + 1, // 41: openapi.v3.Header.example:type_name -> openapi.v3.Any + 15, // 42: openapi.v3.Header.examples:type_name -> openapi.v3.ExamplesOrReferences + 28, // 43: openapi.v3.Header.content:type_name -> openapi.v3.MediaTypes + 29, // 44: openapi.v3.Header.specification_extension:type_name -> openapi.v3.NamedAny + 18, // 45: openapi.v3.HeaderOrReference.header:type_name -> openapi.v3.Header + 55, // 46: openapi.v3.HeaderOrReference.reference:type_name -> openapi.v3.Reference + 33, // 47: openapi.v3.HeadersOrReferences.additional_properties:type_name -> openapi.v3.NamedHeaderOrReference + 7, // 48: openapi.v3.Info.contact:type_name -> openapi.v3.Contact + 23, // 49: openapi.v3.Info.license:type_name -> openapi.v3.License + 29, // 50: openapi.v3.Info.specification_extension:type_name -> openapi.v3.NamedAny + 64, // 51: openapi.v3.ItemsItem.schema_or_reference:type_name -> openapi.v3.SchemaOrReference + 29, // 52: openapi.v3.License.specification_extension:type_name -> openapi.v3.NamedAny + 2, // 53: openapi.v3.Link.parameters:type_name -> openapi.v3.AnyOrExpression + 2, // 54: openapi.v3.Link.request_body:type_name -> openapi.v3.AnyOrExpression + 70, // 55: openapi.v3.Link.server:type_name -> openapi.v3.Server + 29, // 56: openapi.v3.Link.specification_extension:type_name -> openapi.v3.NamedAny + 24, // 57: openapi.v3.LinkOrReference.link:type_name -> openapi.v3.Link + 55, // 58: openapi.v3.LinkOrReference.reference:type_name -> openapi.v3.Reference + 34, // 59: openapi.v3.LinksOrReferences.additional_properties:type_name -> openapi.v3.NamedLinkOrReference + 64, // 60: openapi.v3.MediaType.schema:type_name -> openapi.v3.SchemaOrReference + 1, // 61: openapi.v3.MediaType.example:type_name -> openapi.v3.Any + 15, // 62: openapi.v3.MediaType.examples:type_name -> openapi.v3.ExamplesOrReferences + 12, // 63: openapi.v3.MediaType.encoding:type_name -> openapi.v3.Encodings + 29, // 64: openapi.v3.MediaType.specification_extension:type_name -> openapi.v3.NamedAny + 35, // 65: openapi.v3.MediaTypes.additional_properties:type_name -> openapi.v3.NamedMediaType + 1, // 66: openapi.v3.NamedAny.value:type_name -> openapi.v3.Any + 4, // 67: openapi.v3.NamedCallbackOrReference.value:type_name -> openapi.v3.CallbackOrReference + 11, // 68: openapi.v3.NamedEncoding.value:type_name -> openapi.v3.Encoding + 14, // 69: openapi.v3.NamedExampleOrReference.value:type_name -> openapi.v3.ExampleOrReference + 19, // 70: openapi.v3.NamedHeaderOrReference.value:type_name -> openapi.v3.HeaderOrReference + 25, // 71: openapi.v3.NamedLinkOrReference.value:type_name -> openapi.v3.LinkOrReference + 27, // 72: openapi.v3.NamedMediaType.value:type_name -> openapi.v3.MediaType + 50, // 73: openapi.v3.NamedParameterOrReference.value:type_name -> openapi.v3.ParameterOrReference + 52, // 74: openapi.v3.NamedPathItem.value:type_name -> openapi.v3.PathItem + 58, // 75: openapi.v3.NamedRequestBodyOrReference.value:type_name -> openapi.v3.RequestBodyOrReference + 60, // 76: openapi.v3.NamedResponseOrReference.value:type_name -> openapi.v3.ResponseOrReference + 64, // 77: openapi.v3.NamedSchemaOrReference.value:type_name -> openapi.v3.SchemaOrReference + 68, // 78: openapi.v3.NamedSecuritySchemeOrReference.value:type_name -> openapi.v3.SecuritySchemeOrReference + 71, // 79: openapi.v3.NamedServerVariable.value:type_name -> openapi.v3.ServerVariable + 74, // 80: openapi.v3.NamedStringArray.value:type_name -> openapi.v3.StringArray + 75, // 81: openapi.v3.OauthFlow.scopes:type_name -> openapi.v3.Strings + 29, // 82: openapi.v3.OauthFlow.specification_extension:type_name -> openapi.v3.NamedAny + 45, // 83: openapi.v3.OauthFlows.implicit:type_name -> openapi.v3.OauthFlow + 45, // 84: openapi.v3.OauthFlows.password:type_name -> openapi.v3.OauthFlow + 45, // 85: openapi.v3.OauthFlows.client_credentials:type_name -> openapi.v3.OauthFlow + 45, // 86: openapi.v3.OauthFlows.authorization_code:type_name -> openapi.v3.OauthFlow + 29, // 87: openapi.v3.OauthFlows.specification_extension:type_name -> openapi.v3.NamedAny + 29, // 88: openapi.v3.Object.additional_properties:type_name -> openapi.v3.NamedAny + 17, // 89: openapi.v3.Operation.external_docs:type_name -> openapi.v3.ExternalDocs + 50, // 90: openapi.v3.Operation.parameters:type_name -> openapi.v3.ParameterOrReference + 58, // 91: openapi.v3.Operation.request_body:type_name -> openapi.v3.RequestBodyOrReference + 61, // 92: openapi.v3.Operation.responses:type_name -> openapi.v3.Responses + 5, // 93: openapi.v3.Operation.callbacks:type_name -> openapi.v3.CallbacksOrReferences + 66, // 94: openapi.v3.Operation.security:type_name -> openapi.v3.SecurityRequirement + 70, // 95: openapi.v3.Operation.servers:type_name -> openapi.v3.Server + 29, // 96: openapi.v3.Operation.specification_extension:type_name -> openapi.v3.NamedAny + 64, // 97: openapi.v3.Parameter.schema:type_name -> openapi.v3.SchemaOrReference + 1, // 98: openapi.v3.Parameter.example:type_name -> openapi.v3.Any + 15, // 99: openapi.v3.Parameter.examples:type_name -> openapi.v3.ExamplesOrReferences + 28, // 100: openapi.v3.Parameter.content:type_name -> openapi.v3.MediaTypes + 29, // 101: openapi.v3.Parameter.specification_extension:type_name -> openapi.v3.NamedAny + 49, // 102: openapi.v3.ParameterOrReference.parameter:type_name -> openapi.v3.Parameter + 55, // 103: openapi.v3.ParameterOrReference.reference:type_name -> openapi.v3.Reference + 36, // 104: openapi.v3.ParametersOrReferences.additional_properties:type_name -> openapi.v3.NamedParameterOrReference + 48, // 105: openapi.v3.PathItem.get:type_name -> openapi.v3.Operation + 48, // 106: openapi.v3.PathItem.put:type_name -> openapi.v3.Operation + 48, // 107: openapi.v3.PathItem.post:type_name -> openapi.v3.Operation + 48, // 108: openapi.v3.PathItem.delete:type_name -> openapi.v3.Operation + 48, // 109: openapi.v3.PathItem.options:type_name -> openapi.v3.Operation + 48, // 110: openapi.v3.PathItem.head:type_name -> openapi.v3.Operation + 48, // 111: openapi.v3.PathItem.patch:type_name -> openapi.v3.Operation + 48, // 112: openapi.v3.PathItem.trace:type_name -> openapi.v3.Operation + 70, // 113: openapi.v3.PathItem.servers:type_name -> openapi.v3.Server + 50, // 114: openapi.v3.PathItem.parameters:type_name -> openapi.v3.ParameterOrReference + 29, // 115: openapi.v3.PathItem.specification_extension:type_name -> openapi.v3.NamedAny + 37, // 116: openapi.v3.Paths.path:type_name -> openapi.v3.NamedPathItem + 29, // 117: openapi.v3.Paths.specification_extension:type_name -> openapi.v3.NamedAny + 40, // 118: openapi.v3.Properties.additional_properties:type_name -> openapi.v3.NamedSchemaOrReference + 38, // 119: openapi.v3.RequestBodiesOrReferences.additional_properties:type_name -> openapi.v3.NamedRequestBodyOrReference + 28, // 120: openapi.v3.RequestBody.content:type_name -> openapi.v3.MediaTypes + 29, // 121: openapi.v3.RequestBody.specification_extension:type_name -> openapi.v3.NamedAny + 57, // 122: openapi.v3.RequestBodyOrReference.request_body:type_name -> openapi.v3.RequestBody + 55, // 123: openapi.v3.RequestBodyOrReference.reference:type_name -> openapi.v3.Reference + 20, // 124: openapi.v3.Response.headers:type_name -> openapi.v3.HeadersOrReferences + 28, // 125: openapi.v3.Response.content:type_name -> openapi.v3.MediaTypes + 26, // 126: openapi.v3.Response.links:type_name -> openapi.v3.LinksOrReferences + 29, // 127: openapi.v3.Response.specification_extension:type_name -> openapi.v3.NamedAny + 59, // 128: openapi.v3.ResponseOrReference.response:type_name -> openapi.v3.Response + 55, // 129: openapi.v3.ResponseOrReference.reference:type_name -> openapi.v3.Reference + 60, // 130: openapi.v3.Responses.default:type_name -> openapi.v3.ResponseOrReference + 39, // 131: openapi.v3.Responses.response_or_reference:type_name -> openapi.v3.NamedResponseOrReference + 29, // 132: openapi.v3.Responses.specification_extension:type_name -> openapi.v3.NamedAny + 39, // 133: openapi.v3.ResponsesOrReferences.additional_properties:type_name -> openapi.v3.NamedResponseOrReference + 9, // 134: openapi.v3.Schema.discriminator:type_name -> openapi.v3.Discriminator + 77, // 135: openapi.v3.Schema.xml:type_name -> openapi.v3.Xml + 17, // 136: openapi.v3.Schema.external_docs:type_name -> openapi.v3.ExternalDocs + 1, // 137: openapi.v3.Schema.example:type_name -> openapi.v3.Any + 1, // 138: openapi.v3.Schema.enum:type_name -> openapi.v3.Any + 64, // 139: openapi.v3.Schema.all_of:type_name -> openapi.v3.SchemaOrReference + 64, // 140: openapi.v3.Schema.one_of:type_name -> openapi.v3.SchemaOrReference + 64, // 141: openapi.v3.Schema.any_of:type_name -> openapi.v3.SchemaOrReference + 63, // 142: openapi.v3.Schema.not:type_name -> openapi.v3.Schema + 22, // 143: openapi.v3.Schema.items:type_name -> openapi.v3.ItemsItem + 54, // 144: openapi.v3.Schema.properties:type_name -> openapi.v3.Properties + 0, // 145: openapi.v3.Schema.additional_properties:type_name -> openapi.v3.AdditionalPropertiesItem + 8, // 146: openapi.v3.Schema.default:type_name -> openapi.v3.DefaultType + 29, // 147: openapi.v3.Schema.specification_extension:type_name -> openapi.v3.NamedAny + 63, // 148: openapi.v3.SchemaOrReference.schema:type_name -> openapi.v3.Schema + 55, // 149: openapi.v3.SchemaOrReference.reference:type_name -> openapi.v3.Reference + 40, // 150: openapi.v3.SchemasOrReferences.additional_properties:type_name -> openapi.v3.NamedSchemaOrReference + 44, // 151: openapi.v3.SecurityRequirement.additional_properties:type_name -> openapi.v3.NamedStringArray + 46, // 152: openapi.v3.SecurityScheme.flows:type_name -> openapi.v3.OauthFlows + 29, // 153: openapi.v3.SecurityScheme.specification_extension:type_name -> openapi.v3.NamedAny + 67, // 154: openapi.v3.SecuritySchemeOrReference.security_scheme:type_name -> openapi.v3.SecurityScheme + 55, // 155: openapi.v3.SecuritySchemeOrReference.reference:type_name -> openapi.v3.Reference + 41, // 156: openapi.v3.SecuritySchemesOrReferences.additional_properties:type_name -> openapi.v3.NamedSecuritySchemeOrReference + 72, // 157: openapi.v3.Server.variables:type_name -> openapi.v3.ServerVariables + 29, // 158: openapi.v3.Server.specification_extension:type_name -> openapi.v3.NamedAny + 29, // 159: openapi.v3.ServerVariable.specification_extension:type_name -> openapi.v3.NamedAny + 42, // 160: openapi.v3.ServerVariables.additional_properties:type_name -> openapi.v3.NamedServerVariable + 43, // 161: openapi.v3.Strings.additional_properties:type_name -> openapi.v3.NamedString + 17, // 162: openapi.v3.Tag.external_docs:type_name -> openapi.v3.ExternalDocs + 29, // 163: openapi.v3.Tag.specification_extension:type_name -> openapi.v3.NamedAny + 29, // 164: openapi.v3.Xml.specification_extension:type_name -> openapi.v3.NamedAny + 165, // [165:165] is the sub-list for method output_type + 165, // [165:165] is the sub-list for method input_type + 165, // [165:165] is the sub-list for extension type_name + 165, // [165:165] is the sub-list for extension extendee + 0, // [0:165] is the sub-list for field type_name +} + +func init() { file_openapiv3_OpenAPIv3_proto_init() } +func file_openapiv3_OpenAPIv3_proto_init() { + if File_openapiv3_OpenAPIv3_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_openapiv3_OpenAPIv3_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AdditionalPropertiesItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Any); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AnyOrExpression); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Callback); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CallbackOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CallbacksOrReferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Components); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Contact); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DefaultType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Discriminator); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Document); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Encoding); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Encodings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Example); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExampleOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExamplesOrReferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Expression); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExternalDocs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Header); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HeaderOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HeadersOrReferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Info); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ItemsItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*License); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Link); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinksOrReferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MediaType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MediaTypes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedAny); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedCallbackOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedEncoding); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedExampleOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedHeaderOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedLinkOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedMediaType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedParameterOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedPathItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedRequestBodyOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedResponseOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedSchemaOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedSecuritySchemeOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedServerVariable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedStringArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OauthFlow); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OauthFlows); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Object); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Operation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Parameter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParameterOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParametersOrReferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PathItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Paths); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Properties); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Reference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestBodiesOrReferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestBody); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestBodyOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Response); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResponseOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Responses); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResponsesOrReferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Schema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SchemaOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SchemasOrReferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecurityRequirement); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecurityScheme); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecuritySchemeOrReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecuritySchemesOrReferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Server); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ServerVariable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ServerVariables); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SpecificationExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StringArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Strings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tag); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Xml); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_openapiv3_OpenAPIv3_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*AdditionalPropertiesItem_SchemaOrReference)(nil), + (*AdditionalPropertiesItem_Boolean)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[2].OneofWrappers = []interface{}{ + (*AnyOrExpression_Any)(nil), + (*AnyOrExpression_Expression)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[4].OneofWrappers = []interface{}{ + (*CallbackOrReference_Callback)(nil), + (*CallbackOrReference_Reference)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[8].OneofWrappers = []interface{}{ + (*DefaultType_Number)(nil), + (*DefaultType_Boolean)(nil), + (*DefaultType_String_)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[14].OneofWrappers = []interface{}{ + (*ExampleOrReference_Example)(nil), + (*ExampleOrReference_Reference)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[19].OneofWrappers = []interface{}{ + (*HeaderOrReference_Header)(nil), + (*HeaderOrReference_Reference)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[25].OneofWrappers = []interface{}{ + (*LinkOrReference_Link)(nil), + (*LinkOrReference_Reference)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[50].OneofWrappers = []interface{}{ + (*ParameterOrReference_Parameter)(nil), + (*ParameterOrReference_Reference)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[58].OneofWrappers = []interface{}{ + (*RequestBodyOrReference_RequestBody)(nil), + (*RequestBodyOrReference_Reference)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[60].OneofWrappers = []interface{}{ + (*ResponseOrReference_Response)(nil), + (*ResponseOrReference_Reference)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[64].OneofWrappers = []interface{}{ + (*SchemaOrReference_Schema)(nil), + (*SchemaOrReference_Reference)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[68].OneofWrappers = []interface{}{ + (*SecuritySchemeOrReference_SecurityScheme)(nil), + (*SecuritySchemeOrReference_Reference)(nil), + } + file_openapiv3_OpenAPIv3_proto_msgTypes[73].OneofWrappers = []interface{}{ + (*SpecificationExtension_Number)(nil), + (*SpecificationExtension_Boolean)(nil), + (*SpecificationExtension_String_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_openapiv3_OpenAPIv3_proto_rawDesc, + NumEnums: 0, + NumMessages: 78, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_openapiv3_OpenAPIv3_proto_goTypes, + DependencyIndexes: file_openapiv3_OpenAPIv3_proto_depIdxs, + MessageInfos: file_openapiv3_OpenAPIv3_proto_msgTypes, + }.Build() + File_openapiv3_OpenAPIv3_proto = out.File + file_openapiv3_OpenAPIv3_proto_rawDesc = nil + file_openapiv3_OpenAPIv3_proto_goTypes = nil + file_openapiv3_OpenAPIv3_proto_depIdxs = nil +} diff --git a/vendor/github.com/google/gnostic/openapiv3/OpenAPIv3.proto b/vendor/github.com/google/gnostic/openapiv3/OpenAPIv3.proto new file mode 100644 index 00000000..1be335b8 --- /dev/null +++ b/vendor/github.com/google/gnostic/openapiv3/OpenAPIv3.proto @@ -0,0 +1,672 @@ +// Copyright 2020 Google LLC. All Rights Reserved. +// +// 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. + +// THIS FILE IS AUTOMATICALLY GENERATED. + +syntax = "proto3"; + +package openapi.v3; + +import "google/protobuf/any.proto"; + +// This option lets the proto compiler generate Java code inside the package +// name (see below) instead of inside an outer class. It creates a simpler +// developer experience by reducing one-level of name nesting and be +// consistent with most programming languages that don't support outer classes. +option java_multiple_files = true; + +// The Java outer classname should be the filename in UpperCamelCase. This +// class is only used to hold proto descriptor, so developers don't need to +// work with it directly. +option java_outer_classname = "OpenAPIProto"; + +// The Java package name must be proto package name with proper prefix. +option java_package = "org.openapi_v3"; + +// A reasonable prefix for the Objective-C symbols generated from the package. +// It should at a minimum be 3 characters long, all uppercase, and convention +// is to use an abbreviation of the package name. Something short, but +// hopefully unique enough to not conflict with things that may come along in +// the future. 'GPB' is reserved for the protocol buffer implementation itself. +option objc_class_prefix = "OAS"; + +// The Go package name. +option go_package = "./openapiv3;openapi_v3"; + +message AdditionalPropertiesItem { + oneof oneof { + SchemaOrReference schema_or_reference = 1; + bool boolean = 2; + } +} + +message Any { + google.protobuf.Any value = 1; + string yaml = 2; +} + +message AnyOrExpression { + oneof oneof { + Any any = 1; + Expression expression = 2; + } +} + +// A map of possible out-of band callbacks related to the parent operation. Each value in the map is a Path Item Object that describes a set of requests that may be initiated by the API provider and the expected responses. The key value used to identify the callback object is an expression, evaluated at runtime, that identifies a URL to use for the callback operation. +message Callback { + repeated NamedPathItem path = 1; + repeated NamedAny specification_extension = 2; +} + +message CallbackOrReference { + oneof oneof { + Callback callback = 1; + Reference reference = 2; + } +} + +message CallbacksOrReferences { + repeated NamedCallbackOrReference additional_properties = 1; +} + +// Holds a set of reusable objects for different aspects of the OAS. All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. +message Components { + SchemasOrReferences schemas = 1; + ResponsesOrReferences responses = 2; + ParametersOrReferences parameters = 3; + ExamplesOrReferences examples = 4; + RequestBodiesOrReferences request_bodies = 5; + HeadersOrReferences headers = 6; + SecuritySchemesOrReferences security_schemes = 7; + LinksOrReferences links = 8; + CallbacksOrReferences callbacks = 9; + repeated NamedAny specification_extension = 10; +} + +// Contact information for the exposed API. +message Contact { + string name = 1; + string url = 2; + string email = 3; + repeated NamedAny specification_extension = 4; +} + +message DefaultType { + oneof oneof { + double number = 1; + bool boolean = 2; + string string = 3; + } +} + +// When request bodies or response payloads may be one of a number of different schemas, a `discriminator` object can be used to aid in serialization, deserialization, and validation. The discriminator is a specific object in a schema which is used to inform the consumer of the specification of an alternative schema based on the value associated with it. When using the discriminator, _inline_ schemas will not be considered. +message Discriminator { + string property_name = 1; + Strings mapping = 2; + repeated NamedAny specification_extension = 3; +} + +message Document { + string openapi = 1; + Info info = 2; + repeated Server servers = 3; + Paths paths = 4; + Components components = 5; + repeated SecurityRequirement security = 6; + repeated Tag tags = 7; + ExternalDocs external_docs = 8; + repeated NamedAny specification_extension = 9; +} + +// A single encoding definition applied to a single schema property. +message Encoding { + string content_type = 1; + HeadersOrReferences headers = 2; + string style = 3; + bool explode = 4; + bool allow_reserved = 5; + repeated NamedAny specification_extension = 6; +} + +message Encodings { + repeated NamedEncoding additional_properties = 1; +} + +message Example { + string summary = 1; + string description = 2; + Any value = 3; + string external_value = 4; + repeated NamedAny specification_extension = 5; +} + +message ExampleOrReference { + oneof oneof { + Example example = 1; + Reference reference = 2; + } +} + +message ExamplesOrReferences { + repeated NamedExampleOrReference additional_properties = 1; +} + +message Expression { + repeated NamedAny additional_properties = 1; +} + +// Allows referencing an external resource for extended documentation. +message ExternalDocs { + string description = 1; + string url = 2; + repeated NamedAny specification_extension = 3; +} + +// The Header Object follows the structure of the Parameter Object with the following changes: 1. `name` MUST NOT be specified, it is given in the corresponding `headers` map. 1. `in` MUST NOT be specified, it is implicitly in `header`. 1. All traits that are affected by the location MUST be applicable to a location of `header` (for example, `style`). +message Header { + string description = 1; + bool required = 2; + bool deprecated = 3; + bool allow_empty_value = 4; + string style = 5; + bool explode = 6; + bool allow_reserved = 7; + SchemaOrReference schema = 8; + Any example = 9; + ExamplesOrReferences examples = 10; + MediaTypes content = 11; + repeated NamedAny specification_extension = 12; +} + +message HeaderOrReference { + oneof oneof { + Header header = 1; + Reference reference = 2; + } +} + +message HeadersOrReferences { + repeated NamedHeaderOrReference additional_properties = 1; +} + +// The object provides metadata about the API. The metadata MAY be used by the clients if needed, and MAY be presented in editing or documentation generation tools for convenience. +message Info { + string title = 1; + string description = 2; + string terms_of_service = 3; + Contact contact = 4; + License license = 5; + string version = 6; + repeated NamedAny specification_extension = 7; + string summary = 8; +} + +message ItemsItem { + repeated SchemaOrReference schema_or_reference = 1; +} + +// License information for the exposed API. +message License { + string name = 1; + string url = 2; + repeated NamedAny specification_extension = 3; +} + +// The `Link object` represents a possible design-time link for a response. The presence of a link does not guarantee the caller's ability to successfully invoke it, rather it provides a known relationship and traversal mechanism between responses and other operations. Unlike _dynamic_ links (i.e. links provided **in** the response payload), the OAS linking mechanism does not require link information in the runtime response. For computing links, and providing instructions to execute them, a runtime expression is used for accessing values in an operation and using them as parameters while invoking the linked operation. +message Link { + string operation_ref = 1; + string operation_id = 2; + AnyOrExpression parameters = 3; + AnyOrExpression request_body = 4; + string description = 5; + Server server = 6; + repeated NamedAny specification_extension = 7; +} + +message LinkOrReference { + oneof oneof { + Link link = 1; + Reference reference = 2; + } +} + +message LinksOrReferences { + repeated NamedLinkOrReference additional_properties = 1; +} + +// Each Media Type Object provides schema and examples for the media type identified by its key. +message MediaType { + SchemaOrReference schema = 1; + Any example = 2; + ExamplesOrReferences examples = 3; + Encodings encoding = 4; + repeated NamedAny specification_extension = 5; +} + +message MediaTypes { + repeated NamedMediaType additional_properties = 1; +} + +// Automatically-generated message used to represent maps of Any as ordered (name,value) pairs. +message NamedAny { + // Map key + string name = 1; + // Mapped value + Any value = 2; +} + +// Automatically-generated message used to represent maps of CallbackOrReference as ordered (name,value) pairs. +message NamedCallbackOrReference { + // Map key + string name = 1; + // Mapped value + CallbackOrReference value = 2; +} + +// Automatically-generated message used to represent maps of Encoding as ordered (name,value) pairs. +message NamedEncoding { + // Map key + string name = 1; + // Mapped value + Encoding value = 2; +} + +// Automatically-generated message used to represent maps of ExampleOrReference as ordered (name,value) pairs. +message NamedExampleOrReference { + // Map key + string name = 1; + // Mapped value + ExampleOrReference value = 2; +} + +// Automatically-generated message used to represent maps of HeaderOrReference as ordered (name,value) pairs. +message NamedHeaderOrReference { + // Map key + string name = 1; + // Mapped value + HeaderOrReference value = 2; +} + +// Automatically-generated message used to represent maps of LinkOrReference as ordered (name,value) pairs. +message NamedLinkOrReference { + // Map key + string name = 1; + // Mapped value + LinkOrReference value = 2; +} + +// Automatically-generated message used to represent maps of MediaType as ordered (name,value) pairs. +message NamedMediaType { + // Map key + string name = 1; + // Mapped value + MediaType value = 2; +} + +// Automatically-generated message used to represent maps of ParameterOrReference as ordered (name,value) pairs. +message NamedParameterOrReference { + // Map key + string name = 1; + // Mapped value + ParameterOrReference value = 2; +} + +// Automatically-generated message used to represent maps of PathItem as ordered (name,value) pairs. +message NamedPathItem { + // Map key + string name = 1; + // Mapped value + PathItem value = 2; +} + +// Automatically-generated message used to represent maps of RequestBodyOrReference as ordered (name,value) pairs. +message NamedRequestBodyOrReference { + // Map key + string name = 1; + // Mapped value + RequestBodyOrReference value = 2; +} + +// Automatically-generated message used to represent maps of ResponseOrReference as ordered (name,value) pairs. +message NamedResponseOrReference { + // Map key + string name = 1; + // Mapped value + ResponseOrReference value = 2; +} + +// Automatically-generated message used to represent maps of SchemaOrReference as ordered (name,value) pairs. +message NamedSchemaOrReference { + // Map key + string name = 1; + // Mapped value + SchemaOrReference value = 2; +} + +// Automatically-generated message used to represent maps of SecuritySchemeOrReference as ordered (name,value) pairs. +message NamedSecuritySchemeOrReference { + // Map key + string name = 1; + // Mapped value + SecuritySchemeOrReference value = 2; +} + +// Automatically-generated message used to represent maps of ServerVariable as ordered (name,value) pairs. +message NamedServerVariable { + // Map key + string name = 1; + // Mapped value + ServerVariable value = 2; +} + +// Automatically-generated message used to represent maps of string as ordered (name,value) pairs. +message NamedString { + // Map key + string name = 1; + // Mapped value + string value = 2; +} + +// Automatically-generated message used to represent maps of StringArray as ordered (name,value) pairs. +message NamedStringArray { + // Map key + string name = 1; + // Mapped value + StringArray value = 2; +} + +// Configuration details for a supported OAuth Flow +message OauthFlow { + string authorization_url = 1; + string token_url = 2; + string refresh_url = 3; + Strings scopes = 4; + repeated NamedAny specification_extension = 5; +} + +// Allows configuration of the supported OAuth Flows. +message OauthFlows { + OauthFlow implicit = 1; + OauthFlow password = 2; + OauthFlow client_credentials = 3; + OauthFlow authorization_code = 4; + repeated NamedAny specification_extension = 5; +} + +message Object { + repeated NamedAny additional_properties = 1; +} + +// Describes a single API operation on a path. +message Operation { + repeated string tags = 1; + string summary = 2; + string description = 3; + ExternalDocs external_docs = 4; + string operation_id = 5; + repeated ParameterOrReference parameters = 6; + RequestBodyOrReference request_body = 7; + Responses responses = 8; + CallbacksOrReferences callbacks = 9; + bool deprecated = 10; + repeated SecurityRequirement security = 11; + repeated Server servers = 12; + repeated NamedAny specification_extension = 13; +} + +// Describes a single operation parameter. A unique parameter is defined by a combination of a name and location. +message Parameter { + string name = 1; + string in = 2; + string description = 3; + bool required = 4; + bool deprecated = 5; + bool allow_empty_value = 6; + string style = 7; + bool explode = 8; + bool allow_reserved = 9; + SchemaOrReference schema = 10; + Any example = 11; + ExamplesOrReferences examples = 12; + MediaTypes content = 13; + repeated NamedAny specification_extension = 14; +} + +message ParameterOrReference { + oneof oneof { + Parameter parameter = 1; + Reference reference = 2; + } +} + +message ParametersOrReferences { + repeated NamedParameterOrReference additional_properties = 1; +} + +// Describes the operations available on a single path. A Path Item MAY be empty, due to ACL constraints. The path itself is still exposed to the documentation viewer but they will not know which operations and parameters are available. +message PathItem { + string _ref = 1; + string summary = 2; + string description = 3; + Operation get = 4; + Operation put = 5; + Operation post = 6; + Operation delete = 7; + Operation options = 8; + Operation head = 9; + Operation patch = 10; + Operation trace = 11; + repeated Server servers = 12; + repeated ParameterOrReference parameters = 13; + repeated NamedAny specification_extension = 14; +} + +// Holds the relative paths to the individual endpoints and their operations. The path is appended to the URL from the `Server Object` in order to construct the full URL. The Paths MAY be empty, due to ACL constraints. +message Paths { + repeated NamedPathItem path = 1; + repeated NamedAny specification_extension = 2; +} + +message Properties { + repeated NamedSchemaOrReference additional_properties = 1; +} + +// A simple object to allow referencing other components in the specification, internally and externally. The Reference Object is defined by JSON Reference and follows the same structure, behavior and rules. For this specification, reference resolution is accomplished as defined by the JSON Reference specification and not by the JSON Schema specification. +message Reference { + string _ref = 1; + string summary = 2; + string description = 3; +} + +message RequestBodiesOrReferences { + repeated NamedRequestBodyOrReference additional_properties = 1; +} + +// Describes a single request body. +message RequestBody { + string description = 1; + MediaTypes content = 2; + bool required = 3; + repeated NamedAny specification_extension = 4; +} + +message RequestBodyOrReference { + oneof oneof { + RequestBody request_body = 1; + Reference reference = 2; + } +} + +// Describes a single response from an API Operation, including design-time, static `links` to operations based on the response. +message Response { + string description = 1; + HeadersOrReferences headers = 2; + MediaTypes content = 3; + LinksOrReferences links = 4; + repeated NamedAny specification_extension = 5; +} + +message ResponseOrReference { + oneof oneof { + Response response = 1; + Reference reference = 2; + } +} + +// A container for the expected responses of an operation. The container maps a HTTP response code to the expected response. The documentation is not necessarily expected to cover all possible HTTP response codes because they may not be known in advance. However, documentation is expected to cover a successful operation response and any known errors. The `default` MAY be used as a default response object for all HTTP codes that are not covered individually by the specification. The `Responses Object` MUST contain at least one response code, and it SHOULD be the response for a successful operation call. +message Responses { + ResponseOrReference default = 1; + repeated NamedResponseOrReference response_or_reference = 2; + repeated NamedAny specification_extension = 3; +} + +message ResponsesOrReferences { + repeated NamedResponseOrReference additional_properties = 1; +} + +// The Schema Object allows the definition of input and output data types. These types can be objects, but also primitives and arrays. This object is an extended subset of the JSON Schema Specification Wright Draft 00. For more information about the properties, see JSON Schema Core and JSON Schema Validation. Unless stated otherwise, the property definitions follow the JSON Schema. +message Schema { + bool nullable = 1; + Discriminator discriminator = 2; + bool read_only = 3; + bool write_only = 4; + Xml xml = 5; + ExternalDocs external_docs = 6; + Any example = 7; + bool deprecated = 8; + string title = 9; + double multiple_of = 10; + double maximum = 11; + bool exclusive_maximum = 12; + double minimum = 13; + bool exclusive_minimum = 14; + int64 max_length = 15; + int64 min_length = 16; + string pattern = 17; + int64 max_items = 18; + int64 min_items = 19; + bool unique_items = 20; + int64 max_properties = 21; + int64 min_properties = 22; + repeated string required = 23; + repeated Any enum = 24; + string type = 25; + repeated SchemaOrReference all_of = 26; + repeated SchemaOrReference one_of = 27; + repeated SchemaOrReference any_of = 28; + Schema not = 29; + ItemsItem items = 30; + Properties properties = 31; + AdditionalPropertiesItem additional_properties = 32; + DefaultType default = 33; + string description = 34; + string format = 35; + repeated NamedAny specification_extension = 36; +} + +message SchemaOrReference { + oneof oneof { + Schema schema = 1; + Reference reference = 2; + } +} + +message SchemasOrReferences { + repeated NamedSchemaOrReference additional_properties = 1; +} + +// Lists the required security schemes to execute this operation. The name used for each property MUST correspond to a security scheme declared in the Security Schemes under the Components Object. Security Requirement Objects that contain multiple schemes require that all schemes MUST be satisfied for a request to be authorized. This enables support for scenarios where multiple query parameters or HTTP headers are required to convey security information. When a list of Security Requirement Objects is defined on the OpenAPI Object or Operation Object, only one of the Security Requirement Objects in the list needs to be satisfied to authorize the request. +message SecurityRequirement { + repeated NamedStringArray additional_properties = 1; +} + +// Defines a security scheme that can be used by the operations. Supported schemes are HTTP authentication, an API key (either as a header, a cookie parameter or as a query parameter), mutual TLS (use of a client certificate), OAuth2's common flows (implicit, password, application and access code) as defined in RFC6749, and OpenID Connect. Please note that currently (2019) the implicit flow is about to be deprecated OAuth 2.0 Security Best Current Practice. Recommended for most use case is Authorization Code Grant flow with PKCE. +message SecurityScheme { + string type = 1; + string description = 2; + string name = 3; + string in = 4; + string scheme = 5; + string bearer_format = 6; + OauthFlows flows = 7; + string open_id_connect_url = 8; + repeated NamedAny specification_extension = 9; +} + +message SecuritySchemeOrReference { + oneof oneof { + SecurityScheme security_scheme = 1; + Reference reference = 2; + } +} + +message SecuritySchemesOrReferences { + repeated NamedSecuritySchemeOrReference additional_properties = 1; +} + +// An object representing a Server. +message Server { + string url = 1; + string description = 2; + ServerVariables variables = 3; + repeated NamedAny specification_extension = 4; +} + +// An object representing a Server Variable for server URL template substitution. +message ServerVariable { + repeated string enum = 1; + string default = 2; + string description = 3; + repeated NamedAny specification_extension = 4; +} + +message ServerVariables { + repeated NamedServerVariable additional_properties = 1; +} + +// Any property starting with x- is valid. +message SpecificationExtension { + oneof oneof { + double number = 1; + bool boolean = 2; + string string = 3; + } +} + +message StringArray { + repeated string value = 1; +} + +message Strings { + repeated NamedString additional_properties = 1; +} + +// Adds metadata to a single tag that is used by the Operation Object. It is not mandatory to have a Tag Object per tag defined in the Operation Object instances. +message Tag { + string name = 1; + string description = 2; + ExternalDocs external_docs = 3; + repeated NamedAny specification_extension = 4; +} + +// A metadata object that allows for more fine-tuned XML model definitions. When using arrays, XML element names are *not* inferred (for singular/plural forms) and the `name` property SHOULD be used to add that information. See examples for expected behavior. +message Xml { + string name = 1; + string namespace = 2; + string prefix = 3; + bool attribute = 4; + bool wrapped = 5; + repeated NamedAny specification_extension = 6; +} + diff --git a/vendor/github.com/google/gnostic/openapiv3/README.md b/vendor/github.com/google/gnostic/openapiv3/README.md new file mode 100644 index 00000000..5ee12d92 --- /dev/null +++ b/vendor/github.com/google/gnostic/openapiv3/README.md @@ -0,0 +1,21 @@ +# OpenAPI v3 Protocol Buffer Models + +This directory contains a Protocol Buffer-language model and related code for +supporting OpenAPI v3. + +Gnostic applications and plugins can use OpenAPIv3.proto to generate Protocol +Buffer support code for their preferred languages. + +OpenAPIv3.go is used by Gnostic to read JSON and YAML OpenAPI descriptions into +the Protocol Buffer-based datastructures generated from OpenAPIv3.proto. + +OpenAPIv3.proto and OpenAPIv3.go are generated by the Gnostic compiler +generator, and OpenAPIv3.pb.go is generated by protoc, the Protocol Buffer +compiler, and protoc-gen-go, the Protocol Buffer Go code generation plugin. + +openapi-3.1.json is a JSON schema for OpenAPI 3.1 that is automatically +generated from the OpenAPI 3.1 specification. It is not an official JSON Schema +for OpenAPI. + +The schema-generator directory contains support code which generates +openapi-3.1.json from the OpenAPI 3.1 specification document (Markdown). diff --git a/vendor/github.com/google/gnostic/openapiv3/document.go b/vendor/github.com/google/gnostic/openapiv3/document.go new file mode 100644 index 00000000..ef10d1d9 --- /dev/null +++ b/vendor/github.com/google/gnostic/openapiv3/document.go @@ -0,0 +1,42 @@ +// Copyright 2020 Google LLC. All Rights Reserved. +// +// 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 openapi_v3 + +import ( + "gopkg.in/yaml.v3" + + "github.com/google/gnostic/compiler" +) + +// ParseDocument reads an OpenAPI v3 description from a YAML/JSON representation. +func ParseDocument(b []byte) (*Document, error) { + info, err := compiler.ReadInfoFromBytes("", b) + if err != nil { + return nil, err + } + root := info.Content[0] + return NewDocument(root, compiler.NewContextWithExtensions("$root", root, nil, nil)) +} + +// YAMLValue produces a serialized YAML representation of the document. +func (d *Document) YAMLValue(comment string) ([]byte, error) { + rawInfo := d.ToRawInfo() + rawInfo = &yaml.Node{ + Kind: yaml.DocumentNode, + Content: []*yaml.Node{rawInfo}, + HeadComment: comment, + } + return yaml.Marshal(rawInfo) +} diff --git a/vendor/github.com/google/gnostic/openapiv3/openapi-3.0.json b/vendor/github.com/google/gnostic/openapiv3/openapi-3.0.json new file mode 100644 index 00000000..d5caed16 --- /dev/null +++ b/vendor/github.com/google/gnostic/openapiv3/openapi-3.0.json @@ -0,0 +1,1251 @@ +{ + "title": "A JSON Schema for OpenAPI 3.0.", + "id": "http://openapis.org/v3/schema.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "description": "This is the root document object of the OpenAPI document.", + "required": [ + "openapi", + "info", + "paths" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "openapi": { + "type": "string" + }, + "info": { + "$ref": "#/definitions/info" + }, + "servers": { + "type": "array", + "items": { + "$ref": "#/definitions/server" + }, + "uniqueItems": true + }, + "paths": { + "$ref": "#/definitions/paths" + }, + "components": { + "$ref": "#/definitions/components" + }, + "security": { + "type": "array", + "items": { + "$ref": "#/definitions/securityRequirement" + }, + "uniqueItems": true + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/definitions/tag" + }, + "uniqueItems": true + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + } + }, + "definitions": { + "info": { + "type": "object", + "description": "The object provides metadata about the API. The metadata MAY be used by the clients if needed, and MAY be presented in editing or documentation generation tools for convenience.", + "required": [ + "title", + "version" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "termsOfService": { + "type": "string" + }, + "contact": { + "$ref": "#/definitions/contact" + }, + "license": { + "$ref": "#/definitions/license" + }, + "version": { + "type": "string" + } + } + }, + "contact": { + "type": "object", + "description": "Contact information for the exposed API.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "email": { + "type": "string", + "format": "email" + } + } + }, + "license": { + "type": "object", + "description": "License information for the exposed API.", + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "server": { + "type": "object", + "description": "An object representing a Server.", + "required": [ + "url" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "url": { + "type": "string" + }, + "description": { + "type": "string" + }, + "variables": { + "$ref": "#/definitions/serverVariables" + } + } + }, + "serverVariable": { + "type": "object", + "description": "An object representing a Server Variable for server URL template substitution.", + "required": [ + "default" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "enum": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "default": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, + "components": { + "type": "object", + "description": "Holds a set of reusable objects for different aspects of the OAS. All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "schemas": { + "$ref": "#/definitions/schemasOrReferences" + }, + "responses": { + "$ref": "#/definitions/responsesOrReferences" + }, + "parameters": { + "$ref": "#/definitions/parametersOrReferences" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "requestBodies": { + "$ref": "#/definitions/requestBodiesOrReferences" + }, + "headers": { + "$ref": "#/definitions/headersOrReferences" + }, + "securitySchemes": { + "$ref": "#/definitions/securitySchemesOrReferences" + }, + "links": { + "$ref": "#/definitions/linksOrReferences" + }, + "callbacks": { + "$ref": "#/definitions/callbacksOrReferences" + } + } + }, + "paths": { + "type": "object", + "description": "Holds the relative paths to the individual endpoints and their operations. The path is appended to the URL from the `Server Object` in order to construct the full URL. The Paths MAY be empty, due to ACL constraints.", + "additionalProperties": false, + "patternProperties": { + "^/": { + "$ref": "#/definitions/pathItem" + }, + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + } + }, + "pathItem": { + "type": "object", + "description": "Describes the operations available on a single path. A Path Item MAY be empty, due to ACL constraints. The path itself is still exposed to the documentation viewer but they will not know which operations and parameters are available.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "$ref": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "get": { + "$ref": "#/definitions/operation" + }, + "put": { + "$ref": "#/definitions/operation" + }, + "post": { + "$ref": "#/definitions/operation" + }, + "delete": { + "$ref": "#/definitions/operation" + }, + "options": { + "$ref": "#/definitions/operation" + }, + "head": { + "$ref": "#/definitions/operation" + }, + "patch": { + "$ref": "#/definitions/operation" + }, + "trace": { + "$ref": "#/definitions/operation" + }, + "servers": { + "type": "array", + "items": { + "$ref": "#/definitions/server" + }, + "uniqueItems": true + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/parameterOrReference" + }, + "uniqueItems": true + } + } + }, + "operation": { + "type": "object", + "description": "Describes a single API operation on a path.", + "required": [ + "responses" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + }, + "operationId": { + "type": "string" + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/parameterOrReference" + }, + "uniqueItems": true + }, + "requestBody": { + "$ref": "#/definitions/requestBodyOrReference" + }, + "responses": { + "$ref": "#/definitions/responses" + }, + "callbacks": { + "$ref": "#/definitions/callbacksOrReferences" + }, + "deprecated": { + "type": "boolean" + }, + "security": { + "type": "array", + "items": { + "$ref": "#/definitions/securityRequirement" + }, + "uniqueItems": true + }, + "servers": { + "type": "array", + "items": { + "$ref": "#/definitions/server" + }, + "uniqueItems": true + } + } + }, + "externalDocs": { + "type": "object", + "description": "Allows referencing an external resource for extended documentation.", + "required": [ + "url" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "parameter": { + "type": "object", + "description": "Describes a single operation parameter. A unique parameter is defined by a combination of a name and location.", + "required": [ + "name", + "in" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "in": { + "type": "string" + }, + "description": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "deprecated": { + "type": "boolean" + }, + "allowEmptyValue": { + "type": "boolean" + }, + "style": { + "type": "string" + }, + "explode": { + "type": "boolean" + }, + "allowReserved": { + "type": "boolean" + }, + "schema": { + "$ref": "#/definitions/schemaOrReference" + }, + "example": { + "$ref": "#/definitions/any" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + } + } + }, + "requestBody": { + "type": "object", + "description": "Describes a single request body.", + "required": [ + "content" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + }, + "required": { + "type": "boolean" + } + } + }, + "mediaType": { + "type": "object", + "description": "Each Media Type Object provides schema and examples for the media type identified by its key.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "schema": { + "$ref": "#/definitions/schemaOrReference" + }, + "example": { + "$ref": "#/definitions/any" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "encoding": { + "$ref": "#/definitions/encodings" + } + } + }, + "encoding": { + "type": "object", + "description": "A single encoding definition applied to a single schema property.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "contentType": { + "type": "string" + }, + "headers": { + "$ref": "#/definitions/headersOrReferences" + }, + "style": { + "type": "string" + }, + "explode": { + "type": "boolean" + }, + "allowReserved": { + "type": "boolean" + } + } + }, + "responses": { + "type": "object", + "description": "A container for the expected responses of an operation. The container maps a HTTP response code to the expected response. The documentation is not necessarily expected to cover all possible HTTP response codes because they may not be known in advance. However, documentation is expected to cover a successful operation response and any known errors. The `default` MAY be used as a default response object for all HTTP codes that are not covered individually by the specification. The `Responses Object` MUST contain at least one response code, and it SHOULD be the response for a successful operation call.", + "additionalProperties": false, + "patternProperties": { + "^([0-9X]{3})$": { + "$ref": "#/definitions/responseOrReference" + }, + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "default": { + "$ref": "#/definitions/responseOrReference" + } + } + }, + "response": { + "type": "object", + "description": "Describes a single response from an API Operation, including design-time, static `links` to operations based on the response.", + "required": [ + "description" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "headers": { + "$ref": "#/definitions/headersOrReferences" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + }, + "links": { + "$ref": "#/definitions/linksOrReferences" + } + } + }, + "callback": { + "type": "object", + "description": "A map of possible out-of band callbacks related to the parent operation. Each value in the map is a Path Item Object that describes a set of requests that may be initiated by the API provider and the expected responses. The key value used to identify the callback object is an expression, evaluated at runtime, that identifies a URL to use for the callback operation.", + "additionalProperties": false, + "patternProperties": { + "^": { + "$ref": "#/definitions/pathItem" + }, + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + } + }, + "example": { + "type": "object", + "description": "", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/any" + }, + "externalValue": { + "type": "string" + } + } + }, + "link": { + "type": "object", + "description": "The `Link object` represents a possible design-time link for a response. The presence of a link does not guarantee the caller's ability to successfully invoke it, rather it provides a known relationship and traversal mechanism between responses and other operations. Unlike _dynamic_ links (i.e. links provided **in** the response payload), the OAS linking mechanism does not require link information in the runtime response. For computing links, and providing instructions to execute them, a runtime expression is used for accessing values in an operation and using them as parameters while invoking the linked operation.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "operationRef": { + "type": "string" + }, + "operationId": { + "type": "string" + }, + "parameters": { + "$ref": "#/definitions/anysOrExpressions" + }, + "requestBody": { + "$ref": "#/definitions/anyOrExpression" + }, + "description": { + "type": "string" + }, + "server": { + "$ref": "#/definitions/server" + } + } + }, + "header": { + "type": "object", + "description": "The Header Object follows the structure of the Parameter Object with the following changes: 1. `name` MUST NOT be specified, it is given in the corresponding `headers` map. 1. `in` MUST NOT be specified, it is implicitly in `header`. 1. All traits that are affected by the location MUST be applicable to a location of `header` (for example, `style`).", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "deprecated": { + "type": "boolean" + }, + "allowEmptyValue": { + "type": "boolean" + }, + "style": { + "type": "string" + }, + "explode": { + "type": "boolean" + }, + "allowReserved": { + "type": "boolean" + }, + "schema": { + "$ref": "#/definitions/schemaOrReference" + }, + "example": { + "$ref": "#/definitions/any" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + } + } + }, + "tag": { + "type": "object", + "description": "Adds metadata to a single tag that is used by the Operation Object. It is not mandatory to have a Tag Object per tag defined in the Operation Object instances.", + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + } + } + }, + "reference": { + "type": "object", + "description": "A simple object to allow referencing other components in the specification, internally and externally. The Reference Object is defined by JSON Reference and follows the same structure, behavior and rules. For this specification, reference resolution is accomplished as defined by the JSON Reference specification and not by the JSON Schema specification.", + "required": [ + "$ref" + ], + "additionalProperties": false, + "properties": { + "$ref": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, + "schema": { + "type": "object", + "description": "The Schema Object allows the definition of input and output data types. These types can be objects, but also primitives and arrays. This object is an extended subset of the JSON Schema Specification Wright Draft 00. For more information about the properties, see JSON Schema Core and JSON Schema Validation. Unless stated otherwise, the property definitions follow the JSON Schema.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "nullable": { + "type": "boolean" + }, + "discriminator": { + "$ref": "#/definitions/discriminator" + }, + "readOnly": { + "type": "boolean" + }, + "writeOnly": { + "type": "boolean" + }, + "xml": { + "$ref": "#/definitions/xml" + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + }, + "example": { + "$ref": "#/definitions/any" + }, + "deprecated": { + "type": "boolean" + }, + "title": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/title" + }, + "multipleOf": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf" + }, + "maximum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum" + }, + "exclusiveMaximum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum" + }, + "minimum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum" + }, + "exclusiveMinimum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum" + }, + "maxLength": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maxLength" + }, + "minLength": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minLength" + }, + "pattern": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern" + }, + "maxItems": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maxItems" + }, + "minItems": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minItems" + }, + "uniqueItems": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems" + }, + "maxProperties": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maxProperties" + }, + "minProperties": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minProperties" + }, + "required": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/required" + }, + "enum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/enum" + }, + "type": { + "type": "string" + }, + "allOf": { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + }, + "oneOf": { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + }, + "anyOf": { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + }, + "not": { + "$ref": "#/definitions/schema" + }, + "items": { + "anyOf": [ + { + "$ref": "#/definitions/schemaOrReference" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + } + ] + }, + "properties": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/schemaOrReference" + } + }, + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/definitions/schemaOrReference" + }, + { + "type": "boolean" + } + ] + }, + "default": { + "$ref": "#/definitions/defaultType" + }, + "description": { + "type": "string" + }, + "format": { + "type": "string" + } + } + }, + "discriminator": { + "type": "object", + "description": "When request bodies or response payloads may be one of a number of different schemas, a `discriminator` object can be used to aid in serialization, deserialization, and validation. The discriminator is a specific object in a schema which is used to inform the consumer of the specification of an alternative schema based on the value associated with it. When using the discriminator, _inline_ schemas will not be considered.", + "required": [ + "propertyName" + ], + "additionalProperties": false, + "properties": { + "propertyName": { + "type": "string" + }, + "mapping": { + "$ref": "#/definitions/strings" + } + } + }, + "xml": { + "type": "object", + "description": "A metadata object that allows for more fine-tuned XML model definitions. When using arrays, XML element names are *not* inferred (for singular/plural forms) and the `name` property SHOULD be used to add that information. See examples for expected behavior.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "attribute": { + "type": "boolean" + }, + "wrapped": { + "type": "boolean" + } + } + }, + "securityScheme": { + "type": "object", + "description": "Defines a security scheme that can be used by the operations. Supported schemes are HTTP authentication, an API key (either as a header or as a query parameter), OAuth2's common flows (implicit, password, application and access code) as defined in RFC6749, and OpenID Connect Discovery.", + "required": [ + "type" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "in": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "bearerFormat": { + "type": "string" + }, + "flows": { + "$ref": "#/definitions/oauthFlows" + }, + "openIdConnectUrl": { + "type": "string" + } + } + }, + "oauthFlows": { + "type": "object", + "description": "Allows configuration of the supported OAuth Flows.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "implicit": { + "$ref": "#/definitions/oauthFlow" + }, + "password": { + "$ref": "#/definitions/oauthFlow" + }, + "clientCredentials": { + "$ref": "#/definitions/oauthFlow" + }, + "authorizationCode": { + "$ref": "#/definitions/oauthFlow" + } + } + }, + "oauthFlow": { + "type": "object", + "description": "Configuration details for a supported OAuth Flow", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "authorizationUrl": { + "type": "string" + }, + "tokenUrl": { + "type": "string" + }, + "refreshUrl": { + "type": "string" + }, + "scopes": { + "$ref": "#/definitions/strings" + } + } + }, + "securityRequirement": { + "type": "object", + "description": "Lists the required security schemes to execute this operation. The name used for each property MUST correspond to a security scheme declared in the Security Schemes under the Components Object. Security Requirement Objects that contain multiple schemes require that all schemes MUST be satisfied for a request to be authorized. This enables support for scenarios where multiple query parameters or HTTP headers are required to convey security information. When a list of Security Requirement Objects is defined on the Open API object or Operation Object, only one of Security Requirement Objects in the list needs to be satisfied to authorize the request.", + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9\\.\\-_]+$": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + } + } + }, + "anyOrExpression": { + "oneOf": [ + { + "$ref": "#/definitions/any" + }, + { + "$ref": "#/definitions/expression" + } + ] + }, + "callbackOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/callback" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "exampleOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/example" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "headerOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/header" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "linkOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/link" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "parameterOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/parameter" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "requestBodyOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/requestBody" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "responseOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/response" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "schemaOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/schema" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "securitySchemeOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/securityScheme" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "anysOrExpressions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/anyOrExpression" + } + }, + "callbacksOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/callbackOrReference" + } + }, + "encodings": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/encoding" + } + }, + "examplesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/exampleOrReference" + } + }, + "headersOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/headerOrReference" + } + }, + "linksOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/linkOrReference" + } + }, + "mediaTypes": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/mediaType" + } + }, + "parametersOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/parameterOrReference" + } + }, + "requestBodiesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/requestBodyOrReference" + } + }, + "responsesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/responseOrReference" + } + }, + "schemasOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/schemaOrReference" + } + }, + "securitySchemesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/securitySchemeOrReference" + } + }, + "serverVariables": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/serverVariable" + } + }, + "strings": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "object": { + "type": "object", + "additionalProperties": true + }, + "any": { + "additionalProperties": true + }, + "expression": { + "type": "object", + "additionalProperties": true + }, + "specificationExtension": { + "description": "Any property starting with x- is valid.", + "oneOf": [ + { + "type": "null" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "string" + }, + { + "type": "object" + }, + { + "type": "array" + } + ] + }, + "defaultType": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "array" + }, + { + "type": "object" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "string" + } + ] + } + } +} diff --git a/vendor/github.com/google/gnostic/openapiv3/openapi-3.1.json b/vendor/github.com/google/gnostic/openapiv3/openapi-3.1.json new file mode 100644 index 00000000..ed0b83ad --- /dev/null +++ b/vendor/github.com/google/gnostic/openapiv3/openapi-3.1.json @@ -0,0 +1,1250 @@ +{ + "title": "A JSON Schema for OpenAPI 3.0.", + "id": "http://openapis.org/v3/schema.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "description": "This is the root document object of the OpenAPI document.", + "required": [ + "openapi", + "info", + "paths" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "openapi": { + "type": "string" + }, + "info": { + "$ref": "#/definitions/info" + }, + "servers": { + "type": "array", + "items": { + "$ref": "#/definitions/server" + }, + "uniqueItems": true + }, + "paths": { + "$ref": "#/definitions/paths" + }, + "components": { + "$ref": "#/definitions/components" + }, + "security": { + "type": "array", + "items": { + "$ref": "#/definitions/securityRequirement" + }, + "uniqueItems": true + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/definitions/tag" + }, + "uniqueItems": true + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + } + }, + "definitions": { + "info": { + "type": "object", + "description": "The object provides metadata about the API. The metadata MAY be used by the clients if needed, and MAY be presented in editing or documentation generation tools for convenience.", + "required": [ + "title", + "version" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "termsOfService": { + "type": "string" + }, + "contact": { + "$ref": "#/definitions/contact" + }, + "license": { + "$ref": "#/definitions/license" + }, + "version": { + "type": "string" + }, + "summary": { + "type": "string" + } + } + }, + "contact": { + "type": "object", + "description": "Contact information for the exposed API.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "email": { + "type": "string", + "format": "email" + } + } + }, + "license": { + "type": "object", + "description": "License information for the exposed API.", + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "server": { + "type": "object", + "description": "An object representing a Server.", + "required": [ + "url" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "url": { + "type": "string" + }, + "description": { + "type": "string" + }, + "variables": { + "$ref": "#/definitions/serverVariables" + } + } + }, + "serverVariable": { + "type": "object", + "description": "An object representing a Server Variable for server URL template substitution.", + "required": [ + "default" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "enum": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "default": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, + "components": { + "type": "object", + "description": "Holds a set of reusable objects for different aspects of the OAS. All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "schemas": { + "$ref": "#/definitions/schemasOrReferences" + }, + "responses": { + "$ref": "#/definitions/responsesOrReferences" + }, + "parameters": { + "$ref": "#/definitions/parametersOrReferences" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "requestBodies": { + "$ref": "#/definitions/requestBodiesOrReferences" + }, + "headers": { + "$ref": "#/definitions/headersOrReferences" + }, + "securitySchemes": { + "$ref": "#/definitions/securitySchemesOrReferences" + }, + "links": { + "$ref": "#/definitions/linksOrReferences" + }, + "callbacks": { + "$ref": "#/definitions/callbacksOrReferences" + } + } + }, + "paths": { + "type": "object", + "description": "Holds the relative paths to the individual endpoints and their operations. The path is appended to the URL from the `Server Object` in order to construct the full URL. The Paths MAY be empty, due to ACL constraints.", + "additionalProperties": false, + "patternProperties": { + "^/": { + "$ref": "#/definitions/pathItem" + }, + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + } + }, + "pathItem": { + "type": "object", + "description": "Describes the operations available on a single path. A Path Item MAY be empty, due to ACL constraints. The path itself is still exposed to the documentation viewer but they will not know which operations and parameters are available.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "$ref": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "get": { + "$ref": "#/definitions/operation" + }, + "put": { + "$ref": "#/definitions/operation" + }, + "post": { + "$ref": "#/definitions/operation" + }, + "delete": { + "$ref": "#/definitions/operation" + }, + "options": { + "$ref": "#/definitions/operation" + }, + "head": { + "$ref": "#/definitions/operation" + }, + "patch": { + "$ref": "#/definitions/operation" + }, + "trace": { + "$ref": "#/definitions/operation" + }, + "servers": { + "type": "array", + "items": { + "$ref": "#/definitions/server" + }, + "uniqueItems": true + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/parameterOrReference" + }, + "uniqueItems": true + } + } + }, + "operation": { + "type": "object", + "description": "Describes a single API operation on a path.", + "required": [ + "responses" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + }, + "operationId": { + "type": "string" + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/parameterOrReference" + }, + "uniqueItems": true + }, + "requestBody": { + "$ref": "#/definitions/requestBodyOrReference" + }, + "responses": { + "$ref": "#/definitions/responses" + }, + "callbacks": { + "$ref": "#/definitions/callbacksOrReferences" + }, + "deprecated": { + "type": "boolean" + }, + "security": { + "type": "array", + "items": { + "$ref": "#/definitions/securityRequirement" + }, + "uniqueItems": true + }, + "servers": { + "type": "array", + "items": { + "$ref": "#/definitions/server" + }, + "uniqueItems": true + } + } + }, + "externalDocs": { + "type": "object", + "description": "Allows referencing an external resource for extended documentation.", + "required": [ + "url" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "parameter": { + "type": "object", + "description": "Describes a single operation parameter. A unique parameter is defined by a combination of a name and location.", + "required": [ + "name", + "in" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "in": { + "type": "string" + }, + "description": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "deprecated": { + "type": "boolean" + }, + "allowEmptyValue": { + "type": "boolean" + }, + "style": { + "type": "string" + }, + "explode": { + "type": "boolean" + }, + "allowReserved": { + "type": "boolean" + }, + "schema": { + "$ref": "#/definitions/schemaOrReference" + }, + "example": { + "$ref": "#/definitions/any" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + } + } + }, + "requestBody": { + "type": "object", + "description": "Describes a single request body.", + "required": [ + "content" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + }, + "required": { + "type": "boolean" + } + } + }, + "mediaType": { + "type": "object", + "description": "Each Media Type Object provides schema and examples for the media type identified by its key.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "schema": { + "$ref": "#/definitions/schemaOrReference" + }, + "example": { + "$ref": "#/definitions/any" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "encoding": { + "$ref": "#/definitions/encodings" + } + } + }, + "encoding": { + "type": "object", + "description": "A single encoding definition applied to a single schema property.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "contentType": { + "type": "string" + }, + "headers": { + "$ref": "#/definitions/headersOrReferences" + }, + "style": { + "type": "string" + }, + "explode": { + "type": "boolean" + }, + "allowReserved": { + "type": "boolean" + } + } + }, + "responses": { + "type": "object", + "description": "A container for the expected responses of an operation. The container maps a HTTP response code to the expected response. The documentation is not necessarily expected to cover all possible HTTP response codes because they may not be known in advance. However, documentation is expected to cover a successful operation response and any known errors. The `default` MAY be used as a default response object for all HTTP codes that are not covered individually by the specification. The `Responses Object` MUST contain at least one response code, and it SHOULD be the response for a successful operation call.", + "additionalProperties": false, + "patternProperties": { + "^([0-9X]{3})$": { + "$ref": "#/definitions/responseOrReference" + }, + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "default": { + "$ref": "#/definitions/responseOrReference" + } + } + }, + "response": { + "type": "object", + "description": "Describes a single response from an API Operation, including design-time, static `links` to operations based on the response.", + "required": [ + "description" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "headers": { + "$ref": "#/definitions/headersOrReferences" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + }, + "links": { + "$ref": "#/definitions/linksOrReferences" + } + } + }, + "callback": { + "type": "object", + "description": "A map of possible out-of band callbacks related to the parent operation. Each value in the map is a Path Item Object that describes a set of requests that may be initiated by the API provider and the expected responses. The key value used to identify the callback object is an expression, evaluated at runtime, that identifies a URL to use for the callback operation.", + "additionalProperties": false, + "patternProperties": { + "^": { + "$ref": "#/definitions/pathItem" + }, + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + } + }, + "example": { + "type": "object", + "description": "", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/any" + }, + "externalValue": { + "type": "string" + } + } + }, + "link": { + "type": "object", + "description": "The `Link object` represents a possible design-time link for a response. The presence of a link does not guarantee the caller's ability to successfully invoke it, rather it provides a known relationship and traversal mechanism between responses and other operations. Unlike _dynamic_ links (i.e. links provided **in** the response payload), the OAS linking mechanism does not require link information in the runtime response. For computing links, and providing instructions to execute them, a runtime expression is used for accessing values in an operation and using them as parameters while invoking the linked operation.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "operationRef": { + "type": "string" + }, + "operationId": { + "type": "string" + }, + "parameters": { + "$ref": "#/definitions/anyOrExpression" + }, + "requestBody": { + "$ref": "#/definitions/anyOrExpression" + }, + "description": { + "type": "string" + }, + "server": { + "$ref": "#/definitions/server" + } + } + }, + "header": { + "type": "object", + "description": "The Header Object follows the structure of the Parameter Object with the following changes: 1. `name` MUST NOT be specified, it is given in the corresponding `headers` map. 1. `in` MUST NOT be specified, it is implicitly in `header`. 1. All traits that are affected by the location MUST be applicable to a location of `header` (for example, `style`).", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "deprecated": { + "type": "boolean" + }, + "allowEmptyValue": { + "type": "boolean" + }, + "style": { + "type": "string" + }, + "explode": { + "type": "boolean" + }, + "allowReserved": { + "type": "boolean" + }, + "schema": { + "$ref": "#/definitions/schemaOrReference" + }, + "example": { + "$ref": "#/definitions/any" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + } + } + }, + "tag": { + "type": "object", + "description": "Adds metadata to a single tag that is used by the Operation Object. It is not mandatory to have a Tag Object per tag defined in the Operation Object instances.", + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + } + } + }, + "reference": { + "type": "object", + "description": "A simple object to allow referencing other components in the specification, internally and externally. The Reference Object is defined by JSON Reference and follows the same structure, behavior and rules. For this specification, reference resolution is accomplished as defined by the JSON Reference specification and not by the JSON Schema specification.", + "required": [ + "$ref" + ], + "additionalProperties": false, + "properties": { + "$ref": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, + "schema": { + "type": "object", + "description": "The Schema Object allows the definition of input and output data types. These types can be objects, but also primitives and arrays. This object is an extended subset of the JSON Schema Specification Wright Draft 00. For more information about the properties, see JSON Schema Core and JSON Schema Validation. Unless stated otherwise, the property definitions follow the JSON Schema.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "nullable": { + "type": "boolean" + }, + "discriminator": { + "$ref": "#/definitions/discriminator" + }, + "readOnly": { + "type": "boolean" + }, + "writeOnly": { + "type": "boolean" + }, + "xml": { + "$ref": "#/definitions/xml" + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + }, + "example": { + "$ref": "#/definitions/any" + }, + "deprecated": { + "type": "boolean" + }, + "title": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/title" + }, + "multipleOf": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf" + }, + "maximum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum" + }, + "exclusiveMaximum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum" + }, + "minimum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum" + }, + "exclusiveMinimum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum" + }, + "maxLength": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maxLength" + }, + "minLength": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minLength" + }, + "pattern": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern" + }, + "maxItems": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maxItems" + }, + "minItems": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minItems" + }, + "uniqueItems": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems" + }, + "maxProperties": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maxProperties" + }, + "minProperties": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minProperties" + }, + "required": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/required" + }, + "enum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/enum" + }, + "type": { + "type": "string" + }, + "allOf": { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + }, + "oneOf": { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + }, + "anyOf": { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + }, + "not": { + "$ref": "#/definitions/schema" + }, + "items": { + "anyOf": [ + { + "$ref": "#/definitions/schemaOrReference" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + } + ] + }, + "properties": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/schemaOrReference" + } + }, + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/definitions/schemaOrReference" + }, + { + "type": "boolean" + } + ] + }, + "default": { + "$ref": "#/definitions/defaultType" + }, + "description": { + "type": "string" + }, + "format": { + "type": "string" + } + } + }, + "discriminator": { + "type": "object", + "description": "When request bodies or response payloads may be one of a number of different schemas, a `discriminator` object can be used to aid in serialization, deserialization, and validation. The discriminator is a specific object in a schema which is used to inform the consumer of the specification of an alternative schema based on the value associated with it. When using the discriminator, _inline_ schemas will not be considered.", + "required": [ + "propertyName" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "propertyName": { + "type": "string" + }, + "mapping": { + "$ref": "#/definitions/strings" + } + } + }, + "xml": { + "type": "object", + "description": "A metadata object that allows for more fine-tuned XML model definitions. When using arrays, XML element names are *not* inferred (for singular/plural forms) and the `name` property SHOULD be used to add that information. See examples for expected behavior.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "attribute": { + "type": "boolean" + }, + "wrapped": { + "type": "boolean" + } + } + }, + "securityScheme": { + "type": "object", + "description": "Defines a security scheme that can be used by the operations. Supported schemes are HTTP authentication, an API key (either as a header, a cookie parameter or as a query parameter), mutual TLS (use of a client certificate), OAuth2's common flows (implicit, password, application and access code) as defined in RFC6749, and OpenID Connect. Please note that currently (2019) the implicit flow is about to be deprecated OAuth 2.0 Security Best Current Practice. Recommended for most use case is Authorization Code Grant flow with PKCE.", + "required": [ + "type" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "in": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "bearerFormat": { + "type": "string" + }, + "flows": { + "$ref": "#/definitions/oauthFlows" + }, + "openIdConnectUrl": { + "type": "string" + } + } + }, + "oauthFlows": { + "type": "object", + "description": "Allows configuration of the supported OAuth Flows.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "implicit": { + "$ref": "#/definitions/oauthFlow" + }, + "password": { + "$ref": "#/definitions/oauthFlow" + }, + "clientCredentials": { + "$ref": "#/definitions/oauthFlow" + }, + "authorizationCode": { + "$ref": "#/definitions/oauthFlow" + } + } + }, + "oauthFlow": { + "type": "object", + "description": "Configuration details for a supported OAuth Flow", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "authorizationUrl": { + "type": "string" + }, + "tokenUrl": { + "type": "string" + }, + "refreshUrl": { + "type": "string" + }, + "scopes": { + "$ref": "#/definitions/strings" + } + } + }, + "securityRequirement": { + "type": "object", + "description": "Lists the required security schemes to execute this operation. The name used for each property MUST correspond to a security scheme declared in the Security Schemes under the Components Object. Security Requirement Objects that contain multiple schemes require that all schemes MUST be satisfied for a request to be authorized. This enables support for scenarios where multiple query parameters or HTTP headers are required to convey security information. When a list of Security Requirement Objects is defined on the OpenAPI Object or Operation Object, only one of the Security Requirement Objects in the list needs to be satisfied to authorize the request.", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + } + }, + "anyOrExpression": { + "oneOf": [ + { + "$ref": "#/definitions/any" + }, + { + "$ref": "#/definitions/expression" + } + ] + }, + "callbackOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/callback" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "exampleOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/example" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "headerOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/header" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "linkOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/link" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "parameterOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/parameter" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "requestBodyOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/requestBody" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "responseOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/response" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "schemaOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/schema" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "securitySchemeOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/securityScheme" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "callbacksOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/callbackOrReference" + } + }, + "encodings": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/encoding" + } + }, + "examplesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/exampleOrReference" + } + }, + "headersOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/headerOrReference" + } + }, + "linksOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/linkOrReference" + } + }, + "mediaTypes": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/mediaType" + } + }, + "parametersOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/parameterOrReference" + } + }, + "requestBodiesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/requestBodyOrReference" + } + }, + "responsesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/responseOrReference" + } + }, + "schemasOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/schemaOrReference" + } + }, + "securitySchemesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/securitySchemeOrReference" + } + }, + "serverVariables": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/serverVariable" + } + }, + "strings": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "object": { + "type": "object", + "additionalProperties": true + }, + "any": { + "additionalProperties": true + }, + "expression": { + "type": "object", + "additionalProperties": true + }, + "specificationExtension": { + "description": "Any property starting with x- is valid.", + "oneOf": [ + { + "type": "null" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "string" + }, + { + "type": "object" + }, + { + "type": "array" + } + ] + }, + "defaultType": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "array" + }, + { + "type": "object" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "string" + } + ] + } + } +} diff --git a/vendor/github.com/google/uuid/hash.go b/vendor/github.com/google/uuid/hash.go index b1746163..b404f4be 100644 --- a/vendor/github.com/google/uuid/hash.go +++ b/vendor/github.com/google/uuid/hash.go @@ -26,8 +26,8 @@ var ( // NewMD5 and NewSHA1. func NewHash(h hash.Hash, space UUID, data []byte, version int) UUID { h.Reset() - h.Write(space[:]) - h.Write(data) + h.Write(space[:]) //nolint:errcheck + h.Write(data) //nolint:errcheck s := h.Sum(nil) var uuid UUID copy(uuid[:], s) diff --git a/vendor/github.com/google/uuid/null.go b/vendor/github.com/google/uuid/null.go new file mode 100644 index 00000000..d7fcbf28 --- /dev/null +++ b/vendor/github.com/google/uuid/null.go @@ -0,0 +1,118 @@ +// Copyright 2021 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "bytes" + "database/sql/driver" + "encoding/json" + "fmt" +) + +var jsonNull = []byte("null") + +// NullUUID represents a UUID that may be null. +// NullUUID implements the SQL driver.Scanner interface so +// it can be used as a scan destination: +// +// var u uuid.NullUUID +// err := db.QueryRow("SELECT name FROM foo WHERE id=?", id).Scan(&u) +// ... +// if u.Valid { +// // use u.UUID +// } else { +// // NULL value +// } +// +type NullUUID struct { + UUID UUID + Valid bool // Valid is true if UUID is not NULL +} + +// Scan implements the SQL driver.Scanner interface. +func (nu *NullUUID) Scan(value interface{}) error { + if value == nil { + nu.UUID, nu.Valid = Nil, false + return nil + } + + err := nu.UUID.Scan(value) + if err != nil { + nu.Valid = false + return err + } + + nu.Valid = true + return nil +} + +// Value implements the driver Valuer interface. +func (nu NullUUID) Value() (driver.Value, error) { + if !nu.Valid { + return nil, nil + } + // Delegate to UUID Value function + return nu.UUID.Value() +} + +// MarshalBinary implements encoding.BinaryMarshaler. +func (nu NullUUID) MarshalBinary() ([]byte, error) { + if nu.Valid { + return nu.UUID[:], nil + } + + return []byte(nil), nil +} + +// UnmarshalBinary implements encoding.BinaryUnmarshaler. +func (nu *NullUUID) UnmarshalBinary(data []byte) error { + if len(data) != 16 { + return fmt.Errorf("invalid UUID (got %d bytes)", len(data)) + } + copy(nu.UUID[:], data) + nu.Valid = true + return nil +} + +// MarshalText implements encoding.TextMarshaler. +func (nu NullUUID) MarshalText() ([]byte, error) { + if nu.Valid { + return nu.UUID.MarshalText() + } + + return jsonNull, nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (nu *NullUUID) UnmarshalText(data []byte) error { + id, err := ParseBytes(data) + if err != nil { + nu.Valid = false + return err + } + nu.UUID = id + nu.Valid = true + return nil +} + +// MarshalJSON implements json.Marshaler. +func (nu NullUUID) MarshalJSON() ([]byte, error) { + if nu.Valid { + return json.Marshal(nu.UUID) + } + + return jsonNull, nil +} + +// UnmarshalJSON implements json.Unmarshaler. +func (nu *NullUUID) UnmarshalJSON(data []byte) error { + if bytes.Equal(data, jsonNull) { + *nu = NullUUID{} + return nil // valid null UUID + } + err := json.Unmarshal(data, &nu.UUID) + nu.Valid = err == nil + return err +} diff --git a/vendor/github.com/google/uuid/sql.go b/vendor/github.com/google/uuid/sql.go index f326b54d..2e02ec06 100644 --- a/vendor/github.com/google/uuid/sql.go +++ b/vendor/github.com/google/uuid/sql.go @@ -9,7 +9,7 @@ import ( "fmt" ) -// Scan implements sql.Scanner so UUIDs can be read from databases transparently +// Scan implements sql.Scanner so UUIDs can be read from databases transparently. // Currently, database types that map to string and []byte are supported. Please // consult database-specific driver documentation for matching types. func (uuid *UUID) Scan(src interface{}) error { diff --git a/vendor/github.com/google/uuid/uuid.go b/vendor/github.com/google/uuid/uuid.go index 524404cc..a57207ae 100644 --- a/vendor/github.com/google/uuid/uuid.go +++ b/vendor/github.com/google/uuid/uuid.go @@ -12,6 +12,7 @@ import ( "fmt" "io" "strings" + "sync" ) // A UUID is a 128 bit (16 byte) Universal Unique IDentifier as defined in RFC @@ -33,7 +34,27 @@ const ( Future // Reserved for future definition. ) -var rander = rand.Reader // random function +const randPoolSize = 16 * 16 + +var ( + rander = rand.Reader // random function + poolEnabled = false + poolMu sync.Mutex + poolPos = randPoolSize // protected with poolMu + pool [randPoolSize]byte // protected with poolMu +) + +type invalidLengthError struct{ len int } + +func (err invalidLengthError) Error() string { + return fmt.Sprintf("invalid UUID length: %d", err.len) +} + +// IsInvalidLengthError is matcher function for custom error invalidLengthError +func IsInvalidLengthError(err error) bool { + _, ok := err.(invalidLengthError) + return ok +} // Parse decodes s into a UUID or returns an error. Both the standard UUID // forms of xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and @@ -68,7 +89,7 @@ func Parse(s string) (UUID, error) { } return uuid, nil default: - return uuid, fmt.Errorf("invalid UUID length: %d", len(s)) + return uuid, invalidLengthError{len(s)} } // s is now at least 36 bytes long // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx @@ -112,7 +133,7 @@ func ParseBytes(b []byte) (UUID, error) { } return uuid, nil default: - return uuid, fmt.Errorf("invalid UUID length: %d", len(b)) + return uuid, invalidLengthError{len(b)} } // s is now at least 36 bytes long // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx @@ -243,3 +264,31 @@ func SetRand(r io.Reader) { } rander = r } + +// EnableRandPool enables internal randomness pool used for Random +// (Version 4) UUID generation. The pool contains random bytes read from +// the random number generator on demand in batches. Enabling the pool +// may improve the UUID generation throughput significantly. +// +// Since the pool is stored on the Go heap, this feature may be a bad fit +// for security sensitive applications. +// +// Both EnableRandPool and DisableRandPool are not thread-safe and should +// only be called when there is no possibility that New or any other +// UUID Version 4 generation function will be called concurrently. +func EnableRandPool() { + poolEnabled = true +} + +// DisableRandPool disables the randomness pool if it was previously +// enabled with EnableRandPool. +// +// Both EnableRandPool and DisableRandPool are not thread-safe and should +// only be called when there is no possibility that New or any other +// UUID Version 4 generation function will be called concurrently. +func DisableRandPool() { + poolEnabled = false + defer poolMu.Unlock() + poolMu.Lock() + poolPos = randPoolSize +} diff --git a/vendor/github.com/google/uuid/version4.go b/vendor/github.com/google/uuid/version4.go index c110465d..7697802e 100644 --- a/vendor/github.com/google/uuid/version4.go +++ b/vendor/github.com/google/uuid/version4.go @@ -14,11 +14,21 @@ func New() UUID { return Must(NewRandom()) } +// NewString creates a new random UUID and returns it as a string or panics. +// NewString is equivalent to the expression +// +// uuid.New().String() +func NewString() string { + return Must(NewRandom()).String() +} + // NewRandom returns a Random (Version 4) UUID. // // The strength of the UUIDs is based on the strength of the crypto/rand // package. // +// Uses the randomness pool if it was enabled with EnableRandPool. +// // A note about uniqueness derived from the UUID Wikipedia entry: // // Randomly generated UUIDs have 122 random bits. One's annual risk of being @@ -27,7 +37,10 @@ func New() UUID { // equivalent to the odds of creating a few tens of trillions of UUIDs in a // year and having one duplicate. func NewRandom() (UUID, error) { - return NewRandomFromReader(rander) + if !poolEnabled { + return NewRandomFromReader(rander) + } + return newRandomFromPool() } // NewRandomFromReader returns a UUID based on bytes read from a given io.Reader. @@ -41,3 +54,23 @@ func NewRandomFromReader(r io.Reader) (UUID, error) { uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 return uuid, nil } + +func newRandomFromPool() (UUID, error) { + var uuid UUID + poolMu.Lock() + if poolPos == randPoolSize { + _, err := io.ReadFull(rander, pool[:]) + if err != nil { + poolMu.Unlock() + return Nil, err + } + poolPos = 0 + } + copy(uuid[:], pool[poolPos:(poolPos+16)]) + poolPos += 16 + poolMu.Unlock() + + uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4 + uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 + return uuid, nil +} diff --git a/vendor/github.com/hashicorp/go-multierror/.travis.yml b/vendor/github.com/hashicorp/go-multierror/.travis.yml deleted file mode 100644 index 24b80388..00000000 --- a/vendor/github.com/hashicorp/go-multierror/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -sudo: false - -language: go - -go: - - 1.x - -branches: - only: - - master - -script: env GO111MODULE=on make test testrace diff --git a/vendor/github.com/hashicorp/go-multierror/README.md b/vendor/github.com/hashicorp/go-multierror/README.md index e92fa614..71dd308e 100644 --- a/vendor/github.com/hashicorp/go-multierror/README.md +++ b/vendor/github.com/hashicorp/go-multierror/README.md @@ -1,10 +1,11 @@ # go-multierror -[![Build Status](http://img.shields.io/travis/hashicorp/go-multierror.svg?style=flat-square)][travis] -[![Go Documentation](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)][godocs] +[![CircleCI](https://img.shields.io/circleci/build/github/hashicorp/go-multierror/master)](https://circleci.com/gh/hashicorp/go-multierror) +[![Go Reference](https://pkg.go.dev/badge/github.com/hashicorp/go-multierror.svg)](https://pkg.go.dev/github.com/hashicorp/go-multierror) +![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/hashicorp/go-multierror) -[travis]: https://travis-ci.org/hashicorp/go-multierror -[godocs]: https://godoc.org/github.com/hashicorp/go-multierror +[circleci]: https://app.circleci.com/pipelines/github/hashicorp/go-multierror +[godocs]: https://pkg.go.dev/github.com/hashicorp/go-multierror `go-multierror` is a package for Go that provides a mechanism for representing a list of `error` values as a single `error`. @@ -24,7 +25,25 @@ for introspecting on error values. Install using `go get github.com/hashicorp/go-multierror`. Full documentation is available at -http://godoc.org/github.com/hashicorp/go-multierror +https://pkg.go.dev/github.com/hashicorp/go-multierror + +### Requires go version 1.13 or newer + +`go-multierror` requires go version 1.13 or newer. Go 1.13 introduced +[error wrapping](https://golang.org/doc/go1.13#error_wrapping), which +this library takes advantage of. + +If you need to use an earlier version of go, you can use the +[v1.0.0](https://github.com/hashicorp/go-multierror/tree/v1.0.0) +tag, which doesn't rely on features in go 1.13. + +If you see compile errors that look like the below, it's likely that +you're on an older version of go: + +``` +/go/src/github.com/hashicorp/go-multierror/multierror.go:112:9: undefined: errors.As +/go/src/github.com/hashicorp/go-multierror/multierror.go:117:9: undefined: errors.Is +``` ## Usage diff --git a/vendor/github.com/hashicorp/go-multierror/append.go b/vendor/github.com/hashicorp/go-multierror/append.go index 775b6e75..3e2589bf 100644 --- a/vendor/github.com/hashicorp/go-multierror/append.go +++ b/vendor/github.com/hashicorp/go-multierror/append.go @@ -6,6 +6,8 @@ package multierror // If err is not a multierror.Error, then it will be turned into // one. If any of the errs are multierr.Error, they will be flattened // one level into err. +// Any nil errors within errs will be ignored. If err is nil, a new +// *Error will be returned. func Append(err error, errs ...error) *Error { switch err := err.(type) { case *Error: diff --git a/vendor/github.com/hashicorp/go-multierror/multierror.go b/vendor/github.com/hashicorp/go-multierror/multierror.go index d05dd926..f5457432 100644 --- a/vendor/github.com/hashicorp/go-multierror/multierror.go +++ b/vendor/github.com/hashicorp/go-multierror/multierror.go @@ -40,14 +40,17 @@ func (e *Error) GoString() string { return fmt.Sprintf("*%#v", *e) } -// WrappedErrors returns the list of errors that this Error is wrapping. -// It is an implementation of the errwrap.Wrapper interface so that -// multierror.Error can be used with that library. +// WrappedErrors returns the list of errors that this Error is wrapping. It is +// an implementation of the errwrap.Wrapper interface so that multierror.Error +// can be used with that library. // -// This method is not safe to be called concurrently and is no different -// than accessing the Errors field directly. It is implemented only to -// satisfy the errwrap.Wrapper interface. +// This method is not safe to be called concurrently. Unlike accessing the +// Errors field directly, this function also checks if the multierror is nil to +// prevent a null-pointer panic. It satisfies the errwrap.Wrapper interface. func (e *Error) WrappedErrors() []error { + if e == nil { + return nil + } return e.Errors } diff --git a/vendor/github.com/mattn/go-colorable/.travis.yml b/vendor/github.com/mattn/go-colorable/.travis.yml deleted file mode 100644 index 7942c565..00000000 --- a/vendor/github.com/mattn/go-colorable/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: go -sudo: false -go: - - 1.13.x - - tip - -before_install: - - go get -t -v ./... - -script: - - ./go.test.sh - -after_success: - - bash <(curl -s https://codecov.io/bash) - diff --git a/vendor/github.com/mattn/go-colorable/README.md b/vendor/github.com/mattn/go-colorable/README.md index e055952b..ca048371 100644 --- a/vendor/github.com/mattn/go-colorable/README.md +++ b/vendor/github.com/mattn/go-colorable/README.md @@ -1,6 +1,6 @@ # go-colorable -[![Build Status](https://travis-ci.org/mattn/go-colorable.svg?branch=master)](https://travis-ci.org/mattn/go-colorable) +[![Build Status](https://github.com/mattn/go-colorable/workflows/test/badge.svg)](https://github.com/mattn/go-colorable/actions?query=workflow%3Atest) [![Codecov](https://codecov.io/gh/mattn/go-colorable/branch/master/graph/badge.svg)](https://codecov.io/gh/mattn/go-colorable) [![GoDoc](https://godoc.org/github.com/mattn/go-colorable?status.svg)](http://godoc.org/github.com/mattn/go-colorable) [![Go Report Card](https://goreportcard.com/badge/mattn/go-colorable)](https://goreportcard.com/report/mattn/go-colorable) diff --git a/vendor/github.com/mattn/go-colorable/colorable_appengine.go b/vendor/github.com/mattn/go-colorable/colorable_appengine.go index 1f7806fe..416d1bbb 100644 --- a/vendor/github.com/mattn/go-colorable/colorable_appengine.go +++ b/vendor/github.com/mattn/go-colorable/colorable_appengine.go @@ -1,3 +1,4 @@ +//go:build appengine // +build appengine package colorable diff --git a/vendor/github.com/mattn/go-colorable/colorable_others.go b/vendor/github.com/mattn/go-colorable/colorable_others.go index 08cbd1e0..766d9460 100644 --- a/vendor/github.com/mattn/go-colorable/colorable_others.go +++ b/vendor/github.com/mattn/go-colorable/colorable_others.go @@ -1,5 +1,5 @@ -// +build !windows -// +build !appengine +//go:build !windows && !appengine +// +build !windows,!appengine package colorable diff --git a/vendor/github.com/mattn/go-colorable/colorable_windows.go b/vendor/github.com/mattn/go-colorable/colorable_windows.go index 41215d7f..1846ad5a 100644 --- a/vendor/github.com/mattn/go-colorable/colorable_windows.go +++ b/vendor/github.com/mattn/go-colorable/colorable_windows.go @@ -1,5 +1,5 @@ -// +build windows -// +build !appengine +//go:build windows && !appengine +// +build windows,!appengine package colorable @@ -452,18 +452,22 @@ func (w *Writer) Write(data []byte) (n int, err error) { } else { er = bytes.NewReader(data) } - var bw [1]byte + var plaintext bytes.Buffer loop: for { c1, err := er.ReadByte() if err != nil { + plaintext.WriteTo(w.out) break loop } if c1 != 0x1b { - bw[0] = c1 - w.out.Write(bw[:]) + plaintext.WriteByte(c1) continue } + _, err = plaintext.WriteTo(w.out) + if err != nil { + break loop + } c2, err := er.ReadByte() if err != nil { break loop diff --git a/vendor/github.com/mattn/go-colorable/noncolorable.go b/vendor/github.com/mattn/go-colorable/noncolorable.go index 95f2c6be..05d6f74b 100644 --- a/vendor/github.com/mattn/go-colorable/noncolorable.go +++ b/vendor/github.com/mattn/go-colorable/noncolorable.go @@ -18,18 +18,22 @@ func NewNonColorable(w io.Writer) io.Writer { // Write writes data on console func (w *NonColorable) Write(data []byte) (n int, err error) { er := bytes.NewReader(data) - var bw [1]byte + var plaintext bytes.Buffer loop: for { c1, err := er.ReadByte() if err != nil { + plaintext.WriteTo(w.out) break loop } if c1 != 0x1b { - bw[0] = c1 - w.out.Write(bw[:]) + plaintext.WriteByte(c1) continue } + _, err = plaintext.WriteTo(w.out) + if err != nil { + break loop + } c2, err := er.ReadByte() if err != nil { break loop @@ -38,7 +42,6 @@ loop: continue } - var buf bytes.Buffer for { c, err := er.ReadByte() if err != nil { @@ -47,7 +50,6 @@ loop: if ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' { break } - buf.Write([]byte(string(c))) } } diff --git a/vendor/github.com/mattn/go-isatty/.travis.yml b/vendor/github.com/mattn/go-isatty/.travis.yml deleted file mode 100644 index 604314dd..00000000 --- a/vendor/github.com/mattn/go-isatty/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: go -sudo: false -go: - - 1.13.x - - tip - -before_install: - - go get -t -v ./... - -script: - - ./go.test.sh - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/mattn/go-isatty/isatty_bsd.go b/vendor/github.com/mattn/go-isatty/isatty_bsd.go index 711f2880..39bbcf00 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_bsd.go +++ b/vendor/github.com/mattn/go-isatty/isatty_bsd.go @@ -1,3 +1,4 @@ +//go:build (darwin || freebsd || openbsd || netbsd || dragonfly) && !appengine // +build darwin freebsd openbsd netbsd dragonfly // +build !appengine diff --git a/vendor/github.com/mattn/go-isatty/isatty_others.go b/vendor/github.com/mattn/go-isatty/isatty_others.go index ff714a37..31503226 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_others.go +++ b/vendor/github.com/mattn/go-isatty/isatty_others.go @@ -1,4 +1,5 @@ -// +build appengine js nacl +//go:build appengine || js || nacl || wasm +// +build appengine js nacl wasm package isatty diff --git a/vendor/github.com/mattn/go-isatty/isatty_plan9.go b/vendor/github.com/mattn/go-isatty/isatty_plan9.go index c5b6e0c0..bae7f9bb 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_plan9.go +++ b/vendor/github.com/mattn/go-isatty/isatty_plan9.go @@ -1,3 +1,4 @@ +//go:build plan9 // +build plan9 package isatty diff --git a/vendor/github.com/mattn/go-isatty/isatty_solaris.go b/vendor/github.com/mattn/go-isatty/isatty_solaris.go index bdd5c79a..0c3acf2d 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_solaris.go +++ b/vendor/github.com/mattn/go-isatty/isatty_solaris.go @@ -1,5 +1,5 @@ -// +build solaris -// +build !appengine +//go:build solaris && !appengine +// +build solaris,!appengine package isatty @@ -8,10 +8,9 @@ import ( ) // IsTerminal returns true if the given file descriptor is a terminal. -// see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c +// see: https://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libc/port/gen/isatty.c func IsTerminal(fd uintptr) bool { - var termio unix.Termio - err := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio) + _, err := unix.IoctlGetTermio(int(fd), unix.TCGETA) return err == nil } diff --git a/vendor/github.com/mattn/go-isatty/isatty_tcgets.go b/vendor/github.com/mattn/go-isatty/isatty_tcgets.go index 31a1ca97..67787657 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_tcgets.go +++ b/vendor/github.com/mattn/go-isatty/isatty_tcgets.go @@ -1,4 +1,5 @@ -// +build linux aix +//go:build (linux || aix || zos) && !appengine +// +build linux aix zos // +build !appengine package isatty diff --git a/vendor/github.com/mattn/go-isatty/isatty_windows.go b/vendor/github.com/mattn/go-isatty/isatty_windows.go index 1fa86915..8e3c9917 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_windows.go +++ b/vendor/github.com/mattn/go-isatty/isatty_windows.go @@ -1,5 +1,5 @@ -// +build windows -// +build !appengine +//go:build windows && !appengine +// +build windows,!appengine package isatty @@ -76,7 +76,7 @@ func isCygwinPipeName(name string) bool { } // getFileNameByHandle use the undocomented ntdll NtQueryObject to get file full name from file handler -// since GetFileInformationByHandleEx is not avilable under windows Vista and still some old fashion +// since GetFileInformationByHandleEx is not available under windows Vista and still some old fashion // guys are using Windows XP, this is a workaround for those guys, it will also work on system from // Windows vista to 10 // see https://stackoverflow.com/a/18792477 for details diff --git a/vendor/github.com/mattn/go-isatty/renovate.json b/vendor/github.com/mattn/go-isatty/renovate.json deleted file mode 100644 index 5ae9d96b..00000000 --- a/vendor/github.com/mattn/go-isatty/renovate.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": [ - "config:base" - ], - "postUpdateOptions": [ - "gomodTidy" - ] -} diff --git a/vendor/github.com/munnerz/goautoneg/LICENSE b/vendor/github.com/munnerz/goautoneg/LICENSE new file mode 100644 index 00000000..bbc7b897 --- /dev/null +++ b/vendor/github.com/munnerz/goautoneg/LICENSE @@ -0,0 +1,31 @@ +Copyright (c) 2011, Open Knowledge Foundation Ltd. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + Neither the name of the Open Knowledge Foundation Ltd. nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/munnerz/goautoneg/Makefile b/vendor/github.com/munnerz/goautoneg/Makefile new file mode 100644 index 00000000..e33ee173 --- /dev/null +++ b/vendor/github.com/munnerz/goautoneg/Makefile @@ -0,0 +1,13 @@ +include $(GOROOT)/src/Make.inc + +TARG=bitbucket.org/ww/goautoneg +GOFILES=autoneg.go + +include $(GOROOT)/src/Make.pkg + +format: + gofmt -w *.go + +docs: + gomake clean + godoc ${TARG} > README.txt diff --git a/vendor/github.com/munnerz/goautoneg/README.txt b/vendor/github.com/munnerz/goautoneg/README.txt new file mode 100644 index 00000000..7723656d --- /dev/null +++ b/vendor/github.com/munnerz/goautoneg/README.txt @@ -0,0 +1,67 @@ +PACKAGE + +package goautoneg +import "bitbucket.org/ww/goautoneg" + +HTTP Content-Type Autonegotiation. + +The functions in this package implement the behaviour specified in +http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html + +Copyright (c) 2011, Open Knowledge Foundation Ltd. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + Neither the name of the Open Knowledge Foundation Ltd. nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +FUNCTIONS + +func Negotiate(header string, alternatives []string) (content_type string) +Negotiate the most appropriate content_type given the accept header +and a list of alternatives. + +func ParseAccept(header string) (accept []Accept) +Parse an Accept Header string returning a sorted list +of clauses + + +TYPES + +type Accept struct { + Type, SubType string + Q float32 + Params map[string]string +} +Structure to represent a clause in an HTTP Accept Header + + +SUBDIRECTORIES + + .hg diff --git a/vendor/github.com/munnerz/goautoneg/autoneg.go b/vendor/github.com/munnerz/goautoneg/autoneg.go new file mode 100644 index 00000000..1dd1cad6 --- /dev/null +++ b/vendor/github.com/munnerz/goautoneg/autoneg.go @@ -0,0 +1,189 @@ +/* +HTTP Content-Type Autonegotiation. + +The functions in this package implement the behaviour specified in +http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html + +Copyright (c) 2011, Open Knowledge Foundation Ltd. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + Neither the name of the Open Knowledge Foundation Ltd. nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package goautoneg + +import ( + "sort" + "strconv" + "strings" +) + +// Structure to represent a clause in an HTTP Accept Header +type Accept struct { + Type, SubType string + Q float64 + Params map[string]string +} + +// acceptSlice is defined to implement sort interface. +type acceptSlice []Accept + +func (slice acceptSlice) Len() int { + return len(slice) +} + +func (slice acceptSlice) Less(i, j int) bool { + ai, aj := slice[i], slice[j] + if ai.Q > aj.Q { + return true + } + if ai.Type != "*" && aj.Type == "*" { + return true + } + if ai.SubType != "*" && aj.SubType == "*" { + return true + } + return false +} + +func (slice acceptSlice) Swap(i, j int) { + slice[i], slice[j] = slice[j], slice[i] +} + +func stringTrimSpaceCutset(r rune) bool { + return r == ' ' +} + +func nextSplitElement(s, sep string) (item string, remaining string) { + if index := strings.Index(s, sep); index != -1 { + return s[:index], s[index+1:] + } + return s, "" +} + +// Parse an Accept Header string returning a sorted list +// of clauses +func ParseAccept(header string) acceptSlice { + partsCount := 0 + remaining := header + for len(remaining) > 0 { + partsCount++ + _, remaining = nextSplitElement(remaining, ",") + } + accept := make(acceptSlice, 0, partsCount) + + remaining = header + var part string + for len(remaining) > 0 { + part, remaining = nextSplitElement(remaining, ",") + part = strings.TrimFunc(part, stringTrimSpaceCutset) + + a := Accept{ + Q: 1.0, + } + + sp, remainingPart := nextSplitElement(part, ";") + + sp0, spRemaining := nextSplitElement(sp, "/") + a.Type = strings.TrimFunc(sp0, stringTrimSpaceCutset) + + switch { + case len(spRemaining) == 0: + if a.Type == "*" { + a.SubType = "*" + } else { + continue + } + default: + var sp1 string + sp1, spRemaining = nextSplitElement(spRemaining, "/") + if len(spRemaining) > 0 { + continue + } + a.SubType = strings.TrimFunc(sp1, stringTrimSpaceCutset) + } + + if len(remainingPart) == 0 { + accept = append(accept, a) + continue + } + + a.Params = make(map[string]string) + for len(remainingPart) > 0 { + sp, remainingPart = nextSplitElement(remainingPart, ";") + sp0, spRemaining = nextSplitElement(sp, "=") + if len(spRemaining) == 0 { + continue + } + var sp1 string + sp1, spRemaining = nextSplitElement(spRemaining, "=") + if len(spRemaining) != 0 { + continue + } + token := strings.TrimFunc(sp0, stringTrimSpaceCutset) + if token == "q" { + a.Q, _ = strconv.ParseFloat(sp1, 32) + } else { + a.Params[token] = strings.TrimFunc(sp1, stringTrimSpaceCutset) + } + } + + accept = append(accept, a) + } + + sort.Sort(accept) + return accept +} + +// Negotiate the most appropriate content_type given the accept header +// and a list of alternatives. +func Negotiate(header string, alternatives []string) (content_type string) { + asp := make([][]string, 0, len(alternatives)) + for _, ctype := range alternatives { + asp = append(asp, strings.SplitN(ctype, "/", 2)) + } + for _, clause := range ParseAccept(header) { + for i, ctsp := range asp { + if clause.Type == ctsp[0] && clause.SubType == ctsp[1] { + content_type = alternatives[i] + return + } + if clause.Type == ctsp[0] && clause.SubType == "*" { + content_type = alternatives[i] + return + } + if clause.Type == "*" && clause.SubType == "*" { + content_type = alternatives[i] + return + } + } + } + return +} diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go index a954ee99..10058393 100644 --- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go +++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go @@ -240,11 +240,13 @@ func runParallel(suite TestSuite, ginkgoConfig types.SuiteConfig, reporterConfig case <-server.GetSuiteDone(): fmt.Println("") case <-time.After(time.Second): - //the serve never got back to us. Something must have gone wrong. - fmt.Fprintln(os.Stderr, "** Ginkgo timed out waiting for all parallel procs to report back. **") - fmt.Fprintf(os.Stderr, "%s (%s)\n", suite.PackageName, suite.Path) + //one of the nodes never finished reporting to the server. Something must have gone wrong. + fmt.Fprint(formatter.ColorableStdErr, formatter.F("\n{{bold}}{{red}}Ginkgo timed out waiting for all parallel procs to report back{{/}}\n")) + fmt.Fprint(formatter.ColorableStdErr, formatter.F("{{gray}}Test suite:{{/}} %s (%s)\n\n", suite.PackageName, suite.Path)) + fmt.Fprint(formatter.ColorableStdErr, formatter.Fiw(0, formatter.COLS, "This occurs if a parallel process exits before it reports its results to the Ginkgo CLI. The CLI will now print out all the stdout/stderr output it's collected from the running processes. However you may not see anything useful in these logs because the individual test processes usually intercept output to stdout/stderr in order to capture it in the spec reports.\n\nYou may want to try rerunning your test suite with {{light-gray}}--output-interceptor-mode=none{{/}} to see additional output here and debug your suite.\n")) + fmt.Fprintln(formatter.ColorableStdErr, " ") for proc := 1; proc <= cliConfig.ComputedProcs(); proc++ { - fmt.Fprintf(os.Stderr, "Output from proc %d:\n", proc) + fmt.Fprintf(formatter.ColorableStdErr, formatter.F("{{bold}}Output from proc %d:{{/}}\n", proc)) fmt.Fprintln(os.Stderr, formatter.Fi(1, "%s", procOutput[proc-1].String())) } fmt.Fprintf(os.Stderr, "** End **") diff --git a/vendor/github.com/onsi/ginkgo/v2/types/deprecation_support.go b/vendor/github.com/onsi/ginkgo/v2/types/deprecation_support.go index 79ca4593..2948dfa0 100644 --- a/vendor/github.com/onsi/ginkgo/v2/types/deprecation_support.go +++ b/vendor/github.com/onsi/ginkgo/v2/types/deprecation_support.go @@ -4,6 +4,7 @@ import ( "os" "strconv" "strings" + "sync" "unicode" "github.com/onsi/ginkgo/v2/formatter" @@ -84,11 +85,13 @@ func (d deprecations) Nodot() Deprecation { type DeprecationTracker struct { deprecations map[Deprecation][]CodeLocation + lock *sync.Mutex } func NewDeprecationTracker() *DeprecationTracker { return &DeprecationTracker{ deprecations: map[Deprecation][]CodeLocation{}, + lock: &sync.Mutex{}, } } @@ -102,6 +105,8 @@ func (d *DeprecationTracker) TrackDeprecation(deprecation Deprecation, cl ...Cod } } + d.lock.Lock() + defer d.lock.Unlock() if len(cl) == 1 { d.deprecations[deprecation] = append(d.deprecations[deprecation], cl[0]) } else { @@ -110,10 +115,14 @@ func (d *DeprecationTracker) TrackDeprecation(deprecation Deprecation, cl ...Cod } func (d *DeprecationTracker) DidTrackDeprecations() bool { + d.lock.Lock() + defer d.lock.Unlock() return len(d.deprecations) > 0 } func (d *DeprecationTracker) DeprecationsReport() string { + d.lock.Lock() + defer d.lock.Unlock() out := formatter.F("{{light-yellow}}You're using deprecated Ginkgo functionality:{{/}}\n") out += formatter.F("{{light-yellow}}============================================={{/}}\n") for deprecation, locations := range d.deprecations { diff --git a/vendor/github.com/onsi/ginkgo/v2/types/version.go b/vendor/github.com/onsi/ginkgo/v2/types/version.go index 74261450..f4015031 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.1.3" +const VERSION = "2.1.4" diff --git a/vendor/github.com/onsi/gomega/CHANGELOG.md b/vendor/github.com/onsi/gomega/CHANGELOG.md index 78ca39a9..4375bbc6 100644 --- a/vendor/github.com/onsi/gomega/CHANGELOG.md +++ b/vendor/github.com/onsi/gomega/CHANGELOG.md @@ -1,3 +1,24 @@ +## 1.19.0 + +## Features +- New [`HaveEach`](https://onsi.github.io/gomega/#haveeachelement-interface) matcher to ensure that each and every element in an `array`, `slice`, or `map` satisfies the passed in matcher. (#523) [9fc2ae2] (#524) [c8ba582] +- Users can now wrap the `Gomega` interface to implement custom behavior on each assertion. (#521) [1f2e714] +- [`ContainElement`](https://onsi.github.io/gomega/#containelementelement-interface) now accepts an additional pointer argument. Elements that satisfy the matcher are stored in the pointer enabling developers to easily add subsequent, more detailed, assertions against the matching element. (#527) [1a4e27f] + +## Fixes +- update RELEASING instructions to match ginkgo [0917cde] +- Bump github.com/onsi/ginkgo/v2 from 2.0.0 to 2.1.3 (#519) [49ab4b0] +- Fix CVE-2021-38561 (#534) [f1b4456] +- Fix max number of samples in experiments on non-64-bit systems. (#528) [1c84497] +- Remove dependency on ginkgo v1.16.4 (#530) [4dea8d5] +- Fix for Go 1.18 (#532) [56d2a29] +- Document precendence of timeouts (#533) [b607941] + +## 1.18.1 + +## Fixes +- Add pointer support to HaveField matcher (#495) [79e41a3] + ## 1.18.0 ## Features diff --git a/vendor/github.com/onsi/gomega/RELEASING.md b/vendor/github.com/onsi/gomega/RELEASING.md index 998d64ee..2d30d999 100644 --- a/vendor/github.com/onsi/gomega/RELEASING.md +++ b/vendor/github.com/onsi/gomega/RELEASING.md @@ -7,6 +7,11 @@ A Gomega release is a tagged sha and a GitHub release. To cut a release: - New Features (minor version) - Fixes (fix version) - Maintenance (which in general should not be mentioned in `CHANGELOG.md` as they have no user impact) -2. Update GOMEGA_VERSION in `gomega_dsl.go` -3. Push a commit with the version number as the commit message (e.g. `v1.3.0`) -4. Create a new [GitHub release](https://help.github.com/articles/creating-releases/) with the version number as the tag (e.g. `v1.3.0`). List the key changes in the release notes. +1. Update GOMEGA_VERSION in `gomega_dsl.go` +1. Commit, push, and release: + ``` + git commit -m "vM.m.p" + git push + gh release create "vM.m.p" + git fetch --tags origin master + ``` \ No newline at end of file diff --git a/vendor/github.com/onsi/gomega/gomega_dsl.go b/vendor/github.com/onsi/gomega/gomega_dsl.go index 81181dc9..dcb7e887 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.18.0" +const GOMEGA_VERSION = "1.19.0" 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(). @@ -52,7 +52,7 @@ var Default = Gomega(internal.NewGomega(internal.FetchDefaultDurationBundle())) // rich ecosystem of matchers without causing a test to fail. For example, to aggregate a series of potential failures // or for use in a non-test setting. func NewGomega(fail types.GomegaFailHandler) Gomega { - return internal.NewGomega(Default.(*internal.Gomega).DurationBundle).ConfigureWithFailHandler(fail) + return internal.NewGomega(internalGomega(Default).DurationBundle).ConfigureWithFailHandler(fail) } // WithT wraps a *testing.T and provides `Expect`, `Eventually`, and `Consistently` methods. This allows you to leverage @@ -69,6 +69,20 @@ type WithT = internal.Gomega // GomegaWithT is deprecated in favor of gomega.WithT, which does not stutter. type GomegaWithT = WithT +// inner is an interface that allows users to provide a wrapper around Default. The wrapper +// must implement the inner interface and return either the original Default or the result of +// a call to NewGomega(). +type inner interface { + Inner() Gomega +} + +func internalGomega(g Gomega) *internal.Gomega { + if v, ok := g.(inner); ok { + return v.Inner().(*internal.Gomega) + } + return g.(*internal.Gomega) +} + // NewWithT takes a *testing.T and returngs a `gomega.WithT` allowing you to use `Expect`, `Eventually`, and `Consistently` along with // Gomega's rich ecosystem of matchers in standard `testing` test suits. // @@ -79,7 +93,7 @@ type GomegaWithT = WithT // g.Expect(f.HasCow()).To(BeTrue(), "Farm should have cow") // } func NewWithT(t types.GomegaTestingT) *WithT { - return internal.NewGomega(Default.(*internal.Gomega).DurationBundle).ConfigureWithT(t) + return internal.NewGomega(internalGomega(Default).DurationBundle).ConfigureWithT(t) } // NewGomegaWithT is deprecated in favor of gomega.NewWithT, which does not stutter. @@ -88,20 +102,20 @@ var NewGomegaWithT = NewWithT // RegisterFailHandler connects Ginkgo to Gomega. When a matcher fails // the fail handler passed into RegisterFailHandler is called. func RegisterFailHandler(fail types.GomegaFailHandler) { - Default.(*internal.Gomega).ConfigureWithFailHandler(fail) + internalGomega(Default).ConfigureWithFailHandler(fail) } // RegisterFailHandlerWithT is deprecated and will be removed in a future release. // users should use RegisterFailHandler, or RegisterTestingT func RegisterFailHandlerWithT(_ types.GomegaTestingT, fail types.GomegaFailHandler) { fmt.Println("RegisterFailHandlerWithT is deprecated. Please use RegisterFailHandler or RegisterTestingT instead.") - Default.(*internal.Gomega).ConfigureWithFailHandler(fail) + internalGomega(Default).ConfigureWithFailHandler(fail) } // RegisterTestingT connects Gomega to Golang's XUnit style // Testing.T tests. It is now deprecated and you should use NewWithT() instead to get a fresh instance of Gomega for each test. func RegisterTestingT(t types.GomegaTestingT) { - Default.(*internal.Gomega).ConfigureWithT(t) + internalGomega(Default).ConfigureWithT(t) } // InterceptGomegaFailures runs a given callback and returns an array of @@ -112,13 +126,13 @@ func RegisterTestingT(t types.GomegaTestingT) { // This is most useful when testing custom matchers, but can also be used to check // on a value using a Gomega assertion without causing a test failure. func InterceptGomegaFailures(f func()) []string { - originalHandler := Default.(*internal.Gomega).Fail + originalHandler := internalGomega(Default).Fail failures := []string{} - Default.(*internal.Gomega).Fail = func(message string, callerSkip ...int) { + internalGomega(Default).Fail = func(message string, callerSkip ...int) { failures = append(failures, message) } defer func() { - Default.(*internal.Gomega).Fail = originalHandler + internalGomega(Default).Fail = originalHandler }() f() return failures @@ -131,14 +145,14 @@ func InterceptGomegaFailures(f func()) []string { // does not register a failure with the FailHandler registered via RegisterFailHandler - it is up // to the user to decide what to do with the returned error func InterceptGomegaFailure(f func()) (err error) { - originalHandler := Default.(*internal.Gomega).Fail - Default.(*internal.Gomega).Fail = func(message string, callerSkip ...int) { + originalHandler := internalGomega(Default).Fail + internalGomega(Default).Fail = func(message string, callerSkip ...int) { err = errors.New(message) panic("stop execution") } defer func() { - Default.(*internal.Gomega).Fail = originalHandler + internalGomega(Default).Fail = originalHandler if e := recover(); e != nil { if err == nil { panic(e) @@ -151,7 +165,7 @@ func InterceptGomegaFailure(f func()) (err error) { } func ensureDefaultGomegaIsConfigured() { - if !Default.(*internal.Gomega).IsConfigured() { + if !internalGomega(Default).IsConfigured() { panic(nilGomegaPanic) } } diff --git a/vendor/github.com/onsi/gomega/matchers.go b/vendor/github.com/onsi/gomega/matchers.go index b46e461a..b58dd67c 100644 --- a/vendor/github.com/onsi/gomega/matchers.go +++ b/vendor/github.com/onsi/gomega/matchers.go @@ -256,16 +256,26 @@ func BeZero() types.GomegaMatcher { return &matchers.BeZeroMatcher{} } -//ContainElement succeeds if actual contains the passed in element. -//By default ContainElement() uses Equal() to perform the match, however a -//matcher can be passed in instead: +//ContainElement succeeds if actual contains the passed in element. By default +//ContainElement() uses Equal() to perform the match, however a matcher can be +//passed in instead: // Expect([]string{"Foo", "FooBar"}).Should(ContainElement(ContainSubstring("Bar"))) // -//Actual must be an array, slice or map. -//For maps, ContainElement searches through the map's values. -func ContainElement(element interface{}) types.GomegaMatcher { +//Actual must be an array, slice or map. For maps, ContainElement searches +//through the map's values. +// +//If you want to have a copy of the matching element(s) found you can pass a +//pointer to a variable of the appropriate type. If the variable isn't a slice +//or map, then exactly one match will be expected and returned. If the variable +//is a slice or map, then at least one match is expected and all matches will be +//stored in the variable. +// +// var findings []string +// Expect([]string{"Foo", "FooBar"}).Should(ContainElement(ContainSubString("Bar", &findings))) +func ContainElement(element interface{}, result ...interface{}) types.GomegaMatcher { return &matchers.ContainElementMatcher{ Element: element, + Result: result, } } @@ -320,6 +330,20 @@ func ContainElements(elements ...interface{}) types.GomegaMatcher { } } +//HaveEach succeeds if actual solely contains elements that match the passed in element. +//Please note that if actual is empty, HaveEach always will succeed. +//By default HaveEach() uses Equal() to perform the match, however a +//matcher can be passed in instead: +// Expect([]string{"Foo", "FooBar"}).Should(HaveEach(ContainSubstring("Foo"))) +// +//Actual must be an array, slice or map. +//For maps, HaveEach searches through the map's values. +func HaveEach(element interface{}) types.GomegaMatcher { + return &matchers.HaveEachMatcher{ + Element: element, + } +} + //HaveKey succeeds if actual is a map with the passed in key. //By default HaveKey uses Equal() to perform the match, however a //matcher can be passed in instead: diff --git a/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go b/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go index 8d6c44c7..3d45c9eb 100644 --- a/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go +++ b/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go @@ -3,6 +3,7 @@ package matchers import ( + "errors" "fmt" "reflect" @@ -11,6 +12,7 @@ import ( type ContainElementMatcher struct { Element interface{} + Result []interface{} } func (matcher *ContainElementMatcher) Match(actual interface{}) (success bool, err error) { @@ -18,6 +20,49 @@ func (matcher *ContainElementMatcher) Match(actual interface{}) (success bool, e return false, fmt.Errorf("ContainElement matcher expects an array/slice/map. Got:\n%s", format.Object(actual, 1)) } + var actualT reflect.Type + var result reflect.Value + switch l := len(matcher.Result); { + case l > 1: + return false, errors.New("ContainElement matcher expects at most a single optional pointer to store its findings at") + case l == 1: + if reflect.ValueOf(matcher.Result[0]).Kind() != reflect.Ptr { + return false, fmt.Errorf("ContainElement matcher expects a non-nil pointer to store its findings at. Got\n%s", + format.Object(matcher.Result[0], 1)) + } + actualT = reflect.TypeOf(actual) + resultReference := matcher.Result[0] + result = reflect.ValueOf(resultReference).Elem() // what ResultReference points to, to stash away our findings + switch result.Kind() { + case reflect.Array: + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + reflect.SliceOf(actualT.Elem()).String(), result.Type().String()) + case reflect.Slice: + if !isArrayOrSlice(actual) { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + reflect.MapOf(actualT.Key(), actualT.Elem()).String(), result.Type().String()) + } + if !actualT.Elem().AssignableTo(result.Type().Elem()) { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + actualT.String(), result.Type().String()) + } + case reflect.Map: + if !isMap(actual) { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + actualT.String(), result.Type().String()) + } + if !actualT.AssignableTo(result.Type()) { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + actualT.String(), result.Type().String()) + } + default: + if !actualT.Elem().AssignableTo(result.Type()) { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + actualT.Elem().String(), result.Type().String()) + } + } + } + elemMatcher, elementIsMatcher := matcher.Element.(omegaMatcher) if !elementIsMatcher { elemMatcher = &EqualMatcher{Expected: matcher.Element} @@ -25,30 +70,99 @@ func (matcher *ContainElementMatcher) Match(actual interface{}) (success bool, e value := reflect.ValueOf(actual) var valueAt func(int) interface{} + + var getFindings func() reflect.Value + var foundAt func(int) + if isMap(actual) { keys := value.MapKeys() valueAt = func(i int) interface{} { return value.MapIndex(keys[i]).Interface() } + if result.Kind() != reflect.Invalid { + fm := reflect.MakeMap(actualT) + getFindings = func() reflect.Value { + return fm + } + foundAt = func(i int) { + fm.SetMapIndex(keys[i], value.MapIndex(keys[i])) + } + } } else { valueAt = func(i int) interface{} { return value.Index(i).Interface() } + if result.Kind() != reflect.Invalid { + var f reflect.Value + if result.Kind() == reflect.Slice { + f = reflect.MakeSlice(result.Type(), 0, 0) + } else { + f = reflect.MakeSlice(reflect.SliceOf(result.Type()), 0, 0) + } + getFindings = func() reflect.Value { + return f + } + foundAt = func(i int) { + f = reflect.Append(f, value.Index(i)) + } + } } var lastError error for i := 0; i < value.Len(); i++ { - success, err := elemMatcher.Match(valueAt(i)) + elem := valueAt(i) + success, err := elemMatcher.Match(elem) if err != nil { lastError = err continue } if success { - return true, nil + if result.Kind() == reflect.Invalid { + return true, nil + } + foundAt(i) } } - return false, lastError + // when the expectation isn't interested in the findings except for success + // or non-success, then we're done here and return the last matcher error + // seen, if any, as well as non-success. + if result.Kind() == reflect.Invalid { + return false, lastError + } + + // pick up any findings the test is interested in as it specified a non-nil + // result reference. However, the expection always is that there are at + // least one or multiple findings. So, if a result is expected, but we had + // no findings, then this is an error. + findings := getFindings() + if findings.Len() == 0 { + return false, lastError + } + + // there's just a single finding and the result is neither a slice nor a map + // (so it's a scalar): pick the one and only finding and return it in the + // place the reference points to. + if findings.Len() == 1 && !isArrayOrSlice(result.Interface()) && !isMap(result.Interface()) { + if isMap(actual) { + miter := findings.MapRange() + miter.Next() + result.Set(miter.Value()) + } else { + result.Set(findings.Index(0)) + } + return true, nil + } + + // at least one or even multiple findings and a the result references a + // slice or a map, so all we need to do is to store our findings where the + // reference points to. + if !findings.Type().AssignableTo(result.Type()) { + return false, fmt.Errorf("ContainElement cannot return multiple findings. Need *%s, got *%s", + findings.Type().String(), result.Type().String()) + } + result.Set(findings) + return true, nil } func (matcher *ContainElementMatcher) FailureMessage(actual interface{}) (message string) { diff --git a/vendor/github.com/onsi/gomega/matchers/have_each_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_each_matcher.go new file mode 100644 index 00000000..025b6e1a --- /dev/null +++ b/vendor/github.com/onsi/gomega/matchers/have_each_matcher.go @@ -0,0 +1,65 @@ +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type HaveEachMatcher struct { + Element interface{} +} + +func (matcher *HaveEachMatcher) Match(actual interface{}) (success bool, err error) { + if !isArrayOrSlice(actual) && !isMap(actual) { + return false, fmt.Errorf("HaveEach matcher expects an array/slice/map. Got:\n%s", + format.Object(actual, 1)) + } + + elemMatcher, elementIsMatcher := matcher.Element.(omegaMatcher) + if !elementIsMatcher { + elemMatcher = &EqualMatcher{Expected: matcher.Element} + } + + value := reflect.ValueOf(actual) + if value.Len() == 0 { + return false, fmt.Errorf("HaveEach matcher expects a non-empty array/slice/map. Got:\n%s", + format.Object(actual, 1)) + } + + var valueAt func(int) interface{} + if isMap(actual) { + keys := value.MapKeys() + valueAt = func(i int) interface{} { + return value.MapIndex(keys[i]).Interface() + } + } else { + valueAt = func(i int) interface{} { + return value.Index(i).Interface() + } + } + + // if there are no elements, then HaveEach will match. + for i := 0; i < value.Len(); i++ { + success, err := elemMatcher.Match(valueAt(i)) + if err != nil { + return false, err + } + if !success { + return false, nil + } + } + + return true, nil +} + +// FailureMessage returns a suitable failure message. +func (matcher *HaveEachMatcher) FailureMessage(actual interface{}) (message string) { + return format.Message(actual, "to contain element matching", matcher.Element) +} + +// NegatedFailureMessage returns a suitable negated failure message. +func (matcher *HaveEachMatcher) NegatedFailureMessage(actual interface{}) (message string) { + return format.Message(actual, "not to contain element matching", matcher.Element) +} diff --git a/vendor/github.com/onsi/gomega/matchers/have_field.go b/vendor/github.com/onsi/gomega/matchers/have_field.go index 2f1a9163..e1fe934d 100644 --- a/vendor/github.com/onsi/gomega/matchers/have_field.go +++ b/vendor/github.com/onsi/gomega/matchers/have_field.go @@ -12,6 +12,13 @@ func extractField(actual interface{}, field string) (interface{}, error) { fields := strings.SplitN(field, ".", 2) actualValue := reflect.ValueOf(actual) + if actualValue.Kind() == reflect.Ptr { + actualValue = actualValue.Elem() + } + if actualValue == (reflect.Value{}) { + return nil, fmt.Errorf("HaveField encountered nil while dereferencing a pointer of type %T.", actual) + } + if actualValue.Kind() != reflect.Struct { return nil, fmt.Errorf("HaveField encountered:\n%s\nWhich is not a struct.", format.Object(actual, 1)) } diff --git a/vendor/github.com/prometheus/client_golang/prometheus/README.md b/vendor/github.com/prometheus/client_golang/prometheus/README.md index 44986bff..c67ff1b7 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/README.md +++ b/vendor/github.com/prometheus/client_golang/prometheus/README.md @@ -1 +1 @@ -See [![go-doc](https://godoc.org/github.com/prometheus/client_golang/prometheus?status.svg)](https://godoc.org/github.com/prometheus/client_golang/prometheus). +See [![Go Reference](https://pkg.go.dev/badge/github.com/prometheus/client_golang/prometheus.svg)](https://pkg.go.dev/github.com/prometheus/client_golang/prometheus). diff --git a/vendor/github.com/prometheus/client_golang/prometheus/build_info_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/build_info_collector.go new file mode 100644 index 00000000..450189f3 --- /dev/null +++ b/vendor/github.com/prometheus/client_golang/prometheus/build_info_collector.go @@ -0,0 +1,38 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package prometheus + +import "runtime/debug" + +// NewBuildInfoCollector is the obsolete version of collectors.NewBuildInfoCollector. +// See there for documentation. +// +// Deprecated: Use collectors.NewBuildInfoCollector instead. +func NewBuildInfoCollector() Collector { + path, version, sum := "unknown", "unknown", "unknown" + if bi, ok := debug.ReadBuildInfo(); ok { + path = bi.Main.Path + version = bi.Main.Version + sum = bi.Main.Sum + } + c := &selfCollector{MustNewConstMetric( + NewDesc( + "go_build_info", + "Build information about the main Go module.", + nil, Labels{"path": path, "version": version, "checksum": sum}, + ), + GaugeValue, 1)} + c.init(c.self) + return c +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/collector.go b/vendor/github.com/prometheus/client_golang/prometheus/collector.go index 1e839650..ac1ca3cf 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/collector.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/collector.go @@ -118,3 +118,11 @@ func (c *selfCollector) Describe(ch chan<- *Desc) { func (c *selfCollector) Collect(ch chan<- Metric) { ch <- c.self } + +// collectorMetric is a metric that is also a collector. +// Because of selfCollector, most (if not all) Metrics in +// this package are also collectors. +type collectorMetric interface { + Metric + Collector +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/collectors/dbstats_collector_go115.go b/vendor/github.com/prometheus/client_golang/prometheus/collectors/dbstats_collector_go115.go index a6e6268c..6d152fbf 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/collectors/dbstats_collector_go115.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/collectors/dbstats_collector_go115.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build go1.15 // +build go1.15 package collectors diff --git a/vendor/github.com/prometheus/client_golang/prometheus/collectors/dbstats_collector_pre_go115.go b/vendor/github.com/prometheus/client_golang/prometheus/collectors/dbstats_collector_pre_go115.go index 0568affe..65235069 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/collectors/dbstats_collector_pre_go115.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/collectors/dbstats_collector_pre_go115.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !go1.15 // +build !go1.15 package collectors diff --git a/vendor/github.com/prometheus/client_golang/prometheus/counter.go b/vendor/github.com/prometheus/client_golang/prometheus/counter.go index 3f8fd790..00d70f09 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/counter.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/counter.go @@ -133,10 +133,14 @@ func (c *counter) Inc() { atomic.AddUint64(&c.valInt, 1) } -func (c *counter) Write(out *dto.Metric) error { +func (c *counter) get() float64 { fval := math.Float64frombits(atomic.LoadUint64(&c.valBits)) ival := atomic.LoadUint64(&c.valInt) - val := fval + float64(ival) + return fval + float64(ival) +} + +func (c *counter) Write(out *dto.Metric) error { + val := c.get() var exemplar *dto.Exemplar if e := c.exemplar.Load(); e != nil { diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go index a96ed1ce..08195b41 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go @@ -16,32 +16,209 @@ package prometheus import ( "runtime" "runtime/debug" - "sync" "time" ) -type goCollector struct { +func goRuntimeMemStats() memStatsMetrics { + return memStatsMetrics{ + { + desc: NewDesc( + memstatNamespace("alloc_bytes"), + "Number of bytes allocated and still in use.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.Alloc) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("alloc_bytes_total"), + "Total number of bytes allocated, even if freed.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.TotalAlloc) }, + valType: CounterValue, + }, { + desc: NewDesc( + memstatNamespace("sys_bytes"), + "Number of bytes obtained from system.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.Sys) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("lookups_total"), + "Total number of pointer lookups.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.Lookups) }, + valType: CounterValue, + }, { + desc: NewDesc( + memstatNamespace("mallocs_total"), + "Total number of mallocs.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.Mallocs) }, + valType: CounterValue, + }, { + desc: NewDesc( + memstatNamespace("frees_total"), + "Total number of frees.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.Frees) }, + valType: CounterValue, + }, { + desc: NewDesc( + memstatNamespace("heap_alloc_bytes"), + "Number of heap bytes allocated and still in use.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapAlloc) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("heap_sys_bytes"), + "Number of heap bytes obtained from system.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapSys) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("heap_idle_bytes"), + "Number of heap bytes waiting to be used.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapIdle) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("heap_inuse_bytes"), + "Number of heap bytes that are in use.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapInuse) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("heap_released_bytes"), + "Number of heap bytes released to OS.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapReleased) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("heap_objects"), + "Number of allocated objects.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapObjects) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("stack_inuse_bytes"), + "Number of bytes in use by the stack allocator.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.StackInuse) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("stack_sys_bytes"), + "Number of bytes obtained from system for stack allocator.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.StackSys) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("mspan_inuse_bytes"), + "Number of bytes in use by mspan structures.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.MSpanInuse) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("mspan_sys_bytes"), + "Number of bytes used for mspan structures obtained from system.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.MSpanSys) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("mcache_inuse_bytes"), + "Number of bytes in use by mcache structures.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.MCacheInuse) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("mcache_sys_bytes"), + "Number of bytes used for mcache structures obtained from system.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.MCacheSys) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("buck_hash_sys_bytes"), + "Number of bytes used by the profiling bucket hash table.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.BuckHashSys) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("gc_sys_bytes"), + "Number of bytes used for garbage collection system metadata.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.GCSys) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("other_sys_bytes"), + "Number of bytes used for other system allocations.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.OtherSys) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("next_gc_bytes"), + "Number of heap bytes when next garbage collection will take place.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return float64(ms.NextGC) }, + valType: GaugeValue, + }, { + desc: NewDesc( + memstatNamespace("gc_cpu_fraction"), + "The fraction of this program's available CPU time used by the GC since the program started.", + nil, nil, + ), + eval: func(ms *runtime.MemStats) float64 { return ms.GCCPUFraction }, + valType: GaugeValue, + }, + } +} + +type baseGoCollector struct { goroutinesDesc *Desc threadsDesc *Desc gcDesc *Desc + gcLastTimeDesc *Desc goInfoDesc *Desc - - // ms... are memstats related. - msLast *runtime.MemStats // Previously collected memstats. - msLastTimestamp time.Time - msMtx sync.Mutex // Protects msLast and msLastTimestamp. - msMetrics memStatsMetrics - msRead func(*runtime.MemStats) // For mocking in tests. - msMaxWait time.Duration // Wait time for fresh memstats. - msMaxAge time.Duration // Maximum allowed age of old memstats. } -// NewGoCollector is the obsolete version of collectors.NewGoCollector. -// See there for documentation. -// -// Deprecated: Use collectors.NewGoCollector instead. -func NewGoCollector() Collector { - return &goCollector{ +func newBaseGoCollector() baseGoCollector { + return baseGoCollector{ goroutinesDesc: NewDesc( "go_goroutines", "Number of goroutines that currently exist.", @@ -54,243 +231,28 @@ func NewGoCollector() Collector { "go_gc_duration_seconds", "A summary of the pause duration of garbage collection cycles.", nil, nil), + gcLastTimeDesc: NewDesc( + memstatNamespace("last_gc_time_seconds"), + "Number of seconds since 1970 of last garbage collection.", + nil, nil), goInfoDesc: NewDesc( "go_info", "Information about the Go environment.", nil, Labels{"version": runtime.Version()}), - msLast: &runtime.MemStats{}, - msRead: runtime.ReadMemStats, - msMaxWait: time.Second, - msMaxAge: 5 * time.Minute, - msMetrics: memStatsMetrics{ - { - desc: NewDesc( - memstatNamespace("alloc_bytes"), - "Number of bytes allocated and still in use.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.Alloc) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("alloc_bytes_total"), - "Total number of bytes allocated, even if freed.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.TotalAlloc) }, - valType: CounterValue, - }, { - desc: NewDesc( - memstatNamespace("sys_bytes"), - "Number of bytes obtained from system.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.Sys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("lookups_total"), - "Total number of pointer lookups.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.Lookups) }, - valType: CounterValue, - }, { - desc: NewDesc( - memstatNamespace("mallocs_total"), - "Total number of mallocs.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.Mallocs) }, - valType: CounterValue, - }, { - desc: NewDesc( - memstatNamespace("frees_total"), - "Total number of frees.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.Frees) }, - valType: CounterValue, - }, { - desc: NewDesc( - memstatNamespace("heap_alloc_bytes"), - "Number of heap bytes allocated and still in use.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapAlloc) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("heap_sys_bytes"), - "Number of heap bytes obtained from system.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("heap_idle_bytes"), - "Number of heap bytes waiting to be used.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapIdle) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("heap_inuse_bytes"), - "Number of heap bytes that are in use.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapInuse) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("heap_released_bytes"), - "Number of heap bytes released to OS.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapReleased) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("heap_objects"), - "Number of allocated objects.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapObjects) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("stack_inuse_bytes"), - "Number of bytes in use by the stack allocator.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.StackInuse) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("stack_sys_bytes"), - "Number of bytes obtained from system for stack allocator.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.StackSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("mspan_inuse_bytes"), - "Number of bytes in use by mspan structures.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.MSpanInuse) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("mspan_sys_bytes"), - "Number of bytes used for mspan structures obtained from system.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.MSpanSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("mcache_inuse_bytes"), - "Number of bytes in use by mcache structures.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.MCacheInuse) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("mcache_sys_bytes"), - "Number of bytes used for mcache structures obtained from system.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.MCacheSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("buck_hash_sys_bytes"), - "Number of bytes used by the profiling bucket hash table.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.BuckHashSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("gc_sys_bytes"), - "Number of bytes used for garbage collection system metadata.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.GCSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("other_sys_bytes"), - "Number of bytes used for other system allocations.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.OtherSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("next_gc_bytes"), - "Number of heap bytes when next garbage collection will take place.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.NextGC) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("last_gc_time_seconds"), - "Number of seconds since 1970 of last garbage collection.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.LastGC) / 1e9 }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("gc_cpu_fraction"), - "The fraction of this program's available CPU time used by the GC since the program started.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return ms.GCCPUFraction }, - valType: GaugeValue, - }, - }, } } -func memstatNamespace(s string) string { - return "go_memstats_" + s -} - // Describe returns all descriptions of the collector. -func (c *goCollector) Describe(ch chan<- *Desc) { +func (c *baseGoCollector) Describe(ch chan<- *Desc) { ch <- c.goroutinesDesc ch <- c.threadsDesc ch <- c.gcDesc + ch <- c.gcLastTimeDesc ch <- c.goInfoDesc - for _, i := range c.msMetrics { - ch <- i.desc - } } // Collect returns the current state of all metrics of the collector. -func (c *goCollector) Collect(ch chan<- Metric) { - var ( - ms = &runtime.MemStats{} - done = make(chan struct{}) - ) - // Start reading memstats first as it might take a while. - go func() { - c.msRead(ms) - c.msMtx.Lock() - c.msLast = ms - c.msLastTimestamp = time.Now() - c.msMtx.Unlock() - close(done) - }() - +func (c *baseGoCollector) Collect(ch chan<- Metric) { ch <- MustNewConstMetric(c.goroutinesDesc, GaugeValue, float64(runtime.NumGoroutine())) n, _ := runtime.ThreadCreateProfile(nil) ch <- MustNewConstMetric(c.threadsDesc, GaugeValue, float64(n)) @@ -305,63 +267,19 @@ func (c *goCollector) Collect(ch chan<- Metric) { } quantiles[0.0] = stats.PauseQuantiles[0].Seconds() ch <- MustNewConstSummary(c.gcDesc, uint64(stats.NumGC), stats.PauseTotal.Seconds(), quantiles) + ch <- MustNewConstMetric(c.gcLastTimeDesc, GaugeValue, float64(stats.LastGC.UnixNano())/1e9) ch <- MustNewConstMetric(c.goInfoDesc, GaugeValue, 1) - - timer := time.NewTimer(c.msMaxWait) - select { - case <-done: // Our own ReadMemStats succeeded in time. Use it. - timer.Stop() // Important for high collection frequencies to not pile up timers. - c.msCollect(ch, ms) - return - case <-timer.C: // Time out, use last memstats if possible. Continue below. - } - c.msMtx.Lock() - if time.Since(c.msLastTimestamp) < c.msMaxAge { - // Last memstats are recent enough. Collect from them under the lock. - c.msCollect(ch, c.msLast) - c.msMtx.Unlock() - return - } - // If we are here, the last memstats are too old or don't exist. We have - // to wait until our own ReadMemStats finally completes. For that to - // happen, we have to release the lock. - c.msMtx.Unlock() - <-done - c.msCollect(ch, ms) } -func (c *goCollector) msCollect(ch chan<- Metric, ms *runtime.MemStats) { - for _, i := range c.msMetrics { - ch <- MustNewConstMetric(i.desc, i.valType, i.eval(ms)) - } +func memstatNamespace(s string) string { + return "go_memstats_" + s } -// memStatsMetrics provide description, value, and value type for memstat metrics. +// memStatsMetrics provide description, evaluator, runtime/metrics name, and +// value type for memstat metrics. type memStatsMetrics []struct { desc *Desc eval func(*runtime.MemStats) float64 valType ValueType } - -// NewBuildInfoCollector is the obsolete version of collectors.NewBuildInfoCollector. -// See there for documentation. -// -// Deprecated: Use collectors.NewBuildInfoCollector instead. -func NewBuildInfoCollector() Collector { - path, version, sum := "unknown", "unknown", "unknown" - if bi, ok := debug.ReadBuildInfo(); ok { - path = bi.Main.Path - version = bi.Main.Version - sum = bi.Main.Sum - } - c := &selfCollector{MustNewConstMetric( - NewDesc( - "go_build_info", - "Build information about the main Go module.", - nil, Labels{"path": path, "version": version, "checksum": sum}, - ), - GaugeValue, 1)} - c.init(c.self) - return c -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go new file mode 100644 index 00000000..24526131 --- /dev/null +++ b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go @@ -0,0 +1,107 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !go1.17 +// +build !go1.17 + +package prometheus + +import ( + "runtime" + "sync" + "time" +) + +type goCollector struct { + base baseGoCollector + + // ms... are memstats related. + msLast *runtime.MemStats // Previously collected memstats. + msLastTimestamp time.Time + msMtx sync.Mutex // Protects msLast and msLastTimestamp. + msMetrics memStatsMetrics + msRead func(*runtime.MemStats) // For mocking in tests. + msMaxWait time.Duration // Wait time for fresh memstats. + msMaxAge time.Duration // Maximum allowed age of old memstats. +} + +// NewGoCollector is the obsolete version of collectors.NewGoCollector. +// See there for documentation. +// +// Deprecated: Use collectors.NewGoCollector instead. +func NewGoCollector() Collector { + return &goCollector{ + base: newBaseGoCollector(), + msLast: &runtime.MemStats{}, + msRead: runtime.ReadMemStats, + msMaxWait: time.Second, + msMaxAge: 5 * time.Minute, + msMetrics: goRuntimeMemStats(), + } +} + +// Describe returns all descriptions of the collector. +func (c *goCollector) Describe(ch chan<- *Desc) { + c.base.Describe(ch) + for _, i := range c.msMetrics { + ch <- i.desc + } +} + +// Collect returns the current state of all metrics of the collector. +func (c *goCollector) Collect(ch chan<- Metric) { + var ( + ms = &runtime.MemStats{} + done = make(chan struct{}) + ) + // Start reading memstats first as it might take a while. + go func() { + c.msRead(ms) + c.msMtx.Lock() + c.msLast = ms + c.msLastTimestamp = time.Now() + c.msMtx.Unlock() + close(done) + }() + + // Collect base non-memory metrics. + c.base.Collect(ch) + + timer := time.NewTimer(c.msMaxWait) + select { + case <-done: // Our own ReadMemStats succeeded in time. Use it. + timer.Stop() // Important for high collection frequencies to not pile up timers. + c.msCollect(ch, ms) + return + case <-timer.C: // Time out, use last memstats if possible. Continue below. + } + c.msMtx.Lock() + if time.Since(c.msLastTimestamp) < c.msMaxAge { + // Last memstats are recent enough. Collect from them under the lock. + c.msCollect(ch, c.msLast) + c.msMtx.Unlock() + return + } + // If we are here, the last memstats are too old or don't exist. We have + // to wait until our own ReadMemStats finally completes. For that to + // happen, we have to release the lock. + c.msMtx.Unlock() + <-done + c.msCollect(ch, ms) +} + +func (c *goCollector) msCollect(ch chan<- Metric, ms *runtime.MemStats) { + for _, i := range c.msMetrics { + ch <- MustNewConstMetric(i.desc, i.valType, i.eval(ms)) + } +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go117.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go117.go new file mode 100644 index 00000000..d43bdcdd --- /dev/null +++ b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go117.go @@ -0,0 +1,408 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build go1.17 +// +build go1.17 + +package prometheus + +import ( + "math" + "runtime" + "runtime/metrics" + "strings" + "sync" + + //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. + "github.com/golang/protobuf/proto" + "github.com/prometheus/client_golang/prometheus/internal" + dto "github.com/prometheus/client_model/go" +) + +type goCollector struct { + base baseGoCollector + + // mu protects updates to all fields ensuring a consistent + // snapshot is always produced by Collect. + mu sync.Mutex + + // rm... fields all pertain to the runtime/metrics package. + rmSampleBuf []metrics.Sample + rmSampleMap map[string]*metrics.Sample + rmMetrics []collectorMetric + + // With Go 1.17, the runtime/metrics package was introduced. + // From that point on, metric names produced by the runtime/metrics + // package could be generated from runtime/metrics names. However, + // these differ from the old names for the same values. + // + // This field exist to export the same values under the old names + // as well. + msMetrics memStatsMetrics +} + +// NewGoCollector is the obsolete version of collectors.NewGoCollector. +// See there for documentation. +// +// Deprecated: Use collectors.NewGoCollector instead. +func NewGoCollector() Collector { + descriptions := metrics.All() + + // Collect all histogram samples so that we can get their buckets. + // The API guarantees that the buckets are always fixed for the lifetime + // of the process. + var histograms []metrics.Sample + for _, d := range descriptions { + if d.Kind == metrics.KindFloat64Histogram { + histograms = append(histograms, metrics.Sample{Name: d.Name}) + } + } + metrics.Read(histograms) + bucketsMap := make(map[string][]float64) + for i := range histograms { + bucketsMap[histograms[i].Name] = histograms[i].Value.Float64Histogram().Buckets + } + + // Generate a Desc and ValueType for each runtime/metrics metric. + metricSet := make([]collectorMetric, 0, len(descriptions)) + sampleBuf := make([]metrics.Sample, 0, len(descriptions)) + sampleMap := make(map[string]*metrics.Sample, len(descriptions)) + for i := range descriptions { + d := &descriptions[i] + namespace, subsystem, name, ok := internal.RuntimeMetricsToProm(d) + if !ok { + // Just ignore this metric; we can't do anything with it here. + // If a user decides to use the latest version of Go, we don't want + // to fail here. This condition is tested elsewhere. + continue + } + + // Set up sample buffer for reading, and a map + // for quick lookup of sample values. + sampleBuf = append(sampleBuf, metrics.Sample{Name: d.Name}) + sampleMap[d.Name] = &sampleBuf[len(sampleBuf)-1] + + var m collectorMetric + if d.Kind == metrics.KindFloat64Histogram { + _, hasSum := rmExactSumMap[d.Name] + unit := d.Name[strings.IndexRune(d.Name, ':')+1:] + m = newBatchHistogram( + NewDesc( + BuildFQName(namespace, subsystem, name), + d.Description, + nil, + nil, + ), + internal.RuntimeMetricsBucketsForUnit(bucketsMap[d.Name], unit), + hasSum, + ) + } else if d.Cumulative { + m = NewCounter(CounterOpts{ + Namespace: namespace, + Subsystem: subsystem, + Name: name, + Help: d.Description, + }) + } else { + m = NewGauge(GaugeOpts{ + Namespace: namespace, + Subsystem: subsystem, + Name: name, + Help: d.Description, + }) + } + metricSet = append(metricSet, m) + } + return &goCollector{ + base: newBaseGoCollector(), + rmSampleBuf: sampleBuf, + rmSampleMap: sampleMap, + rmMetrics: metricSet, + msMetrics: goRuntimeMemStats(), + } +} + +// Describe returns all descriptions of the collector. +func (c *goCollector) Describe(ch chan<- *Desc) { + c.base.Describe(ch) + for _, i := range c.msMetrics { + ch <- i.desc + } + for _, m := range c.rmMetrics { + ch <- m.Desc() + } +} + +// Collect returns the current state of all metrics of the collector. +func (c *goCollector) Collect(ch chan<- Metric) { + // Collect base non-memory metrics. + c.base.Collect(ch) + + // Collect must be thread-safe, so prevent concurrent use of + // rmSampleBuf. Just read into rmSampleBuf but write all the data + // we get into our Metrics or MemStats. + // + // This lock also ensures that the Metrics we send out are all from + // the same updates, ensuring their mutual consistency insofar as + // is guaranteed by the runtime/metrics package. + // + // N.B. This locking is heavy-handed, but Collect is expected to be called + // relatively infrequently. Also the core operation here, metrics.Read, + // is fast (O(tens of microseconds)) so contention should certainly be + // low, though channel operations and any allocations may add to that. + c.mu.Lock() + defer c.mu.Unlock() + + // Populate runtime/metrics sample buffer. + metrics.Read(c.rmSampleBuf) + + // Update all our metrics from rmSampleBuf. + for i, sample := range c.rmSampleBuf { + // N.B. switch on concrete type because it's significantly more efficient + // than checking for the Counter and Gauge interface implementations. In + // this case, we control all the types here. + switch m := c.rmMetrics[i].(type) { + case *counter: + // Guard against decreases. This should never happen, but a failure + // to do so will result in a panic, which is a harsh consequence for + // a metrics collection bug. + v0, v1 := m.get(), unwrapScalarRMValue(sample.Value) + if v1 > v0 { + m.Add(unwrapScalarRMValue(sample.Value) - m.get()) + } + m.Collect(ch) + case *gauge: + m.Set(unwrapScalarRMValue(sample.Value)) + m.Collect(ch) + case *batchHistogram: + m.update(sample.Value.Float64Histogram(), c.exactSumFor(sample.Name)) + m.Collect(ch) + default: + panic("unexpected metric type") + } + } + // ms is a dummy MemStats that we populate ourselves so that we can + // populate the old metrics from it. + var ms runtime.MemStats + memStatsFromRM(&ms, c.rmSampleMap) + for _, i := range c.msMetrics { + ch <- MustNewConstMetric(i.desc, i.valType, i.eval(&ms)) + } +} + +// unwrapScalarRMValue unwraps a runtime/metrics value that is assumed +// to be scalar and returns the equivalent float64 value. Panics if the +// value is not scalar. +func unwrapScalarRMValue(v metrics.Value) float64 { + switch v.Kind() { + case metrics.KindUint64: + return float64(v.Uint64()) + case metrics.KindFloat64: + return v.Float64() + case metrics.KindBad: + // Unsupported metric. + // + // This should never happen because we always populate our metric + // set from the runtime/metrics package. + panic("unexpected unsupported metric") + default: + // Unsupported metric kind. + // + // This should never happen because we check for this during initialization + // and flag and filter metrics whose kinds we don't understand. + panic("unexpected unsupported metric kind") + } +} + +var rmExactSumMap = map[string]string{ + "/gc/heap/allocs-by-size:bytes": "/gc/heap/allocs:bytes", + "/gc/heap/frees-by-size:bytes": "/gc/heap/frees:bytes", +} + +// exactSumFor takes a runtime/metrics metric name (that is assumed to +// be of kind KindFloat64Histogram) and returns its exact sum and whether +// its exact sum exists. +// +// The runtime/metrics API for histograms doesn't currently expose exact +// sums, but some of the other metrics are in fact exact sums of histograms. +func (c *goCollector) exactSumFor(rmName string) float64 { + sumName, ok := rmExactSumMap[rmName] + if !ok { + return 0 + } + s, ok := c.rmSampleMap[sumName] + if !ok { + return 0 + } + return unwrapScalarRMValue(s.Value) +} + +func memStatsFromRM(ms *runtime.MemStats, rm map[string]*metrics.Sample) { + lookupOrZero := func(name string) uint64 { + if s, ok := rm[name]; ok { + return s.Value.Uint64() + } + return 0 + } + + // Currently, MemStats adds tiny alloc count to both Mallocs AND Frees. + // The reason for this is because MemStats couldn't be extended at the time + // but there was a desire to have Mallocs at least be a little more representative, + // while having Mallocs - Frees still represent a live object count. + // Unfortunately, MemStats doesn't actually export a large allocation count, + // so it's impossible to pull this number out directly. + tinyAllocs := lookupOrZero("/gc/heap/tiny/allocs:objects") + ms.Mallocs = lookupOrZero("/gc/heap/allocs:objects") + tinyAllocs + ms.Frees = lookupOrZero("/gc/heap/frees:objects") + tinyAllocs + + ms.TotalAlloc = lookupOrZero("/gc/heap/allocs:bytes") + ms.Sys = lookupOrZero("/memory/classes/total:bytes") + ms.Lookups = 0 // Already always zero. + ms.HeapAlloc = lookupOrZero("/memory/classes/heap/objects:bytes") + ms.Alloc = ms.HeapAlloc + ms.HeapInuse = ms.HeapAlloc + lookupOrZero("/memory/classes/heap/unused:bytes") + ms.HeapReleased = lookupOrZero("/memory/classes/heap/released:bytes") + ms.HeapIdle = ms.HeapReleased + lookupOrZero("/memory/classes/heap/free:bytes") + ms.HeapSys = ms.HeapInuse + ms.HeapIdle + ms.HeapObjects = lookupOrZero("/gc/heap/objects:objects") + ms.StackInuse = lookupOrZero("/memory/classes/heap/stacks:bytes") + ms.StackSys = ms.StackInuse + lookupOrZero("/memory/classes/os-stacks:bytes") + ms.MSpanInuse = lookupOrZero("/memory/classes/metadata/mspan/inuse:bytes") + ms.MSpanSys = ms.MSpanInuse + lookupOrZero("/memory/classes/metadata/mspan/free:bytes") + ms.MCacheInuse = lookupOrZero("/memory/classes/metadata/mcache/inuse:bytes") + ms.MCacheSys = ms.MCacheInuse + lookupOrZero("/memory/classes/metadata/mcache/free:bytes") + ms.BuckHashSys = lookupOrZero("/memory/classes/profiling/buckets:bytes") + ms.GCSys = lookupOrZero("/memory/classes/metadata/other:bytes") + ms.OtherSys = lookupOrZero("/memory/classes/other:bytes") + ms.NextGC = lookupOrZero("/gc/heap/goal:bytes") + + // N.B. LastGC is omitted because runtime.GCStats already has this. + // See https://github.com/prometheus/client_golang/issues/842#issuecomment-861812034 + // for more details. + ms.LastGC = 0 + + // N.B. GCCPUFraction is intentionally omitted. This metric is not useful, + // and often misleading due to the fact that it's an average over the lifetime + // of the process. + // See https://github.com/prometheus/client_golang/issues/842#issuecomment-861812034 + // for more details. + ms.GCCPUFraction = 0 +} + +// batchHistogram is a mutable histogram that is updated +// in batches. +type batchHistogram struct { + selfCollector + + // Static fields updated only once. + desc *Desc + hasSum bool + + // Because this histogram operates in batches, it just uses a + // single mutex for everything. updates are always serialized + // but Write calls may operate concurrently with updates. + // Contention between these two sources should be rare. + mu sync.Mutex + buckets []float64 // Inclusive lower bounds, like runtime/metrics. + counts []uint64 + sum float64 // Used if hasSum is true. +} + +// newBatchHistogram creates a new batch histogram value with the given +// Desc, buckets, and whether or not it has an exact sum available. +// +// buckets must always be from the runtime/metrics package, following +// the same conventions. +func newBatchHistogram(desc *Desc, buckets []float64, hasSum bool) *batchHistogram { + h := &batchHistogram{ + desc: desc, + buckets: buckets, + // Because buckets follows runtime/metrics conventions, there's + // 1 more value in the buckets list than there are buckets represented, + // because in runtime/metrics, the bucket values represent *boundaries*, + // and non-Inf boundaries are inclusive lower bounds for that bucket. + counts: make([]uint64, len(buckets)-1), + hasSum: hasSum, + } + h.init(h) + return h +} + +// update updates the batchHistogram from a runtime/metrics histogram. +// +// sum must be provided if the batchHistogram was created to have an exact sum. +// h.buckets must be a strict subset of his.Buckets. +func (h *batchHistogram) update(his *metrics.Float64Histogram, sum float64) { + counts, buckets := his.Counts, his.Buckets + + h.mu.Lock() + defer h.mu.Unlock() + + // Clear buckets. + for i := range h.counts { + h.counts[i] = 0 + } + // Copy and reduce buckets. + var j int + for i, count := range counts { + h.counts[j] += count + if buckets[i+1] == h.buckets[j+1] { + j++ + } + } + if h.hasSum { + h.sum = sum + } +} + +func (h *batchHistogram) Desc() *Desc { + return h.desc +} + +func (h *batchHistogram) Write(out *dto.Metric) error { + h.mu.Lock() + defer h.mu.Unlock() + + sum := float64(0) + if h.hasSum { + sum = h.sum + } + dtoBuckets := make([]*dto.Bucket, 0, len(h.counts)) + totalCount := uint64(0) + for i, count := range h.counts { + totalCount += count + if !h.hasSum { + // N.B. This computed sum is an underestimate. + sum += h.buckets[i] * float64(count) + } + + // Skip the +Inf bucket, but only for the bucket list. + // It must still count for sum and totalCount. + if math.IsInf(h.buckets[i+1], 1) { + break + } + // Float64Histogram's upper bound is exclusive, so make it inclusive + // by obtaining the next float64 value down, in order. + upperBound := math.Nextafter(h.buckets[i+1], h.buckets[i]) + dtoBuckets = append(dtoBuckets, &dto.Bucket{ + CumulativeCount: proto.Uint64(totalCount), + UpperBound: proto.Float64(upperBound), + }) + } + out.Histogram = &dto.Histogram{ + Bucket: dtoBuckets, + SampleCount: proto.Uint64(totalCount), + SampleSum: proto.Float64(sum), + } + return nil +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go index 8425640b..893802fd 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go @@ -116,6 +116,34 @@ func ExponentialBuckets(start, factor float64, count int) []float64 { return buckets } +// ExponentialBucketsRange creates 'count' buckets, where the lowest bucket is +// 'min' and the highest bucket is 'max'. The final +Inf bucket is not counted +// and not included in the returned slice. The returned slice is meant to be +// used for the Buckets field of HistogramOpts. +// +// The function panics if 'count' is 0 or negative, if 'min' is 0 or negative. +func ExponentialBucketsRange(min, max float64, count int) []float64 { + if count < 1 { + panic("ExponentialBucketsRange count needs a positive count") + } + if min <= 0 { + panic("ExponentialBucketsRange min needs to be greater than 0") + } + + // Formula for exponential buckets. + // max = min*growthFactor^(bucketCount-1) + + // We know max/min and highest bucket. Solve for growthFactor. + growthFactor := math.Pow(max/min, 1.0/float64(count-1)) + + // Now that we know growthFactor, solve for each bucket. + buckets := make([]float64, count) + for i := 1; i <= count; i++ { + buckets[i-1] = min * math.Pow(growthFactor, float64(i-1)) + } + return buckets +} + // HistogramOpts bundles the options for creating a Histogram metric. It is // mandatory to set Name to a non-empty string. All other fields are optional // and can safely be left at their zero value, although it is strongly diff --git a/vendor/github.com/prometheus/client_golang/prometheus/internal/go_runtime_metrics.go b/vendor/github.com/prometheus/client_golang/prometheus/internal/go_runtime_metrics.go new file mode 100644 index 00000000..fe0a5218 --- /dev/null +++ b/vendor/github.com/prometheus/client_golang/prometheus/internal/go_runtime_metrics.go @@ -0,0 +1,142 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build go1.17 +// +build go1.17 + +package internal + +import ( + "math" + "path" + "runtime/metrics" + "strings" + + "github.com/prometheus/common/model" +) + +// RuntimeMetricsToProm produces a Prometheus metric name from a runtime/metrics +// metric description and validates whether the metric is suitable for integration +// with Prometheus. +// +// Returns false if a name could not be produced, or if Prometheus does not understand +// the runtime/metrics Kind. +// +// Note that the main reason a name couldn't be produced is if the runtime/metrics +// package exports a name with characters outside the valid Prometheus metric name +// character set. This is theoretically possible, but should never happen in practice. +// Still, don't rely on it. +func RuntimeMetricsToProm(d *metrics.Description) (string, string, string, bool) { + namespace := "go" + + comp := strings.SplitN(d.Name, ":", 2) + key := comp[0] + unit := comp[1] + + // The last path element in the key is the name, + // the rest is the subsystem. + subsystem := path.Dir(key[1:] /* remove leading / */) + name := path.Base(key) + + // subsystem is translated by replacing all / and - with _. + subsystem = strings.ReplaceAll(subsystem, "/", "_") + subsystem = strings.ReplaceAll(subsystem, "-", "_") + + // unit is translated assuming that the unit contains no + // non-ASCII characters. + unit = strings.ReplaceAll(unit, "-", "_") + unit = strings.ReplaceAll(unit, "*", "_") + unit = strings.ReplaceAll(unit, "/", "_per_") + + // name has - replaced with _ and is concatenated with the unit and + // other data. + name = strings.ReplaceAll(name, "-", "_") + name = name + "_" + unit + if d.Cumulative { + name = name + "_total" + } + + valid := model.IsValidMetricName(model.LabelValue(namespace + "_" + subsystem + "_" + name)) + switch d.Kind { + case metrics.KindUint64: + case metrics.KindFloat64: + case metrics.KindFloat64Histogram: + default: + valid = false + } + return namespace, subsystem, name, valid +} + +// RuntimeMetricsBucketsForUnit takes a set of buckets obtained for a runtime/metrics histogram +// type (so, lower-bound inclusive) and a unit from a runtime/metrics name, and produces +// a reduced set of buckets. This function always removes any -Inf bucket as it's represented +// as the bottom-most upper-bound inclusive bucket in Prometheus. +func RuntimeMetricsBucketsForUnit(buckets []float64, unit string) []float64 { + switch unit { + case "bytes": + // Rebucket as powers of 2. + return rebucketExp(buckets, 2) + case "seconds": + // Rebucket as powers of 10 and then merge all buckets greater + // than 1 second into the +Inf bucket. + b := rebucketExp(buckets, 10) + for i := range b { + if b[i] <= 1 { + continue + } + b[i] = math.Inf(1) + b = b[:i+1] + break + } + return b + } + return buckets +} + +// rebucketExp takes a list of bucket boundaries (lower bound inclusive) and +// downsamples the buckets to those a multiple of base apart. The end result +// is a roughly exponential (in many cases, perfectly exponential) bucketing +// scheme. +func rebucketExp(buckets []float64, base float64) []float64 { + bucket := buckets[0] + var newBuckets []float64 + // We may see a -Inf here, in which case, add it and skip it + // since we risk producing NaNs otherwise. + // + // We need to preserve -Inf values to maintain runtime/metrics + // conventions. We'll strip it out later. + if bucket == math.Inf(-1) { + newBuckets = append(newBuckets, bucket) + buckets = buckets[1:] + bucket = buckets[0] + } + // From now on, bucket should always have a non-Inf value because + // Infs are only ever at the ends of the bucket lists, so + // arithmetic operations on it are non-NaN. + for i := 1; i < len(buckets); i++ { + if bucket >= 0 && buckets[i] < bucket*base { + // The next bucket we want to include is at least bucket*base. + continue + } else if bucket < 0 && buckets[i] < bucket/base { + // In this case the bucket we're targeting is negative, and since + // we're ascending through buckets here, we need to divide to get + // closer to zero exponentially. + continue + } + // The +Inf bucket will always be the last one, and we'll always + // end up including it here because bucket + newBuckets = append(newBuckets, bucket) + bucket = buckets[i] + } + return append(newBuckets, bucket) +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go index 3117461c..2dc3660d 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !windows // +build !windows package prometheus diff --git a/vendor/github.com/prometheus/client_golang/prometheus/value.go b/vendor/github.com/prometheus/client_golang/prometheus/value.go index c778711b..b4e0ae11 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/value.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/value.go @@ -21,7 +21,7 @@ import ( //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/ptypes" + "google.golang.org/protobuf/types/known/timestamppb" dto "github.com/prometheus/client_model/go" ) @@ -183,8 +183,8 @@ const ExemplarMaxRunes = 64 func newExemplar(value float64, ts time.Time, l Labels) (*dto.Exemplar, error) { e := &dto.Exemplar{} e.Value = proto.Float64(value) - tsProto, err := ptypes.TimestampProto(ts) - if err != nil { + tsProto := timestamppb.New(ts) + if err := tsProto.CheckValid(); err != nil { return nil, err } e.Timestamp = tsProto diff --git a/vendor/github.com/prometheus/common/expfmt/encode.go b/vendor/github.com/prometheus/common/expfmt/encode.go index bd4e3474..64dc0eb4 100644 --- a/vendor/github.com/prometheus/common/expfmt/encode.go +++ b/vendor/github.com/prometheus/common/expfmt/encode.go @@ -18,7 +18,7 @@ import ( "io" "net/http" - "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/proto" //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. "github.com/matttproud/golang_protobuf_extensions/pbutil" "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg" diff --git a/vendor/github.com/prometheus/common/expfmt/text_parse.go b/vendor/github.com/prometheus/common/expfmt/text_parse.go index b6079b31..84be0643 100644 --- a/vendor/github.com/prometheus/common/expfmt/text_parse.go +++ b/vendor/github.com/prometheus/common/expfmt/text_parse.go @@ -24,7 +24,7 @@ import ( dto "github.com/prometheus/client_model/go" - "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/proto" //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. "github.com/prometheus/common/model" ) diff --git a/vendor/github.com/prometheus/procfs/Makefile b/vendor/github.com/prometheus/procfs/Makefile index 616a0d25..fa2bd5b5 100644 --- a/vendor/github.com/prometheus/procfs/Makefile +++ b/vendor/github.com/prometheus/procfs/Makefile @@ -18,6 +18,8 @@ include Makefile.common ./ttar -C $(dir $*) -x -f $*.ttar touch $@ +fixtures: fixtures/.unpacked + update_fixtures: rm -vf fixtures/.unpacked ./ttar -c -f fixtures.ttar fixtures/ diff --git a/vendor/github.com/prometheus/procfs/Makefile.common b/vendor/github.com/prometheus/procfs/Makefile.common index 3ac29c63..a1b1ca40 100644 --- a/vendor/github.com/prometheus/procfs/Makefile.common +++ b/vendor/github.com/prometheus/procfs/Makefile.common @@ -78,12 +78,12 @@ ifneq ($(shell which gotestsum),) endif endif -PROMU_VERSION ?= 0.7.0 +PROMU_VERSION ?= 0.12.0 PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz GOLANGCI_LINT := GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v1.18.0 +GOLANGCI_LINT_VERSION ?= v1.39.0 # golangci-lint only supports linux, darwin and windows platforms on i386/amd64. # windows isn't included here because of the path separator being different. ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) @@ -118,7 +118,7 @@ endif %: common-% ; .PHONY: common-all -common-all: precheck style check_license lint unused build test +common-all: precheck style check_license lint yamllint unused build test .PHONY: common-style common-style: @@ -198,6 +198,15 @@ else endif endif +.PHONY: common-yamllint +common-yamllint: + @echo ">> running yamllint on all YAML files in the repository" +ifeq (, $(shell which yamllint)) + @echo "yamllint not installed so skipping" +else + yamllint . +endif + # For backward-compatibility. .PHONY: common-staticcheck common-staticcheck: lint diff --git a/vendor/github.com/prometheus/procfs/README.md b/vendor/github.com/prometheus/procfs/README.md index 55d1e326..43c37735 100644 --- a/vendor/github.com/prometheus/procfs/README.md +++ b/vendor/github.com/prometheus/procfs/README.md @@ -6,8 +6,8 @@ metrics from the pseudo-filesystems /proc and /sys. *WARNING*: This package is a work in progress. Its API may still break in backwards-incompatible ways without warnings. Use it at your own risk. -[![GoDoc](https://godoc.org/github.com/prometheus/procfs?status.png)](https://godoc.org/github.com/prometheus/procfs) -[![Build Status](https://travis-ci.org/prometheus/procfs.svg?branch=master)](https://travis-ci.org/prometheus/procfs) +[![Go Reference](https://pkg.go.dev/badge/github.com/prometheus/procfs.svg)](https://pkg.go.dev/github.com/prometheus/procfs) +[![CircleCI](https://circleci.com/gh/prometheus/procfs/tree/master.svg?style=svg)](https://circleci.com/gh/prometheus/procfs/tree/master) [![Go Report Card](https://goreportcard.com/badge/github.com/prometheus/procfs)](https://goreportcard.com/report/github.com/prometheus/procfs) ## Usage diff --git a/vendor/github.com/prometheus/procfs/cmdline.go b/vendor/github.com/prometheus/procfs/cmdline.go new file mode 100644 index 00000000..bf4f3b48 --- /dev/null +++ b/vendor/github.com/prometheus/procfs/cmdline.go @@ -0,0 +1,30 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package procfs + +import ( + "strings" + + "github.com/prometheus/procfs/internal/util" +) + +// CmdLine returns the command line of the kernel. +func (fs FS) CmdLine() ([]string, error) { + data, err := util.ReadFileNoStat(fs.proc.Path("cmdline")) + if err != nil { + return nil, err + } + + return strings.Fields(string(data)), nil +} diff --git a/vendor/github.com/prometheus/procfs/doc.go b/vendor/github.com/prometheus/procfs/doc.go index e2acd6d4..d31a8260 100644 --- a/vendor/github.com/prometheus/procfs/doc.go +++ b/vendor/github.com/prometheus/procfs/doc.go @@ -31,7 +31,7 @@ // log.Fatalf("could not get process: %s", err) // } // -// stat, err := p.NewStat() +// stat, err := p.Stat() // if err != nil { // log.Fatalf("could not get process stat: %s", err) // } diff --git a/vendor/github.com/prometheus/procfs/fixtures.ttar b/vendor/github.com/prometheus/procfs/fixtures.ttar index 1e76173d..5e7eeef4 100644 --- a/vendor/github.com/prometheus/procfs/fixtures.ttar +++ b/vendor/github.com/prometheus/procfs/fixtures.ttar @@ -644,6 +644,11 @@ Node 0, zone DMA32 759 572 791 475 194 45 12 0 Node 0, zone Normal 4381 1093 185 1530 567 102 4 0 0 0 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/cmdline +Lines: 1 +BOOT_IMAGE=/vmlinuz-5.11.0-22-generic root=UUID=456a0345-450d-4f7b-b7c9-43e3241d99ad ro quiet splash vt.handoff=7 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: fixtures/proc/cpuinfo Lines: 216 processor : 0 @@ -2204,6 +2209,23 @@ Lines: 1 00015c73 00020e76 F0000769 00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/proc/net/stat +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/net/stat/arp_cache +Lines: 3 +entries allocs destroys hash_grows lookups hits res_failed rcv_probes_mcast rcv_probes_ucast periodic_gc_runs forced_gc_runs unresolved_discards table_fulls +00000014 00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009 0000000a 0000000b 0000000c +00000014 0000000d 0000000e 0000000f 00000010 00000011 00000012 00000013 00000014 00000015 00000016 00000017 00000018 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/net/stat/ndisc_cache +Lines: 3 +entries allocs destroys hash_grows lookups hits res_failed rcv_probes_mcast rcv_probes_ucast periodic_gc_runs forced_gc_runs unresolved_discards table_fulls +00000024 000000f0 000000f1 000000f2 000000f3 000000f4 000000f5 000000f6 000000f7 000000f8 000000f9 000000fa 000000fb +00000024 000000fc 000000fd 000000fe 000000ff 00000100 00000101 00000102 00000103 00000104 00000105 00000106 00000107 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: fixtures/proc/net/tcp Lines: 4 sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode @@ -3455,6 +3477,460 @@ Mode: 664 Directory: fixtures/sys/class Mode: 775 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/drm +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/drm/card0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/drm/card0/device +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/aer_dev_correctable +Lines: 9 +RxErr 0 +BadTLP 0 +BadDLLP 0 +Rollover 0 +Timeout 0 +NonFatalErr 0 +CorrIntErr 0 +HeaderOF 0 +TOTAL_ERR_COR 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/aer_dev_fatal +Lines: 19 +Undefined 0 +DLP 0 +SDES 0 +TLP 0 +FCP 0 +CmpltTO 0 +CmpltAbrt 0 +UnxCmplt 0 +RxOF 0 +MalfTLP 0 +ECRC 0 +UnsupReq 0 +ACSViol 0 +UncorrIntErr 0 +BlockedTLP 0 +AtomicOpBlocked 0 +TLPBlockedErr 0 +PoisonTLPBlocked 0 +TOTAL_ERR_FATAL 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/aer_dev_nonfatal +Lines: 19 +Undefined 0 +DLP 0 +SDES 0 +TLP 0 +FCP 0 +CmpltTO 0 +CmpltAbrt 0 +UnxCmplt 0 +RxOF 0 +MalfTLP 0 +ECRC 0 +UnsupReq 0 +ACSViol 0 +UncorrIntErr 0 +BlockedTLP 0 +AtomicOpBlocked 0 +TLPBlockedErr 0 +PoisonTLPBlocked 0 +TOTAL_ERR_NONFATAL 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/ari_enabled +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/boot_vga +Lines: 1 +1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/broken_parity_status +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/class +Lines: 1 +0x030000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/consistent_dma_mask_bits +Lines: 1 +44 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/current_link_speed +Lines: 1 +8.0 GT/s PCIe +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/current_link_width +Lines: 1 +16 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/d3cold_allowed +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/device +Lines: 1 +0x687f +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/dma_mask_bits +Lines: 1 +44 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/driver_override +Lines: 1 +(null) +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/enable +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/gpu_busy_percent +Lines: 1 +4 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/irq +Lines: 1 +95 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/local_cpulist +Lines: 1 +0-15 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/local_cpus +Lines: 1 +0000ffff +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/max_link_speed +Lines: 1 +8.0 GT/s PCIe +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/max_link_width +Lines: 1 +16 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/mem_info_gtt_total +Lines: 1 +8573157376 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/mem_info_gtt_used +Lines: 1 +144560128 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/mem_info_vis_vram_total +Lines: 1 +8573157376 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/mem_info_vis_vram_used +Lines: 1 +1490378752 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/mem_info_vram_total +Lines: 1 +8573157376 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/mem_info_vram_used +Lines: 1 +1490378752 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/mem_info_vram_vendor +Lines: 1 +samsung +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/modalias +Lines: 1 +pci:v00001002d0000687Fsv00001043sd000004C4bc03sc00i00 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/msi_bus +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/numa_node +Lines: 1 +-1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pcie_bw +Lines: 1 +6641 815 256 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pcie_replay_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/power_dpm_force_performance_level +Lines: 1 +manual +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/power_dpm_state +Lines: 1 +performance +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/power_state +Lines: 1 +D0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_cur_state +Lines: 1 +1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_dpm_dcefclk +Lines: 5 +0: 600Mhz * +1: 720Mhz +2: 800Mhz +3: 847Mhz +4: 900Mhz +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_dpm_mclk +Lines: 4 +0: 167Mhz * +1: 500Mhz +2: 800Mhz +3: 945Mhz +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_dpm_pcie +Lines: 2 +0: 8.0GT/s, x16 +1: 8.0GT/s, x16 * +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_dpm_sclk +Lines: 8 +0: 852Mhz * +1: 991Mhz +2: 1084Mhz +3: 1138Mhz +4: 1200Mhz +5: 1401Mhz +6: 1536Mhz +7: 1630Mhz +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_dpm_socclk +Lines: 8 +0: 600Mhz +1: 720Mhz * +2: 800Mhz +3: 847Mhz +4: 900Mhz +5: 960Mhz +6: 1028Mhz +7: 1107Mhz +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_features +Lines: 32 +Current ppfeatures: 0x0000000019a1ff4f +FEATURES BITMASK ENABLEMENT +DPM_PREFETCHER 0x0000000000000001 Y +GFXCLK_DPM 0x0000000000000002 Y +UCLK_DPM 0x0000000000000004 Y +SOCCLK_DPM 0x0000000000000008 Y +UVD_DPM 0x0000000000000010 N +VCE_DPM 0x0000000000000020 N +ULV 0x0000000000000040 Y +MP0CLK_DPM 0x0000000000000080 N +LINK_DPM 0x0000000000000100 Y +DCEFCLK_DPM 0x0000000000000200 Y +AVFS 0x0000000000000400 Y +GFXCLK_DS 0x0000000000000800 Y +SOCCLK_DS 0x0000000000001000 Y +LCLK_DS 0x0000000000002000 Y +PPT 0x0000000000004000 Y +TDC 0x0000000000008000 Y +THERMAL 0x0000000000010000 Y +GFX_PER_CU_CG 0x0000000000020000 N +RM 0x0000000000040000 N +DCEFCLK_DS 0x0000000000080000 N +ACDC 0x0000000000100000 N +VR0HOT 0x0000000000200000 Y +VR1HOT 0x0000000000400000 N +FW_CTF 0x0000000000800000 Y +LED_DISPLAY 0x0000000001000000 Y +FAN_CONTROL 0x0000000002000000 N +FAST_PPT 0x0000000004000000 N +DIDT 0x0000000008000000 Y +ACG 0x0000000010000000 Y +PCC_LIMIT 0x0000000020000000 N +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_force_state +Lines: 1 + +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_mclk_od +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_num_states +Lines: 3 +states: 2 +0 boot +1 performance +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_od_clk_voltage +Lines: 18 +OD_SCLK: +0: 852Mhz 800mV +1: 991Mhz 900mV +2: 1084Mhz 950mV +3: 1138Mhz 1000mV +4: 1200Mhz 1050mV +5: 1401Mhz 1100mV +6: 1536Mhz 1150mV +7: 1630Mhz 1200mV +OD_MCLK: +0: 167Mhz 800mV +1: 500Mhz 800mV +2: 800Mhz 950mV +3: 945Mhz 1100mV +OD_RANGE: +SCLK: 852MHz 2400MHz +MCLK: 167MHz 1500MHz +VDDC: 800mV 1200mV +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_power_profile_mode +Lines: 8 +NUM MODE_NAME BUSY_SET_POINT FPS USE_RLC_BUSY MIN_ACTIVE_LEVEL + 0 BOOTUP_DEFAULT : 70 60 0 0 + 1 3D_FULL_SCREEN*: 70 60 1 3 + 2 POWER_SAVING : 90 60 0 0 + 3 VIDEO : 70 60 0 0 + 4 VR : 70 90 0 0 + 5 COMPUTE : 30 60 0 6 + 6 CUSTOM : 0 0 0 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/pp_sclk_od +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/product_name +Lines: 1 + +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/product_number +Lines: 1 + +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/resource +Lines: 13 +0x0000007c00000000 0x0000007dffffffff 0x000000000014220c +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000007e00000000 0x0000007e0fffffff 0x000000000014220c +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x000000000000d000 0x000000000000d0ff 0x0000000000040101 +0x00000000fcd00000 0x00000000fcd7ffff 0x0000000000040200 +0x00000000fcd80000 0x00000000fcd9ffff 0x0000000000046200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/revision +Lines: 1 +0xc1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/serial_number +Lines: 1 + +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/subsystem_device +Lines: 1 +0x04c4 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/subsystem_vendor +Lines: 1 +0x1043 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/thermal_throttling_logging +Lines: 1 +0000:09:00.0: thermal throttling logging enabled, with interval 60 seconds +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/uevent +Lines: 6 +DRIVER=amdgpu +PCI_CLASS=30000 +PCI_ID=1002:687F +PCI_SUBSYS_ID=1043:04C4 +PCI_SLOT_NAME=0000:09:00.0 +MODALIAS=pci:v00001002d0000687Fsv00001043sd000004C4bc03sc00i00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/unique_id +Lines: 1 +0123456789abcdef +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/vbios_version +Lines: 1 +115-D050PIL-100 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/drm/card0/device/vendor +Lines: 1 +0x1002 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: fixtures/sys/class/fc_host Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3592,140 +4068,262 @@ Mode: 644 Directory: fixtures/sys/class/infiniband Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0 +Directory: fixtures/sys/class/infiniband/hfi1_0 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/board_id -Lines: 1 -SM_1141000001000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/fw_ver +Path: fixtures/sys/class/infiniband/hfi1_0/board_id Lines: 1 -2.31.5050 +HPE 100Gb 1-port OP101 QSFP28 x16 PCIe Gen3 with Intel Omni-Path Adapter Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/hca_type +Path: fixtures/sys/class/infiniband/hfi1_0/fw_ver Lines: 1 -MT4099 +1.27.0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0/ports +Directory: fixtures/sys/class/infiniband/hfi1_0/ports Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0/ports/1 +Directory: fixtures/sys/class/infiniband/hfi1_0/ports/1 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters +Directory: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/VL15_dropped +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/VL15_dropped Lines: 1 0 -Mode: 664 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/excessive_buffer_overrun_errors +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/excessive_buffer_overrun_errors Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/link_downed +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/link_downed Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/link_error_recovery +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/link_error_recovery Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/local_link_integrity_errors +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/local_link_integrity_errors Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_constraint_errors +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/port_rcv_constraint_errors Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_data +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/port_rcv_data Lines: 1 -2221223609 +345091702026 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_errors +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/port_rcv_errors Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_packets +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/port_rcv_packets Lines: 1 -87169372 +638036947 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_remote_physical_errors +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/port_rcv_remote_physical_errors Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_switch_relay_errors +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/port_rcv_switch_relay_errors Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_constraint_errors +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/port_xmit_constraint_errors Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_data +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/port_xmit_data Lines: 1 -26509113295 +273558326543 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_discards +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/port_xmit_discards Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_packets +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/port_xmit_packets Lines: 1 -85734114 +568318856 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_wait +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/port_xmit_wait Lines: 1 -3599 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/symbol_error +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/counters/symbol_error Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/phys_state +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/phys_state Lines: 1 5: LinkUp Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/rate +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/rate Lines: 1 -40 Gb/sec (4X QDR) +100 Gb/sec (4X EDR) Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/state +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/state Lines: 1 4: ACTIVE Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0/ports/2 +Directory: fixtures/sys/class/infiniband/mlx4_0 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters -Mode: 755 +Path: fixtures/sys/class/infiniband/mlx4_0/board_id +Lines: 1 +SM_1141000001000 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/VL15_dropped +Path: fixtures/sys/class/infiniband/mlx4_0/fw_ver +Lines: 1 +2.31.5050 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/hca_type +Lines: 1 +MT4099 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband/mlx4_0/ports +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband/mlx4_0/ports/1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/VL15_dropped +Lines: 1 +0 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/excessive_buffer_overrun_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/link_downed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/link_error_recovery +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/local_link_integrity_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_constraint_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_data +Lines: 1 +2221223609 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_packets +Lines: 1 +87169372 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_remote_physical_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_switch_relay_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_constraint_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_data +Lines: 1 +26509113295 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_discards +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_packets +Lines: 1 +85734114 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_wait +Lines: 1 +3599 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/symbol_error +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/phys_state +Lines: 1 +5: LinkUp +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/rate +Lines: 1 +40 Gb/sec (4X QDR) +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/state +Lines: 1 +4: ACTIVE +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband/mlx4_0/ports/2 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/VL15_dropped Lines: 1 0 Mode: 664 @@ -3960,6 +4558,32 @@ Lines: 1 1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/nvme +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/nvme/nvme0 +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/nvme/nvme0/firmware_rev +Lines: 1 +1B2QEXP7 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/nvme/nvme0/model +Lines: 1 +Samsung SSD 970 PRO 512GB +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/nvme/nvme0/serial +Lines: 1 +S680HF8N190894I +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/nvme/nvme0/state +Lines: 1 +live +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: fixtures/sys/class/power_supply Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4164,6 +4788,33 @@ Path: fixtures/sys/class/powercap/intel-rapl:a/uevent Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/scsi_tape +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/scsi_tape/nst0 +SymlinkTo: ../../devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/scsi_tape/nst0a +SymlinkTo: ../../devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/scsi_tape/nst0l +SymlinkTo: ../../devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/scsi_tape/nst0m +SymlinkTo: ../../devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/scsi_tape/st0 +SymlinkTo: ../../devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/scsi_tape/st0a +SymlinkTo: ../../devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/scsi_tape/st0l +SymlinkTo: ../../devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/scsi_tape/st0m +SymlinkTo: ../../devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: fixtures/sys/class/thermal Mode: 775 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4575,6 +5226,475 @@ Mode: 444 Directory: fixtures/sys/devices/pci0000:00 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0/stats +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0/stats/in_flight +Lines: 1 +1EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0/stats/io_ns +Lines: 1 +9247011087720EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0/stats/other_cnt +Lines: 1 +1409EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0/stats/read_byte_cnt +Lines: 1 +979383912EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0/stats/read_cnt +Lines: 1 +3741EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0/stats/read_ns +Lines: 1 +33788355744EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0/stats/resid_cnt +Lines: 1 +19EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0/stats/write_byte_cnt +Lines: 1 +1496246784000EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0/stats/write_cnt +Lines: 1 +53772916EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0/stats/write_ns +Lines: 1 +5233597394395EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a/stats +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a/stats/in_flight +Lines: 1 +1EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a/stats/io_ns +Lines: 1 +9247011087720EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a/stats/other_cnt +Lines: 1 +1409EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a/stats/read_byte_cnt +Lines: 1 +979383912EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a/stats/read_cnt +Lines: 1 +3741EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a/stats/read_ns +Lines: 1 +33788355744EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a/stats/resid_cnt +Lines: 1 +19EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a/stats/write_byte_cnt +Lines: 1 +1496246784000EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a/stats/write_cnt +Lines: 1 +53772916EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0a/stats/write_ns +Lines: 1 +5233597394395EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l/stats +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l/stats/in_flight +Lines: 1 +1EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l/stats/io_ns +Lines: 1 +9247011087720EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l/stats/other_cnt +Lines: 1 +1409EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l/stats/read_byte_cnt +Lines: 1 +979383912EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l/stats/read_cnt +Lines: 1 +3741EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l/stats/read_ns +Lines: 1 +33788355744EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l/stats/resid_cnt +Lines: 1 +19EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l/stats/write_byte_cnt +Lines: 1 +1496246784000EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l/stats/write_cnt +Lines: 1 +53772916EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0l/stats/write_ns +Lines: 1 +5233597394395EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m/stats +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m/stats/in_flight +Lines: 1 +1EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m/stats/io_ns +Lines: 1 +9247011087720EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m/stats/other_cnt +Lines: 1 +1409EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m/stats/read_byte_cnt +Lines: 1 +979383912EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m/stats/read_cnt +Lines: 1 +3741EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m/stats/read_ns +Lines: 1 +33788355744EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m/stats/resid_cnt +Lines: 1 +19EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m/stats/write_byte_cnt +Lines: 1 +1496246784000EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m/stats/write_cnt +Lines: 1 +53772916EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/nst0m/stats/write_ns +Lines: 1 +5233597394395EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0/stats +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0/stats/in_flight +Lines: 1 +1EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0/stats/io_ns +Lines: 1 +9247011087720EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0/stats/other_cnt +Lines: 1 +1409EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0/stats/read_byte_cnt +Lines: 1 +979383912EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0/stats/read_cnt +Lines: 1 +3741EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0/stats/read_ns +Lines: 1 +33788355744EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0/stats/resid_cnt +Lines: 1 +19EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0/stats/write_byte_cnt +Lines: 1 +1496246784000EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0/stats/write_cnt +Lines: 1 +53772916EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0/stats/write_ns +Lines: 1 +5233597394395EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a/stats +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a/stats/in_flight +Lines: 1 +1EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a/stats/io_ns +Lines: 1 +9247011087720EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a/stats/other_cnt +Lines: 1 +1409EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a/stats/read_byte_cnt +Lines: 1 +979383912EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a/stats/read_cnt +Lines: 1 +3741EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a/stats/read_ns +Lines: 1 +33788355744EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a/stats/resid_cnt +Lines: 1 +19EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a/stats/write_byte_cnt +Lines: 1 +1496246784000EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a/stats/write_cnt +Lines: 1 +53772916EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0a/stats/write_ns +Lines: 1 +5233597394395EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l/stats +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l/stats/in_flight +Lines: 1 +1EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l/stats/io_ns +Lines: 1 +9247011087720EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l/stats/other_cnt +Lines: 1 +1409EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l/stats/read_byte_cnt +Lines: 1 +979383912EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l/stats/read_cnt +Lines: 1 +3741EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l/stats/read_ns +Lines: 1 +33788355744EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l/stats/resid_cnt +Lines: 1 +19EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l/stats/write_byte_cnt +Lines: 1 +1496246784000EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l/stats/write_cnt +Lines: 1 +53772916EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0l/stats/write_ns +Lines: 1 +5233597394395EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m/stats +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m/stats/in_flight +Lines: 1 +1EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m/stats/io_ns +Lines: 1 +9247011087720EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m/stats/other_cnt +Lines: 1 +1409EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m/stats/read_byte_cnt +Lines: 1 +979383912EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m/stats/read_cnt +Lines: 1 +3741EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m/stats/read_ns +Lines: 1 +33788355744EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m/stats/resid_cnt +Lines: 1 +19EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m/stats/write_byte_cnt +Lines: 1 +1496246784000EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m/stats/write_cnt +Lines: 1 +53772916EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:00.0/host0/port-0:0/end_device-0:0/target0:0:0/0:0:0:0/scsi_tape/st0m/stats/write_ns +Lines: 1 +5233597394395EOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4978,35 +6098,6 @@ Mode: 644 Directory: fixtures/sys/devices/system Mode: 775 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/node -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/node/node1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/node/node1/vmstat -Lines: 6 -nr_free_pages 1 -nr_zone_inactive_anon 2 -nr_zone_active_anon 3 -nr_zone_inactive_file 4 -nr_zone_active_file 5 -nr_zone_unevictable 6 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/node/node2 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/node/node2/vmstat -Lines: 6 -nr_free_pages 7 -nr_zone_inactive_anon 8 -nr_zone_active_anon 9 -nr_zone_inactive_file 10 -nr_zone_active_file 11 -nr_zone_unevictable 12 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: fixtures/sys/devices/system/clocksource Mode: 775 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5254,6 +6345,35 @@ Mode: 644 Directory: fixtures/sys/devices/system/cpu/cpufreq/policy1 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/node +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/node/node1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/node/node1/vmstat +Lines: 6 +nr_free_pages 1 +nr_zone_inactive_anon 2 +nr_zone_active_anon 3 +nr_zone_inactive_file 4 +nr_zone_active_file 5 +nr_zone_unevictable 6 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/node/node2 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/node/node2/vmstat +Lines: 6 +nr_free_pages 7 +nr_zone_inactive_anon 8 +nr_zone_active_anon 9 +nr_zone_inactive_file 10 +nr_zone_active_file 11 +nr_zone_unevictable 12 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: fixtures/sys/fs Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/github.com/prometheus/procfs/mdstat.go b/vendor/github.com/prometheus/procfs/mdstat.go index 4c4493bf..f0b9e5f7 100644 --- a/vendor/github.com/prometheus/procfs/mdstat.go +++ b/vendor/github.com/prometheus/procfs/mdstat.go @@ -22,9 +22,12 @@ import ( ) var ( - statusLineRE = regexp.MustCompile(`(\d+) blocks .*\[(\d+)/(\d+)\] \[[U_]+\]`) - recoveryLineRE = regexp.MustCompile(`\((\d+)/\d+\)`) - componentDeviceRE = regexp.MustCompile(`(.*)\[\d+\]`) + statusLineRE = regexp.MustCompile(`(\d+) blocks .*\[(\d+)/(\d+)\] \[([U_]+)\]`) + recoveryLineBlocksRE = regexp.MustCompile(`\((\d+)/\d+\)`) + recoveryLinePctRE = regexp.MustCompile(`= (.+)%`) + recoveryLineFinishRE = regexp.MustCompile(`finish=(.+)min`) + recoveryLineSpeedRE = regexp.MustCompile(`speed=(.+)[A-Z]`) + componentDeviceRE = regexp.MustCompile(`(.*)\[\d+\]`) ) // MDStat holds info parsed from /proc/mdstat. @@ -39,12 +42,20 @@ type MDStat struct { DisksTotal int64 // Number of failed disks. DisksFailed int64 + // Number of "down" disks. (the _ indicator in the status line) + DisksDown int64 // Spare disks in the device. DisksSpare int64 // Number of blocks the device holds. BlocksTotal int64 // Number of blocks on the device that are in sync. BlocksSynced int64 + // progress percentage of current sync + BlocksSyncedPct float64 + // estimated finishing time for current sync (in minutes) + BlocksSyncedFinishTime float64 + // current sync speed (in Kilobytes/sec) + BlocksSyncedSpeed float64 // Name of md component devices Devices []string } @@ -91,7 +102,7 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) { // Failed disks have the suffix (F) & Spare disks have the suffix (S). fail := int64(strings.Count(line, "(F)")) spare := int64(strings.Count(line, "(S)")) - active, total, size, err := evalStatusLine(lines[i], lines[i+1]) + active, total, down, size, err := evalStatusLine(lines[i], lines[i+1]) if err != nil { return nil, fmt.Errorf("error parsing md device lines: %w", err) @@ -105,6 +116,9 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) { // If device is syncing at the moment, get the number of currently // synced bytes, otherwise that number equals the size of the device. syncedBlocks := size + speed := float64(0) + finish := float64(0) + pct := float64(0) recovering := strings.Contains(lines[syncLineIdx], "recovery") resyncing := strings.Contains(lines[syncLineIdx], "resync") checking := strings.Contains(lines[syncLineIdx], "check") @@ -124,7 +138,7 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) { strings.Contains(lines[syncLineIdx], "DELAYED") { syncedBlocks = 0 } else { - syncedBlocks, err = evalRecoveryLine(lines[syncLineIdx]) + syncedBlocks, pct, finish, speed, err = evalRecoveryLine(lines[syncLineIdx]) if err != nil { return nil, fmt.Errorf("error parsing sync line in md device %q: %w", mdName, err) } @@ -132,69 +146,104 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) { } mdStats = append(mdStats, MDStat{ - Name: mdName, - ActivityState: state, - DisksActive: active, - DisksFailed: fail, - DisksSpare: spare, - DisksTotal: total, - BlocksTotal: size, - BlocksSynced: syncedBlocks, - Devices: evalComponentDevices(deviceFields), + Name: mdName, + ActivityState: state, + DisksActive: active, + DisksFailed: fail, + DisksDown: down, + DisksSpare: spare, + DisksTotal: total, + BlocksTotal: size, + BlocksSynced: syncedBlocks, + BlocksSyncedPct: pct, + BlocksSyncedFinishTime: finish, + BlocksSyncedSpeed: speed, + Devices: evalComponentDevices(deviceFields), }) } return mdStats, nil } -func evalStatusLine(deviceLine, statusLine string) (active, total, size int64, err error) { +func evalStatusLine(deviceLine, statusLine string) (active, total, down, size int64, err error) { sizeStr := strings.Fields(statusLine)[0] size, err = strconv.ParseInt(sizeStr, 10, 64) if err != nil { - return 0, 0, 0, fmt.Errorf("unexpected statusLine %q: %w", statusLine, err) + return 0, 0, 0, 0, fmt.Errorf("unexpected statusLine %q: %w", statusLine, err) } if strings.Contains(deviceLine, "raid0") || strings.Contains(deviceLine, "linear") { // In the device deviceLine, only disks have a number associated with them in []. total = int64(strings.Count(deviceLine, "[")) - return total, total, size, nil + return total, total, 0, size, nil } if strings.Contains(deviceLine, "inactive") { - return 0, 0, size, nil + return 0, 0, 0, size, nil } matches := statusLineRE.FindStringSubmatch(statusLine) - if len(matches) != 4 { - return 0, 0, 0, fmt.Errorf("couldn't find all the substring matches: %s", statusLine) + if len(matches) != 5 { + return 0, 0, 0, 0, fmt.Errorf("couldn't find all the substring matches: %s", statusLine) } total, err = strconv.ParseInt(matches[2], 10, 64) if err != nil { - return 0, 0, 0, fmt.Errorf("unexpected statusLine %q: %w", statusLine, err) + return 0, 0, 0, 0, fmt.Errorf("unexpected statusLine %q: %w", statusLine, err) } active, err = strconv.ParseInt(matches[3], 10, 64) if err != nil { - return 0, 0, 0, fmt.Errorf("unexpected statusLine %q: %w", statusLine, err) + return 0, 0, 0, 0, fmt.Errorf("unexpected statusLine %q: %w", statusLine, err) } + down = int64(strings.Count(matches[4], "_")) - return active, total, size, nil + return active, total, down, size, nil } -func evalRecoveryLine(recoveryLine string) (syncedBlocks int64, err error) { - matches := recoveryLineRE.FindStringSubmatch(recoveryLine) +func evalRecoveryLine(recoveryLine string) (syncedBlocks int64, pct float64, finish float64, speed float64, err error) { + matches := recoveryLineBlocksRE.FindStringSubmatch(recoveryLine) if len(matches) != 2 { - return 0, fmt.Errorf("unexpected recoveryLine: %s", recoveryLine) + return 0, 0, 0, 0, fmt.Errorf("unexpected recoveryLine: %s", recoveryLine) } syncedBlocks, err = strconv.ParseInt(matches[1], 10, 64) if err != nil { - return 0, fmt.Errorf("error parsing int from recoveryLine %q: %w", recoveryLine, err) + return 0, 0, 0, 0, fmt.Errorf("error parsing int from recoveryLine %q: %w", recoveryLine, err) } - return syncedBlocks, nil + // Get percentage complete + matches = recoveryLinePctRE.FindStringSubmatch(recoveryLine) + if len(matches) != 2 { + return syncedBlocks, 0, 0, 0, fmt.Errorf("unexpected recoveryLine matching percentage: %s", recoveryLine) + } + pct, err = strconv.ParseFloat(strings.TrimSpace(matches[1]), 64) + if err != nil { + return syncedBlocks, 0, 0, 0, fmt.Errorf("error parsing float from recoveryLine %q: %w", recoveryLine, err) + } + + // Get time expected left to complete + matches = recoveryLineFinishRE.FindStringSubmatch(recoveryLine) + if len(matches) != 2 { + return syncedBlocks, pct, 0, 0, fmt.Errorf("unexpected recoveryLine matching est. finish time: %s", recoveryLine) + } + finish, err = strconv.ParseFloat(matches[1], 64) + if err != nil { + return syncedBlocks, pct, 0, 0, fmt.Errorf("error parsing float from recoveryLine %q: %w", recoveryLine, err) + } + + // Get recovery speed + matches = recoveryLineSpeedRE.FindStringSubmatch(recoveryLine) + if len(matches) != 2 { + return syncedBlocks, pct, finish, 0, fmt.Errorf("unexpected recoveryLine matching speed: %s", recoveryLine) + } + speed, err = strconv.ParseFloat(matches[1], 64) + if err != nil { + return syncedBlocks, pct, finish, 0, fmt.Errorf("error parsing float from recoveryLine %q: %w", recoveryLine, err) + } + + return syncedBlocks, pct, finish, speed, nil } func evalComponentDevices(deviceFields []string) []string { diff --git a/vendor/github.com/prometheus/procfs/net_ip_socket.go b/vendor/github.com/prometheus/procfs/net_ip_socket.go index ac01dd84..8c9ee3de 100644 --- a/vendor/github.com/prometheus/procfs/net_ip_socket.go +++ b/vendor/github.com/prometheus/procfs/net_ip_socket.go @@ -65,6 +65,7 @@ type ( TxQueue uint64 RxQueue uint64 UID uint64 + Inode uint64 } ) @@ -150,9 +151,9 @@ func parseIP(hexIP string) (net.IP, error) { // parseNetIPSocketLine parses a single line, represented by a list of fields. func parseNetIPSocketLine(fields []string) (*netIPSocketLine, error) { line := &netIPSocketLine{} - if len(fields) < 8 { + if len(fields) < 10 { return nil, fmt.Errorf( - "cannot parse net socket line as it has less then 8 columns %q", + "cannot parse net socket line as it has less then 10 columns %q", strings.Join(fields, " "), ) } @@ -216,5 +217,10 @@ func parseNetIPSocketLine(fields []string) (*netIPSocketLine, error) { return nil, fmt.Errorf("cannot parse uid value in socket line: %w", err) } + // inode + if line.Inode, err = strconv.ParseUint(fields[9], 0, 64); err != nil { + return nil, fmt.Errorf("cannot parse inode value in socket line: %w", err) + } + return line, nil } diff --git a/vendor/github.com/prometheus/procfs/netstat.go b/vendor/github.com/prometheus/procfs/netstat.go new file mode 100644 index 00000000..94d892f1 --- /dev/null +++ b/vendor/github.com/prometheus/procfs/netstat.go @@ -0,0 +1,68 @@ +// Copyright 2020 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package procfs + +import ( + "bufio" + "os" + "path/filepath" + "strconv" + "strings" +) + +// NetStat contains statistics for all the counters from one file +type NetStat struct { + Filename string + Stats map[string][]uint64 +} + +// NetStat retrieves stats from /proc/net/stat/ +func (fs FS) NetStat() ([]NetStat, error) { + statFiles, err := filepath.Glob(fs.proc.Path("net/stat/*")) + if err != nil { + return nil, err + } + + var netStatsTotal []NetStat + + for _, filePath := range statFiles { + file, err := os.Open(filePath) + if err != nil { + return nil, err + } + + netStatFile := NetStat{ + Filename: filepath.Base(filePath), + Stats: make(map[string][]uint64), + } + scanner := bufio.NewScanner(file) + scanner.Scan() + // First string is always a header for stats + var headers []string + headers = append(headers, strings.Fields(scanner.Text())...) + + // Other strings represent per-CPU counters + for scanner.Scan() { + for num, counter := range strings.Fields(scanner.Text()) { + value, err := strconv.ParseUint(counter, 16, 32) + if err != nil { + return nil, err + } + netStatFile.Stats[headers[num]] = append(netStatFile.Stats[headers[num]], value) + } + } + netStatsTotal = append(netStatsTotal, netStatFile) + } + return netStatsTotal, nil +} diff --git a/vendor/github.com/prometheus/procfs/proc_cgroup.go b/vendor/github.com/prometheus/procfs/proc_cgroup.go index 0094a13c..be45b798 100644 --- a/vendor/github.com/prometheus/procfs/proc_cgroup.go +++ b/vendor/github.com/prometheus/procfs/proc_cgroup.go @@ -90,7 +90,7 @@ func parseCgroups(data []byte) ([]Cgroup, error) { // control hierarchy running on this system. On every system (v1 and v2), all hierarchies contain all processes, // so the len of the returned struct is equal to the number of active hierarchies on this system func (p Proc) Cgroups() ([]Cgroup, error) { - data, err := util.ReadFileNoStat(fmt.Sprintf("/proc/%d/cgroup", p.PID)) + data, err := util.ReadFileNoStat(p.path("cgroup")) if err != nil { return nil, err } diff --git a/vendor/github.com/prometheus/procfs/proc_stat.go b/vendor/github.com/prometheus/procfs/proc_stat.go index 67ca0e9f..8c7b6e80 100644 --- a/vendor/github.com/prometheus/procfs/proc_stat.go +++ b/vendor/github.com/prometheus/procfs/proc_stat.go @@ -100,6 +100,15 @@ type ProcStat struct { VSize uint // Resident set size in pages. RSS int + // Soft limit in bytes on the rss of the process. + RSSLimit uint64 + // Real-time scheduling priority, a number in the range 1 to 99 for processes + // scheduled under a real-time policy, or 0, for non-real-time processes. + RTPriority uint + // Scheduling policy. + Policy uint + // Aggregated block I/O delays, measured in clock ticks (centiseconds). + DelayAcctBlkIOTicks uint64 proc fs.FS } @@ -119,7 +128,8 @@ func (p Proc) Stat() (ProcStat, error) { } var ( - ignore int + ignoreInt64 int64 + ignoreUint64 uint64 s = ProcStat{PID: p.PID, proc: p.fs} l = bytes.Index(data, []byte("(")) @@ -151,10 +161,28 @@ func (p Proc) Stat() (ProcStat, error) { &s.Priority, &s.Nice, &s.NumThreads, - &ignore, + &ignoreInt64, &s.Starttime, &s.VSize, &s.RSS, + &s.RSSLimit, + &ignoreUint64, + &ignoreUint64, + &ignoreUint64, + &ignoreUint64, + &ignoreUint64, + &ignoreUint64, + &ignoreUint64, + &ignoreUint64, + &ignoreUint64, + &ignoreUint64, + &ignoreUint64, + &ignoreUint64, + &ignoreInt64, + &ignoreInt64, + &s.RTPriority, + &s.Policy, + &s.DelayAcctBlkIOTicks, ) if err != nil { return ProcStat{}, err diff --git a/vendor/github.com/prometheus/procfs/zoneinfo.go b/vendor/github.com/prometheus/procfs/zoneinfo.go index 0b9bb679..209e2ac9 100644 --- a/vendor/github.com/prometheus/procfs/zoneinfo.go +++ b/vendor/github.com/prometheus/procfs/zoneinfo.go @@ -99,7 +99,6 @@ func parseZoneinfo(zoneinfoData []byte) ([]Zoneinfo, error) { continue } if strings.HasPrefix(strings.TrimSpace(line), "per-node stats") { - zoneinfoElement.Zone = "" continue } parts := strings.Fields(strings.TrimSpace(line)) diff --git a/vendor/github.com/russross/blackfriday/v2/README.md b/vendor/github.com/russross/blackfriday/v2/README.md index d5a8649b..d9c08a22 100644 --- a/vendor/github.com/russross/blackfriday/v2/README.md +++ b/vendor/github.com/russross/blackfriday/v2/README.md @@ -1,4 +1,6 @@ -Blackfriday [![Build Status](https://travis-ci.org/russross/blackfriday.svg?branch=master)](https://travis-ci.org/russross/blackfriday) +Blackfriday +[![Build Status][BuildV2SVG]][BuildV2URL] +[![PkgGoDev][PkgGoDevV2SVG]][PkgGoDevV2URL] =========== Blackfriday is a [Markdown][1] processor implemented in [Go][2]. It @@ -16,19 +18,21 @@ It started as a translation from C of [Sundown][3]. Installation ------------ -Blackfriday is compatible with any modern Go release. With Go 1.7 and git -installed: +Blackfriday is compatible with modern Go releases in module mode. +With Go installed: - go get gopkg.in/russross/blackfriday.v2 + go get github.com/russross/blackfriday/v2 -will download, compile, and install the package into your `$GOPATH` -directory hierarchy. Alternatively, you can achieve the same if you -import it into a project: +will resolve and add the package to the current development module, +then build and install it. Alternatively, you can achieve the same +if you import it in a package: - import "gopkg.in/russross/blackfriday.v2" + import "github.com/russross/blackfriday/v2" and `go get` without parameters. +Legacy GOPATH mode is unsupported. + Versions -------- @@ -36,13 +40,9 @@ Versions Currently maintained and recommended version of Blackfriday is `v2`. It's being developed on its own branch: https://github.com/russross/blackfriday/tree/v2 and the documentation is available at -https://godoc.org/gopkg.in/russross/blackfriday.v2. +https://pkg.go.dev/github.com/russross/blackfriday/v2. -It is `go get`-able via via [gopkg.in][6] at `gopkg.in/russross/blackfriday.v2`, -but we highly recommend using package management tool like [dep][7] or -[Glide][8] and make use of semantic versioning. With package management you -should import `github.com/russross/blackfriday` and specify that you're using -version 2.0.0. +It is `go get`-able in module mode at `github.com/russross/blackfriday/v2`. Version 2 offers a number of improvements over v1: @@ -62,6 +62,11 @@ Potential drawbacks: v2. See issue [#348](https://github.com/russross/blackfriday/issues/348) for tracking. +If you are still interested in the legacy `v1`, you can import it from +`github.com/russross/blackfriday`. Documentation for the legacy v1 can be found +here: https://pkg.go.dev/github.com/russross/blackfriday. + + Usage ----- @@ -91,7 +96,7 @@ Here's an example of simple usage of Blackfriday together with Bluemonday: ```go import ( "github.com/microcosm-cc/bluemonday" - "github.com/russross/blackfriday" + "github.com/russross/blackfriday/v2" ) // ... @@ -104,6 +109,8 @@ html := bluemonday.UGCPolicy().SanitizeBytes(unsafe) If you want to customize the set of options, use `blackfriday.WithExtensions`, `blackfriday.WithRenderer` and `blackfriday.WithRefOverride`. +### `blackfriday-tool` + You can also check out `blackfriday-tool` for a more complete example of how to use it. Download and install it using: @@ -114,7 +121,7 @@ markdown file using a standalone program. You can also browse the source directly on github if you are just looking for some example code: -* +* Note that if you have not already done so, installing `blackfriday-tool` will be sufficient to download and install @@ -123,6 +130,22 @@ installed in `$GOPATH/bin`. This is a statically-linked binary that can be copied to wherever you need it without worrying about dependencies and library versions. +### Sanitized anchor names + +Blackfriday includes an algorithm for creating sanitized anchor names +corresponding to a given input text. This algorithm is used to create +anchors for headings when `AutoHeadingIDs` extension is enabled. The +algorithm has a specification, so that other packages can create +compatible anchor names and links to those anchors. + +The specification is located at https://pkg.go.dev/github.com/russross/blackfriday/v2#hdr-Sanitized_Anchor_Names. + +[`SanitizedAnchorName`](https://pkg.go.dev/github.com/russross/blackfriday/v2#SanitizedAnchorName) exposes this functionality, and can be used to +create compatible links to the anchor names generated by blackfriday. +This algorithm is also implemented in a small standalone package at +[`github.com/shurcooL/sanitized_anchor_name`](https://pkg.go.dev/github.com/shurcooL/sanitized_anchor_name). It can be useful for clients +that want a small package and don't need full functionality of blackfriday. + Features -------- @@ -199,6 +222,15 @@ implements the following extensions: You can use 3 or more backticks to mark the beginning of the block, and the same number to mark the end of the block. + To preserve classes of fenced code blocks while using the bluemonday + HTML sanitizer, use the following policy: + + ```go + p := bluemonday.UGCPolicy() + p.AllowAttrs("class").Matching(regexp.MustCompile("^language-[a-zA-Z0-9]+$")).OnElements("code") + html := p.SanitizeBytes(unsafe) + ``` + * **Definition lists**. A simple definition list is made of a single-line term followed by a colon and the definition for that term. @@ -250,7 +282,7 @@ Other renderers Blackfriday is structured to allow alternative rendering engines. Here are a few of note: -* [github_flavored_markdown](https://godoc.org/github.com/shurcooL/github_flavored_markdown): +* [github_flavored_markdown](https://pkg.go.dev/github.com/shurcooL/github_flavored_markdown): provides a GitHub Flavored Markdown renderer with fenced code block highlighting, clickable heading anchor links. @@ -261,20 +293,28 @@ are a few of note: * [markdownfmt](https://github.com/shurcooL/markdownfmt): like gofmt, but for markdown. -* [LaTeX output](https://github.com/Ambrevar/Blackfriday-LaTeX): +* [LaTeX output](https://gitlab.com/ambrevar/blackfriday-latex): renders output as LaTeX. +* [bfchroma](https://github.com/Depado/bfchroma/): provides convenience + integration with the [Chroma](https://github.com/alecthomas/chroma) code + highlighting library. bfchroma is only compatible with v2 of Blackfriday and + provides a drop-in renderer ready to use with Blackfriday, as well as + options and means for further customization. + * [Blackfriday-Confluence](https://github.com/kentaro-m/blackfriday-confluence): provides a [Confluence Wiki Markup](https://confluence.atlassian.com/doc/confluence-wiki-markup-251003035.html) renderer. +* [Blackfriday-Slack](https://github.com/karriereat/blackfriday-slack): converts markdown to slack message style + -Todo +TODO ---- * More unit testing -* Improve unicode support. It does not understand all unicode +* Improve Unicode support. It does not understand all Unicode rules (about what constitutes a letter, a punctuation symbol, etc.), so it may fail to detect word boundaries correctly in - some instances. It is safe on all utf-8 input. + some instances. It is safe on all UTF-8 input. License @@ -286,6 +326,10 @@ License [1]: https://daringfireball.net/projects/markdown/ "Markdown" [2]: https://golang.org/ "Go Language" [3]: https://github.com/vmg/sundown "Sundown" - [4]: https://godoc.org/gopkg.in/russross/blackfriday.v2#Parse "Parse func" + [4]: https://pkg.go.dev/github.com/russross/blackfriday/v2#Parse "Parse func" [5]: https://github.com/microcosm-cc/bluemonday "Bluemonday" - [6]: https://labix.org/gopkg.in "gopkg.in" + + [BuildV2SVG]: https://travis-ci.org/russross/blackfriday.svg?branch=v2 + [BuildV2URL]: https://travis-ci.org/russross/blackfriday + [PkgGoDevV2SVG]: https://pkg.go.dev/badge/github.com/russross/blackfriday/v2 + [PkgGoDevV2URL]: https://pkg.go.dev/github.com/russross/blackfriday/v2 diff --git a/vendor/github.com/russross/blackfriday/v2/block.go b/vendor/github.com/russross/blackfriday/v2/block.go index b8607474..dcd61e6e 100644 --- a/vendor/github.com/russross/blackfriday/v2/block.go +++ b/vendor/github.com/russross/blackfriday/v2/block.go @@ -18,8 +18,7 @@ import ( "html" "regexp" "strings" - - "github.com/shurcooL/sanitized_anchor_name" + "unicode" ) const ( @@ -259,7 +258,7 @@ func (p *Markdown) prefixHeading(data []byte) int { } if end > i { if id == "" && p.extensions&AutoHeadingIDs != 0 { - id = sanitized_anchor_name.Create(string(data[i:end])) + id = SanitizedAnchorName(string(data[i:end])) } block := p.addBlock(Heading, data[i:end]) block.HeadingID = id @@ -673,6 +672,7 @@ func (p *Markdown) fencedCodeBlock(data []byte, doRender bool) int { if beg == 0 || beg >= len(data) { return 0 } + fenceLength := beg - 1 var work bytes.Buffer work.Write([]byte(info)) @@ -706,6 +706,7 @@ func (p *Markdown) fencedCodeBlock(data []byte, doRender bool) int { if doRender { block := p.addBlock(CodeBlock, work.Bytes()) // TODO: get rid of temp buffer block.IsFenced = true + block.FenceLength = fenceLength finalizeCodeBlock(block) } @@ -1503,7 +1504,7 @@ func (p *Markdown) paragraph(data []byte) int { id := "" if p.extensions&AutoHeadingIDs != 0 { - id = sanitized_anchor_name.Create(string(data[prev:eol])) + id = SanitizedAnchorName(string(data[prev:eol])) } block := p.addBlock(Heading, data[prev:eol]) @@ -1588,3 +1589,24 @@ func skipUntilChar(text []byte, start int, char byte) int { } return i } + +// SanitizedAnchorName returns a sanitized anchor name for the given text. +// +// It implements the algorithm specified in the package comment. +func SanitizedAnchorName(text string) string { + var anchorName []rune + futureDash := false + for _, r := range text { + switch { + case unicode.IsLetter(r) || unicode.IsNumber(r): + if futureDash && len(anchorName) > 0 { + anchorName = append(anchorName, '-') + } + futureDash = false + anchorName = append(anchorName, unicode.ToLower(r)) + default: + futureDash = true + } + } + return string(anchorName) +} diff --git a/vendor/github.com/russross/blackfriday/v2/doc.go b/vendor/github.com/russross/blackfriday/v2/doc.go index 5b3fa987..57ff152a 100644 --- a/vendor/github.com/russross/blackfriday/v2/doc.go +++ b/vendor/github.com/russross/blackfriday/v2/doc.go @@ -15,4 +15,32 @@ // // If you're interested in calling Blackfriday from command line, see // https://github.com/russross/blackfriday-tool. +// +// Sanitized Anchor Names +// +// Blackfriday includes an algorithm for creating sanitized anchor names +// corresponding to a given input text. This algorithm is used to create +// anchors for headings when AutoHeadingIDs extension is enabled. The +// algorithm is specified below, so that other packages can create +// compatible anchor names and links to those anchors. +// +// The algorithm iterates over the input text, interpreted as UTF-8, +// one Unicode code point (rune) at a time. All runes that are letters (category L) +// or numbers (category N) are considered valid characters. They are mapped to +// lower case, and included in the output. All other runes are considered +// invalid characters. Invalid characters that precede the first valid character, +// as well as invalid character that follow the last valid character +// are dropped completely. All other sequences of invalid characters +// between two valid characters are replaced with a single dash character '-'. +// +// SanitizedAnchorName exposes this functionality, and can be used to +// create compatible links to the anchor names generated by blackfriday. +// This algorithm is also implemented in a small standalone package at +// github.com/shurcooL/sanitized_anchor_name. It can be useful for clients +// that want a small package and don't need full functionality of blackfriday. package blackfriday + +// NOTE: Keep Sanitized Anchor Name algorithm in sync with package +// github.com/shurcooL/sanitized_anchor_name. +// Otherwise, users of sanitized_anchor_name will get anchor names +// that are incompatible with those generated by blackfriday. diff --git a/vendor/github.com/russross/blackfriday/v2/entities.go b/vendor/github.com/russross/blackfriday/v2/entities.go new file mode 100644 index 00000000..a2c3edb6 --- /dev/null +++ b/vendor/github.com/russross/blackfriday/v2/entities.go @@ -0,0 +1,2236 @@ +package blackfriday + +// Extracted from https://html.spec.whatwg.org/multipage/entities.json +var entities = map[string]bool{ + "Æ": true, + "Æ": true, + "&": true, + "&": true, + "Á": true, + "Á": true, + "Ă": true, + "Â": true, + "Â": true, + "А": true, + "𝔄": true, + "À": true, + "À": true, + "Α": true, + "Ā": true, + "⩓": true, + "Ą": true, + "𝔸": true, + "⁡": true, + "Å": true, + "Å": true, + "𝒜": true, + "≔": true, + "Ã": true, + "Ã": true, + "Ä": true, + "Ä": true, + "∖": true, + "⫧": true, + "⌆": true, + "Б": true, + "∵": true, + "ℬ": true, + "Β": true, + "𝔅": true, + "𝔹": true, + "˘": true, + "ℬ": true, + "≎": true, + "Ч": true, + "©": true, + "©": true, + "Ć": true, + "⋒": true, + "ⅅ": true, + "ℭ": true, + "Č": true, + "Ç": true, + "Ç": true, + "Ĉ": true, + "∰": true, + "Ċ": true, + "¸": true, + "·": true, + "ℭ": true, + "Χ": true, + "⊙": true, + "⊖": true, + "⊕": true, + "⊗": true, + "∲": true, + "”": true, + "’": true, + "∷": true, + "⩴": true, + "≡": true, + "∯": true, + "∮": true, + "ℂ": true, + "∐": true, + "∳": true, + "⨯": true, + "𝒞": true, + "⋓": true, + "≍": true, + "ⅅ": true, + "⤑": true, + "Ђ": true, + "Ѕ": true, + "Џ": true, + "‡": true, + "↡": true, + "⫤": true, + "Ď": true, + "Д": true, + "∇": true, + "Δ": true, + "𝔇": true, + "´": true, + "˙": true, + "˝": true, + "`": true, + "˜": true, + "⋄": true, + "ⅆ": true, + "𝔻": true, + "¨": true, + "⃜": true, + "≐": true, + "∯": true, + "¨": true, + "⇓": true, + "⇐": true, + "⇔": true, + "⫤": true, + "⟸": true, + "⟺": true, + "⟹": true, + "⇒": true, + "⊨": true, + "⇑": true, + "⇕": true, + "∥": true, + "↓": true, + "⤓": true, + "⇵": true, + "̑": true, + "⥐": true, + "⥞": true, + "↽": true, + "⥖": true, + "⥟": true, + "⇁": true, + "⥗": true, + "⊤": true, + "↧": true, + "⇓": true, + "𝒟": true, + "Đ": true, + "Ŋ": true, + "Ð": true, + "Ð": true, + "É": true, + "É": true, + "Ě": true, + "Ê": true, + "Ê": true, + "Э": true, + "Ė": true, + "𝔈": true, + "È": true, + "È": true, + "∈": true, + "Ē": true, + "◻": true, + "▫": true, + "Ę": true, + "𝔼": true, + "Ε": true, + "⩵": true, + "≂": true, + "⇌": true, + "ℰ": true, + "⩳": true, + "Η": true, + "Ë": true, + "Ë": true, + "∃": true, + "ⅇ": true, + "Ф": true, + "𝔉": true, + "◼": true, + "▪": true, + "𝔽": true, + "∀": true, + "ℱ": true, + "ℱ": true, + "Ѓ": true, + ">": true, + ">": true, + "Γ": true, + "Ϝ": true, + "Ğ": true, + "Ģ": true, + "Ĝ": true, + "Г": true, + "Ġ": true, + "𝔊": true, + "⋙": true, + "𝔾": true, + "≥": true, + "⋛": true, + "≧": true, + "⪢": true, + "≷": true, + "⩾": true, + "≳": true, + "𝒢": true, + "≫": true, + "Ъ": true, + "ˇ": true, + "^": true, + "Ĥ": true, + "ℌ": true, + "ℋ": true, + "ℍ": true, + "─": true, + "ℋ": true, + "Ħ": true, + "≎": true, + "≏": true, + "Е": true, + "IJ": true, + "Ё": true, + "Í": true, + "Í": true, + "Î": true, + "Î": true, + "И": true, + "İ": true, + "ℑ": true, + "Ì": true, + "Ì": true, + "ℑ": true, + "Ī": true, + "ⅈ": true, + "⇒": true, + "∬": true, + "∫": true, + "⋂": true, + "⁣": true, + "⁢": true, + "Į": true, + "𝕀": true, + "Ι": true, + "ℐ": true, + "Ĩ": true, + "І": true, + "Ï": true, + "Ï": true, + "Ĵ": true, + "Й": true, + "𝔍": true, + "𝕁": true, + "𝒥": true, + "Ј": true, + "Є": true, + "Х": true, + "Ќ": true, + "Κ": true, + "Ķ": true, + "К": true, + "𝔎": true, + "𝕂": true, + "𝒦": true, + "Љ": true, + "<": true, + "<": true, + "Ĺ": true, + "Λ": true, + "⟪": true, + "ℒ": true, + "↞": true, + "Ľ": true, + "Ļ": true, + "Л": true, + "⟨": true, + "←": true, + "⇤": true, + "⇆": true, + "⌈": true, + "⟦": true, + "⥡": true, + "⇃": true, + "⥙": true, + "⌊": true, + "↔": true, + "⥎": true, + "⊣": true, + "↤": true, + "⥚": true, + "⊲": true, + "⧏": true, + "⊴": true, + "⥑": true, + "⥠": true, + "↿": true, + "⥘": true, + "↼": true, + "⥒": true, + "⇐": true, + "⇔": true, + "⋚": true, + "≦": true, + "≶": true, + "⪡": true, + "⩽": true, + "≲": true, + "𝔏": true, + "⋘": true, + "⇚": true, + "Ŀ": true, + "⟵": true, + "⟷": true, + "⟶": true, + "⟸": true, + "⟺": true, + "⟹": true, + "𝕃": true, + "↙": true, + "↘": true, + "ℒ": true, + "↰": true, + "Ł": true, + "≪": true, + "⤅": true, + "М": true, + " ": true, + "ℳ": true, + "𝔐": true, + "∓": true, + "𝕄": true, + "ℳ": true, + "Μ": true, + "Њ": true, + "Ń": true, + "Ň": true, + "Ņ": true, + "Н": true, + "​": true, + "​": true, + "​": true, + "​": true, + "≫": true, + "≪": true, + " ": true, + "𝔑": true, + "⁠": true, + " ": true, + "ℕ": true, + "⫬": true, + "≢": true, + "≭": true, + "∦": true, + "∉": true, + "≠": true, + "≂̸": true, + "∄": true, + "≯": true, + "≱": true, + "≧̸": true, + "≫̸": true, + "≹": true, + "⩾̸": true, + "≵": true, + "≎̸": true, + "≏̸": true, + "⋪": true, + "⧏̸": true, + "⋬": true, + "≮": true, + "≰": true, + "≸": true, + "≪̸": true, + "⩽̸": true, + "≴": true, + "⪢̸": true, + "⪡̸": true, + "⊀": true, + "⪯̸": true, + "⋠": true, + "∌": true, + "⋫": true, + "⧐̸": true, + "⋭": true, + "⊏̸": true, + "⋢": true, + "⊐̸": true, + "⋣": true, + "⊂⃒": true, + "⊈": true, + "⊁": true, + "⪰̸": true, + "⋡": true, + "≿̸": true, + "⊃⃒": true, + "⊉": true, + "≁": true, + "≄": true, + "≇": true, + "≉": true, + "∤": true, + "𝒩": true, + "Ñ": true, + "Ñ": true, + "Ν": true, + "Œ": true, + "Ó": true, + "Ó": true, + "Ô": true, + "Ô": true, + "О": true, + "Ő": true, + "𝔒": true, + "Ò": true, + "Ò": true, + "Ō": true, + "Ω": true, + "Ο": true, + "𝕆": true, + "“": true, + "‘": true, + "⩔": true, + "𝒪": true, + "Ø": true, + "Ø": true, + "Õ": true, + "Õ": true, + "⨷": true, + "Ö": true, + "Ö": true, + "‾": true, + "⏞": true, + "⎴": true, + "⏜": true, + "∂": true, + "П": true, + "𝔓": true, + "Φ": true, + "Π": true, + "±": true, + "ℌ": true, + "ℙ": true, + "⪻": true, + "≺": true, + "⪯": true, + "≼": true, + "≾": true, + "″": true, + "∏": true, + "∷": true, + "∝": true, + "𝒫": true, + "Ψ": true, + """: true, + """: true, + "𝔔": true, + "ℚ": true, + "𝒬": true, + "⤐": true, + "®": true, + "®": true, + "Ŕ": true, + "⟫": true, + "↠": true, + "⤖": true, + "Ř": true, + "Ŗ": true, + "Р": true, + "ℜ": true, + "∋": true, + "⇋": true, + "⥯": true, + "ℜ": true, + "Ρ": true, + "⟩": true, + "→": true, + "⇥": true, + "⇄": true, + "⌉": true, + "⟧": true, + "⥝": true, + "⇂": true, + "⥕": true, + "⌋": true, + "⊢": true, + "↦": true, + "⥛": true, + "⊳": true, + "⧐": true, + "⊵": true, + "⥏": true, + "⥜": true, + "↾": true, + "⥔": true, + "⇀": true, + "⥓": true, + "⇒": true, + "ℝ": true, + "⥰": true, + "⇛": true, + "ℛ": true, + "↱": true, + "⧴": true, + "Щ": true, + "Ш": true, + "Ь": true, + "Ś": true, + "⪼": true, + "Š": true, + "Ş": true, + "Ŝ": true, + "С": true, + "𝔖": true, + "↓": true, + "←": true, + "→": true, + "↑": true, + "Σ": true, + "∘": true, + "𝕊": true, + "√": true, + "□": true, + "⊓": true, + "⊏": true, + "⊑": true, + "⊐": true, + "⊒": true, + "⊔": true, + "𝒮": true, + "⋆": true, + "⋐": true, + "⋐": true, + "⊆": true, + "≻": true, + "⪰": true, + "≽": true, + "≿": true, + "∋": true, + "∑": true, + "⋑": true, + "⊃": true, + "⊇": true, + "⋑": true, + "Þ": true, + "Þ": true, + "™": true, + "Ћ": true, + "Ц": true, + " ": true, + "Τ": true, + "Ť": true, + "Ţ": true, + "Т": true, + "𝔗": true, + "∴": true, + "Θ": true, + "  ": true, + " ": true, + "∼": true, + "≃": true, + "≅": true, + "≈": true, + "𝕋": true, + "⃛": true, + "𝒯": true, + "Ŧ": true, + "Ú": true, + "Ú": true, + "↟": true, + "⥉": true, + "Ў": true, + "Ŭ": true, + "Û": true, + "Û": true, + "У": true, + "Ű": true, + "𝔘": true, + "Ù": true, + "Ù": true, + "Ū": true, + "_": true, + "⏟": true, + "⎵": true, + "⏝": true, + "⋃": true, + "⊎": true, + "Ų": true, + "𝕌": true, + "↑": true, + "⤒": true, + "⇅": true, + "↕": true, + "⥮": true, + "⊥": true, + "↥": true, + "⇑": true, + "⇕": true, + "↖": true, + "↗": true, + "ϒ": true, + "Υ": true, + "Ů": true, + "𝒰": true, + "Ũ": true, + "Ü": true, + "Ü": true, + "⊫": true, + "⫫": true, + "В": true, + "⊩": true, + "⫦": true, + "⋁": true, + "‖": true, + "‖": true, + "∣": true, + "|": true, + "❘": true, + "≀": true, + " ": true, + "𝔙": true, + "𝕍": true, + "𝒱": true, + "⊪": true, + "Ŵ": true, + "⋀": true, + "𝔚": true, + "𝕎": true, + "𝒲": true, + "𝔛": true, + "Ξ": true, + "𝕏": true, + "𝒳": true, + "Я": true, + "Ї": true, + "Ю": true, + "Ý": true, + "Ý": true, + "Ŷ": true, + "Ы": true, + "𝔜": true, + "𝕐": true, + "𝒴": true, + "Ÿ": true, + "Ж": true, + "Ź": true, + "Ž": true, + "З": true, + "Ż": true, + "​": true, + "Ζ": true, + "ℨ": true, + "ℤ": true, + "𝒵": true, + "á": true, + "á": true, + "ă": true, + "∾": true, + "∾̳": true, + "∿": true, + "â": true, + "â": true, + "´": true, + "´": true, + "а": true, + "æ": true, + "æ": true, + "⁡": true, + "𝔞": true, + "à": true, + "à": true, + "ℵ": true, + "ℵ": true, + "α": true, + "ā": true, + "⨿": true, + "&": true, + "&": true, + "∧": true, + "⩕": true, + "⩜": true, + "⩘": true, + "⩚": true, + "∠": true, + "⦤": true, + "∠": true, + "∡": true, + "⦨": true, + "⦩": true, + "⦪": true, + "⦫": true, + "⦬": true, + "⦭": true, + "⦮": true, + "⦯": true, + "∟": true, + "⊾": true, + "⦝": true, + "∢": true, + "Å": true, + "⍼": true, + "ą": true, + "𝕒": true, + "≈": true, + "⩰": true, + "⩯": true, + "≊": true, + "≋": true, + "'": true, + "≈": true, + "≊": true, + "å": true, + "å": true, + "𝒶": true, + "*": true, + "≈": true, + "≍": true, + "ã": true, + "ã": true, + "ä": true, + "ä": true, + "∳": true, + "⨑": true, + "⫭": true, + "≌": true, + "϶": true, + "‵": true, + "∽": true, + "⋍": true, + "⊽": true, + "⌅": true, + "⌅": true, + "⎵": true, + "⎶": true, + "≌": true, + "б": true, + "„": true, + "∵": true, + "∵": true, + "⦰": true, + "϶": true, + "ℬ": true, + "β": true, + "ℶ": true, + "≬": true, + "𝔟": true, + "⋂": true, + "◯": true, + "⋃": true, + "⨀": true, + "⨁": true, + "⨂": true, + "⨆": true, + "★": true, + "▽": true, + "△": true, + "⨄": true, + "⋁": true, + "⋀": true, + "⤍": true, + "⧫": true, + "▪": true, + "▴": true, + "▾": true, + "◂": true, + "▸": true, + "␣": true, + "▒": true, + "░": true, + "▓": true, + "█": true, + "=⃥": true, + "≡⃥": true, + "⌐": true, + "𝕓": true, + "⊥": true, + "⊥": true, + "⋈": true, + "╗": true, + "╔": true, + "╖": true, + "╓": true, + "═": true, + "╦": true, + "╩": true, + "╤": true, + "╧": true, + "╝": true, + "╚": true, + "╜": true, + "╙": true, + "║": true, + "╬": true, + "╣": true, + "╠": true, + "╫": true, + "╢": true, + "╟": true, + "⧉": true, + "╕": true, + "╒": true, + "┐": true, + "┌": true, + "─": true, + "╥": true, + "╨": true, + "┬": true, + "┴": true, + "⊟": true, + "⊞": true, + "⊠": true, + "╛": true, + "╘": true, + "┘": true, + "└": true, + "│": true, + "╪": true, + "╡": true, + "╞": true, + "┼": true, + "┤": true, + "├": true, + "‵": true, + "˘": true, + "¦": true, + "¦": true, + "𝒷": true, + "⁏": true, + "∽": true, + "⋍": true, + "\": true, + "⧅": true, + "⟈": true, + "•": true, + "•": true, + "≎": true, + "⪮": true, + "≏": true, + "≏": true, + "ć": true, + "∩": true, + "⩄": true, + "⩉": true, + "⩋": true, + "⩇": true, + "⩀": true, + "∩︀": true, + "⁁": true, + "ˇ": true, + "⩍": true, + "č": true, + "ç": true, + "ç": true, + "ĉ": true, + "⩌": true, + "⩐": true, + "ċ": true, + "¸": true, + "¸": true, + "⦲": true, + "¢": true, + "¢": true, + "·": true, + "𝔠": true, + "ч": true, + "✓": true, + "✓": true, + "χ": true, + "○": true, + "⧃": true, + "ˆ": true, + "≗": true, + "↺": true, + "↻": true, + "®": true, + "Ⓢ": true, + "⊛": true, + "⊚": true, + "⊝": true, + "≗": true, + "⨐": true, + "⫯": true, + "⧂": true, + "♣": true, + "♣": true, + ":": true, + "≔": true, + "≔": true, + ",": true, + "@": true, + "∁": true, + "∘": true, + "∁": true, + "ℂ": true, + "≅": true, + "⩭": true, + "∮": true, + "𝕔": true, + "∐": true, + "©": true, + "©": true, + "℗": true, + "↵": true, + "✗": true, + "𝒸": true, + "⫏": true, + "⫑": true, + "⫐": true, + "⫒": true, + "⋯": true, + "⤸": true, + "⤵": true, + "⋞": true, + "⋟": true, + "↶": true, + "⤽": true, + "∪": true, + "⩈": true, + "⩆": true, + "⩊": true, + "⊍": true, + "⩅": true, + "∪︀": true, + "↷": true, + "⤼": true, + "⋞": true, + "⋟": true, + "⋎": true, + "⋏": true, + "¤": true, + "¤": true, + "↶": true, + "↷": true, + "⋎": true, + "⋏": true, + "∲": true, + "∱": true, + "⌭": true, + "⇓": true, + "⥥": true, + "†": true, + "ℸ": true, + "↓": true, + "‐": true, + "⊣": true, + "⤏": true, + "˝": true, + "ď": true, + "д": true, + "ⅆ": true, + "‡": true, + "⇊": true, + "⩷": true, + "°": true, + "°": true, + "δ": true, + "⦱": true, + "⥿": true, + "𝔡": true, + "⇃": true, + "⇂": true, + "⋄": true, + "⋄": true, + "♦": true, + "♦": true, + "¨": true, + "ϝ": true, + "⋲": true, + "÷": true, + "÷": true, + "÷": true, + "⋇": true, + "⋇": true, + "ђ": true, + "⌞": true, + "⌍": true, + "$": true, + "𝕕": true, + "˙": true, + "≐": true, + "≑": true, + "∸": true, + "∔": true, + "⊡": true, + "⌆": true, + "↓": true, + "⇊": true, + "⇃": true, + "⇂": true, + "⤐": true, + "⌟": true, + "⌌": true, + "𝒹": true, + "ѕ": true, + "⧶": true, + "đ": true, + "⋱": true, + "▿": true, + "▾": true, + "⇵": true, + "⥯": true, + "⦦": true, + "џ": true, + "⟿": true, + "⩷": true, + "≑": true, + "é": true, + "é": true, + "⩮": true, + "ě": true, + "≖": true, + "ê": true, + "ê": true, + "≕": true, + "э": true, + "ė": true, + "ⅇ": true, + "≒": true, + "𝔢": true, + "⪚": true, + "è": true, + "è": true, + "⪖": true, + "⪘": true, + "⪙": true, + "⏧": true, + "ℓ": true, + "⪕": true, + "⪗": true, + "ē": true, + "∅": true, + "∅": true, + "∅": true, + " ": true, + " ": true, + " ": true, + "ŋ": true, + " ": true, + "ę": true, + "𝕖": true, + "⋕": true, + "⧣": true, + "⩱": true, + "ε": true, + "ε": true, + "ϵ": true, + "≖": true, + "≕": true, + "≂": true, + "⪖": true, + "⪕": true, + "=": true, + "≟": true, + "≡": true, + "⩸": true, + "⧥": true, + "≓": true, + "⥱": true, + "ℯ": true, + "≐": true, + "≂": true, + "η": true, + "ð": true, + "ð": true, + "ë": true, + "ë": true, + "€": true, + "!": true, + "∃": true, + "ℰ": true, + "ⅇ": true, + "≒": true, + "ф": true, + "♀": true, + "ffi": true, + "ff": true, + "ffl": true, + "𝔣": true, + "fi": true, + "fj": true, + "♭": true, + "fl": true, + "▱": true, + "ƒ": true, + "𝕗": true, + "∀": true, + "⋔": true, + "⫙": true, + "⨍": true, + "½": true, + "½": true, + "⅓": true, + "¼": true, + "¼": true, + "⅕": true, + "⅙": true, + "⅛": true, + "⅔": true, + "⅖": true, + "¾": true, + "¾": true, + "⅗": true, + "⅜": true, + "⅘": true, + "⅚": true, + "⅝": true, + "⅞": true, + "⁄": true, + "⌢": true, + "𝒻": true, + "≧": true, + "⪌": true, + "ǵ": true, + "γ": true, + "ϝ": true, + "⪆": true, + "ğ": true, + "ĝ": true, + "г": true, + "ġ": true, + "≥": true, + "⋛": true, + "≥": true, + "≧": true, + "⩾": true, + "⩾": true, + "⪩": true, + "⪀": true, + "⪂": true, + "⪄": true, + "⋛︀": true, + "⪔": true, + "𝔤": true, + "≫": true, + "⋙": true, + "ℷ": true, + "ѓ": true, + "≷": true, + "⪒": true, + "⪥": true, + "⪤": true, + "≩": true, + "⪊": true, + "⪊": true, + "⪈": true, + "⪈": true, + "≩": true, + "⋧": true, + "𝕘": true, + "`": true, + "ℊ": true, + "≳": true, + "⪎": true, + "⪐": true, + ">": true, + ">": true, + "⪧": true, + "⩺": true, + "⋗": true, + "⦕": true, + "⩼": true, + "⪆": true, + "⥸": true, + "⋗": true, + "⋛": true, + "⪌": true, + "≷": true, + "≳": true, + "≩︀": true, + "≩︀": true, + "⇔": true, + " ": true, + "½": true, + "ℋ": true, + "ъ": true, + "↔": true, + "⥈": true, + "↭": true, + "ℏ": true, + "ĥ": true, + "♥": true, + "♥": true, + "…": true, + "⊹": true, + "𝔥": true, + "⤥": true, + "⤦": true, + "⇿": true, + "∻": true, + "↩": true, + "↪": true, + "𝕙": true, + "―": true, + "𝒽": true, + "ℏ": true, + "ħ": true, + "⁃": true, + "‐": true, + "í": true, + "í": true, + "⁣": true, + "î": true, + "î": true, + "и": true, + "е": true, + "¡": true, + "¡": true, + "⇔": true, + "𝔦": true, + "ì": true, + "ì": true, + "ⅈ": true, + "⨌": true, + "∭": true, + "⧜": true, + "℩": true, + "ij": true, + "ī": true, + "ℑ": true, + "ℐ": true, + "ℑ": true, + "ı": true, + "⊷": true, + "Ƶ": true, + "∈": true, + "℅": true, + "∞": true, + "⧝": true, + "ı": true, + "∫": true, + "⊺": true, + "ℤ": true, + "⊺": true, + "⨗": true, + "⨼": true, + "ё": true, + "į": true, + "𝕚": true, + "ι": true, + "⨼": true, + "¿": true, + "¿": true, + "𝒾": true, + "∈": true, + "⋹": true, + "⋵": true, + "⋴": true, + "⋳": true, + "∈": true, + "⁢": true, + "ĩ": true, + "і": true, + "ï": true, + "ï": true, + "ĵ": true, + "й": true, + "𝔧": true, + "ȷ": true, + "𝕛": true, + "𝒿": true, + "ј": true, + "є": true, + "κ": true, + "ϰ": true, + "ķ": true, + "к": true, + "𝔨": true, + "ĸ": true, + "х": true, + "ќ": true, + "𝕜": true, + "𝓀": true, + "⇚": true, + "⇐": true, + "⤛": true, + "⤎": true, + "≦": true, + "⪋": true, + "⥢": true, + "ĺ": true, + "⦴": true, + "ℒ": true, + "λ": true, + "⟨": true, + "⦑": true, + "⟨": true, + "⪅": true, + "«": true, + "«": true, + "←": true, + "⇤": true, + "⤟": true, + "⤝": true, + "↩": true, + "↫": true, + "⤹": true, + "⥳": true, + "↢": true, + "⪫": true, + "⤙": true, + "⪭": true, + "⪭︀": true, + "⤌": true, + "❲": true, + "{": true, + "[": true, + "⦋": true, + "⦏": true, + "⦍": true, + "ľ": true, + "ļ": true, + "⌈": true, + "{": true, + "л": true, + "⤶": true, + "“": true, + "„": true, + "⥧": true, + "⥋": true, + "↲": true, + "≤": true, + "←": true, + "↢": true, + "↽": true, + "↼": true, + "⇇": true, + "↔": true, + "⇆": true, + "⇋": true, + "↭": true, + "⋋": true, + "⋚": true, + "≤": true, + "≦": true, + "⩽": true, + "⩽": true, + "⪨": true, + "⩿": true, + "⪁": true, + "⪃": true, + "⋚︀": true, + "⪓": true, + "⪅": true, + "⋖": true, + "⋚": true, + "⪋": true, + "≶": true, + "≲": true, + "⥼": true, + "⌊": true, + "𝔩": true, + "≶": true, + "⪑": true, + "↽": true, + "↼": true, + "⥪": true, + "▄": true, + "љ": true, + "≪": true, + "⇇": true, + "⌞": true, + "⥫": true, + "◺": true, + "ŀ": true, + "⎰": true, + "⎰": true, + "≨": true, + "⪉": true, + "⪉": true, + "⪇": true, + "⪇": true, + "≨": true, + "⋦": true, + "⟬": true, + "⇽": true, + "⟦": true, + "⟵": true, + "⟷": true, + "⟼": true, + "⟶": true, + "↫": true, + "↬": true, + "⦅": true, + "𝕝": true, + "⨭": true, + "⨴": true, + "∗": true, + "_": true, + "◊": true, + "◊": true, + "⧫": true, + "(": true, + "⦓": true, + "⇆": true, + "⌟": true, + "⇋": true, + "⥭": true, + "‎": true, + "⊿": true, + "‹": true, + "𝓁": true, + "↰": true, + "≲": true, + "⪍": true, + "⪏": true, + "[": true, + "‘": true, + "‚": true, + "ł": true, + "<": true, + "<": true, + "⪦": true, + "⩹": true, + "⋖": true, + "⋋": true, + "⋉": true, + "⥶": true, + "⩻": true, + "⦖": true, + "◃": true, + "⊴": true, + "◂": true, + "⥊": true, + "⥦": true, + "≨︀": true, + "≨︀": true, + "∺": true, + "¯": true, + "¯": true, + "♂": true, + "✠": true, + "✠": true, + "↦": true, + "↦": true, + "↧": true, + "↤": true, + "↥": true, + "▮": true, + "⨩": true, + "м": true, + "—": true, + "∡": true, + "𝔪": true, + "℧": true, + "µ": true, + "µ": true, + "∣": true, + "*": true, + "⫰": true, + "·": true, + "·": true, + "−": true, + "⊟": true, + "∸": true, + "⨪": true, + "⫛": true, + "…": true, + "∓": true, + "⊧": true, + "𝕞": true, + "∓": true, + "𝓂": true, + "∾": true, + "μ": true, + "⊸": true, + "⊸": true, + "⋙̸": true, + "≫⃒": true, + "≫̸": true, + "⇍": true, + "⇎": true, + "⋘̸": true, + "≪⃒": true, + "≪̸": true, + "⇏": true, + "⊯": true, + "⊮": true, + "∇": true, + "ń": true, + "∠⃒": true, + "≉": true, + "⩰̸": true, + "≋̸": true, + "ʼn": true, + "≉": true, + "♮": true, + "♮": true, + "ℕ": true, + " ": true, + " ": true, + "≎̸": true, + "≏̸": true, + "⩃": true, + "ň": true, + "ņ": true, + "≇": true, + "⩭̸": true, + "⩂": true, + "н": true, + "–": true, + "≠": true, + "⇗": true, + "⤤": true, + "↗": true, + "↗": true, + "≐̸": true, + "≢": true, + "⤨": true, + "≂̸": true, + "∄": true, + "∄": true, + "𝔫": true, + "≧̸": true, + "≱": true, + "≱": true, + "≧̸": true, + "⩾̸": true, + "⩾̸": true, + "≵": true, + "≯": true, + "≯": true, + "⇎": true, + "↮": true, + "⫲": true, + "∋": true, + "⋼": true, + "⋺": true, + "∋": true, + "њ": true, + "⇍": true, + "≦̸": true, + "↚": true, + "‥": true, + "≰": true, + "↚": true, + "↮": true, + "≰": true, + "≦̸": true, + "⩽̸": true, + "⩽̸": true, + "≮": true, + "≴": true, + "≮": true, + "⋪": true, + "⋬": true, + "∤": true, + "𝕟": true, + "¬": true, + "¬": true, + "∉": true, + "⋹̸": true, + "⋵̸": true, + "∉": true, + "⋷": true, + "⋶": true, + "∌": true, + "∌": true, + "⋾": true, + "⋽": true, + "∦": true, + "∦": true, + "⫽⃥": true, + "∂̸": true, + "⨔": true, + "⊀": true, + "⋠": true, + "⪯̸": true, + "⊀": true, + "⪯̸": true, + "⇏": true, + "↛": true, + "⤳̸": true, + "↝̸": true, + "↛": true, + "⋫": true, + "⋭": true, + "⊁": true, + "⋡": true, + "⪰̸": true, + "𝓃": true, + "∤": true, + "∦": true, + "≁": true, + "≄": true, + "≄": true, + "∤": true, + "∦": true, + "⋢": true, + "⋣": true, + "⊄": true, + "⫅̸": true, + "⊈": true, + "⊂⃒": true, + "⊈": true, + "⫅̸": true, + "⊁": true, + "⪰̸": true, + "⊅": true, + "⫆̸": true, + "⊉": true, + "⊃⃒": true, + "⊉": true, + "⫆̸": true, + "≹": true, + "ñ": true, + "ñ": true, + "≸": true, + "⋪": true, + "⋬": true, + "⋫": true, + "⋭": true, + "ν": true, + "#": true, + "№": true, + " ": true, + "⊭": true, + "⤄": true, + "≍⃒": true, + "⊬": true, + "≥⃒": true, + ">⃒": true, + "⧞": true, + "⤂": true, + "≤⃒": true, + "<⃒": true, + "⊴⃒": true, + "⤃": true, + "⊵⃒": true, + "∼⃒": true, + "⇖": true, + "⤣": true, + "↖": true, + "↖": true, + "⤧": true, + "Ⓢ": true, + "ó": true, + "ó": true, + "⊛": true, + "⊚": true, + "ô": true, + "ô": true, + "о": true, + "⊝": true, + "ő": true, + "⨸": true, + "⊙": true, + "⦼": true, + "œ": true, + "⦿": true, + "𝔬": true, + "˛": true, + "ò": true, + "ò": true, + "⧁": true, + "⦵": true, + "Ω": true, + "∮": true, + "↺": true, + "⦾": true, + "⦻": true, + "‾": true, + "⧀": true, + "ō": true, + "ω": true, + "ο": true, + "⦶": true, + "⊖": true, + "𝕠": true, + "⦷": true, + "⦹": true, + "⊕": true, + "∨": true, + "↻": true, + "⩝": true, + "ℴ": true, + "ℴ": true, + "ª": true, + "ª": true, + "º": true, + "º": true, + "⊶": true, + "⩖": true, + "⩗": true, + "⩛": true, + "ℴ": true, + "ø": true, + "ø": true, + "⊘": true, + "õ": true, + "õ": true, + "⊗": true, + "⨶": true, + "ö": true, + "ö": true, + "⌽": true, + "∥": true, + "¶": true, + "¶": true, + "∥": true, + "⫳": true, + "⫽": true, + "∂": true, + "п": true, + "%": true, + ".": true, + "‰": true, + "⊥": true, + "‱": true, + "𝔭": true, + "φ": true, + "ϕ": true, + "ℳ": true, + "☎": true, + "π": true, + "⋔": true, + "ϖ": true, + "ℏ": true, + "ℎ": true, + "ℏ": true, + "+": true, + "⨣": true, + "⊞": true, + "⨢": true, + "∔": true, + "⨥": true, + "⩲": true, + "±": true, + "±": true, + "⨦": true, + "⨧": true, + "±": true, + "⨕": true, + "𝕡": true, + "£": true, + "£": true, + "≺": true, + "⪳": true, + "⪷": true, + "≼": true, + "⪯": true, + "≺": true, + "⪷": true, + "≼": true, + "⪯": true, + "⪹": true, + "⪵": true, + "⋨": true, + "≾": true, + "′": true, + "ℙ": true, + "⪵": true, + "⪹": true, + "⋨": true, + "∏": true, + "⌮": true, + "⌒": true, + "⌓": true, + "∝": true, + "∝": true, + "≾": true, + "⊰": true, + "𝓅": true, + "ψ": true, + " ": true, + "𝔮": true, + "⨌": true, + "𝕢": true, + "⁗": true, + "𝓆": true, + "ℍ": true, + "⨖": true, + "?": true, + "≟": true, + """: true, + """: true, + "⇛": true, + "⇒": true, + "⤜": true, + "⤏": true, + "⥤": true, + "∽̱": true, + "ŕ": true, + "√": true, + "⦳": true, + "⟩": true, + "⦒": true, + "⦥": true, + "⟩": true, + "»": true, + "»": true, + "→": true, + "⥵": true, + "⇥": true, + "⤠": true, + "⤳": true, + "⤞": true, + "↪": true, + "↬": true, + "⥅": true, + "⥴": true, + "↣": true, + "↝": true, + "⤚": true, + "∶": true, + "ℚ": true, + "⤍": true, + "❳": true, + "}": true, + "]": true, + "⦌": true, + "⦎": true, + "⦐": true, + "ř": true, + "ŗ": true, + "⌉": true, + "}": true, + "р": true, + "⤷": true, + "⥩": true, + "”": true, + "”": true, + "↳": true, + "ℜ": true, + "ℛ": true, + "ℜ": true, + "ℝ": true, + "▭": true, + "®": true, + "®": true, + "⥽": true, + "⌋": true, + "𝔯": true, + "⇁": true, + "⇀": true, + "⥬": true, + "ρ": true, + "ϱ": true, + "→": true, + "↣": true, + "⇁": true, + "⇀": true, + "⇄": true, + "⇌": true, + "⇉": true, + "↝": true, + "⋌": true, + "˚": true, + "≓": true, + "⇄": true, + "⇌": true, + "‏": true, + "⎱": true, + "⎱": true, + "⫮": true, + "⟭": true, + "⇾": true, + "⟧": true, + "⦆": true, + "𝕣": true, + "⨮": true, + "⨵": true, + ")": true, + "⦔": true, + "⨒": true, + "⇉": true, + "›": true, + "𝓇": true, + "↱": true, + "]": true, + "’": true, + "’": true, + "⋌": true, + "⋊": true, + "▹": true, + "⊵": true, + "▸": true, + "⧎": true, + "⥨": true, + "℞": true, + "ś": true, + "‚": true, + "≻": true, + "⪴": true, + "⪸": true, + "š": true, + "≽": true, + "⪰": true, + "ş": true, + "ŝ": true, + "⪶": true, + "⪺": true, + "⋩": true, + "⨓": true, + "≿": true, + "с": true, + "⋅": true, + "⊡": true, + "⩦": true, + "⇘": true, + "⤥": true, + "↘": true, + "↘": true, + "§": true, + "§": true, + ";": true, + "⤩": true, + "∖": true, + "∖": true, + "✶": true, + "𝔰": true, + "⌢": true, + "♯": true, + "щ": true, + "ш": true, + "∣": true, + "∥": true, + "­": true, + "­": true, + "σ": true, + "ς": true, + "ς": true, + "∼": true, + "⩪": true, + "≃": true, + "≃": true, + "⪞": true, + "⪠": true, + "⪝": true, + "⪟": true, + "≆": true, + "⨤": true, + "⥲": true, + "←": true, + "∖": true, + "⨳": true, + "⧤": true, + "∣": true, + "⌣": true, + "⪪": true, + "⪬": true, + "⪬︀": true, + "ь": true, + "/": true, + "⧄": true, + "⌿": true, + "𝕤": true, + "♠": true, + "♠": true, + "∥": true, + "⊓": true, + "⊓︀": true, + "⊔": true, + "⊔︀": true, + "⊏": true, + "⊑": true, + "⊏": true, + "⊑": true, + "⊐": true, + "⊒": true, + "⊐": true, + "⊒": true, + "□": true, + "□": true, + "▪": true, + "▪": true, + "→": true, + "𝓈": true, + "∖": true, + "⌣": true, + "⋆": true, + "☆": true, + "★": true, + "ϵ": true, + "ϕ": true, + "¯": true, + "⊂": true, + "⫅": true, + "⪽": true, + "⊆": true, + "⫃": true, + "⫁": true, + "⫋": true, + "⊊": true, + "⪿": true, + "⥹": true, + "⊂": true, + "⊆": true, + "⫅": true, + "⊊": true, + "⫋": true, + "⫇": true, + "⫕": true, + "⫓": true, + "≻": true, + "⪸": true, + "≽": true, + "⪰": true, + "⪺": true, + "⪶": true, + "⋩": true, + "≿": true, + "∑": true, + "♪": true, + "¹": true, + "¹": true, + "²": true, + "²": true, + "³": true, + "³": true, + "⊃": true, + "⫆": true, + "⪾": true, + "⫘": true, + "⊇": true, + "⫄": true, + "⟉": true, + "⫗": true, + "⥻": true, + "⫂": true, + "⫌": true, + "⊋": true, + "⫀": true, + "⊃": true, + "⊇": true, + "⫆": true, + "⊋": true, + "⫌": true, + "⫈": true, + "⫔": true, + "⫖": true, + "⇙": true, + "⤦": true, + "↙": true, + "↙": true, + "⤪": true, + "ß": true, + "ß": true, + "⌖": true, + "τ": true, + "⎴": true, + "ť": true, + "ţ": true, + "т": true, + "⃛": true, + "⌕": true, + "𝔱": true, + "∴": true, + "∴": true, + "θ": true, + "ϑ": true, + "ϑ": true, + "≈": true, + "∼": true, + " ": true, + "≈": true, + "∼": true, + "þ": true, + "þ": true, + "˜": true, + "×": true, + "×": true, + "⊠": true, + "⨱": true, + "⨰": true, + "∭": true, + "⤨": true, + "⊤": true, + "⌶": true, + "⫱": true, + "𝕥": true, + "⫚": true, + "⤩": true, + "‴": true, + "™": true, + "▵": true, + "▿": true, + "◃": true, + "⊴": true, + "≜": true, + "▹": true, + "⊵": true, + "◬": true, + "≜": true, + "⨺": true, + "⨹": true, + "⧍": true, + "⨻": true, + "⏢": true, + "𝓉": true, + "ц": true, + "ћ": true, + "ŧ": true, + "≬": true, + "↞": true, + "↠": true, + "⇑": true, + "⥣": true, + "ú": true, + "ú": true, + "↑": true, + "ў": true, + "ŭ": true, + "û": true, + "û": true, + "у": true, + "⇅": true, + "ű": true, + "⥮": true, + "⥾": true, + "𝔲": true, + "ù": true, + "ù": true, + "↿": true, + "↾": true, + "▀": true, + "⌜": true, + "⌜": true, + "⌏": true, + "◸": true, + "ū": true, + "¨": true, + "¨": true, + "ų": true, + "𝕦": true, + "↑": true, + "↕": true, + "↿": true, + "↾": true, + "⊎": true, + "υ": true, + "ϒ": true, + "υ": true, + "⇈": true, + "⌝": true, + "⌝": true, + "⌎": true, + "ů": true, + "◹": true, + "𝓊": true, + "⋰": true, + "ũ": true, + "▵": true, + "▴": true, + "⇈": true, + "ü": true, + "ü": true, + "⦧": true, + "⇕": true, + "⫨": true, + "⫩": true, + "⊨": true, + "⦜": true, + "ϵ": true, + "ϰ": true, + "∅": true, + "ϕ": true, + "ϖ": true, + "∝": true, + "↕": true, + "ϱ": true, + "ς": true, + "⊊︀": true, + "⫋︀": true, + "⊋︀": true, + "⫌︀": true, + "ϑ": true, + "⊲": true, + "⊳": true, + "в": true, + "⊢": true, + "∨": true, + "⊻": true, + "≚": true, + "⋮": true, + "|": true, + "|": true, + "𝔳": true, + "⊲": true, + "⊂⃒": true, + "⊃⃒": true, + "𝕧": true, + "∝": true, + "⊳": true, + "𝓋": true, + "⫋︀": true, + "⊊︀": true, + "⫌︀": true, + "⊋︀": true, + "⦚": true, + "ŵ": true, + "⩟": true, + "∧": true, + "≙": true, + "℘": true, + "𝔴": true, + "𝕨": true, + "℘": true, + "≀": true, + "≀": true, + "𝓌": true, + "⋂": true, + "◯": true, + "⋃": true, + "▽": true, + "𝔵": true, + "⟺": true, + "⟷": true, + "ξ": true, + "⟸": true, + "⟵": true, + "⟼": true, + "⋻": true, + "⨀": true, + "𝕩": true, + "⨁": true, + "⨂": true, + "⟹": true, + "⟶": true, + "𝓍": true, + "⨆": true, + "⨄": true, + "△": true, + "⋁": true, + "⋀": true, + "ý": true, + "ý": true, + "я": true, + "ŷ": true, + "ы": true, + "¥": true, + "¥": true, + "𝔶": true, + "ї": true, + "𝕪": true, + "𝓎": true, + "ю": true, + "ÿ": true, + "ÿ": true, + "ź": true, + "ž": true, + "з": true, + "ż": true, + "ℨ": true, + "ζ": true, + "𝔷": true, + "ж": true, + "⇝": true, + "𝕫": true, + "𝓏": true, + "‍": true, + "‌": true, +} diff --git a/vendor/github.com/russross/blackfriday/v2/esc.go b/vendor/github.com/russross/blackfriday/v2/esc.go index 6385f27c..6ab60102 100644 --- a/vendor/github.com/russross/blackfriday/v2/esc.go +++ b/vendor/github.com/russross/blackfriday/v2/esc.go @@ -13,13 +13,27 @@ var htmlEscaper = [256][]byte{ } func escapeHTML(w io.Writer, s []byte) { + escapeEntities(w, s, false) +} + +func escapeAllHTML(w io.Writer, s []byte) { + escapeEntities(w, s, true) +} + +func escapeEntities(w io.Writer, s []byte, escapeValidEntities bool) { var start, end int for end < len(s) { escSeq := htmlEscaper[s[end]] if escSeq != nil { - w.Write(s[start:end]) - w.Write(escSeq) - start = end + 1 + isEntity, entityEnd := nodeIsEntity(s, end) + if isEntity && !escapeValidEntities { + w.Write(s[start : entityEnd+1]) + start = entityEnd + 1 + } else { + w.Write(s[start:end]) + w.Write(escSeq) + start = end + 1 + } } end++ } @@ -28,6 +42,28 @@ func escapeHTML(w io.Writer, s []byte) { } } +func nodeIsEntity(s []byte, end int) (isEntity bool, endEntityPos int) { + isEntity = false + endEntityPos = end + 1 + + if s[end] == '&' { + for endEntityPos < len(s) { + if s[endEntityPos] == ';' { + if entities[string(s[end:endEntityPos+1])] { + isEntity = true + break + } + } + if !isalnum(s[endEntityPos]) && s[endEntityPos] != '&' && s[endEntityPos] != '#' { + break + } + endEntityPos++ + } + } + + return isEntity, endEntityPos +} + func escLink(w io.Writer, text []byte) { unesc := html.UnescapeString(string(text)) escapeHTML(w, []byte(unesc)) diff --git a/vendor/github.com/russross/blackfriday/v2/html.go b/vendor/github.com/russross/blackfriday/v2/html.go index 284c8718..cb4f26e3 100644 --- a/vendor/github.com/russross/blackfriday/v2/html.go +++ b/vendor/github.com/russross/blackfriday/v2/html.go @@ -132,7 +132,10 @@ func NewHTMLRenderer(params HTMLRendererParameters) *HTMLRenderer { } if params.FootnoteReturnLinkContents == "" { - params.FootnoteReturnLinkContents = `[return]` + // U+FE0E is VARIATION SELECTOR-15. + // It suppresses automatic emoji presentation of the preceding + // U+21A9 LEFTWARDS ARROW WITH HOOK on iOS and iPadOS. + params.FootnoteReturnLinkContents = "↩\ufe0e" } return &HTMLRenderer{ @@ -616,7 +619,7 @@ func (r *HTMLRenderer) RenderNode(w io.Writer, node *Node, entering bool) WalkSt } case Code: r.out(w, codeTag) - escapeHTML(w, node.Literal) + escapeAllHTML(w, node.Literal) r.out(w, codeCloseTag) case Document: break @@ -762,7 +765,7 @@ func (r *HTMLRenderer) RenderNode(w io.Writer, node *Node, entering bool) WalkSt r.cr(w) r.out(w, preTag) r.tag(w, codeTag[:len(codeTag)-1], attrs) - escapeHTML(w, node.Literal) + escapeAllHTML(w, node.Literal) r.out(w, codeCloseTag) r.out(w, preCloseTag) if node.Parent.Type != Item { diff --git a/vendor/github.com/russross/blackfriday/v2/inline.go b/vendor/github.com/russross/blackfriday/v2/inline.go index 4ed29079..d45bd941 100644 --- a/vendor/github.com/russross/blackfriday/v2/inline.go +++ b/vendor/github.com/russross/blackfriday/v2/inline.go @@ -278,7 +278,7 @@ func link(p *Markdown, data []byte, offset int) (int, *Node) { case data[i] == '\n': textHasNl = true - case data[i-1] == '\\': + case isBackslashEscaped(data, i): continue case data[i] == '[': diff --git a/vendor/github.com/russross/blackfriday/v2/node.go b/vendor/github.com/russross/blackfriday/v2/node.go index 51b9e8c1..04e6050c 100644 --- a/vendor/github.com/russross/blackfriday/v2/node.go +++ b/vendor/github.com/russross/blackfriday/v2/node.go @@ -199,7 +199,8 @@ func (n *Node) InsertBefore(sibling *Node) { } } -func (n *Node) isContainer() bool { +// IsContainer returns true if 'n' can contain children. +func (n *Node) IsContainer() bool { switch n.Type { case Document: fallthrough @@ -238,6 +239,11 @@ func (n *Node) isContainer() bool { } } +// IsLeaf returns true if 'n' is a leaf node. +func (n *Node) IsLeaf() bool { + return !n.IsContainer() +} + func (n *Node) canContain(t NodeType) bool { if n.Type == List { return t == Item @@ -309,11 +315,11 @@ func newNodeWalker(root *Node) *nodeWalker { } func (nw *nodeWalker) next() { - if (!nw.current.isContainer() || !nw.entering) && nw.current == nw.root { + if (!nw.current.IsContainer() || !nw.entering) && nw.current == nw.root { nw.current = nil return } - if nw.entering && nw.current.isContainer() { + if nw.entering && nw.current.IsContainer() { if nw.current.FirstChild != nil { nw.current = nw.current.FirstChild nw.entering = true diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml b/vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml deleted file mode 100644 index 93b1fcdb..00000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -sudo: false -language: go -go: - - 1.x - - master -matrix: - allow_failures: - - go: master - fast_finish: true -install: - - # Do nothing. This is needed to prevent default install action "go get -t -v ./..." from happening here (we want it to happen inside script step). -script: - - go get -t -v ./... - - diff -u <(echo -n) <(gofmt -d -s .) - - go tool vet . - - go test -v -race ./... diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE b/vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE deleted file mode 100644 index c35c17af..00000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2015 Dmitri Shuralyov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/README.md b/vendor/github.com/shurcooL/sanitized_anchor_name/README.md deleted file mode 100644 index 670bf0fe..00000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/README.md +++ /dev/null @@ -1,36 +0,0 @@ -sanitized_anchor_name -===================== - -[![Build Status](https://travis-ci.org/shurcooL/sanitized_anchor_name.svg?branch=master)](https://travis-ci.org/shurcooL/sanitized_anchor_name) [![GoDoc](https://godoc.org/github.com/shurcooL/sanitized_anchor_name?status.svg)](https://godoc.org/github.com/shurcooL/sanitized_anchor_name) - -Package sanitized_anchor_name provides a func to create sanitized anchor names. - -Its logic can be reused by multiple packages to create interoperable anchor names -and links to those anchors. - -At this time, it does not try to ensure that generated anchor names -are unique, that responsibility falls on the caller. - -Installation ------------- - -```bash -go get -u github.com/shurcooL/sanitized_anchor_name -``` - -Example -------- - -```Go -anchorName := sanitized_anchor_name.Create("This is a header") - -fmt.Println(anchorName) - -// Output: -// this-is-a-header -``` - -License -------- - -- [MIT License](LICENSE) diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/main.go b/vendor/github.com/shurcooL/sanitized_anchor_name/main.go deleted file mode 100644 index 6a77d124..00000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/main.go +++ /dev/null @@ -1,29 +0,0 @@ -// Package sanitized_anchor_name provides a func to create sanitized anchor names. -// -// Its logic can be reused by multiple packages to create interoperable anchor names -// and links to those anchors. -// -// At this time, it does not try to ensure that generated anchor names -// are unique, that responsibility falls on the caller. -package sanitized_anchor_name // import "github.com/shurcooL/sanitized_anchor_name" - -import "unicode" - -// Create returns a sanitized anchor name for the given text. -func Create(text string) string { - var anchorName []rune - var futureDash = false - for _, r := range text { - switch { - case unicode.IsLetter(r) || unicode.IsNumber(r): - if futureDash && len(anchorName) > 0 { - anchorName = append(anchorName, '-') - } - futureDash = false - anchorName = append(anchorName, unicode.ToLower(r)) - default: - futureDash = true - } - } - return string(anchorName) -} diff --git a/vendor/github.com/spf13/afero/README.md b/vendor/github.com/spf13/afero/README.md index fb8eaaf8..cab257f5 100644 --- a/vendor/github.com/spf13/afero/README.md +++ b/vendor/github.com/spf13/afero/README.md @@ -79,11 +79,11 @@ would. So if my application before had: ```go -os.Open('/tmp/foo') +os.Open("/tmp/foo") ``` We would replace it with: ```go -AppFs.Open('/tmp/foo') +AppFs.Open("/tmp/foo") ``` `AppFs` being the variable we defined above. @@ -259,6 +259,18 @@ system using InMemoryFile. Afero has experimental support for secure file transfer protocol (sftp). Which can be used to perform file operations over a encrypted channel. +### GCSFs + +Afero has experimental support for Google Cloud Storage (GCS). You can either set the +`GOOGLE_APPLICATION_CREDENTIALS_JSON` env variable to your JSON credentials or use `opts` in +`NewGcsFS` to configure access to your GCS bucket. + +Some known limitations of the existing implementation: +* No Chmod support - The GCS ACL could probably be mapped to *nix style permissions but that would add another level of complexity and is ignored in this version. +* No Chtimes support - Could be simulated with attributes (gcs a/m-times are set implicitly) but that's is left for another version. +* Not thread safe - Also assumes all file operations are done through the same instance of the GcsFs. File operations between different GcsFs instances are not guaranteed to be consistent. + + ## Filtering Backends ### BasePathFs diff --git a/vendor/github.com/spf13/afero/cacheOnReadFs.go b/vendor/github.com/spf13/afero/cacheOnReadFs.go index 71471aa2..017d344f 100644 --- a/vendor/github.com/spf13/afero/cacheOnReadFs.go +++ b/vendor/github.com/spf13/afero/cacheOnReadFs.go @@ -75,6 +75,10 @@ func (u *CacheOnReadFs) copyToLayer(name string) error { return copyToLayer(u.base, u.layer, name) } +func (u *CacheOnReadFs) copyFileToLayer(name string, flag int, perm os.FileMode) error { + return copyFileToLayer(u.base, u.layer, name, flag, perm) +} + func (u *CacheOnReadFs) Chtimes(name string, atime, mtime time.Time) error { st, _, err := u.cacheStatus(name) if err != nil { @@ -212,7 +216,7 @@ func (u *CacheOnReadFs) OpenFile(name string, flag int, perm os.FileMode) (File, switch st { case cacheLocal, cacheHit: default: - if err := u.copyToLayer(name); err != nil { + if err := u.copyFileToLayer(name, flag, perm); err != nil { return nil, err } } diff --git a/vendor/github.com/spf13/afero/mem/file.go b/vendor/github.com/spf13/afero/mem/file.go index 5a20730c..5ef8b6a3 100644 --- a/vendor/github.com/spf13/afero/mem/file.go +++ b/vendor/github.com/spf13/afero/mem/file.go @@ -71,7 +71,7 @@ func CreateFile(name string) *FileData { } func CreateDir(name string) *FileData { - return &FileData{name: name, memDir: &DirMap{}, dir: true} + return &FileData{name: name, memDir: &DirMap{}, dir: true, modtime: time.Now()} } func ChangeFileName(f *FileData, newname string) { diff --git a/vendor/github.com/spf13/afero/memmap.go b/vendor/github.com/spf13/afero/memmap.go index 5c265f92..ea0798d8 100644 --- a/vendor/github.com/spf13/afero/memmap.go +++ b/vendor/github.com/spf13/afero/memmap.go @@ -279,7 +279,7 @@ func (m *MemMapFs) RemoveAll(path string) error { defer m.mu.RUnlock() for p := range m.getData() { - if strings.HasPrefix(p, path) { + if p == path || strings.HasPrefix(p, path+FilePathSeparator) { m.mu.RUnlock() m.mu.Lock() delete(m.getData(), p) diff --git a/vendor/github.com/spf13/afero/unionFile.go b/vendor/github.com/spf13/afero/unionFile.go index 985363ee..34f99a40 100644 --- a/vendor/github.com/spf13/afero/unionFile.go +++ b/vendor/github.com/spf13/afero/unionFile.go @@ -268,13 +268,7 @@ func (f *UnionFile) WriteString(s string) (n int, err error) { return 0, BADFD } -func copyToLayer(base Fs, layer Fs, name string) error { - bfh, err := base.Open(name) - if err != nil { - return err - } - defer bfh.Close() - +func copyFile(base Fs, layer Fs, name string, bfh File) error { // First make sure the directory exists exists, err := Exists(layer, filepath.Dir(name)) if err != nil { @@ -315,3 +309,23 @@ func copyToLayer(base Fs, layer Fs, name string) error { } return layer.Chtimes(name, bfi.ModTime(), bfi.ModTime()) } + +func copyToLayer(base Fs, layer Fs, name string) error { + bfh, err := base.Open(name) + if err != nil { + return err + } + defer bfh.Close() + + return copyFile(base, layer, name, bfh) +} + +func copyFileToLayer(base Fs, layer Fs, name string, flag int, perm os.FileMode) error { + bfh, err := base.OpenFile(name, flag, perm) + if err != nil { + return err + } + defer bfh.Close() + + return copyFile(base, layer, name, bfh) +} diff --git a/vendor/github.com/spf13/cobra/MAINTAINERS b/vendor/github.com/spf13/cobra/MAINTAINERS new file mode 100644 index 00000000..4c5ac3dd --- /dev/null +++ b/vendor/github.com/spf13/cobra/MAINTAINERS @@ -0,0 +1,13 @@ +maintainers: +- spf13 +- johnSchnake +- jpmcb +- marckhouzam +inactive: +- anthonyfok +- bep +- bogem +- broady +- eparis +- jharshman +- wfernandes diff --git a/vendor/github.com/spf13/cobra/Makefile b/vendor/github.com/spf13/cobra/Makefile index 472c73bf..443ef1a9 100644 --- a/vendor/github.com/spf13/cobra/Makefile +++ b/vendor/github.com/spf13/cobra/Makefile @@ -9,11 +9,11 @@ ifeq (, $(shell which richgo)) $(warning "could not find richgo in $(PATH), run: go get github.com/kyoh86/richgo") endif -.PHONY: fmt lint test cobra_generator install_deps clean +.PHONY: fmt lint test install_deps clean default: all -all: fmt test cobra_generator +all: fmt test fmt: $(info ******************** checking formatting ********************) @@ -23,15 +23,10 @@ lint: $(info ******************** running lint tools ********************) golangci-lint run -v -test: install_deps lint +test: install_deps $(info ******************** running tests ********************) richgo test -v ./... -cobra_generator: install_deps - $(info ******************** building generator ********************) - mkdir -p $(BIN) - make -C cobra all - install_deps: $(info ******************** downloading dependencies ********************) go get -v ./... diff --git a/vendor/github.com/spf13/cobra/README.md b/vendor/github.com/spf13/cobra/README.md index 074e3979..7adef143 100644 --- a/vendor/github.com/spf13/cobra/README.md +++ b/vendor/github.com/spf13/cobra/README.md @@ -1,52 +1,26 @@ ![cobra logo](https://cloud.githubusercontent.com/assets/173412/10886352/ad566232-814f-11e5-9cd0-aa101788c117.png) -Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files. +Cobra is a library for creating powerful modern CLI applications. Cobra is used in many Go projects such as [Kubernetes](http://kubernetes.io/), [Hugo](https://gohugo.io), and [Github CLI](https://github.com/cli/cli) to name a few. [This list](./projects_using_cobra.md) contains a more extensive list of projects using Cobra. [![](https://img.shields.io/github/workflow/status/spf13/cobra/Test?longCache=tru&label=Test&logo=github%20actions&logoColor=fff)](https://github.com/spf13/cobra/actions?query=workflow%3ATest) -[![GoDoc](https://godoc.org/github.com/spf13/cobra?status.svg)](https://godoc.org/github.com/spf13/cobra) +[![Go Reference](https://pkg.go.dev/badge/github.com/spf13/cobra.svg)](https://pkg.go.dev/github.com/spf13/cobra) [![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/github.com/spf13/cobra) [![Slack](https://img.shields.io/badge/Slack-cobra-brightgreen)](https://gophers.slack.com/archives/CD3LP1199) -# Table of Contents - -- [Overview](#overview) -- [Concepts](#concepts) - * [Commands](#commands) - * [Flags](#flags) -- [Installing](#installing) -- [Usage](#usage) - * [Using the Cobra Generator](user_guide.md#using-the-cobra-generator) - * [Using the Cobra Library](user_guide.md#using-the-cobra-library) - * [Working with Flags](user_guide.md#working-with-flags) - * [Positional and Custom Arguments](user_guide.md#positional-and-custom-arguments) - * [Example](user_guide.md#example) - * [Help Command](user_guide.md#help-command) - * [Usage Message](user_guide.md#usage-message) - * [PreRun and PostRun Hooks](user_guide.md#prerun-and-postrun-hooks) - * [Suggestions when "unknown command" happens](user_guide.md#suggestions-when-unknown-command-happens) - * [Generating documentation for your command](user_guide.md#generating-documentation-for-your-command) - * [Generating shell completions](user_guide.md#generating-shell-completions) -- [Contributing](CONTRIBUTING.md) -- [License](#license) - # Overview Cobra is a library providing a simple interface to create powerful modern CLI interfaces similar to git & go tools. -Cobra is also an application that will generate your application scaffolding to rapidly -develop a Cobra-based application. - Cobra provides: * Easy subcommand-based CLIs: `app server`, `app fetch`, etc. * Fully POSIX-compliant flags (including short & long versions) * Nested subcommands * Global, local and cascading flags -* Easy generation of applications & commands with `cobra init appname` & `cobra add cmdname` * Intelligent suggestions (`app srver`... did you mean `app server`?) * Automatic help generation for commands and flags * Automatic help flag recognition of `-h`, `--help`, etc. @@ -54,7 +28,7 @@ Cobra provides: * Automatically generated man pages for your application * Command aliases so you can change things without breaking them * The flexibility to define your own help, usage, etc. -* Optional tight integration with [viper](http://github.com/spf13/viper) for 12-factor apps +* Optional seamless integration with [viper](http://github.com/spf13/viper) for 12-factor apps # Concepts @@ -88,7 +62,7 @@ have children commands and optionally run an action. In the example above, 'server' is the command. -[More about cobra.Command](https://godoc.org/github.com/spf13/cobra#Command) +[More about cobra.Command](https://pkg.go.dev/github.com/spf13/cobra#Command) ## Flags @@ -105,10 +79,11 @@ which maintains the same interface while adding POSIX compliance. # Installing Using Cobra is easy. First, use `go get` to install the latest version -of the library. This command will install the `cobra` generator executable -along with the library and its dependencies: +of the library. - go get -u github.com/spf13/cobra +``` +go get -u github.com/spf13/cobra@latest +``` Next, include Cobra in your application: @@ -117,8 +92,19 @@ import "github.com/spf13/cobra" ``` # Usage +`cobra-cli` is a command line program to generate cobra applications and command files. +It will bootstrap your application scaffolding to rapidly +develop a Cobra-based application. It is the easiest way to incorporate Cobra into your application. + +It can be installed by running: + +``` +go install github.com/spf13/cobra-cli@latest +``` + +For complete details on using the Cobra-CLI generator, please read [The Cobra Generator README](https://github.com/spf13/cobra-cli/blob/master/README.md) -See [User Guide](user_guide.md). +For complete details on using the Cobra library, please read the [The Cobra User Guide](user_guide.md). # License diff --git a/vendor/github.com/spf13/cobra/args.go b/vendor/github.com/spf13/cobra/args.go index 70e9b262..20a022b3 100644 --- a/vendor/github.com/spf13/cobra/args.go +++ b/vendor/github.com/spf13/cobra/args.go @@ -107,3 +107,15 @@ func RangeArgs(min int, max int) PositionalArgs { return nil } } + +// MatchAll allows combining several PositionalArgs to work in concert. +func MatchAll(pargs ...PositionalArgs) PositionalArgs { + return func(cmd *Command, args []string) error { + for _, parg := range pargs { + if err := parg(cmd, args); err != nil { + return err + } + } + return nil + } +} diff --git a/vendor/github.com/spf13/cobra/bash_completions.go b/vendor/github.com/spf13/cobra/bash_completions.go index 733f4d12..6c360c59 100644 --- a/vendor/github.com/spf13/cobra/bash_completions.go +++ b/vendor/github.com/spf13/cobra/bash_completions.go @@ -24,7 +24,7 @@ func writePreamble(buf io.StringWriter, name string) { WriteStringAndCheck(buf, fmt.Sprintf(` __%[1]s_debug() { - if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then + if [[ -n ${BASH_COMP_DEBUG_FILE:-} ]]; then echo "$*" >> "${BASH_COMP_DEBUG_FILE}" fi } @@ -134,7 +134,7 @@ __%[1]s_handle_go_custom_completion() $filteringCmd elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then # File completion for directories only - local subDir + local subdir # Use printf to strip any trailing newline subdir=$(printf "%%s" "${out[0]}") if [ -n "$subdir" ]; then @@ -187,13 +187,19 @@ __%[1]s_handle_reply() PREFIX="" cur="${cur#*=}" ${flags_completion[${index}]} - if [ -n "${ZSH_VERSION}" ]; then + if [ -n "${ZSH_VERSION:-}" ]; then # zsh completion needs --flag= prefix eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )" fi fi fi - return 0; + + if [[ -z "${flag_parsing_disabled}" ]]; then + # If flag parsing is enabled, we have completed the flags and can return. + # If flag parsing is disabled, we may not know all (or any) of the flags, so we fallthrough + # to possibly call handle_go_custom_completion. + return 0; + fi ;; esac @@ -232,13 +238,13 @@ __%[1]s_handle_reply() fi if [[ ${#COMPREPLY[@]} -eq 0 ]]; then - if declare -F __%[1]s_custom_func >/dev/null; then - # try command name qualified custom func - __%[1]s_custom_func - else - # otherwise fall back to unqualified for compatibility - declare -F __custom_func >/dev/null && __custom_func - fi + if declare -F __%[1]s_custom_func >/dev/null; then + # try command name qualified custom func + __%[1]s_custom_func + else + # otherwise fall back to unqualified for compatibility + declare -F __custom_func >/dev/null && __custom_func + fi fi # available in bash-completion >= 2, not always present on macOS @@ -272,7 +278,7 @@ __%[1]s_handle_flag() # if a command required a flag, and we found it, unset must_have_one_flag() local flagname=${words[c]} - local flagvalue + local flagvalue="" # if the word contained an = if [[ ${words[c]} == *"="* ]]; then flagvalue=${flagname#*=} # take in as flagvalue after the = @@ -291,7 +297,7 @@ __%[1]s_handle_flag() # keep flag value with flagname as flaghash # flaghash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then if [ -n "${flagvalue}" ] ; then flaghash[${flagname}]=${flagvalue} elif [ -n "${words[ $((c+1)) ]}" ] ; then @@ -303,7 +309,7 @@ __%[1]s_handle_flag() # skip the argument to a two word flag if [[ ${words[c]} != *"="* ]] && __%[1]s_contains_word "${words[c]}" "${two_word_flags[@]}"; then - __%[1]s_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" + __%[1]s_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" c=$((c+1)) # if we are looking for a flags value, don't show commands if [[ $c -eq $cword ]]; then @@ -363,7 +369,7 @@ __%[1]s_handle_word() __%[1]s_handle_command elif __%[1]s_contains_word "${words[c]}" "${command_aliases[@]}"; then # aliashash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then words[c]=${aliashash[${words[c]}]} __%[1]s_handle_command else @@ -394,6 +400,7 @@ func writePostscript(buf io.StringWriter, name string) { fi local c=0 + local flag_parsing_disabled= local flags=() local two_word_flags=() local local_nonpersistent_flags=() @@ -403,8 +410,8 @@ func writePostscript(buf io.StringWriter, name string) { local command_aliases=() local must_have_one_flag=() local must_have_one_noun=() - local has_completion_function - local last_command + local has_completion_function="" + local last_command="" local nouns=() local noun_aliases=() @@ -535,6 +542,11 @@ func writeFlags(buf io.StringWriter, cmd *Command) { flags_completion=() `) + + if cmd.DisableFlagParsing { + WriteStringAndCheck(buf, " flag_parsing_disabled=1\n") + } + localNonPersistentFlags := cmd.LocalNonPersistentFlags() cmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { if nonCompletableFlag(flag) { @@ -609,7 +621,7 @@ func writeCmdAliases(buf io.StringWriter, cmd *Command) { sort.Strings(cmd.Aliases) - WriteStringAndCheck(buf, fmt.Sprint(` if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then`, "\n")) + WriteStringAndCheck(buf, fmt.Sprint(` if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then`, "\n")) for _, value := range cmd.Aliases { WriteStringAndCheck(buf, fmt.Sprintf(" command_aliases+=(%q)\n", value)) WriteStringAndCheck(buf, fmt.Sprintf(" aliashash[%q]=%q\n", value, cmd.Name())) diff --git a/vendor/github.com/spf13/cobra/bash_completionsV2.go b/vendor/github.com/spf13/cobra/bash_completionsV2.go index 8859b57c..82d26c17 100644 --- a/vendor/github.com/spf13/cobra/bash_completionsV2.go +++ b/vendor/github.com/spf13/cobra/bash_completionsV2.go @@ -138,13 +138,42 @@ __%[1]s_process_completion_results() { _filedir -d fi else - __%[1]s_handle_standard_completion_case + __%[1]s_handle_completion_types fi __%[1]s_handle_special_char "$cur" : __%[1]s_handle_special_char "$cur" = } +__%[1]s_handle_completion_types() { + __%[1]s_debug "__%[1]s_handle_completion_types: COMP_TYPE is $COMP_TYPE" + + case $COMP_TYPE in + 37|42) + # Type: menu-complete/menu-complete-backward and insert-completions + # If the user requested inserting one completion at a time, or all + # completions at once on the command-line we must remove the descriptions. + # https://github.com/spf13/cobra/issues/1508 + local tab comp + tab=$(printf '\t') + while IFS='' read -r comp; do + # Strip any description + comp=${comp%%%%$tab*} + # Only consider the completions that match + comp=$(compgen -W "$comp" -- "$cur") + if [ -n "$comp" ]; then + COMPREPLY+=("$comp") + fi + done < <(printf "%%s\n" "${out[@]}") + ;; + + *) + # Type: complete (normal completion) + __%[1]s_handle_standard_completion_case + ;; + esac +} + __%[1]s_handle_standard_completion_case() { local tab comp tab=$(printf '\t') diff --git a/vendor/github.com/spf13/cobra/command_notwin.go b/vendor/github.com/spf13/cobra/command_notwin.go index 6159c1cc..bb5dad90 100644 --- a/vendor/github.com/spf13/cobra/command_notwin.go +++ b/vendor/github.com/spf13/cobra/command_notwin.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows package cobra diff --git a/vendor/github.com/spf13/cobra/command_win.go b/vendor/github.com/spf13/cobra/command_win.go index 8768b173..a84f5a82 100644 --- a/vendor/github.com/spf13/cobra/command_win.go +++ b/vendor/github.com/spf13/cobra/command_win.go @@ -1,3 +1,4 @@ +//go:build windows // +build windows package cobra diff --git a/vendor/github.com/spf13/cobra/completions.go b/vendor/github.com/spf13/cobra/completions.go index b849b9c8..9ecd56a4 100644 --- a/vendor/github.com/spf13/cobra/completions.go +++ b/vendor/github.com/spf13/cobra/completions.go @@ -93,6 +93,8 @@ type CompletionOptions struct { // DisableDescriptions turns off all completion descriptions for shells // that support them DisableDescriptions bool + // HiddenDefaultCmd makes the default 'completion' command hidden + HiddenDefaultCmd bool } // NoFileCompletions can be used to disable file completion for commands that should @@ -226,7 +228,17 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi if c.Root().TraverseChildren { finalCmd, finalArgs, err = c.Root().Traverse(trimmedArgs) } else { - finalCmd, finalArgs, err = c.Root().Find(trimmedArgs) + // For Root commands that don't specify any value for their Args fields, when we call + // Find(), if those Root commands don't have any sub-commands, they will accept arguments. + // However, because we have added the __complete sub-command in the current code path, the + // call to Find() -> legacyArgs() will return an error if there are any arguments. + // To avoid this, we first remove the __complete command to get back to having no sub-commands. + rootCmd := c.Root() + if len(rootCmd.Commands()) == 1 { + rootCmd.RemoveCommand(c) + } + + finalCmd, finalArgs, err = rootCmd.Find(trimmedArgs) } if err != nil { // Unable to find the real command. E.g., someInvalidCmd @@ -266,6 +278,12 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi } } + // We only remove the flags from the arguments if DisableFlagParsing is not set. + // This is important for commands which have requested to do their own flag completion. + if !finalCmd.DisableFlagParsing { + finalArgs = finalCmd.Flags().Args() + } + if flag != nil && flagCompletion { // Check if we are completing a flag value subject to annotations if validExts, present := flag.Annotations[BashCompFilenameExt]; present { @@ -290,12 +308,16 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi } } + var completions []string + var directive ShellCompDirective + + // Note that we want to perform flagname completion even if finalCmd.DisableFlagParsing==true; + // doing this allows for completion of persistant flag names even for commands that disable flag parsing. + // // When doing completion of a flag name, as soon as an argument starts with // a '-' we know it is a flag. We cannot use isFlagArg() here as it requires // the flag name to be complete if flag == nil && len(toComplete) > 0 && toComplete[0] == '-' && !strings.Contains(toComplete, "=") && flagCompletion { - var completions []string - // First check for required flags completions = completeRequireFlags(finalCmd, toComplete) @@ -322,86 +344,86 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi }) } - directive := ShellCompDirectiveNoFileComp + directive = ShellCompDirectiveNoFileComp if len(completions) == 1 && strings.HasSuffix(completions[0], "=") { // If there is a single completion, the shell usually adds a space // after the completion. We don't want that if the flag ends with an = directive = ShellCompDirectiveNoSpace } - return finalCmd, completions, directive, nil - } - // We only remove the flags from the arguments if DisableFlagParsing is not set. - // This is important for commands which have requested to do their own flag completion. - if !finalCmd.DisableFlagParsing { - finalArgs = finalCmd.Flags().Args() - } - - var completions []string - directive := ShellCompDirectiveDefault - if flag == nil { - foundLocalNonPersistentFlag := false - // If TraverseChildren is true on the root command we don't check for - // local flags because we can use a local flag on a parent command - if !finalCmd.Root().TraverseChildren { - // Check if there are any local, non-persistent flags on the command-line - localNonPersistentFlags := finalCmd.LocalNonPersistentFlags() - finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { - if localNonPersistentFlags.Lookup(flag.Name) != nil && flag.Changed { - foundLocalNonPersistentFlag = true - } - }) + if !finalCmd.DisableFlagParsing { + // If DisableFlagParsing==false, we have completed the flags as known by Cobra; + // we can return what we found. + // If DisableFlagParsing==true, Cobra may not be aware of all flags, so we + // let the logic continue to see if ValidArgsFunction needs to be called. + return finalCmd, completions, directive, nil } + } else { + directive = ShellCompDirectiveDefault + if flag == nil { + foundLocalNonPersistentFlag := false + // If TraverseChildren is true on the root command we don't check for + // local flags because we can use a local flag on a parent command + if !finalCmd.Root().TraverseChildren { + // Check if there are any local, non-persistent flags on the command-line + localNonPersistentFlags := finalCmd.LocalNonPersistentFlags() + finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { + if localNonPersistentFlags.Lookup(flag.Name) != nil && flag.Changed { + foundLocalNonPersistentFlag = true + } + }) + } - // Complete subcommand names, including the help command - if len(finalArgs) == 0 && !foundLocalNonPersistentFlag { - // We only complete sub-commands if: - // - there are no arguments on the command-line and - // - there are no local, non-persistent flags on the command-line or TraverseChildren is true - for _, subCmd := range finalCmd.Commands() { - if subCmd.IsAvailableCommand() || subCmd == finalCmd.helpCommand { - if strings.HasPrefix(subCmd.Name(), toComplete) { - completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) + // Complete subcommand names, including the help command + if len(finalArgs) == 0 && !foundLocalNonPersistentFlag { + // We only complete sub-commands if: + // - there are no arguments on the command-line and + // - there are no local, non-persistent flags on the command-line or TraverseChildren is true + for _, subCmd := range finalCmd.Commands() { + if subCmd.IsAvailableCommand() || subCmd == finalCmd.helpCommand { + if strings.HasPrefix(subCmd.Name(), toComplete) { + completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) + } + directive = ShellCompDirectiveNoFileComp } - directive = ShellCompDirectiveNoFileComp } } - } - // Complete required flags even without the '-' prefix - completions = append(completions, completeRequireFlags(finalCmd, toComplete)...) - - // Always complete ValidArgs, even if we are completing a subcommand name. - // This is for commands that have both subcommands and ValidArgs. - if len(finalCmd.ValidArgs) > 0 { - if len(finalArgs) == 0 { - // ValidArgs are only for the first argument - for _, validArg := range finalCmd.ValidArgs { - if strings.HasPrefix(validArg, toComplete) { - completions = append(completions, validArg) + // Complete required flags even without the '-' prefix + completions = append(completions, completeRequireFlags(finalCmd, toComplete)...) + + // Always complete ValidArgs, even if we are completing a subcommand name. + // This is for commands that have both subcommands and ValidArgs. + if len(finalCmd.ValidArgs) > 0 { + if len(finalArgs) == 0 { + // ValidArgs are only for the first argument + for _, validArg := range finalCmd.ValidArgs { + if strings.HasPrefix(validArg, toComplete) { + completions = append(completions, validArg) + } } - } - directive = ShellCompDirectiveNoFileComp - - // If no completions were found within commands or ValidArgs, - // see if there are any ArgAliases that should be completed. - if len(completions) == 0 { - for _, argAlias := range finalCmd.ArgAliases { - if strings.HasPrefix(argAlias, toComplete) { - completions = append(completions, argAlias) + directive = ShellCompDirectiveNoFileComp + + // If no completions were found within commands or ValidArgs, + // see if there are any ArgAliases that should be completed. + if len(completions) == 0 { + for _, argAlias := range finalCmd.ArgAliases { + if strings.HasPrefix(argAlias, toComplete) { + completions = append(completions, argAlias) + } } } } + + // If there are ValidArgs specified (even if they don't match), we stop completion. + // Only one of ValidArgs or ValidArgsFunction can be used for a single command. + return finalCmd, completions, directive, nil } - // If there are ValidArgs specified (even if they don't match), we stop completion. - // Only one of ValidArgs or ValidArgsFunction can be used for a single command. - return finalCmd, completions, directive, nil + // Let the logic continue so as to add any ValidArgsFunction completions, + // even if we already found sub-commands. + // This is for commands that have subcommands but also specify a ValidArgsFunction. } - - // Let the logic continue so as to add any ValidArgsFunction completions, - // even if we already found sub-commands. - // This is for commands that have subcommands but also specify a ValidArgsFunction. } // Find the completion function for the flag or command @@ -589,39 +611,43 @@ func (c *Command) initDefaultCompletionCmd() { completionCmd := &Command{ Use: compCmdName, - Short: "generate the autocompletion script for the specified shell", - Long: fmt.Sprintf(` -Generate the autocompletion script for %[1]s for the specified shell. + Short: "Generate the autocompletion script for the specified shell", + Long: fmt.Sprintf(`Generate the autocompletion script for %[1]s for the specified shell. See each sub-command's help for details on how to use the generated script. `, c.Root().Name()), Args: NoArgs, ValidArgsFunction: NoFileCompletions, + Hidden: c.CompletionOptions.HiddenDefaultCmd, } c.AddCommand(completionCmd) out := c.OutOrStdout() noDesc := c.CompletionOptions.DisableDescriptions - shortDesc := "generate the autocompletion script for %s" + shortDesc := "Generate the autocompletion script for %s" bash := &Command{ Use: "bash", Short: fmt.Sprintf(shortDesc, "bash"), - Long: fmt.Sprintf(` -Generate the autocompletion script for the bash shell. + Long: fmt.Sprintf(`Generate the autocompletion script for the bash shell. This script depends on the 'bash-completion' package. If it is not installed already, you can install it via your OS's package manager. To load completions in your current shell session: -$ source <(%[1]s completion bash) + + source <(%[1]s completion bash) To load completions for every new session, execute once: -Linux: - $ %[1]s completion bash > /etc/bash_completion.d/%[1]s -MacOS: - $ %[1]s completion bash > /usr/local/etc/bash_completion.d/%[1]s + +#### Linux: + + %[1]s completion bash > /etc/bash_completion.d/%[1]s + +#### macOS: + + %[1]s completion bash > /usr/local/etc/bash_completion.d/%[1]s You will need to start a new shell for this setup to take effect. - `, c.Root().Name()), +`, c.Root().Name()), Args: NoArgs, DisableFlagsInUseLine: true, ValidArgsFunction: NoFileCompletions, @@ -636,19 +662,22 @@ You will need to start a new shell for this setup to take effect. zsh := &Command{ Use: "zsh", Short: fmt.Sprintf(shortDesc, "zsh"), - Long: fmt.Sprintf(` -Generate the autocompletion script for the zsh shell. + Long: fmt.Sprintf(`Generate the autocompletion script for the zsh shell. If shell completion is not already enabled in your environment you will need to enable it. You can execute the following once: -$ echo "autoload -U compinit; compinit" >> ~/.zshrc + echo "autoload -U compinit; compinit" >> ~/.zshrc To load completions for every new session, execute once: -# Linux: -$ %[1]s completion zsh > "${fpath[1]}/_%[1]s" -# macOS: -$ %[1]s completion zsh > /usr/local/share/zsh/site-functions/_%[1]s + +#### Linux: + + %[1]s completion zsh > "${fpath[1]}/_%[1]s" + +#### macOS: + + %[1]s completion zsh > /usr/local/share/zsh/site-functions/_%[1]s You will need to start a new shell for this setup to take effect. `, c.Root().Name()), @@ -668,14 +697,15 @@ You will need to start a new shell for this setup to take effect. fish := &Command{ Use: "fish", Short: fmt.Sprintf(shortDesc, "fish"), - Long: fmt.Sprintf(` -Generate the autocompletion script for the fish shell. + Long: fmt.Sprintf(`Generate the autocompletion script for the fish shell. To load completions in your current shell session: -$ %[1]s completion fish | source + + %[1]s completion fish | source To load completions for every new session, execute once: -$ %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish + + %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish You will need to start a new shell for this setup to take effect. `, c.Root().Name()), @@ -692,11 +722,11 @@ You will need to start a new shell for this setup to take effect. powershell := &Command{ Use: "powershell", Short: fmt.Sprintf(shortDesc, "powershell"), - Long: fmt.Sprintf(` -Generate the autocompletion script for powershell. + Long: fmt.Sprintf(`Generate the autocompletion script for powershell. To load completions in your current shell session: -PS C:\> %[1]s completion powershell | Out-String | Invoke-Expression + + %[1]s completion powershell | Out-String | Invoke-Expression To load completions for every new session, add the output of the above command to your powershell profile. diff --git a/vendor/github.com/spf13/cobra/powershell_completions.go b/vendor/github.com/spf13/cobra/powershell_completions.go index 59234c09..62d719f0 100644 --- a/vendor/github.com/spf13/cobra/powershell_completions.go +++ b/vendor/github.com/spf13/cobra/powershell_completions.go @@ -50,7 +50,7 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { if ($Command.Length -gt $CursorPosition) { $Command=$Command.Substring(0,$CursorPosition) } - __%[1]s_debug "Truncated command: $Command" + __%[1]s_debug "Truncated command: $Command" $ShellCompDirectiveError=%[3]d $ShellCompDirectiveNoSpace=%[4]d @@ -58,7 +58,7 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { $ShellCompDirectiveFilterFileExt=%[6]d $ShellCompDirectiveFilterDirs=%[7]d - # Prepare the command to request completions for the program. + # Prepare the command to request completions for the program. # Split the command at the first space to separate the program and arguments. $Program,$Arguments = $Command.Split(" ",2) $RequestComp="$Program %[2]s $Arguments" @@ -233,7 +233,7 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { Default { # Like MenuComplete but we don't want to add a space here because # the user need to press space anyway to get the completion. - # Description will not be shown because thats not possible with TabCompleteNext + # Description will not be shown because that's not possible with TabCompleteNext [System.Management.Automation.CompletionResult]::new($($comp.Name | __%[1]s_escapeStringWithSpecialChars), "$($comp.Name)", 'ParameterValue', "$($comp.Description)") } } diff --git a/vendor/github.com/spf13/cobra/projects_using_cobra.md b/vendor/github.com/spf13/cobra/projects_using_cobra.md index d98a71e3..9674c348 100644 --- a/vendor/github.com/spf13/cobra/projects_using_cobra.md +++ b/vendor/github.com/spf13/cobra/projects_using_cobra.md @@ -4,6 +4,7 @@ - [Bleve](http://www.blevesearch.com/) - [CockroachDB](http://www.cockroachlabs.com/) - [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) +- [Datree](https://github.com/datreeio/datree) - [Delve](https://github.com/derekparker/delve) - [Docker (distribution)](https://github.com/docker/distribution) - [Etcd](https://etcd.io/) @@ -14,25 +15,37 @@ - [GitHub Labeler](https://github.com/erdaltsksn/gh-label) - [Golangci-lint](https://golangci-lint.run) - [GopherJS](http://www.gopherjs.org/) +- [GoReleaser](https://goreleaser.com) - [Helm](https://helm.sh) - [Hugo](https://gohugo.io) +- [Infracost](https://github.com/infracost/infracost) - [Istio](https://istio.io) - [Kool](https://github.com/kool-dev/kool) - [Kubernetes](http://kubernetes.io/) - [Linkerd](https://linkerd.io/) - [Mattermost-server](https://github.com/mattermost/mattermost-server) +- [Mercure](https://mercure.rocks/) +- [Meroxa CLI](https://github.com/meroxa/cli) - [Metal Stack CLI](https://github.com/metal-stack/metalctl) - [Moby (former Docker)](https://github.com/moby/moby) +- [Moldy](https://github.com/Moldy-Community/moldy) +- [Multi-gitter](https://github.com/lindell/multi-gitter) - [Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack) +- [nFPM](https://nfpm.goreleaser.com) - [OpenShift](https://www.openshift.com/) - [Ory Hydra](https://github.com/ory/hydra) - [Ory Kratos](https://github.com/ory/kratos) +- [Pixie](https://github.com/pixie-io/pixie) - [Pouch](https://github.com/alibaba/pouch) - [ProjectAtomic (enterprise)](http://www.projectatomic.io/) - [Prototool](https://github.com/uber/prototool) +- [QRcp](https://github.com/claudiodangelis/qrcp) - [Random](https://github.com/erdaltsksn/random) - [Rclone](https://rclone.org/) +- [Scaleway CLI](https://github.com/scaleway/scaleway-cli) - [Skaffold](https://skaffold.dev/) - [Tendermint](https://github.com/tendermint/tendermint) - [Twitch CLI](https://github.com/twitchdev/twitch-cli) +- [UpCloud CLI (`upctl`)](https://github.com/UpCloudLtd/upcloud-cli) +- VMware's [Tanzu Community Edition](https://github.com/vmware-tanzu/community-edition) & [Tanzu Framework](https://github.com/vmware-tanzu/tanzu-framework) - [Werf](https://werf.io/) diff --git a/vendor/github.com/spf13/cobra/shell_completions.md b/vendor/github.com/spf13/cobra/shell_completions.md index 4ba06a11..33a4c65a 100644 --- a/vendor/github.com/spf13/cobra/shell_completions.md +++ b/vendor/github.com/spf13/cobra/shell_completions.md @@ -16,10 +16,12 @@ If you do not wish to use the default `completion` command, you can choose to provide your own, which will take precedence over the default one. (This also provides backwards-compatibility with programs that already have their own `completion` command.) -If you are using the generator, you can create a completion command by running +If you are using the `cobra-cli` generator, +which can be found at [spf13/cobra-cli](https://github.com/spf13/cobra-cli), +you can create a completion command by running ```bash -cobra add completion +cobra-cli add completion ``` and then modifying the generated `cmd/completion.go` file to look something like this (writing the shell script to stdout allows the most flexible use): @@ -28,17 +30,17 @@ and then modifying the generated `cmd/completion.go` file to look something like var completionCmd = &cobra.Command{ Use: "completion [bash|zsh|fish|powershell]", Short: "Generate completion script", - Long: `To load completions: + Long: fmt.Sprintf(`To load completions: Bash: - $ source <(yourprogram completion bash) + $ source <(%[1]s completion bash) # To load completions for each session, execute once: # Linux: - $ yourprogram completion bash > /etc/bash_completion.d/yourprogram + $ %[1]s completion bash > /etc/bash_completion.d/%[1]s # macOS: - $ yourprogram completion bash > /usr/local/etc/bash_completion.d/yourprogram + $ %[1]s completion bash > /usr/local/etc/bash_completion.d/%[1]s Zsh: @@ -48,25 +50,25 @@ Zsh: $ echo "autoload -U compinit; compinit" >> ~/.zshrc # To load completions for each session, execute once: - $ yourprogram completion zsh > "${fpath[1]}/_yourprogram" + $ %[1]s completion zsh > "${fpath[1]}/_%[1]s" # You will need to start a new shell for this setup to take effect. fish: - $ yourprogram completion fish | source + $ %[1]s completion fish | source # To load completions for each session, execute once: - $ yourprogram completion fish > ~/.config/fish/completions/yourprogram.fish + $ %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish PowerShell: - PS> yourprogram completion powershell | Out-String | Invoke-Expression + PS> %[1]s completion powershell | Out-String | Invoke-Expression # To load completions for every new session, run: - PS> yourprogram completion powershell > yourprogram.ps1 + PS> %[1]s completion powershell > %[1]s.ps1 # and source this file from your PowerShell profile. -`, +`,cmd.Root().Name()), DisableFlagsInUseLine: true, ValidArgs: []string{"bash", "zsh", "fish", "powershell"}, Args: cobra.ExactValidArgs(1), diff --git a/vendor/github.com/spf13/cobra/user_guide.md b/vendor/github.com/spf13/cobra/user_guide.md index 311abce2..4a3c2b0d 100644 --- a/vendor/github.com/spf13/cobra/user_guide.md +++ b/vendor/github.com/spf13/cobra/user_guide.md @@ -29,10 +29,10 @@ func main() { ## Using the Cobra Generator -Cobra provides its own program that will create your application and add any +Cobra-CLI is its own program that will create your application and add any commands you want. It's the easiest way to incorporate Cobra into your application. -[Here](https://github.com/spf13/cobra/blob/master/cobra/README.md) you can find more information about it. +For complete details on using the Cobra generator, please refer to [The Cobra-CLI Generator README](https://github.com/spf13/cobra-cli/blob/master/README.md) ## Using the Cobra Library @@ -86,7 +86,7 @@ var ( userLicense string rootCmd = &cobra.Command{ - Use: "cobra", + Use: "cobra-cli", Short: "A generator for Cobra based Applications", Long: `Cobra is a CLI library for Go that empowers applications. This application is a tool to generate the needed files @@ -281,7 +281,7 @@ func init() { In this example, the persistent flag `author` is bound with `viper`. **Note**: the variable `author` will not be set to the value from config, -when the `--author` flag is not provided by user. +when the `--author` flag is provided by user. More in [viper documentation](https://github.com/spf13/viper#working-with-flags). @@ -315,6 +315,7 @@ The following validators are built in: - `ExactArgs(int)` - the command will report an error if there are not exactly N positional args. - `ExactValidArgs(int)` - the command will report an error if there are not exactly N positional args OR if there are any positional args that are not in the `ValidArgs` field of `Command` - `RangeArgs(min, max)` - the command will report an error if the number of args is not between the minimum and maximum number of expected args. +- `MatchAll(pargs ...PositionalArgs)` - enables combining existing checks with arbitrary other checks (e.g. you want to check the ExactArgs length along with other qualities). An example of setting the custom validator: diff --git a/vendor/github.com/spf13/cobra/zsh_completions.go b/vendor/github.com/spf13/cobra/zsh_completions.go index 1afec30e..624adab5 100644 --- a/vendor/github.com/spf13/cobra/zsh_completions.go +++ b/vendor/github.com/spf13/cobra/zsh_completions.go @@ -202,7 +202,7 @@ _%[1]s() _arguments '*:filename:'"$filteringCmd" elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then # File completion for directories only - local subDir + local subdir subdir="${completions[1]}" if [ -n "$subdir" ]; then __%[1]s_debug "Listing directories in $subdir" @@ -250,7 +250,7 @@ _%[1]s() # don't run the completion function when being source-ed or eval-ed if [ "$funcstack[1]" = "_%[1]s" ]; then - _%[1]s + _%[1]s fi `, name, compCmd, ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, diff --git a/vendor/go.uber.org/zap/.readme.tmpl b/vendor/go.uber.org/zap/.readme.tmpl index 3154a1e6..92aa65d6 100644 --- a/vendor/go.uber.org/zap/.readme.tmpl +++ b/vendor/go.uber.org/zap/.readme.tmpl @@ -96,14 +96,14 @@ Released under the [MIT License](LICENSE.txt). 1 In particular, keep in mind that we may be benchmarking against slightly older versions of other packages. Versions are -pinned in zap's [glide.lock][] file. [↩](#anchor-versions) +pinned in the [benchmarks/go.mod][] file. [↩](#anchor-versions) -[doc-img]: https://godoc.org/go.uber.org/zap?status.svg -[doc]: https://godoc.org/go.uber.org/zap -[ci-img]: https://travis-ci.com/uber-go/zap.svg?branch=master -[ci]: https://travis-ci.com/uber-go/zap +[doc-img]: https://pkg.go.dev/badge/go.uber.org/zap +[doc]: https://pkg.go.dev/go.uber.org/zap +[ci-img]: https://github.com/uber-go/zap/actions/workflows/go.yml/badge.svg +[ci]: https://github.com/uber-go/zap/actions/workflows/go.yml [cov-img]: https://codecov.io/gh/uber-go/zap/branch/master/graph/badge.svg [cov]: https://codecov.io/gh/uber-go/zap [benchmarking suite]: https://github.com/uber-go/zap/tree/master/benchmarks -[glide.lock]: https://github.com/uber-go/zap/blob/master/glide.lock +[benchmarks/go.mod]: https://github.com/uber-go/zap/blob/master/benchmarks/go.mod diff --git a/vendor/go.uber.org/zap/CHANGELOG.md b/vendor/go.uber.org/zap/CHANGELOG.md index 794ee303..1793b08c 100644 --- a/vendor/go.uber.org/zap/CHANGELOG.md +++ b/vendor/go.uber.org/zap/CHANGELOG.md @@ -3,9 +3,57 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## 1.21.0 (7 Feb 2022) + +Enhancements: +* [#1047][]: Add `zapcore.ParseLevel` to parse a `Level` from a string. +* [#1048][]: Add `zap.ParseAtomicLevel` to parse an `AtomicLevel` from a + string. + +Bugfixes: +* [#1058][]: Fix panic in JSON encoder when `EncodeLevel` is unset. + +Other changes: +* [#1052][]: Improve encoding performance when the `AddCaller` and + `AddStacktrace` options are used together. + +[#1047]: https://github.com/uber-go/zap/pull/1047 +[#1048]: https://github.com/uber-go/zap/pull/1048 +[#1052]: https://github.com/uber-go/zap/pull/1052 +[#1058]: https://github.com/uber-go/zap/pull/1058 + +Thanks to @aerosol and @Techassi for their contributions to this release. + +## 1.20.0 (4 Jan 2022) + +Enhancements: +* [#989][]: Add `EncoderConfig.SkipLineEnding` flag to disable adding newline + characters between log statements. +* [#1039][]: Add `EncoderConfig.NewReflectedEncoder` field to customize JSON + encoding of reflected log fields. + +Bugfixes: +* [#1011][]: Fix inaccurate precision when encoding complex64 as JSON. +* [#554][], [#1017][]: Close JSON namespaces opened in `MarshalLogObject` + methods when the methods return. +* [#1033][]: Avoid panicking in Sampler core if `thereafter` is zero. + +Other changes: +* [#1028][]: Drop support for Go < 1.15. + +[#554]: https://github.com/uber-go/zap/pull/554 +[#989]: https://github.com/uber-go/zap/pull/989 +[#1011]: https://github.com/uber-go/zap/pull/1011 +[#1017]: https://github.com/uber-go/zap/pull/1017 +[#1028]: https://github.com/uber-go/zap/pull/1028 +[#1033]: https://github.com/uber-go/zap/pull/1033 +[#1039]: https://github.com/uber-go/zap/pull/1039 + +Thanks to @psrajat, @lruggieri, @sammyrnycreal for their contributions to this release. + ## 1.19.1 (8 Sep 2021) -### Fixed +Bugfixes: * [#1001][]: JSON: Fix complex number encoding with negative imaginary part. Thanks to @hemantjadon. * [#1003][]: JSON: Fix inaccurate precision when encoding float32. diff --git a/vendor/go.uber.org/zap/README.md b/vendor/go.uber.org/zap/README.md index 1e64d6cf..9c9dfe1e 100644 --- a/vendor/go.uber.org/zap/README.md +++ b/vendor/go.uber.org/zap/README.md @@ -66,38 +66,38 @@ Log a message and 10 fields: | Package | Time | Time % to zap | Objects Allocated | | :------ | :--: | :-----------: | :---------------: | -| :zap: zap | 862 ns/op | +0% | 5 allocs/op -| :zap: zap (sugared) | 1250 ns/op | +45% | 11 allocs/op -| zerolog | 4021 ns/op | +366% | 76 allocs/op -| go-kit | 4542 ns/op | +427% | 105 allocs/op -| apex/log | 26785 ns/op | +3007% | 115 allocs/op -| logrus | 29501 ns/op | +3322% | 125 allocs/op -| log15 | 29906 ns/op | +3369% | 122 allocs/op +| :zap: zap | 2900 ns/op | +0% | 5 allocs/op +| :zap: zap (sugared) | 3475 ns/op | +20% | 10 allocs/op +| zerolog | 10639 ns/op | +267% | 32 allocs/op +| go-kit | 14434 ns/op | +398% | 59 allocs/op +| logrus | 17104 ns/op | +490% | 81 allocs/op +| apex/log | 32424 ns/op | +1018% | 66 allocs/op +| log15 | 33579 ns/op | +1058% | 76 allocs/op Log a message with a logger that already has 10 fields of context: | Package | Time | Time % to zap | Objects Allocated | | :------ | :--: | :-----------: | :---------------: | -| :zap: zap | 126 ns/op | +0% | 0 allocs/op -| :zap: zap (sugared) | 187 ns/op | +48% | 2 allocs/op -| zerolog | 88 ns/op | -30% | 0 allocs/op -| go-kit | 5087 ns/op | +3937% | 103 allocs/op -| log15 | 18548 ns/op | +14621% | 73 allocs/op -| apex/log | 26012 ns/op | +20544% | 104 allocs/op -| logrus | 27236 ns/op | +21516% | 113 allocs/op +| :zap: zap | 373 ns/op | +0% | 0 allocs/op +| :zap: zap (sugared) | 452 ns/op | +21% | 1 allocs/op +| zerolog | 288 ns/op | -23% | 0 allocs/op +| go-kit | 11785 ns/op | +3060% | 58 allocs/op +| logrus | 19629 ns/op | +5162% | 70 allocs/op +| log15 | 21866 ns/op | +5762% | 72 allocs/op +| apex/log | 30890 ns/op | +8182% | 55 allocs/op Log a static string, without any context or `printf`-style templating: | Package | Time | Time % to zap | Objects Allocated | | :------ | :--: | :-----------: | :---------------: | -| :zap: zap | 118 ns/op | +0% | 0 allocs/op -| :zap: zap (sugared) | 191 ns/op | +62% | 2 allocs/op -| zerolog | 93 ns/op | -21% | 0 allocs/op -| go-kit | 280 ns/op | +137% | 11 allocs/op -| standard library | 499 ns/op | +323% | 2 allocs/op -| apex/log | 1990 ns/op | +1586% | 10 allocs/op -| logrus | 3129 ns/op | +2552% | 24 allocs/op -| log15 | 3887 ns/op | +3194% | 23 allocs/op +| :zap: zap | 381 ns/op | +0% | 0 allocs/op +| :zap: zap (sugared) | 410 ns/op | +8% | 1 allocs/op +| zerolog | 369 ns/op | -3% | 0 allocs/op +| standard library | 385 ns/op | +1% | 2 allocs/op +| go-kit | 606 ns/op | +59% | 11 allocs/op +| logrus | 1730 ns/op | +354% | 25 allocs/op +| apex/log | 1998 ns/op | +424% | 7 allocs/op +| log15 | 4546 ns/op | +1093% | 22 allocs/op ## Development Status: Stable diff --git a/vendor/go.uber.org/zap/global.go b/vendor/go.uber.org/zap/global.go index c1ac0507..3cb46c9e 100644 --- a/vendor/go.uber.org/zap/global.go +++ b/vendor/go.uber.org/zap/global.go @@ -31,6 +31,7 @@ import ( ) const ( + _stdLogDefaultDepth = 1 _loggerWriterDepth = 2 _programmerErrorTemplate = "You've found a bug in zap! Please file a bug at " + "https://github.com/uber-go/zap/issues/new and reference this error: %v" diff --git a/vendor/go.uber.org/zap/global_go112.go b/vendor/go.uber.org/zap/global_go112.go deleted file mode 100644 index 6b5dbda8..00000000 --- a/vendor/go.uber.org/zap/global_go112.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) 2019 Uber Technologies, Inc. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -// See #682 for more information. -// +build go1.12 - -package zap - -const _stdLogDefaultDepth = 1 diff --git a/vendor/go.uber.org/zap/level.go b/vendor/go.uber.org/zap/level.go index 3567a9a1..8f86c430 100644 --- a/vendor/go.uber.org/zap/level.go +++ b/vendor/go.uber.org/zap/level.go @@ -86,6 +86,23 @@ func NewAtomicLevelAt(l zapcore.Level) AtomicLevel { return a } +// ParseAtomicLevel parses an AtomicLevel based on a lowercase or all-caps ASCII +// representation of the log level. If the provided ASCII representation is +// invalid an error is returned. +// +// This is particularly useful when dealing with text input to configure log +// levels. +func ParseAtomicLevel(text string) (AtomicLevel, error) { + a := NewAtomicLevel() + l, err := zapcore.ParseLevel(text) + if err != nil { + return a, err + } + + a.SetLevel(l) + return a, nil +} + // Enabled implements the zapcore.LevelEnabler interface, which allows the // AtomicLevel to be used in place of traditional static levels. func (lvl AtomicLevel) Enabled(l zapcore.Level) bool { diff --git a/vendor/go.uber.org/zap/logger.go b/vendor/go.uber.org/zap/logger.go index f116bd93..087c7422 100644 --- a/vendor/go.uber.org/zap/logger.go +++ b/vendor/go.uber.org/zap/logger.go @@ -24,9 +24,9 @@ import ( "fmt" "io/ioutil" "os" - "runtime" "strings" + "go.uber.org/zap/internal/bufferpool" "go.uber.org/zap/zapcore" ) @@ -259,8 +259,10 @@ func (log *Logger) clone() *Logger { } func (log *Logger) check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry { - // check must always be called directly by a method in the Logger interface - // (e.g., Check, Info, Fatal). + // Logger.check must always be called directly by a method in the + // Logger interface (e.g., Check, Info, Fatal). + // This skips Logger.check and the Info/Fatal/Check/etc. method that + // called it. const callerSkipOffset = 2 // Check the level first to reduce the cost of disabled log calls. @@ -307,42 +309,55 @@ func (log *Logger) check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry { // Thread the error output through to the CheckedEntry. ce.ErrorOutput = log.errorOutput - if log.addCaller { - frame, defined := getCallerFrame(log.callerSkip + callerSkipOffset) - if !defined { + + addStack := log.addStack.Enabled(ce.Level) + if !log.addCaller && !addStack { + return ce + } + + // Adding the caller or stack trace requires capturing the callers of + // this function. We'll share information between these two. + stackDepth := stacktraceFirst + if addStack { + stackDepth = stacktraceFull + } + stack := captureStacktrace(log.callerSkip+callerSkipOffset, stackDepth) + defer stack.Free() + + if stack.Count() == 0 { + if log.addCaller { fmt.Fprintf(log.errorOutput, "%v Logger.check error: failed to get caller\n", ent.Time.UTC()) log.errorOutput.Sync() } + return ce + } - ce.Entry.Caller = zapcore.EntryCaller{ - Defined: defined, + frame, more := stack.Next() + + if log.addCaller { + ce.Caller = zapcore.EntryCaller{ + Defined: frame.PC != 0, PC: frame.PC, File: frame.File, Line: frame.Line, Function: frame.Function, } } - if log.addStack.Enabled(ce.Entry.Level) { - ce.Entry.Stack = StackSkip("", log.callerSkip+callerSkipOffset).String - } - return ce -} + if addStack { + buffer := bufferpool.Get() + defer buffer.Free() -// getCallerFrame gets caller frame. The argument skip is the number of stack -// frames to ascend, with 0 identifying the caller of getCallerFrame. The -// boolean ok is false if it was not possible to recover the information. -// -// Note: This implementation is similar to runtime.Caller, but it returns the whole frame. -func getCallerFrame(skip int) (frame runtime.Frame, ok bool) { - const skipOffset = 2 // skip getCallerFrame and Callers - - pc := make([]uintptr, 1) - numFrames := runtime.Callers(skip+skipOffset, pc) - if numFrames < 1 { - return + stackfmt := newStackFormatter(buffer) + + // We've already extracted the first frame, so format that + // separately and defer to stackfmt for the rest. + stackfmt.FormatFrame(frame) + if more { + stackfmt.FormatStack(stack) + } + ce.Stack = buffer.String() } - frame, _ = runtime.CallersFrames(pc).Next() - return frame, frame.PC != 0 + return ce } diff --git a/vendor/go.uber.org/zap/stacktrace.go b/vendor/go.uber.org/zap/stacktrace.go index 0cf8c1dd..3d187fa5 100644 --- a/vendor/go.uber.org/zap/stacktrace.go +++ b/vendor/go.uber.org/zap/stacktrace.go @@ -24,62 +24,153 @@ import ( "runtime" "sync" + "go.uber.org/zap/buffer" "go.uber.org/zap/internal/bufferpool" ) -var ( - _stacktracePool = sync.Pool{ - New: func() interface{} { - return newProgramCounters(64) - }, - } +var _stacktracePool = sync.Pool{ + New: func() interface{} { + return &stacktrace{ + storage: make([]uintptr, 64), + } + }, +} + +type stacktrace struct { + pcs []uintptr // program counters; always a subslice of storage + frames *runtime.Frames + + // The size of pcs varies depending on requirements: + // it will be one if the only the first frame was requested, + // and otherwise it will reflect the depth of the call stack. + // + // storage decouples the slice we need (pcs) from the slice we pool. + // We will always allocate a reasonably large storage, but we'll use + // only as much of it as we need. + storage []uintptr +} + +// stacktraceDepth specifies how deep of a stack trace should be captured. +type stacktraceDepth int + +const ( + // stacktraceFirst captures only the first frame. + stacktraceFirst stacktraceDepth = iota + + // stacktraceFull captures the entire call stack, allocating more + // storage for it if needed. + stacktraceFull ) -func takeStacktrace(skip int) string { - buffer := bufferpool.Get() - defer buffer.Free() - programCounters := _stacktracePool.Get().(*programCounters) - defer _stacktracePool.Put(programCounters) - - var numFrames int - for { - // Skip the call to runtime.Callers and takeStacktrace so that the - // program counters start at the caller of takeStacktrace. - numFrames = runtime.Callers(skip+2, programCounters.pcs) - if numFrames < len(programCounters.pcs) { - break - } - // Don't put the too-short counter slice back into the pool; this lets - // the pool adjust if we consistently take deep stacktraces. - programCounters = newProgramCounters(len(programCounters.pcs) * 2) +// captureStacktrace captures a stack trace of the specified depth, skipping +// the provided number of frames. skip=0 identifies the caller of +// captureStacktrace. +// +// The caller must call Free on the returned stacktrace after using it. +func captureStacktrace(skip int, depth stacktraceDepth) *stacktrace { + stack := _stacktracePool.Get().(*stacktrace) + + switch depth { + case stacktraceFirst: + stack.pcs = stack.storage[:1] + case stacktraceFull: + stack.pcs = stack.storage } - i := 0 - frames := runtime.CallersFrames(programCounters.pcs[:numFrames]) + // Unlike other "skip"-based APIs, skip=0 identifies runtime.Callers + // itself. +2 to skip captureStacktrace and runtime.Callers. + numFrames := runtime.Callers( + skip+2, + stack.pcs, + ) - // Note: On the last iteration, frames.Next() returns false, with a valid - // frame, but we ignore this frame. The last frame is a a runtime frame which - // adds noise, since it's only either runtime.main or runtime.goexit. - for frame, more := frames.Next(); more; frame, more = frames.Next() { - if i != 0 { - buffer.AppendByte('\n') + // runtime.Callers truncates the recorded stacktrace if there is no + // room in the provided slice. For the full stack trace, keep expanding + // storage until there are fewer frames than there is room. + if depth == stacktraceFull { + pcs := stack.pcs + for numFrames == len(pcs) { + pcs = make([]uintptr, len(pcs)*2) + numFrames = runtime.Callers(skip+2, pcs) } - i++ - buffer.AppendString(frame.Function) - buffer.AppendByte('\n') - buffer.AppendByte('\t') - buffer.AppendString(frame.File) - buffer.AppendByte(':') - buffer.AppendInt(int64(frame.Line)) + + // Discard old storage instead of returning it to the pool. + // This will adjust the pool size over time if stack traces are + // consistently very deep. + stack.storage = pcs + stack.pcs = pcs[:numFrames] + } else { + stack.pcs = stack.pcs[:numFrames] } + stack.frames = runtime.CallersFrames(stack.pcs) + return stack +} + +// Free releases resources associated with this stacktrace +// and returns it back to the pool. +func (st *stacktrace) Free() { + st.frames = nil + st.pcs = nil + _stacktracePool.Put(st) +} + +// Count reports the total number of frames in this stacktrace. +// Count DOES NOT change as Next is called. +func (st *stacktrace) Count() int { + return len(st.pcs) +} + +// Next returns the next frame in the stack trace, +// and a boolean indicating whether there are more after it. +func (st *stacktrace) Next() (_ runtime.Frame, more bool) { + return st.frames.Next() +} + +func takeStacktrace(skip int) string { + stack := captureStacktrace(skip+1, stacktraceFull) + defer stack.Free() + + buffer := bufferpool.Get() + defer buffer.Free() + + stackfmt := newStackFormatter(buffer) + stackfmt.FormatStack(stack) return buffer.String() } -type programCounters struct { - pcs []uintptr +// stackFormatter formats a stack trace into a readable string representation. +type stackFormatter struct { + b *buffer.Buffer + nonEmpty bool // whehther we've written at least one frame already +} + +// newStackFormatter builds a new stackFormatter. +func newStackFormatter(b *buffer.Buffer) stackFormatter { + return stackFormatter{b: b} +} + +// FormatStack formats all remaining frames in the provided stacktrace -- minus +// the final runtime.main/runtime.goexit frame. +func (sf *stackFormatter) FormatStack(stack *stacktrace) { + // Note: On the last iteration, frames.Next() returns false, with a valid + // frame, but we ignore this frame. The last frame is a a runtime frame which + // adds noise, since it's only either runtime.main or runtime.goexit. + for frame, more := stack.Next(); more; frame, more = stack.Next() { + sf.FormatFrame(frame) + } } -func newProgramCounters(size int) *programCounters { - return &programCounters{make([]uintptr, size)} +// FormatFrame formats the given frame. +func (sf *stackFormatter) FormatFrame(frame runtime.Frame) { + if sf.nonEmpty { + sf.b.AppendByte('\n') + } + sf.nonEmpty = true + sf.b.AppendString(frame.Function) + sf.b.AppendByte('\n') + sf.b.AppendByte('\t') + sf.b.AppendString(frame.File) + sf.b.AppendByte(':') + sf.b.AppendInt(int64(frame.Line)) } diff --git a/vendor/go.uber.org/zap/zapcore/clock.go b/vendor/go.uber.org/zap/zapcore/clock.go index d2ea95b3..422fd82a 100644 --- a/vendor/go.uber.org/zap/zapcore/clock.go +++ b/vendor/go.uber.org/zap/zapcore/clock.go @@ -20,9 +20,7 @@ package zapcore -import ( - "time" -) +import "time" // DefaultClock is the default clock used by Zap in operations that require // time. This clock uses the system clock for all operations. diff --git a/vendor/go.uber.org/zap/zapcore/console_encoder.go b/vendor/go.uber.org/zap/zapcore/console_encoder.go index 2307af40..1aa5dc36 100644 --- a/vendor/go.uber.org/zap/zapcore/console_encoder.go +++ b/vendor/go.uber.org/zap/zapcore/console_encoder.go @@ -125,11 +125,7 @@ func (c consoleEncoder) EncodeEntry(ent Entry, fields []Field) (*buffer.Buffer, line.AppendString(ent.Stack) } - if c.LineEnding != "" { - line.AppendString(c.LineEnding) - } else { - line.AppendString(DefaultLineEnding) - } + line.AppendString(c.LineEnding) return line, nil } diff --git a/vendor/go.uber.org/zap/zapcore/encoder.go b/vendor/go.uber.org/zap/zapcore/encoder.go index 6601ca16..6e5fd565 100644 --- a/vendor/go.uber.org/zap/zapcore/encoder.go +++ b/vendor/go.uber.org/zap/zapcore/encoder.go @@ -22,6 +22,7 @@ package zapcore import ( "encoding/json" + "io" "time" "go.uber.org/zap/buffer" @@ -312,14 +313,15 @@ func (e *NameEncoder) UnmarshalText(text []byte) error { type EncoderConfig struct { // Set the keys used for each log entry. If any key is empty, that portion // of the entry is omitted. - MessageKey string `json:"messageKey" yaml:"messageKey"` - LevelKey string `json:"levelKey" yaml:"levelKey"` - TimeKey string `json:"timeKey" yaml:"timeKey"` - NameKey string `json:"nameKey" yaml:"nameKey"` - CallerKey string `json:"callerKey" yaml:"callerKey"` - FunctionKey string `json:"functionKey" yaml:"functionKey"` - StacktraceKey string `json:"stacktraceKey" yaml:"stacktraceKey"` - LineEnding string `json:"lineEnding" yaml:"lineEnding"` + MessageKey string `json:"messageKey" yaml:"messageKey"` + LevelKey string `json:"levelKey" yaml:"levelKey"` + TimeKey string `json:"timeKey" yaml:"timeKey"` + NameKey string `json:"nameKey" yaml:"nameKey"` + CallerKey string `json:"callerKey" yaml:"callerKey"` + FunctionKey string `json:"functionKey" yaml:"functionKey"` + StacktraceKey string `json:"stacktraceKey" yaml:"stacktraceKey"` + SkipLineEnding bool `json:"skipLineEnding" yaml:"skipLineEnding"` + LineEnding string `json:"lineEnding" yaml:"lineEnding"` // Configure the primitive representations of common complex types. For // example, some users may want all time.Times serialized as floating-point // seconds since epoch, while others may prefer ISO8601 strings. @@ -330,6 +332,9 @@ type EncoderConfig struct { // Unlike the other primitive type encoders, EncodeName is optional. The // zero value falls back to FullNameEncoder. EncodeName NameEncoder `json:"nameEncoder" yaml:"nameEncoder"` + // Configure the encoder for interface{} type objects. + // If not provided, objects are encoded using json.Encoder + NewReflectedEncoder func(io.Writer) ReflectedEncoder `json:"-" yaml:"-"` // Configures the field separator used by the console encoder. Defaults // to tab. ConsoleSeparator string `json:"consoleSeparator" yaml:"consoleSeparator"` diff --git a/vendor/go.uber.org/zap/zapcore/json_encoder.go b/vendor/go.uber.org/zap/zapcore/json_encoder.go index af220d9b..c5d751b8 100644 --- a/vendor/go.uber.org/zap/zapcore/json_encoder.go +++ b/vendor/go.uber.org/zap/zapcore/json_encoder.go @@ -22,7 +22,6 @@ package zapcore import ( "encoding/base64" - "encoding/json" "math" "sync" "time" @@ -64,7 +63,7 @@ type jsonEncoder struct { // for encoding generic values by reflection reflectBuf *buffer.Buffer - reflectEnc *json.Encoder + reflectEnc ReflectedEncoder } // NewJSONEncoder creates a fast, low-allocation JSON encoder. The encoder @@ -82,6 +81,17 @@ func NewJSONEncoder(cfg EncoderConfig) Encoder { } func newJSONEncoder(cfg EncoderConfig, spaced bool) *jsonEncoder { + if cfg.SkipLineEnding { + cfg.LineEnding = "" + } else if cfg.LineEnding == "" { + cfg.LineEnding = DefaultLineEnding + } + + // If no EncoderConfig.NewReflectedEncoder is provided by the user, then use default + if cfg.NewReflectedEncoder == nil { + cfg.NewReflectedEncoder = defaultReflectedEncoder + } + return &jsonEncoder{ EncoderConfig: &cfg, buf: bufferpool.Get(), @@ -118,6 +128,11 @@ func (enc *jsonEncoder) AddComplex128(key string, val complex128) { enc.AppendComplex128(val) } +func (enc *jsonEncoder) AddComplex64(key string, val complex64) { + enc.addKey(key) + enc.AppendComplex64(val) +} + func (enc *jsonEncoder) AddDuration(key string, val time.Duration) { enc.addKey(key) enc.AppendDuration(val) @@ -141,10 +156,7 @@ func (enc *jsonEncoder) AddInt64(key string, val int64) { func (enc *jsonEncoder) resetReflectBuf() { if enc.reflectBuf == nil { enc.reflectBuf = bufferpool.Get() - enc.reflectEnc = json.NewEncoder(enc.reflectBuf) - - // For consistency with our custom JSON encoder. - enc.reflectEnc.SetEscapeHTML(false) + enc.reflectEnc = enc.NewReflectedEncoder(enc.reflectBuf) } else { enc.reflectBuf.Reset() } @@ -206,10 +218,16 @@ func (enc *jsonEncoder) AppendArray(arr ArrayMarshaler) error { } func (enc *jsonEncoder) AppendObject(obj ObjectMarshaler) error { + // Close ONLY new openNamespaces that are created during + // AppendObject(). + old := enc.openNamespaces + enc.openNamespaces = 0 enc.addElementSeparator() enc.buf.AppendByte('{') err := obj.MarshalLogObject(enc) enc.buf.AppendByte('}') + enc.closeOpenNamespaces() + enc.openNamespaces = old return err } @@ -225,20 +243,23 @@ func (enc *jsonEncoder) AppendByteString(val []byte) { enc.buf.AppendByte('"') } -func (enc *jsonEncoder) AppendComplex128(val complex128) { +// appendComplex appends the encoded form of the provided complex128 value. +// precision specifies the encoding precision for the real and imaginary +// components of the complex number. +func (enc *jsonEncoder) appendComplex(val complex128, precision int) { enc.addElementSeparator() // Cast to a platform-independent, fixed-size type. r, i := float64(real(val)), float64(imag(val)) enc.buf.AppendByte('"') // Because we're always in a quoted string, we can use strconv without // special-casing NaN and +/-Inf. - enc.buf.AppendFloat(r, 64) + enc.buf.AppendFloat(r, precision) // If imaginary part is less than 0, minus (-) sign is added by default // by AppendFloat. if i >= 0 { enc.buf.AppendByte('+') } - enc.buf.AppendFloat(i, 64) + enc.buf.AppendFloat(i, precision) enc.buf.AppendByte('i') enc.buf.AppendByte('"') } @@ -301,28 +322,28 @@ func (enc *jsonEncoder) AppendUint64(val uint64) { enc.buf.AppendUint(val) } -func (enc *jsonEncoder) AddComplex64(k string, v complex64) { enc.AddComplex128(k, complex128(v)) } -func (enc *jsonEncoder) AddInt(k string, v int) { enc.AddInt64(k, int64(v)) } -func (enc *jsonEncoder) AddInt32(k string, v int32) { enc.AddInt64(k, int64(v)) } -func (enc *jsonEncoder) AddInt16(k string, v int16) { enc.AddInt64(k, int64(v)) } -func (enc *jsonEncoder) AddInt8(k string, v int8) { enc.AddInt64(k, int64(v)) } -func (enc *jsonEncoder) AddUint(k string, v uint) { enc.AddUint64(k, uint64(v)) } -func (enc *jsonEncoder) AddUint32(k string, v uint32) { enc.AddUint64(k, uint64(v)) } -func (enc *jsonEncoder) AddUint16(k string, v uint16) { enc.AddUint64(k, uint64(v)) } -func (enc *jsonEncoder) AddUint8(k string, v uint8) { enc.AddUint64(k, uint64(v)) } -func (enc *jsonEncoder) AddUintptr(k string, v uintptr) { enc.AddUint64(k, uint64(v)) } -func (enc *jsonEncoder) AppendComplex64(v complex64) { enc.AppendComplex128(complex128(v)) } -func (enc *jsonEncoder) AppendFloat64(v float64) { enc.appendFloat(v, 64) } -func (enc *jsonEncoder) AppendFloat32(v float32) { enc.appendFloat(float64(v), 32) } -func (enc *jsonEncoder) AppendInt(v int) { enc.AppendInt64(int64(v)) } -func (enc *jsonEncoder) AppendInt32(v int32) { enc.AppendInt64(int64(v)) } -func (enc *jsonEncoder) AppendInt16(v int16) { enc.AppendInt64(int64(v)) } -func (enc *jsonEncoder) AppendInt8(v int8) { enc.AppendInt64(int64(v)) } -func (enc *jsonEncoder) AppendUint(v uint) { enc.AppendUint64(uint64(v)) } -func (enc *jsonEncoder) AppendUint32(v uint32) { enc.AppendUint64(uint64(v)) } -func (enc *jsonEncoder) AppendUint16(v uint16) { enc.AppendUint64(uint64(v)) } -func (enc *jsonEncoder) AppendUint8(v uint8) { enc.AppendUint64(uint64(v)) } -func (enc *jsonEncoder) AppendUintptr(v uintptr) { enc.AppendUint64(uint64(v)) } +func (enc *jsonEncoder) AddInt(k string, v int) { enc.AddInt64(k, int64(v)) } +func (enc *jsonEncoder) AddInt32(k string, v int32) { enc.AddInt64(k, int64(v)) } +func (enc *jsonEncoder) AddInt16(k string, v int16) { enc.AddInt64(k, int64(v)) } +func (enc *jsonEncoder) AddInt8(k string, v int8) { enc.AddInt64(k, int64(v)) } +func (enc *jsonEncoder) AddUint(k string, v uint) { enc.AddUint64(k, uint64(v)) } +func (enc *jsonEncoder) AddUint32(k string, v uint32) { enc.AddUint64(k, uint64(v)) } +func (enc *jsonEncoder) AddUint16(k string, v uint16) { enc.AddUint64(k, uint64(v)) } +func (enc *jsonEncoder) AddUint8(k string, v uint8) { enc.AddUint64(k, uint64(v)) } +func (enc *jsonEncoder) AddUintptr(k string, v uintptr) { enc.AddUint64(k, uint64(v)) } +func (enc *jsonEncoder) AppendComplex64(v complex64) { enc.appendComplex(complex128(v), 32) } +func (enc *jsonEncoder) AppendComplex128(v complex128) { enc.appendComplex(complex128(v), 64) } +func (enc *jsonEncoder) AppendFloat64(v float64) { enc.appendFloat(v, 64) } +func (enc *jsonEncoder) AppendFloat32(v float32) { enc.appendFloat(float64(v), 32) } +func (enc *jsonEncoder) AppendInt(v int) { enc.AppendInt64(int64(v)) } +func (enc *jsonEncoder) AppendInt32(v int32) { enc.AppendInt64(int64(v)) } +func (enc *jsonEncoder) AppendInt16(v int16) { enc.AppendInt64(int64(v)) } +func (enc *jsonEncoder) AppendInt8(v int8) { enc.AppendInt64(int64(v)) } +func (enc *jsonEncoder) AppendUint(v uint) { enc.AppendUint64(uint64(v)) } +func (enc *jsonEncoder) AppendUint32(v uint32) { enc.AppendUint64(uint64(v)) } +func (enc *jsonEncoder) AppendUint16(v uint16) { enc.AppendUint64(uint64(v)) } +func (enc *jsonEncoder) AppendUint8(v uint8) { enc.AppendUint64(uint64(v)) } +func (enc *jsonEncoder) AppendUintptr(v uintptr) { enc.AppendUint64(uint64(v)) } func (enc *jsonEncoder) Clone() Encoder { clone := enc.clone() @@ -343,7 +364,7 @@ func (enc *jsonEncoder) EncodeEntry(ent Entry, fields []Field) (*buffer.Buffer, final := enc.clone() final.buf.AppendByte('{') - if final.LevelKey != "" { + if final.LevelKey != "" && final.EncodeLevel != nil { final.addKey(final.LevelKey) cur := final.buf.Len() final.EncodeLevel(ent.Level, final) @@ -404,11 +425,7 @@ func (enc *jsonEncoder) EncodeEntry(ent Entry, fields []Field) (*buffer.Buffer, final.AddString(final.StacktraceKey, ent.Stack) } final.buf.AppendByte('}') - if final.LineEnding != "" { - final.buf.AppendString(final.LineEnding) - } else { - final.buf.AppendString(DefaultLineEnding) - } + final.buf.AppendString(final.LineEnding) ret := final.buf putJSONEncoder(final) @@ -423,6 +440,7 @@ func (enc *jsonEncoder) closeOpenNamespaces() { for i := 0; i < enc.openNamespaces; i++ { enc.buf.AppendByte('}') } + enc.openNamespaces = 0 } func (enc *jsonEncoder) addKey(key string) { diff --git a/vendor/go.uber.org/zap/zapcore/level.go b/vendor/go.uber.org/zap/zapcore/level.go index e575c9f4..56e88dc0 100644 --- a/vendor/go.uber.org/zap/zapcore/level.go +++ b/vendor/go.uber.org/zap/zapcore/level.go @@ -55,6 +55,18 @@ const ( _maxLevel = FatalLevel ) +// ParseLevel parses a level based on the lower-case or all-caps ASCII +// representation of the log level. If the provided ASCII representation is +// invalid an error is returned. +// +// This is particularly useful when dealing with text input to configure log +// levels. +func ParseLevel(text string) (Level, error) { + var level Level + err := level.UnmarshalText([]byte(text)) + return level, err +} + // String returns a lower-case ASCII representation of the log level. func (l Level) String() string { switch l { diff --git a/vendor/go.uber.org/zap/global_prego112.go b/vendor/go.uber.org/zap/zapcore/reflected_encoder.go similarity index 64% rename from vendor/go.uber.org/zap/global_prego112.go rename to vendor/go.uber.org/zap/zapcore/reflected_encoder.go index d3ab9af9..8746360e 100644 --- a/vendor/go.uber.org/zap/global_prego112.go +++ b/vendor/go.uber.org/zap/zapcore/reflected_encoder.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 Uber Technologies, Inc. +// Copyright (c) 2016 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -18,9 +18,24 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -// See #682 for more information. -// +build !go1.12 +package zapcore -package zap +import ( + "encoding/json" + "io" +) -const _stdLogDefaultDepth = 2 +// ReflectedEncoder serializes log fields that can't be serialized with Zap's +// JSON encoder. These have the ReflectType field type. +// Use EncoderConfig.NewReflectedEncoder to set this. +type ReflectedEncoder interface { + // Encode encodes and writes to the underlying data stream. + Encode(interface{}) error +} + +func defaultReflectedEncoder(w io.Writer) ReflectedEncoder { + enc := json.NewEncoder(w) + // For consistency with our custom JSON encoder. + enc.SetEscapeHTML(false) + return enc +} diff --git a/vendor/go.uber.org/zap/zapcore/sampler.go b/vendor/go.uber.org/zap/zapcore/sampler.go index 31ed96e1..8c116049 100644 --- a/vendor/go.uber.org/zap/zapcore/sampler.go +++ b/vendor/go.uber.org/zap/zapcore/sampler.go @@ -133,10 +133,21 @@ func SamplerHook(hook func(entry Entry, dec SamplingDecision)) SamplerOption { // each tick. If more Entries with the same level and message are seen during // the same interval, every Mth message is logged and the rest are dropped. // +// For example, +// +// core = NewSamplerWithOptions(core, time.Second, 10, 5) +// +// This will log the first 10 log entries with the same level and message +// in a one second interval as-is. Following that, it will allow through +// every 5th log entry with the same level and message in that interval. +// +// If thereafter is zero, the Core will drop all log entries after the first N +// in that interval. +// // Sampler can be configured to report sampling decisions with the SamplerHook // option. // -// Keep in mind that zap's sampling implementation is optimized for speed over +// Keep in mind that Zap's sampling implementation is optimized for speed over // absolute precision; under load, each tick may be slightly over- or // under-sampled. func NewSamplerWithOptions(core Core, tick time.Duration, first, thereafter int, opts ...SamplerOption) Core { @@ -200,7 +211,7 @@ func (s *sampler) Check(ent Entry, ce *CheckedEntry) *CheckedEntry { if ent.Level >= _minLevel && ent.Level <= _maxLevel { counter := s.counts.get(ent.Level, ent.Message) n := counter.IncCheckReset(ent.Time, s.tick) - if n > s.first && (n-s.first)%s.thereafter != 0 { + if n > s.first && (s.thereafter == 0 || (n-s.first)%s.thereafter != 0) { s.hook(ent, LogDropped) return ce } diff --git a/vendor/golang.org/x/crypto/ssh/certs.go b/vendor/golang.org/x/crypto/ssh/certs.go index a69e2249..4600c207 100644 --- a/vendor/golang.org/x/crypto/ssh/certs.go +++ b/vendor/golang.org/x/crypto/ssh/certs.go @@ -460,6 +460,8 @@ func (c *Certificate) SignCert(rand io.Reader, authority Signer) error { // certKeyAlgoNames is a mapping from known certificate algorithm names to the // corresponding public key signature algorithm. +// +// This map must be kept in sync with the one in agent/client.go. var certKeyAlgoNames = map[string]string{ CertAlgoRSAv01: KeyAlgoRSA, CertAlgoRSASHA256v01: KeyAlgoRSASHA256, diff --git a/vendor/golang.org/x/mod/modfile/read.go b/vendor/golang.org/x/mod/modfile/read.go index 70947ee7..a503bc21 100644 --- a/vendor/golang.org/x/mod/modfile/read.go +++ b/vendor/golang.org/x/mod/modfile/read.go @@ -494,7 +494,7 @@ func (in *input) endToken(kind tokenKind) { in.token.endPos = in.pos } -// peek returns the kind of the the next token returned by lex. +// peek returns the kind of the next token returned by lex. func (in *input) peek() tokenKind { return in.token.kind } diff --git a/vendor/golang.org/x/mod/modfile/rule.go b/vendor/golang.org/x/mod/modfile/rule.go index ed2f31aa..6bcde8fa 100644 --- a/vendor/golang.org/x/mod/modfile/rule.go +++ b/vendor/golang.org/x/mod/modfile/rule.go @@ -513,6 +513,9 @@ func parseReplace(filename string, line *Line, verb string, args []string, fix V nv := "" if len(args) == arrow+2 { if !IsDirectoryPath(ns) { + if strings.Contains(ns, "@") { + return nil, errorf("replacement module must match format 'path version', not 'path@version'") + } return nil, errorf("replacement module without version must be directory path (rooted or starting with ./ or ../)") } if filepath.Separator == '/' && strings.Contains(ns, `\`) { diff --git a/vendor/golang.org/x/mod/module/module.go b/vendor/golang.org/x/mod/module/module.go index c26d1d29..e9dec6e6 100644 --- a/vendor/golang.org/x/mod/module/module.go +++ b/vendor/golang.org/x/mod/module/module.go @@ -96,13 +96,13 @@ package module // Changes to the semantics in this file require approval from rsc. import ( + "errors" "fmt" "path" "sort" "strings" "unicode" "unicode/utf8" - "errors" "golang.org/x/mod/semver" ) @@ -258,7 +258,7 @@ func modPathOK(r rune) bool { return false } -// modPathOK reports whether r can appear in a package import path element. +// importPathOK reports whether r can appear in a package import path element. // // Import paths are intermediate between module paths and file paths: we allow // disallow characters that would be confusing or ambiguous as arguments to 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 "